Some bytearrays were replaced with bytes.
This commit is contained in:
parent
32b99a298c
commit
262f0f5f2b
7
crypt.py
7
crypt.py
|
@ -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
|
|
@ -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))
|
||||||
|
|
|
@ -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
|
|
Loading…
Reference in New Issue
Block a user