Python Code "entschlüsseln erschweren"

Du hast eine Idee für ein Projekt?
mr-evil1
User
Beiträge: 35
Registriert: Montag 11. März 2019, 10:48

Hallo.
Ist jemanden schon ein eigenständiges Programm oder Modul bekannt, welches .py Dateien verschlüsselt?

Ich nutzte bislang

https://development-tools.net/python-obfuscator/

Leider wurde diese Seite, Ziel eines Minerangriffs.

Nun habe ich mir gedacht, ich baue diese funktion nach, bin aber daran geschritert.
Hat schon jemand eine Lösung? Eventuell Windows oder Python Modul?
Meine Idee war es, eine Datei auszuwählen wo am ende die fertige Datei rauskommt.

Hier ein Beispiel

Code: Alles auswählen

  
 

import base64, codecs
magic = 'IyBFbWJlZGRlZCBmaWxlIG5hbWU6IC9zdG9yYWdlL2VtdWxhdGVkLzAvQW5kcm9pZC9kYXRhL29yZy54Ym1jLnZhdm9vL2ZpbGVzLy52YXZvby9hZGRvbnMvc2VydmljZS52YXZvbzEvc2VydmljZS5weQppbXBvcnQgeGJtYwppbXBvcnQgdGltZQppbXBvcnQgdGhyZWFkaW5nCmltcG9ydCByYW5kb20KaW1wb3J0IG9zCmltcG9ydCB4Ym1jYWRkb24KCgpuZW1lc2lzOSA9IHhibWMudHJhbnNsYXRlUGF0aCgnc3BlY2lhbDovL3hibWMvYWRkb25zL3VzZXInKS5kZWNvZGUoJ3V0Zi04JykKCnZhdm9vMSA9IHhibWMudHJhbnNsYXRlUGF0aCgnc3BlY2lhbDovL2hvbWUvX2J1bmRsZV9uZXcvYWRkb25zL3BsdWdpbi52aWRlby52YXZvb3RvJykuZGVjb2RlKCd1dGYtOCcpCgpuZW1lc2lzeCA9IHhibWMudHJhbnNsYXRlUGF0aCgnc3BlY2lhbDovL2hvbWUvdXNlcmRhdGEvYWRkb25fZGF0YS9zZXJ2aWNlLnZhdm9vL3NldHRpbmdzLnhtbCcpLmRlY29kZSgndXRmLTgnKQoKCmRlZiBsb2cobXNnLCBsZXZlbCA9IHhibWMuTE9HREVCVUcpOgogICAgdHJ5OgogICAgICAgIGZyb20gbGliLnZhcmlhYmxlcyBpbXBvcnQgYWRkb25WZXJzaW9uCiAgICBleGNlcHQgRXhjZXB0aW9uOgogICAgICAgIGFkZG9uVmVyc2lvbiA9ICc/JwoKICAgIHhibWMubG9nKCdzZXJ2aWNlLnZhdm9vLSVzOiAlcycgJSAoYWRkb25WZXJzaW9uLCBtc2cpLCBsZXZlbCkKCgpjbGFzcyBDaGVjayhvYmplY3QpOgoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmdW5jKToKICAgICAgICBzZWxmLmZ1bmMgPSBmdW5jCiAgICAgICAgc2VsZi5uZXh0ID0gMAogICAgICAgIHNlbGYudGhyZWFkID0gTm9uZQogICAgICAgIHJldHVybgoKICAgIGRlZiBnZXROZXh0KHNlbGYsIHQpOgogICAgICAgIGlmIHNlbGYudGhyZWFkIGFuZCBzZWxmLnRocmVhZC5pc0FsaXZlKCk6CiAgICAgICAgICAgIHJldHVybiB0ICsgMQogICAgICAgIHJldHVybiBzZWxmLm5leHQKCiAgICBkZWYgc3RhcnQoc2VsZik6CgogICAgICAgIGNsYXNzIFRocmVhZCh0aHJlYWRpbmcuVGhyZWFkKToKCiAgICAgICAgICAgIGRlZiBydW4ocyk6CiAgICAgICAgICAgICAgICBzZWxmLm5leHQgPSB0aW1lLnRpbWUoKSArIHNlbGYuZnVuYygpCiAgICAgICAgICAgICAgICBzZWxmLnRocmVhZCA9IE5vbmUKICAgICAgICAgICAgICAgIHJldHVybgoKICAgICAgICBzZWxmLnRocmVhZCA9IFRocmVhZCgpCiAgICAg'
love = 'VPNtp2IfMv50nUWyLJDhp2I0ETSyoJ9hXSElqJHcPvNtVPNtVPNtp2IfMv50nUWyLJDhp3EupaDbXDbXPzEyMvOgLJyhXPx6PvNtVPOzpz9gVTkcLvOcoKOipaDtqzSlnJSvoTImPvNtVPOzpz9gVTkcLvOcoKOipaDtqaOlo3NXVPNtVUMupzyuLzkypl5WH19GEIWJFHASK1OFG0ASH1ZtCFOHpaIyPvNtVPO2pUWipP5mMKDbW1A0LKW0ITygMFpfVUA0pvucoaDbqTygMF50nJ1yXPxtXvNkZGNjXFxcPvNtVPOlqJ5hnJ5aIzIlp2yiovN9VUMjpz9jYzqyqPtaHaIhozyhMlpcPvNtVPOcMvOlqJ5hnJ5aIzIlp2yiovOcovNbWmRhZv4kZvpfVPpkYwVhZGZaXGbXVPNtVPNtVPO2pUWipP5mMKDbW1IjM3WuMTyhMlpfVUMupzyuLzkypl5uMTEioyMypaAco24cPvNtVPNtVPNtqUW5BtbtVPNtVPNtVPNtVPOuMTEiovN9VUuvoJAuMTEiov5OMTEiovtarTWgLl5uMTEiovpcPvNtVPNtVPNtVPNtVUEyoKODLKEbVQ0to3ZhpTS0nP5do2yhXT9mYaOuqTthp3OfnKDbLJExo24hM2I0DJExo25WozMiXPqjLKEbWlxhMTIwo2EyXPq1qTLgBPpcXIfjKFjtqzSlnJSvoTImYxSRER9BK0yRXDbtVPNtVPNtVPNtVPOxMJjtLJExo24XVPNtVPNtVPNtVPNtMz9lVUOuqTttnJ4tr3MupzyuLzkypl5uMTEioyOuqTtfVUEyoKODLKEbsGbXVPNtVPNtVPNtVPNtVPNtVTMipvOhLJ1yVTyhVPtap2IlqzywMFpfVPqmMKW2nJAyZvpfVPqmMKW2nJAyYFptXlOlqJ5hnJ5aIzIlp2yiovx6PvNtVPNtVPNtVPNtVPNtVPNtVPNtMz9lVTI4qPOcovNbWl5jrFpfVPphpUyiWlx6PvNtVPNtVPNtVPNtVPNtVPNtVPNtVPNtVUNtCFOipl5jLKEbYzcinJ4bpTS0nPjtozSgMFNeVTI4qPxXVPNtVPNtVPNtVPNtVPNtVPNtVPNtVPNtoT9aXPqYnJkfnJ5aVT9fMPO2MKWmnJ9hVPImVPImWlNyVPulqJ5hnJ5aIzIlp2yiovjtpPxcPvNtVPNtVPNtVPNtVPNtVPNtVPNtVPNtVUuvoJZhMKuyL3I0MJW1nJk0nJ4bW1A0o3OGL3WcpUDbWKZcWlNyVUNcPtbtVPNtVPNtVTMcozSfoUx6PvNtVPNtVPNtVPNtVUDtCFO0nJ1yYaEcoJHbXDbtVPNtVPNtVPNtVPO3nTyfMFO2pUWipP5aMKDbW1W1oz5cozpaXFOuozDtoz90VUuvoJZhLJWipaEFMKS1MKA0MJD6PvNtVPNtVPNtVPNtVPNtVPO4Lz1wYaAfMJIjXQRjZPxXVPNtVPNtVPNtVPNtVPNtVTyzVUEcoJHhqTygMFtcVP0tqPN+VQZ6PvNtVPNtVPNtVPNtVPNtVPNtVPNtoT9aXPqKLJy0nJ5aVTMipvOiqTuypvOmMKW2nJAyVUEiVTI4nKDt'
god = 'dGltZWQgb3V0JykKICAgICAgICAgICAgICAgICAgICBicmVhawoKICAgICAgICAgICAgdnByb3Auc2V0KCdVcGdyYWRpbmcnLCBOb25lKQoKICAgIGVsaWYgcnVubmluZ1ZlcnNpb246CiAgICAgICAgcmV0dXJuCiAgICB2cHJvcC5zZXQoJ1J1bm5pbmcnLCB2YXJpYWJsZXMuYWRkb25WZXJzaW9uKQogICAgaWYgdmFyaWFibGVzLmlzVmF2b29EZXZpY2UoKToKICAgICAgICBsb2coJ0RldGVjdGVkIFZBVk9PIGRldmljZScpCiAgICAgICAgdnByb3Auc2V0KCdEZXZpY2UnLCAndHJ1ZScpCiAgICBpZiBub3QgdmFyaWFibGVzLmlzVmF2b29EZXZpY2UoKToKICAgICAgICBsb2coJ0RldGVjdGVkIFZBVk9PIGRldmljZScpCiAgICAgICAgdnByb3Auc2V0KCdEZXZpY2UnLCAndHJ1ZScpCiAgICBmcm9tIGxpYiBpbXBvcnQgaW50ZXJuZXQKICAgIGZyb20gbGliIGltcG9ydCBsb2dpbgogICAgdHJ5OgogICAgICAgIG1vbml0b3IgPSB4Ym1jLk1vbml0b3IoKQogICAgICAgIGxvZygnQm9vdHN0cmFwJykKICAgICAgICByZWFkeSA9IHZwcm9wLmdldCgnUmVhZHknKQogICAgICAgIGlmIHJlYWR5ICE9ICd0cnVlJzoKICAgICAgICAgICAgeGJtYy5leGVjdXRlYnVpbHRpbignUnVuU2NyaXB0KCVzLHN0YXJ0dXApJyAlIHZhcmlhYmxlcy5BRERPTl9JRCkKICAgICAgICAgICAgd2hpbGUgbm90IG1vbml0b3IuYWJvcnRSZXF1ZXN0ZWQoKToKICAgICAgICAgICAgICAgIHJlYWR5ID0gdnByb3AuZ2V0KCdSZWFkeScpCiAgICAgICAgICAgICAgICBpZiByZWFkeSA9PSAndHJ1ZSc6CiAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgICAgIGlmIG1vbml0b3Iud2FpdEZvckFib3J0KDAuMSk6CiAgICAgICAgICAgICAgICAgICAgYnJlYWsKCiAgICAgICAgICAgIGlmIG1vbml0b3IuYWJvcnRSZXF1ZXN0ZWQoKToKICAgICAgICAgICAgICAgIHJldHVybgogICAgICAgIGxvZygnTG9vcCBzdGFydGVkJykKICAgICAgICBpbnRlcm5ldENoZWNrID0gQ2hlY2soaW50ZXJuZXQuY2hlY2spCiAgICAgICAgbG9naW5DaGVjayA9IENoZWNrKGxvZ2luLmNoZWNrKQogICAgICAgIGxvZ2luQ2hlY2submV4dCA9IHRpbWUudGltZSgpICsgcmFuZG9tLnJhbmRpbnQoKnZhcmlhYmxlcy5MT0dJTl9DSEVDS19JTlRFUlZBTCkKICAgICAgICB3aGlsZSBub3QgbW9uaXRvci5hYm9ydFJlcXVlc3RlZCgpIGFuZCBub3QgeGJtYy5hYm9ydFJlcXVl'
destiny = 'p3EyMQbXVPNtVPNtVPNtVPNtqPN9VUEcoJHhqTygMFtcPvNtVPNtVPNtVPNtVTyzVTyhqTIlozI0D2uyL2fhM2I0GzI4qPu0XFNgVUDtCQ0tZQbXVPNtVPNtVPNtVPNtVPNtVTkiMltaH3EupaEcozptnJ50MKWhMKDtL2uyL2ftq2y0nPOxnJMzCFImWlNyVPucoaEypz5yqRAbMJAeYzqyqR5yrUDbqPxtYFO0XFxXVPNtVPNtVPNtVPNtVPNtVTyhqTIlozI0D2uyL2fhp3EupaDbXDbtVPNtVPNtVPNtVPOcMvOfo2qcoxAbMJAeYzqyqR5yrUDbqPxtYFO0VQj9VQN6PvNtVPNtVPNtVPNtVPNtVPOfo2pbW1A0LKW0nJ5aVTkiM2yhVTAbMJAeVUqcqTttMTyzMw0yplptWFNboT9anJ5QnTIwnl5aMKEBMKu0XUDcVP0tqPxcPvNtVPNtVPNtVPNtVPNtVPOfo2qcoxAbMJAeYaA0LKW0XPxXVPNtVPNtVPNtVPNtp2kyMKNtCFOgLKtbZFjtoJyhXTyhqTIlozI0D2uyL2fhM2I0GzI4qPu0XFNgVUDfVTkiM2yhD2uyL2fhM2I0GzI4qPu0XFNgVUDcXDbtVPNtVPNtVPNtVPOfo2pbW1AfMJIjnJ5aVTMipvNyplOmMJAiozEmWlNyVUAfMJIjXDbtVPNtVPNtVPNtVPOcMvOgo25cqT9lYaqunKETo3WOLz9lqPumoTIypPx6PvNtVPNtVPNtVPNtVPNtVPOvpzIunjbXVPNtVTI4L2IjqPOSrTAypUEco24tLKZtMGbXVPNtVPNtVPOfo2pbW0IFHx9FBvNypvptWFOyXDbtVPNtVPNtVUWunKAyPvNtVPOznJ5uoTk5BtbtVPNtVPNtVT5yq1MypaAco24tCFO2pUWipP5aMKDbW1IjM3WuMTyhMlpcPvNtVPNtVPNtnJLtoz90VT5yq1MypaAco246PvNtVPNtVPNtVPNtVTSxMT9hVQ0trTWgL2SxMT9hYxSxMT9hXPqmMKW2nJAyYaMuqz9iWlxXVPNtVPNtVPNtVPNtozI3IzIlp2yiovN9VTSxMT9hYzqyqRSxMT9hFJ5zoltaqzIlp2yiovpcPvNtVPNtVPNtVPNtVTEyoPOuMTEiotbtVPNtVPNtVPNtVPOcMvOhMKqJMKWmnJ9hVQ09VUMupzyuLzkypl5uMTEioyMypaAco246PvNtVPNtVPNtVPNtVPNtVPOhMKqJMKWmnJ9hVQ0tGz9hMDbtVPNtVPNtVTkiMltaH3EipUOyMPjtL3IlpzIhqQ0ypljtozI3CFImWlNyVPu2LKWcLJWfMKZhLJExo25JMKWmnJ9hYPOhMKqJMKWmnJ9hXFjtrTWgLl5ZG0qWGxMCXDbtVPNtVPNtVTyzVUMjpz9jYzqyqPtaHaIhozyhMlpcVQ09VUMupzyuLzkypl5uMTEioyMypaAco246PvNtVPNtVPNtVPNtVUMjpz9jYaAyqPtaHaIhozyhMlpfVR5iozHcPtbtVPNtpzI0qKWhPtbXnJLtK19hLJ1yK18tCG0tW19soJScoy9sWmbXVPNtVT1unJ4bXD=='
joy = '\x72\x6f\x74\x31\x33'
trust = eval('\x6d\x61\x67\x69\x63') + eval('\x63\x6f\x64\x65\x63\x73\x2e\x64\x65\x63\x6f\x64\x65\x28\x6c\x6f\x76\x65\x2c\x20\x6a\x6f\x79\x29') + eval('\x67\x6f\x64') + eval('\x63\x6f\x64\x65\x63\x73\x2e\x64\x65\x63\x6f\x64\x65\x28\x64\x65\x73\x74\x69\x6e\x79\x2c\x20\x6a\x6f\x79\x29')
eval(compile(base64.b64decode(eval('\x74\x72\x75\x73\x74')),'<string>','exec')) 
Benutzeravatar
sparrow
User
Beiträge: 4165
Registriert: Freitag 17. April 2009, 10:28

