0

我正在使用记录不佳的 Zip4j Java 库来创建一个对锁定的 zip 文件运行字典攻击的程序。当我运行我的程序时,它从字典文件中提取值并通过 zip 运行它们以查看它们是否有效。如果是,则提取文件。让我烦恼的部分是,即使他正确地提取了它,它仍然会继续运行密码。我希望它在成功提取后停止。我该怎么做呢?如何创建一个触发器,当从 zip 中提取文件时程序停止尝试提取?这是我正在使用的循环:

    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);

PS zip 中包含的文件并不总是与 zip 名称相同,因此您无法检查是否存在与 zip 名称相同的文件夹。此外,如果用户希望 zip 转到他们的桌面,例如,您不能说如果大小不为 0,那么它已被提取。文件很可能在他们的桌面上。

4

1 回答 1

2

break;在语句下面放一个zipper.extractAll(dest);,但在try-catch

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

这将导致代码跳出当前循环

于 2014-11-24T04:58:34.273 回答