Гайд Нормальный клиент с привязкой по железу на питоне

Пользователь
Статус
Оффлайн
Регистрация
12 Июн 2019
Сообщения
865
Реакции[?]
127
Поинты[?]
1K
Ты заебал меня конкретно.
Если питон так лего реверснуть, вот тебе
Пожалуйста, авторизуйтесь для просмотра ссылки.
, давай исходники exe, там всего 2 уровня защиты, любое твое "мне что, делать нечего?!" будет воспринято как слив.
И после этого можешь по теме питона вообще свой пиздак не открывать.
ВХАХВА.Твоё мнение не для кого не важно.Почему я должен тебе реверснуть ненужный никому exe.Я тебе приводил аргументы и в других темах которые ты игнорил.
1:1 и не пиши "гыы слит всё понятно".Приведи мне хоть один аргумент почему питон не так легко реверснуть.Пруфы "pyarmor защищает гыыы" и прочий бред не принимаеться. Я тебе это говорю не как хуй с горы,а как человек который имеет 2.5 года опыта работы с этим языком
 
Эксперт
Статус
Оффлайн
Регистрация
9 Апр 2020
Сообщения
1,428
Реакции[?]
668
Поинты[?]
27K
ВХАХВА.Твоё мнение не для кого не важно.Почему я должен тебе реверснуть ненужный никому exe.Я тебе приводил аргументы и в других темах которые ты игнорил.
1:1 и не пиши "гыы слит всё понятно".Приведи мне хоть один аргумент почему питон не так легко реверснуть.Пруфы "pyarmor защищает гыыы" и прочий бред не принимаеться.
Чел... Я своего добился, ты уже заскарился. Можешь не писать, твое мнение теперь просто 0.
Как языком пиздеть, так ты тут так тут, а как да дела заходит, то :
1624958234765.png
Тебе самому не стыдно, так давить, давить...
И в конце пук-пук ну я это... языки С вперед, пупхон какашка, ай, мама не бей... да сча я спать пойду... :cry:
К тому же, что-то Сталин с Гитлером войну не на аргументах выигрывали...
 
Пользователь
Статус
Оффлайн
Регистрация
12 Июн 2019
Сообщения
865
Реакции[?]
127
Поинты[?]
1K
Чел... Я своего добился, ты уже заскарился. Можешь не писать, твое мнение теперь просто 0.
Как языком пиздеть, так ты тут так тут, а как да дела заходит, то :
Посмотреть вложение 157677
Тебе самому не стыдно, так давить, давить...
И в конце пук-пук ну я это... языки С вперед, пупхон какашка, ай, мама не бей... да сча я спать пойду... :cry:
высер слитого человека.Написал бред а аргументов 0.@Irval уже не раз писал что такая защита говно
Вообщем удачи тебе делать приватное ПО на питоне
 
Эксперт
Статус
Оффлайн
Регистрация
9 Апр 2020
Сообщения
1,428
Реакции[?]
668
Поинты[?]
27K
высер слитого человека.Написал бред а аргументов 0.@Irval уже не раз писал что такая защита говно
Не в обиду Ирвелу, но блять, он же единственный кодер в стране, он же у нас АБСОЛЮТНО все знает.
А сейчас для тебя, дитя нашего объясню, Ирвел писал про патч файла, что справедливо просто и для питона и для С-подобных.
Но блять, представь себе, код можно писать так, чтобы патчем не ломать его логику...
Хотя откуда тебе знать, ты вместо своих заслуг, цитаты Ирвела приводишь в пример.
Низко однако.
 
