0

Pythonでpwdumpファイルを解析しようとしています。pwdump ファイルの内容は次のようになります。

...[snip]

Domain\TESTIN$::aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::

Guest(current):501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::

Guest(hist_01):501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::

Guest(hist_02):501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::

...[snip]

これから2つのことを取得したいと思います:

Domain\USER (So first string before the ":")

そして実際のハッシュ:

"aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0"

私はこのようなことを考えていました:

import sys

infile, outfile = sys.argv[1], sys.argv[2]

with open(infile) as inf, open(outfile,"w") as outf:
    line_words = (line.split('::') for line in inf)
    outf.writelines(words[1].strip() + '\n' for words in line_words if len(words)>1)

しかし、どういうわけか、最初のハッシュしか解析されていません。

どんな助けでも大歓迎です!

ありがとう

4

1 に答える 1

1

問題は、あなたが分割していることです"::"":"代わりに分割してみてください。この形式に準拠するのは最初の行のみです。2 行目以降には、2 つの の間に数字があり:、これはアルゴリズムをいじります。

代わりにこれを試してください(読みやすくするためにもっと冗長です):

with open(infile) as inf, open(outfile,"w") as outf:
    for line in inf:
        splits = line.split(":")
        user, hash = splits[0], ":".join(splits[2:4])
        outf.write(hash + '\n')

それが役立つことを願っています

于 2012-07-04T02:39:22.350 に答える