Как отправить TCP-Minecraft пакеты с разными идентификаторами python
Мне нужно отправить несколько пакетов с разными ID (интендефикаторами) на сервер Minecraft с разным содержимым.
1 пакет - ID 0x00
2 пакет - ID 0x03
3 пакет - ID 0x04
Как такое сделать? Ссылка на документацию - https://wiki.vg/index.php?title=Protocol&oldid=13367
Ответы (1 шт):
Автор решения: Silver
→ Ссылка
Вопрос поставлен странно. С помощью сокетов можно отправлять наборы байтов на целевой сервер. К примеру пакет с id=x00 будет отправлен таким образом:
from socket import socket
mySocket = socket()
mySocket.connect(("127.0.0.1",25565))
mySocket.send(bytes(b'\x10\x00\xf2\x05\t127.0.0.1#\x82\x02'))
Разбор 4 строчки(Если надо):
- \x10 - длинна следующего пакета в байтах (x10 = 16)
- \x00 - id пакета (0)
- \xf2\x05 - версия протокола (тут формать varint. Я значение с лету не скажу)
- \t - (python отображает этот байт как символ) длинна адреса целевого сервера (проверка на proxy)
- #\x82 - (python отображает первый байт как символ) порт Unsigned Short
- \x02 - сообщение о том, что вы хотите подключится к серверу
- [конец пакета]
В начале подключения ничего не шифруется и не сжимается до того, как сервер не отправит пакет id=x03 или id=x01