- Add test directory with main.py, p2p.py, ws.py - Add send_empty_json.py WebSocket test script
45 lines
868 B
Python
45 lines
868 B
Python
#!/usr/bin/env python3
|
|
import socket
|
|
import struct
|
|
import base64
|
|
import hashlib
|
|
|
|
# Connect to the WebSocket
|
|
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
|
s.connect(('192.168.4.1', 80))
|
|
|
|
# Send HTTP WebSocket upgrade request
|
|
key = base64.b64encode(b'test-nonce').decode('utf-8')
|
|
request = f'''GET /ws HTTP/1.1\r
|
|
Host: 192.168.4.1\r
|
|
Upgrade: websocket\r
|
|
Connection: Upgrade\r
|
|
Sec-WebSocket-Key: {key}\r
|
|
Sec-WebSocket-Version: 13\r
|
|
\r
|
|
'''
|
|
s.send(request.encode())
|
|
|
|
# Read upgrade response
|
|
response = s.recv(4096)
|
|
print(response.decode())
|
|
|
|
# Send WebSocket TEXT frame with empty JSON '{}'
|
|
payload = b'{}'
|
|
mask = b'\x12\x34\x56\x78'
|
|
payload_masked = bytes(p ^ mask[i % 4] for i, p in enumerate(payload))
|
|
|
|
frame = struct.pack('BB', 0x81, 0x80 | len(payload))
|
|
frame += mask
|
|
frame += payload_masked
|
|
|
|
s.send(frame)
|
|
print("Sent empty JSON to WebSocket")
|
|
s.close()
|
|
|
|
|
|
|
|
|
|
|
|
|