Perl脚本,用于从k12文本文件中对源/目标IP的Wireshark以太网数据包进行排序

时间:2014-10-01 03:56:20

标签: perl wireshark tshark

基本上希望完全使用Tshark做的事情

tshark -r mysample.pcapng.gz -2 -Tfields -R ip -eip.src -eip.dst -eframe.protocols

使用perl ...所以从k12文本文件中提取 (文本文件中的信息示例)

+---------+---------------+----------+
02:25:41,660,101   ETHER

|0   |ff|ff|ff|ff|ff|ff|b4|b6|76|53|9d|a0|08|00|45|00|00|4e|4f|85|00|00|80|11|68|b3|c0|a8|00|17|c0|a8|00|ff|
00|89|00|89|00|3a|74|68|c6|2a|01|10|00|01|00|00|00|00|00|00|20|46|48|46|41|45|42|45|45|43|41|43|41|43|41|43|41|43|41|43|41|43|41|43|41|43|41|43|41|43|41|41|41|00|00|20|00|01|

我的代码分裂并分类成异形,只是为了生活,我甚至无法开始。基本上需要删除所有内容到第二个“|”接下来的6个部分(用“|”分隔)是目标IP,接下来的6个是源IP然后接下来的2个是协议类型,然后转换为二进制。

如果有人为此写了任何简单的内容,我将非常感谢你看一下。这是一个班级工作,为证券课。

原始来源 Wireshark Display Filter for Unique Source/Destination IP and Protocol

1 个答案:

答案 0 :(得分:0)

您只需要一个能够创建可用于比较条目的键的函数:

# untested
sub key {
    my $line = shift;
    my @key = (split /\|/, $line)[2..7, 8..13, 14..15];
    return join '-', @key;
}

sub sort_lines {
    my @lines = @_;
    return sort { key($a) cmp key($b) } @lines;
}
BTW,无需转换为二进制,比较十六进制表示也是正确的。