hash aus .md5 datei rausholen

  • Hallo Leute,
    ist es möglich über_FileReadLine() eine bestimme Zeile mit dem Hash auszulesen, egal wo er steht, quasi das die Zeilen mit Kommentaren (#...) und leere Zeilen übersprungen werden? ?(

    Gruß Gremlin

    Einmal editiert, zuletzt von Gremlin78 (15. Oktober 2014 um 22:55)

  • such doch per Regex einfach einen 16-stelligen hexcode

    [autoit]

    (?:[^a-fA-F0-9])([a-fA-F0-9]{32})(?:[^a-fA-F0-9])

    [/autoit]


    suche in der kompletten Datei, also per fileread($datei)

    //EDIT

    Code
    (?:[^a-fA-F0-9]|\b)([a-fA-F0-9]{32})(?:[^a-fA-F0-9]|\b)

    findet den Hash auch an Wortgrenzen

    ciao
    Andy


    "Schlechtes Benehmen halten die Leute doch nur deswegen für eine Art Vorrecht, weil keiner ihnen aufs Maul haut." Klaus Kinski
    "Hint: Write comments after each line. So you can (better) see what your program does and what it not does. And we can see what you're thinking what your program does and we can point to the missunderstandings." A-Jay

    Wie man Fragen richtig stellt... Tutorial: Wie man Script-Fehler findet und beseitigt...X-Y-Problem

    3 Mal editiert, zuletzt von Andy (15. Oktober 2014 um 21:45)

  • Danke Andy für deinen Tip,
    leider habe ich mit Regex keinerlei Erfahrung. Kannst Du mir ein Beispiel geben?

    [autoit]


    $hfile = FileOpenDialog('Hash-Datei auswählen',@MyDocumentsDir,'MD5-Hash (*.md5)')
    $inhalt = FileRead($hfile)
    MsgBox(64,'',StringRegExp('?:[^a-fA-F0-9]|\b)([a-fA-F0-9]{32})(?:[^a-fA-F0-9]|\b)',$inhalt));?????

    [/autoit]

    Gruß Gremlin

    2 Mal editiert, zuletzt von Gremlin78 (15. Oktober 2014 um 22:14)

  • Code
    #include <Array.au3>
    $text = FileRead("test22.txt")
    
    
    $ret = StringRegExp($text, "(?:[^a-fA-F0-9]|\b)([a-fA-F0-9]{32})(?:[^a-fA-F0-9]|\b)", 3)
    
    
    _ArrayDisplay($ret)
  • Habe das Array gewählt, da in der Datei auch mehrere Hashes enthalten sein können. Ist nur eins drin, klappt die RegEx ja trotzdem.
    Zur Erklärung:
    "vor" und "hinter" der capturing Group, also dem zu findenden Hash ist eine "non capturing group" (?:[^a-fA-F0-9]|\b) welche folgendermaßen aufgebaut ist:
    (?: non capturing group
    [^ Zeichengruppe welche NICHT enthält:
    a-fA-F0-9] Buchstaben von a bis f, A bis F und Ziffern von 0 bis 9 (also alles, was in einer hexadezimalen Darstellung vorkommen darf)
    |\b oder eine Wortgrenze

    die Capturing Group findet exakt 32 Buchstaben/Ziffern.

    Die non capturing groups vor und hinter dem zu findenden Hash verhindern, dass mehr als 32 Zeichen lange Hex-Strings gefunden werden.