
项目简介
Python 几乎是每个安全工程师的第一编程语言——语法简洁、库丰富、跨平台,写个扫描脚本分分钟的事。但问题也来了:哪些库真正适合安全测试用?
今天推荐的这个项目 python-pentest-tools(https://github.com/iskandarsaleh/python-pentest-tools),正是来解决这个问题的。[1]
这是一个纯粹的资源集合项目,作者整理了安全研究和渗透测试中最常用的 Python 工具库,按类别聚合,方便按需查找。和那些动手写的实验脚本不同,这里的每一条都是经过社区验证、生产环境也在用的成熟工具。
目前项目在 GitHub 有多个活跃 fork,包括 iskandarsaleh、xin053、richardsonlima 等开发者都有参与维护,说明这个资源库确实有价值。
工具分类详解
1. 网络安全工具(Network)
网络安全是渗透测试最核心的领域,Python 在这一块有大量成熟库:
- Scapy:强大的数据包处理库,可以构造任意协议的数据包,进行网络探测、协议分析和流量伪造,是写自定义扫描器的首选库
- Twisted:事件驱动的网络编程框架,适合写高性能的网络服务或客户端
- dnschef:DNS 欺骗工具,用于中间人攻击场景下的 DNS 劫持测试
- Mitmproxy:支持 HTTP/HTTPS 流量拦截和修改,常用于 Web 安全测试
- Requests:虽然通用,但在安全测试中常用于快速构造 HTTP 请求、测试 API 接口漏洞
2. Web 安全工具(Web)
- BeautifulSoup:HTML/XML 解析库,用于爬取页面内容、提取表单、寻找注入点
- mechanize:模拟浏览器行为,自动填写表单、提交请求
- selenium:浏览器自动化工具,绕过 JavaScript 渲染的防护
- python-nmap:NMap 的 Python 封装,方便在脚本中集成端口扫描
3. 取证与分析(Forensics)
- Volatility:最著名的内存取证框架,支持从内存镜像中提取进程、网络连接、密码哈希等关键信息
- pylnk:解析 Windows 快捷方式文件(.lnk)的元数据,可用于取证分析
4. 密码攻击(Password Attacks)
- Hashlib:Python 内置库,用于计算和识别各类哈希值(MD5、SHA、bcrypt 等)
- Passlib:密码哈希库,支持验证和生成各类密码哈希
- Pyrit:GPU 加速的 WPA/WPA2-PSK 暴力破解工具(需要显卡)
5. 漏洞研究(Exploit Development)
- pwntools:CTF 漏洞利用开发神器,提供快速的 shellcode 生成、进程通信、ROP 链构建等功能
- ** capstone**:反汇编框架,支持 x86、ARM、MIPS 等多种架构,用于漏洞分析和 shellcode 分析
- unicorn:轻量级 CPU 模拟器,常与 pwntools 配合做漏洞利用
6. 通用工具(Utilities)
- paramiko:SSH 客户端库,用于写 SSH 连接相关的自动化脚本
- ftplib:Python 内置 FTP 客户端,用于 FTP 相关的安全测试
- pycryptodome:密码学工具包,提供各类加密算法的实现
- stegano:隐写术工具,检测和提取图片中的隐藏数据
实际应用示例
示例一:用 Scapy 写一个简单的 TCP SYN 扫描器
from scapy.all import *
def syn_scan(target, ports):
for port in ports:
pkt = IP(dst=target)/TCP(dport=port, flags='S')
resp = sr1(pkt, timeout=1, verbose=0)
if resp and resp.haslayer(TCP):
if resp[TCP].flags == 'SA':
print(f"[+] Port {port} is OPEN")
else:
print(f"[-] Port {port} is CLOSED/FILTERED")
else:
print(f"[?] Port {port} is FILTERED/NO RESPONSE")
# 使用
syn_scan('192.168.1.1', [22, 80, 443, 3306, 8080])
示例二:用 Requests 测试 SQL 注入
import requests
target = "http://target.com/product?id=1"
# 基础测试
payloads = ["'", "' OR '1'='1", '" OR "1"="1', "1 AND 1=1"]
for payload in payloads:
url = target + payload
r = requests.get(url)
if "error" in r.text.lower() or r.status_code >= 500:
print(f"[!] Possible SQL Injection: {url}")
else:
print(f"[-] Normal: {url}")
示例三:用 mitmproxy 拦截修改 HTTP 响应
from mitmproxy import http
def response(flow: http.HTTPFlow):
if "api.example.com" in flow.request.pretty_url:
# 在响应中注入测试标记
flow.response.text = flow.response.text.replace(
'</body>', '<script>console.log("TEST INJECTED")</script></body>'
)
print("[+] Response modified")
安装方法
大部分库都可以通过 pip 直接安装:
# 核心安全库
pip3 install scapy pwntools capstone unicorn
pip3 install mitmproxy requests beautifulsoup4
pip3 install paramiko ftplib
pip3 install selenium mechanize
pip3 install volatility3 passlib pycryptodome
建议创建一个专用的 Python 虚拟环境:
python3 -m venv sec-env
source sec-env/Scripts/activate
pip install -r requirements.txt
为什么这个项目值得收藏?
- 省时:不用自己去找"安全测试用哪些 Python 库"这类问题的答案了,作者已经帮你整理好了
- 全面:覆盖网络安全、Web 安全、取证、密码、漏洞研究等几乎所有安全研究领域
- 可维护:多个开发者 fork 维护,说明社区认可度高
- 可扩展:作为资源清单,你可以持续补充自己发现的好库
总结
python-pentest-tools 是一个高效的工具清单,它不提供现成的渗透测试程序,而是给你一张安全研究者的 Python 工具地图。收藏它,下次写脚本之前先来这里查一查,可能有现成的库可以复用。
GitHub 地址:https://github.com/iskandarsaleh/python-pentest-tools[2]
推荐理由:资源全面、更新活跃、一站式查找,是每个 Python 安全爱好者必备的收藏。