【发布时间】:2020-09-05 21:38:48
【问题描述】:
我希望这不是题外话。 这是背景:
我和我的朋友正在尝试解决这个在线难题,您基本上必须输入 16 位数字组合;如果错误,该站点将显示“不正确”,如果正确,则会显示其他一些我们不知道的消息。我们有前八个数字,所以我们认为尝试使用 curl 暴力破解它并保存到输出以进行检查是可行的。
我们是这样实现的:
curl http://www.game.com/checkCombo.php?num1=[0-9]&num2=[0-9]...&num8=[0-9] >> output.txt
如您所见,我们基本上是在运行所有可能的组合并将每个单独的输出附加到“output.txt”文件中。
我们检查我们是否得到了正确的组合的方法是通过搜索“不正确”的数量,因为我们不知道它会说什么;如果当我们打开文件时,我们已经检查了 1000 个组合并且有 1000 个匹配“不正确”,那么我们知道我们还没有找到正确的组合。如果当我们打开文件时,我们已经经历了 2000 次连击,并且只有 1999 次匹配“不正确”,我们知道我们已经击中了正确的连击并且我们只是搜索它。
但是,由于我们要保存 10^8=100,000,000 个单独的输出,因此我们的计算机空间已用完。
我们尝试使用“ctrl+z”暂停 cURL 进程并检查文件以查看我们是否点击了正确的组合。如果没有,我们清除“output.txt”文件,保存它,然后使用“fg %#”恢复 cURL 进程。
问题是当我们恢复 cURL 时,在我们清除文本文件后,文件仍然是空的:cURL 的输出不会再保存到文件中。
我想知道是否有办法暂停 cURL 以检查文件、清除文件并恢复 curl,同时继续保存剩余的输出。
如果您对我们如何进行组合有其他想法,我也很高兴听到这些想法。谢谢。
【问题讨论】:
-
当您使用 8 个嵌套循环测试
curl时,您可以在其中一个子循环之后进行检查。但是,为什么不在每个组合之后检查(grep -q incorrect || break)?