| Правила | Регистрация | Пользователи | Сообщения за день |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Можно ли из нескольких лиспов и меню сделать программу с активационным ключом?

Можно ли из нескольких лиспов и меню сделать программу с активационным ключом?

Ответ
Поиск в этой теме
Непрочитано 26.11.2008, 16:55
Можно ли из нескольких лиспов и меню сделать программу с активационным ключом?
Red Nova
 
ՃԱՐՏԱՐԱԳԵՏ, Տ.Գ.Թ.
 
Торонто
Регистрация: 23.10.2007
Сообщений: 1,980

Есть ли возможность простым методом сделать из совокупности лисп кодов и меню программу хоть по минимуму защищенную от взлома? Так чтобы поставил программу на конкретный компьютер вписал активационный ключ, который неким образом связан скажем с mac адресом конкретного компьютера. Затем программа устанавливается на компьютер, но так чтобы нельзя было просто скопировать ее на другой компьютер и прописать в автозагрузку Автокада.
__________________
Блог
Просмотров: 14797
 
Непрочитано 28.11.2008, 04:14
#21
Димас

джедай
 
Регистрация: 31.01.2005
Магадан
Сообщений: 460
<phrase 1=


Цитата:
Сообщение от Red Nova Посмотреть сообщение
А что если так.
Нужна маленькая программа которая считывает username и преобразует это дело в некий код, это просто чтобы напустить туман, и не дать каждому чайнику понять что мне нужен username. Для простоты все можно делать в ком строке Акада.
дык я жеж предлагал для напускания тумана делать дамп всех переменных автокада?
думаю сможете send command - acadinfo сделать?
а в полученном текстовом файле поиском найти нужные переменные?

