Linux::TunTap 経由でパケットをユーザー空間に読み込む perl スクリプトを作成しましたが、すべて正常に動作しているようです。
#!/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
このデータをプログラムで処理できるようにするには、ここからどのように進めればよいですか?