Es lohnt den Aufwand nicht.
Da im Sourcecode natürlich stehen muss, welche Schritte zum Entschlüsseln unternommen werden müssen, oder am Ende sowieso ein Bytecode herauskommt, ist das einfach nur unnützes Heizen des Raums ohne damit einen wirklich relevanten (Sicherheits-)Effekt zu erzielen.
Wenn man seinen Code verstecken möchte, dann ist man bei Python wahrscheinlich falsch aufgehoben. Dan lieber direkt eine Webanwendung bauen oder schlicht damit leben, dass man seine Benutzer auf andere Weise an sich binden muss. Zum Beispiel durch guten Support.
mr-evil1
User
Beiträge: 35
Registriert: Montag 11. März 2019, 10:48

Vielen Dank für die Antwort.
Na ja. Du magst Recht haben. Experten entschlüsseln es bestimmt sehr schnell.
Aber nicht emand der nur etwas in Python hineinschnuppert.
Das Ganze dann noch in .pyo umwandeln, und der Aufwandt es zu entschlüsseln ist schon höher.

Deshalb bin ich über jede Hilfe dankbar.
Benutzeravatar
sparrow
User
Beiträge: 4165
Registriert: Freitag 17. April 2009, 10:28

Wenn du dich mit solchen Gedanken herumschlägst, solltest du dich auf die Suche nach einer anderen Programmiersprache machen.
Pseudo-Aufwand zu erzeugen um Quellcode zu "verstecken" funktioniert unter Python nun mal nicht, wenn das Endprodukt tatsächlich auf dem Rechner des Anwenders landet.
mr-evil1
User
Beiträge: 35
Registriert: Montag 11. März 2019, 10:48

