gifts2017

Получение MAC адресов системы и его шифрование

Опубликовал Андрей Жаворонков (andy_zhav) в раздел Программирование - Защита и шифрование

Сделал обработку, которая выдергивает все МАС адреса из системы, сохраняет выбранный адрес в ТХТ файл с 1024 битным шифрованием по алгоритму RC4.

Обработка является готовым алгоритмом для программной привязки конфигурации к аппаратному обеспечению. В идеале должна работать следующая схема: при первом запуске конфигурации запускается обработка, которая проверяет наличие шифрованного файла с МАС адресом по указанному пути. Если файла нет - работать ниче не будет. Вываливается просьба о регистрации. Запускается обработка, которая сканирует аппаратную часть компа (выложу позже) в файл, который необходимо отправить разработчику. Разработчик, получив файл, получает сведения о всех МАС адресах системы пользователя и генерирует файл - ключ по одному или нескольким адресам и отправляет обратно пользователю. Пользователь кидает ключ в указанный путь и запускает конфу. Конфа видит этот файл, декодирует его, сверяет все МАС адреса системы с адресом из файла. Если совпадение найдено - работаем, если нет - извините.

Скачать файлы

Наименование Файл Версия Размер Кол. Скачив.
-
.1245211808 8,36Kb
12.10.14
58
.1245211808 8,36Kb 58 Скачать

См. также

Подписаться Добавить вознаграждение

Комментарии

1. larissa builova (larisab) 17.06.09 14:04
Оформление диалога никакое, а так классно.
2. Андрей Жаворонков (andy_zhav) 17.06.09 14:30
(1) Оформление не было смыслом этой обработки. Сделано за 1 минуту.
3. larissa builova (larisab) 17.06.09 14:49
(2) А что, есть обработки у которых весь смысл только в оформлениии? Т.е. исправить ошибку в тексте кнопки назвать как то обработку вместо ВнешняяОбработка1, (я не говорю про ТабличноеПоле1, это просто мелочь) - это излИшества?
4. Serj (Serj1C) 17.06.09 15:08
5. Андрей Жаворонков (andy_zhav) 17.06.09 16:00
(3) конечно нет. Дело в том что данная обработка - не готовый продукт а инструментарий для программиста. Шаблон. На счет очепятки - звиняйте. Видел. Просто лень исправлять. Скажите спасибо что не оставил первоначальные названия кнопок (кнопка и кнопка 2) :)
(4) Форму сделал - за минуту, даже меньше - честное слово :)
6. larissa builova (larisab) 17.06.09 16:23
Идею запатентовать выложил? За идею тебе плюс, а за форму и понты - минус. Остальные "лохи" время тратят и на форму, и на скриншоты и пр. Так что не обессудь.
vitaliy.ermolenko; Арчибальд; +2 Ответить 1
7. Александр Рытов (Арчибальд) 17.06.09 16:30
(5) Просишь спасибо - пожалуйста
8. ROM (ROM_1C) 17.06.09 16:55
Как не как, но подобное не часто делают...
9. Александр Рытов (Арчибальд) 17.06.09 17:00
(8)Да все правильно, идея хороша. Но зачем к неряшливости еще и распальцовку добавлять?
10. Андрей Скляров (coder1cv8) 17.06.09 17:21
А если я в конфе просто уберу проверку "ключевого" файла, тогда что?... )
11. Андрей Жаворонков (andy_zhav) 18.06.09 08:03
(6) Каюсь, дизайном не занимался совсем, но не изза понтов, а изза нехватки времени. Обработка - часть проекта по защите конфигурации - была сделана для отработки данного фрагемента кода. Сделал - решил выложить.
(10) Проверку ключевого файла можно убрать, если есть исходные коды. Если поставка без исходных кодов - это будет несколько проблематично.
12. Андрей Скляров (coder1cv8) 18.06.09 08:33
(11) Разве? ) А я никакой проблемы не вижу... Ведь это только маркетинговый ход - "поставка без исходных кодов"! ) На самом деле там все есть... )
13. Андрей Жаворонков (andy_zhav) 18.06.09 08:48
(12) Оно там все есть в бинарном виде. Хотя, если честно, я сам сомневаюсь на счет надежности всего этого. Поэтому я решил физически убрать код из модулей в защищаемой конфигурации и переместить их в закодированный по указанному здесь алгоритму шифрования внешний файл. В конфигурации остались процедура ВызватьФункцию и ВызватьПроцедуру. Хотя, с точки зрения 1С - это не правильно: по их мнению конфигурация должна быть единым целым, но с точки зрения безопасности - получше. Не спорю, что и этот метот защиты имеет свои плюсы и минусы. Пока просто лучше не придумал.
14. Андрей Скляров (coder1cv8) 18.06.09 08:59
(13) Вот лучше бы рассказал как сделать внешний модуль по нормальному в восьмерке... ) А получение МАС-адреса и шифрование - это все банально... ))
15. Андрей Жаворонков (andy_zhav) 18.06.09 09:24
(14) Да пожалуста. Только параметры процедуры пока не воспринимаются. Нужно добавить еще один параметр в процедуре кроме "ИмяПроцедуры" - "Параметры" - строка с набором параметров через запятую, разбирать строку и подставлять в шаблон. И с функциями пока вопрос не решен. Как сделаю полностью алгоритм - выложу в отдельную тему

