Tôi có đoạn mã sau:Tại sao tôi nhận được một NameError?
from crypt import crypt
from itertools import product
from string import ascii_letters, digits
def decrypt(all_hashes, salt, charset=ascii_letters + digits + "-"):
products = (product(charset, repeat=r) for r in range(8))
chain = itertools.chain.from_iterable(products)
for candidate in chain:
hash = crypt(candidate, salt)
if hash in all_hashes:
yield candidate, hash
all_hashes.remove(hash)
if not all_hashes:
return
all_hashes = ['aaRrt6qwqR7xk', 'aaacT.VSMxhms' , 'aaWIa93yJI9kU',
'aakf8kFpfzD5E', 'aaMOPiDnXYTPE', 'aaz71s8a0SSbU', 'aa6SXFxZJrI7E'
'aa9hi/efJu5P.', 'aaBWpr07X4LDE', 'aaqwyFUsGMNrQ', 'aa.lUgfbPGANY'
'aaHgyDUxJGPl6', 'aaTuBoxlxtjeg', 'aaluQSsvEIrDs', 'aajuaeRAx9C9g'
'aat0FraNnWA4g', 'aaya6nAGIGcYo', 'aaya6nAGIGcYo', 'aawmOHEectP/g'
'aazpGZ/jXGDhw', 'aadc1hd1Uxlz.', 'aabx55R4tiWwQ', 'aaOhLry1KgN3.'
'aaGO0MNkEn0JA', 'aaGxcBxfr5rgM', 'aa2voaxqfsKQA', 'aahdDVXRTugPc'
'aaaLf47tEydKM', 'aawZuilJMRO.w', 'aayxG5tSZJJHc', 'aaPXxZDcwBKgo'
'aaZroUk7y0Nao', 'aaZo046pM1vmY', 'aa5Be/kKhzh.o', 'aa0lJMaclo592'
'aaY5SpAiLEJj6', 'aa..CW12pQtCE', 'aamVYXdd9MlOI', 'aajCM.48K40M.'
'aa1iXl.B1Zjb2', 'aapG.//419wZU']
all_hashes = set(all_hashes)
salt = 'aa'
for candidate, hash in decrypt(all_hashes, salt):
print 'Found', hash, '! The original string was', candidate
Và khi tôi đi để chạy nó tôi nhận được lỗi traceback sau:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 3, in decrypt
NameError: global name 'itertools' is not defined
Và không thể tìm ra lý do tại sao nó đang xảy ra.
Có người xin làm sáng tỏ, cảm ơn trước
Tôi nghĩ bạn có lỗi thụt lề trong mã bạn đã đăng. (nhập khẩu được thụt lề khi chúng không được) – mgilson