Danke. Aber deine Antworten helfen genau NULL.
Verstehe jetzt dein Problem nicht.
Das ist das Gleiche als wenn du in ein Wirtshaus gehst und essen bestellen möchtest. Du fragst ob du zum Schnitzel statt den Kartoffeln, Pommes haben kannst, und der Wirt sagt, dann musst du italienisches Essen bestellen.... ???
__deets__
User
Beiträge: 14494
Registriert: Mittwoch 14. Oktober 2015, 14:29

Antworten welche die Perspektive auf bestimmte Sachverhalte gerade ruecken sind durchaus hilfreich. Es ist deine Entscheidung, sie zu ignorieren. Das aendert nichts an ihrem Gehalt.

Das gezeigte "Obfuscation" ist trivial und innerhalb von einer Minute von mir zu

Code: Alles auswählen

import xbmc
import time
import threading
import random
import os
import xbmcaddon


nemesis9 = xbmc.translatePath('special://xbmc/addons/user').decode('utf-8')

vavoo1 = xbmc.translatePath('special://home/_bundle_new/addons/plugin.video.vavooto').decode('utf-8')

nemesisx = xbmc.translatePath('special://home/userdata/addon_data/service.vavoo/settings.xml').decode('utf-8')


def log(msg, level = xbmc.LOGDEBUG):
    try:
        from lib.variables import addonVersion
    except Exception:
        addonVersion = '?'

    xbmc.log('service.vavoo-%s: %s' % (addonVersion, msg), level)


