我已经编写了一个 perl 脚本,它通过 Linux::TunTap 将数据包读入用户空间,而且一切似乎都运行良好:
#!/usr/bin/perl
use warnings;
use strict;
use Linux::TunTap;
$tun = new Linux::TunTap(NAME => 'localtun')
or die "Couldn't connect to IF\n";
while (my $packet = $tun->get_raw()) {
print Dumper($packet);
}
现在的问题是:如何将表示从 tuntap 设备读取的原始 IP 数据包的字符串转换为适当的数据结构以进行处理?特别是我在源、目的地和序列号之后。
显然,原始 IP 数据包在其原始格式中不是很容易被人类阅读。这是通过 tuntap 接口发送 ping 后的输出:
{{{�}/��8V�| !"#$%&'()*+,-./0123456ET��@@4
我如何从这里开始以编程方式处理这些数据?