Ein neuer Kopierschutz

  • Ich hab mal angefangen, nen Kopierschutz zu programmieren. Er erstellt beim Lizensieren nen 2048bit-Hash, der unter anderem auf
    - Ram
    - Benutzer
    - Festplatte
    - Maus
    - BIOS
    - CPU
    - OS
    und mehr basiert. Dann wird aus dem Programmcode ein Schlüssel erstellt, mit der Hash mit nBlow (Verschlüsselung von mir, angelehnt an BlowFish) auf 16000bit bis 19000bit aufgeblasen und verschlüsselt wird. Damit wird verhindert, das ein anderes Programm den gleichen Schlüssel untergeschoben bekommt, außerdem kann man unmöglich einen zweiten PC bauen, der das gleiche BIOS-Baudatum und die gleiche Festplatten-ID hat.
    Man kann dann im Internet ne Datenbank aufstellen, die die registrierten Computerhashes enthält und dann lokal die verschlüsselte Datei speichern, damit das Programm auch offline läuft.
    Kleine Demo (komplett offline): nAntiCopy.zip (108,97 KB)
    Falls jemand gern sein eigenes Programm schützen will einfach PN schreiben.

    Spoiler anzeigen


    Haupt-Laptop:
    Dell Vostro 3560 - i7-3632QM, 6GB
    Rechenknechte:
    Lenovo - i5, 4GB
    Medion - Pentium Dual Core, 3GB
    IBM T60 - Core Duo, 2GB
    Lenovo T400 - Core2Duo, 2GB
    Server:
    Sony - Pentium M, 512MB
    Unbenutzt:
    Noname - Celeron D, 1GB

    Einmal editiert, zuletzt von niwax (10. Juni 2010 um 16:56)

  • Und wenn meine Maus putt is bin ich am arsch oder wat

    Desktop: AMD FX-6200 @ 6 x 4,3 GHz | 32 GB DDR3 | Intel Arc A380 | SSD: 1 TB @ M.2 to PCIe Adapter + UEFI NVMe Driver Injection | HDD: 15 TB | Win 11 Pro | Dual Monitor 2 x 27"
    Notebook: Lenovo ThinkPad T420 | i5 2520M | 16 GB DDR3 | SSD: 250 GB | USB 3.0 | 300 MBit WWAN @ D1 | AC WLAN | BT 4.0 | 2 x 70++ | 1 x 27++ Slice | Win 11 Pro | FHD Display Mod
    Internetleitung: Telekom | FTTH | D: 500 MBit / U: 200 MBit | Telekom Glasfasermodem | AVM Fritz!Box 7490
    Räder: [Daily: Stevens E-Triton 2016] [Cyclocross: Stevens Prestige 2019] [Cargobike: Urban Arrow Cargo XL 2023]

  • Find ich auch irgendwie leicht... komisch?!

    Vorallem was schützt denn überhaupt der Kopierschutz? Den ganzen PC? Sprich: Neue Maus = OS komplett gesperrt?

  • Nein, es prüft den Maustyp (USB, PS2, etc)
    Ich schaun noch, obs ne Toleranz gibt (Bei austauschbaren Komponenten).
    @Griggi: Ich hab mir einfach gedacht, ich könnts mal für eigene Programme brauchen oder jemand anderes kanns brauchen

    Spoiler anzeigen


    Haupt-Laptop:
    Dell Vostro 3560 - i7-3632QM, 6GB
    Rechenknechte:
    Lenovo - i5, 4GB
    Medion - Pentium Dual Core, 3GB
    IBM T60 - Core Duo, 2GB
    Lenovo T400 - Core2Duo, 2GB
    Server:
    Sony - Pentium M, 512MB
    Unbenutzt:
    Noname - Celeron D, 1GB

  • Also microsoft nutzt die MAC der Netzwerkkarte, statt der Maus. zudem gibts nen counter, erst wenn eine gewisse summe überschritten ist, muss neu aktiviert werden. wobei die einzelnen teile unterschiedlich gewichten. ich glaube die NIC 3fach.

  • Beitrag von Spit (10. Juni 2010 um 17:30)

    Dieser Beitrag wurde gelöscht, Informationen über den Löschvorgang sind nicht verfügbar.
  • Gerade der Punkt „Maus“ ist ja wirklich ein Failgriff. Wenn mal meine USB-Maus kaputt ist und ich nur noch eine serielle (:oO3:) oder gar keine Maus mehr besitze und per Tastatur-/Joystickeingabe navigiere, würde die Routine schon versagen.

    Der übliche DRM-Mist beschränkt sich meistens auf BIOS, Festplatte, RAM und OS, wobei letzteres bei plattformübergreifenden Anwendungen als erstes unter den Tisch fällt.

  • Ich denk, MAC Adresse von allem was nach außen kommuniziieren kann und ne spezielle Datei auf Diskette oder so müsst langen.

    PGP-Key E384 009D 3B54 DCD3 21BF  9532 95EE 94A4 3258 3DB1 | S/MIME-Key 0x1A33706DAD44DA
    G d-@ s+:- a--- C+++ UB+L++ P--- L++@ E-@>++ W+ N o? K? w>++ !O !M !V PS+++ PE-- Y+>++ PGP++>+++ !t 5? X? !R tv b+++>++++ DI !D G>+ e>+++ h !r>++ !z
    „Die Aachener gelten als Erfinder des 4. Hauptsatzes der Thermodynamik: ‚Thermo schreibt man zweimal.“‘
    “Saying that Java is good because it works on all platforms is like saying oral sex is good because it works on all sexes.”
    „Es gibt 10 Sorten von Leuten: Die einen verstehen das Binärsystem, die anderen nicht.“
    „Manche Männer lieben Männer, Manche Frauen eben Frauen; Da gibt's nix zu bedauern und nichts zu staunen; Das ist genau so normal wie Kaugummi kauen; Doch die meisten werden sich das niemals trauen“

  • ich glaube für nen Kopierschutz reicht die Mac Adresse und Den Key

    tYLfrPk.png
    Desktop 1: Selbstbau 2022 - Intel Core i9-12900K - AMD Radeon RX 7900 XTX - 64GB RAM - 4TB SSD - Arch Linux
    Desktop 2: Apple Mac Pro Early 2009 - 2x Intel Xeon X5690 - AMD Radeon RX 560 - 64GB RAM - 2TB SSD - macOS 15 Sequoia
    Notebook 1: Lenovo ThinkPad X13 G4 - AMD Ryzen 7 7840U - AMD Radeon 780M - 32GB RAM - 2TB SSD - Arch Linux
    Notebook 2: Apple MacBook Air Late 2020 - M1 Prozessor - 16GB RAM - 512GB SSD - macOS 15 Sequoia
    Homeserver: Intel Core i7-7700K - 64GB RAM - 10TB SSD, 80TB HDD - Arch Linux

    Meine IBM/Lenovo ThinkPads:

    Spoiler anzeigen

    Lenovo X13 G4 Yoga - i7-1345U - 16GB RAM - 256GB SSD - LTE - Windows 11 Enterprise
    Lenovo X390 Yoga - i7-8565U - 16GB RAM - 256GB SSD - LTE - Windows 10 Enterprise
    Lenovo Thinkpad T470 - i5-7300U - 32GB RAM - 2TB SSD - Arch Linux
    Lenovo X230 - i5-3320M - 16GB RAM - 128GB SSD - UMTS - Arch Linux
    Lenovo T400 - P8600 - 4GB RAM - 320GB SSD - UMTS - Windows 7
    Lenovo X200s - SL9600 - 8GB RAM - 128GB SSD - UMTS - Windows 7
    IBM T43 - Pentium M 2,26 GHz - 2GB RAM - 80GB HDD - Windows XP
    IBM T23 - Pentium iii 1 GHz - 256MB RAM - 10GB HDD - Windows 2000
    IBM 380XD - Pentium MMX 233 MHz - 96MB RAM - 3GB HDD - Windows 98SE
    IBM 760EL - Pentium 120 MHz - 32MB RAM - 2GB HDD - Windows 95C
    IBM 701CS - 486er - XXMB RAM - XXXXMB HDD - Windows 95

  • MAC-Adressen faken ist ja mal das billigste ever

    sinnhaftigkeit dieses ansatzes hin oder her, was mir persönlich sauer aufstößt ist:

    Zitat von niwax

    Dann wird aus dem Programmcode ein Schlüssel erstellt, mit der Hash mit nBlow (Verschlüsselung von mir, angelehnt an BlowFish) auf 16000bit bis 19000bit aufgeblasen und verschlüsselt wird.

    • hä wie was? verschlüsselung oder hash? ich werd rein grammatisch aus deinem satz schonmal nicht schlau
    • eigene verschlüsselung? warum? security by obscurity? ich trau den allerwenigsten leuten auf dieser erde zu einen verschlüsselungsalgorithmus zu entwerfen, der annähernd sicher ist...selbst große firmen verkacken da regelmäßig und gehn dann doch auf standardlösungen, zumal es praktisch keinen sicherheitsgewinn gibt.
    • was heißt "angelehnt an BlowFish"? wenn man einen standard-algo nimmt und da 3 bits ändert, dann wird das praktisch garantiert dazu führen, dass das ding angreifbar wird. Bei solchen Sachen haben sich Leute jahrelang gedanken gemacht um etwas, was am ende irgendwie 80 Zeilen Code ist, da kann man nicht einfach eine Zeile ändern oder so, praktisch immer wird damit das gesamtkonstrukt zusammenfallen
    • schon allein um den verschlüsselungsalgo drumherum kann man genug an security nightmares veranstalten, selbst wenn die Verschlüsselung selbst "unknackbar" ist.
  • Zitat von DosAmp

    Gerade der Punkt „Maus“ ist ja wirklich ein Failgriff. Wenn mal meine USB-Maus kaputt ist und ich nur noch eine serielle (:oO3:) oder gar keine Maus mehr besitze und per Tastatur-/Joystickeingabe navigiere, würde die Routine schon versagen.

    Der übliche DRM-Mist beschränkt sich meistens auf BIOS, Festplatte, RAM und OS, wobei letzteres bei plattformübergreifenden Anwendungen als erstes unter den Tisch fällt.

    Also, ich mach - wie schon gesagt -wahrscheinlich noch ne Toleranz rein, wg. Plattformübergereifen etc: Das ist doch gerade der Sinn: man will nicht, dass sich jemand das Programm auf nen anderen PC zieht, also schaut man nach, ob die Umgebung noch die selbe ist. Was ist da das Problem?

    oreissig Also: Er baut sich mehrere Hashs, die insgesamt 2048 bit groß sind. Dann nimmt er sich aus dem Code des Programms nen bis zu 19000-Bit Key, mit dem dann der Hashh verschlüsselt und in ne Datei gespeichert wird. Das ist nötig, damit man nicht nem anderen Programm den gleichen Hash unterschieben kann. nBlow nenne ich angelehnt an BlowFish, weil es das gleiche Konzept verfolgt - aufblähen mit Müll, aber mit nem anderen Ansatz: zuerst wird das erste Byte der Daten mit dem ersten Byte des Passworts per XOR verknüpft, dann wird eine Anzahl von Müll-Bytes eingefügt, die auf dem zweiten Byte des Passworts basieren, dann geht immer so weiter, mit dem zweiten Byte der Daten und dem dritten+vierten Byte des Passworts usw...

    Spoiler anzeigen


    Haupt-Laptop:
    Dell Vostro 3560 - i7-3632QM, 6GB
    Rechenknechte:
    Lenovo - i5, 4GB
    Medion - Pentium Dual Core, 3GB
    IBM T60 - Core Duo, 2GB
    Lenovo T400 - Core2Duo, 2GB
    Server:
    Sony - Pentium M, 512MB
    Unbenutzt:
    Noname - Celeron D, 1GB

  • Zitat von niwax

    Plattformübergereifen etc: Das ist doch gerade der Sinn: man will nicht, dass sich jemand das Programm auf nen anderen PC zieht, also schaut man nach, ob die Umgebung noch die selbe ist. Was ist da das Problem?

    i.d.R. gehts bei nem Kopierschutz darum, dass es nicht kopiert wird ;) das muss nicht unbedingt bedeuten, dass die programmausführung an einen Rechner gekettet wird

    Zitat von niwax


    Er baut sich mehrere Hashs, die insgesamt 2048 bit groß sind. Dann nimmt er sich aus dem Code des Programms nen bis zu 19000-Bit Key, mit dem dann der Hashh verschlüsselt und in ne Datei gespeichert wird. Das ist nötig, damit man nicht nem anderen Programm den gleichen Hash unterschieben kann.

    was sind das alles für hashes? warum wird das dann so groß gemacht?
    nagut, am wichtigsten ist vll die frage: wie gehts dann weiter? man hat quasi einen key, der sowohl programm als auch rechner beinhaltet, wie funktioniert dann der eigentliche schutz?

    Zitat von niwax


    nBlow nenne ich angelehnt an BlowFish, weil es das gleiche Konzept verfolgt - aufblähen mit Müll, aber mit nem anderen Ansatz: zuerst wird das erste Byte der Daten mit dem ersten Byte des Passworts per XOR verknüpft, dann wird eine Anzahl von Müll-Bytes eingefügt, die auf dem zweiten Byte des Passworts basieren, dann geht immer so weiter, mit dem zweiten Byte der Daten und dem dritten+vierten Byte des Passworts usw...


    hm, würd gern mal den code dazu sehn, mit etwas zeit werd ichs mir irgendwann mal genauer anschauen

  • Der Code:
    EDIT: Sehe grade, dass das die ganzen einrückungen löscht, nochmal:

    Spoiler anzeigen
    Spoiler anzeigen


    Haupt-Laptop:
    Dell Vostro 3560 - i7-3632QM, 6GB
    Rechenknechte:
    Lenovo - i5, 4GB
    Medion - Pentium Dual Core, 3GB
    IBM T60 - Core Duo, 2GB
    Lenovo T400 - Core2Duo, 2GB
    Server:
    Sony - Pentium M, 512MB
    Unbenutzt:
    Noname - Celeron D, 1GB

    Einmal editiert, zuletzt von niwax (11. Juni 2010 um 20:12)

  • Ich schließe mich da Blue an, wenn ich Programme schreiben könnte würde ich sie als OpenSource veröffentlichen.

  • Zitat von Sje

    Ich schließe mich da Blue an, wenn ich Programme schreiben könnte würde ich sie als OpenSource veröffentlichen.

    Jo.

    Und so können andere noch mit dran Entwickeln und Fehler ausbessern oder gar tolle Features reinbringen. Wenn alle so denken würden, hätten wir gar kein Problem mehr :<

  • Ich schätze mal es ist auch eher als Fingerübung zu sehen. Beim Butter&Brot programmieren interessiert kaum jemand der quellcode. hatte nur einmal, das einer aus dem forum hier mal nen kalender von mir gebrauchen konnte. war aber auch java und hatte ins jar den code auch gleich reingeworfen.

  • Es gibt drei Gründe, warum als kleiner Programmierer Quellcode veröffentlichen eine gute Idee sein kann:

    - Sicherheitsanalyse. Es gibt viele Leute, die sich für Sicherheitskram interessieren und daher auch einfach aus Spass mal deinen sicherheitskritischen Quellcode durchlesen und dir Tipps geben können, was da kaputt sein kann. Bei geheime Algorithmen finden auch Analysen statt und es werden Lücken gefunden (z.B. Skype), nur gibt dir dann keiner Verbesserungsvorschläge.

    - Nützlichkeit. Ab und zu schreibt man ja auch Programme, die nützlich sind und von anderen verwendet werden. Da kommt es dann gerne vor, dass da jemand selber noch eigenen Krams hinzufügen will.

    - Lernen. Lernt man Programmieren oder lernt man eine neue Sprache, dann kann es sinnvoll sein, die ersten eigenen Programme hochzuladen, damit Leute mit Erfahrung einem Tipps geben können.

  • wie gandro bereits sagte gibts da schon ein paar ernsthafte Vorteile, aber im Endeffekt seis doch jedem selbst überlassen und hier auch nicht Gegenstand der Debatte

    den algo hab ich mir jetz noch nich genau angeschaut, mir sind nur fix paar sachen aufgefallen:

    • visual basic? uff lang ists her :D
    • weiß nich genau, wie exception handling da gemacht wird, aber für mich siehts so aus als fängst du in paar blöcken einfach alle möglichen exceptions und behandelst sie danach nicht. das nennt man pokemon exception handling "if you gotta catch em all" :D
      besser: wirklich nur das catchen, was auftreten kann (also wohl die klasse der IOExceptions oder besser noch genauer) und diese natürlich auch behandeln (z.B. abbruch oder weiterwerfen)
    • warum resized du in der 2. Methode X direkt nach dem deklarieren?
      resizen ist so mit das schlechteste und langsamste, was man mit einem array tun kann
    • sämtliche variablen mit einem einzigen Buchstaben zu bezeichnen scheint ne alte Basic-Angewohnheit zu sein, die sich bis heute durchzieht...vll könnte man über aussagekräftigere namen als P, T, C, Z usw nachdenken

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!