Привязка макроса к машине

Автор Tillevion, 26 декабря 2019, 20:06

0 Пользователи и 1 гость просматривают эту тему.

Tillevion

Добрый день! Подскажите, можно ли привязать макрос к работе на конкретной машине? И какие данные о компьютере макрос может получить?

bigor

Цитата: Tillevion от 26 декабря 2019, 20:06можно ли привязать макрос к работе на конкретной машине?
Можно.
ЦитироватьИ какие данные о компьютере макрос может получить?
Да практически любые. Запускаете через shell внешнюю программу которая собирает нужные данные и записывает их в файл. Затем из макроса читаете этот файл. :)
Поддержать разработчиков LibreOffice можно можно тут, а наш форум вот тут

economist

#2
Если задача предотвратить случайный запуск на другой машине/другим пользователем - то легко.

# номер тома диска (это не заводской serial, при полной переустановке ОС - он обновлется!)
Dim fs, d
Set fs = CreateObject("Scripting.FileSystemObject")
Set d = fs.GetDrive(fs.GetDriveName(fs.GetAbsolutePathName ("C:")))
SerialN = Str(d.serialnumber)
If SerialN <> "your_serial_HDD" Then End

# пользователь - тут вообще 1 строка
If Environ ("USER") <> "legal_username" Then End

Даже так можно сломать 80% "кулхацкеров", если соблюсти несколько элем. правил. Конечно же, модуль BASIC нужно закрыть паролем, никакие пароли явно в коде не хранить (только хэш) и не проверять явно. Для хеширования сгодится обычный XOR из Basic, в который нужно добавить "соль" (или мусор):

supersecret = (SerialN XOR user_id_digits) XOR trial_date

Но если нужно защититься от пиратского копирования (от хакеров), то тут все сложнее:

1) 100% защиты нет. Единственная известная мне компания, продукты которой полноценно не ломают уже 15 лет - это Yamaha/Steinberg. Ямаха поступила гениально просто: взяла на работу весь состав хакерской группировки H2O, которая раньше их ломала. Теперь линейку программа Cubase защищают от взлома бывшие хакеры.

2) Нужен многоуровневый комплекс мер защиты, а не просто привязка к "реквизитам" PC. Тут и обфускация (шифровка) кода, и вынос функций в "недекомпилимые" С-библиотеки и еще пяток прочего.

3) За 10000 USD ломают почти всё и почти наверняка сломают. Эти ребята отладчиком ловят системные вызовы, находят "проверки" и обходят их. Лучшая защита - это поддержка ПО автором и развитие ПО согласно законам маркетинга.

4) Можно реализовать аппаратную защиту в виде USB-донгла. Некоторые виды тяжело ломаются и для защиты продуктов стоимостью 5-500 тыс. руб. вполне целесообразны.

5) Из бесплатного - неплохо продумано в PyArmor (триальные лицензии, привязка к железу, MAC-адресам, аппаратным ключикам, которые можно сделать из флешки итд). Python в OpenOffice|LibreOffice есть искаропки, но тема по большому счету очень интересная.

Если программист написал что-то, что нужно защищать, - то ему поздравления! Значит он написал что-то и вправду нужное и нетривиальное.  
Руб. за сто, что Питоньяк
Любит водку и коньяк!
Потому что мне, без оных, -
Не понять его никак...

Tillevion

Благодарю за подробный обзор!

Цитата: economist от 27 декабря 2019, 11:44Если программист написал что-то, что нужно защищать, - то ему поздравления! Значит он написал что-то и вправду нужное и нетривиальное.
Спасибо. Надеюсь, что это так.)

Tillevion

Цитата: economist от 27 декабря 2019, 11:44# номер тома диска (это не заводской serial, при полной переустановке ОС - он обновлется!)
Dim fs, d
Set fs = CreateObject("Scripting.FileSystemObject")
Set d = fs.GetDrive(fs.GetDriveName(fs.GetAbsolutePathName ("C:")))
SerialN = Str(d.serialnumber)
If SerialN <> "your_serial_HDD" Then End
Подскажите, а как адаптировать этот код для работы с мобильными устройствами?

economist

В смысле макрос StarBasic выполняется на моб устройстве, это что AndrOpenOffice? Файловая система Android то еще извращение.
Тут, кмк, проще организовать web-сервер, с которого из вашей программы читать хэш ключика через моб. интернет.
Руб. за сто, что Питоньяк
Любит водку и коньяк!
Потому что мне, без оных, -
Не понять его никак...

Tillevion

Цитата: economist от  7 мая 2020, 15:56В смысле макрос StarBasic выполняется на моб устройстве, это что AndrOpenOffice? Файловая система Android то еще извращение.
Тут, кмк, проще организовать web-сервер, с которого из вашей программы читать хэш ключика через моб. интернет.
Да, AndrOpenOffice. Благодарю!