Как да извлека само определен подслой от pcap?

Как да извлека само определен подслой от pcap файл? Например всички пакети съдържат тези слоеве: Ethernet, IP, SCTP, ... Трябва да извлека шестнадесетичния код на пакетите от слоя SCTP на. Мога да извлека пакетите с tshark, използвайки следната команда:

tshark -x -r mylog.pcap

Но изходните шестнадесетични пакети съдържат всички слоеве, включително Ethernet и IP. Как мога да изключа слоевете Ethernet и IP в извлечения изход?


person B Faley    schedule 28.12.2014    source източник
comment
Мога ли да предложа да разгледате scapy secdev.org/projects/scapy той ви позволява много мощност в този вид случай.   -  person Steve Barnes    schedule 28.12.2014


Отговори (1)


Можете да използвате python + scapy, за да изберете даден слой във всеки пакет с p.getlayer(SCTP) или който и да е друг слой.

Съдържанието на вашия pcap файл може да бъде прочетено с помощта на:

capture=rdpcap("/path/to/mylog.pcap")

обработените с нещо подобно

for pkt in capture:
   print pkt.getlayer(SCTP)

отворете файл:

>>> a=rdpcap("/spare/captures/isakmp.cap")
>>> a
<isakmp.cap: UDP:721 TCP:0 ICMP:0 Other:0>

Проверете http://www.secdev.org/projects/scapy/doc/usage.html#index-9

person Steve Barnes    schedule 28.12.2014
comment
Как мога да отворя файла със scapy? - person B Faley; 28.12.2014
comment
Получавам следната грешка, когато се опитвам да отворя файла: Scapy_Exception: Not a pcap capture file (bad magic). Файлът е добре и мога да го отворя в wireshark. - person B Faley; 28.12.2014
comment
Това предполага, че файлът не е очакван формат. - person Steve Barnes; 28.12.2014
comment
Току-що опитах с примерния файл на wiki.wireshark.org/ и проработи добре за мен. - person Steve Barnes; 28.12.2014
comment
Файлът вероятно е pcap-ng файл, а не pcap файл. Ако scapy използва libpcap за четене на файла, тогава вероятно използва версия на libpcap по-стара от 1.1 (която може да чете някои pcap-ng файлове); ако работи под Windows и използва WinPcap, WinPcap е базиран на libpcap преди 1.1 и не може да чете pcap-ng файлове; ако използва собствен код за четене на файлове, този код трябва да бъде подобрен, за да чете pcap-ng файлове. - person ; 29.12.2014
comment
Можете да използвате editcap, за да конвертирате pcap-ng файлове в pcap файлове - editcap -F libpcap {pcap-ng файл} {pcap файл за запис} - person ; 29.12.2014