我正在尝试编写一个脚本,该脚本将从包含大约 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
报价将使 $ 不受干扰地进入模式。