Пользователь
Статус
Оффлайн
Регистрация
12 Июн 2019
Сообщения
865
Реакции[?]
127
Поинты[?]
1K
Не в обиду Ирвелу, но блять, он же единственный кодер в стране, он же у нас АБСОЛЮТНО все знает.
А сейчас для тебя, дитя нашего объясню, Ирвел писал про патч файла, что справедливо просто и для питона и для С-подобных.
Но блять, представь себе, код можно писать так, чтобы патчем не ломать его логику...
Хотя откуда тебе знать, ты вместо своих заслуг, цитаты Ирвела приводишь в пример.
Низко однако.
Ты так и не написал пруф того что вся вот эта защита будет не бесполезна против заинтересованого крякера
 
Эксперт
Статус
Оффлайн
Регистрация
9 Апр 2020
Сообщения
1,428
Реакции[?]
668
Поинты[?]
27K
Ты так и не написал пруф того что вся вот эта защита будет не бесполезна против заинтересованого крякера
Тк я тебе скинул, ты заскарился, смысл с тобой аргументами перекидоваться, если ты в интер пойдешь с пеной у рта искать ответ, ты на равных просто не вывозишь.
Тебе дали код, ты ааааааа, страшна. Давай аргумен су4ка, ты понимаешь, всем на твои аргументы поебатьс высокой горы, ими просто жопу подтереть можно и тебе же в лицо кинуть.
 
Начинающий
Статус
Оффлайн
Регистрация
10 Окт 2019
Сообщения
19
Реакции[?]
13
Поинты[?]
0
Ты так и не написал пруф того что вся вот эта защита будет не бесполезна против заинтересованого крякера
Можем считать тебя заинтересованным, раз ты не смог крякнуть. Теперь можно считать, что она не бесполезна
 
Пользователь
Статус
Оффлайн
Регистрация
12 Июн 2019
Сообщения
865
Реакции[?]
127
Поинты[?]
1K
Можем считать тебя заинтересованным, раз ты не смог крякнуть. Теперь можно считать, что она не бесполезна
я даже не начинал вхавхав.Я не заинтересован в кряке говно приложений,я привожу аргументы в том что всё это бесполезно
 
Эксперт
Статус
Оффлайн
Регистрация
9 Апр 2020
Сообщения
1,428
Реакции[?]
668
Поинты[?]
27K
Можем считать тебя заинтересованным, раз ты не смог крякнуть. Теперь можно считать, что она не бесполезна
Видишь, уже ее наличие в теории, отпугивает таких гениев реверса, а что будет, если она будет реально стоять там...
 
Олдфаг
Статус
Оффлайн
Регистрация
18 Фев 2019
Сообщения
2,826
Реакции[?]
1,853
Поинты[?]
24K
Думаю, стоит внести небольшую ясность в ваш спор. SQL совершенно прав, что на данный момент очень сложно анпакнуть связку новых PyArmor + PyInstaller. Начнем с того, что после вскрытия EXE перед нами встанет задача декомпиляции .pyc файла версии Python 3.9. Последняя версия uncompyle6 поддерживает только 3.8 версию, но вы, конечно, можете попробовать ее обновить. Обновление - достаточно трудоемкий процесс, который не удался даже известному реверсеру с lolz,
Пожалуйста, авторизуйтесь для просмотра ссылки.
. А если, это и удастся, то встанет другой вопрос - деобфускация pyArmor.
Получить исходный код такой программы очень и очень сложно. Однако, никто не говорил, что так же сложно ее взломать. Например, если pyArmor полностью защитит код от патчинга, то я предлагаю модифицировать хранилище SSL сертификатов интересующего нас EXE и написать свой поддельный сервер для подмены трафика. К сожалению, это тоже не панацея, но метод подойдет для большинства программ, поверьте мне.
 
