好吧,所以我用python编写了一个非常简单的密码破解程序,它可以强制使用字母数字字符的密码。目前这段代码只支持1个字符的密码和一个包含md5哈希密码的密码文件。它最终将包括一个选项来指定你自己的字符限制(破解程序尝试多少个字符直到失败)。现在我不能在我想让它死的时候杀死它。我已经包括了一个尝试,除了snippit,但它不起作用。我做错什么了?在
代码:http://pastebin.com/MkJGmmDU
import linecache, hashlib
alphaNumeric = ["a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z",1,2,3,4,5,6,7,8,9,0]
class main:
def checker():
try:
while 1:
if hashlib.md5(alphaNumeric[num1]) == passwordHash:
print "Success! Your password is: " + str(alphaNumeric[num1])
break
except keyboardInterrupt:
print "Keyboard Interrupt."
global num1, passwordHash, fileToCrack, numOfChars
print "What file do you want to crack?"
fileToCrack = raw_input("> ")
print "How many characters do you want to try?"
numOfChars = raw_input("> ")
print "Scanning file..."
passwordHash = linecache.getline(fileToCrack, 1)[0:32]
num1 = 0
checker()
main
除了打印,当capturin
KeyboardInterrupt
时,您需要实际退出程序,您只打印一条消息。在这对我很有效。。。在
允许
KeyboardInterrupt
结束程序的方法是不做任何事。它们的工作原理是不依赖于在except
块中捕获它们;当异常从程序(或线程)中冒出时,它就会终止。在您所做的是捕获
KeyboardInterrupt
并通过打印消息然后继续处理它们。在至于程序为什么会卡住,没有任何东西会导致
num1
发生变化,所以md5计算每次都是相同的计算。如果您想迭代alphaNumeric
中的符号,那么就这样做:for symbol in alphaNumeric: # do something with 'symbol'
。在当然,这仍然只考虑每个可能的一个字符的密码。你要比那更努力。。。:)
我想你也对类的使用感到困惑。Python并不要求您将所有内容包装在类中。程序末尾的
main
没有任何用处;代码的运行是因为当编译器试图找出main
类是什么时,会对其进行求值。这是滥用语法。您要做的是将这段代码放入main函数,然后调用函数(与当前调用checker
的方式相同)。在相关问题 更多 >
编程相关推荐