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 实现简单的端口扫描器相关推荐

  1. python调用扫描仪_使用Python编写简单的端口扫描器的实例分享

    单线程实现单线程实现道理比较简单,这里尝试Soket连接3389,连接成功说明端口开放,否则说明没有开远程服务.随便修改了一下就ok了,代码如下,最终得到自己的IP地址. #!/usr/bin/env ...

  2. python写端口扫描器_使用Python编写简单的端口扫描器的实例分享

    #!/usr/bin/env python import socket if __name__=='__main__': port=3389 s=socket.socket() for cnt in ...

  3. MFC编写一个简单的端口扫描器

    MFC简单端口扫描器制作 IDE:VS2022 1.创建项目 2.拖组件 3.创建按钮的响应函数 4.在响应函数中增加处理代码 5.检测链接的函数代码 6.各个控件变量 7.小结 1.创建项目 使用M ...

  4. 实例探究Python以并发方式编写高性能端口扫描器的方法

    来源:http://www.jb51.net/article/86615.htm 关于端口扫描器 端口扫描工具(Port Scanner)指用于探测服务器或主机开放端口情况的工具.常被计算机管理员用于 ...

  5. python编写一个端口扫描器

    可以使用 Python 来编写一个端口扫描器.下面是一个简单的端口扫描器的代码示例: import socketdef port_scanner(host, port):try:sock = sock ...

  6. Python3实现TCP端口扫描器

    本文来自 高海峰对 玄魂工作室 的投稿 作者:高海峰 QQ:543589796 在渗透测试的初步阶段通常我们都需要对攻击目标进行信息搜集,而端口扫描就是信息搜集中至关重要的一个步骤.通过端口扫描我们可 ...

  7. python 端口扫描 东京_嗖嗖嗖!在Python中进行批量端口扫描 | 网络安全

    在上一篇文章<Python网络安全基础:一.编写一个简单的端口扫描器> 中,我们介绍了端口扫描的作用,并使用Python编写了一个简单的端口识别扫描器.那个端口识别扫描器实在是过于简单,所 ...

  8. 基于Python Tkinter的多线程局域网扫描器

    #本文仅供参考有不足之处请指出 一.设计环境 系统:Windows 11 语言:python3.8 编译器:PyCharm 二.设计要求 1.局域网内的存活主机发现 2.扫描指定主机开放的端口 3.图 ...

  9. 【Python脚本进阶】2.1、端口扫描器(上):TCP全连接扫描

    目录 一.简介 1.1.基础: 1.2.TCP: 二.TCP全连接扫描 2.1.简介: 2.2.函数: 2.3.实现: 第一步:获得主机名和端口 第二步: connScan和portScan函数 第三 ...

最新文章

  1. JVM 调优实战--一个案例理解常用工具(命令)
  2. 深圳大学计算机科学专业排名,深圳大学专业排名及介绍 哪些专业最好
  3. 2021年慈溪横河中学高考成绩查询,慈溪中学
  4. mysql 隐藏中间四位_MySQL知识体系——索引
  5. 运行时异常与一般异常有何异同_Java修行第015天,异常机制和常用类
  6. html5-css的使用强制优先级
  7. (王道408考研数据结构)第一章绪论-第二节1:算法的基本概念、算法的特性及设计要求
  8. 清除SVOHOST.EXE的方法
  9. VMware Centos 网络配置
  10. python正在处理中_协程和 asyncio
  11. 普通人能用华为P30拍出银河么?这是我们在北京实拍的结果
  12. java网页内容不能复制_win7系统禁用Java小程序脚本网页内容复制不了的解决方法...
  13. C语言负数的小数次方,c语言 10 负次方
  14. 许晓斌_Maven实战(八)——常用Maven插件介绍(下)
  15. Hi3559AV100 RTSP推H265视频码流使用VLC软件本地直播
  16. (翻译)简化模式(Reduce)
  17. Windows MySQL 下载及安装教程
  18. MATLAB 声音文件处理
  19. Tomcat调优总结
  20. linux 路由器pppoe拨号,linux下pppoe拨号上网

热门文章

  1. 2Kx4位的存储芯片组成16Kx8位的存储器,具体看详细~
  2. 百度绿洲新一代区块链内测开放
  3. 不一样的精巧:高级机械原理——全动画图解
  4. linux服务器实训心得体会,linux实训心得体会 linux实训总结与体会
  5. QP状态机学习②——QM的使用
  6. Java的Reader和Writer
  7. 惠普台式机安装win7和Ubuntu双系统
  8. chkdsk命令详解
  9. html语言教程文字特效代码大全,HTML特效代码大全
  10. win10php开发,win10php开发环境搭建