0

我正在尝试编写一个脚本,该脚本将从包含大约 500,000 行数据的文本文件中提取 NTLM 哈希。并非所有帐户都包含哈希,我只需要包含哈希的帐户。

以下是数据的示例:

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

文件中还有成千上万的其他行,但是我需要从文件中取出那一行。大约有 100 行适用于此,我不想手动搜索整个文件。

是否有一个简单的脚本或我可以在 Linux 中运行的东西来从文件中提取遵循该模式的行?

谢谢!

4

3 回答 3

4

grep '\$NT\$'文件名

如果在您要查找的字段之外可能还有其他 $NT$ 出现,您可能会更具体 - 这将只找到在第二个以冒号分隔的字段中包含它的行:

awk -F: '$2 ~ /\$NT\$/'文件名

于 2012-04-23T14:18:38.937 回答
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”。

于 2012-04-23T17:08:13.313 回答
0

在 Bash 和许多其他 shell 中:

grep ":$NT$" your_file.txt

报价将使 $ 不受干扰地进入模式。

于 2012-04-23T14:10:27.280 回答