Monday 31 July 2017

Unix เปรียบเทียบ สอง ไฟล์ ไบนารี ตัวเลือก


ฉันคิดว่าคุณสามารถไปโดยใช้ 3 เครื่องมือ: cmp จะดีกว่าสำหรับไฟล์ไบนารีและ diff จะดีกว่าสำหรับไฟล์ข้อความสำหรับไฟล์ไบนารี diff เพียงรายงานว่าแตกต่าง ot ไม่ diff ทำงานได้ดีสำหรับไดเรกทอรี ใด ๆ ของสองคนแรกที่สามารถบรรลุสิ่งที่คุณต้องการเงียบ diff ใช้สวิตช์ - q และ cmp ใช้สวิตช์ - s เพื่อบอกให้คุณทราบว่ามีรหัสส่งคืน: 0 ถ้าไฟล์ทั้งสองไฟล์ตรงกับ 1 ถ้าไม่มี cmp ยังมีตัวเลือกที่ดีในการหลีกเลี่ยงการอ่านไฟล์ทั้งหมด (ดีถ้าคุณมีไฟล์ใหญ่): ถ้าคุณรู้ว่าไฟล์อาจแตกต่างกันในบรรทัดแรก N หรือระหว่างบรรทัด N และ M ที่คุณสามารถทำได้ (เช่นสำหรับ แถว N 10 และ M 20): ฉันเพิ่ม md5sum ลงในรายการเพราะถ้าคุณมีโอกาสที่จะคำนวณ MD5 checksum ทุกครั้งที่คุณแก้ไขไฟล์เหล่านี้คุณสามารถเปรียบเทียบได้เพียงอย่างเดียวว่าจะหาได้อย่างรวดเร็วหากตรงหรือไม่ ในกรณีนี้สมมติว่าคุณมีไฟล์จำนวนมากเพื่อเปรียบเทียบ ตอบว่า 25 ตุลาคม 10 ที่ 9: 23 หนึ่งในวิธีที่พบมากที่สุดในการพิจารณาว่าไฟล์สองไฟล์เหมือนกันหรือไม่ (สมมุติว่าขนาดของพวกเขาตรงกัน) กำลังใช้โปรแกรมสร้างแฮช (เป็นลายนิ้วมือ) ของไฟล์ คนที่พบมากที่สุดคือ md5sum และ sha1sum หากคุณมีไฟล์จำนวนมากที่ต้องตรวจสอบตัวอย่างเช่นถ้าคุณกำลังถ่ายโอนไดเรกทอรีเต็มรูปแบบของไฟล์จากระบบหนึ่งไปยังอีกระบบหนึ่งคุณสามารถเปลี่ยนเส้นทางจากระบบเดิมไปยังไฟล์จากนั้น md5sum sha1sum จะสามารถใช้แฟ้มดังกล่าวได้โดยอัตโนมัติ บอกว่าไฟล์ใดที่แตกต่างกันตอบ: Apr 29 10 at 12:21 MD5 ไม่ค่อยมีความน่าเชื่อถือในเรื่องนี้: diggsecurityhellip ndash Jon Cage พ. ค. 29 10 เวลา 12:30 MD5 เชื่อถือได้สำหรับการตรวจสอบความสมบูรณ์ขั้นพื้นฐาน ไม่ถือว่าเป็นการเข้ารหัสที่เข้มแข็งเท่าที่เราเคยคิด ถ้าคุณกังวลเกี่ยวกับแฮกเกอร์อย่าใช้ MD5 แต่ถ้าคุณเพียงแค่ต้องการทราบว่าไฟล์บางไฟล์ถูกคัดลอกจากแผ่นซีดีเสียหายหรือไม่ถ้าคอมไพเลอร์ของคุณพ่นไฟล์เดียวกันทุกครั้ง MD5 ก็เพียงพอแล้ว ndash Adam Batkin เม. ย. 29 10 เวลา 12: 55 ฉันชอบ VBinDiff DHEX ใช้ซีพียูแม้ในขณะทำงานไม่ทำงานฉันคิดว่าเป็นเรื่องที่วาดใหม่ตลอดเวลาหรือบางอย่าง VBinDiff doesn ทำงานกับ terminal กว้างแม้ว่า. แต่แอดเดรสกลายเป็นแปลก ๆ กับเทอร์มินัลกว้างอย่างไรก็ตามเนื่องจากคุณมีมากกว่า 16 ไบต์ต่อแถว ndash Janus Troelsen Oct 17 12 at 14:22 ลอง diff ในการรวมกันต่อไปของการทดแทนกระบวนการ zshbash และ colordiff ใน CLI: - y แสดงความแตกต่างด้านโดยด้าน (xxd) xxd เป็นเครื่องมือ CLI เพื่อสร้าง hexdump output ของ binary ไฟล์ colordiff จะ colorize diff output (ติดตั้งผ่าน: sudo apt-get ติดตั้ง colordiff) เพิ่ม -200 เพื่อ diff สำหรับเอาท์พุทที่กว้างขึ้นถ้าไฟล์มีขนาดใหญ่เพิ่มขีด จำกัด (เช่น - l1000) สำหรับแต่ละ xxd วิธีการที่ใช้สำหรับลบไบต์เอาท์พุทสำหรับ การกำจัดไบต์ NUL เดี่ยวที่ไบต์ 100 ของไฟล์ขนาดใหญ่: ถ้าคุณต้องการดูเวอร์ชัน ASCII ของอักขระ: ทดสอบบน Ubuntu 14.04 ฉันชอบมากกว่า xxd เนื่องจากเป็น POSIX xxd ไม่ใช่ (มาพร้อมกับ Vim) มี - An เพื่อลบคอลัมน์ที่อยู่โดยไม่มี awk - เอาคอลัมน์ที่อยู่ออก นี่เป็นสิ่งสำคัญมิฉะนั้นเส้นทั้งหมดจะแตกต่างกันไปหลังจากลบไบต์ออกแล้ว - w1 ทำให้หนึ่งไบต์ต่อบรรทัดเพื่อให้ diff สามารถใช้งานได้ จำเป็นต้องมีหนึ่งไบต์ต่อบรรทัดหรือทุกบรรทัดหลังจากการลบจะกลายเป็นระยะและแตกต่างกัน ขออภัยนี่ไม่ใช่ POSIX แต่มีอยู่ใน GNU - tx1 เป็นตัวแทนที่คุณต้องการเปลี่ยนเป็นค่าที่เป็นไปได้ตราบเท่าที่คุณเก็บไบต์ละ 1 บรรทัดไว้ - v ป้องกันไม่ให้คำย่อซ้ำของเครื่องหมายดอกจันซึ่งอาจรบกวนการทำงานของ diff - d - - เชื่อมต่อกับทุกๆสองสาย เราจำเป็นต้องใช้เนื่องจาก hex และ ASCII แยกเป็นเส้นเดียวกัน จาก stackoverflowquestions8987257concatenating-every-other-line-with-the-next เราใช้วงเล็บ () เพื่อกำหนด bdiff แทนเพื่อ จำกัด ขอบเขตของฟังก์ชันภายใน f. เมื่อใช้ hexdumps และ diff ข้อความเพื่อเปรียบเทียบไฟล์ไบนารี xxd โดยเฉพาะอย่างยิ่ง. การเพิ่มและการลบไบต์จะกลายเป็นการเปลี่ยนที่อยู่ซึ่งอาจทำให้มองเห็นได้ยาก วิธีนี้บอกว่า xxd ไม่ใช่ที่อยู่เอาต์พุตและจะส่งออกไบต์เพียงหนึ่งไบต์ต่อบรรทัดซึ่งจะแสดงให้เห็นว่าไบต์ใดมีการเปลี่ยนแปลงเพิ่มหรือลบออก คุณสามารถค้นหาที่อยู่ได้ในภายหลังด้วยการค้นหาลำดับที่น่าสนใจของไบต์ใน hexdump ปกติมากขึ้น (เอาท์พุท xxd first. bin) ตอบ 22 เม. ย. นี้เวลา 12:10 น

No comments:

Post a Comment