python 实现简单的端口扫描器
1 #coding=utf-8 2 import socket 3 import time 4 import sys 5 6 def portScanner(ip,port): 7 server = (ip,port) 8 sockfd = socket.socket(socket.AF_INET,socket.SOCK_STREAM) 9 sockfd.settimeout(0.5) 10 ret = sockfd.connect_ex(server) #返回0则成功 11 if not ret: 12 sockfd.close() 13 print '%s:%s is opened...' % (ip,port) 14 else: 15 sockfd.close() 16 pass 17 return '' 18 19 def ip2num(ip): 20 lp = [int(x) for x in ip.split('.')] 21 return lp[0] << 24 | lp[1] << 16 | lp[2] << 8 |lp[3] 22 23 def num2ip(num): 24 ip = ['','','',''] 25 ip[3] = (num & 0xff) 26 ip[2] = (num & 0xff00) >> 8 27 ip[1] = (num & 0xff0000) >> 16 28 ip[0] = (num & 0xff000000) >> 24 29 return '%s.%s.%s.%s' % (ip[0],ip[1],ip[2],ip[3]) 30 31 def iprange(ip1,ip2): 32 num1 = ip2num(ip1) 33 num2 = ip2num(ip2) 34 tmp = num2 - num1 35 if tmp < 0: 36 return None 37 else: 38 return num1,num2,tmp 39 40 def scanip(ip): 41 port = 0 42 res = '' 43 while port < 65536: 44 s=socket.socket() 45 address = str(ip) 46 try: 47 s.connect((address,port)) 48 res = res + str(port) + '\n' 49 #print str(port) + ' is opening' 50 except socket.error,e: 51 pass 52 #print str(port) + ' Not Opened' 53 port = port + 1 54 print res 55 56 if __name__ == '__main__': 57 #输出运行时的时间 58 print 'start time : %s' % time.ctime(time.time()) 59 #没有传入参数,打印使用方法 60 if len(sys.argv) == 1: 61 print 'Usage 1:scannerports.py startip endip port (get the specfic given opening port from startip to endip)' 62 print 'Usage 2:scannerports.py destip (get all the opening ports from destip) ' 63 print 'Usage 3:scannerports.py startip endip (get all the opening ports from startip to endip)' 64 sys.exit() 65 #传入了一个参数ip,扫描这个ip打开的端口 66 if len(sys.argv) == 2: 67 ip = sys.argv[1] 68 print str(ip) + ' is scanned...' 69 #调用扫描端口方法 70 scanip(ip) 71 elif len(sys.argv) == 3:#扫描网段内所有ip所有端口 72 res = () 73 startip = sys.argv[1]#网段起始ip 74 endip = sys.argv[2]#网段结束ip 75 res = iprange(startip,endip)#判断网段大小 76 77 if not res: 78 print 'endip must be bigger than startone' 79 sys.exit() 80 elif res[2] == 0:#只有一个ip 81 print str(ip) + ' is scanned...' 82 scanip(ip) 83 else:#循环扫描网段中的每个ip 84 startipn = ip2num(startip) 85 for x in xrange(endip-startip+1): 86 print str(ip) + ' is scanned...' 87 startipnum = startipn + x 88 scanip(num2ip(startipnum))#扫描ip的端口 89 else:#扫描指定网段内的指定端口 90 res = () 91 startip = sys.argv[1]#网段起始ip 92 endip = sys.argv[2]#网段结束ip 93 port = int(sys.argv[3])#指定端口 94 res = iprange(startip,endip)#判断网段大小 95 if not res: 96 print 'endip must be bigger than startone' 97 sys.exit() 98 elif res[2] == 0:#只有一个ip 99 portScanner(startip,port) 100 else:#循环扫描网段中的每个ip 101 startipn = ip2num(startip) 102 for x in xrange(int(res[2])+1): 103 startipnum = startipn + x 104 portScanner(num2ip(startipnum),port)#扫描ip的指定端口 105 print 'end time : %s' % time.ctime(time.time())#输出结束时间 106
转载于:https://www.cnblogs.com/zhibin123/p/10178723.html
python 实现简单的端口扫描器相关推荐
- python调用扫描仪_使用Python编写简单的端口扫描器的实例分享
单线程实现单线程实现道理比较简单,这里尝试Soket连接3389,连接成功说明端口开放,否则说明没有开远程服务.随便修改了一下就ok了,代码如下,最终得到自己的IP地址. #!/usr/bin/env ...
- python写端口扫描器_使用Python编写简单的端口扫描器的实例分享
#!/usr/bin/env python import socket if __name__=='__main__': port=3389 s=socket.socket() for cnt in ...
- MFC编写一个简单的端口扫描器
MFC简单端口扫描器制作 IDE:VS2022 1.创建项目 2.拖组件 3.创建按钮的响应函数 4.在响应函数中增加处理代码 5.检测链接的函数代码 6.各个控件变量 7.小结 1.创建项目 使用M ...
- 实例探究Python以并发方式编写高性能端口扫描器的方法
来源:http://www.jb51.net/article/86615.htm 关于端口扫描器 端口扫描工具(Port Scanner)指用于探测服务器或主机开放端口情况的工具.常被计算机管理员用于 ...
- python编写一个端口扫描器
可以使用 Python 来编写一个端口扫描器.下面是一个简单的端口扫描器的代码示例: import socketdef port_scanner(host, port):try:sock = sock ...
- Python3实现TCP端口扫描器
本文来自 高海峰对 玄魂工作室 的投稿 作者:高海峰 QQ:543589796 在渗透测试的初步阶段通常我们都需要对攻击目标进行信息搜集,而端口扫描就是信息搜集中至关重要的一个步骤.通过端口扫描我们可 ...
- python 端口扫描 东京_嗖嗖嗖!在Python中进行批量端口扫描 | 网络安全
在上一篇文章<Python网络安全基础:一.编写一个简单的端口扫描器> 中,我们介绍了端口扫描的作用,并使用Python编写了一个简单的端口识别扫描器.那个端口识别扫描器实在是过于简单,所 ...
- 基于Python Tkinter的多线程局域网扫描器
#本文仅供参考有不足之处请指出 一.设计环境 系统:Windows 11 语言:python3.8 编译器:PyCharm 二.设计要求 1.局域网内的存活主机发现 2.扫描指定主机开放的端口 3.图 ...
- 【Python脚本进阶】2.1、端口扫描器(上):TCP全连接扫描
目录 一.简介 1.1.基础: 1.2.TCP: 二.TCP全连接扫描 2.1.简介: 2.2.函数: 2.3.实现: 第一步:获得主机名和端口 第二步: connScan和portScan函数 第三 ...
最新文章
- JVM 调优实战--一个案例理解常用工具(命令)
- 深圳大学计算机科学专业排名,深圳大学专业排名及介绍 哪些专业最好
- 2021年慈溪横河中学高考成绩查询,慈溪中学
- mysql 隐藏中间四位_MySQL知识体系——索引
- 运行时异常与一般异常有何异同_Java修行第015天,异常机制和常用类
- html5-css的使用强制优先级
- (王道408考研数据结构)第一章绪论-第二节1:算法的基本概念、算法的特性及设计要求
- 清除SVOHOST.EXE的方法
- VMware Centos 网络配置
- python正在处理中_协程和 asyncio
- 普通人能用华为P30拍出银河么?这是我们在北京实拍的结果
- java网页内容不能复制_win7系统禁用Java小程序脚本网页内容复制不了的解决方法...
- C语言负数的小数次方,c语言 10 负次方
- 许晓斌_Maven实战(八)——常用Maven插件介绍(下)
- Hi3559AV100 RTSP推H265视频码流使用VLC软件本地直播
- (翻译)简化模式(Reduce)
- Windows MySQL 下载及安装教程
- MATLAB 声音文件处理
- Tomcat调优总结
- linux 路由器pppoe拨号,linux下pppoe拨号上网