Chinaunix首页 | 论坛 | 博客
  • 博客访问: 7404074
  • 博文数量: 1756
  • 博客积分: 18684
  • 博客等级: 上将
  • 技术积分: 16232
  • 用 户 组: 普通用户
  • 注册时间: 2010-06-02 10:28
个人简介

啥也没写

文章分类

全部博文(1756)

文章存档

2024年(2)

2023年(44)

2022年(39)

2021年(46)

2020年(43)

2019年(27)

2018年(44)

2017年(50)

2016年(47)

2015年(15)

2014年(21)

2013年(43)

2012年(143)

2011年(228)

2010年(263)

2009年(384)

2008年(246)

2007年(30)

2006年(38)

2005年(2)

2004年(1)

分类: LINUX

2010-05-11 23:09:37

利用做了个简单的智能DNS!需要看下解析的准确率如何,初期分析!废话不多说!开始
日志格式如下

#25-Nov-2009 10:30:36.913 queries: client 117.34.127.52#58678: view XBCT: query: dns.woniucdn.com IN A - xxx
#25-Nov-2009 10:30:40.707 queries: client 222.246.129.106#21289: view HZCT: query: test.queryer.cn.woniucdn.com IN A xxxx
#25-Nov-2009 10:30:48.837 queries: client 218.85.157.67#53729: view HNCT: query: test.queryer.cn.woniucdn.com IN A -xxxx
#25-Nov-2009 10:30:56.540 queries: client 124.161.97.242#32552: view XNWTCNC: query: test.queryer.cn.woniucdn.com IN A xxxx
#25-Nov-2009 10:30:57.348 queries: client 124.161.97.242#54961: view XNWTCNC: query: test.queryer.cn.woniucdn.com IN A -xxxx
#25-Nov-2009 10:30:59.325 queries: client 61.140.11.160#42701: view HNCT: query: test.queryer.cn.woniucdn.com IN A - xxx
#25-Nov-2009 10:31:00.443 queries: client 124.74.213.70#48452: view HDCT: query: test.queryer.cn.woniucdn.com IN A - xxx
#25-Nov-2009 10:31:00.907 queries: client 202.103.224.134#53887: view HNCT: query: test.queryer.cn.woniucdn.com IN A xxx

脚本如下:ipsearch<改自awast的那个perl脚本,请自行下载纯真数据库QQWry.Dat>

#!/usr/bin/perl -w

  my ($ipbegin,$ipend,$ipData1,$ipData2,$DataSeek,$ipFlag);
  
  my $ip=shift;
  my @ip=split(/\./,$ip);
  my $ipNum = $ip[0]*16777216+$ip[1]*65536+$ip[2]*256+$ip[3];

  my $ipfile="./QQWry.Dat";
  open(FILE,"$ipfile");
  binmode(FILE);
  sysread(FILE,$ipbegin,4);
  sysread(FILE,$ipend,4);
   $ipbegin=unpack("L",$ipbegin);
   $ipend=unpack("L",$ipend);
  my $ipAllNum = ($ipend-$ipbegin)/7+1;

  my $BeginNum=0;
  my $EndNum=$ipAllNum;

  Bgn:
  my $Middle= int(($EndNum+$BeginNum)/2);

  seek(FILE,$ipbegin+7*$Middle,0);
  read(FILE,$ipData1,4);
  my $ip1num=unpack("L",$ipData1);
  if ($ip1num > $ipNum) {
    $EndNum=$Middle;
    goto Bgn;
  }

  read(FILE,$DataSeek,3);
  $DataSeek=unpack("L",$DataSeek."\0");
  seek(FILE,$DataSeek,0);
  read(FILE,$ipData2,4);
  my $ip2num=unpack("L",$ipData2);
  if ($ip2num < $ipNum) {
    goto nd if ($Middle==$BeginNum);
    $BeginNum=$Middle;
    goto Bgn;
  }

  $/="\0";
  read(FILE,$ipFlag,1);
  if ($ipFlag eq "\1") {
    my $ipSeek;
    read(FILE,$ipSeek,3);
    $ipSeek = unpack("L",$ipSeek."\0");
    seek(FILE,$ipSeek,0);
    read(FILE,$ipFlag,1);
  }
  if ($ipFlag eq "\2") {
    my $AddrSeek;
    read(FILE,$AddrSeek,3);
    read(FILE,$ipFlag,1);
    if($ipFlag eq "\2") {
      my $AddrSeek2;
      read(FILE,$AddrSeek2,3);
      $AddrSeek2 = unpack("L",$AddrSeek2."\0");
      seek(FILE,$AddrSeek2,0);
    }
    else {
      seek(FILE,-1,1);
    }
    $ipAddr2=;
    $AddrSeek = unpack("L",$AddrSeek."\0");
    seek(FILE,$AddrSeek,0);
    $ipAddr1=;
  }
  else {
    seek(FILE,-1,1);
    $ipAddr1=;
    read(FILE,$ipFlag,1);
    if($ipFlag eq "\2") {
      my $AddrSeek2;
      read(FILE,$AddrSeek2,3);
      $AddrSeek2 = unpack("L",$AddrSeek2."\0");
      seek(FILE,$AddrSeek2,0);
    }
    else {
      seek(FILE,-1,1);
    }
    $ipAddr2=;
  }

  nd:
  chomp($ipAddr1,$ipAddr2);
  $/="\n";
  close(FILE);
  
  $ipAddr2="" if($ipAddr2=~/http/i);
  my $ipaddr="$ipAddr1 $ipAddr2";
  $ipaddr =~ s/CZ88\.NET//isg;
  $ipaddr="未知地区" if ($ipaddr=~/未知|http/i || $ipaddr eq "");
  print "$ipaddr";



awk脚本

awk -F'[:# ]' '{print $8,$12}' query.log|sort|uniq|awk  'BEGIN{print "IP 地址\t\t所属地区\t\t\t\t\t\t\tVIEW\n"};{ip[x++]=$1};{zone[y++]=$2};END{for(i=0;i

输出格式

110.19.16.10    内蒙古 联通                                                     HBCNC
110.19.16.14    内蒙古 联通                                                     HBCNC
110.19.16.18    内蒙古 联通                                                     HBCNC
110.19.16.22    内蒙古 联通                                                     HBCNC
110.19.16.26    内蒙古 联通                                                     HBCNC
110.19.16.2     内蒙古 联通                                                     HBCNC
110.19.16.30    内蒙古 联通                                                     HBCNC
110.19.16.34    内蒙古 联通                                                     HBCNC
110.19.16.38    内蒙古 联通                                                     HBCNC
110.19.16.46    内蒙古 联通                                                     HBCNC
110.19.16.50    内蒙古 联通                                                     HBCNC
110.19.16.54    内蒙古 联通                                                     HBCNC
110.19.16.58    内蒙古 联通                                                     HBCNC
110.19.16.62    内蒙古 联通                                                     HBCNC
110.19.16.6     内蒙古 联通                                                     HBCNC
112.65.184.229  上海市 联通                                                     HDCNC
112.65.184.230  上海市 联通                                                     HDCNC
112.65.184.232  上海市 联通                                                     HDCNC
113.106.201.123 广东省惠州市 电信                                                       HNCT
113.140.10.102  陕西省西安市 电信                                                       XBCT
113.88.135.176  广东省深圳市 电信                                                       HNCT
阅读(1173) | 评论(0) | 转发(0) |
0

上一篇:Mysql 优化的资料

下一篇:查找命令

给主人留下些什么吧!~~