0

我正在尝试遵循 Telegram 的授权示例,但没有得到服务器的任何响应:

msg = """

0000 | 00 00 00 00 00 00 00 00 4A 96 70 27 C4 7A E5 51
0010 | 14 00 00 00 78 97 46 60 3E 05 49 82 8C CA 27 E9
0020 | 66 B3 01 A4 8F EC E2 FC

"""

import re
msg = re.sub('\d{4} \| ', '', msg)
msg = re.sub('\s+', '', msg)
msg = bytes.fromhex(msg)

import socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(('149.154.167.40', 443))
s.send(msg)
print(s.recv(1024))  # prints: b''
s.close()

为什么?

4

1 回答 1

0

是的,@habnabit,缺少的是 TCP 标头。我认为它们是由 Python 处理的,因为我在其他客户端中没有看到那部分。在 Telethon 中找到它,感谢您的提示。

import struct
import zlib
msg = struct.pack('<ii', len(msg) + 12, counter) + msg
msg += struct.pack('<I', zlib.crc32(msg))
于 2017-10-24T18:37:54.340 回答