Có bất kỳ lệnh linux để trích xuất tất cả các chuỗi ascii từ một tệp nhị phân thực thi hoặc khác? Tôi cho rằng tôi có thể làm điều đó với một grep, nhưng tôi nhớ đã nghe thấy ở đâu đó rằng một lệnh như vậy tồn tại?
Có bất kỳ lệnh linux để trích xuất tất cả các chuỗi ascii từ một tệp nhị phân thực thi hoặc khác? Tôi cho rằng tôi có thể làm điều đó với một grep, nhưng tôi nhớ đã nghe thấy ở đâu đó rằng một lệnh như vậy tồn tại?
Câu trả lời:
Lệnh bạn đang tìm kiếm là strings
Tên của nó khá tự giải thích, nó lấy bất kỳ chuỗi có thể in nào từ một tệp nhất định.
man strings
cho:
Chuỗi (1)
Chuỗi NAME - tìm các chuỗi có thể in trong một đối tượng hoặc tệp nhị phân khácTÓM TẮC
strings [ - ] [ -a ] [ -o ] [ -t format ] [ -number ] [ -n number ] [--] [file ...]
Lệnh chuỗi là cách để giải quyết loại vấn đề cụ thể này. Đôi khi bạn cũng phải đặt nó ra để grep .
Ví dụ:
strings somebinaryfile | grep textuwanttofind
Lệnh od có thể làm điều này:
od -c *filename*
Một vấn đề với việc sử dụng chuỗi là bạn không nhìn thấy các bản in không phải xung quanh và bạn phải cẩn thận với độ dài chuỗi tối thiểu.
Một vấn đề sử dụng
TÌM KIẾMhoặc là
hexdump -C TẬP TINlà một chuỗi có thể khó tìm nếu nó kết thúc một dòng.
Một cái gì đó tôi rất thích cho điều này là ZTreeWin đang chạy trong WINE trên Linux - bạn có thể làm rất nhiều với nó nhưng việc tìm kiếm trong bất kỳ tệp hoặc nhị phân chỉnh sửa nào có thể đặc biệt hữu ích.
Gói ytree tuyệt vời có sẵn cho nhiều biến thể Linux và Unix và có chế độ xem Hex tốt cho bất kỳ tệp nào nhưng không có tìm kiếm mà ZTreeWin (và tiền thân 16bit của nó, XTree) có.