diff --git a/README.md b/README.md index f8c7893..2d11a17 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ # H2SpaceX   H2SpaceX -[![pypi: 1.1.2](https://img.shields.io/badge/pypi-1.1.2-8c34eb.svg)](https://pypi.org/project/h2spacex/) -[![Python: 3.10](https://img.shields.io/badge/Python->=3.10-blue.svg)](https://www.python.org) +[![pypi: 1.2.0](https://img.shields.io/badge/pypi-1.2.0-8c34eb.svg)](https://pypi.org/project/h2spacex/) +[![Python: 3.8.8](https://img.shields.io/badge/Python->=3.10-blue.svg)](https://www.python.org) [![License: GPL v3](https://img.shields.io/badge/License-GPL%20v3-006112.svg)](https://github.com/nxenon/h2spacex/blob/main/LICENSE) HTTP/2 low level library based on Scapy which can be used for Single Packet Attack (Race Condition on H2) @@ -63,7 +63,8 @@ from h2spacex import H2OnTlsConnection h2_conn = H2OnTlsConnection( hostname='http2.github.io', - port_number=443 + 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() diff --git a/pyproject.toml b/pyproject.toml index a2e0e6a..0887c22 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta" [project] name = "h2spacex" -version = "1.1.2" +version = "1.2.0" authors = [ { name="nxenon", email="nasiri.aminm@gmail.com" }, ] @@ -12,7 +12,7 @@ license = { text="GPL-3.0" } description = "HTTP/2 Single Packet Attack low level library based on Scapy" readme = "README.md" keywords = ["race-condition", "http2", "single-packet-attack"] -requires-python = ">=3.10" +requires-python = ">=3.8.8" dependencies = [ "scapy==2.5.0", "brotlipy==0.7.0", diff --git a/setup.py b/setup.py index 6abe6d0..420a3e5 100644 --- a/setup.py +++ b/setup.py @@ -5,7 +5,7 @@ setup( name='h2spacex', - version='1.1.2', + version='1.2.0', description='HTTP/2 Single Packet Attack low level library based on Scapy', package_dir={"": "src"}, packages=find_packages(where="src"), @@ -21,7 +21,7 @@ "Operating System :: OS Independent", ], install_requires=['scapy==2.5.0', 'brotlipy==0.7.0', 'PySocks==1.7.1'], - python_requires='>=3.10', + python_requires='>=3.8.8', extras_requires={ 'dev': 'twine==4.0.2' }, diff --git a/src/h2spacex/h2_tls_connection.py b/src/h2spacex/h2_tls_connection.py index eab1656..83a25f8 100644 --- a/src/h2spacex/h2_tls_connection.py +++ b/src/h2spacex/h2_tls_connection.py @@ -10,9 +10,11 @@ class H2OnTlsConnection(H2Connection): - def __init__(self, hostname, port_number, read_timeout=3, proxy_hostname=None, proxy_port_number=None): + def __init__(self, hostname, port_number, read_timeout=3, + proxy_hostname=None, proxy_port_number=None, ssl_log_file_path=None): super().__init__(hostname, port_number, read_timeout=read_timeout, proxy_hostname=proxy_hostname, proxy_port_number=proxy_port_number) self.tls_socket = None # TLS Socket Context + self.ssl_log_file_path = ssl_log_file_path def setup_connection(self): try: @@ -45,6 +47,8 @@ def close_connection(self): def __create_tls_context_on_raw_socket(self): # Create SSL context ssl_context = ssl.SSLContext(ssl.PROTOCOL_TLS_CLIENT) + if self.ssl_log_file_path is not None: + ssl_context.keylog_filename = self.ssl_log_file_path ssl_context.check_hostname = False ssl_context.verify_mode = ssl.CERT_NONE ssl_context.set_alpn_protocols(['h2'])