2012-04-23 45 views
0

我正在嘗試編寫一個腳本,它將從包含大約500,000行數據的文本文件中提取NTLM哈希值。並非所有的帳戶都包含哈希值,而我只需要那些包含哈希值的哈希值。腳本從大文本文件中取出哈希值

這裏是什麼樣的數據看起來像一個示例:

芒果尚戈A(一):$ NT $ 547e2494658ca345d3847c36cf1fsef8 :::

有成千上萬的其他文件中的行,但該特定行是我需要從文件中取出的。有大約100行適用於此,我不想手動瀏覽整個搜索文件。

是否有一個簡單的腳本或我可以在Linux中運行的東西,以拉出該文件之外的模式行?

謝謝!

+9

是不是'grep'做這個工作? – Jasper 2012-04-23 14:07:51

+0

@ChangoMango,你應該接受爲你工作的答案。 – gpojd 2012-04-24 20:16:35

回答

0

在Bash和其他許多炮彈:

grep ":$NT$" your_file.txt 

行情會讓$進入模式不受干擾。

+3

不,他們不會。上面的代碼將擴展'$ NT',然後查找擴展到行末的內容。如果你不想這樣做,你必須使用單引號,或者在第一個美元符號前面加一個反斜槓,無論哪種方式,你都必須在第二個美元符號前面加一個反斜槓。 – 2012-04-23 14:15:57

+0

這也會拉動數據嗎?我想要包含用戶名的整個行。 – 2012-04-23 14:24:02

+0

> $貓123.txt >芒果尚戈A(一):$ $ NT ::: 547e2494658ca345d3847c36cf1fsef8 > 123 > 321 > NT > $ NT > $ ENV NT = 123的grep 「:$ NT $」 123.txt > Mango Chango A(a):$ NT $ 547e2494658ca345d3847c36cf1fsef8 ::: >對不起,我無法弄清楚如何在註釋中換行,所以假設> blocquote ident爲換行符。 – 2012-04-23 14:25:14

4

grep '\$NT\$'

如果有可能是你要找的,你能更具體的領域之外$ NT $的其他事件 - 這會發現只有那些它在第二個冒號線分隔欄:

awk -F: '$2 ~ /\$NT\$/'

+0

這是否也會拉動數據呢?我想要包含用戶名的整個行。 – 2012-04-23 14:23:42

+0

標記你的awk工作得很好! – 2012-04-23 14:38:20

+0

括號不是真的有必要。 – 2012-04-23 17:08:44

1

上特異性的另一個變化:

grep -E ':\$NT\$[[:alnum:]]{32}:' 

你可以使用的範圍,如果必要的話:

grep -E ':\$NT\$[[:alnum:]]{30,34}:' 

或更一般:

grep -E ':\$NT\$[[:alnum:]]+:' 

[:alnum:]是一個名爲類的人物,其中包括所有的字母,上,下,和您當前語言環境中的所有數字字符。

其他字符類包括[:alpha:][:cntrl:][:digit:][:graph:][:lower:][:print:][:punct:][:space:][:upper:][:xdigit:]

我會使用[:xdigit:],但已包含「s」。