H2SpaceX基于 Scapy 的 HTTP/2 底层库,可用于单包攻击(H2 上的竞态条件)
我写了一篇文章并发表在 InfoSec Write-ups 上:
1.2.2
pyproject.toml 并移除 setup.py
[options] 部分,使包发现定义正确setup.py 因拼写错误而遗漏的 dev extra(twine)check_headers_lowercase=False(与其他请求方法一致)tests/(头部工具类的单元测试)和 CONTRIBUTING.md(构建与发布指南)1.2.1
以下部分陈述仅为想法,尚未测试或实现。
H2SpaceX 适用于 Python 3(推荐:>=3.8.8)
pip install h2spacex
如果你遇到 scapy 错误:
pip install --upgrade scapy
你可以导入 HTTP/2 TLS 连接并建立连接。建立连接后,你可以做其他事情:
from h2spacex import H2OnTlsConnection
h2_conn = H2OnTlsConnection(
hostname='http2.github.io',
port_number=443,
ssl_log_file_path="PATH_TO_SSL_KEYS.log" # optional (if you want to log ssl keys to read the http/2 traffic in wireshark)
)
h2_conn.setup_connection()
...
更多示例见 Wiki 页面
查看包含一些 Portswigger 竞态条件示例的示例。
James Kettle 在 Black Hat 2024 上介绍了用于计时攻击的改进版单包攻击:

你可以使用 send_ping_frame() 方法轻松实现此方法。
参见此 Wiki 以及 Parse Response (Threaded) + Response Times for Timing Attacks 部分:
我还从之前开发的库 h2tinker 中获得了一些想法。
最后,再次感谢 James Kettle 的直接帮助并指出了一些其他技术。