Эксперт
Статус
Оффлайн
Регистрация
9 Апр 2020
Сообщения
1,428
Реакции[?]
668
Поинты[?]
27K
Думаю, стоит внести небольшую ясность в ваш спор. SQL совершенно прав, что на данный момент очень сложно анпакнуть связку новых PyArmor + PyInstaller. Начнем с того, что после вскрытия EXE перед нами встанет задача декомпиляции .pyc файла версии Python 3.9. Последняя версия uncompyle6 поддерживает только 3.8 версию, но вы, конечно, можете попробовать ее обновить. Обновление - достаточно трудоемкий процесс, который не удался даже известному реверсеру с lolz,
Пожалуйста, авторизуйтесь для просмотра ссылки.
. А если, это и удастся, то встанет другой вопрос - деобфускация pyArmor.
Получить исходный код такой программы очень и очень сложно. Однако, никто не говорил, что так же сложно ее взломать. Например, если pyArmor полностью защитит код от патчинга, то я предлагаю модифицировать хранилище SSL сертификатов интересующего нас EXE и написать свой поддельный сервер для подмены трафика. К сожалению, это тоже не панацея, но метод подойдет для большинства программ, поверьте мне.
А если код пишет человек с iq выше 5?
 
Пользователь
Статус
Оффлайн
Регистрация
12 Июн 2019
Сообщения
865
Реакции[?]
127
Поинты[?]
1K
Думаю, стоит внести небольшую ясность в ваш спор. SQL совершенно прав, что на данный момент очень сложно анпакнуть связку новых PyArmor + PyInstaller. Начнем с того, что после вскрытия EXE перед нами встанет задача декомпиляции .pyc файла версии Python 3.9. Последняя версия uncompyle6 поддерживает только 3.8 версию, но вы, конечно, можете попробовать ее обновить. Обновление - достаточно трудоемкий процесс, который не удался даже известному реверсеру с lolz,
Пожалуйста, авторизуйтесь для просмотра ссылки.
. А если, это и удастся, то встанет другой вопрос - деобфускация pyArmor.
Получить исходный код такой программы очень и очень сложно. Однако, никто не говорил, что так же сложно ее взломать. Например, если pyArmor полностью защитит код от патчинга, то я предлагаю модифицировать хранилище SSL сертификатов интересующего нас EXE и написать свой поддельный сервер для подмены трафика. К сожалению, это тоже не панацея, но метод подойдет для большинства программ, поверьте мне.
тогда нужно включать мозги.Нужно внести поправки и в том что Python от слова вообще не подходит для десктопа
1.Скорость низкая
2.Качество большинство библиотек которые зделаны на С++, С оставляет желать только лучшего.Сам язык по себе костыль на котором делают еще костыли
3.Мультипоточность-о да тут полный пиздец.Есть куча либ но все они работают через жопу.У человека у которого iq среднее будет потеть.
4.Ебаный дебагер в питоне.Запоковал свою прогу pyinstaller + pyarmor,но при любой ошибке будет или краш(если скомпилиль прогу с -windowed)или отчёт об ошибке,таким образом нужно обрабатывать каждую ошибку или прочее
5.Отсутствие низко-уровневого апи,оно как бы и есть(ctypes и прочее),но оно также работает через жопу
В добавок при работе с PyQt and t-kinter будет много проблем опять же по пункту 3.Делаем выводы что для приватного ПО оно не подходит
 
Олдфаг
Статус
Оффлайн
Регистрация
18 Фев 2019
Сообщения
2,826
Реакции[?]
1,853
Поинты[?]
24K
тогда нужно включать мозги.Нужно внести поправки и в том что Python от слова вообще не подходит для десктопа
1.Скорость низкая
2.Качество большинство библиотек которые зделаны на С++, С оставляет желать только лучшего.Сам язык по себе костыль на котором делают еще костыли
3.Мультипоточность-о да тут полный пиздец.Есть куча либ но все они работают через жопу.У человека у которого iq среднее будет потеть.
4.Ебаный дебагер в питоне.Запоковал свою прогу pyinstaller + pyarmor,но при любой ошибке будет или краш(если скомпилиль прогу с -windowed)или отчёт об ошибке,таким образом нужно обрабатывать каждую ошибку или прочее
5.Отсутствие низко-уровневого апи,оно как бы и есть(ctypes и прочее),но оно также работает через жопу
В добавок при работе с PyQt and t-kinter будет много проблем опять же по пункту 3.Делаем выводы что для приватного ПО оно не подходит
Так точно, но это никак не связано с защитой ЯП.
 
