Linux Command เพื่อค้นหา Strings ในไฟล์ Binary หรือ non ascii


38

มีคำสั่ง linux ใดที่จะแยกสตริง ascii ทั้งหมดจากไฟล์เรียกทำงานหรือไฟล์ไบนารีอื่น ๆ ? ฉันคิดว่าฉันสามารถทำได้ด้วย grep แต่ฉันจำได้ว่าได้ยินบางที่คำสั่งดังกล่าวมีอยู่?

คำตอบ:


71

คำสั่งที่คุณกำลังมองหาคือ strings

ชื่อของมันค่อนข้างอธิบายตนเองมันดึงสายอักขระที่พิมพ์ได้จากไฟล์ที่กำหนด

man strings ให้:

สตริง (1)


สตริงNAME - ค้นหาสตริงที่พิมพ์ได้ในวัตถุหรือไฟล์ไบนารีอื่น ๆ

สรุป
strings [ - ] [ -a ] [ -o ] [ -t format ] [ -number ] [ -n number ] [--] [file ...]


9

สตริงคำสั่งเป็นวิธีที่จะไปสำหรับประเภทนี้โดยเฉพาะของปัญหา บางครั้งคุณยังมีท่อออกไปgrep

ตัวอย่างเช่น:

strings somebinaryfile | grep textuwanttofind


3

คำสั่ง od สามารถทำได้:

od -c *filename*

3
ใช่ว่าจะแยกตัวอักษร ASCII แต่มันไม่ได้เป็นสตริงจริง ๆ ฉันคิดว่า 'สตริง' มีประโยชน์มากกว่าสำหรับกรณีส่วนใหญ่
user5336

ใช่ไม่ทราบเกี่ยวกับคำสั่งนั้น แต่ฉันทำตอนนี้! AlberT ได้รับ '+1' :-) ของฉัน
Kyle Brandt

2

ปัญหาเกี่ยวกับการใช้สตริงคือคุณไม่เห็นสภาพแวดล้อมที่ไม่สามารถพิมพ์ได้และคุณต้องระวังความยาวของสตริงต่ำสุด

ปัญหาในการใช้

od -c FILE
หรือ
hexdump -C ไฟล์
คือว่าลำดับสามารถหายากถ้ามันตัดบรรทัด

สิ่งที่ฉันชอบมากสำหรับZTreeWin ที่ทำงานใน WINE บน Linux - คุณสามารถทำอะไรได้มากมาย แต่การค้นหาในไฟล์หรือไบนารีการแก้ไขใด ๆ ก็มีประโยชน์อย่างยิ่ง

แพคเกจ ytree ที่ยอดเยี่ยมนั้นมีให้บริการสำหรับ Linux และ Unix หลายรุ่นและมีมุมมองการถ่ายโอนข้อมูล Hex ที่ดีของไฟล์ใด ๆ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.