首页
python
Win桌面应用自动化pywinauto
pywinauto遍历展示程序的所有菜单项
Python3使用串口
Python字符串处理
Python3实现配置文件差异对比(键值对key=value的形式)
正则
正则匹配两个字符之间的字符串
正则提取markdown中图片链接
正则表达式基本知识
字符串-正则实例
Python生成8位随机字符串的一些方法
python3批量ping检测
python3检测一批主机ip的tcp端口
Python3--DNS
python3备份交换机配置
Pyhton3--Win注册表
python远程开机工具
端口的问题以及绑定端口(Python)
Python-网络
检测到win电脑断网就发出告警声音
Python编写的DNS服务可靠性测试程序
Python编写的TCP/UDP端口探测程序
Python抓包-Pyshark
3D人体骨架检测(mediapipe)
VSCode编辑器
开源IT运维项目
python知识点
Python3使用snmp获取H3C交换机arp表
Python检测tcp端口状态并发送到企微群
Python3使用smtp发邮件
Python3使用smtp发邮件(带附件)
Python3拉取微软AD域所有用户信息
Python3使用微软AD域账号认证
自动更新公网域名的解析(阿里云)
每日定时推送Excel中排班表信息到企微群
Django
Django模板标签
Django在发送POST请求时返回403错误
Django-mysql数据库条件查询
uwsgi 配置 python virtualenv 虚拟环境目录 ( ini 配置)
常用收藏
python3数据类型转换
python处理文本
txt每行一个字符串_用英文逗号连接
txt_匹配并拆分出需要字符串
python获取日期时间
python执行linux命令的三种方式
python使用ssh连接到linux服务器执行命令
本文档由 内网文摘 发布,转载请注明出处
-
+
home page
Python编写的TCP/UDP端口探测程序
## TCP 下面是Python编写的简单端口探测程序,可以探测指定IP地址的主机上是否开放了指定范围内的端口: ``` python import socket # 定义目标主机的IP地址和端口范围 target_host = "127.0.0.1" min_port = 1 max_port = 10000 # 遍历端口范围 for port in range(min_port, max_port+1): # 创建一个TCP连接 sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.settimeout(1) # 尝试连接目标主机的指定端口 result = sock.connect_ex((target_host, port)) if result == 0: # 端口开放,显示提示信息 print("Port {}: OPEN".format(port)) # 关闭TCP连接 sock.close() ``` 以上程序将遍历指定范围内的每个端口,并尝试通过TCP连接到目标主机上的每个端口。如果连接成功,即表示该端口开放。程序将会输出类似于以下的信息: ``` Port 80: OPEN Port 443: OPEN ``` 上面的程序只是一个简单的示例程序,实际上,在真实的网络环境中,可能需要更复杂的端口探测技术和算法,才能更好地确定目标主机上是否存在风险。因此,在实际攻击或允许测试之前,务必先获取相关的授权并确保自己的行为不会违反相关法律法规。 ## UDP UDP端口的探测相比TCP端口探测,要稍微复杂一些,因为UDP是面向无连接的传输协议,需要通过发送UDP数据包并监听返回的数据包,来判断目标主机上的UDP端口是否开放。 UDP端口探测的原理如下: 1. 创建一个UDP套接字。 2. 设置套接字的超时时间,以避免长时间等待。 3. 尝试向目标主机的指定UDP端口发送一个UDP数据包。 4. 如果成功接收到了返回的UDP数据包,则说明UDP端口开放并且可通信。可以根据返回的数据包内容进行进一步的判断。 5. 如果发送或接收失败,通常表示UDP端口关闭或无响应。 6. 关闭UDP套接字。 需要注意的是,UDP端口探测的可靠性不如TCP端口探测,因为UDP是无连接的,数据包可能会丢失、被过滤或由于其他原因无法返回。因此,在进行UDP端口探测时,需要针对具体的场景和需求,经过测试和验证才能得出可靠的结果。 下面是一个简单的Python程序,通过发送UDP数据包来探测指定IP地址的主机是否开放了指定范围内的UDP端口: ``` python import socket # 定义目标主机的IP地址和端口范围 target_host = "127.0.0.1" min_port = 1 max_port = 10000 # 遍历端口范围 for port in range(min_port, max_port+1): # 创建一个UDP套接字 sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) sock.settimeout(1) # 尝试向目标主机的指定端口发送UDP数据包 try: sock.sendto(b"Data", (target_host, port)) data, addr = sock.recvfrom(1024) # 如果接收到响应,则表示端口开放,显示提示信息 print("Port {}: OPEN".format(port)) except Exception as ex: # 如果发送或接收失败,则表示端口关闭或无响应 pass # 关闭UDP套接字 sock.close() ``` 以上程序将遍历指定范围内的每个UDP端口,并尝试向目标主机上的每个端口发送一个UDP数据包。如果成功接收到了响应,则认为该端口开放。程序将会输出类似于以下的信息: ``` Port 53: OPEN Port 161: OPEN ``` 需要注意的是,UDP端口探测可能不太准确,因为UDP是无连接的协议,其数据包可能丢失或被过滤掉,从而导致虚假的结果。如果需要更准确的UDP端口探测,可以使用更高级的探测技术和算法。同样需要提醒的是,在实际攻击或测试之前,请务必先获取授权并确保自己的行为不会违反法律法规。
local
Dec. 6, 2023, 10 p.m.
Share documents
Collection documents
Last
Next
Scan wechat
Copy link
Scan your mobile phone to share
Copy link
关于 LocalNetwork
LocalNetwork
是由mrdoc开源
LocalNetwork.cn
修改的在线文档系统,作为个人和小型团队的云笔记、文档和知识库管理工具。
如果此文档给你或你的团队带来了帮助,欢迎支持作者持续投入精力更新和维护!内网文摘 & LocalNetwork
>>>主页
logo
logo
Download markdown file
share
link
type
password
Update password