คุณเคยพยายามเปิดไฟล์ในโปรแกรมแก้ไขเพื่อค้นหาว่ามีเนื้อหาไบนารีที่ไม่สามารถอ่านได้หรือไม่?
คำสั่ง "สตริง" ของ Linux ทำให้สามารถดูอักขระที่มนุษย์อ่านได้ภายในไฟล์ใด ๆ
จุดประสงค์หลักของการใช้คำสั่ง "strings" คือเพื่อระบุประเภทของไฟล์ที่คุณกำลังดูอยู่ แต่คุณยังสามารถใช้เพื่อแยกข้อความได้อีกด้วย ตัวอย่างเช่นหากคุณมีไฟล์จากโปรแกรมที่เป็นกรรมสิทธิ์ซึ่งบันทึกไฟล์ในรูปแบบไบนารีแปลก ๆ คุณสามารถใช้ "สตริง" เพื่อแยกข้อความที่คุณใส่ลงในไฟล์
ตัวอย่างการใช้คำสั่ง Strings
วิธีที่ยอดเยี่ยมในการแสดงให้เห็นถึงพลังของคำสั่ง strings คือการสร้างเอกสารโดยใช้ LibreOffice Writer
เพียงเปิด LibreOffice Writer แล้วป้อนข้อความจากนั้นบันทึกในรูปแบบ ODT มาตรฐาน
ตอนนี้เปิดหน้าต่างเทอร์มินัล (กด CTRL, ALT และ T ในเวลาเดียวกัน) จากนั้นใช้คำสั่ง cat เพื่อแสดงไฟล์ดังนี้:
แมวของคุณ
(แทนที่ yourfilename.odt ด้วยชื่อไฟล์ที่คุณสร้างขึ้น)
สิ่งที่คุณจะเห็นคือผนังทั้งตัวของข้อความที่อ่านไม่ออก
กดแป้นเว้นวรรคเพื่อเลื่อนดูไฟล์ คุณจะเห็นข้อความบางส่วนที่คุณป้อนเป็นระยะ ๆ ตลอดทั้งไฟล์
คำสั่ง strings สามารถใช้เพื่อแสดงเฉพาะส่วนที่มนุษย์อ่านได้
ในรูปแบบที่ง่ายที่สุดคุณสามารถรันคำสั่งต่อไปนี้:
สตริง yourfi
เช่นเดิมกำแพงข้อความจะปรากฏขึ้น แต่มีเพียงข้อความที่คุณสามารถอ่านได้ในฐานะมนุษย์ หากคุณโชคดีคุณจะสามารถเห็นข้อความของคุณ
สิ่งที่คุณจะเห็นว่าเป็นกุญแจสำคัญอยู่ในบรรทัดแรก:
mimetypeapplication / vnd.oasis
เราทราบว่าประเภทไฟล์เป็นไฟล์ LibreOffice Writer ODT ด้วยเหตุผล 2 ประการ:
- เราสร้างไฟล์
- นามสกุลคือ. ODT
ลองนึกภาพว่าคุณไม่ได้สร้างไฟล์หรือคุณพบไฟล์ในดิสก์ที่กู้คืนและไฟล์นั้นไม่มีนามสกุล
การกู้คืน Windows มักจะกู้คืนไฟล์ที่มีชื่อเช่น 0001, 0002, 0003 เป็นต้นความจริงที่ว่าไฟล์ที่กู้คืนนั้นดีมาก แต่การพยายามหาประเภทของไฟล์เหล่านั้นเป็นฝันร้าย
การใช้สตริงทำให้คุณมีโอกาสต่อสู้กับประเภทไฟล์ การรู้ว่าไฟล์เป็นไฟล์ opendocument.text หมายความว่าคุณสามารถบันทึกด้วยนามสกุล ODT และเปิดใน LibreOffice writer
ในกรณีที่คุณไม่ทราบว่าไฟล์ ODT นั้นเป็นไฟล์บีบอัด หากคุณเปลี่ยนชื่อ yourfilename.odt เป็น yourfilename.zip คุณสามารถเปิดได้ในเครื่องมือเก็บถาวรและยังแตกไฟล์ได้
พฤติกรรมทางเลือก
ตามค่าเริ่มต้นคำสั่ง strings จะส่งคืนสตริงทั้งหมดภายในไฟล์ แต่คุณสามารถเปลี่ยนลักษณะการทำงานเพื่อให้ส่งคืนสตริงจากส่วนข้อมูลที่เตรียมใช้งานและโหลดในไฟล์
นี่หมายความว่าอย่างไรกันแน่? ดูเหมือนจะไม่มีใครรู้
ควรสมมติว่าคุณกำลังใช้สตริงเพื่อลองค้นหาประเภทไฟล์หรือค้นหาข้อความเฉพาะในไฟล์
หากเมื่อเรียกใช้คำสั่ง strings โดยใช้พฤติกรรมเริ่มต้นคุณไม่ได้รับผลลัพธ์ที่คุณคาดหวังให้ลองเรียกใช้คำสั่งต่อไปนี้เพื่อดูว่ามันสร้างความแตกต่างหรือไม่:
เชือก
or
สตริง - ข้อมูลชื่อไฟล์ของคุณ
หน้าคู่มือระบุว่าคำสั่งด้านบนอาจช่วยลดปริมาณขยะที่ส่งคืนจากสตริง
คำสั่ง "strings" สามารถตั้งค่าให้ทำงานย้อนกลับเพื่อให้สวิตช์ลบ d เป็นลักษณะการทำงานเริ่มต้น หากเป็นกรณีนี้ในระบบของคุณคุณสามารถส่งคืนข้อมูลทั้งหมดโดยใช้คำสั่งต่อไปนี้:
เชือก
การจัดรูปแบบเอาต์พุต
คุณสามารถรับข้อความภายในเอาต์พุตเพื่อแสดงชื่อไฟล์ข้างข้อความแต่ละบรรทัด
ในการดำเนินการนี้ให้เรียกใช้หนึ่งในคำสั่งต่อไปนี้:
เชือก
or
สตริง - พิมพ์ไฟล์ชื่อชื่อไฟล์ของคุณ
ผลลัพธ์จะมีลักษณะดังนี้:
yourfilename: ส่วนของข้อความ
or
yourfilename: ส่วนของข้อความอื่น
ในฐานะที่เป็นส่วนหนึ่งของผลลัพธ์คุณยังสามารถแสดงออฟเซ็ตของตำแหน่งที่ข้อความนั้นปรากฏในไฟล์ โดยเรียกใช้คำสั่งต่อไปนี้:
เชือก
ผลลัพธ์จะมีลักษณะดังนี้:
ออฟเซ็ตเป็นออฟเซ็ตฐานแปดแม้ว่าจะขึ้นอยู่กับว่าสตริงถูกคอมไพล์สำหรับระบบของคุณอย่างไรซึ่งอาจเป็นฐานสิบหกหรือออฟเซ็ตทศนิยมได้เช่นกัน
วิธีที่ถูกต้องมากขึ้นในการชดเชยที่คุณต้องการคือใช้คำสั่งต่อไปนี้:
สตริง -td yourfilename
สตริง -to yourfilename
สตริง -th yourfilename
เครื่องหมายลบหมายถึงส่งกลับค่าชดเชยและอักขระที่ตามมาจะกำหนดประเภทออฟเซ็ต (เช่น d = ทศนิยม, o = ฐานแปด, h = ฐานสิบหก)
ตามค่าเริ่มต้นคำสั่ง strings จะพิมพ์สตริงใหม่ในบรรทัดใหม่ แต่คุณสามารถตั้งค่าตัวคั่นที่คุณต้องการได้ ตัวอย่างเช่นการใช้สัญลักษณ์ไปป์ ("|") เป็นตัวคั่นให้รันคำสั่งต่อไปนี้:
สตริง -s "| &
ปรับขีด จำกัด สตริง
คำสั่ง strings โดยค่าเริ่มต้นจะค้นหาสตริงที่พิมพ์ได้ 4 ตัวในแถว คุณสามารถปรับค่าเริ่มต้นเพื่อให้ส่งคืนสตริงที่มีอักขระที่พิมพ์ได้ 8 ตัวหรืออักขระที่พิมพ์ได้ 12 ตัว
การปรับขีด จำกัด นี้ทำให้คุณสามารถปรับแต่งผลลัพธ์เพื่อให้ได้ผลลัพธ์ที่ดีที่สุด การมองหาสตริงที่ยาวเกินไปคุณอาจเสี่ยงต่อการละเว้นข้อความที่มีประโยชน์ แต่การทำให้สั้นเกินไปคุณอาจได้รับขยะที่ส่งกลับมามากขึ้น
ในการปรับขีด จำกัด สตริงให้รันคำสั่งต่อไปนี้:
เงื่อนไข
ในตัวอย่างข้างต้นฉันได้เปลี่ยนขีด จำกัด เป็น 8 คุณสามารถแทนที่ 8 ด้วยจำนวนที่คุณเลือกได้
คุณยังสามารถใช้คำสั่งต่อไปนี้เพื่อทำสิ่งเดียวกัน:
สตริง - ไบต์ & #
รวมช่องว่าง
ตามค่าเริ่มต้นคำสั่ง strings จะมีช่องว่างเช่นแท็บหรือช่องว่างเป็นอักขระที่พิมพ์ได้ ดังนั้นหากคุณมีสตริงที่อ่านว่า "แมวนั่งบนเสื่อ" คำสั่งสตริงจะส่งคืนข้อความทั้งหมด
อักขระขึ้นบรรทัดใหม่และการส่งคืนแคร่ไม่ถือเป็นอักขระที่พิมพ์ได้ตามค่าเริ่มต้น
ในการรับสตริงเพื่อรับรู้อักขระบรรทัดใหม่และการส่งคืนค่าขนส่งเป็นสตริงการรันอักขระที่พิมพ์ได้ด้วยวิธีต่อไปนี้:
เชือก
เปลี่ยนการเข้ารหัส
มีตัวเลือกการเข้ารหัส 5 แบบสำหรับใช้กับสตริง:
- s = 7-bit byte (ใช้สำหรับ ASCII, ISO 8859)
- S = 8 บิตไบต์
- b = bigendian 16 บิต
- l = 16 บิต littleendian
ค่าเริ่มต้นคือไบต์ 7 บิต
ในการเปลี่ยนการเข้ารหัสให้รันคำสั่งต่อไปนี้:
สตริง -es yourfilename
สตริง --encoding = s yourfilename
ในคำสั่งด้านบนฉันได้ระบุ "s" เริ่มต้นซึ่งหมายถึงไบต์ 7 บิต เพียงแค่แทนที่ "s" ด้วยอักษรเข้ารหัสที่คุณเลือก
เปลี่ยนชื่อคำอธิบายไฟล์ไบนารี
คุณสามารถเปลี่ยนลักษณะการทำงานของสตริงเพื่อให้ใช้ไลบรารีตัวอธิบายไฟล์ไบนารีอื่นนอกเหนือจากที่มีให้สำหรับระบบของคุณ
สวิตช์นี้เป็นสวิตช์สำหรับผู้เชี่ยวชาญ หากคุณมีไลบรารีอื่นให้ใช้คุณสามารถทำได้โดยรันคำสั่งสตริงต่อไปนี้:
st
การอ่านตัวเลือกจากไฟล์
หากคุณจะใช้ตัวเลือกเดียวกันทุกครั้งคุณก็ไม่ต้องการระบุสวิตช์ทั้งหมดทุกครั้งที่คุณเรียกใช้คำสั่งเพราะต้องใช้เวลา
สิ่งที่คุณทำได้คือสร้างไฟล์ข้อความโดยใช้นาโนและระบุตัวเลือกภายในไฟล์นั้น
หากต้องการลองใช้งานภายในเทอร์มินัลให้รันคำสั่งต่อไปนี้:
ในไฟล์ให้ป้อนข้อความต่อไปนี้:
-f -o -n
บันทึกไฟล์โดยกด CTRL และ O แล้วออกโดยกด CTRL และ X
ในการรันคำสั่งสตริงด้วยอ็อพชันเหล่านี้ให้รันคำสั่งต่อไปนี้:
สตริง @strings
ตัวเลือกต่างๆจะถูกอ่านจากสตริงของไฟล์และคุณควรเห็นชื่อไฟล์ก่อนสตริงแต่ละอันค่าออฟเซ็ตและ "|" เป็นตัวคั่น
การขอความช่วยเหลือ
หากคุณต้องการอ่านเพิ่มเติมเกี่ยวกับสตริงคุณสามารถเรียกใช้คำสั่งต่อไปนี้เพื่อรับความช่วยเหลือ
หรือคุณสามารถอ่านหน้าคู่มือ:
ค้นหาว่าคุณกำลังใช้งานสตริงเวอร์ชันใด
หากต้องการค้นหาเวอร์ชันของสตริงที่คุณกำลังเรียกใช้ให้รันคำสั่งใดคำสั่งหนึ่งต่อไปนี้:
สตริง -v
สตริง -V
สตริง - เวอร์ชัน