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中标准模块importlib详解
Apr 16 Python
详解Golang 与python中的字符串反转
Jul 21 Python
Python数据结构与算法之二叉树结构定义与遍历方法详解
Dec 12 Python
django 通过ajax完成邮箱用户注册、激活账号的方法
Apr 17 Python
解决Django删除migrations文件夹中的文件后出现的异常问题
Aug 31 Python
Python 私有化操作实例分析
Nov 21 Python
基于python实现微信好友数据分析(简单)
Feb 16 Python
Python ckeditor富文本编辑器代码实例解析
Jun 22 Python
python3.x中安装web.py步骤方法
Jun 23 Python
Scrapy-Redis之RedisSpider与RedisCrawlSpider详解
Nov 18 Python
装上这 14 个插件后,PyCharm 真的是无敌的存在
Jan 11 Python
python ansible自动化运维工具执行流程
Jun 24 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 session安全问题分析
2011/06/24 PHP
浅析PHP中的UNICODE 编码与解码
2013/06/29 PHP
ThinkPHP3.1新特性之动态设置自动完成及自动验证示例代码
2014/06/23 PHP
PHP中echo,print_r与var_dump区别分析
2014/09/29 PHP
PHP中函数gzuncompress无法使用的解决方法
2017/03/02 PHP
浅谈PHP实现大流量下抢购方案
2017/12/15 PHP
PHP抽象类基本用法示例
2018/12/28 PHP
PHP超全局变量实现原理及代码解析
2020/09/01 PHP
javascript 快速排序函数代码
2012/05/30 Javascript
js获得鼠标的坐标值的方法
2013/03/13 Javascript
jQuery方法简洁实现隔行换色及toggleClass的使用
2013/03/15 Javascript
浅析javascript中function 的 length 属性
2014/05/27 Javascript
JS验证IP,子网掩码,网关和MAC的方法
2015/07/02 Javascript
JavaScript File API实现文件上传预览
2016/02/02 Javascript
jQuery 3.0中存在问题及解决办法
2016/07/15 Javascript
js 轮播效果实例分享
2016/12/28 Javascript
Javascript的this用法
2017/01/16 Javascript
SpringMVC+bootstrap table实例详解
2017/06/02 Javascript
nodejs项目windows下开机自启动的方法
2017/11/22 NodeJs
详解VScode编辑器vue环境搭建所遇问题解决方案
2019/04/26 Javascript
在vue中利用v-html按分号将文本换行的例子
2019/11/14 Javascript
使用JS location实现搜索框历史记录功能
2019/12/23 Javascript
Vue+scss白天和夜间模式切换功能的实现方法
2021/01/05 Vue.js
Python找出最小的K个数实例代码
2018/01/04 Python
Tensorflow之构建自己的图片数据集TFrecords的方法
2018/02/07 Python
使用python接入微信聊天机器人
2020/03/31 Python
python绘制规则网络图形实例
2019/12/09 Python
python+requests接口压力测试500次,查看响应时间的实例
2020/04/30 Python
举例详解HTML5中使用JSON格式提交表单
2015/06/16 HTML / CSS
台湾最大银发乐活百货:乐龄网
2018/05/21 全球购物
瑞典最大的儿童用品网上商店:pinkorblue.se
2021/03/09 全球购物
给校长的建议书100字
2014/05/16 职场文书
团代会闭幕词
2015/01/28 职场文书
2015年保管员工作总结
2015/04/30 职场文书
青年人初次创业的“五不要”
2019/08/23 职场文书
Golang数据类型和相互转换
2022/04/12 Golang