mirror of
				https://github.com/LonamiWebs/Telethon.git
				synced 2025-10-31 16:07:44 +03:00 
			
		
		
		
	Use signed salt
This commit is contained in:
		
							parent
							
								
									6662f49bcb
								
							
						
					
					
						commit
						d4d7aa9063
					
				|  | @ -155,7 +155,7 @@ class MtProtoSender: | ||||||
|         :param message: the TLMessage to be sent. |         :param message: the TLMessage to be sent. | ||||||
|         """ |         """ | ||||||
|         plain_text = \ |         plain_text = \ | ||||||
|             struct.pack('<QQ', self.session.salt, self.session.id) \ |             struct.pack('<qQ', self.session.salt, self.session.id) \ | ||||||
|             + bytes(message) |             + bytes(message) | ||||||
| 
 | 
 | ||||||
|         msg_key = utils.calc_msg_key(plain_text) |         msg_key = utils.calc_msg_key(plain_text) | ||||||
|  | @ -401,10 +401,7 @@ class MtProtoSender: | ||||||
|         bad_salt = reader.tgread_object() |         bad_salt = reader.tgread_object() | ||||||
|         assert isinstance(bad_salt, BadServerSalt) |         assert isinstance(bad_salt, BadServerSalt) | ||||||
| 
 | 
 | ||||||
|         # Our salt is unsigned, but the objects work with signed salts |         self.session.salt = bad_salt.new_server_salt | ||||||
|         self.session.salt = struct.unpack( |  | ||||||
|             '<Q', struct.pack('<q', bad_salt.new_server_salt) |  | ||||||
|         )[0] |  | ||||||
|         self.session.save() |         self.session.save() | ||||||
| 
 | 
 | ||||||
|         # "the bad_server_salt response is received with the |         # "the bad_server_salt response is received with the | ||||||
|  |  | ||||||
|  | @ -1,6 +1,7 @@ | ||||||
| import json | import json | ||||||
| import os | import os | ||||||
| import platform | import platform | ||||||
|  | import struct | ||||||
| import time | import time | ||||||
| from base64 import b64encode, b64decode | from base64 import b64encode, b64decode | ||||||
| from os.path import isfile as file_exists | from os.path import isfile as file_exists | ||||||
|  | @ -58,7 +59,7 @@ class Session: | ||||||
|         self._msg_id_lock = Lock() |         self._msg_id_lock = Lock() | ||||||
|         self._save_lock = Lock() |         self._save_lock = Lock() | ||||||
| 
 | 
 | ||||||
|         self.id = helpers.generate_random_long(signed=False) |         self.id = helpers.generate_random_long(signed=True) | ||||||
|         self._sequence = 0 |         self._sequence = 0 | ||||||
|         self.time_offset = 0 |         self.time_offset = 0 | ||||||
|         self._last_msg_id = 0  # Long |         self._last_msg_id = 0  # Long | ||||||
|  | @ -68,7 +69,7 @@ class Session: | ||||||
|         self.port = None |         self.port = None | ||||||
|         self.auth_key = None |         self.auth_key = None | ||||||
|         self.layer = 0 |         self.layer = 0 | ||||||
|         self.salt = 0  # Unsigned long |         self.salt = 0  # Signed long | ||||||
|         self.entities = EntityDatabase()  # Known and cached entities |         self.entities = EntityDatabase()  # Known and cached entities | ||||||
| 
 | 
 | ||||||
|     def save(self): |     def save(self): | ||||||
|  | @ -126,6 +127,10 @@ class Session: | ||||||
|                     data = json.load(file) |                     data = json.load(file) | ||||||
|                     result.port = data.get('port', result.port) |                     result.port = data.get('port', result.port) | ||||||
|                     result.salt = data.get('salt', result.salt) |                     result.salt = data.get('salt', result.salt) | ||||||
|  |                     # Keep while migrating from unsigned to signed salt | ||||||
|  |                     result.salt = struct.unpack( | ||||||
|  |                         'q', struct.pack('Q', result.salt))[0] | ||||||
|  | 
 | ||||||
|                     result.layer = data.get('layer', result.layer) |                     result.layer = data.get('layer', result.layer) | ||||||
|                     result.server_address = \ |                     result.server_address = \ | ||||||
|                         data.get('server_address', result.server_address) |                         data.get('server_address', result.server_address) | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue
	
	Block a user