Я пытаюсь выяснить правильный синтаксис команды. У меня есть файл pcap, и я хочу использовать grep и grep только для извлечения всех uniq ip-адресов без файла
Итак, предположим, что файл называется capture.pcap и находится в моей домашней папке что мне написать?
Я предполагаю, что регулярное выражение может быть '\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}'
и что также должны быть включены sort
и uniq
, но кажется, что pcap плохо отвечает grep, например, используя обычный синтаксис grep файл word не работает, если я запускаю: grep 239 ./capture.pcap
я получаю повтор Binary file ./capture/pcap matches
Попробуйте добавить опции -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
Это работает для случайного файла pcap, который я скачано с wiki.wireshark.org т.е.
$ 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
и т. Д.
Имейте в виду предупреждение (со страницы руководства 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), поддерживается только grep в режиме PCRE (т. Е. С переключателем -P
).
grep
работает с текстом, файл .pcap представляет собой двоичный файл, что означает, что с использованием только grep вы не можете делать то, что хотите. Формат файла .pcap С помощью с использованием только grep вы можете найти только те IP-адреса в файле .pcap, которые находятся в разделе пакетных данных. (например, файл захвата содержит пакеты для загрузки веб-страницы, где веб-страница содержит информацию об IP-адресах). Короче говоря, с использованием только grep вы не можете этого сделать.
Но почему вы должны использовать только grep? Это какая-то домашняя работа? (Я ответил на очень похожий вопрос 3 дня назад.
Почему бы просто не использовать команду strings
с grep
?
например:
ваш файл pcap: abc.pcap
strings abc.pcap | grep "Your Search String Goes Here"