无法尝试传递旧的Cisco dump.pl脚本的最后一个依赖项。
https://supportforums.cisco.com/blog/154046
到目前为止,我已经安装了以下依赖项:
apt-get install libclass-gomor-perl libnet-libdnet-perl libnet-pcap-perl libbit-vector-perl libnetpacket-perl
并将所有自定义perl模块放在Net /目录
中然后最后我跑
./dump.pl
我的输出:
*** Net::Frame::Layer::8021X module not found.
*** Either install it (if avail), or implement it.
*** You can also send the pcap file to perl@gomor.org.
Frame number: 11 (length: 60)
Frame NUMBER 11 SSL FOUND, preparing SSL payload and crafting TCP packet
*** Net::Frame::Layer::8021X module not found.
*** Either install it (if avail), or implement it.
*** You can also send the pcap file to perl@gomor.org.
Frame number: 12 (length: 64)
Frame NUMBER 12 SSL FOUND, preparing SSL payload and crafting TCP packet
*** Net::Frame::Layer::8021X module not found.
*** Either install it (if avail), or implement it.
*** You can also send the pcap file to perl@gomor.org.
Frame number: 13 (length: 61)
Frame NUMBER 13 SSL FOUND, preparing SSL payload and crafting TCP packet
使用perl -d dump.pl
调试后,我发现它实际上需要模块Net :: Frame :: Layer :: ETH和Net :: Frame :: Layer :: 8021X。我和前者都失踪了。
Net::Frame::Simple::unpack(Net/Frame/Simple.pm:98):
98: for (1..1000) {
DB<4> n
Net::Frame::Simple::unpack(Net/Frame/Simple.pm:99):
99: last unless $raw;
DB<4> n
Net::Frame::Simple::unpack(Net/Frame/Simple.pm:101):
101: $encapsulate =~ s/[^-:\w]//g; # Fix potential code injection
DB<4> n
Net::Frame::Simple::unpack(Net/Frame/Simple.pm:102):
102: my $layer = 'Net::Frame::Layer::'.$encapsulate;
DB<4> n
Net::Frame::Simple::unpack(Net/Frame/Simple.pm:103):
103: eval "require $layer";
DB<4> n
所以我安装了这些依赖项:
apt-get install cpanminus
cpanm Net::Frame
cpanm Net::Frame::Simple
cpanm Net::Frame::Layer
cpanm Socket6
我仍然遇到同样的问题。
通过额外调试,似乎问题出在raw => $h->{raw}
,因为我在解释器中运行print Net::Frame::Simple->new( firstLayer => $h->{firstLayer}, timestamp => $h->{timestamp} )
和print $h->{raw}
而没有触发问题。
main::(dump.pl:44): my $f = Net::Frame::Simple->new(
main::(dump.pl:45): raw => $h->{raw},
main::(dump.pl:46): firstLayer => $h->{firstLayer},
main::(dump.pl:47): timestamp => $h->{timestamp},
main::(dump.pl:48): );
它将写出一个ssl.pcap文件,但它不包含原始数据包数据,只包含firstLayer,例如ETH和UNIX时间戳。我还确保通过用use
替换所有require
语句并用::替换::来使用Net /目录中的本地模块。
在尝试require Net::Frame::Layer::8021X
时,仍然会抱怨互联网上任何地方似乎都不存在......