我正在尝试找出正确的命令语法。我有一个 pcap 文件,我想使用 grep,并且只使用 grep 来从文件中删除所有唯一的 ip 地址
因此假设文件名为 capture.pcap 并且位于我的主文件夹中,我应该写什么?
我假设正则表达式可以是'\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}'
,并且sort
也uniq
必须包含在内,但似乎 pcap 对 grep 的响应不太好,例如,使用 grep file word 的正常语法不起作用,如果我运行:grep 239 ./capture.pcap
我得到了重放Binary file ./capture/pcap matches
答案1
尝试添加-a
或--binary-file=text
选项
grep -aE '[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+' file.pcap
或者
grep --binary-file=text -E '[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+' file.pcap
这似乎适用于我从 wiki.wireshark.org 下载的随机 pcap 文件,即
$ grep -E '[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+' NTLM-wenchao.pcap
Binary file NTLM-wenchao.pcap matches
但
$ grep -aE '[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+' NTLM-wenchao.pcap
Host: 192.168.0.55
Host: 192.168.0.55
Host: 192.168.0.55
Location: http://192.168.0.55/default.aspx
MicrosoftSharePointTeamServices: 12.0.0.6421
<body><h1>Object Moved</h1>This document may be found <a HREF="http://192.168.0."_?"_Ea@yÀ¨[À¨ÃPþµû%RÑ_Pü>ÕGET /default.aspx HTTP/1.1
Host: 192.168.0.55
ETC。
请注意(来自手册页的man grep
)警告
If TYPE is text, grep processes a binary file as if it
were text; this is equivalent to the -a option. Warning: grep
--binary-files=text might output binary garbage, which can have
nasty side effects if the output is a terminal and if the
terminal driver interprets some of it as commands.
请注意,虽然您可以使用\d
正则表达式(例如d在 .igit 中,只有 PCRE 模式下的 grep 支持它(即使用开关-P
)。
答案2
grep
适用于文本,.pcap 文件是二进制文件,这意味着仅使用 grep你不能做你想做的事。.pcap 文件格式和仅使用 grep你只能在 .pcap 文件中找到那些位于数据包数据部分的 IP。(例如,捕获文件包含网页下载的数据包,其中网页是关于 IP 的)简而言之,仅使用 grep你不能这么做。
但为什么你只能使用 grep?这是一种家庭作业吗?(我回答了一个非常相似的问题3天前。
答案3
为什么不直接使用strings
命令呢grep
?
例如:
你的 pcap 文件:abc.pcap
strings abc.pcap | grep "Your Search String Goes Here"