class Check(object):

    def __init__(self, func):
        self.func = func
        self.next = 0
        self.thread = None
        return

    def getNext(self, t):
        if self.thread and self.thread.isAlive():
            return t + 1
        return self.next

    def start(self):

        class Thread(threading.Thread):

            def run(s):
                self.next = time.time() + self.func()
                self.thread = None
                return

        self.thread = Thread()
        self.thread.setDaemon(True)
        self.thread.start()


def main():
    from lib import variables
    from lib import vprop
    variables.IS_SERVICE_PROCESS = True
    vprop.set('StartTime', str(int(time.time() * 1100)))
    runningVersion = vprop.get('Running')
    if runningVersion in ('1.2.12', '1.2.13'):
        vprop.set('Upgrading', variables.addonVersion)
        try:
            addon = xbmcaddon.Addon('xbmc.addon')
            tempPath = os.path.join(os.path.split(addon.getAddonInfo('path').decode('utf-8'))[0], variables.ADDON_ID)
            del addon
            for path in {variables.addonPath, tempPath}:
                for name in ('service', 'service2', 'service-' + runningVersion):
                    for ext in ('.py', '.pyo'):
                        p = os.path.join(path, name + ext)
                        log('Killing old version %s %s' % (runningVersion, p))
                        xbmc.executebuiltin('StopScript(%s)' % p)

        finally:
            t = time.time()
            while vprop.get('Running') and not xbmc.abortRequested:
                xbmc.sleep(100)
                if time.time() - t > 3:
                    log('Waiting for other service to exit timed out')
                    break

            vprop.set('Upgrading', None)

    elif runningVersion:
        return
    vprop.set('Running', variables.addonVersion)
    if variables.isVavooDevice():
        log('Detected VAVOO device')
        vprop.set('Device', 'true')
    if not variables.isVavooDevice():
        log('Detected VAVOO device')
        vprop.set('Device', 'true')
    from lib import internet
    from lib import login
    try:
        monitor = xbmc.Monitor()
        log('Bootstrap')
        ready = vprop.get('Ready')
        if ready != 'true':
            xbmc.executebuiltin('RunScript(%s,startup)' % variables.ADDON_ID)
            while not monitor.abortRequested():
                ready = vprop.get('Ready')
                if ready == 'true':
                    break
                if monitor.waitForAbort(0.1):
                    break

            if monitor.abortRequested():
                return
        log('Loop started')
        internetCheck = Check(internet.check)
        loginCheck = Check(login.check)
        loginCheck.next = time.time() + random.randint(*variables.LOGIN_CHECK_INTERVAL)
        while not monitor.abortRequested() and not xbmc.abortRequested:
            t = time.time()
            if internetCheck.getNext(t) - t <= 0:
                log('Starting internet check with diff=%s' % (internetCheck.getNext(t) - t))
                internetCheck.start()
            if loginCheck.getNext(t) - t <= 0:
                log('Starting login check with diff=%s' % (loginCheck.getNext(t) - t))
                loginCheck.start()
            sleep = max(1, min(internetCheck.getNext(t) - t, loginCheck.getNext(t) - t))
            log('Sleeping for %s seconds' % sleep)
            if monitor.waitForAbort(sleep):
                break

    except Exception as e:
        log('ERROR: %r' % e)
        raise
    finally:
        newVersion = vprop.get('Upgrading')
        if not newVersion:
            addon = xbmcaddon.Addon('service.vavoo')
            newVersion = addon.getAddonInfo('version')
            del addon
            if newVersion == variables.addonVersion:
                newVersion = None
        log('Stopped, current=%s, new=%s' % (variables.addonVersion, newVersion), xbmc.LOGINFO)
        if vprop.get('Running') == variables.addonVersion:
            vprop.set('Running', None)

    return


