Python3实现TCP端口扫描器:基础与实战

2 下载量 53 浏览量 更新于2024-08-29 收藏 190KB PDF 举报
在渗透测试中,利用Python3制作TCP端口扫描器是一项关键技能。TCP端口扫描作为信息收集的重要手段,有助于了解目标主机开放的服务,从而识别潜在漏洞。本文主要探讨了TCP扫描的三种常见类型:全连接(TCP connect)扫描、SYN扫描、FIN扫描以及TCP XMAS扫描。 1. **全连接扫描(TCP Connect)**:也被称为全连接扫描,这种方法直接尝试与目标端口建立TCP连接,完成三次握手过程。优点是结果准确,但缺点是速度较慢且容易被目标系统检测,因为它会引发完整的连接建立。 2. **SYN扫描(TCP SYN)**:半开放扫描,发送一个SYN包开启会话,等待目标的SYN/ACK响应。如果收到RST包,表示端口关闭;收到SYN/ACK则表明端口打开。这种方法隐蔽性较高,因为只发起连接请求,不建立完整连接。 3. **FIN扫描(TCP FIN)**:通过发送FIN包来终止一个活动连接,观察目标的RST回应。RST包表明端口已关闭。 4. **TCP XMAS扫描(一种变种的FIN扫描)**:使用多个TCP标志位(PSH、FIN、URG)同时设置,若接收到RST包,说明端口关闭。 在编程实战中,我们使用Python3实现了全连接扫描器,如给出的代码所示。`portScanner`函数通过尝试与目标主机的指定端口建立连接,如果连接成功则认为该端口开放,否则标记为关闭。`main`函数循环遍历1到1024的端口范围,调用`portScanner`进行扫描。 尽管这种基础的扫描方法简单快速,但它可能无法深入检测防火墙或某些安全策略下的隐藏端口。在实际渗透测试中,高级扫描技术可能会结合多线程、IP分段、异常处理等,以提高效率并减少被检测风险。 掌握Python3制作TCP端口扫描器不仅可以帮助进行基本的信息收集,还能为后续的漏洞评估和渗透测试提供有价值的数据。然而,合法性和道德问题是必须考虑的,任何扫描活动应在授权和遵循当地法律的前提下进行。
2018-01-17 上传
支持多线程快速扫描 支持网段扫描: ScanPort.py 支持自定义网段扫描: ScanPort.py 192.168.2 支持自定义子网段扫描: ScanPort.py 192.168.3.100 192.168.3.120 支持Web端口自动显示链接: C:\>ScanPort.py Scanning [192.168.200.1]-[192.168.200.254] Total 254 ip(s)... 192.168.200.1 80 web http://192.168.200.1 192.168.200.81 80 web http://192.168.200.81 192.168.200.81 443 web https://192.168.200.81 192.168.200.99 80 web http://192.168.200.99 192.168.200.99 443 web https://192.168.200.99 192.168.200.115 80 web http://192.168.200.115 192.168.200.115 443 web https://192.168.200.115 192.168.200.123 80 web http://192.168.200.123 192.168.200.123 443 web https://192.168.200.123 192.168.200.130 80 web http://192.168.200.130 192.168.200.130 443 web https://192.168.200.130 192.168.200.133 80 web http://192.168.200.133 192.168.200.133 443 web https://192.168.200.133 192.168.200.144 80 web http://192.168.200.144 192.168.200.144 443 web https://192.168.200.144 192.168.200.151 8080 web http://192.168.200.151 192.168.200.160 443 web https://192.168.200.160 192.168.200.160 80 web http://192.168.200.160 192.168.200.163 80 web http://192.168.200.163 192.168.200.163 443 web https://192.168.200.163 192.168.200.163 1080 Proxy 192.168.200.168 80 web http://192.168.200.168 192.168.200.168 443 web https://192.168.200.168 192.168.200.168 1080 Proxy 192.168.200.173 8080 web http://192.168.200.173 192.168.200.173 443 web https://192.168.200.173 192.168.200.181 80 web http://192.168.200.181 192.168.200.181 443 web https://192.168.200.181 192.168.200.180 80 web http://192.168.200.180 192.168.200.180 443 web https://192.168.200.180 192.168.200.192 80 web http://192.168.200.192 192.168.200.192 443 web https://192.168.200.192 All RUN TIME : 97.0510001183s