и правильно - только к юзернейм привязываться не стоит - я допустим, знакомым/друзьям при установки винды ставлю одинаковый юзернейм
да и из опыта ремонта по разным офисам - очень много User Admin и тп
__________________
тут была подпись(
Димас вне форума  
 
Автор темы   Непрочитано 28.11.2008, 08:17
#22
Red Nova

ՃԱՐՏԱՐԱԳԵՏ, Տ.Գ.Թ.
 
Регистрация: 23.10.2007
Торонто
Сообщений: 1,980
Отправить сообщение для Red Nova с помощью Skype™


Sleekka,
Цитата:
А из темы "Научите чайника лиспу?" что нибудь хорошее для вас выгорело
Да, из этой темы много чего узн%
__________________
Блог

Последний раз редактировалось Red Nova, 28.11.2008 в 08:31.
Red Nova вне форума  
 
Непрочитано 28.11.2008, 09:57
#23
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,844


Как вариант (коды писать некогда):
Соединяешь USERNAME, COMPUTERNAME (а если еще ухитришься и серийник HDD получить, совсем кучеряво будет). Переводишь в список чисел; каждое число - в строку, добавляя "0" вперед до достижения длины строки в 3 символа. Потом список объединить в одну строку. Разбить на пары. Каждое число представить как сумму степеней 2 с добавлением 1. Соединить строку, используя в качестве "соединителя" "0". Разбить на подстроки по 2 символа каждая. Преобразовать в подстроки в числа, из них получить символ. Это будет" активационный" код.
Для "активации" операцию провернуть обратно.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 28.11.2008, 10:24
#24
Red Nova

ՃԱՐՏԱՐԱԳԵՏ, Տ.Գ.Թ.
 
Регистрация: 23.10.2007
Торонто
Сообщений: 1,980
Отправить сообщение для Red Nova с помощью Skype™


kpblc, Пока читал несколько раз сам сбился, но идея мне понравилась!!! Подумаю как хотябы начать писать такой код.
__________________
Блог
Red Nova вне форума  
 
Непрочитано 28.11.2008, 11:06
#25
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,992
<phrase 1= Отправить сообщение для VVA с помощью Skype™


Тема прямо для вас:
Возможно ли защитить код на Lisp
Там есть и серийник HDD (частично), надежнее всего - к MAC адресу сетевой карты. Но это привязка к "месту"
По защите кода еще одна тема. Начиналась безобидно, про время , но на второй странице есть расписанный алгоритм Евгения Елпанова в примерах и картинках по поводу защиты уже кода.
__________________
Как использовать код на Лиспе читаем здесь

Последний раз редактировалось VVA, 28.02.2009 в 10:03. Причина: новый адрес на caduser.ru
VVA вне форума  
 
Непрочитано 28.11.2008, 11:22
#26
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,844


Да ну, там все просто. Вот что успел наваять (минут за 10 примерно)
---
Добавлено: по идее такое "шифрование" можно применять куда угодно.
P.S. Я злой, работать не хочу, вот и развлекался...
Вложения
Тип файла: lsp _kpblc-debug-crypt.LSP (6.1 Кб, 117 просмотров)
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 28.11.2008, 11:31
#27
ShaggyDoc

Thượng Tá Quân Đội Nhân Dân Việt Nam
 
Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,381


Все эти привязки к каким-то параметрам компьютера или пользователя бесполезны (ломается очень быстро) и вредны в принципе для самых легальных пользователей. Они не обязаны не модернизировать компьютер, не менять винчестеры, не менять имена. Они вообще ничего не обязаны, кроме как заплатить за программу и соблюдать условия лицензионного соглашения.

И вааще, не очень-то тут секреты излагайте, а то агенты Аутодеск как прочитают, да как сообщат, а те как сделают неломающийся AutoCAD
ShaggyDoc вне форума  
 
Непрочитано 28.11.2008, 11:34
#28
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,992
<phrase 1= Отправить сообщение для VVA с помощью Skype™


В добавок к #23 - не следует забывать про исключающее или (XOR). В лиспе это (boole 6 ...)
Код:
[Выделить все]
(vl-load-com)
;;;===============================================
;;;Строка в нешифрованном виде
(setq usr (getenv "USERNAME"))
;;;===============================================
;;; Шифруем строку
;;; Применяем операцию XOR
;;; В ф-ции (boole 6 x 12) вместо 12 можно подобрать смещение,
;;; чтобы символы получались из диапазона 30-255 ASCII
;;; Но вроде и так нормально
(setq kod (apply 'strcat
                 (mapcar 'chr
                         (mapcar '(lambda (x) (boole 6 x 12))
                                 (vl-string->list usr)
                         ) ;_ end of mapcar
                 ) ;_ end of mapcar
          ) ;_ end of apply
) ;_ end of setq



;;;===============================================
;;;Дешифруем
(setq ret (apply 'strcat
                 (mapcar 'chr
                         (mapcar '(lambda (x) (boole 6 x 12))
                                 (vl-string->list kod)
                         ) ;_ end of mapcar
                 ) ;_ end of mapcar
          ) ;_ end of apply
) ;_ end of setq

;;;===============================================
;;;Сравниваем с usr
(= usr ret)
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Автор темы   Непрочитано 28.11.2008, 11:59
#29
Red Nova

ՃԱՐՏԱՐԱԳԵՏ, Տ.Գ.Թ.
 
Регистрация: 23.10.2007
Торонто
Сообщений: 1,980
Отправить сообщение для Red Nova с помощью Skype™


kpblc, Спасибо, но пока не понял как запустить. В коде написано что пример запуска такой
Код:
[Выделить все]
*    Примеры вызова:
(_kpblc-conv-list-to-3dpoints '(1 2 3 4 5 6)) ;-> ((1 2 3) (4 5 6))
(_kpblc-conv-list-to-3dpoints '(1 2 3 4 5))   ;-> ((1 2 3) (4 5 0.))
Но это должно быть про набор (1 2 3 4 5 6), а как конкретно применить к компьютеру не понял. То есть что набрать в ком строке, чтобы скомпилировать usermane и все прочее в числовой код, и как это обратно декомпилировать?

VVA, Я так понял что #28 не для моего понимания, так как я вообще не понял о чем там речь.
__________________
Блог
Red Nova вне форума  
 
Непрочитано 28.11.2008, 12:10
#30
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,844


Red Nova, запускаешь так:
сначала (cr), запомнить результат (например, записать в реестр).
Потом (decr <Здесь результат выполнения (cr)>). если все совпадает, в результате будет T.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 28.11.2008, 13:24
#31
Red Nova

ՃԱՐՏԱՐԱԳԵՏ, Տ.Գ.Թ.
 
Регистрация: 23.10.2007
Торонто
Сообщений: 1,980
Отправить сообщение для Red Nova с помощью Skype™


kpblc,
Код:
[Выделить все]
Command:
Command: (cr)
"0000320310010010030010000410010000010010010000000413210010003210000320330000320
41000033021000321021000321001000321033000032031000033002000321321000032041000321
03300003203100032103100003300200003204100003203300032102100032103300003204100003
3003000041002000041002000321032000321021000321041000321033"

Command:


Command: (decr 
<0000320310010010030010000410010000010010010000000413210010003210000320330000320
(_> 
41000033021000321021000321001000321033000032031000033002000321321000032041000321
(_> 
03300003203100032103100003300200003204100003203300032102100032103300003204100003
(_> 3003000041002000041002000321032000321021000321041000321033>)
; error: too many arguments
__________________
Блог
Red Nova вне форума  
 
Непрочитано 28.11.2008, 13:30
#32
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,844


Код:
[Выделить все]
Command: (setq key (cr))
"0000320310010010030010000410010000010010010000000413210010003210000320330000320
41000033021000321021000321001000321033000032031000033002000321321000032041000321
03300003203100032103100003300200003204100003203300032102100032103300003204100003
3003000041002000041002000321032000321021000321041000321033"

Command: (decr key)
T
Хотя вообще-то код не предназначен для запуска из ком.строки...
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 28.11.2008, 14:27
#33
Red Nova

ՃԱՐՏԱՐԱԳԵՏ, Տ.Գ.Թ.
 
Регистрация: 23.10.2007
Торонто
Сообщений: 1,980
Отправить сообщение для Red Nova с помощью Skype™


kpblc,
Сапасибо, а как увидеть результат декомпиляции, то есть реальные username и т.п.?
__________________
Блог
Red Nova вне форума  
 
Автор темы   Непрочитано 29.11.2008, 09:36
#34
Red Nova

ՃԱՐՏԱՐԱԳԵՏ, Տ.Գ.Թ.
 
Регистрация: 23.10.2007
Торонто
Сообщений: 1,980
Отправить сообщение для Red Nova с помощью Skype™


kpblc,
Ну ладно, про то как вычислить из кода username и т.п. надеюсь еще расскажешь. Но сейчас важнее вот что:
На данный момент я уже могу получить кучеряво закодированную информацию о компьютере юзера. Еще необходим активационный код, который тоже связан с параметрами компьютера, но алгоритм должен быть чуток другой, чтобы юзер не смог быстро догадаться как из первого кода получить второй.
Далее нужен последний лисп, с таким алгоритмом
-набираем команду
-на запрос "введите активационный код" юзер копирует в ком строку второй код.
-после проверки условия соответствия второго кода срабатывает лисп, который вписывает недостающую часть кода в реестр, по принципу Димы
Код:
[Выделить все]
(vl-registry-write "HKEY_CURRENT_USER\\SECRET\\NUMCOD" "" "недостающая часть кода")
А в нашем охраняемом лиспе, эта часть вырезана, и дана ссылка на реестр.
__________________
Блог
Red Nova вне форума  
 
Автор темы   Непрочитано 01.12.2008, 10:19
#35
Red Nova

ՃԱՐՏԱՐԱԳԵՏ, Տ.Գ.Թ.
 
Регистрация: 23.10.2007
Торонто
Сообщений: 1,980
Отправить сообщение для Red Nova с помощью Skype™


VVA, До меня только дошел смысл кода с #28.
Этим кодом можно преобразовать USERNAME в нечто кучерявое.
Но этого кода пока не достаточно.

1, Во первых нужно добавить переменных, как у крыса,
Я пытался это сделать, но не могу вспомнить какими функциями нормально склеить три слова в ковычках.
У меня получилось так
Command: (setq usr (list (getenv "USERNAME") (getenv "COMPUTERNAME") (getenv "LOGONSERVER")))
В результате получается нечто типа этого
("****" "####" "****")
Но требуется чтобы вернуло
("****####****")
То есть в одних кавычках. Подскажи пожалста какая функция нужна.

2, Итак твоим кодом можно закодировать данные компьютера. Предположим юзер прогнал этот код на машине, и выслал ответ мне. Я могу дешифровать этот код и узнать реальные данные машины. Теперь нужен еще один код, который я вышлю юзеру в ответ, прогнав который на компьютере защищаемая программа разблокируется. Код может быть похожего алгоритма, но так чтобы нельзя было очень легко догадаться как из первого кода получить второй. Прошу написать такой код.
__________________
Блог
Red Nova вне форума  
 
Непрочитано 01.12.2008, 10:23
#36
Дима_

Продуман
 
Регистрация: 22.02.2007
Питер
Сообщений: 2,840


Цитата:
Сообщение от Red Nova Посмотреть сообщение
VVA,
Я пытался это сделать, но не могу вспомнить какими функциями нормально склеить три слова в ковычках.
У меня получилось так
Command: (setq usr (list (getenv "USERNAME") (getenv "COMPUTERNAME") (getenv "LOGONSERVER")))
В результате получается нечто типа этого
("****" "####" "****")
Но требуется чтобы вернуло
("****####****")
strcat
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Непрочитано 01.12.2008, 10:31
#37
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,992
<phrase 1= Отправить сообщение для VVA с помощью Skype™


1.
Код:
[Выделить все]
 (apply 'strcat  (list (getenv "USERNAME") (getenv "COMPUTERNAME") (getenv "LOGONSERVER")))
2. Для сбора использовать один ключ, для ответа другой
Данные компьютера собираются и кодируются, например такой ф-цией
(boole 6 x 12)
Ответ кодируется и декодируется этой же ф-цией с другим ключем
(boole 6 x 10)
Если будешь использовать строки, смотри чтобы в результате преобразований boole не получились непечатные символы
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 01.12.2008, 10:36
#38
Дима_

Продуман
 
Регистрация: 22.02.2007
Питер
Сообщений: 2,840


Цитата:
Сообщение от Red Nova Посмотреть сообщение
VVA,
2, Итак твоим кодом можно закодировать данные компьютера. Предположим юзер прогнал этот код на машине, и выслал ответ мне. Я могу дешифровать этот код и узнать реальные данные машины. Теперь нужен еще один код, который я вышлю юзеру в ответ, прогнав который на компьютере защищаемая программа разблокируется. Код может быть похожего алгоритма, но так чтобы нельзя было очень легко догадаться как из первого кода получить второй.
Стоп - по моему тебе не нужен код для разблокировки программы - ибо такую проверку можно сломать за 1 мин и без знания лиспа, здесь нужен серийник который просто запишется в реестр, а уже сама рабочая программа на основе данных (username и.т.п) будет декодировать из него кусок кода - то есть этот серийник есть не что иное как, например, сумма из данных компьютера (username+computername...) и недостающей части кода (mapcar ....). А программа соответственно предварительно вычитает - это будет нечто похожее на защиту - еще-бы не мешало продумать контрольную сумму - самое простое тупо сложить все значения серийного номера, то есть 1234=1++2+3+4=10 и добавлять его в конец серийника, чтобы программа активизации могла проверит - не ввел-ли юзер код с ошибкой (последниие 3-4 цифры должны равняться сумме предыдущего номера) - да и в процессе работы программы перед запуском ее не мешало-бы проверить - иначе при измененииданных - программа будет запускать черт знает что.

Цитата:
Сообщение от Red Nova Посмотреть сообщение
VVA,
Прошу написать такой код.
Ну а сам что. Ведь не "первый год замужем."
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Автор темы   Непрочитано 01.12.2008, 11:00
#39
Red Nova

ՃԱՐՏԱՐԱԳԵՏ, Տ.Գ.Թ.
 
Регистрация: 23.10.2007
Торонто
Сообщений: 1,980
Отправить сообщение для Red Nova с помощью Skype™


Спасибо за ответы.
VVA,
Цитата:
Если будешь использовать строки, смотри чтобы в результате преобразований boole не получились непечатные символы
Пока не понял что за строки.
Дима, Ты меня запутал. Зачем записывать в реестр серийный код. Ты ведь сам в начале предлагал такой алгоритм.
-часть кода записывается в реестр. Это случается только тогда, когда на машине уже один раз прогнали код записи в реестр, что в свою очередь будет иметь место, если введен правильный серийный номер.
Зачем в таком случае еще и серийник записывать в реестр?
__________________
Блог
Red Nova вне форума  
 
Непрочитано 01.12.2008, 11:54
#40
Дима_

Продуман
 
Регистрация: 22.02.2007
Питер
Сообщений: 2,840


То Red Nova - пример приведенный мною программы показывает как заставить программу работать на одном компе и не работать на другом, причем если тупо перенести скопировать программу с одного на другой (украсть) восстановление работоспособности без рабочей копии видиться моловозможным - т.к. не хватает части кода. Ты же в свою очередь пожелал еще и серийный номер - вот я и пишу как я вижу максимально правильно сделать с использованием серийного номера - ведь если просто ввести проверку типа (if (= serilal "12345") (progn ... - основная программа) (alert "Не верный серийник")) - грошь цена такой защите.
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Можно ли из нескольких лиспов и меню сделать программу с активационным ключом?

Размещение рекламы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вопросы по работе системы RuCAD Олег К. Прочее. Программное обеспечение 142 17.09.2019 05:06
Мониторы LCD CRT Разное 94 17.06.2008 10:51
ЮМОР 2006 =) Perezz!! Разное 1122 04.01.2007 00:46
Попасть в слой. Vova AutoCAD 106 10.03.2006 04:36