python脚本--C段扫描器

admin 2023年6月16日16:31:10python脚本--C段扫描器已关闭评论31 views字数 2816阅读9分23秒阅读模式

        渗透测试往往离不开扫描C段网络网站情况,有没有什么办法可以快速去查询C段网站信息呢,答案是肯定的。比如目前各种在线网站的C段查询,像cduan.cc,www.144118.com 这类网站都可以比较方便查询到目标网站的C段情况,作为一个python初学者,这是一个学习的机会,来吧,跟我一起写代码。


        这里我直接说下我的思路:

            1、抓包分析 "www.144118.com" 的请求过程;

            2、使用urllib2等库完成单一IP的请求查询;

            3、分析"www.144118.com"的返回值;

            4、使用sys.argv函数接收参数信息;

            5、处理接收的参数;


        分析过程我这里不具体去写过程了,直接上代码:

=============分割线=============

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Author: IcySun
# 脚本功能:C段扫描

import requests,urllib2,urllib
import socket, json,sys,re

class scanC():

    def use(self):
        print '#' * 50
        print u'\t\t C段扫描'
        print '\t\t\t Code By: IcySun'
        print '\t python scanc.py www.xxx.com(ip) '
        print '#' * 50

    def ipChk(self,in_put):
       pattern = r"\b(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b"
       if re.match(pattern, in_put):
          return True
       else:
          return False

    def www2ip(self,name):  
        try:
            result = socket.getaddrinfo(name, None)
            return result[0][4][0]
        except:
            return 0

    def scan(self,ip):
        payload = {'action':'query','ip':ip}
        test_data_urlencode = urllib.urlencode(payload)
        req = urllib2.Request(url = weburl,data = test_data_urlencode)
        try:
            res_data = urllib2.urlopen(req,timeout = 3)
            con = json.loads(res_data.read())
            if isinstance(con['list'],list):
                if len(con['list']) != 0:
                    print ip,con['list'][0]
                    with open('c.txt','a+') as c:
                        c.write(ip+'  '+con['list'][0]+'\n')
            else :
                for (d,x) in con['list'].items():
                    print ip,str(x)
                    with open('c.txt','a+') as c:
                        c.write(ip+'  '+str(x)+'\n')
        except socket.timeout, e:
            pass
        except urllib2.URLError,e:
            pass

def main():
    global weburl
    s = scanC()
    weburl = 'http://www.144118.com/api/Cclass.php'
    if len(sys.argv) != 2:
        s.use()
        sys.exit()
    in_put = sys.argv[1]
    if s.ipChk(in_put):
        ip1 = re.match(r"^\b(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.+",in_put).group(0)
        for i in xrange(1,255):
            ip = ip1 + str(i)
            s.scan(ip)

    else:
        ip1 = re.match(r"^\b(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.+",s.www2ip(in_put)).group(0)
        for i in xrange(1,255):
            ip = ip1 + str(i)
            s.scan(ip)

if __name__ == '__main__':
    main()

=============分割线=============

        执行结果如下:

图片

图片

附上oschina的git项目地址:

http://git.oschina.net/icysun/scanC

备注:

        由于调用其他网站,没有采用多线程去编写。

Rock City

python脚本--C段扫描器
如果你感觉此脚本对你有所帮助,请扫描二维码赞助,谢谢!

图片

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年6月16日16:31:10
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   python脚本--C段扫描器https://cn-sec.com/archives/1813125.html