FuSer 0 Geschrieben 23. April 2019 Melden Teilen 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 Link zu diesem Kommentar
BOfH_666 577 Geschrieben 23. April 2019 Melden Teilen 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 Link zu diesem Kommentar
FuSer 0 Geschrieben 23. April 2019 Autor Melden Teilen Geschrieben 23. April 2019 Hallo, Danke für die Antwort. Leider ist es keine exe oder dll. Zitieren Link zu diesem Kommentar
BOfH_666 577 Geschrieben 23. April 2019 Melden Teilen 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 Link zu diesem Kommentar
FuSer 0 Geschrieben 23. April 2019 Autor Melden Teilen 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 Link zu diesem Kommentar
BOfH_666 577 Geschrieben 23. April 2019 Melden Teilen 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 Link zu diesem Kommentar
daabm 1.355 Geschrieben 23. April 2019 Melden Teilen 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 Link zu diesem Kommentar
v-rtc 88 Geschrieben 24. April 2019 Melden Teilen Geschrieben 24. April 2019 Wollte schon gestern was sagen, traute mich aber nicht...Bekommt man ggf. mit Linux Befehlen hin... Zitieren Link zu diesem Kommentar
BOfH_666 577 Geschrieben 24. April 2019 Melden Teilen 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 Link zu diesem Kommentar
v-rtc 88 Geschrieben 24. April 2019 Melden Teilen 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 Link zu diesem Kommentar
BOfH_666 577 Geschrieben 24. April 2019 Melden Teilen Geschrieben 24. April 2019 (bearbeitet) hmmmm .... na dann ma kukn, ob sich FuSer nochmal meldet ... bearbeitet 24. April 2019 von BOfH_666 Zitieren Link zu diesem Kommentar
FuSer 0 Geschrieben 24. April 2019 Autor Melden Teilen 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 Link zu diesem Kommentar
daabm 1.355 Geschrieben 24. April 2019 Melden Teilen 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 Link zu diesem Kommentar
FuSer 0 Geschrieben 24. April 2019 Autor Melden Teilen 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 Link zu diesem Kommentar
daabm 1.355 Geschrieben 24. April 2019 Melden Teilen 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 Link zu diesem Kommentar
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.