Загрузка...

[Python] Securing a Program with Unix Time

Thread in Python created by Barbarella Feb 20, 2020. 363 views

  1. Barbarella
    Barbarella Topic starter Feb 20, 2020 2 Jan 6, 2019
    Решил поделиться кодом, который, возможно, кому-то пригодиться. Я задумывался о вопросе создания некой лицензии, которую можно реализовать при продаже программ. Так как я программист не очень, все что пришло в голову, это сделать привязку к Unix времени.
    Python
    import os
    import sys
    import time


    unix = int(time.time())


    path = os.environ["WINDIR"] + '/System32/config/cache.txt'


    passwords = 'M6U83FK6', 'LWAY0W2W', 'BGDRN8LE', 'B46N02NP', 'THWOGFO4'


    a = 1582199632
    b = 1582299632


    try:
    file = open(path)
    key = file.read()
    file.close()
    if a < int(key) < b:
    print('• Доступ разрешен •')
    if not a < int(key) < b:
    while True:
    input('Введите секретный пароль: ')


    except:
    while True:
    password = input('Введите пароль: ')
    if password in passwords:
    try:
    file = open(path, 'w')
    file.write(str(unix))
    file.close()
    except:
    print('Запустите от имени администратора.')
    input('Намжите Enter, чтобы закрыть программу.')
    sys.exit()
    if a < unix < b:
    print('• Доступ разрешен •')
    break
    if not a < unix < b:
    while True:
    print('Лицензия использована на другом компьютере!')
    input('Нажмите Enter, чтобы закрыть программу.')
    sys.exit()
    if password not in passwords:
    print('• Доступ запрещен •')
    print('Приобретите лицензию!')
    input('Нажмите Enter, чтобы закрыть программу.')
    sys.exit()
    Объяснение:
    1) path - путь, по которому создается текстовый файл cache, в котором записывается текущее Unix время.
    os.environ["WINDIR"] - определяет, где расположена папка Windows.
    Можно было прописать путь сразу 'C:/Windows//System32/config/cache.txt', но у некоторых может быть Windows не на диске C, а на другом.
    Путь можете указать другой, задача в том, чтобы файл не нашли / случайно не удалили, поэтому его стоит подальше закинуть.
    2) Параметры 'a' и 'b' - это значения, которые нужно менять, чтобы у другого человека запустилась программа. Я беру параметр 'a' как время Unix перед компиляцией и за параметр 'b' беру значение 'a+86400' (24 часа). То есть, у человека будет 24 часа, чтобы запустить программу, если он не запустит за это время, то придется давать по новой, но скорее всего он запустит.
    3) passwords - набор паролей, которые вы предоставляете при продаже. Сделано больше для отвода глаз и предоставляется для покупки, но мы то с вами знаем, что пароль просто разрешает запустить программу первый раз, дальше просто считывается Unix время из файла.

    Минусы:
    1) Нужно каждый раз компилировать файл по новой, т.к. нужно менять диапазон каждый раз.
    2) Если человек догадается, что дело в Unix, он просто сменит время, но до этого еще нужно додуматься.

    Дополнительно:
    Я использую pyinstaller для создания exe файлов. Чтобы все работало, ввожу следующую команду: "pyinstaller --onefile file.py"
    Код проверял, все работает ровно. Не исключаю, что написан коряво, можете доработать.
    Честно говоря, я уже не знаю, нужно ли запускать от имени администратора, раньше требовалось, сейчас же этого не надо. На всякий случай говорите покупателю, что лучше запустить от имени администратора.


    Всем добра и позитива!
     
  2. Котейка_inactive2523595
    Ты бы мог доделать до конца и уже выкладывать, а так - сырое мясо.
     
  3. Barbarella
    Barbarella Topic starter Feb 20, 2020 2 Jan 6, 2019
    Что доделать? Тут все реализовано из задуманного.
     
  4. Barbarella
    Barbarella Topic starter Feb 20, 2020 2 Jan 6, 2019
    Если знать, где лежит файл, и что привязка сделана по времени, то тогда можно.
     
  5. SHURIK_1337
    SHURIK_1337 Feb 21, 2020 Пак проектов // zelenka.guru/threads/2070358 6 Jan 8, 2017
    Barbarella, любой код программы узнать можно, люди поймут, что дело во времени и всё
     
  6. RealmeX3
    RealmeX3 Feb 21, 2020 97 Mar 20, 2017
    Barbarella, знать где лежит файл можно обычным процесс хакером т.к он показывает откуда считывается/записывается информация
     
  7. Barbarella
    Barbarella Topic starter Feb 21, 2020 2 Jan 6, 2019
    А как можно узнать код программы, если она в exe?
     
  8. renameduser_349992
    renameduser_349992 Feb 22, 2020 @bgrprojects_bot 45 Mar 25, 2018
    Barbarella, exe собранный pyinstaller легко декомпилировать
     
  9. Barbarella
    Barbarella Topic starter Feb 22, 2020 2 Jan 6, 2019
    А чем тогда компилировать, чтобы exe файл нельзя было декомпилировать?
     
  10. S0baken
    S0baken Feb 22, 2020 Продаю всё, что движется. И не движется тоже 395 Aug 3, 2017
    Питон так почти не скомпилируешь, держу в курсе
     
  11. renameduser_349992
    renameduser_349992 Feb 22, 2020 @bgrprojects_bot 45 Mar 25, 2018
    Barbarella, Вообще это сложно назвать компиляцией, это скорее просто сборка в exe файл, можешь использовать параметр --key ключ123, но это не сильно поможет) Если хочешь защищенную программу, то учи c++ например)
     
  12. Barbarella
    Barbarella Topic starter Feb 22, 2020 2 Jan 6, 2019
    Понял, спасибо)
     
Loading...
Top