api_main

Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
api_main [2021/10/19 05:31]
phaust [Расшифровка] +код
api_main [2021/10/19 13:05]
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|Пример задания в игре]]
- 
 ==== Расшифровка ==== ==== Расшифровка ====
  
 Пример расшифровки на PHP: Пример расшифровки на PHP:
-<​code ​PHO+<​code ​PHP
-json_decode(trim(openssl_decrypt(hex2bin($data),​ '​BF-ECB',​ $key, OPENSSL_RAW_DATA | OPENSSL_NO_PADDING)),​ true);+$data='​0394334e96a2f0fa738470e9a9778c684ba214990d200eab';​ 
 +$key='​XgHxzCvUSXwPfR7wBvdY4xHC6tSFLewx';​ 
 +$decoded = json_decode( 
 +  ​trim( 
 +    ​openssl_decrypt( 
 +      ​hex2bin($data),​ 
 +      ​'​BF-ECB',​ 
 +      ​$key, 
 +      ​OPENSSL_RAW_DATA | OPENSSL_NO_PADDING 
 +    ​) 
 +  ​), 
 +  ​true 
 +); 
 +// Расшифровуется в {'​u':​ 162862, '​tid':​ 42719} 
 +</​code>​ 
 + 
 +Пример расшифровки на Python: 
 +<code Python>​ 
 +import binascii 
 +import json 
 +import typing 
 + 
 +# Чтобы установить blowfish, выполните `pip install blowfish` в cmd 
 +import blowfish 
 + 
 + 
 +def decrypt_qeng_data( 
 +    data: str, 
 +    key: str, 
 +) -> typing.Dict[str,​ typing.Union[str,​ int]]: 
 +    data = binascii.unhexlify(data) 
 +    cipher = blowfish.Cipher(key.encode()) 
 +    data_decrypted = b""​.join(cipher.decrypt_ecb(data)) 
 +    data_decrypted = data_decrypted.rstrip(b'​\x00'​) 
 +    data_json = json.loads(data_decrypted) 
 +    return data_json 
 + 
 + 
 +def main(): 
 +    data = '​0394334e96a2f0fa738470e9a9778c684ba214990d200eab'​ 
 +    key = '​XgHxzCvUSXwPfR7wBvdY4xHC6tSFLewx'​ 
 +     
 +    decrypted = decrypt_qeng_data(data,​ key) 
 +    print(decrypted) 
 +    # Выводит {'​u':​ 162862, '​tid':​ 42719} 
 +    return None 
 + 
 + 
 +if __name__ == '​__main__':​ 
 +    main()
 </​code>​ </​code>​