Czy istnieje komenda linux do wyodrębnienia wszystkich ciągów ascii z pliku wykonywalnego lub innego pliku binarnego? Chyba mógłbym to zrobić grepem, ale pamiętam gdzieś, że takie polecenie istnieje?
39
Polecenie, którego szukasz, to strings
Jego nazwa jest dość oczywista, pobiera dowolny drukowalny ciąg z danego pliku.
man strings
daje:
STRINGS (1)
Ciągi NAME - znajdź ciągi do wydrukowania w obiekcie lub innym pliku binarnymSTRESZCZENIE
strings [ - ] [ -a ] [ -o ] [ -t format ] [ -number ] [ -n number ] [--] [file ...]
Polecenie strings jest sposobem na rozwiązanie tego rodzaju problemów. Czasami musisz także wyrzucić go z grep .
Na przykład:
strings somebinaryfile | grep textuwanttofind
Polecenie istnieje i nazywa się ... ciągami!
Problem z używaniem łańcuchów polega na tym, że nie widzisz otaczających niedrukowalnych elementów i musisz być ostrożny z minimalną długością łańcucha.
Problem z używaniem
lub jest to, że sekwencja może być trudna do znalezienia, jeśli otacza linię.Coś, co bardzo mi się podoba, to ZTreeWin działający w systemie WINE w systemie Linux - możesz z tym wiele zrobić, ale wyszukiwanie w dowolnym pliku lub edytowanie plików binarnych może być szczególnie przydatne.
Niesamowity pakiet ytree jest dostępny dla wielu wariantów Linuksa i Uniksa i ma dobry widok Hex zrzutu dowolnego pliku, ale nie ma wyszukiwania, które ma ZTreeWin (i jego 16-bitowy poprzednik, XTree).
źródło