มีคำสั่ง linux ใดที่จะแยกสตริง ascii ทั้งหมดจากไฟล์เรียกทำงานหรือไฟล์ไบนารีอื่น ๆ ? ฉันคิดว่าฉันสามารถทำได้ด้วย grep แต่ฉันจำได้ว่าได้ยินบางที่คำสั่งดังกล่าวมีอยู่?
มีคำสั่ง linux ใดที่จะแยกสตริง ascii ทั้งหมดจากไฟล์เรียกทำงานหรือไฟล์ไบนารีอื่น ๆ ? ฉันคิดว่าฉันสามารถทำได้ด้วย grep แต่ฉันจำได้ว่าได้ยินบางที่คำสั่งดังกล่าวมีอยู่?
คำตอบ:
คำสั่งที่คุณกำลังมองหาคือ strings
ชื่อของมันค่อนข้างอธิบายตนเองมันดึงสายอักขระที่พิมพ์ได้จากไฟล์ที่กำหนด
man strings
ให้:
สตริง (1)
สตริงNAME - ค้นหาสตริงที่พิมพ์ได้ในวัตถุหรือไฟล์ไบนารีอื่น ๆสรุป
strings [ - ] [ -a ] [ -o ] [ -t format ] [ -number ] [ -n number ] [--] [file ...]
สตริงคำสั่งเป็นวิธีที่จะไปสำหรับประเภทนี้โดยเฉพาะของปัญหา บางครั้งคุณยังมีท่อออกไปgrep
ตัวอย่างเช่น:
strings somebinaryfile | grep textuwanttofind
คำสั่งมีอยู่และเรียกว่า .... สตริง!
คำสั่ง od สามารถทำได้:
od -c *filename*
ปัญหาเกี่ยวกับการใช้สตริงคือคุณไม่เห็นสภาพแวดล้อมที่ไม่สามารถพิมพ์ได้และคุณต้องระวังความยาวของสตริงต่ำสุด
ปัญหาในการใช้
od -c FILEหรือ
hexdump -C ไฟล์คือว่าลำดับสามารถหายากถ้ามันตัดบรรทัด
สิ่งที่ฉันชอบมากสำหรับZTreeWin ที่ทำงานใน WINE บน Linux - คุณสามารถทำอะไรได้มากมาย แต่การค้นหาในไฟล์หรือไบนารีการแก้ไขใด ๆ ก็มีประโยชน์อย่างยิ่ง
แพคเกจ ytree ที่ยอดเยี่ยมนั้นมีให้บริการสำหรับ Linux และ Unix หลายรุ่นและมีมุมมองการถ่ายโอนข้อมูล Hex ที่ดีของไฟล์ใด ๆ