【问题标题】:Perl script to sort Wireshark Ethernet packets for source/destination IP from a k12 text filePerl 脚本从 k12 文本文件中对源/目标 IP 的 Wireshark 以太网数据包进行排序
【发布时间】:2014-10-01 03:56:19
【问题描述】:

基本上想完全按照 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

【问题讨论】:

  • 请贴出你目前整理的代码。

标签: perl wireshark tshark


【解决方案1】:

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

# 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,不用转成二进制,比较十六进制表示也是正确的。

【讨论】:

  • 谢谢!看起来它会起作用,我只是在尝试合并它时遇到问题。基本上我得到的代码如下,希望缩短/编辑它并使其更好......无法弄清楚如何使用..(......)将多个范围拉到一行上,具体取决于包容性/独占性。并且似乎无法在这些行中工作。
猜你喜欢
  • 1970-01-01
  • 2016-09-18
  • 2016-01-01
  • 2017-04-08
  • 2022-01-10
  • 2021-10-28
  • 1970-01-01
  • 2011-04-04
  • 2020-12-27
相关资源
最近更新 更多