Пример #1
0
    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
Пример #2
0
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'
Пример #3
0
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'
Пример #4
0
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)
Пример #5
0
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)
Пример #6
0
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)
Пример #7
0
                            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'
Пример #8
0
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)