ScorpioT1000
Работаем
offline
Опыт: отключен
|
[galaxy] ScEncrypt v0.01
Библиотека шифрования на основе xor-алгоритма с закрытым ключом готова :)
((кат old text
Зачем это нужно?Насколько мне известно, данные банков без подписи в Starcraft II не шифруются и доступны для изменения. Единственный выход - шифровка данных, наподобие save/load системы: xgm.ru/p/wc3/creating_loading_code
Отдельная благодарность NETRAT'у за помощь с алгоритмами. Кроме этого, есть ещё очень много применений ScEncrypt, даже для той же генерации сейвлоад (загрузочных) кодов, да для чего угодно, где нужно "запаролить данные и засунуть их в строку", включая обратную операцию. Как это использовать?Сначала вам нужно каким-либо образом сделать так, чтобы код библиотеки ScEncryptLibrary оказался внутри кода карты. Например, так: xgm.ru/forum/showthread.php?t=35589 (т.е. просто копируем его в свободную область)
Библиотека содержит три пользовательские функции:
Последнюю надо запустить из триггера инициализации карты.
Первая функция – scEncryptString(string source, string key) – принимает:
Функция возвращает код из символов алфавита scEncryptAlphabet, который уже можно будет заталкивать в банк или показывать пользователю на запись (открытый ключ). Код этот в (4/3)+3 раза больше входных данных, т.к. алфавит ascii больше алфавита кода :)
Вторая функция – scDecryptString(string coded, string key) – принимает:
Функция возвращает ваши расшифрованные данные.
При ошибках ввода, вывода, переполнениях и т.п. вызывается функция scassert (в подбиблиотеке ScDebug) и устанавливается флаг scisassert на значение 1, а в scassertnotes записана причина ассерта.
Далее вы уже можете проверять, какой игрок сфейлил свой код, т.е. по очереди для игроков вызывать шифрование/дешифрование и после ввода проверять флаг, затем устанавливать на 0 для следующего игрока. Ограничения
Исходный кодСмотреть "User Functions" внизу.
ScEncryptLibrary:
А что если взломают?Особенность системы xor-шифрования в разделении исходных данных на конечный код и секретный ключ. Получаются "две половинки", по которым можно восстановить данные. Если взломщик не будет иметь ключ, то восстановить данные этой системой будет трудно даже полностью зная весь её алгоритм.
Для большей надёжности я бы посоветовал следующее:
English Description((кат ScEncrypt in english
Introduction
As far as I know, the data of Starcraft II banks isn't encrypted, therefore they are accessible for modifying. The only solution is to encrypt data like save/load systems. Special thanks to NETRAT for helping with algorithms.
How to use it? First include the ScEncryptLibrary source to the map code. For example, so xgm.ru/forum/attachment.php?attachmentid=65696
The library contains three user functions:
==== Encrypt portion of data:
string scEncryptString(string source, string key) ==== Decrypt portion of data:
string scDecryptString(string coded, string key) ==== On Initialize event:
bool scEncryptInit() The last one should be launched from the initialization trigger.
The first function – scEncryptString(string source, string key) – takes:
the source string. It can be any string, where it is possible to write down any levels, resources, stats and other parameters of your game which should be encrypted. It's important to ensure, that your algorithm is properly serializing data and also getting it back in reverse order.
the secret key. There are some complexities. We'd simply used <user name> + <any data> to make the unique key in WC3, but there's no such possibility in SC2. I think that you should offer the player to "log in" in your map, i.e. enter his permanent password. After that we somehow transform our virtual password (say, we still have a "name of the current game") and generate the secret key, which is used later do data decryption. Function returns the code from scEncryptAlphabet characters which can be pushed in bank or shown to the user (public key). Remember, the O 'ou' and 0 'zero' characters in SC2 font are absolutely identical.
The second function – scDecryptString(string source, string key) – takes:
the coded string. It is the code returned by scEncryptString, named public key.
the secret key, described above. Function returns your decrypted data.
Function scassert is called on I/O errors, overflows, etc., where scisassert == 1 and scassertnotes == reason
Restrictions source size: from (scEncryptMinDataSize =4) to (scEncryptMaxDataSize=4096)
key size: from 2 to (scEncryptMaxDataSize=4096) input data can be written only in ASCII single-threading Note: it's not recommended to use some identical symbols successively, it reduces privacy of the key
Give me some examples! Examples and source files are in the attachment.
)) )) Отредактировано ScorpioT1000, 15.03.2012 в 20:37. |
04.12.2010, 03:32 | #1
+3/−1
Профиль |
Приват |
Поиск |
IP: Записан
|
Ark
offline
Опыт:
21,182Активность: |
круто) но до кромарти не дотягивает =).
|
04.12.2010, 03:38 | #2
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
ScorpioT1000
Работаем
offline
Опыт: отключен
|
Обновил идею секретного ключа:
|
04.12.2010, 13:35 | #3
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
DioD
offline
Опыт:
45,184Активность: |
хочу отметить что офцально объявлено о том, что цифровая подпись банка будет доступна в 120 версии на уровне нативок.
уже сейчас северная америка может логинится на публик тест риалм, остальные по традиции сосут леденцы. |
04.12.2010, 15:32 | #4
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
ScorpioT1000
Работаем
offline
Опыт: отключен
|
пруф или звездолёт ) |
04.12.2010, 15:59 | #5
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
DioD
offline
Опыт:
45,184Активность: |
|
04.12.2010, 16:03 | #6
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
ScorpioT1000
Работаем
offline
Опыт: отключен
|
ок, правда так как-то смутно всё, да и юзер же сможет изменить её, не так ли?) |
04.12.2010, 16:14 | #7
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
DioD
offline
Опыт:
45,184Активность: |
если изменить фаил банка то цифровая подпись отваливается, только хз как это будет реализовано, так как у всех должна быть возможность писать в банк и проверять целостность банка, возможно сам сервер батлы будет проверять целостность банков или банки будут храниться где-то в другом месте. |
04.12.2010, 16:36 | #8
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
Toadcop
offline
Опыт:
53,013Активность: |
на сервере баттлы банки от пива должны хранится m-| чё непонятного то... (вообще не понятно поему изначяльно не так.) на аккаунт вешаются банки и всё...
|
04.12.2010, 17:04 | #9
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
ScorpioT1000
Работаем
offline
Опыт: отключен
|
вобще неясно тогда зачем они локалдату делали :) типа кеша из вар3 ? |
04.12.2010, 17:13 | #10
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
Toadcop
offline
Опыт:
53,013Активность: |
это то норм для сингла а вот для мульта надо на баттле хранить вестимо (учитывая что ихния хрень хостит игры) короче клиника. у них было не мало "неправильных решений" это одно из них офк. через года 3 думаю ск2 будет играбельный сейчас пока всё "бета"... (да я тоадкэп -.-)
|
04.12.2010, 17:29 | #11
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
ScorpioT1000
Работаем
offline
Опыт: отключен
|
|
04.12.2010, 18:01 | #12
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
DioD
offline
Опыт:
45,184Активность: |
у буржуев подобная тема была кстати, они дефлейт алгоритм от зип архивов реализовали. |
04.12.2010, 18:05 | #13
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
ScorpioT1000
Работаем
offline
Опыт: отключен
|
ты так говоришь - буржуи, будто есть только "россия" и "буржуи" ) явно там не целым стадом они собрались и разработали) |
04.12.2010, 18:08 | #14
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
KorvinGump
offline
Опыт:
3,634Активность: |
Хочу сказать спасибо за либу. Использовал её в своей последней карте Grass TD в связке с UserTypes. Получилось очень даже неплохо. Все остальные либы по шифрованию у меня работали с багами. Не знаю с чем это было связано, либо ошибки в либах, либо шифровал неправильно, но разбираться в исходном коде по шифрованию - это убийство кучи времени. Твоя либа, даже спустя 3.5 года после релиза до сих пор работает отлично. Респект за это:). |
23.03.2014, 21:23 | #15
+4/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
ScorpioT1000
Работаем
offline
Опыт: отключен
|
^_^ хоть кому-то пригодилась) |
25.03.2014, 22:02 | #16
+2/−0
Профиль |
Приват |
Поиск |
IP: Записан
|