Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Python: Общие вопросы > Как привязать скрипт к компьютеру?


Автор: kulibinka 17.3.2009, 10:38
Добрый день.

Ситуация следующая - сейчас пишу некий скрипт на питоне, потом через py2exe из него екзешник делаю.
Но программа будет комерческая, поэтому нужно сделать привязку к железу - т.е. нужно сделать так чтобы пользователь получил некий ключ только под его компьютер, а при запуске прога должна проверить этот ключ, и если все ок продолжить работу, а иначе вырубаться.

Как делаются такие привязки к железу?

Автор: leneCaress 17.3.2009, 17:52
а какой уровень надежности защиты тебе требуется?

откровенно говоря, мне не удается представить более мение нормальной защиты того что создает py2exe

Автор: kulibinka 17.3.2009, 18:03
Цитата(leneCaress @ 17.3.2009,  17:52)
а какой уровень надежности защиты тебе требуется?

откровенно говоря, мне не удается представить более мение нормальной защиты того что создает py2exe

А какая разница py2exe или что-то еще?

Ну например привязка к серийному номеру винчестера+ID  процессора + еще что-то там для конкретной машини и все это захешировать. 

Автор: leneCaress 17.3.2009, 19:18
разница такая...
если тебе нужна защита которую не сможет вскрыть простой советский человек - клиент, не анализируя исходники твоей системы и пр. это одно дело...

другое дело, если тебе нужна защита от взлома.... это совсем другой уровень задачи...

если нужно просто хоть чтото...
то:
1. серийники ФС разделов получаются с помощью GetVolumeInformation() из вин апи.
2. можно использовать само разбиение дисокв, их модели
3. дата установки видны: в реестре HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\InstallDate
4. на счет остального железа, см: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum
5. ид процессора получается, насколько я помню ассемблерными коммандами ТЕ из питоновского кода не получишь.
6. собственно дата генерации запроса на регистрацию

и пр...

Автор: badgopher 19.3.2009, 11:03
Цитата(leneCaress @ 17.3.2009,  19:18)
5. ид процессора получается, насколько я помню ассемблерными коммандами ТЕ из питоновского кода не получишь.

Получишь. Для этого достаточно написать Cython простейшую сишную функцию с асемблерной вставкой.

Автор: kulibinka 19.3.2009, 11:10
Цитата(badgopher @ 19.3.2009,  11:03)
Цитата(leneCaress @ 17.3.2009,  19:18)
5. ид процессора получается, насколько я помню ассемблерными коммандами ТЕ из питоновского кода не получишь.

Получишь. Для этого достаточно написать Cython простейшую сишную функцию с асемблерной вставкой.

А код на Cython простейшей сишной функции с асемблерной вставкой не покажете?

Автор: pythonwin 19.3.2009, 11:39
Цитата(badgopher @  19.3.2009,  14:03 Найти цитируемый пост)
Получишь. Для этого достаточно написать Cython простейшую сишную функцию с асемблерной вставкой. 


badgopher, дай пожалуйста, ссылку на пример с такой или похожей вставкой

Автор: alex_smirnov 19.3.2009, 13:08
Если кто найдет заветную ассемблерную вставку, то можно без Cython'a, с помощью pyCode.

Автор: bel_nikita 20.3.2009, 21:40
Привязка к железу не есть хорошо. Пользователь поменял ПК и как дальше быть?

З.Ы.: А если привязываться к железу, то бери MAC-адрес сетевой карты - 100% уникальный идентификатор.

Автор: pythonwin 21.3.2009, 08:36
Цитата(bel_nikita @  21.3.2009,  00:40 Найти цитируемый пост)
то бери MAC-адрес сетевой карты - 100% уникальный идентификатор. 

а если две сетевые карты или карта сгорела?

Автор: bel_nikita 21.3.2009, 18:47
pythonwin,
Каждая сетевая карта содержит MAC-адрес. MAC-адрес - это 6-ти байтовый уникальный идентификатор, двух карт с одинаковым адресом в природе не существует. Если нет сетевой карты, то можно привязаться к идентификатору процессора (инструкция CPUID).
Но опять же повторюсь - привязка к железу - это не есть хорошо. Лучше продумать какую-нибудь онлайн  систему  регистрации пользователя или на хэш каком-нибудь.

Автор: leneCaress 21.3.2009, 21:48
да я бы больше сказала - любая система регистрации-ограничения страшно мешает и бесит хоть сколькото квалифицированных пользователей.

НО... если уж делать регистрацию, то так чтобы она давала минимум помех пользователю и при этом сносно работала.
(гарантирую - ни один пользователь не будет рад, если ваша программа вдруг откажется работать изза того что у него сгорела сетевуха или поставили новую... или апгрейднули комп... а ему вот прям сейчас нужна ваша прога, а на дворе ночь и вы спите smile )

не используйте хотябы тех параметров которые могут поменятся сравнительно легко - тот же мак-адрес..
и тем более ip адрес ихи хостнейм (были случаи что проги привязывались к этом)...
я даже видела привязку к разрешению экрана.
вообщем - не доходите до маразма smile

Автор: pythonwin 23.3.2009, 07:16
Цитата(bel_nikita @  21.3.2009,  21:47 Найти цитируемый пост)
Каждая сетевая карта содержит MAC-адрес. MAC-адрес - это 6-ти байтовый уникальный идентификатор, двух карт с одинаковым адресом в природе не существует. Если нет сетевой карты, то можно привязаться к идентификатору процессора (инструкция CPUID).


Цитата(bel_nikita @  21.3.2009,  21:47 Найти цитируемый пост)
Но опять же повторюсь - привязка к железу - это не есть хорошо. Лучше продумать какую-нибудь онлайн  систему  регистрации пользователя или на хэш каком-нибудь. 

согласен, что привязка к ПК не правильно, о чем я и хотел сказать. но online регистрацию позволить себе может не каждый или тот кто может эта регистрация бесит


leneCaress, могу посоветовать привязку ко времени использования - чтобы программа либо перестала работать или работала с ограничениями по прошествии какого-то времени

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)