• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell
您的位置:首页 > 脚本语言 >python > Python实现简易端口扫描器代码实例

Python实现简易端口扫描器代码实例

作者: 字体:[增加 减小] 来源:互联网

通过本文主要向大家介绍了python端口扫描器,端口扫描器源代码,端口扫描器代码,端口扫描器,ip端口扫描器等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

在网上的一些资料的基础上自己又添了些新内容,算是Python socket编程练手吧。

#coding=utf-8
import socket
import time
import sys
import struct
import threading
from threading import Thread,activeCount

results=[]
def portScanner(ip,port):
  server = (ip,port)
  sockfd = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
  sockfd.settimeout(0.1)     #设置阻塞模式下socket的超时时间
  ret = sockfd.connect_ex(server) #成功返回0,失败返回error的值。
  if not ret:
    sockfd.close()
    results.append([ip,port])
    #print '%s:%s is opened...' % (ip,port)
  else:
    sockfd.close()
    pass
  return ''
  

def ip2num(ip):     #将ip地址转换成数字
  lp = [int(x) for x in ip.split('.')]
  return lp[0] << 24 | lp[1] << 16 | lp[2] << 8 |lp[3]

def num2ip(num):
  ip = ['','','','']
  ip[3] = (num & 0xff)
  ip[2] = (num & 0xff00) >> 8
  ip[1] = (num & 0xff0000) >> 16
  ip[0] = (num & 0xff000000) >> 24
  return '%s.%s.%s.%s' % (ip[0],ip[1],ip[2],ip[3])

def iprange(ip1,ip2):
  num1 =socket.ntohl(struct.unpack("I",socket.inet_aton(str(ip1)))[0])
  num2 =socket.ntohl(struct.unpack("I",socket.inet_aton(str(ip2)))[0])
  tmp = num2 - num1
  if tmp < 0:
    return None
  else:
    return num1,num2,tmp


if __name__ == '__main__':

  if((len(sys.argv)!= 4)&(len(sys.argv)!= 2)):  #用法说明
    print 'Usage:\n\tscanner.py startip endip port'
    print '\tscanner.py ip'
    sys.exit()

  if len(sys.argv)==4:      #对某一IP段的扫描
    time_start=time.time()    #起始时间
    startip = sys.argv[1]    #起始IP
    endip = sys.argv[2]      #结束IP
    port = int(sys.argv[3])    #端口号

    res = iprange(startip,endip)
    if not res:
      print 'endip must be bigger than startone'
      sys.exit()
    elif res[2] == 0:
      portScanner(startip,port)
    else:
      for x in xrange(int(res[2])+1):    #IP地址依次递增
        startipnum = ip2num(startip)
        startipnum = startipnum + x
        if activeCount() <=1000:           
          Thread(target=portScanner,args=(num2ip(startipnum),port)).start()
        
    print "There are %d hosts." %len(results)
    results.sort()
    for ip,port in results:
      print "%s:%d is opened..." %(ip,port)
    times=time.time()-time_start      #用时
    print 'use time : %s' % times
        
  if len(sys.argv)==2:
    time_start=time.time()
    port=0
    ip=sys.argv[1]
    while(port<2000):
      if activeCount() <= 40:   #设置40线程扫描
        Thread(target = portScanner, args = (ip, port)).start()
        port=port+1
    results.sort()
    for ip,port in results:
      print "%s:%d is opened..." %(ip,port)
    times=time.time()-time_start
    print 'use time : %s' % times
</div>

使用效果如下:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

</div>

您可能想查找下面的文章:

  • Python实现简易端口扫描器代码实例
  • Python端口扫描简单程序
  • Python实现网络端口转发和重定向的方法
  • Python实现网络端口转发和重定向的方法
  • 实例探究Python以并发方式编写高性能端口扫描器的方法
  • 使用Python编写简单的端口扫描器的实例分享
  • 使用Python编写简单的端口扫描器的实例分享
  • python检测远程端口是否打开的方法
  • python循环监控远程端口的方法
  • python检测远程端口是否打开的方法

相关文章

  • Python使用迭代器捕获Generator返回值的方法
  • 在Python的Flask框架中使用日期和时间的教程
  • python中异常捕获方法详解
  • Python实现把数字转换成中文
  • Python脚本实现网卡流量监控
  • python cookielib 登录人人网的实现代码
  • Python科学计算之NumPy入门教程
  • python开启多个子进程并行运行的方法
  • 详解Django缓存处理中Vary头部的使用
  • 详解Python字符串对象的实现

文章分类

  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell

最近更新的内容

    • web.py在SAE中的Session问题解决方法(使用mysql存储)
    • 使用Django的模版来配合字符串翻译工作
    • Python标准库之随机数 (math包、random包)介绍
    • Python编程中字符串和列表的基本知识讲解
    • Python命令启动Web服务器实例详解
    • Python中的True,False条件判断实例分析
    • Python处理json字符串转化为字典的简单实现
    • Python装饰器入门学习教程(九步学习)
    • 最基础的Python的socket编程入门教程
    • Python正则表达式如何进行字符串替换实例

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有