2014-11-24 56 views
0

我正在使用文檔記錄不佳的Zip4j庫來創建一個在鎖定的zip文件上運行字典攻擊的程序。當我運行我的程序時,它從字典文件中提取值並通過zip運行它們以查看它們是否工作。如果他們這樣做,文件被提取。令我煩惱的部分是,即使他正確提取它,它仍然繼續運行密碼。我希望它在成功提取後停止。我該怎麼去做這件事?我怎樣才能創建一個觸發器,當文件從zip中拉出時,程序停止嘗試提取?這是我正在使用的循環:Zip4j成功提取?

if(zipper.isEncrypted()){ 
      while(passwordCounter != passwordArray.size()){ 
       zipper.setPassword((String) passwordArray.get(passwordCounter)); 
       System.out.println("Testing password no." + passwordCounter + ", which is " + passwordArray.get(passwordCounter)); 
       passwordCounter = passwordCounter + 1; 
       try { 
        zipper.extractAll(dest); 

       } catch(ZipException ze) { 
        continue; 
       } 
      } 
     } else 
      zipper.extractAll(dest); 

P.S.包含在壓縮文件中的文件並不總是與壓縮文件名稱相同,因此您無法檢查是否存在與壓縮文件名稱相同的文件夾。另外,例如,如果用戶想要zip到他們的桌面,你不能說,如果大小不是0,那麼它已被提取。文件很可能在他們的桌面上。

回答

2

放一個break;zipper.extractAll(dest);聲明,但內try-catch

try { 
    zipper.extractAll(dest); 
    break; 
} catch(ZipException ze) { 
    continue; 
} 

這將導致代碼打出來的電流回路

+1

如此簡單,它傷害的... – Zulfe 2014-11-24 05:08:35

+0

歡迎來到我的世界... – MadProgrammer 2014-11-24 05:10:06