|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
![]() |
Поиск в этой теме |
![]() |
#1 | |
Можно ли из нескольких лиспов и меню сделать программу с активационным ключом?
ՃԱՐՏԱՐԱԳԵՏ, տ.գ.թ.
Торонто
Регистрация: 23.10.2007
Сообщений: 1,990
|
||
Просмотров: 15731
|
|
||||
Продуман Регистрация: 22.02.2007
Питер
Сообщений: 2,839
|
Ну как вариант с помощью vl-registry-write, vl-registry-read записать в реестр пару ключей - один - тупо проверка есть он или нет, ну что-то вроде если его нет - то (alert "Незарегистрированная копия..."), а во втором (специально чтоб взлом более 5-ти миут длился), данные, да или кусок кода, из самой сложной функции (а лучше двух) в которой самому, на 5-ый день после написания самому толком не разобраться. При всей простоте метода, без рабочей (только с украденной) копией "взломать" будет ох как не просто.
__________________
Когда в руках молоток все вокруг кажется гвоздями. |
|||
![]() |
|
||||
Дима_,
Можешь на примере показать? Допустим самый простой лисп нужно защитить. Скажем этот Код:
__________________
Блог |
||||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,450
|
Red Nova, вряд ли ты в открытом форуме дождешься работающей системы защиты.
Кстати, код, скажем так, не совсем корректный в общем случае и при заявленных условиях выбора объектов.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Кулик Алексей aka kpblc,
Цитата:
![]() Цитата:
![]()
__________________
Блог |
||||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,450
|
Хорошо
![]() Ну, например, самое простое: проверять значение (getenv "USERNAME") и / или (getenv "COMPUTERNAME"). Если значение не попадает под указанный диапазон или маску, вываливать сообщение типа "Воровать нехорошо" Остальное, что мне приходит в голову, достаточно сложно в реализации. --- Добавлено: насчет лиспа... В таком виде он будет гарантированно работать только с многострочными текстами, длина строки которых (включая служебные символы и добавляемый номер) не превышает 255 символов. Для однострочных текстов - только если текст имеет выравнивание влево вверх. Я не уверен, но, возможно, будут определенные проблемы при работе не в мировой системе координат.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
джедай Регистрация: 31.01.2005
Магадан
Сообщений: 460
![]() |
а если чуть усложнить?
в принципе активация большинства програм по этому способу сделана: берете любую переменную допустим ту же (getenv "USERNAME") производите с ней некоторые действия - допустим представить все буквы числами и умножить на 2 - это будет код активации для активации программы - acadinfo - полученный файл пользователь дает вам, вы, выбрав нужные переменные, генерируете ключ, отсылаете его пользователю если привязаться к мак адресу - прийдется каждый раз исходник программы править активировать программу через запись ключа в реестр на мой взгляд хуже - для мониторинга доступа к реестру меньше знаний нужно, чем для написания генератора ключа
__________________
тут была подпись( Последний раз редактировалось Димас, 27.11.2008 в 03:05. |
|||
![]() |
|
||||
Продуман Регистрация: 22.02.2007
Питер
Сообщений: 2,839
|
Эх все равно не спиться:
Вот программа из 4 поста с защитой (обрати внимание добавленны 2 новые переменные): Код:
Код:
Код:
Удачи в защите интелектуального продукта.
__________________
Когда в руках молоток все вокруг кажется гвоздями. |
|||
![]() |
|
||||
Дима_, Спасибо за пример
![]() Итак ты вырезал кусок программы. Дал ей имя "HKEY_CURRENT_USER\\SECRET\\NUMCOD" и предлагаешь записать ее в реестр. Я потестил прожку, если загрузить лисп без предварительного прогона в акаде строчки Код:
Но вот не понятно как это связать с активационным кодом. То есть нужно исполнить то что ты описал в #8.
__________________
Блог |
||||
![]() |
|
||||
Продуман Регистрация: 22.02.2007
Питер
Сообщений: 2,839
|
Я если честно не понимаю зачем нужен этот серийник, все равно копию с рабочей машины можно сделать и не зная его, но если очень хочешь, то с помощью (vl-string->list) и (vl-list->string) сложи значения ключа и шифруемой процедуры, а на этапе активации проверь сумму чисел введенного ключа: (setq serial (getstring "Введите серийный код")) (apply '+ (vl-string->list serial)), на случай неправильного случайного ввода. Если все верно запиши (vl-registry-write...) либо расшифрованный код (при помощи вычитания ключа), либо серийный номер номер - тогда расшифровыать придеться по ходу выполнения программы. Подчеркиваю - криптостойкость от этого не увеличится не на грамм, просто голову юзеру поморочить.
__________________
Когда в руках молоток все вокруг кажется гвоздями. |
|||
![]() |
|
||||
Поясню что именно я имею ввиду.
Цитирую твой пост #8 Цитата:
Мы сейчас имеем 3 кода 1. Сам лисп 2. Активационный лисп 3. Деактивационный лисп Предполагаю что нужно сделать так. После ввода активационного номера который я продиктую юзеру автоматически должен загрузится Активационный лисп. Во время ввода активационного номера нужно проделать еще одну проверку. Вводится активационный номер и тут же проверяется скажем имя юзера. Если активационный номер соответствует имени юзера то только тогда запускается Активационный лисп. Сорри за каламбур. В таком случае лисп будет работать только на данной машине. Я не прав?
__________________
Блог |
||||
![]() |
|
||||
Продуман Регистрация: 22.02.2007
Питер
Сообщений: 2,839
|
Для этого нужен еще один лисп - собирающий информацию о компе пользователя и высылающий ее тебе (ну или юзер это делает сам). Тогда в принципе проще не делать активационного лиспа - а тупо переделвыать исходную программу (автоматически), но, если больше нравиться, можно и с кодом - не очень понятно в чем вопрос - вроде что нужно делать ты понимаешь?
__________________
Когда в руках молоток все вокруг кажется гвоздями. |
|||
![]() |
|
||||
- Регистрация: 24.07.2005
Москва
Сообщений: 1,335
|
Цитата:
|
|||
![]() |
|
||||
А что если так.
Нужна маленькая программа которая считывает username и преобразует это дело в некий код, это просто чтобы напустить туман, и не дать каждому чайнику понять что мне нужен username. Для простоты все можно делать в ком строке Акада. Понятно что начало должно быть типа такого. Код:
"Ник" А вот как теперь "Ник" преобразовать в простенький код чтобы потом выдать этот код в оповещающем окошке? Можно как ты ранее говорил перевести букву в цифру и умножить на два, тогда "Ник" = "302024" Ну допустим мы уже имеем такой код, юзер посылает мне этот код, я перевожу его обратно и вижу что USERNAME - "Ник". Теперь я пишу ответный код, который также связан с USERNAME, ну например к первому элементу прибавляю 111, к второму 222, к третьему 333, и так далее, получается такой код "141242357" Теперь нужно этот код как-то ввести в компьютер так чтобы в результате сработал активационный лисп То есть что то типа этого -декомпилируем код -проверяем равен ли результат USERNAME -если да, то запускаем код Код:
__________________
Блог |
||||
![]() |
|
||||
Продуман Регистрация: 22.02.2007
Питер
Сообщений: 2,839
|
Расширяй кишку
![]()
__________________
Когда в руках молоток все вокруг кажется гвоздями. |
|||
![]() |
|
||||
Ну тогда начинай подсказывать
![]() Какие функции нужны для этого? Цитата:
__________________
Блог |
||||
![]() |
|
||||
Продуман Регистрация: 22.02.2007
Питер
Сообщений: 2,839
|
Ну для начала-бы я не использовал бы для генерации ключа только лишь имя пользователя
(strcat (getenv "USERNAME") (getvar "ACADVER")...) посмотри сам, что еще можно добавить. Для переделки в список значений (vl-string->list), далее преобразовываем что-бы было не так ясно (mapcar (lambda (x) (сдесь функция хитрого преобразованя - придумай сам хотябы алгоритм - будут вопросы - по предудыщей схеме)) ), ну и обратно в текст (vl-list->string), показать в окошке - (alert...)
__________________
Когда в руках молоток все вокруг кажется гвоздями. |
|||
![]() |
|
||||
- Регистрация: 24.07.2005
Москва
Сообщений: 1,335
|
Цитата:
![]() Только это пока теория, а как говорица теория без практики ... Я примерно также рассуждал, на протяжении года или двух, пока не перешел к конкретным кодам, а перешел я к ним только тогда когда мне стали за это платить. А пока мне платили за другое я и делал другое ![]() PS. А из темы "Научите чайника лиспу?" что нибудь хорошее для вас выгорело, просто я ниасилил слишком много букаф. А по теме, тоже готов помочь если чего не понятно, да и сам поучусь - людей умный у нас на dwg многа. ![]() |
|||
![]() |
|
||||
джедай Регистрация: 31.01.2005
Магадан
Сообщений: 460
![]() |
Цитата:
думаю сможете send command - acadinfo сделать? а в полученном текстовом файле поиском найти нужные переменные? и правильно - только к юзернейм привязываться не стоит - я допустим, знакомым/друзьям при установки винды ставлю одинаковый юзернейм да и из опыта ремонта по разным офисам - очень много User Admin и тп
__________________
тут была подпись( |
|||
![]() |
|
||||
Sleekka,
Цитата:
__________________
Блог Последний раз редактировалось Red Nova, 28.11.2008 в 08:31. |
||||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,450
|
Как вариант (коды писать некогда):
Соединяешь USERNAME, COMPUTERNAME (а если еще ухитришься и серийник HDD получить, совсем кучеряво будет). Переводишь в список чисел; каждое число - в строку, добавляя "0" вперед до достижения длины строки в 3 символа. Потом список объединить в одну строку. Разбить на пары. Каждое число представить как сумму степеней 2 с добавлением 1. Соединить строку, используя в качестве "соединителя" "0". Разбить на подстроки по 2 символа каждая. Преобразовать в подстроки в числа, из них получить символ. Это будет" активационный" код. Для "активации" операцию провернуть обратно.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
kpblc, Пока читал несколько раз сам сбился, но идея мне понравилась!!! Подумаю как хотябы начать писать такой код.
__________________
Блог |
||||
![]() |
|
||||
Инженер LISP Регистрация: 11.05.2005
Минск
Сообщений: 6,996
|
Тема прямо для вас:
Возможно ли защитить код на Lisp Там есть и серийник HDD (частично), надежнее всего - к MAC адресу сетевой карты. Но это привязка к "месту" По защите кода еще одна тема. Начиналась безобидно, про время ![]()
__________________
Как использовать код на Лиспе читаем здесь Последний раз редактировалось VVA, 28.02.2009 в 10:03. Причина: новый адрес на caduser.ru |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,450
|
Да ну, там все просто. Вот что успел наваять (минут за 10 примерно)
--- Добавлено: по идее такое "шифрование" можно применять куда угодно. P.S. Я злой, работать не хочу, вот и развлекался...
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Thượng Tá Quân Đội Nhân Dân Việt Nam Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,372
|
Все эти привязки к каким-то параметрам компьютера или пользователя бесполезны (ломается очень быстро) и вредны в принципе для самых легальных пользователей. Они не обязаны не модернизировать компьютер, не менять винчестеры, не менять имена. Они вообще ничего не обязаны, кроме как заплатить за программу и соблюдать условия лицензионного соглашения.
И вааще, не очень-то тут секреты излагайте, а то агенты Аутодеск как прочитают, да как сообщат, а те как сделают неломающийся AutoCAD ![]() |
|||
![]() |
|
||||
Инженер LISP Регистрация: 11.05.2005
Минск
Сообщений: 6,996
|
В добавок к #23 - не следует забывать про исключающее или (XOR). В лиспе это (boole 6 ...)
Код:
__________________
Как использовать код на Лиспе читаем здесь |
|||
![]() |
|
||||
kpblc, Спасибо, но пока не понял как запустить. В коде написано что пример запуска такой
Код:
VVA, Я так понял что #28 не для моего понимания, так как я вообще не понял о чем там речь. ![]()
__________________
Блог |
||||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,450
|
Red Nova, запускаешь так:
сначала (cr), запомнить результат (например, записать в реестр). Потом (decr <Здесь результат выполнения (cr)>). если все совпадает, в результате будет T.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
kpblc,
Код:
__________________
Блог |
||||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,450
|
Код:
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
kpblc,
Сапасибо, а как увидеть результат декомпиляции, то есть реальные username и т.п.?
__________________
Блог |
||||
![]() |
|
||||
kpblc,
Ну ладно, про то как вычислить из кода username и т.п. надеюсь еще расскажешь. Но сейчас важнее вот что: На данный момент я уже могу получить кучеряво закодированную информацию о компьютере юзера. Еще необходим активационный код, который тоже связан с параметрами компьютера, но алгоритм должен быть чуток другой, чтобы юзер не смог быстро догадаться как из первого кода получить второй. Далее нужен последний лисп, с таким алгоритмом -набираем команду -на запрос "введите активационный код" юзер копирует в ком строку второй код. -после проверки условия соответствия второго кода срабатывает лисп, который вписывает недостающую часть кода в реестр, по принципу Димы Код:
__________________
Блог |
||||
![]() |
|
||||
VVA, До меня только дошел смысл кода с #28.
Этим кодом можно преобразовать USERNAME в нечто кучерявое. Но этого кода пока не достаточно. 1, Во первых нужно добавить переменных, как у крыса, Я пытался это сделать, но не могу вспомнить какими функциями нормально склеить три слова в ковычках. У меня получилось так Command: (setq usr (list (getenv "USERNAME") (getenv "COMPUTERNAME") (getenv "LOGONSERVER"))) В результате получается нечто типа этого ("****" "####" "****") Но требуется чтобы вернуло ("****####****") То есть в одних кавычках. Подскажи пожалста какая функция нужна. 2, Итак твоим кодом можно закодировать данные компьютера. Предположим юзер прогнал этот код на машине, и выслал ответ мне. Я могу дешифровать этот код и узнать реальные данные машины. Теперь нужен еще один код, который я вышлю юзеру в ответ, прогнав который на компьютере защищаемая программа разблокируется. Код может быть похожего алгоритма, но так чтобы нельзя было очень легко догадаться как из первого кода получить второй. Прошу написать такой код.
__________________
Блог |
||||
![]() |
|
||||
Продуман Регистрация: 22.02.2007
Питер
Сообщений: 2,839
|
Цитата:
__________________
Когда в руках молоток все вокруг кажется гвоздями. |
|||
![]() |
|
||||
Инженер LISP Регистрация: 11.05.2005
Минск
Сообщений: 6,996
|
1.
Код:
Данные компьютера собираются и кодируются, например такой ф-цией (boole 6 x 12) Ответ кодируется и декодируется этой же ф-цией с другим ключем (boole 6 x 10) Если будешь использовать строки, смотри чтобы в результате преобразований boole не получились непечатные символы
__________________
Как использовать код на Лиспе читаем здесь |
|||
![]() |
|
||||
Продуман Регистрация: 22.02.2007
Питер
Сообщений: 2,839
|
Цитата:
Ну а сам что. Ведь не "первый год замужем."
__________________
Когда в руках молоток все вокруг кажется гвоздями. |
|||
![]() |
|
||||
Спасибо за ответы.
VVA, Цитата:
Дима, Ты меня запутал. Зачем записывать в реестр серийный код. Ты ведь сам в начале предлагал такой алгоритм. -часть кода записывается в реестр. Это случается только тогда, когда на машине уже один раз прогнали код записи в реестр, что в свою очередь будет иметь место, если введен правильный серийный номер. Зачем в таком случае еще и серийник записывать в реестр?
__________________
Блог |
||||
![]() |
|
||||
Продуман Регистрация: 22.02.2007
Питер
Сообщений: 2,839
|
То Red Nova - пример приведенный мною программы показывает как заставить программу работать на одном компе и не работать на другом, причем если тупо перенести скопировать программу с одного на другой (украсть) восстановление работоспособности без рабочей копии видиться моловозможным - т.к. не хватает части кода. Ты же в свою очередь пожелал еще и серийный номер - вот я и пишу как я вижу максимально правильно сделать с использованием серийного номера - ведь если просто ввести проверку типа (if (= serilal "12345") (progn ... - основная программа) (alert "Не верный серийник")) - грошь цена такой защите.
__________________
Когда в руках молоток все вокруг кажется гвоздями. |
|||
![]() |
|
||||
Регистрация: 11.10.2004
e•burg
Сообщений: 755
|
Была очень похожая тема.
|
|||
![]() |
|
||||
Дима_,
Я в итоге получу то что ты и говоришь. Часть кода будет в реестре. Просто я хочу иметь возможность на растоянии проводить активацию. А для этого я хочу сделать активационный код. Я тут копался с кодом от VVA, хочу на команды все поставить. Подскажите в чем код ошибочен. Код:
__________________
Блог |
||||
![]() |
|
||||
Инженер LISP Регистрация: 11.05.2005
Минск
Сообщений: 6,996
|
Как вариант, можно первые 4 (например) символа получать случайным образом и не обрабатывать. Или комбинировать: нечетный - случайный, четный - твой.
Код:
__________________
Как использовать код на Лиспе читаем здесь |
|||
![]() |
|
||||
У меня пока получился такой код.
Язер запускает на компьютере такой код Код:
Я вычисляю реальные данные компьютера таким кодом. Код:
Код:
Код:
__________________
Блог Последний раз редактировалось Red Nova, 02.12.2008 в 15:49. |
||||
![]() |
|
||||
VVA,
Возникла проблема. Тестировал код с предыдущего поста, и вот что обнаружил. Пытаюсь командой getactivatecode получить активационный код, ввожу к примеру такие данные ArmenakDESIGNARMENAK\\\\LION а программа почему-то запоминает ArmenakDESIGNARMENAK\\\\\\\\LION ролик пробы в vlide прилагаю
__________________
Блог |
||||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,450
|
Каждый "одинарный" слеш при работе в лиспе меняется на двойной.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Хм. Ну в принципе это можно учесть заранее и ввести в ком строку на половину слешов меньше. Тестирую дальше.
Код:
__________________
Блог Последний раз редактировалось Red Nova, 02.12.2008 в 10:21. |
||||
![]() |
|
||||
Инженер LISP Регистрация: 11.05.2005
Минск
Сообщений: 6,996
|
Red Nova, Ничего учитывать не нужно. Пиши как вернуло с 8 слэшами. Затем смотри реестр. Сравни строчку из твоего кода #45
Код:
Цитата:
__________________
Как использовать код на Лиспе читаем здесь |
|||
![]() |
|
||||
VVA,
Спасибо, но ты не совсем верно меня понял. Проблема с двойным слешом у меня была на другой стадии, когда я пытаюсь сгенерировать активационный код, а вот главная проблема не в этом, а в том, что в итоге в реестр ничего не записывается, то есть мой последний код ошибочен. Юзер выполняет Код:
Я выполняю Код:
Код:
Код:
Нашел таки в чем была ошибка. Теперь все заработало. Код исправил ![]()
__________________
Блог Последний раз редактировалось Red Nova, 02.12.2008 в 13:37. |
||||
![]() |
|
||||
Продуман Регистрация: 22.02.2007
Питер
Сообщений: 2,839
|
Вариант защиты программы из поста #4 шифрованием куска кода
Сама программа: Код:
Код:
Порядок выполнения регистрации (процедуры включить в оформленные по своему усмотрению программы): На машине пользователя (getinfo) - полученный файл "user.dat" отослать программисту На машине программиста: (makeserial "(setq lst (vl-sort lst '(lambda (e1 e2) (> (caddr(assoc 10 (entget e1)))(caddr(assoc 10 (entget e2)))))))") полученный файл "regkey.dat" - отослать пользователю На машине пользователя: (activate "HKEY_CURRENT_USER\\SECRET\\NUMCOD") После этого программа должна работать. P.S. Аналогично с любой другой программой - выдераем кусок кода - вставяем его как параметр при выполнении makeserial - не забыть учесть возможные кавычки внутри кода - " заменить на /" P.P.S. исправленна небольшая ошибка в cryptinfo.
__________________
Когда в руках молоток все вокруг кажется гвоздями. Последний раз редактировалось Дима_, 02.12.2008 в 16:44. |
|||
![]() |
|
||||
Так, как защитить один код я понял. Теперь хочу защитить несколько кодов. Для этого команда activate с #50 должна записать в реестр сразу несколько строк.
Я позабыл какую функцию нужно добавить в if чтобы можно было при T провести сразу несколько операций. Напомните пожалуйста. Имею Код:
Код:
Код:
__________________
Блог |
||||
![]() |
|
||||
Спасибо
__________________
Блог |
||||
![]() |
|
||||
Обнаружил что программа работает не стабильно.
На некоторых машинах процесс активации проходит гладко, а с некоторыми возникают проблемы. Вот например. Юзернейм такой. boris А командой serial получаю "nc~e\177HI_EKBGM^IBPP@ECB" Если перевести командой dserial, то это "boriP=;;DESIGNKAREN\\\\LION" Если с этого скомпилировать активационный номер, то в конце проверка показывает что активационный номер не соответствует серийному. Нет идей? Код:
Добавлено Если по очереди выполнить (getenv "USERNAME") (getenv "COMPUTERNAME") (getenv "LOGONSERVER") то получаю "boris" "DESIGNKAREN" "\\\\LION"
__________________
Блог Последний раз редактировалось Red Nova, 08.12.2008 в 15:50. |
||||
![]() |
|
||||
Не помогло
__________________
Блог |
||||
![]() |
|
||||
Люди дорогие, может все же поможите
![]()
__________________
Блог |
||||
![]() |
|
||||
Инженер LISP Регистрация: 11.05.2005
Минск
Сообщений: 6,996
|
Red Nova, Я тебя в #28 предупреждал:
Цитата:
(boole 6 115 12) - вернет 127 По табице ACSII это символ DEL, который не имеет буквенного представления и выдается ввиде номера \127 "nc~e\177HI_EKBGM^IBPP@ECB" Подбирай другое смещение вместо 12 *** Добавлено Можно "общаться" не строками, а 16-ричнымм кодами символов, представленными ввиде строки Как начало, остальное сам по аналогии Код:
__________________
Как использовать код на Лиспе читаем здесь Последний раз редактировалось VVA, 09.12.2008 в 18:31. |
|||
![]() |
|
||||
Спасибо, а можно как то учесть особенность знака "/", чтобы его количество не удваивалось?
__________________
Блог |
||||
![]() |
|
||||
Инженер LISP Регистрация: 11.05.2005
Минск
Сообщений: 6,996
|
Red Nova, Не дури себе голову, это особенность лиспа
__________________
Как использовать код на Лиспе читаем здесь |
|||
![]() |
|
||||
Придется вручную дублеж выкавыривать.
__________________
Блог |
||||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,450
|
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Когда командой getactivatecode из данных юзера компилируется активационный код, то введя к примеру
"borisDESIGNKAREN\\\\LION" На выходе я получае код, в котором символов соответствующих знаку "\" вдвое больше чем нужно. Вот и выкавыриваю лишнее, раз лиспом это не исправить.
__________________
Блог |
||||
![]() |
|
||||
YngIngKllr Регистрация: 29.03.2005
СПб
Сообщений: 12,968
|
Red Nova
Знаешь получается следующее, программа на рупь, защита на 2 рубля. Если честно то на форуме достаточно открытых кодов, нежели твои программы, если уж человек соображает как работает код то уж найти отмычку к нему сможет без условно. Защита будет на теток грубо говоря, ну и полных нулей в лиспе.
__________________
Работаю за еду. Working for food. Für Essen arbeiten. العمل من أجل الغذاء Працую за їжу. |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,450
|
Так проверь, например, такое:
Код:
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
DEM,
Начнем с того что программы "мои" только условно. Все что я придумал разработали небезызвестные участники форума. Защита же мне нужна именно от "теток", я не собираюсь делать ничего коммерческого, защищаю по одной простой причине. Думаю и ты встречал "коллег" которые ничего из себя не представляя всегда пытаются показать свое превосходство над другими, вот от таких "нехороших людей" я и хочу защитится, а для всех остальных и код открыт, и на форуме все есть. Цитата:
kpblc, Спасибо, но я пока не понял как правильно этим пользоваться.
__________________
Блог |
||||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,450
|
Кхе, хотя вопрос был и не мне, отвечу: для спецификаций либо собственные инструменты, либо ADT-шные. Пока склоняюсь к своим (возможностей больше, скорость работы как минимум сопоставима; а в компилированном виде так вообще выше скорости "штатных" средств в разы).
Теперь насчет кода: а чего там понимать? Если ты вводишь "\", то в лиспе он отображается как двойной. Но в строку (хоть командную, хоть в реестр, хоть в текстовый файл) слеш будет выводиться нормально - одним символом.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
YngIngKllr Регистрация: 29.03.2005
СПб
Сообщений: 12,968
|
Offtop: Блина если для своего КБ делаете, то уж наверняка все будут знать что програмка сделана с вашей подачи. Че её ныкать то???
__________________
Работаю за еду. Working for food. Für Essen arbeiten. العمل من أجل الغذاء Працую за їжу. |
|||
![]() |
|
||||
kpblc,
Сколько я не копался с твоим кодом так и не сумел дельно соеденить его с моим. Покажи пожалуйста как правильно изменить этот код, чтобы в результате в ком строку выходило к примеру не "4B78676F646B614E4F59434D444B58474F444B415656565646434544" а "4B78676F646B614E4F59434D444B58474F444B41565646434544" Код:
Цитата:
Как в ADT спеку делать я не знаю, потому как крайне мало работал на нем. Если просвиетишь как это в ADT делать был бы благодарен.
__________________
Блог Последний раз редактировалось Red Nova, 13.12.2008 в 08:40. |
||||
![]() |
|
||||
проектировшик Регистрация: 01.01.2007
СССР
Сообщений: 5,149
|
VVA, а нельзя ли в архив засунуть все лиспы и на него пароль поставить, а один лисп для активации архва запускать из автокада.
1. тоесть при запуске лиспа он запрашивает пароль к архиву и из архива работают все лиспы, 2. но из архива к примеру ничего просто не вытащишь только можно считывать 3. Архив работает до поределенной даты или определенного количества запусков
__________________
инженер проектировшик с опттом программа авто гад образование высшие |
|||
![]() |
|
||||
Инженер LISP Регистрация: 11.05.2005
Минск
Сообщений: 6,996
|
Red Nova, Дались тебе эти слэши. Предлагаю вообще от них избавляться:
Код:
__________________
Как использовать код на Лиспе читаем здесь |
|||
![]() |
|
||||
VVA О как. Спасибо.
Еще наверное в конце разверну список функцией reverse для большего эфекта ![]() Жаль только через акад не добраться до мак адреса или до серийного номера HDD.
__________________
Блог |
||||
![]() |
|
||||
Цитата:
Библиотека kernel32.dll http://msdn.microsoft.com/en-us/libr...DownFilterText И вот сюда заглянь. Сообщение №3. http://forum.sources.ru/index.php?showtopic=84469 Последний раз редактировалось Supermax, 13.12.2008 в 16:21. |
||||
![]() |
|
||||
Donhuan,
Мда, моя оплошность, я тогда неверно понял, думал что мак адрес вручную нужно вводить, а оказалось что ссылка от VVA была самое то. Теперь подумаю как это с моим кодом скрестить... Supermax, Спасибо, но твои ссылки для меня окозались больно сложными.
__________________
Блог |
||||
![]() |
|
||||
А почему вот это не работает?
Код:
__________________
Блог |
||||
![]() |
|
||||
А какой функцией удалить все знаки :?
__________________
Блог |
||||
![]() |
|
||||
Инженер LISP Регистрация: 11.05.2005
Минск
Сообщений: 6,996
|
__________________
Как использовать код на Лиспе читаем здесь |
|||
![]() |
|
||||
VVA, Спасибо. Даже странно что штатной такой функции нет.
Я тут вот что думал. Наша защита получилась весьма уязвимой, потому как можно запросто вычеслить какая буква какой заменяется в результате bool. Во первых я решил привязываться к мак адресу, он бывает к примеру таким Код:
Код:
(хотя это в общем то и не список, так как разделений между цифрами нету) Код:
Код:
__________________
Блог Последний раз редактировалось Red Nova, 14.12.2008 в 22:40. |
||||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,450
|
Red Nova,
Код:
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Кулик Алексей aka kpblc, Спасибо, правда в конце получается аппендикс, как его удалить?
Код:
__________________
Блог |
||||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,450
|
Замени строку ((not str) "") на ((not str) nil)
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Кулик Алексей aka kpblc,
Неа, не помогло, в конце опять приписывает "". Хотя в принципе это и не мешает, так как я дальше буду применять Код:
__________________
Блог Последний раз редактировалось Red Nova, 15.12.2008 в 10:51. |
||||
![]() |
![]() |
|
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Вопросы по работе системы 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 |