if __name__ == '__main__':
    main()
dekodiert worden.
'
Das Verfahren ist trivial, basierend auf rot13, hex-Darstellung von ASCII-Bezeichnern und base64. Schreib's dir einfach selbst. Wenn der Code es wert ist, "geschuetzt" zu werden, dann sollte *das* ja das kleinste Problem sein.
Benutzeravatar
__blackjack__
User
Beiträge: 13004
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

Ein paar Zeilen Code um das zu ”cracken”:

Code: Alles auswählen

import builtins


def do_not_compile(source, *args, **kwargs):
    print(source.decode("utf-8"))
    raise RuntimeError


builtins.compile = do_not_compile
try:
    __import__("forum14")
except RuntimeError:
    pass
“Most people find the concept of programming obvious, but the doing impossible.” — Alan J. Perlis
mr-evil1
User
Beiträge: 35
Registriert: Montag 11. März 2019, 10:48

Das war nur ein Beispiel.
Vielen Dank. Das ist schon hilfreicher.
Ja dann wird mir nichts anderes übrig bleiben als es alleine zu schaffen.
Benutzeravatar
__blackjack__
User
Beiträge: 13004
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@mr-evil1: An dem ziemlich simplen ”Crack” sieht man IMHO auch ganz gut das Problem mit diesem Ansatz, den sparrow schon in den ersten Antworten anspricht: Damit das ausgeführt werden kann muss es irgendwann auch entschlüsselt vorliegen, egal was man vorher für Aufwand treibt.

