Задать вопрос
@CleanyBoom

Защита софта на Python?

Можно ли как то реализовать авторизацию только конкретных устройств в приложении на Python?
  • Вопрос задан
  • 671 просмотр
Подписаться 2 Простой 2 комментария
Пригласить эксперта
Ответы на вопрос 4
Vindicar
@Vindicar
RTFM!
Вопрос вообще "как идентифицировать компьютер". И это нетривиально.
1. Получить MAC адрес сетевой карты и проверить его на вхождение в список. Простейший способ его получить - примерно такой:
import uuid
print(hex(uuid.getnode()))

* неясно, как поведет себя функция, если на компе несколько сетевых адаптеров.
* смена сетевой карты сломает программу
* MAC адрес сетевой карты часто можно сменить
2. Можно попробовать использовать CPUID, например, так.
Но я без понятия, какие процессоры это поддерживают!
3. Можно разместить секретное значение в реестре целевых машин, и проверять его наличие.

Самая большая проблема - эту проверку может отломать любой, более-менее знакомый с языком.

Можешь использовать пакет типа pyarmor, он вроде предоставляет механизм создания "лицензий" и обфусцирует исходный код, чтобы его труднее было анализировать и изменить. Но и pyarmor тоже отламывается при желании.

Так что главный вопрос: а нафига?
Ответ написан
SubUser
@SubUser
Когда уже на завод
pyarmor + проверка по hwid
hwid пример:
def check_hardware_hwid():
    hwid = str(str(subprocess.check_output('wmic csproduct get uuid')).strip().replace(r"\r", "").split(r"\n")[1].strip())
    r = requests.get("https://pastebin.com/raw/fC1Tqs18")
    if hwid in r.text:
        print("Access granted...")
    else:
        print("Error! HWID Not I Database!")
        print("Please contact @mwsde in Telegram. HWID: " + hwid)
        os.system('pause >NUL')
Ответ написан
mihavxc
@mihavxc
Если нужна действительно зашита, в не создание ее видимости, то вот решение, но оно довольно тяжеловесное https://thales-sentinel.ru/protection/python/

Но предварительно лучше бы определиться с моделью угроз.
Ответ написан
Комментировать
@Skillz01
Где-то читал, что гугл хром, узнает серийный номер процессора. Помогает "узнавать" компьютер на котором он работает. Точно не знаю как это работает на Python. Но думаю, если искать, можно найти инфу. А на счет МАС-адреса, если будет несколько сетевых карт, то этот параметр не будет уже настолько уникальным.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы