RegEx verstehen

  • JavaScript

Es gibt 9 Antworten in diesem Thema. Der letzte Beitrag () ist von Chrisber.

    RegEx verstehen

    Hallo,

    ich versuche im Moment aus Interesse den Code eines Schadprogrammes / Exploits in JavaScript zu verstehen. Nachdem ich schon nen Großteil der Logik entschlüsselt habe,

    scheitere ich mal wieder an meiner Lieblingstätigkeit: Regular Expressions (würg)

    .replace(/8/g, "#").replace(/B/g, "8").replace(/#/g, "B");

    Hat jemand ne Ahnung, was das bezwecken soll?
    Ausgangsmaterial ist nen String wie 2463ABED

    Gruß,
    Tobias
    Sieht für mich so aus, als würde er "8g" mit "#g" ersetzen, "Bg" mit "8g" und "#g" mit "Bg"

    Guck dir mal die Sonderzeichen bei den Regular Expressions an...
    Kann aber auch sein, dass das "g" ein Sonderzeichen ist.


    EDIT: Das "g" am Ende ist dafür, dass alles ersetzt wird und die Klammern sind Trennzeichen ;)

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Trudi“ ()

    Ne bei JS nicht, merwürdigerweise. RegEx an sich kann ich mittlerweile recht gut, was VB und PHP angeht, aber JS is immernoch ein Brechreiz.

    Die Slashes sind die Limiter und das g steht für global, heißt es werden ALLE Achten mit "#" ersetzt, ansonsten würde nämlich NUR die erste Vorkommende Acht ersetzt werden. Bei einem Char oder einem Wort mag das noch gehen, aber sobald es mal ein komplizierter Pattern wird mit Leer- und Sonderzeichen, bricht man sich da richtig ein ab. Schrecklich.

    Dodo schrieb:

    RegEx an sich kann ich mittlerweile recht gut, was VB und PHP angeht, aber JS is immernoch ein Brechreiz.

    Irgendwas machst du falsch, da alle regulären Ausdrucksfunktionen der genannten Sprachen sich an die Perl (PCRE) Syntax halten (zumindest per Definition). Ergo sollten auch alle das gleiche liefern und übersprachlich definiert werden können.

    Auch die Delimiter funktionieren genau wie in PHP - nur ohne die Stringifizierung (tolles Wort).

    Hast du ein Beispiel?
    To make foobar2000 a real random music player, I figured out the only way to achieve this is to use Windows Media Player.

    At some point in time, you recognize that knowing more does not necessarily make you more happy.
    Besonderer Dank an Dodo und ansonsten Danke an alle anderen.

    Das wars. Der tauscht alle 8 mit B. Da er aber nicht .Replace("8","B").Replace("B","8") machen kann, nimmt er das "#" als temporäres Zeichen.

    Ein ekelhafter Exploit, jetzt aber geknackt. Ich konnte ihn entschlüsseln. Er stiehlt (wenns jemanden interessiert) Kennwörter von PayPal auf geschickte Art, und sendet sie weiter.

    @Chrisber: Das hab ich in meinem letzten Betriebspraktikum aber GANZ anders zu spüren bekommen. Das haut nicht hin.
    @Chrisber: sicher ist RegEx irgendwie in allen Sprachen ähnlich, aber dann auch nicht z.B. das Bilden von Gruppen

    VB:

    Quellcode

    1. (?<gruppenname>\d+)


    PHP:

    Quellcode

    1. (?P<gruppenname>\d+)


    in JS weiß ich gerade nicht wie man es dort macht. Aber wie gesagt, ich hatte meine Probleme mit den Pattern die ich aus VB und PHP kenne, wo ich bisher auch nie große Probleme hatte, diese auf JS anzuwenden, entweder passierte nichts oder es kamen immer JS Fehler.