- 论坛徽章:
- 0
|
不太会用perl 模块, 手写了一个...应该可以用的
1. 用cnc的ip存在 cnc.ip 文件.
2. 从标准输入读取要进行验证的ip地址. 没有任何健壮性检查.
3. 根据perl位置调整#!
- #!/perl/bin/perl -w
- use strict;
- my %cnc;
- open CONFIG, "< cnc.ip";
- while (<CONFIG>)
- {
- chomp;
- s/;//;
- if (/\//)
- {
- my @part = split /\//;
- my @ip = split /\./, $part[0];
- my $ip = ($ip[0] << 24) + ($ip[1] << 16) + ($ip[2] << 8) + $ip[3
- ];
- $cnc{$ip} = $part[1];
- }
- else
- {
- my @ip = split /\./;
- my $ip = ($ip[0] << 24) + ($ip[1] << 16) + ($ip[2] << 8) + $ip[3
- ];
- $cnc{$ip} = 32;
- }
- }
- close CONFIG;
- while (<>)
- {
- chomp;
- my @ip = split /\./;
- my $ip = ($ip[0] << 24) + ($ip[1] << 16) + ($ip[2] << 8) + $ip[3];
- my $find = 0;
- foreach (keys %cnc)
- {
- my $mask = ~ 0;
- $mask = $cnc{$_} != 32 ? $mask >> $cnc{$_} : 0;
- $mask = ~ $mask;
- my $tmp_ip = $ip & $mask;
- $find = 1 if $_ == $tmp_ip;
- }
- printf("%s\n", $find == 1 ? "ok" : "err");
- }
复制代码 |
|