Lệnh Linux để tìm Chuỗi trong tệp nhị phân hoặc không ascii


39

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:


72

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ác

TÓM TẮC
strings [ - ] [ -a ] [ -o ] [ -t format ] [ -number ] [ -n number ] [--] [file ...]


10

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

4

Lệnh không tồn tại và được gọi là .... chuỗi!


3

Lệnh od có thể làm điều này:

od -c *filename*

3
vâng, điều đó trích xuất các ký tự ASCII, nhưng nó không thực sự là các chuỗi. Tôi nghĩ rằng 'chuỗi' hữu ích hơn cho phần lớn các trường hợp.
dùng5336

Ya, không biết về lệnh đó, nhưng tôi làm ngay bây giờ! AlberT đã nhận được '+1' của tôi :-)
Kyle Brandt

2

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ẾM
hoặc là
hexdump -C TẬP TIN
là 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ó.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.