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 相关文章推荐
Python实现的多线程端口扫描工具分享
Jan 21 Python
简单了解Python下用于监视文件系统的pyinotify包
Nov 13 Python
Python算术运算符实例详解
May 31 Python
Python操作MySQL数据库的三种方法总结
Jan 30 Python
PyQt5 实现字体大小自适应分辨率的方法
Jun 18 Python
python使用requests.session模拟登录
Aug 09 Python
Python 如何提高元组的可读性
Aug 26 Python
PyTorch实现AlexNet示例
Jan 14 Python
在python中修改.properties文件的操作
Apr 08 Python
python 读取串口数据的示例
Nov 09 Python
教你怎么用Python生成九宫格照片
May 20 Python
python区块链实现简版工作量证明
May 25 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语法基础
2016/01/01 PHP
WordPress中设置Post Type自定义文章类型的实例教程
2016/05/10 PHP
Yii框架数据模型的验证规则rules()被执行的方法
2016/12/02 PHP
php5与php7的区别点总结
2019/10/11 PHP
深入聊聊Array的sort方法的使用技巧.详细点评protype.js中的sortBy方法
2007/04/12 Javascript
textarea 控制输入字符字节数(示例代码)
2013/12/27 Javascript
js实现字符串的16进制编码不加密
2014/04/25 Javascript
jQuery插件datepicker 日期连续选择
2015/06/12 Javascript
jQuery UI库中dialog对话框功能使用全解析
2016/04/23 Javascript
JavaScript reduce和reduceRight详解
2016/10/24 Javascript
如何处理JSON中的特殊字符
2016/11/30 Javascript
Canvas实现动态的雪花效果
2017/02/13 Javascript
Ajax和Comet技术总结
2017/02/19 Javascript
jQuery 实时保存页面动态添加的数据的示例
2017/08/14 jQuery
JavaScript如何实现图片处理与合成
2020/05/29 Javascript
用Python的线程来解决生产者消费问题的示例
2015/04/02 Python
Python中的rfind()方法使用详解
2015/05/19 Python
python 读取excel文件生成sql文件实例详解
2017/05/12 Python
在NumPy中创建空数组/矩阵的方法
2018/06/15 Python
使用tensorflow实现线性svm
2018/09/07 Python
python 自定义异常和异常捕捉的方法
2018/10/18 Python
Python函数基础实例详解【函数嵌套,命名空间,函数对象,闭包函数等】
2019/03/30 Python
Python数据可视化 pyecharts实现各种统计图表过程详解
2019/08/15 Python
关于Numpy中的行向量和列向量详解
2019/11/30 Python
解决Python 异常TypeError: cannot concatenate 'str' and 'int' objects
2020/04/08 Python
解析Python 偏函数用法全方位实现
2020/06/26 Python
用CSS3写的模仿iPhone中的返回按钮
2015/04/04 HTML / CSS
简单聊聊H5的pushState与replaceState的用法
2018/04/03 HTML / CSS
英国殿堂级有机护肤品牌:Rodial
2017/04/17 全球购物
英国国家美术馆商店:National Gallery
2019/05/01 全球购物
什么造成了Java里面的异常
2016/04/24 面试题
会计学专业自荐信
2014/06/25 职场文书
博士生专家推荐信
2014/09/26 职场文书
《从现在开始》教学反思
2016/02/16 职场文书
2016秋季运动会开幕词
2016/03/04 职场文书
Redis keys命令的具体使用
2022/06/05 Redis