python 实现端口扫描工具


Posted in Python onDecember 18, 2020
# 简单的端口扫描工具
# 作者: Charles
# 公众号: Charles的皮卡丘
import time
import socket
import threading

# 判断是否为正确的IP地址。
def isIP(ip):
  ip_addr = ip.split('.')
  if len(ip_addr) != 4:
   return False
  for ipnum in ip_addr:
   if not (0 <= int(ipnum) < 255):
     return False
  else:
   return True


# 端口扫描工具
class scanThread(threading.Thread):
  def __init__(self, ip, port_min=0, port_max=65535):
   # 初始化。
   threading.Thread.__init__(self)
   self.port_max = port_max
   self.port_min = port_min
   self.ip = ip
   # assert isinstance(int,self.port_min) and isinstance(int,self.port_max)
  # 重写run
  def run(self):
   return self.__checker()
  # 检测
  def __checker(self):
   
   for port in range(self.port_min,self.port_max):
     self.__connect(port)
  # 连接
  def __connect(self,port):
   socket.setdefaulttimeout(1)
   self.sock = socket.socket()
   try:
     start_time = time.time()
     self.sock.connect((self.ip,port))
     end_time = time.time()
     connect_time = int(start_time - end_time)
     info = 'Find --> [IP]: %s, [PORT]: %s, [Connect Time]: %d' % (self.ip, port, connect_time)
     print(info)
     self.__save(info)
     self.sock.close()
   except:
     # print('出错误了')
     self.sock.close()
  def __save(self,info):
   try:
     with open('results.txt', 'a') as f:
      f.write(info + '\n')
   except:
     print('写文件出现了问题')
     time.sleep(0.1)

if __name__ == '__main__':
  # 输入IP地址。
  ip = input('Input IP(example <xxx.xxx.xxx.xxx>):\n')
  print(isIP(ip))
  while not isIP(ip):
   ip = input('请输入正确的IP地址:\n')
  # 输入最小端口、
  port_min = input('需要扫描的最小端口为:')
  while not (0 <= int(port_min) < 65535):
   port_min = input('请输入正确的需要扫描的最小端口:')
  port_max = input('需要扫描的最大端口为(65535):')
  while not (0 <= int(port_min) < int(port_max) < 65535):
   port_min = input('请输入正确的需要扫描的最大端口(65535):')
  num = 8
  port_max = int(port_max)
  port_min = int(port_min)
  interval = (port_max - port_min) // num
  for i in range(interval):
   scanThread(ip, i * num, (i + 1) * num).start()

以上就是python 实现端口扫描工具的详细内容,更多关于python 端口扫描工具的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
linux系统使用python获取内存使用信息脚本分享
Jan 15 Python
使用python检测主机存活端口及检查存活主机
Oct 12 Python
微信跳一跳辅助python代码实现
Jan 05 Python
深入浅析Python中的yield关键字
Jan 24 Python
django实现支付宝支付实例讲解
Oct 17 Python
使用pytorch完成kaggle猫狗图像识别方式
Jan 10 Python
Python线程条件变量Condition原理解析
Jan 20 Python
基于python检查SSL证书到期情况代码实例
Apr 04 Python
浅谈numpy中函数resize与reshape,ravel与flatten的区别
Jun 18 Python
python 获取剪切板内容的两种方法
Nov 28 Python
Flask处理Web表单的实现方法
Jan 31 Python
python实现学员管理系统(面向对象版)
Jun 05 Python
Python-split()函数实例用法讲解
Dec 18 #Python
Python+Opencv实现把图片、视频互转的示例
Dec 17 #Python
python 利用jieba.analyse进行 关键词提取
Dec 17 #Python
Python基础进阶之海量表情包多线程爬虫功能的实现
Dec 17 #Python
python 实现一个简单的线性回归案例
Dec 17 #Python
python BeautifulSoup库的安装与使用
Dec 17 #Python
python中翻译功能translate模块实现方法
Dec 17 #Python
You might like
PHP实现获取域名的方法小结
2014/11/05 PHP
腾讯CMEM的PHP扩展编译安装方法
2015/09/25 PHP
使一个函数作为另外一个函数的参数来运行的javascript代码
2007/08/13 Javascript
JSON+HTML实现国家省市联动选择效果
2014/05/18 Javascript
jQuery插件multiScroll实现全屏鼠标滚动切换页面特效
2015/04/12 Javascript
深入学习JavaScript中的Rest参数和参数默认值
2015/07/28 Javascript
Vue.js学习之过滤器详解
2017/01/22 Javascript
bootstrapValidator.min.js表单验证插件
2017/02/09 Javascript
Bootstrap下拉菜单Dropdowns的实现代码
2017/03/17 Javascript
js中bool值的转换及“&amp;&amp;”、“||”、 “!!”详解
2017/12/21 Javascript
基于node下的http小爬虫的示例代码
2018/01/11 Javascript
解决使用vue.js路由后失效的问题
2018/03/17 Javascript
记录一篇关于redux-saga的基本使用过程
2018/08/18 Javascript
Vue常用指令详解分析
2018/08/19 Javascript
17道题让你彻底理解JS中的类型转换
2019/08/08 Javascript
vue 使用async写数字动态加载效果案例
2020/07/18 Javascript
用Python编写一个基于终端的实现翻译的脚本
2015/04/24 Python
Python本地与全局命名空间用法实例
2015/06/16 Python
Python入门之三角函数tan()函数实例详解
2017/11/08 Python
python生成器,可迭代对象,迭代器区别和联系
2018/02/04 Python
Python+request+unittest实现接口测试框架集成实例
2018/03/16 Python
Python求离散序列导数的示例
2019/07/10 Python
python实现猜拳游戏
2020/03/04 Python
解决jupyter notebook显示不全出现框框或者乱码问题
2020/04/09 Python
html5唤起app的方法
2017/11/30 HTML / CSS
详解HTML5 data-* 自定义属性
2018/01/24 HTML / CSS
英国游戏机和游戏购物网站:365games.co.uk
2018/06/18 全球购物
安全标准化汇报材料
2014/02/03 职场文书
违反校纪校规检讨书
2014/02/15 职场文书
2014植树节活动总结
2014/03/11 职场文书
《生命的药方》教学反思
2014/04/08 职场文书
vue组件的路由高亮问题解决方法
2021/05/11 Vue.js
Mysql 用户权限管理实现
2021/05/25 MySQL
深入理解Pytorch微调torchvision模型
2021/11/11 Python
一文了解MySQL二级索引的查询过程
2022/02/24 MySQL
《Estab Life》4月6日播出 正式PV、主视觉图公开
2022/03/20 日漫