Some bytearrays were replaced with bytes.

This commit is contained in:
Anton Grigoryev 2015-03-17 20:26:22 +03:00
parent 32b99a298c
commit 262f0f5f2b
3 changed files with 7 additions and 11 deletions

View File

@ -27,8 +27,7 @@ def _ige(message, key, iv, operation="decrypt"):
key must be 32 byte key must be 32 byte
iv must be 32 byte (it's not internally used in AES 256 ECB, but it's iv must be 32 byte (it's not internally used in AES 256 ECB, but it's
needed for IGE)""" needed for IGE)"""
if not isinstance(message, str): message = bytes(message)
message = str(message)
if len(key) != 32: if len(key) != 32:
raise ValueError("key must be 32 bytes long (was " + raise ValueError("key must be 32 bytes long (was " +
str(len(key)) + " bytes)") str(len(key)) + " bytes)")
@ -46,7 +45,7 @@ def _ige(message, key, iv, operation="decrypt"):
ivp = iv[0:blocksize] ivp = iv[0:blocksize]
ivp2 = iv[blocksize:] ivp2 = iv[blocksize:]
ciphered = bytearray() ciphered = bytes()
for i in range(0, len(message), blocksize): for i in range(0, len(message), blocksize):
indata = message[i:i+blocksize] indata = message[i:i+blocksize]
@ -64,5 +63,5 @@ def _ige(message, key, iv, operation="decrypt"):
ivp2 = indata ivp2 = indata
else: else:
raise ValueError("operation must be either 'decrypt' or 'encrypt'") raise ValueError("operation must be either 'decrypt' or 'encrypt'")
ciphered.extend(outdata) ciphered += outdata
return ciphered return ciphered

View File

@ -79,7 +79,8 @@ class Session:
struct.pack('<II', self.number, len(message_data)) + struct.pack('<II', self.number, len(message_data)) +
message_data) message_data)
message_key = SHA.new(encrypted_data).digest()[-16:] message_key = SHA.new(encrypted_data).digest()[-16:]
padding = b"\x00" * (-len(encrypted_data) % 16) padding = os.urandom((-len(encrypted_data)) % 16)
print(len(encrypted_data+padding))
aes_key, aes_iv = self.aes_calculate(message_key) aes_key, aes_iv = self.aes_calculate(message_key)
message = (self.auth_key_id + message_key + message = (self.auth_key_id + message_key +
@ -131,7 +132,7 @@ class Session:
def method_call(self, method, **kwargs): def method_call(self, method, **kwargs):
z = io.BytesIO() z = io.BytesIO()
TL.serialize_method(z, method, **kwargs) TL.serialize_method(z, method, **kwargs)
z_val = bytearray(z.getvalue()) z_val = z.getvalue()
self.send_message(z_val) self.send_message(z_val)
server_answer = self.recv_message() server_answer = self.recv_message()
return TL.deserialize(io.BytesIO(server_answer)) return TL.deserialize(io.BytesIO(server_answer))

View File

@ -22,8 +22,4 @@ port = config.getint('App data', 'port')
Session = mtproto.Session(ip, port) Session = mtproto.Session(ip, port)
Session.create_auth_key() Session.create_auth_key()
i = 0 future_salts = Session.method_call('get_future_salts', num=3)
while True:
f = Session.method_call('ping', ping_id=i)
print(f)
i += 1