Search code examples
formatwiresharktshark

Some fields are empty when using tshark convert to csv


I am trying to capture traffic from an ethernet using tshark, then convert it to txt for analysis, I am using the following command:

tshark -N n -T fields -i ethernet -e "frame.number" -e "_ws.col.Time" -e "_ws.col.src" -e "_ws.col.dstn" -e "_ws.col.Proto" -e "_ws.col.Len" -e "_ws.col.Info" -E header=y -E separator=, > C:\DataCapture\capture.csv

However, the output is not displaying all the columns, the length and the Info are missing as showing below:

frame.number    _ws.col.Time    _ws.col.Src    _ws.col.Dstn _ws.col.Proto   _ws.col.Len _ws.col.Info
1               0.203766         192.168.0.104  224.0.0.251     MDNS        

I also tried using dumpcap, save to a file and convert, but I have received the same result, all options I tried (that I found online) give the same output, no length nor info

Just to keep in mind that I need it in text for clearer processing, and smaller size, and I don't want to keep converting from format to another as I am working on large traffic.

My tshark version is 4.0.4

Thanks,


Solution

  • Ok, after a couple of days of investigations, I came across a way to extract (or filter) the pcapng file to a text with any information available, what I have seen online so far is using the suffix _ws.col but this does not work with all the information available, except of the source IP, Destination IP, and Protocol, (almost) everything else will display empty field.

    Just one note here, I am not sure this is how it meant to be or just a workaround

    So, I extracted a single packet, as per below and started experimenting with it, and the way to do it is that you can pick ANY expression between the " " and it should work, here is an example of a code I tried:

    tshark -N n -r file.pcapng -T fields -e frame.number -e ip.src -e ip.dst -e ip.proto -e frame.len -e eth.src_resolved -E header=y -E separator=, > file.txt
    

    and here is the output of that packet extracted from the text file:

    frame.number,ip.src,          ip.dst,        ip.proto, frame.len, eth.src_resolved
    1,           248.79.112.255,  192.168.0.111, 6,        174,       00:0c:29:ef:e5:71
    

    I just (TABED) the result above to make it easier to read, otherwise it is packed with , separation.

    Here is the single packet extract:

    [
      {
        "_index": "packets-2023-04-12",
        "_type": "doc",
        "_score": null,
        "_source": {
          "layers": {
            "frame": {
              "frame.section_number": "1",
              "frame.interface_id": "0",
              "frame.interface_id_tree": {
                "frame.interface_name": "\\Device\\NPF_{xxx-xxx-xxx-xxx-xxx}",
                "frame.interface_description": "Ethernet0"
              },
              "frame.encap_type": "1",
              "frame.time": "Apr 12, 2023 21:59:31.723135000 xxxx TZ Standard Time",
              "frame.offset_shift": "0.000000000",
              "frame.time_epoch": "1681325971.723135000",
              "frame.time_delta": "0.000000000",
              "frame.time_delta_displayed": "0.000000000",
              "frame.time_relative": "0.000000000",
              "frame.number": "1",
              "frame.len": "174",
              "frame.cap_len": "174",
              "frame.marked": "0",
              "frame.ignored": "0",
              "frame.protocols": "eth:ethertype:ip:tcp"
            },
            "eth": {
              "eth.dst": "00:0c:29:28:5a:e9",
              "eth.dst_tree": {
                "eth.dst_resolved": "00:0c:29:28:5a:e9",
                "eth.dst.oui": "3113",
                "eth.dst.oui_resolved": "VMware, Inc.",
                "eth.addr": "00:0c:29:28:5a:e9",
                "eth.addr_resolved": "00:0c:29:28:5a:e9",
                "eth.addr.oui": "3113",
                "eth.addr.oui_resolved": "VMware, Inc.",
                "eth.dst.lg": "0",
                "eth.lg": "0",
                "eth.dst.ig": "0",
                "eth.ig": "0"
              },
              "eth.src": "00:0c:29:ef:e5:71",
              "eth.src_tree": {
                "eth.src_resolved": "00:0c:29:ef:e5:71",
                "eth.src.oui": "3113",
                "eth.src.oui_resolved": "VMware, Inc.",
                "eth.addr": "00:0c:29:ef:e5:71",
                "eth.addr_resolved": "00:0c:29:ef:e5:71",
                "eth.addr.oui": "3113",
                "eth.addr.oui_resolved": "VMware, Inc.",
                "eth.src.lg": "0",
                "eth.lg": "0",
                "eth.src.ig": "0",
                "eth.ig": "0"
              },
              "eth.type": "0x0800"
            },
            "ip": {
              "ip.version": "4",
              "ip.hdr_len": "20",
              "ip.dsfield": "0x00",
              "ip.dsfield_tree": {
                "ip.dsfield.dscp": "0",
                "ip.dsfield.ecn": "0"
              },
              "ip.len": "160",
              "ip.id": "0x267a",
              "ip.flags": "0x00",
              "ip.flags_tree": {
                "ip.flags.rb": "0",
                "ip.flags.df": "0",
                "ip.flags.mf": "0"
              },
              "ip.frag_offset": "0",
              "ip.ttl": "64",
              "ip.proto": "6",
              "ip.checksum": "0x2978",
              "ip.checksum.status": "2",
              "ip.src": "123.123.123.123",
              "ip.addr": "123.123.123.123",
              "ip.src_host": "123.123.123.123",
              "ip.host": "123.123.123.123",
              "ip.dst": "192.168.0.111",
              "ip.addr": "192.168.0.111",
              "ip.dst_host": "192.168.0.111",
              "ip.host": "192.168.0.111"
            },
            "tcp": {
              "tcp.srcport": "2572",
              "tcp.dstport": "80",
              "tcp.port": "2572",
              "tcp.port": "80",
              "tcp.stream": "0",
              "tcp.completeness": "0",
              "tcp.len": "120",
              "tcp.seq": "0",
              "tcp.seq_raw": "410684482",
              "tcp.nxtseq": "121",
              "tcp.ack": "338765635",
              "tcp.ack_tree": {
                "_ws.expert": {
                  "tcp.ack.nonzero": "",
                  "_ws.expert.message": "The acknowledgment number field is nonzero while the ACK flag is not set",
                  "_ws.expert.severity": "4194304",
                  "_ws.expert.group": "150994944"
                }
              },
              "tcp.ack_raw": "338765635",
              "tcp.hdr_len": "20",
              "tcp.flags": "0x0002",
              "tcp.flags_tree": {
                "tcp.flags.res": "0",
                "tcp.flags.ae": "0",
                "tcp.flags.cwr": "0",
                "tcp.flags.ece": "0",
                "tcp.flags.urg": "0",
                "tcp.flags.ack": "0",
                "tcp.flags.push": "0",
                "tcp.flags.reset": "0",
                "tcp.flags.syn": "1",
                "tcp.flags.syn_tree": {
                  "_ws.expert": {
                    "tcp.connection.syn": "",
                    "_ws.expert.message": "Connection establish request (SYN): server port 80",
                    "_ws.expert.severity": "2097152",
                    "_ws.expert.group": "33554432"
                  }
                },
                "tcp.flags.fin": "0",
                "tcp.flags.str": "··········S·"
              },
              "tcp.window_size_value": "64",
              "tcp.window_size": "64",
              "tcp.checksum": "0xe582",
              "tcp.checksum.status": "2",
              "tcp.urgent_pointer": "0",
              "Timestamps": {
                "tcp.time_relative": "0.000000000",
                "tcp.time_delta": "0.000000000"
              },
              "tcp.analysis": {
                "tcp.analysis.bytes_in_flight": "120",
                "tcp.analysis.push_bytes_sent": "120"
              },
              "tcp.payload": "58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58",
              "tcp.segment_data": "58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58:58"
            }
          }
        }
      }
    ]
    

    Hope this helps anyone who needs to extract specific information from pcapng file