Шифрование (GTA 4) — различия между версиями
Материал из GTAModding.ru
Dageron (обсуждение | вклад) |
Dageron (обсуждение | вклад) |
||
(не показаны 3 промежуточные версии 1 участника) | |||
Строка 1: | Строка 1: | ||
− | == | + | === Алгоритм шифрования === |
− | + | Алгоритм шифрования, использованный для <code>[[RPF|*.rpf]]</code>, <code>[[IMG|*.img]]</code> и <code>[[SCO|*.sco]]</code> файлов называется [[Wikipedia:Advanced Encryption Standard|Advanced Encryption Standard]] (AES). Ключ шифрования одинаков для всех игровых версий GTA IV/EFLC, включая Xbox360. Этот же алгоритм (однако, с другими ключами) используется на многих играх от Rockstar. | |
+ | |||
+ | Характеристика алгоритма шифрования: | ||
− | |||
* Размер блока: 128 бит (16 байт) | * Размер блока: 128 бит (16 байт) | ||
* Размер ключа: 256 бит (32 байта) | * Размер ключа: 256 бит (32 байта) | ||
Строка 9: | Строка 10: | ||
* Повторяется: 16 раз | * Повторяется: 16 раз | ||
− | + | Вся зашифрованная информация может быть разбита на блоки по 16 байт и расшифрована отдельно. Расшифровка происходит с использованием 128 битного ключа 16 раз на каждом блоке данных. Если последний блок меньше 16 байт, он остается не зашифрованным. | |
− | ==== Ключ ==== | + | ==== Ключ шифрования ==== |
− | 256 - битный ключ, обязательный для шифровки и дешифровки может быть получен из <code>.exe</code> файла со следующих оффсетов: | + | 256-битный ключ, обязательный для шифровки и дешифровки может быть получен из <code>.exe</code> файла со следующих оффсетов: |
{| {{Таблица}} | {| {{Таблица}} | ||
Строка 19: | Строка 20: | ||
!Оффсет | !Оффсет | ||
|- | |- | ||
− | | | + | |GTA IV XENON (Xbox360) || 0x00A80F40 |
|- | |- | ||
− | |1.0. | + | |GTA IV 1.0.0.0 US || 0x00A94204 |
|- | |- | ||
− | |1.0. | + | |GTA IV 1.0.1.0 US || 0x00B607C4 |
|- | |- | ||
− | |1.0. | + | |GTA IV 1.0.2.0 US || 0x00B56BC4 |
|- | |- | ||
− | |1.0. | + | |GTA IV 1.0.3.0 US || 0x00B75C9C |
|- | |- | ||
− | |1.0. | + | |GTA IV 1.0.4.0 US || 0x00B7AEF4 |
|- | |- | ||
− | |1.0. | + | |GTA IV 1.0.1.2 JAP || 0x00B8813C |
|- | |- | ||
− | |1.0. | + | |GTA IV 1.0.2.2 JAP || 0x00B8C38C |
|- | |- | ||
− | |1.0. | + | |GTA IV 1.0.0.1 RUS || 0x00B5B65C |
|- | |- | ||
− | |1.0. | + | |GTA IV 1.0.1.1 RUS || 0x00B569F4 |
|- | |- | ||
− | |1.0. | + | |GTA IV 1.0.2.1 RUS || 0x00B76CB4 |
|- | |- | ||
− | |1.0. | + | |GTA IV 1.0.3.1 RUS || 0x00B7AEFC |
|- | |- | ||
− | | | + | |GTA IV 1.0.0.4 International ||0x00BE1370 |
+ | |- | ||
+ | |GTA IV 1.0.5.1 RUS ||0x00BE6518 | ||
+ | |- | ||
+ | |GTA IV 1.0.5.2 JAP || | ||
+ | |- | ||
+ | |GTA IV 1.0.6.0 US ||0x00BE6540 | ||
+ | |- | ||
+ | |GTA IV 1.0.7.0 US ||0x00BE6510 | ||
+ | |- | ||
+ | |GTA IV 1.0.6.1 RUS || | ||
+ | |- | ||
+ | |GTA IV 1.0.6.2 JAP || | ||
+ | |- | ||
+ | |EFLC 1.1.0.0 US || 0x00BEF028 | ||
+ | |- | ||
+ | |EFLC 1.1.0.1 RUS || 0x00BEF040 | ||
+ | |- | ||
+ | |EFLC 1.1.1.0 International || 0x00C705E0 | ||
+ | |- | ||
+ | |EFLC 1.1.2.0 International || 0x00C6DEEC | ||
|} | |} | ||
− | + | В Xbox360-версии ключ можно извлечь из <code>gtaiv_360.exe</code>, находящемся в <code>default.xex</code>. | |
− | Вы можете использовать '''SHA1 хеш''' для проверки правильности ключа: | + | Вы можете использовать '''SHA1 хеш''' для проверки правильности ключа: <code>DE A3 75 EF 1E 6E F2 22 3A 12 21 C2 C5 75 C4 7B F1 7E FA 5E</code> ''(Примечание: это не ключ шифрования!)'' |
− | + | ||
− | + | ||
− | Игра может читать как шифрованные, так и не шифрованные архивы. | + | Не рекомендуется публиковать где-либо сам ключ, либо включать его в программу, поскольку публикация ключа попадает под нарушение авторских прав. |
+ | |||
+ | Игра может читать как шифрованные, так и не шифрованные архивы. [[SparkIV]] оставляет измененные игровые архивы не шифрованными, [[OpenIV]] - шифрованными. | ||
==== Примеры ==== | ==== Примеры ==== | ||
− | + | Программно расшифровка архивов может быть реализована через '''AesLib''': | |
− | + | ||
− | + | ||
− | ''' | + | |
<source lang="c">AES_set_decrypt_key(key, 256, context); | <source lang="c">AES_set_decrypt_key(key, 256, context); | ||
− | |||
for (int i = 0; i < (int) (data_size/16); i++) { | for (int i = 0; i < (int) (data_size/16); i++) { | ||
void *p = (void *) (data_offset + i*16); | void *p = (void *) (data_offset + i*16); | ||
Строка 66: | Строка 83: | ||
AES_decrypt_block(p, p, context); | AES_decrypt_block(p, p, context); | ||
}</source> | }</source> | ||
− | + | <source lang="delphi">AES_set_decrypt_key(@CAesKey[0], 256, context); | |
− | + | for i := 0 to data_size div 16 - 1 do begin | |
− | + | Cardinal(p) := Cardinal(Data) + i*16; | |
− | <source lang="delphi"> | + | for j := 1 to 16 do // Повторяется 16 раз |
− | + | aes_decrypt_block(p^, p^, context); | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
end; | end; | ||
− | + | </source> | |
− | + | ||
== Ссылки == | == Ссылки == |
Текущая версия на 13:54, 20 июня 2010
Содержание |
Алгоритм шифрования
Алгоритм шифрования, использованный для *.rpf
, *.img
и *.sco
файлов называется Advanced Encryption Standard (AES). Ключ шифрования одинаков для всех игровых версий GTA IV/EFLC, включая Xbox360. Этот же алгоритм (однако, с другими ключами) используется на многих играх от Rockstar.
Характеристика алгоритма шифрования:
- Размер блока: 128 бит (16 байт)
- Размер ключа: 256 бит (32 байта)
- Режим: electronic code book (ECB)
- Повторяется: 16 раз
Вся зашифрованная информация может быть разбита на блоки по 16 байт и расшифрована отдельно. Расшифровка происходит с использованием 128 битного ключа 16 раз на каждом блоке данных. Если последний блок меньше 16 байт, он остается не зашифрованным.
Ключ шифрования
256-битный ключ, обязательный для шифровки и дешифровки может быть получен из .exe
файла со следующих оффсетов:
Версия игры | Оффсет |
---|---|
GTA IV XENON (Xbox360) | 0x00A80F40 |
GTA IV 1.0.0.0 US | 0x00A94204 |
GTA IV 1.0.1.0 US | 0x00B607C4 |
GTA IV 1.0.2.0 US | 0x00B56BC4 |
GTA IV 1.0.3.0 US | 0x00B75C9C |
GTA IV 1.0.4.0 US | 0x00B7AEF4 |
GTA IV 1.0.1.2 JAP | 0x00B8813C |
GTA IV 1.0.2.2 JAP | 0x00B8C38C |
GTA IV 1.0.0.1 RUS | 0x00B5B65C |
GTA IV 1.0.1.1 RUS | 0x00B569F4 |
GTA IV 1.0.2.1 RUS | 0x00B76CB4 |
GTA IV 1.0.3.1 RUS | 0x00B7AEFC |
GTA IV 1.0.0.4 International | 0x00BE1370 |
GTA IV 1.0.5.1 RUS | 0x00BE6518 |
GTA IV 1.0.5.2 JAP | |
GTA IV 1.0.6.0 US | 0x00BE6540 |
GTA IV 1.0.7.0 US | 0x00BE6510 |
GTA IV 1.0.6.1 RUS | |
GTA IV 1.0.6.2 JAP | |
EFLC 1.1.0.0 US | 0x00BEF028 |
EFLC 1.1.0.1 RUS | 0x00BEF040 |
EFLC 1.1.1.0 International | 0x00C705E0 |
EFLC 1.1.2.0 International | 0x00C6DEEC |
В Xbox360-версии ключ можно извлечь из gtaiv_360.exe
, находящемся в default.xex
.
Вы можете использовать SHA1 хеш для проверки правильности ключа: DE A3 75 EF 1E 6E F2 22 3A 12 21 C2 C5 75 C4 7B F1 7E FA 5E
(Примечание: это не ключ шифрования!)
Не рекомендуется публиковать где-либо сам ключ, либо включать его в программу, поскольку публикация ключа попадает под нарушение авторских прав.
Игра может читать как шифрованные, так и не шифрованные архивы. SparkIV оставляет измененные игровые архивы не шифрованными, OpenIV - шифрованными.
Примеры
Программно расшифровка архивов может быть реализована через AesLib:
AES_set_decrypt_key(key, 256, context); for (int i = 0; i < (int) (data_size/16); i++) { void *p = (void *) (data_offset + i*16); for (int j = 1; j <= 16; j++) // Повторяется 16 раз AES_decrypt_block(p, p, context); }
AES_set_decrypt_key(@CAesKey[0], 256, context); for i := 0 to data_size div 16 - 1 do begin Cardinal(p) := Cardinal(Data) + i*16; for j := 1 to 16 do // Повторяется 16 раз aes_decrypt_block(p^, p^, context); end;
Ссылки
- Расшифровка в SparkIV
- AES Encryption на Википедии.
Форматы файлов | .dat • .gxt • .ide • .img • .ipl • .nod • .sco • .rpf • .rrr • .wdd • .wdr • .wft • .wbd/wbn • .whm • .wad • .wnv • .wpl • .wtd |
Документация | Handling.dat • gta.dat • Оружие • Катсцены • Пути • Скриптовые функции • Шифрование • Формат CFG файла настроек Скриптинг в GTA 4 |
Инструменты | APE IV • ASI Loader • IV Needle • GIMS • OpenIV • PathViewer • SparkIV • XLiveLess • RaCon |
Скриптовые программы | Alice • C++ Script Hook • Scocl • .NET Script Hook • Delphi Hook |
Туториалы | Импортирование текстур с помощью OpenIV • Импортирование текстур с помощью SparkIV |
Модификации | GTA Vice City Rage • IV:SA • Gostown Paradise IV |