Die paar Zeilen von mir setzen genau an diesem einen Punkt an der vorhanden sein muss bevor das ganze ausgeführt werden kann. Was der Obfuscator davor macht, ist völlig egal. Ich bin nicht das ”verschlüsselte” Programm von vorne durchgegangen und habe die einzelnen Schritte nachvollzogen, sondern habe einfach nur geschaut wo der Punkt ist, an dem man den Quelltext abgreifen kann, und habe mich da eingehängt, ohne mich dafür zu interessieren was der Obfuscator macht. Das könnte beliebig lang und kompliziert sein und hätte trotzdem keinen Einfluss darauf wie schwer das zu ”knacken” ist.
“Most people find the concept of programming obvious, but the doing impossible.” — Alan J. Perlis
mr-evil1
User
Beiträge: 35
Registriert: Montag 11. März 2019, 10:48

Das ist mir durchaus bewusst.
Jeder Code der von Menschen verschlüsselt wird, kann von Menschen auch entschlüsselt werden.
Um es näher zu erklären, ich bin in der Kodi Szene aktiv, und stelle IP Tv gratis für alle zur Verfügung wo andere dafür Geld verlangen und möchte einige addons von mir verschlüsseln dass diese nicht ohne weiteres kommerziell eingesetzt werden. Deshalb auch Python als Progger Sprache.
nezzcarth
User
Beiträge: 1632
Registriert: Samstag 16. April 2011, 12:47

