Сейчас на форуме: bartolomeo (+6 невидимых)

 eXeL@B —› Программирование —› Помогите разобраться с алгоритмом проверки ключа
Посл.ответ Сообщение

Ранг: 1.0 (гость)
Активность: 0=0
Статус: Участник

Создано: 04 февраля 2011 20:40
· Личное сообщение · #1

Есть вот такое флешовое чудо: maani.us/slickboard/
Я его использовал для отображения презентации, но незадача - незарегистрированное оно показывает только 10 слайдов. Декомпилировав swf моему взору открылась функция проверки рег-кода:

public static function StrRotate(arg1:String):String
{
return arg1.substr((arg1.length - 1)) + arg1.substr(0, (arg1.length - 1));
}

public static function Reg(arg1:String):void
{
var loc1:*=undefined;
var loc2:*=0;
gLiCode = arg1;
arg1 = Char.ReplaceSubstring(arg1, " ", "");
arg1 = Char.ReplaceSubstring(arg1, "\r", "");
if (arg1.length < 30)
{
gLi = false;
}
else
{
loc1 = 0;
loc2 = 1;
while (loc2 < arg1.length)
{
loc1 = loc1 + arg1.charCodeAt(loc2);
++loc2;
}
if (arg1.charCodeAt(0) - 70 + loc1 % 10 == 6)
{
arg1 = arg1.substr(1);
aX = "FA-K5BCLJ8S6WY9ZT3RE1G2XH.IOQPD4V0N7MU";
aY = arg1;
arg1 = "";
loc2 = 0;
while (loc2 < aY.length)
{
aX = StrRotate(aX);
loc1 = aX.indexOf(aY.charAt(loc2));
if (loc1 < 26)
{
arg1 = arg1 + String.fromCharCode(loc1 + 65);
}
else if (loc1 < 36)
{
arg1 = arg1 + String.fromCharCode(loc1 + 48 - 26);
}
else
{
arg1 = arg1 + String.fromCharCode(loc1 + 45 - 36);
}
++loc2;
}
arg1 = arg1.substr(2, Number("0x" + arg1.substr(0, 2))).toLowerCase();
if (arg1.substr(arg1.length - 5) != "bulk")
{
gLi = true;
if (!(gDomain == "localhost") && gDomain.indexOf(".local") == -1 && gDomain.indexOf("127.0.0.1") == -1)
{
if (gDomain.indexOf(arg1) == -1 || arg1.length < 2)
{
gLi = false;
}
}
}
else
{
gLi = true;
}
}
else
{
gLi = false;
}
}
return;
}

Т.к. у меня нету флеша - переписал код на php (скрипт во вложении). Проверил - работает, сверяет правильно, но вот с "переворачиванием" алгоритма (для генерации верного ключа) у меня ничего не получается. Пример рег-кода брал с сайта этой штуковины, он такой "I.V8N0LAP6JO.2RYLFDG6FIYU2CO8B" - передается через flashvars. Понял что первый символ это контрольная сумма всего остального в строке. А все остальное это ни что иное как имя домена - на котором флешка будет работать без ограничений.

Мой мозг ни как не хочет понимать как решить положенную задачку. Помогите, пожалуйста.

940c_04.02.2011_CRACKLAB.rU.tgz - reg.php



Ранг: 18.9 (новичок), 15thx
Активность: 0.010
Статус: Участник

Создано: 04 февраля 2011 21:36
· Личное сообщение · #2

если нужно просто убрать ограничения, то
может просто написать
Code:
  1. public static function Reg(arg1:String):void
  2. {
  3. gLi = true;
  4. return;
  5. }




Ранг: 1.0 (гость)
Активность: 0=0
Статус: Участник

Создано: 04 февраля 2011 21:52
· Личное сообщение · #3

Декомпилятор Flash отказался конвертировать этот swf в исходник. Точнее он сдампил всякую ересь типа шэйпов и пр. а вот на дампе ActionScript заткнулся. А так - предложенный вариант конечно проще.

Просто я думаю вряд ли создатель этой флешки ломал мозг и придумывал свой уникальный алгоритм шифрования. Вполне возможно кто-то увидит в приведенном примере стандартный способ шифрования имени "Какого-то дядьки", о котором рассказывают в институте.


 eXeL@B —› Программирование —› Помогите разобраться с алгоритмом проверки ключа
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати