本文实例讲述了Python扫描IP段查看指定端口是否开放的方法。分享给大家供大家参考。具体实现方法如下:
#!/usr/local/bin/python #-*- coding: UTF-8 -*- #################################################################### ################################################## #BLOG:http://hi.baidu.com/alalmn # Python 扫描IP段 指定端口是否开放 ################################################## import socket import threading,time socket.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 ini if __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="" #扫描IP IP2="" #当前已经扫到的IP INITXT="IP.ini" #INI文件名字 import ConfigParser def 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("","") #写入INI def 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
希望本文所述对大家的Python程序设计有所帮助。
本文向大家介绍python实现指定ip端口扫描方式,包括了python实现指定ip端口扫描方式的使用技巧和注意事项,需要的朋友参考一下 在Linux中判断一台主机是否可达,可以使用ping命令,而判断端口是否打开,可以使用telnet命令,但是telnet命令没有超时时间的参数,使用起来不是很方便,那么可以利用Python来完成一个端口扫描的功能 socket实现端口扫描 telnetlib实现端
本文向大家介绍linux查看端口是否开放的方法总结,包括了linux查看端口是否开放的方法总结的使用技巧和注意事项,需要的朋友参考一下 方法一:使用lsof命令 我们可以使用lsof命令来检查某一端口是否开放,基本语法如下: 如果没有任何输出则说明没有开启该端口号 下图以80端口和53端口为例,检查80端口和53端口是否开放 也可以使用lsof -i命令直接将开放的端口输出,来查看某些端口是否开放
本文向大家介绍python实现扫描局域网指定网段ip的方法,包括了python实现扫描局域网指定网段ip的方法的使用技巧和注意事项,需要的朋友参考一下 一、问题由来 工作的局域网中,会接入很多设备,机器人上的网络设备就2个了,一个巨哥红外,一个海康可见光。机器人还有自身的ip。 有时候机器人挂的多了,设备维修更换中,搞来搞去就不记得ip是什么,用自带的软件的确能扫出来,但是这就要开两个window
本文向大家介绍PowerShell脚本开发之对指定IP进行端口扫描,包括了PowerShell脚本开发之对指定IP进行端口扫描的使用技巧和注意事项,需要的朋友参考一下 前些天看到一篇关于Metasploit与PowerShell的文章,里面提到了一句关于端口扫描的语句,写的很简练,思路很不错,可以抛开笨重的Nmap直接扫描指定的指定IP的端口: 语句中直接通过..列举了1到1024之间
有办法通过android扫描开放的网络端口吗?例如,在阻止我通过某些端口发送UDP数据包的防火墙后面。那么,有没有一种方法可以扫描哪些端口没有被防火墙阻止接入互联网呢?也许是一个终端应用程序或以编程的方式?
本文向大家介绍python端口扫描系统实现方法,包括了python端口扫描系统实现方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了python端口扫描系统实现方法。分享给大家供大家参考。具体实现方法如下: 该程序的主要功能如下: 1. 从自有API接口获取所有的外网IP段; 2. 用Nmap 遍历扫描所有的IP段,-oX 生成XML的扫描报告; 3. 用xml.etree.Elemen