Эксперт
Статус
Оффлайн
Регистрация
9 Апр 2020
Сообщения
1,428
Реакции[?]
668
Поинты[?]
27K
Так точно, но это никак не связано с защитой ЯП.
Ему похуй, он в отчаяние, его сегодня несколько раз обоссали и унизили, у человека больше ничего не остается...
 
Пользователь
Статус
Оффлайн
Регистрация
21 Апр 2017
Сообщения
57
Реакции[?]
32
Поинты[?]
0
Хочется так же примкнуть к данному спору, но я сохраню нейтралитет. Считаю что SQL прав в том что отвечать за свои слова нужно если человек открывает рот. И добавлю что компиляция py файла версии 3.9 очень сильно изменилась и обновить uncompyle6/decompyle3 будет сложнее, чем можно себе представить. Конечно, это вопрос времени, как и деобфускация кода который получается в результате работы PyArmor, но нужно всё-таки помнить что никогда не было и не будет 100% защиты от всего на свете, любой бинарник хранит в себе все то, что нужно для взлома, если, конечно, логика не хранится на сервере. Любая защита кода направлена на усложнение исследования его работы, кроме того, можно использовать дополнительные "слои" защиты. Я думаю что тему спора можно закрыть; виртуализация, упаковка, обфускация и пр методы не дадут 100% гарантию того что код не будет скомпрометирован, все будет зависеть от навыков защищающегося и нападающего.
 
Начинающий
Статус
Оффлайн
Регистрация
2 Июл 2021
Сообщения
16
Реакции[?]
12
Поинты[?]
0
подменяем get_license() на return True -> кряк готов :)
 
Последнее редактирование:
Начинающий
Статус
Оффлайн
Регистрация
21 Июн 2021
Сообщения
10
Реакции[?]
2
Поинты[?]
0
Увидев одну из тем, я понял что этот мир уже не спасти от наплывающих питонистов, поэтому решил показать как надо делать.

Так как у нас будет нормальный код и шифрование данных, мы будем использовать алгоритм RSA.
Нам нужно будет сгенерировать 2 пары, одна для сервер-клиент, вторая для клиент-сервер.
Вместо 1024 можно указать любой размер, чем больше, тем дольше будет работать генерация и алгоритм.
Python:
pubkey, privkey = rsa.newkeys(1024)  # генерируем пару ключей
pickle.dump(privkey, open('key.key', 'wb+'))  # сохраняем ключ в файл
Теперь напишем клиент
Python:
import requests
import datetime
import hashlib
import pickle
import uuid
import json
import rsa


def get_hwid() -> str:
    hwid = str(uuid.uuid1(uuid.getnode(), 0))[24:]

    hwid_hash = hashlib.sha256(hwid.encode('utf-8'))

    return hwid_hash.hexdigest()


def post(url: str, data: dict) -> dict:
    client_public_key = pickle.load(open('client_public.key', 'rb'))
    server_private_key = pickle.load(open('server_private.key', 'rb'))

    encoded = rsa.encrypt(json.dumps(data).encode('utf-8'), client_public_key).hex()
    data = {'data': encoded}

    response = requests.post(url, data=data)

    data = response.json()['data']
    decoded = rsa.decrypt(bytes.fromhex(data), server_private_key).decode('utf-8')

    return json.loads(decoded)


def get_license(hwid: str) -> bool:
    data = post('http://localhost:5000/get_license', {'hwid': hwid})
    lic = data['license']

    return datetime.datetime.fromtimestamp(lic) > datetime.datetime.now()


