2012-04-23 68 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”。