# -*- coding: utf-8 -*- import mtproto import os, io import prime import configparser from Crypto.Hash import SHA from Crypto.PublicKey import RSA config = configparser.ConfigParser() config.read('credentials') ip = config['App data']['ip_address'] port = config['App data'].getint('port') Session = mtproto.Session(ip, port) client_nonce = os.urandom(16) x = Session.method_call('req_pq', nonce=client_nonce) server_nonce = x['server_nonce'] public_key_fingerprint = x['server_public_key_fingerprints'][0] PQ_bytes = x['pq'] PQ = int.from_bytes(PQ_bytes, 'big') [p, q] = prime.primefactors(PQ) if p > q: (p, q) = (q, p) # swap values in way p