Зато, тут недавно, вечерок убил на Starcraft 2.
Наткнулся на объяву близов что можно уже скачать релиз. Нашел где скачать релиз без регов у близов. Прочитал в коментах что все хотят кряк, а тот кто первый крякнет будет известен сильнее чем Бритни Спирс.
Сначала искал кряк, выяснилось что есть человек который пантуется что он хакнул уже, но со своими отмазками "13 лет ждали, подождёте и ещё недельку" - смахивает на фэйк.
СТОП. сначала в чём фишка: в том что начинаешь установку релиза SC2 и с тебя сразу просят ключ дешифрования. Все 7 гб данных установщика им зашифрованы. Были умники которые отрубали просто запрос ключа, и немогли всёравно установить, т.к. всёравно раз всё им зашифровано, то надо его знать.
И вот, чел который "типо хакнул" выкладывал скрин установки... его сразу опустили т.к. написали как сделать такойже скрин, а больше он так ничего и не показал.
Я Just For Fun (тупо ради веселья) решил поковырять установщик. Сначала нашел где происходит проверка на правильность ключа. Потом подумал, если сразу туда встроить брут, то будет далеко не быстро + подумал может шифрование возможно реверснуть. И, вообще, подумал, если брутать, то надо максимально быстро. То есть, выдернуть саму проверку на правильность и по максимуму обрезать.
Копался копался, нашел где проверка, нашел куда дешифруется. Алгоритм таков: читаем первые $1000 байтов, затем ужасным алгоритмом они переколбасиваются и получается дешифрованный кусок (не знаю какой длины, но это уже не важно) и смотрю: сразу проверяются первые 4 байта чтобы были MPQ и байт $1B, откуда сразу вывод, что MPQE это просто MPQ, которая зашифрована каким-то шифром. Немного покапавшись, узнал что алгоритм этот slasa20 т.к. проскальзывала в установщике строчка "expand 32-byte k" (методом гугла). Почитал вики, и узнал что атаки на этот шифр ужастно долгие. Вполне возможно там не slasa20 а модификация, т.к. близы просят ключ 32 символа, и каждый символ максимум 32 варьянта (не все символы даёт ввести).
Отсюда варьянтов ключей 32^32=2^(5*32)=2^(160). Зная что 2^10=1024 что приблизительно 10^3 то получается 2^160=2^(10*16)=(1024)^16 примерно 10^(3*16)=10^48) то есть единичка и 48 нулей. перебрать столько - тяжко. Если считать что пароль проверяется очень быстро тогда 10^6 за секунду происходит проверок, и тогда нужно 10^8 секунд что примерно 1157 дней
.
Если где ошибся - поправьте
. Я конечно придумал чуток оптимизировать SC2 проверку правильности, и вогнать брут внутрь, но не стал, когда вычисления этого рода произвёл, хотя была идея проверить сколько ключей успевает за секунду пробрутать - но так и не занялся, вот такие дела.
И вообще всё это бессмысленно, т.к. 27 числа всёравно этот ключ всем раздадут, и можно будет устанавливать. А хакать надо не установщик, а саму игру
.
Вечерок удался
. Делал я это дня три назад, или чуть больше.