Я собираюсь продать свое приложение Ruby для Windows и хочу защитить свое программное обеспечение от кражи или копирования. Я не буду публиковать это, так что это должно быть связано с машиной.
Мне нужен мой код для получения MAC-адреса любого компьютера при запуске и сравнения его с файлом, хранящимся на моем сервере. Я попытался создать уникальный серийный код из MAC-адреса, но гем «macaddr» возвращает ошибку на некоторых компьютерах. Этот код не работает на некоторых компьютерах:
require 'macaddr'
mac = Mac.addr
puts mac
# >> NoMethodError: undefined method 'pfamily' for nil:NilClass
Как я могу получить некоторые уникальные системные идентификаторы и построить из них серийный код? Есть ли другой способ получить уникальный идентификатор оборудования с компьютера в Ruby?
system_profiler SPHardwareDataType
возвращает много информации, включая `UUID оборудования:`, которую вы можете вывести регулярным выражением. Я знаю, что это работает на macOS, но не могу проверить в другом месте. Возможно, вам придется проверить среду и использовать разные команды соответственно. Вы можете запустить это из Ruby, обернув его обратными кавычками илиsystem ...
или парой других способов. - person Tom   schedule 13.02.2019ipconfig /all
или любой другой утилиты в файл, а затем анализировать его? Это лучший способ? На самом деле у меня есть приложение с графическим интерфейсом, и вызовsystem
вызывает всплывающее окно cmd, поэтому я используюwin32ole
для вызова сценариев cmd из Ruby. - person lucaortis   schedule 13.02.2019wmic csproduct get "UUID" #Unique UUID.
wmic nic get "MACAddress" #All MAC addresses on the computer.
Это только для Windows. Я думаю, что эти команды почти такие же, как утилита macOSsystem_profiler
. Я попробую это, и если это сработает, я обновлю свой вопрос или отвечу на него. Я думаю, что более безопасным способом является объединение UUID и MAC-адреса вместе, чтобы сделать лицензионный код, все еще не безопасный на 100%, но он должен помешать обычному пользователю скопировать и вставить код в другое место. - person lucaortis   schedule 13.02.2019