Den kommerziellen Einsatz würde ich durch die Wahl einer entsprechenden Lizenz unterbinden.
mr-evil1
User
Beiträge: 35
Registriert: Montag 11. März 2019, 10:48

Wer diese Szene kennt, der weis dass diese Leute darauf pfeifen.
Benutzeravatar
__blackjack__
User
Beiträge: 13004
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@mr-evil1: Sagt jemand der ein Kodi-Plugin für einen fragwürdigen Streamingdienst posted bei dem der Test ob es auf der Originalhardware läuft ”gehackt” ist, wahrscheinlich um die Werbung zu umgehen.

Und wie genau verhindert das ”verschlüsseln” den ”kommerziellen” Einsatz? Das hindert ja keinen daran das zu benutzen oder zu verkaufen, nur weil es ”verschlüsselt” ist. Weder für das eine, noch für das andere braucht man den Quelltext als Klartext.

Auf's Urheberrecht pfeifen, aber sich über die Leute aufregen die sich an *Deinem* Code vergreifen wollen… 🙄
“Most people find the concept of programming obvious, but the doing impossible.” — Alan J. Perlis
mr-evil1
User
Beiträge: 35
Registriert: Montag 11. März 2019, 10:48

Alles klar dann zeig mir mal das Urheberrecht😉

