Форум поддержки пользователей. LibreOffice, Apache OpenOffice, OpenOffice.org

Форум поддержки пользователей. LibreOffice, Apache OpenOffice, OpenOffice.org

6 Июль 2020, 20:06 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
Новости: Вы можете задать вопрос по LibreOffice или Apache OpenOffice без регистрации, используя форму
 
   Начало   Помощь Поиск Войти Регистрация    задать вопрос  
Страниц: 1   Вниз
  Печать  
Автор Тема: Привязка макроса к машине  (Прочитано 2028 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Tillevion
Участник
**
Offline Offline

Сообщений: 37


« Стартовое сообщение: 26 Декабрь 2019, 20:06 »

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

Пол: Мужской
Сообщений: 931


« Ответ #1: 27 Декабрь 2019, 00:52 »

можно ли привязать макрос к работе на конкретной машине?
Можно.
Цитата:
И какие данные о компьютере макрос может получить?
Да практически любые. Запускаете через shell внешнюю программу которая собирает нужные данные и записывает их в файл. Затем из макроса читаете этот файл. Улыбка
Записан

Поддержать разработчиков LibreOffice можно можно тут, а наш форум вот тут
economist
Форумчанин
***
Offline Offline

Сообщений: 1 206


« Ответ #2: 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

# пользователь - тут вообще 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 есть искаропки, но тема по большому счету очень интересная.

Если программист написал что-то, что нужно защищать, - то ему поздравления! Значит он написал что-то и вправду нужное и нетривиальное.  
« Последнее редактирование: 27 Декабрь 2019, 11:55 от economist » Записан

Руб. за сто, что Питоньяк
Любит водку и коньяк!
Потому что мне, без оных, -
Не понять его никак...
Tillevion
Участник
**
Offline Offline

Сообщений: 37


« Ответ #3: 27 Декабрь 2019, 20:09 »

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

Если программист написал что-то, что нужно защищать, - то ему поздравления! Значит он написал что-то и вправду нужное и нетривиальное.
Спасибо. Надеюсь, что это так.)
Записан
Tillevion
Участник
**
Offline Offline

Сообщений: 37


« Ответ #4: 5 Май 2020, 23:39 »

# номер тома диска (это не заводской 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
Форумчанин
***
Offline Offline

Сообщений: 1 206


« Ответ #5: 7 Май 2020, 15:56 »

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

Руб. за сто, что Питоньяк
Любит водку и коньяк!
Потому что мне, без оных, -
Не понять его никак...
Tillevion
Участник
**
Offline Offline

Сообщений: 37


« Ответ #6: 16 Май 2020, 17:22 »

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

Сообщений: 1



« Ответ #7: 9 Июнь 2020, 16:19 »

Смотря как он написан и вообще для каких целей. Также и Машину следует указать или параметры макроса.
Записан
Страниц: 1   Вверх
  Печать  
 
Перейти в:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!