Jak wygrzebac kawalek tekstu z binarnego pliku

Zadania admina bywają czasem załamujące ;) bo komuś pomieszały się źródełka softu i nikt nie ma pojęcia w jakich wersjach działają ‘binarki’ na serwerze, to pan admin na pewno da rade to ustalić :P

Jak zwykle nie skorzystam z goole ;) nie użyje jakiegoś perla ani innego wysokopoziomowego badziewia ;)

O tyle fajnie jest, że w binarkach, w postaci czystego tekstu są zaszyte stringi zawierajace wersje poszczególnych komponentów. W pierwszej kolejności potraktuje binarki poleceniem strings dostając na standardowe wyjście wszystkie stringi zawarte w pliku binarnym. Potem grep, co by ograniczyć mnie do linii, które mnie interesują. A dalej dla ułatwienia tr w celu powiększenia wszystkich literek na wielkie i pozbycia się zbędnych spacji, sort, uniq i gotowe – może nie będzie to zbyt czytelne dla czlowieka za to idelane dla diff-a :)

strings binary_file | grep -i pattern | tr [a-z] [A-Z] | tr -d " " | sort | uniq > binary_file_version.txt

i w taki sam sposób pliki źródłowe

strings source_file | grep -i pattern | tr [a-z] [A-Z] | tr -d " " | sort | uniq > source_file_version.txt

a dalej już zwykły diff i gotowe :)

oczywiście wszystko trzeba opatrzyć pięknymi pętelkami w bash :P

Categories: bash, linux
Tags: , , ,