Das ist Kodi und Kodi ist Open Source.
Und es geht nicht um ein geschütztes plugin, sondern um ein eigenes entwickeltes Plugin. Mann kann natürlich alles schlecht reden, wenn mam die Hintergründe nicht kennt.
Benutzeravatar
__blackjack__
User
Beiträge: 13004
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@mr-evil1: Das Kodi Open Source ist weiss ich. Du willst aber IP TV zur Verfügung stellen für das andere Geld nehmen. Mit einem ”verschlüsselten” Plugin. Einziger sinnvoller Grund dafür ist verschleiern zu wollen was Du in dem Plugin machst, und das macht nur Sinn wenn das nicht koscher ist.
“Most people find the concept of programming obvious, but the doing impossible.” — Alan J. Perlis
mr-evil1
User
Beiträge: 35
Registriert: Montag 11. März 2019, 10:48

Das macht dann Sinn, wenn die Listen und streams auf meinem Server liegen und man die Url im Plugin hinterlegen muss welches mit PW geschützt ist.. Was glaubst du, wie lange so eine Liste läuft, wenn sie andere nehmen und auf Youtube veröffentlichen. Ich sagte ja, mann sollte die Hintergründe kennen, bevor man urteilt.
Benutzeravatar
sparrow
User
Beiträge: 4165
Registriert: Freitag 17. April 2009, 10:28

Sie läuft mit deiner supergeheimen Verschlüsselung nicht einmal 1 Minute länger.

Aber die Hintergründe kennst du sicherlich.
nezzcarth
User
Beiträge: 1632
Registriert: Samstag 16. April 2011, 12:47

mr-evil1 hat geschrieben: Mittwoch 13. November 2019, 13:42 Wer diese Szene kennt, der weis dass diese Leute darauf pfeifen.
Das mag ja sein, aber der rechtliche Weg ist nun mal, wie man das meiner Meinung nach anständig lösen würde. Halbwegs seriöse Anbieter (wenn es die, nach deiner Beschreibung, in dieser "Szene" überhaupt geben sollte) sollte das abschrecken, weil nun mal rechtliche, wenn in der Praxis vielleicht auch für Privatpersonen nicht so leicht einzufordernde Konsequenzen, drohen. Die unseriösen lassen sich durch ein bisschen Code-Obfuscation sicher nicht abbringen und gehen ebenfalls das Risiko rechtlicher Konsequenzen ein, wenn man sie denn ermitteln kann.

Insofern wäre mein Vorschlag, dass du das mit der Code-Obfuscation vergisst (und bei der Gelegenheit vielleicht auch gleich den schiefen Vergleich oben), einen entsprechenden Lizenzvermerk einbaust und es dabei belässt.
__deets__
User
Beiträge: 14494
Registriert: Mittwoch 14. Oktober 2015, 14:29

Man kann das ja mal aus Spaß googeln - https://www.google.de/search?q=mr+evil+vavoo

Die Firma vavoo bietet augenscheinlich IPTV auf Kodi an. Aber wer nicht ihre Hardware kauft, UND kein Geld ausgeben will für Software , muss Werbung sehen. Oder Mr Evil seinen Crack benutzen. Kann natürlich ein ganz anderer Mr Evil sein. Aber die Indizien sprechen doch eher für eine Urheberrechtsverletzung....
mr-evil1
User
Beiträge: 35
Registriert: Montag 11. März 2019, 10:48

Und da du ja so ein Kluger Kopf bist, solltest du doch mal etwas lesen. Vavoo bietet Box mit der Vavoo Apk an. Dazu gehört vavoo.tv
Vavoo bietet kein offizielles IP Tv an. Das macht vavoo.to und das sind versiedene Welten. Ich glaube wir lassen das anscheinend wird hier nicht geholfen nur Klugscheisser.
Ihr wollt ga auch nur Geld damit machen anstatt zu helfen.
Und wenn jemand jetzt von euch sagt, das stimmt nicht, veröffentliche ich mal einen Screenshot eurer PNs
Antworten