我正在尝试编写一个脚本,该脚本将从包含大约 500,000 行数据的文本文件中提取 NTLM 哈希。并非所有帐户都包含哈希,我只需要包含哈希的帐户。
以下是数据的示例:
芒果A(一):$NT$547e2494658ca345d3847c36cf1fsef8:::
文件中还有成千上万的其他行,但是我需要从文件中取出那一行。大约有 100 行适用于此,我不想手动搜索整个文件。
是否有一个简单的脚本或我可以在 Linux 中运行的东西来从文件中提取遵循该模式的行?
谢谢!
grep '\$NT\$'文件名
如果在您要查找的字段之外可能还有其他 $NT$ 出现,您可能会更具体 - 这将只找到在第二个以冒号分隔的字段中包含它的行:
awk -F: '$2 ~ /\$NT\$/'文件名
特异性的另一种变化:
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”。
在 Bash 和许多其他 shell 中:
grep ":$NT$" your_file.txt
报价将使 $ 不受干扰地进入模式。