私は2つのリストを比較するためのpython(2.7)スクリプトを書いています。これらのリストは、その内容を読むことによってファイルから作成されます。ファイルはテキストファイルであり、バイナリファイルではありません。ファイル1はハッシュ(MD5の平文単語の和)のみを含み、ファイル2は平文です。リストは長さが異なります(論理的には、ハッシュよりも「クラックされた」エントリが少なくなります)。どちらもソートできませんが、これは私が達成しようとしている次のステップです。これまでのところ、私の単純なコードは以下のようになります。2つのリスト、速い比較のpython
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import sys
import os
def ifexists(fname):
if not os.path.isfile(fname):
print('[-] %s must exist' % fname)
sys.exit(1)
if len(sys.argv) < 2:
print('[-] please provide CRACKED and HASHES files')
sys.exit(1)
CRACKED=sys.argv[1]
HASHES=sys.argv[2]
sk_ifexists(CRACKED)
sk_ifexists(HASHES)
with open(CRACKED) as cracked, open(HASHES) as hashes:
hashdata=hashes.readlines()
crackdata=cracked.readlines()
for c in crackdata:
for z in hashdata:
if c.strip().split(':', 1)[0] in z:
print('found: ', c.strip().split(':', 1))
基本的に、私は、一致する行ハッシュでHASHESリストで見つかったハッシュを交換する必要があります。割れたリストで見つかった平野。私はそれが毎回短くなるので、CRACKEDを繰り返しています。だから私の問題は、上記のコードは非常に長いリストのために遅いです。たとえば、60k行のテキストファイルを2つ処理する場合は、最大15分かかります。それをスピードアップするためのあなたの提案は何ですか?
何c.strip()。split( ':'、1)[0] 'をセットにして別のセットにハッシュし、2つのセットの交差を探します。 – Bahrom