MCPcopy Create free account
hub / github.com/0x4m4/hexstrike-ai / HTTPTestingFramework

Class HTTPTestingFramework

hexstrike_server.py:13281–13621  ·  view source on GitHub ↗

Advanced HTTP testing framework as Burp Suite alternative

Source from the content-addressed store, hash-verified

13279# ============================================================================
13280
13281class HTTPTestingFramework:
13282 """Advanced HTTP testing framework as Burp Suite alternative"""
13283
13284 def __init__(self):
13285 self.session = requests.Session()
13286 self.session.headers.update({
13287 'User-Agent': 'HexStrike-HTTP-Framework/1.0 (Advanced Security Testing)'
13288 })
13289 self.proxy_history = []
13290 self.vulnerabilities = []
13291 self.match_replace_rules = [] # [{'where':'query|headers|body|url','pattern':'regex','replacement':'str'}]
13292 self.scope = None # {'host': 'example.com', 'include_subdomains': True}
13293 self._req_id = 0
13294
13295 def setup_proxy(self, proxy_port: int = 8080):
13296 """Setup HTTP proxy for request interception"""
13297 self.session.proxies = {
13298 'http': f'http://127.0.0.1:{proxy_port}',
13299 'https': f'http://127.0.0.1:{proxy_port}'
13300 }
13301
13302 def intercept_request(self, url: str, method: str = 'GET', data: dict = None,
13303 headers: dict = None, cookies: dict = None) -> dict:
13304 """Intercept and analyze HTTP requests"""
13305 try:
13306 if headers:
13307 self.session.headers.update(headers)
13308 if cookies:
13309 self.session.cookies.update(cookies)
13310
13311 # Apply match/replace rules prior to sending
13312 url, data, send_headers = self._apply_match_replace(url, data, dict(self.session.headers))
13313 if headers:
13314 send_headers.update(headers)
13315
13316 if method.upper() == 'GET':
13317 response = self.session.get(url, params=data, headers=send_headers, timeout=30)
13318 elif method.upper() == 'POST':
13319 response = self.session.post(url, data=data, headers=send_headers, timeout=30)
13320 elif method.upper() == 'PUT':
13321 response = self.session.put(url, data=data, headers=send_headers, timeout=30)
13322 elif method.upper() == 'DELETE':
13323 response = self.session.delete(url, headers=send_headers, timeout=30)
13324 else:
13325 response = self.session.request(method, url, data=data, headers=send_headers, timeout=30)
13326
13327 # Store request/response in history
13328 self._req_id += 1
13329 request_data = {
13330 'id': self._req_id,
13331 'url': url,
13332 'method': method,
13333 'headers': dict(response.request.headers),
13334 'data': data,
13335 'timestamp': datetime.now().isoformat()
13336 }
13337
13338 response_data = {

Callers 1

Calls

no outgoing calls

Tested by

no test coverage detected