Как извлечь из 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). С файлом все в порядке, и я могу открыть его в wirehark. - 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