C段查询之在Java中实现的命令行版

一 介绍

这是我用Java写的一个C段查询的工具,目前还在完善中,现在只有一个命令行版的,GUI界面还没有写。由于用的是免费的接口,因此请求过快会出现各种异常,所以当每个IP查询后我都让线程休眠了2秒钟。总体算下来,扫描一个C段大概需要花11-15分钟左右。


二 这篇文章中用到的前置内容

这里需要用到的是:(1)单个IP反查域名;(2)查域名IP

C段查询雏形之在Java中反查一个IP上的所有域名(旁站查询)

在Java中调用CMD的ping命令查询域名IP


三 函数核心:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
/**
      * 针对一个域名或者IP,进行查询它C段上的域名
     
      * @param domainOrIP 域名或者IP的字符串
     
      * @return 暂时只是终端输出,无返回值
      * */
     public  void  CQuery(String domainOrIP){
//      StringBuffer stringBuffer = new StringBuffer();
         FindIP myIp =  new  FindIP();
         
         String ip = myIp.getDomainIP( "/c ping "  + domainOrIP);   //IP地址
         String ip_head =  "" ;   //IP地址的前3段
         String ip_temp =  "" ;   //C段中的临时IP
 
         String reg_ip =  "(([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\.([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\.([01]?\\d\\d?|2[0-4]\\d|25[0-5]))?" ;   //取出IP的前3段
         Pattern pattern = Pattern.compile(reg_ip);
         Matcher matcher = pattern.matcher(ip);
         if (matcher.find()){
             ip_head = matcher.group();
             ip_temp = ip_head +  "."  + String.valueOf( 1 );
             
             //正式开始C段查询,前面3处相同,只有最后一处是从 1-->254
             SearchDomainByIP searchDomain =  new  SearchDomainByIP();
             Set<String> set =  new  HashSet<String>();       
             for ( int  i =  1 ;i <  255 ;i++){
                 ip_temp = ip_head +  "."  + String.valueOf(i);
                 set = searchDomain.getDomains(ip_temp);
 
                 Iterator<String> iterator = set.iterator();
                 System.out.println( "针对IP:"  + ip_temp +  ",一共查到 "  + set.size() +  "个旁站" );
                 while (iterator.hasNext()){
//                  stringBuffer.append(iterator.next());
                     System.out.println(iterator.next());                   
                 }
                 
                 try  {
                     Thread.sleep( 2000 );   //每个IP查询结束休眠时间,单位是毫秒
                 catch  (InterruptedException e) {
                     e.printStackTrace();
                 }
             }
         } else {
             System.out.println(ip);
         }
     
//      return stringBuffer.toString();
     }

四 测试:

测试用例:

1
2
3
4
5
public  static  void  main(String[] args) {
         CQueryDemo queryDemo =  new  CQueryDemo();
         queryDemo.CQuery( "www.360360.pw" );
 
     }

输出:

针对IP:162.211.183.1,一共查到 0个旁站
针对IP:162.211.183.2,一共查到 3个旁站
www.akmigfashijia.com
www.lfyipinjiayuan.com
www.mylostreturn.com
针对IP:162.211.183.3,一共查到 0个旁站
针对IP:162.211.183.4,一共查到 0个旁站
针对IP:162.211.183.5,一共查到 0个旁站
针对IP:162.211.183.6,一共查到 2个旁站
www.shenghezhuang.com
hcesc.yao.cl
针对IP:162.211.183.7,一共查到 1个旁站
rhmtczt.info.gf
针对IP:162.211.183.8,一共查到 0个旁站
针对IP:162.211.183.9,一共查到 0个旁站
针对IP:162.211.183.10,一共查到 1个旁站
xht.xhtqm6.cc
针对IP:162.211.183.11,一共查到 5个旁站
555198.com
www.555189.com
bb8080.com
555189.com
www.555198.com
针对IP:162.211.183.12,一共查到 0个旁站
针对IP:162.211.183.13,一共查到 1个旁站
www.hltzs.com
针对IP:162.211.183.14,一共查到 7个旁站
www.667703.com
www.123598.com
www.667704.com
667703.com
667704.com
www.667706.com
www.667702.com
针对IP:162.211.183.15,一共查到 3个旁站
www.acznk.com
hgxjw.yjdx.net
www.420dj.com
(PS:后面省略)




本文转自 pangfc 51CTO博客,原文链接:http://blog.51cto.com/983836259/1719717,如需转载请自行联系原作者
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值