Процедура ВыполнитьПроцедуру(ИмяПроцедуры) Экспорт
Текст = новый ТекстовыйДокумент;
Текст.Прочитать("d:\f.txt");
ТелоПроцедуры = "";
ПроцедураНайдена = Ложь;
Для н = 1 по Текст.КоличествоСтрок() Цикл
Стр = Текст.ПолучитьСтроку(н);
Стр = СокрЛП(Стр);
Если Не ПроцедураНайдена Тогда
Если Найти(Стр,"Процедура " + ИмяПроцедуры+"(") = 1 Тогда
ПроцедураНайдена = Истина;
КонецЕсли;
Иначе
Если Стр = "КонецПроцедуры" Тогда
Прервать;
КонецЕсли;
ТелоПроцедуры = ТелоПроцедуры +" "+ Стр;
КонецЕсли;
КонецЦикла;
Выполнить(ТелоПроцедуры);
КонецПроцедуры

P.S. а получение мак адреса и шифрование - может и банально, но нужно. :)
16. Андрей Жаворонков (andy_zhav) 18.06.09 09:28
Кстати, использование мнешних модулей обнаруживает ряд преимуществ: 1. Динамическое обновление конфы без выгоняния пользователей и даже без закрывания объектов конфигурации в пользовательском режиме,
2. Автоматический анализ изменений в коде - удобно для создания реестра изменений
3. ....
17. Валерий Агеев (awa) 18.06.09 10:08
(15) Слабая защита. Процедура ВыполнитьПроцедуру находится в каком-то модуле самой 1С, как говорилось выше, ни пароль на модуль, ни поставка без исходных кодов не являются хоть чуть-чуть защитой, а значит мы имеем доступ к этой процедуре. Далее ставится точка останова на "Выполнить(ТелоПроцедуры);", и вот вам тело процедуры в открытом незашифрованном виде! И неважно сколько бит у ключа шифрования, 1024 или 8192.
Кроме того, Выполнить() - это тормоза. В твоем методе каждый раз будет распаковываться откуда-то тело процедуры, затем 1С ее будет каждый компилировать и лишь затем выполнять. Если таким образом прятать часто вызываемую процедуру, то 1С будет страшно тормозить.
coder1cv8; andy_zhav; СергейКа; +3 Ответить 2
18. Андрей Жаворонков (andy_zhav) 18.06.09 10:16
(17) Нда... Это точно... Короче одними средствами 1с трудновато будет. Надо наверное будет писать Com сервер на стороннем языке.
19. Андрей Жаворонков (andy_zhav) 18.06.09 10:32
20. Сергей Кучеров (СергейКа) 18.06.09 10:32
(17) Кстати, давно хотел спросить мнения как специалиста.
Простенький пример защиты кода реализованный здесь http://infostart.ru/projects/3647/
Насколько перспективен? Это первые опыты в данном направлении. Есть очевидные плюсы у зашифрованной:
Не требует внешних компонент для работы
При знании пароля легко исправить текст модуля в отличии от обфускации.
Существующие декомпиляторы её не берут (и Ваша и другие с аналогичным принципом)
Минусы :
Достаточно легко вскрыть если разбираешься во внутренней структуре и, соответственно, написать новый декомпилятор.

Не выкладывал из-за очевидного минуса. Для массовости не подойдет, декомпилятор будет быстро :)
21. Валерий Агеев (awa) 18.06.09 11:52
(20) Собственно, ответ содержится в вопросе. Мелкие изменения байт-кода с целью сбить с толку существующие декомпиляторы работают до тех пор, пока защищенная обработка не попадется хоть немного грамотному человеку, способному чуть-чуть подправить декомпилятор, либо привести байт-код в вид, понятный декомпилятору.
Я такие мелкие изменения байт-кода встречаю не первый раз, в EI от German ( http://infostart.ru/projects/782/ ) тоже используются подобные трюки (у Германа блоки "Cmd", "Const", "Var", "Lbl" и "Proc" поменяны местами, и сами они преобразованы в верхний регистр - "CMD", "CONST" и т.д.).
У тебя убраны переносы строк и в конец файла добавлен мусор. Все это обходится очень легко.
Конечно, такие изменения имеют право быть, так как все-таки затрудняют вскрытие модуля для подавляющего большинства людей, но и сколь-нибудь серьезной защитой это назвать тоже нельзя.
Могу выложить вскрытую обработку РедактированиеФайлаНДФЛ_Демо ;)
СергейКа; +1 Ответить 1
22. Сергей Кучеров (СергейКа) 18.06.09 12:08
(21) Я же не спорю :) Изменения достаточно мелкие, но ведь работают. Кроме того можно использовать в разной компоновке и через время менять что-то еще. Т.е. каждый раз придется дописывать декомпилятор. А это достаточно напряжно (поддерживать актуальность) для использования частных случаев.
Поэтому и интересовался перспективой :)
23. Сергей Кучеров (СергейКа) 18.06.09 12:10
+ 22 Не, обработку не надо :)
Спасибо за анализ.
24. Валерий Агеев (awa) 18.06.09 12:25
(22) На самом деле возможности данного метода не так уж велики. Возможные изменения ограничены самой 1С, то есть нельзя изменить файл байт-кода так, что его перестанет понимать 1С. Рано или поздно разбор формата файла декомпиляторов достигнет возможностей самой 1С и тогда такой метод защиты станет неактуальным.
Но на какое-то время, безусловно, перспективы у такой защиты есть)) Тем более, что Самурай, похоже, перестал интересоваться развитием своего декомпилятора :)
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа