utils.pm
来自「SinFP是一种新的识别对方计算机操作系统类型的工具」· PM 代码 · 共 88 行
PM
88 行
use Socket;$ENV{'LANG'} = $ENV{'LANGUAGE'} = $ENV{'LC_MESSAGES'} = 'C';=pod=head1 NAMEUtils - Utility functions for testing C<Net::Pcap>=head1 FUNCTIONS=over 4=item B<is_available()>Returns true if the given function name is available in the version of the pcap library the module is being built against. =cutmy %available_func = ();FUNCS: { open(FUNCS, 'funcs.txt') or warn "can't read 'funcs.txt': $!\n" and next; while(my $line = <FUNCS>) { chomp $line; $available_func{$line} = 1; } close(FUNCS);}sub is_available { return $available_func{$_[0]}}=item B<is_allowed_to_use_pcap()>Returns true if the user running the test is allowed to use the packet capture library. On Unix systems, this function tries to open a raw socket. On Win32 systems (ActivePerl, Cygwin), it just checks whether the user has administrative privileges. =cutsub is_allowed_to_use_pcap { # Win32: ActivePerl, Cygwin if ($^O eq 'MSWin32' or $^O eq 'cygwin') { my $is_admin = 0; eval 'no warnings; use Win32; $is_admin = Win32::IsAdminUser()'; $is_admin = 1 if $@; # Win32::IsAdminUser() not available return $is_admin # Unix systems } else { if(socket(S, PF_INET, SOCK_RAW, getprotobyname('icmp'))) { close(S); return 1 } else { return 0 } }}=item B<find_network_device()>Returns the name of a device suitable for listening to network traffic.=cutmy $err;my %devs = ();my @devs = Net::Pcap::findalldevs(\%devs, \$err);if(@devs) { while($devs[0] eq 'lo' or $devs[0] eq 'lo0' or $devs[0] =~ /GenericDialupAdapter/) { shift @devs }}sub find_network_device { return wantarray ? @devs : $devs[0]}=back=cut1
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?