FuSer 0 Geschrieben 23. April 2019 Melden Geschrieben 23. April 2019 Hallo, ich hab folgendes Problem: Ich habe eine Binary Datei. In dieser Datei steckt irgendwo die Version im Klartext zb: "V1.2.4.1". Diese Version möchte ich finden. Da ich aber über mehre Dateien interreiren muss, kann sich die Version natürlich unterscheiden. Daher suche ich über RegEx nach der Version: findstr /R /C "V[0-9].[0-9].[0-9].[0-9]" "D:\binaryFooFile.xyz" > 'VERSION' Das Ausgabefile enthält aber die Kommplette Zeile, die die Version enthält. Super wäre es, wenn mir findStr NUR den gefunden String ausgibt, oder ich die Ausgabe Zeile soweit modifizieren kann, das nur die Version übrig bleibt. Der Tricki Teil ist halt, dass der SuchString dynmich ist. Hat da jemad eine Idee? Zitieren
BOfH_666 583 Geschrieben 23. April 2019 Melden Geschrieben 23. April 2019 (bearbeitet) Korrekt compilierte Binaries haben normalerweise eine entsprechende Eigenschaft, die man mit Powershell ganz einfach auslesen kann .... hier als Beispiel die Explorer.exe .... Get-Item -Path C:\Windows\explorer.exe | Select-Object -ExpandProperty VersionInfo Format-Table -AutoSize Das funktioniert normalerweise mindestens mit allen *.exe und *.dll Binaries. bearbeitet 23. April 2019 von BOfH_666 1 Zitieren
FuSer 0 Geschrieben 23. April 2019 Autor Melden Geschrieben 23. April 2019 Hallo, Danke für die Antwort. Leider ist es keine exe oder dll. Zitieren
BOfH_666 583 Geschrieben 23. April 2019 Melden Geschrieben 23. April 2019 (bearbeitet) Ich glaube, dass es hilfreich wäre, wenn Du uns sagen könntest, was es ist. Was es nicht ist, wissen wir ja jetzt schon. Vielleicht hilft Dir das hier ja schon ein Stück: Use PowerShell and Regular Expressions to Search Binary Data bearbeitet 23. April 2019 von BOfH_666 Zitieren
FuSer 0 Geschrieben 23. April 2019 Autor Melden Geschrieben 23. April 2019 Hallo, Prinzipiell ja egal da ich nach einer Lösung suche in einer Binary einen String zu suchen und zu extrahieren. Aber ok. Es ist eine vdk Datei. Dürfte nicht all zu bekannt sein. Da es eher ein Industriellens tool ist. Erzeugt wird die vdk mit dem Tool "VAC" welches die Dresdner Software Firma AIS Entwickelt hat. Zitieren
BOfH_666 583 Geschrieben 23. April 2019 Melden Geschrieben 23. April 2019 vor 4 Stunden schrieb FuSer: Prinzipiell ja egal da ich nach einer Lösung suche in einer Binary einen String zu suchen und zu extrahieren. OK ... ich bin weit davon entfernt, ein Experte zu sein, aber wenn ich mich nicht irre, ist Binary nicht gleich Binary. Es könnte sich also als schwierig herausstellen, eine generelle Lösung zu präsentieren, die mit einer beliebigen Binär-Datei funktioniert. Wäre es Dir möglich, uns eine um sensible Daten bereinigte Beispiel-Datei zukommen zu lassen? Zitieren
daabm 1.386 Geschrieben 23. April 2019 Melden Geschrieben 23. April 2019 Wenn es sich um ein proprietäres Format handelt, wäre evtl. ein Anchor hilfreich - also das, was vor und hinter dem Versionsstring steht. Ansonsten wird es echt düster... Zitieren
v-rtc 92 Geschrieben 24. April 2019 Melden Geschrieben 24. April 2019 Wollte schon gestern was sagen, traute mich aber nicht...Bekommt man ggf. mit Linux Befehlen hin... Zitieren
BOfH_666 583 Geschrieben 24. April 2019 Melden Geschrieben 24. April 2019 vor 8 Minuten schrieb v-rtc: Wollte schon gestern was sagen, traute mich aber nicht...Bekommt man ggf. mit Linux Befehlen hin... Na jetzt bin ich aber gespannt .... her damit! Zitieren
v-rtc 92 Geschrieben 24. April 2019 Melden Geschrieben 24. April 2019 vor 1 Stunde schrieb BOfH_666: Na jetzt bin ich aber gespannt .... her damit! Brüchte wie Du paar Beispiele :) und ein wenig Zeit. Skripte nicht mehr so viel mit Linux. Zitieren
BOfH_666 583 Geschrieben 24. April 2019 Melden Geschrieben 24. April 2019 (bearbeitet) hmmmm .... na dann ma kukn, ob sich FuSer nochmal meldet ... bearbeitet 24. April 2019 von BOfH_666 Zitieren
FuSer 0 Geschrieben 24. April 2019 Autor Melden Geschrieben 24. April 2019 vor 19 Stunden schrieb BOfH_666: OK ... ich bin weit davon entfernt, ein Experte zu sein, aber wenn ich mich nicht irre, ist Binary nicht gleich Binary. Es könnte sich also als schwierig herausstellen, eine generelle Lösung zu präsentieren, die mit einer beliebigen Binär-Datei funktioniert. Wäre es Dir möglich, uns eine um sensible Daten bereinigte Beispiel-Datei zukommen zu lassen? Hallo, ich hab eine ensprechend bereinigte Datei mal angehangen. Musste sie aber als *txt kennzeichnen. Diese öffnen und nach "V1.3.4.2" suchen. Also wenn es dafür eine shell script gibt, um die Versionsnummer zu finden, wäre klasse. Aktuell habe ich mir damit beholfen, dass ich ein kleines C# Konsolen Programm geschrieben habe welches mir die Version ausließt. Ist vermutlich die einfachere Methode als mit Werkzeugen zu arbeiten, die dafür nicht ausgelegt sind. Grüße hap_mobil.txt vor 7 Stunden schrieb v-rtc: Wollte schon gestern was sagen, traute mich aber nicht...Bekommt man ggf. mit Linux Befehlen hin... Linux ist leider keine Option, aber deine Lösung würde ich auch gern sehen. Grüße Zitieren
daabm 1.386 Geschrieben 24. April 2019 Melden Geschrieben 24. April 2019 (bearbeitet) Wenn ich das richtig sehe, sind davor und danach Leerzeichen? Dann wäre das doch per regex einfach zu lösen... Edit: Nachdem Du den regex schon zusammegebaut hast, vergiß einfach findstr und mach das in Powershell... $bytes = [System.IO.File]::ReadAllBytes("C:\Users\martin\Downloads\hap_mobil.txt") $text = [System.Text.Encoding]::ASCII.GetString($bytes, 0, $bytes.Count) $text -match ".*(V[0-9]\.[0-9]\.[0-9]\.[0-9]).*" $matches.Count $matches[1] Credits: https://stackoverflow.com/questions/10672092/read-parse-binary-files-with-powershell bearbeitet 24. April 2019 von daabm Zitieren
FuSer 0 Geschrieben 24. April 2019 Autor Melden Geschrieben 24. April 2019 Hallo, wie in meinem Start Post geziegt, nutze ich bereits regEx. Aber es wird mir nur die Komplette Zeile ausgegeben in der sich die Version befindet. Wenn du weisst wie ich nur die Version ermittle, dann los. Zitieren
daabm 1.386 Geschrieben 24. April 2019 Melden Geschrieben 24. April 2019 (bearbeitet) Bin auch erst reingefallen - Get-Content macht ASCII und wirft Zeilenumbrüche rein. Der Trick ist, das File tatsächlich als Bytestream zu lesen... Noch ein Edit: Bei get-content müßte man dann halt mit foreach durch alle "Zeilen" durchrennen. bearbeitet 24. April 2019 von daabm Zitieren
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.