Python 扫描IP段 指定端口是否开放,pythonip,TCP21.py #!/


TCP21.py

#!/usr/local/bin/python#-*- coding: UTF-8 -*-#######################################################################################################################qq:316118740#BLOG:http://hi.baidu.com/alalmn# Python 扫描IP段  指定端口是否开放#  刚学写的不好请大家见谅##################################################import socketimport threading,timesocket.setdefaulttimeout(10)  #设置了全局默认超时时间#查看IP端口是否开放class socket_port(threading.Thread):    def __init__(self,cond, name):        super(socket_port, self).__init__()        self.cond = cond        self.cond.set()#将标识位设为Ture        self.HOST = name    def run(self):        #time.sleep(1) #确保先运行Seeker中的方法        try:            PORT=21            s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)            s.connect((self.HOST,PORT))            print""            print self.HOST,u":",PORT,u"端口开放"            #self.cond.wait()#堵塞线程,直到Event对象内部标识位被设为True或超时(如果提供了参数timeout)。            self.cond.set()#将标识位设为Ture            return 1        except:            print ".",            #print self.HOST,u":",PORT,u"端口未开放"            #self.cond.wait()#堵塞线程,直到Event对象内部标识位被设为True或超时(如果提供了参数timeout)。            self.cond.set()#将标识位设为Ture        return 0###socket_port("192.168.2.1")#if socket_port("192.168.2.100"):#    print "开放"#else:#    print "未开放"def ip2num(ip):    ip = [int(x) for x in ip.split('.')]    return ip[0]<<24 | ip[1]<<16 | ip[2]<<8 | ip[3]def num2ip(num):    #time.sleep(0.05) #50ms    #time.sleep(0.1) #s#    data='%s.%s.%s.%s' % (  (num & 0xff000000) >> 24,#                                 (num & 0x00ff0000) >> 16,#                                 (num & 0x0000ff00) >> 8,#                                  num & 0x000000ff  )#    #socket_port(data)  #查看IP端口是否开放    if num>=IPend:        print u"IP导入数组完成"    return '%s.%s.%s.%s' % (  (num & 0xff000000) >> 24,                              (num & 0x00ff0000) >> 16,                              (num & 0x0000ff00) >> 8,                              num & 0x000000ff  )def gen_ip(ip1,ip2):  #返回数组#    ip#    global IPend#    start, IPend = [ip2num(x) for x in ip.split('-')]    global IPend    IPend=ip2    return [num2ip(num) for num in range(ip1,ip2+1) if num & 0xff]import iniif __name__=='__main__':    ini.ini_get()  #读取INI    list_ip=gen_ip(ip2num(ini.IP1),ip2num(ini.IP2))    I1 = 0 #得到list的第一个元素    print u"开始扫描IP"    ip=0    while I1 < len(list_ip):        #print list_ip[I1]        time.sleep(0.3) #确保先运行Seeker中的方法        cond = threading.Event()        hider = socket_port(cond,list_ip[I1])        hider.start()        if ip>=255:            ini.ini_write(list_ip[I1],ini.IP2)  #修改INI            print ip            ip=0        ip=ip+1        I1 = I1 + 1   #一层
                                 ini.py;
#!/usr/local/bin/python#-*- coding: UTF-8 -*-###################################################qq:316118740#BLOG:http://hi.baidu.com/alalmn# Python 操作ini文件#  刚学写的不好请大家见谅##################################################IP1=""  #扫描IPIP2=""   #当前已经扫到的IPINITXT="IP.ini"  #INI文件名字import ConfigParserdef ini_get():  #读取INI    try:        global IP1        global IP2        global INITXT        config = ConfigParser.ConfigParser()        config.readfp(open(INITXT))        IP1 = config.get("ipdata","ip1")        IP2 = config.get("ipdata","ip2")    except:        print "读取INI错误"        ini_add("","")  #写入INIdef ini_add(ip1,ip2):  #写入INI    try:        global INITXT        config = ConfigParser.ConfigParser()        config.add_section("ipdata")# 设置section段及对应的值        config.set("ipdata","ip1",ip1)        config.set("ipdata","ip2",ip2)        config.write(open(INITXT, "w"))# 写入文件    except:       print "写入INI错误"def ini_write(ip1,ip2):  #修改INI    try:        global INITXT        config = ConfigParser.ConfigParser()        config.read(INITXT)        if not config.has_section("ipdata"):#看是否存在该Section,不存在则创建            temp = config.add_section("")        config.set("ipdata","ip1",ip1)        config.set("ipdata","ip2",ip2)        config.write(open(INITXT, "r+"))    except:        print "修改INI错误"        ini_add("","")  #写入INI#if __name__=='__main__':##    ini_get()  #读取INI##    print IP1##    print IP2###    ini_add("222222222","3333333333333")  #写入INI##    ini_get()  #读取INI##    print IP1##    print IP2##    ini_write("999999999","0000000000")  #修改INI#    ini_get()  #读取INI#    print IP1#    print IP2
                                运行
python TCP21.py

评论关闭