in reply to Re: filter tcpdump packets
in thread filter tcpdump packets

Replies are listed 'Best First'.
Re^3: filter tcpdump packets
by Anonymous Monk on Sep 02, 2014 at 00:18 UTC

    Net::Tshark had what amounts to a single release two years ago and has no tests. That makes it hard to tell how reliable that module is.

    not sure it's correct way to get mss options

    Have you tried looking at the data structure with Data::Dumper?

    map {$_ ->{mss}->{1500} } ...

    Without knowing the data structure, I'm going to wager a guess that maybe you need to do something like grep { $_->...->{mss}==1500 } @packets, where ... depends on the data structure you see with Data::Dumper.

    However, I'm still not sure why you're not simply doing something like this, where you are free to customize the display filter and output format without some module in between:

    my @cmd = ('tshark','-r',$PCAPFILE, qw# -R tcp.options.mss -T fields -e ip.src -e tcp.srcport -e ip.dst -e tcp.dstport -e tcp.options.mss_val #); open my $ts, '-|', @cmd or die "Error opening pipe: $!"; while(<$ts>) { chomp; my ($src_addr,$src_port,$dst_addr,$dst_port,$mss) = split /\t/; print "$src_addr:$src_port -> $dst_addr:$dst_port MSS=$mss\n"; } close $ts or die $! ? "Error closing pipe: $!" : "Exit status \$?=$? from pipe";

    (Or, look at IPC::Run to execute tshark, which is all that Net::Tshark is doing anyway.)

          Difference between -R and -Y.

          As far as I can tell this also depends on the version of tshark you're using, in newer versions use -Y, older versions -R. For the exact meaning of those options see the tshark manpage. I'm guessing you haven't read that page yet, since then you would know the answer to your next questions is that -Y is the display filter, so you can use that to apply the filters on tcp.options.mss_val, tcp.flags, and icmp.type that you are asking about.

          In a captured frame, there are protocols like "eth(0):ip(0):gre:eth(1):ip(1):tcp"

          I'm not quite sure what you mean - could you show some of the actual tshark output you're having a problem with? If I'm understanding your sample output, $src_addr contains the string "1.1.1.1,2.2.2.2"??