hwid = get_hwid()
lic = get_license(hwid)
А тут будет код сервера, я буду использовать sqlite3 для простоты, кому надо будет перепишет на норм субд
Python:
from flask import Flask, request
import datetime
import sqlite3
import pickle
import json
import rsa

client_private_key = pickle.load(open('client_private.key', 'rb'))
server_public_key = pickle.load(open('server_public.key', 'rb'))


class Database:
    def __init__(self, db_name: str):
        self.db_name = db_name

        self.initialize()

    def initialize(self):
        connection = self.get_connection()
        cursor = connection.cursor()

        cursor.execute('CREATE TABLE IF NOT EXISTS users('
                       'id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,'
                       'hwid VARCHAR(64),'
                       'license REAL)')
        connection.commit()

        cursor.close()
        connection.close()

    def get_connection(self):
        return sqlite3.connect(self.db_name)

    def get_license(self, hwid: str) -> datetime.datetime:
        connection = self.get_connection()
        cursor = connection.cursor()

        cursor.execute(f"SELECT license FROM users WHERE hwid='{hwid}'")

        (result,) = cursor.fetchone()

        cursor.close()
        connection.close()

        return datetime.datetime.fromtimestamp(result)

    def update_license(self, hwid: str, date: datetime.datetime) -> None:
        connection = self.get_connection()
        cursor = connection.cursor()

        cursor.execute(f"UPDATE users SET license={date.timestamp()} WHERE hwid='{hwid}'")
        connection.commit()

        cursor.close()
        connection.close()

    def set_license(self, hwid: str, date: datetime.datetime) -> None:
        connection = self.get_connection()
        cursor = connection.cursor()

        cursor.execute(f"INSERT INTO users (hwid, license) VALUES ('{hwid}', {date.timestamp()}")
        connection.commit()

        cursor.close()
        connection.close()


db = Database('database.db')
app = Flask(__name__)


@app.route('/get_license', methods=['POST'])
def get_license():
    if request.method == 'POST':
        data = request.form['data']
        data = json.loads(rsa.decrypt(bytes.fromhex(data), client_private_key))

        hwid = data['hwid']
        lic = db.get_license(hwid).timestamp()

        response = rsa.encrypt(json.dumps({'license': lic}).encode('utf-8'), server_public_key).hex()

        return {'data': response}
    return '404'


app.run()

Код есть, но мамкины крякеры, никуда еще не делись, поэтому нам нужно будет защитить код клиента. Мы будем использовать для этого PyArmor, у него есть лишь один недостаток, для защиты большого проекта нужно купить лицензию, но нам сейчас хватит и бесплатной версии.
  • Устанавливаем pyarmor
  • Открываем терминал и переходим в папку нашего клиента
  • Пишем pyarmor pack -e " --onefile" client.py
  • Ждем пока закончится магия
  • В папке dist будет лежать exe файл нашего клиента

Для особо внимательных, кто заметил что наш клиент переродился в исполняемом файле: pyarmor использует pyinstaller для упаковки питонячего кода, но даже если супер-крякер777 доберется до распакованной временной папки нашего клиента и декомпилировав pyc файл, открыв исходник он, к его сожалению, увидит лишь это:
Python:
from pytransform import pyarmor_runtime
pyarmor_runtime()
__pyarmor__(__name__, __file__, b'\x50\x59\x41\x52\x4d\x4f...', 2)

Что в итоге мы сделали?
  • Написали более менее человеческий код
  • Защитили исходник
  • Использовали СУБД!!!!
  • Написали сервер (wow)
немного не понял как что и запускать, у меня просто выдает ошибку
 
Пользователь
Статус
Оффлайн
Регистрация
28 Фев 2019
Сообщения
651
Реакции[?]
140
Поинты[?]
29K
немного не понял как что и запускать, у меня просто выдает ошибку
нужно поменять все данные под себя, закинуть серверный файл на сервер, а с клиентским все как написанно в теме
 
Сверху Снизу