eXeL@B —› Вопросы новичков —› Анализ алгоритма создания регистрационного ключа |
Посл.ответ | Сообщение |
|
Создано: 21 мая 2019 13:14 · Поправил: rummy · Личное сообщение · #1 Коллеги, доброго времени суток! В качестве личного самообразования пытался реализовать алгоритм создания лицензионного ключа к надстройке Excel Вот код проверки соответствия ключа контрольному числу: Code:
Замена знаков равенства на "неравно" легко решает проблему регистрации, но хотелось бы понять, как изготовить правильный ключ. Заранее спасибо за подсказки! Всем добра! |
|
Создано: 21 мая 2019 13:53 · Личное сообщение · #2 For i = 2 To 8 Total = Total + Asc(Mid(k, i, 1)) * i 'контрольное число' Next i "abxdefghk" <- k 1: a // Left(k, 1) 2: b * 2 + // Mid(Total, 1, 1) ? 3: x * 3 + 4: d * 4 + // Mid(Total, 3, 1) 5: e * 5 + // Mid(Total, 4, 1) 6: f * 6 + 7: g * 7 + 8: h * 8 9: k // Right(k, 1) == Total Left(k, 1) = Mid(Total, 3, 1) And Right(k, 1) = Mid(Total, 4, 1) a == b*2 + x*3 + d*4 // Left(k, 1) == Mid(Total, 3, 1) k == b*2 + x*3 + d*4 + e*5 // Right(k, 1) == Mid(Total, 4, 1) Что такое Asc() и склеивают ли + стринги тоже не знаю |
|
Создано: 21 мая 2019 13:53 · Поправил: f13nd · Личное сообщение · #3 Если я правильно все понял, у тебя проверяется 3й байт с 'x', первый символ ключа - с 3м символом кс, последний символ ключа - с 4м символом кс (хз в какой системе счисления эксель преобразует число в строку). Берешь рандомную шляпу с 'x' на 3й позиции, считаешь ее кс, выставляешь ее 3й символ вместо 1го в ключе, 4й вместо последнего и рассчитываешь затычку на любой другой символ ключа, чтобы сумма обратно совпала. Возможно придется это делать только с печатными символами. Если ты этот скрипт вставишь в ехель-документ и попытаешься использовать по назначению, вряд ли кто-то станет заморачиваться с подбором ключа ЗЫ: не заметил умножение на i. Надо подобрать такой последний символ ключа, чтобы он совпал с нужным символом total, потом подставить нужный символ из total первым символом в ключ, он ни на что не влияет. ----- 2 оттенка серого |
|
Создано: 21 мая 2019 14:08 · Личное сообщение · #4 tizo пишет: Что такое Asc() и склеивают ли + стринги тоже не знаю Asc - это числовой код символа по таблице Asci, + стринги соединяет f13nd пишет: Если ты этот скрипт вставишь в ехель-документ и попытаешься использовать по назначению, вряд ли кто-то станет заморачиваться с подбором ключа Да не в этом дело, меняем в коде "=" на "<>", и надстройка хавает любой ключ длинной 9 символов с "х" на третьей позиции слева. Я пытаюсь понять, КАК генерировать именно настоящий ключ. Надо понять, как сделать так, что бы в переменной Тотал 3я цифра совпала с 1й в ключе и 9я с 4й. В ключе могут быть и буквы и цифры. |
|
Создано: 21 мая 2019 14:29 · Поправил: f13nd · Личное сообщение · #5 rummy пишет: Надо понять, как сделать так, что бы в переменной Тотал 3я цифра совпала с 1й в ключе и 9я с 4й. В ключе могут быть и буквы и цифры. А у тебя ни первый ни последний символы не входят вообще в Total: Code:
Code:
Как сгенерировать - тупо подставить ----- 2 оттенка серого |
|
Создано: 21 мая 2019 14:54 · Личное сообщение · #6 Мы наверное о различных вещах говорим.... If Left(k, 1) = Mid(Total, 3, 1) And Right(k, 1) = Mid(Total, 4, 1) The Условие валидности ключа - совпадение 1символа слева ключа С третим символом числовой переменной Тотал, и первого символа ключа справа с четвертым символом Тотал. Я пытаюсь понять алгоритм генерации ключа, а не способ взлома. Тотал изготавливается путем последовательного сложения asc кода ключа, начиная со второго символа, помноженного на его порядковый номер в цикле. Вроде все просто....но не получается пока. |
|
Создано: 21 мая 2019 15:05 · Поправил: tizo · Личное сообщение · #7 "Надо понять, как сделать так, что бы в переменной Тотал 3я цифра совпала с 1й в ключе и 9я с 4й." Тотал 3я цифра == 4й в ключе * 4 == 1й в ключе Тотал 4я цифра == 5й в ключе * 5 == 9й в ключе Добавлено спустя 4 минуты ключ: 8bx21fgh5 <- принцип, без аски конвертирования 2 * 4 = 8 1 * 5 = 5 Добавлено спустя 7 минут f13 retort |
|
Создано: 21 мая 2019 15:15 · Поправил: rummy · Личное сообщение · #8 |
|
Создано: 21 мая 2019 15:39 · Личное сообщение · #9 tizo пишет: f13 retort А за что тебя кстати забанили? Добавлено спустя 2 минуты rummy пишет: Условие валидности ключа - совпадение 1символа слева ключа С третим символом числовой переменной Тотал, и первого символа ключа справа У тебя в цикле берутся 7 символов ключа, без первого и последнего. Рассчет валидного ключа - выбор 7 символов в середине, рассчет Total для него и подстановка первого и последнего символов ключа в зависимости от Total. ----- 2 оттенка серого |
|
Создано: 21 мая 2019 15:41 · Личное сообщение · #10 Да тут впринципе все просто, для кейгена можно использовать проверку. Тоесть, для ключа "03x123452" total будет 2002, после получения контрольного значения, берешь и в введенном ключе заменяешь первый знак на 3-е число из тотал, и последний знак на 4-е число из тотал. А кейген пиши сам. 03x123452 рабочий ключ для твоей процедуры. | Сообщение посчитали полезным: rummy |
|
Создано: 21 мая 2019 15:54 · Поправил: f13nd · Личное сообщение · #11 rummy пишет: Тотал с этим ключом получается 3166 Code:
Code:
----- 2 оттенка серого | Сообщение посчитали полезным: rummy |
|
Создано: 21 мая 2019 16:11 · Личное сообщение · #12 |
|
Создано: 21 мая 2019 16:14 · Личное сообщение · #13 |
|
Создано: 21 мая 2019 18:45 · Личное сообщение · #14 Оказалось все совсем просто Code:
Попозже напишу екзешник. Тему можно закрывать |
|
Создано: 21 мая 2019 19:03 · Личное сообщение · #15 |
eXeL@B —› Вопросы новичков —› Анализ алгоритма создания регистрационного ключа |
Эта тема закрыта. Ответы больше не принимаются. |