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()