2013-03-06 3 views
3

Можно ли получить tshark выходное поле каждого поля (внутри пакета) с использованием опции -T fields или аналогичного?tshark выводит все поля?

например. Для каждого поля в пакете/реконструкции, я хотел бы что-то вроде этого:

eth.src:f2:3c:91:96:fd:09,ip.src:1.2.3.4,tcp.dst_port:80,http.request.uri:/index.html 

(. Запятая может быть заменена \xff сделать разбор лучше, когда значения содержат запятые)

Я понимаю, что есть параметр -e, но кажется, что мне нужно было бы вставить все возможные поля в командной строке. Кроме того, в каждом пакете будет использоваться лишь небольшая часть полей, что позволяет анализировать множество данных.

В настоящее время я планирую использовать опцию tshark -V и разобрать, но в идеале я хотел бы больше терминов машины стиля, такие как http.request.uri вместо «читаемого человека», например:

Hypertext Transfer Protocol 
    GET /main.php HTTP/1.1\r\n 
     [Expert Info (Chat/Sequence): GET /main.php HTTP/1.1\r\n] 
      [Message: GET /main.php HTTP/1.1\r\n] 
      [Severity level: Chat] 
      [Group: Sequence] 
     Request Method: GET 
     Request URI: /main.php 

ответ

5

Просто наткнулся:

tshark -T pdml 

это именно то, что мне нужно:

<packet> 
    <proto name="geninfo" pos="0" showname="General information" size="173"> 
    <field name="num" pos="0" show="323" showname="Number" value="143" size="173"/> 
    <field name="len" pos="0" show="173" showname="Frame Length" value="ad" size="173"/> 
    <field name="caplen" pos="0" show="173" showname="Captured Length" value="ad" size="173"/> 
    <field name="timestamp" pos="0" show="Aug 7, 2011 16:16:13.579504000 EST" showname="Captured Time" value="1312697773.579504000" size="173"/> 
    </proto> 
    <proto name="frame" showname="Frame 323: 173 bytes on wire (1384 bits), 173 bytes captured (1384 bits)" size="173" pos="0"> 
    <field name="frame.time" showname="Arrival Time: Aug 7, 2011 16:16:13.579504000 EST" size="0" pos="0" show="Aug 7, 2011 16:16:13.579504000"/> 
    ... etc. 

Он включает имя фильтра Wireshark, а также все поля, включенные в пакет.

Update: Это довольно медленно, и взлома до tshark.c около того -V распечатывает abbrev вместо name в header_field_info *hfinfo; делает трюк тоже. Я должен, вероятно, внести свой вклад в это, когда я получу шанс.

Смежные вопросы