![开膛手约翰 - 不重复字母的密码](https://linux22.com/image/109008/%E5%BC%80%E8%86%9B%E6%89%8B%E7%BA%A6%E7%BF%B0%20-%20%E4%B8%8D%E9%87%8D%E5%A4%8D%E5%AD%97%E6%AF%8D%E7%9A%84%E5%AF%86%E7%A0%81.png)
注意:我不会放置命令的输出,因为线程会很长。
我已经尝试过的解决方案未能成功地产生所需的输出。如果有人知道是否可以获取 8 个字符长的密码单词列表(仅大写字母,没有数字,没有特殊字符),但一行中不重复字母,例如:
QWERTYUI →→→ 好
QQWERTYU →→→ 坏
QQQWERTY →→→ 坏
QQQWERT →→→ 坏
QQQQQWER →→→ 坏
QQQQQQWE →→→ 坏
QQQQQQQW →→→ 坏
“John The Ripper”是否有任何选项可以使输出单词列表像上面一样或者可能通过管道传输到aircrack-ng?我已经尝试过crunch
但没能做到这一点。如果可以的话我想知道?
答案1
如果您有一个包含单词的文件,并且您想删除所有包含重复字符的单词,那么这将为您做到这一点:
$ cat file
HELLO
WORLD
$ sed '/\(.\)\1/d' file
WORLD
这可能是管道的一部分:
$ generate_words | sed '/\(.\)\1/d' | use_words
哪里generate_words
有某个程序在标准输出上生成单词(每行一个),以及use_words
某个程序从标准输入中读取单词(每行一个)。
正则表达式\(.\)\1
将匹配包含两个相同的连续字符的任何输入行。命令d
将sed
删除这些行。
答案2
while < /dev/urandom tr -cd 'A-Z' | fold -w8 | sed '/\(.\).*\1/d;q1'; do :; done
在这里,我们从文件中仅选择大写字母字符/dev/urandom
并将其放入while
循环中并保持它直到我们看到没有重复字符。请注意,这需要 GNU sed。