Различия
Здесь показаны различия между двумя версиями данной страницы.
Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия Следующая версия Следующая версия справа и слева | ||
api_main [2021/10/19 08:19] phaust [Расшифровка] +Python |
api_main [2021/10/19 11:28] phaust [Пример] |
||
---|---|---|---|
Строка 28: | Строка 28: | ||
==== Пример ==== | ==== Пример ==== | ||
- | Например: !api:user_id,task_id! | + | Например: ''!api:user_id,task_id!'' |
- | Сгенерирует зашифрованную строку bc1443bbb42bafc0501bc821c2fb55a987fda029d4ea6657 которую можно расшифровать в {'u':15, 'tid:32432} с помощью ключа игры. | + | Сгенерирует зашифрованную строку ''0394334e96a2f0fa738470e9a9778c684ba214990d200eab'', которую можно расшифровать в <code> |
+ | {'u': 162862, 'tid': 42719} | ||
+ | </code> | ||
+ | с помощью ключа игры ''XgHxzCvUSXwPfR7wBvdY4xHC6tSFLewx''. | ||
[[https://qeng.org/game.php?jump_to&gid=3493&task_id=42719|Пример задания в игре]] | [[https://qeng.org/game.php?jump_to&gid=3493&task_id=42719|Пример задания в игре]] | ||
- | |||
==== Расшифровка ==== | ==== Расшифровка ==== | ||
Строка 66: | Строка 68: | ||
def decrypt_qeng_data( | def decrypt_qeng_data( | ||
data: str, | data: str, | ||
- | key: bytes, | + | key: str, |
) -> typing.Dict[str, typing.Union[str, int]]: | ) -> typing.Dict[str, typing.Union[str, int]]: | ||
data = binascii.unhexlify(data) | data = binascii.unhexlify(data) | ||
- | cipher = blowfish.Cipher(key) | + | cipher = blowfish.Cipher(key.encode()) |
data_decrypted = b"".join(cipher.decrypt_ecb(data)) | data_decrypted = b"".join(cipher.decrypt_ecb(data)) | ||
+ | data_decrypted = data_decrypted.rstrip(b'\x00') | ||
data_json = json.loads(data_decrypted) | data_json = json.loads(data_decrypted) | ||
return data_json | return data_json | ||
Строка 77: | Строка 80: | ||
def main(): | def main(): | ||
data = '0394334e96a2f0fa738470e9a9778c684ba214990d200eab' | data = '0394334e96a2f0fa738470e9a9778c684ba214990d200eab' | ||
- | # Обязательно ключ игры с b'' | + | key = 'XgHxzCvUSXwPfR7wBvdY4xHC6tSFLewx' |
- | key = b'XgHxzCvUSXwPfR7wBvdY4xHC6tSFLewx' | + | |
decrypted = decrypt_qeng_data(data, key) | decrypted = decrypt_qeng_data(data, key) | ||
print(decrypted) | print(decrypted) |