我正在使用下面的代码(从http://search.cpan.org/~gomor/Net-Frame-Simple-1.06/lib/Net/Frame/Simple.pm复制)来重写以太网src和dst mac信息,但它生成了错误的IP数据包。
#!/usr/bin/perl
use Net::Frame::Simple;
use Net::Frame::Layer::IPv4;
use Net::Frame::Layer::TCP;
use Net::Frame::Layer::ETH;
use Net::Frame::Device;
use Net::Write::Layer3;
use Net::Frame::Dump::Online;
use Net::Write::Layer2;
my $src = '100.1.1.39';
my $target = '200.2.2.97';
my $port = 22;
my $eth = Net::Frame::Layer::ETH->new(src => "00:0c:29:d1:03:06", dst => "03:03:03:03:03:03");
my $ip4 = Net::Frame::Layer::IPv4->new(src => $src,dst => $target);
my $tcp = Net::Frame::Layer::TCP->new(dst => $port, options => "\x02\x04\x54\x0b",payload => 'test');
my $oSimple = Net::Frame::Simple->new(layers => [$eth,$ip4,$tcp],);
# Now, the frame is ready to be send to the network
# We open a sender object, and a retriever object
my $oWrite = Net::Write::Layer2->new(dev => 'eth0');
$oWrite = Net::Write::Layer3->new(dst => $target);
#my $oDump = Net::Frame::Dump::Online->new(dev => $oDevice->dev);
#$oDump->start;
$oWrite->open;
# We send the frame
$oSimple->send($oWrite);
如果在$ oSimple中定义图层时删除以太网部分($ eth),则可以正常工作。 我有什么遗漏或做错了吗?
答案 0 :(得分:0)
我能够让它发挥作用 对于任何人的参考,如果删除行" Net :: Write :: Layer3"并且只需在上面的代码中进行第2层(Net :: Write :: Layer2)的编写,就可以更改src和dst MAC。