Telegram Web K with changes to work inside I2P https://web.telegram.i2p/
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

100 lines
3.5 KiB

from telethon import TelegramClient, events, sync
from telethon.network import ConnectionTcpAbridged
from telethon.network.mtprotostate import MTProtoState
from telethon.crypto.authkey import AuthKey
from telethon.network.connection.tcpobfuscated import ConnectionTcpObfuscated
from telethon.network.connection.tcpintermediate import IntermediatePacketCodec
import struct
import logging
logging.basicConfig(level=logging.DEBUG)
# import sys
# print(sys.path)
# These example values won't work. You must get your own api_id and
# api_hash from https://my.telegram.org, under API Development.
api_id = 1025907
api_hash = '452b0359b988148995f22ff0f4229750'
client = TelegramClient('session_name', api_id, api_hash, connection=ConnectionTcpAbridged)
#client.start()
#client.connect()
authKey = AuthKey(bytes.fromhex("2c45ed62da34d41bc82b6ef660760d3b01cb80028b0c363633f1c40ec80d5f4ad9d4ddee646736b6a9465fd7258b8936dedde6a86c69b4a03277ed6c543ccfd31fa8fa9f9449d686b4822b54542c91255231ecfa6aed4a9896cdcc3d5491e7f1b7529cbff75597f262813ced7eb3b5ac1e7e6794ca7aa00c5ea4d1d714e7c276fb63e5f8a1742cf4707eace8a6ec2ed4dcceceabdc7fc92bd099c811931e0da337f1b0271d8ba33e7a4a22fa1e4a913d8220edb0dd3a810ed408f03fe5d7f2d5dd43db4272d314b20a22376c03b0a05423600f4d012e7196ce9b3c45b28a75dbfa053222f5c86d1c6a706a2fd68ca270fd9a6449df1fa15a21837d34f4cf4e95"))
state = MTProtoState(authKey, loggers=client._log)
state.salt = struct.unpack('q', bytes.fromhex("d1b37eebb4997ca9"))[0]
state.id = struct.unpack('q', bytes.fromhex("502368ee46d39313"))[0]
#print(state.id)
""" with open('file_part.txt', 'r') as file:
data = file.read()
messageData = bytes.fromhex(data)
#messageData = bytes.fromhex("146f8265b5342560290000000c000000ec77be7aaa40f90300000000")
#print(data)
encrypted = state.encrypt_message_data(messageData)
file.close()
with open('file_part_encrypted.txt', 'w') as file:
file.write(encrypted.hex())
file.close()
#print(encrypted) """
ConnectionTcpObfuscated.packet_codec = IntermediatePacketCodec
connection = ConnectionTcpObfuscated("", "", 2, loggers=client._log)
obfuscatedIo = connection.obfuscated_io(connection)
#print(encrypted)
#exit()
#encoded = connection.packet_codec.encode_packet(connection.packet_codec, bytes.fromhex("deadbeef"))
#print(encoded)
#exit()
name = "debugPayloads"
#name = "debugRequests"
with open(name + '_before.txt', 'r') as fileBefore:
data = fileBefore.read()
lines = data.splitlines()
with open(name + '_after.txt', 'r') as fileAfter:
data = fileAfter.read()
linesAfter = data.splitlines()
length = len(lines)
for i in range(length):
print("processing line %i, of %i", i, length)
lineBefore = lines[i]
lineAfter = linesAfter[i]
messageData = bytes.fromhex(lineBefore)
messageData = connection.packet_codec.encode_packet(connection.packet_codec, messageData)
encrypted = obfuscatedIo._encrypt.encrypt(messageData)
#encrypted = state.encrypt_message_data(messageData) # need to comment padding inside
#print(encrypted.hex())
#print(len(encrypted.hex()))
#print(len(lineAfter))
#print(encrypted.hex() == lineAfter)
#break
if encrypted.hex() != lineAfter:
print("lol")
with open('difference_before.txt', 'w') as file:
file.write(lineAfter)
file.close()
with open('difference_after.txt', 'w') as file:
file.write(encrypted.hex())
file.close()
#print(encrypted.hex())
#print(lineAfter)
exit()