Пример #1
0
def test_socks5_reply_success(
    authenticated_conn: SOCKS5Connection,
    atype: bytes,
    addr: bytes,
    expected_atype: SOCKS5AType,
    expected_addr: str,
) -> None:
    data = b"".join(
        [
            b"\x05",  # protocol version
            b"\x00",  # reply
            b"\x00",  # reserved
            atype,
            addr,
            (1080).to_bytes(2, byteorder="big"),  # port
        ]
    )
    reply = authenticated_conn.receive_data(data)

    assert authenticated_conn.state == SOCKS5State.TUNNEL_READY
    assert reply == SOCKS5Reply(
        reply_code=SOCKS5ReplyCode.SUCCEEDED,
        atype=expected_atype,
        addr=expected_addr,
        port=1080,
    )
Пример #2
0
def test_socks5_reply_error(
    error_code: SOCKS5ReplyCode,
    authenticated_conn: SOCKS5Connection,
    atype: bytes,
    addr: bytes,
    expected_atype: SOCKS5AType,
    expected_addr: str,
) -> None:
    data = b"".join([
        b"\x05",  # protocol version
        error_code,
        b"\x00",  # reserved
        atype,
        addr,
        (1080).to_bytes(2, byteorder="big"),  # port
    ])
    reply = authenticated_conn.receive_data(data)

    assert authenticated_conn.state == SOCKS5State.MUST_CLOSE
    assert reply == SOCKS5Reply(reply_code=error_code,
                                atype=expected_atype,
                                addr=expected_addr,
                                port=1080)
Пример #3
0
def test_socks5_receive_malformed_data(authenticated_conn: SOCKS5Connection,
                                       data: bytes) -> None:
    with pytest.raises(ProtocolError):
        authenticated_conn.receive_data(data)