จะเกิดอะไรขึ้นเมื่อคุณใช้คำสั่ง 'copy / b'


13

วันนี้ฉันเพิ่งค้นพบว่าฉันสามารถรวมไฟล์บางไฟล์โดยใช้copy /bคำสั่ง โดยเฉพาะอย่างยิ่งฉันสังเกตเห็นว่าเมื่อฉันรวมไฟล์ mp3 สองไฟล์เครื่องเล่น VLC แสดงพฤติกรรมที่ตลกกับเวลา:

             รับ 1

ที่นี่มันค่อนข้างปกติ แต่เพลงแรกกำลังจะจบลง ... จากนั้นส่วนที่ตลกก็ตามมา ....

            ใช้เวลา 2              ใช้เวลา 3

ที่นี่เวลาค้นหากำลังทำงานอย่างแท้จริงขณะที่กำลังเล่น

ในการรวมรูปภาพหรือ PDF เข้ากับเทคนิคนี้ฉันค้นพบว่าจะมีการเพิ่มขนาดไฟล์อย่างถูกต้อง แต่จะแสดงเฉพาะรูปภาพแรกเท่านั้น

ดังนั้นคำถามของฉันคือ: copy /bคำสั่งทำอะไรกันแน่? มันใช้เพื่อการรวมไฟล์จริงๆหรือว่าเป็นแฮ็ค?

คำตอบ:


17

/bธงของcopyถือว่าคำสั่งไฟล์ไบนารี (เช่นกระแสดิบไบต์ความหมาย) และสำเนาพวกเขาไบต์สำหรับไบต์แทนที่จะเป็นค่าเริ่มต้น (หรือ/a) พฤติกรรมซึ่งถือว่าพวกเขาเป็นบรรทัดของข้อความ (กับการสิ้นสุดของเส้น อักขระ, จุดสิ้นสุดไฟล์ ฯลฯ )

คุณสามารถผสานไฟล์ข้อความด้วยพฤติกรรมข้อความเริ่มต้นหรือสวิตช์ไบนารี แต่ไฟล์ไบนารีใด ๆก็ไม่ทำงาน คุณไม่สามารถคัดลอกไบต์จากไฟล์ไบนารีสองไฟล์และคาดว่ามันจะทำงานได้เพราะไฟล์ไบนารีมักจะมีส่วนหัว , เมทาดาทา , โครงสร้างข้อมูลฯลฯ ที่กำหนดรูปแบบของไฟล์ หากคุณทำสำเนาแบบไบนารีคุณก็จะคัดลอกไบต์ทั้งหมดตามที่วางโครงสร้างเหล่านี้ในสถานที่ที่พวกเขาไม่ควรดังนั้นเมื่อคุณเปิดพวกเขาฟังก์ชั่นการแยกจะมีปัญหาและดูว่าข้อมูลที่เสียหายเป็นหลัก . บางโปรแกรมจะเพิกเฉยต่อชิ้นส่วนที่ไม่สมเหตุสมผลและแสดงให้เห็นว่าสามารถทำได้ (ซึ่งอนุญาตให้มีการทำ stereography ให้ทำงาน) แต่บางโปรแกรมก็จะโยนข้อผิดพลาดและบ่นว่าไฟล์นั้นเสียหาย ความสามารถในการตรวจจับความเสียหายขึ้นอยู่กับชนิดไฟล์

ตัวอย่างเช่นลองประดิษฐ์รูปแบบ PDF ที่ง่ายขึ้น:

Byte(s)    Meaning
---------------------

File header:
0-1        # of Pages
2-3        Language
4-5        Font
6-EOF      Data (each page encoded separately)

Page data:
0-1        Page number
2-3        # of characters on page
4-#chars   Letters contained on the page

อย่างที่คุณเห็นแต่ละไฟล์จะมีส่วนหัวระดับไฟล์พร้อมข้อมูลทั่วไปบางส่วนตามด้วยบล็อคข้อมูลสำหรับแต่ละหน้าที่มีข้อมูลหน้า หากคุณใช้ไฟล์สองไฟล์แต่ละไฟล์มีหนึ่งหน้าและรวมเป็นไฟล์ไบนารีคุณจะไม่สร้างไฟล์สองหน้าหนึ่ง แต่แทนที่จะเป็นไฟล์ที่เสียหายหนึ่งไฟล์ที่เริ่มต้นด้วยหน้าเดียวจากนั้นจึงมีไฟล์ขยะจำนวนมาก ส่วนหัวไม่สมเหตุสมผลเมื่อโปรแกรมพยายามอ่านหน้าสอง)

สิ่งเดียวกันนี้เกิดขึ้นกับ MP3 ของคุณ เมื่อคุณรวมมันเช่นนั้นแท็ก ID3ที่จุดเริ่มต้นและ / หรือจุดสิ้นสุดของไฟล์ที่สองจะถูกเก็บไว้และเมื่อผู้เล่นพยายามที่จะอ่านเฟรมถัดไปก็คาดหวังว่าข้อมูลเสียง แต่กำลังค้นหาส่วนหัวของ ไฟล์ที่สองซึ่งไม่ตรงกับรูปแบบที่คาดไว้สำหรับข้อมูลเสียงจึงไม่ทราบว่าต้องทำอย่างไร ผู้เล่นบางคนจะเล่นส่วนหัวเป็นข้อมูลเสียง (ซึ่งน่าจะเล่นเป็นแบบคงที่ / เสียงรบกวน / ปรากฏ / ฯลฯ ) บางคนจะตัดเสียงจนกว่าจะถึงเฟรมที่ถูกต้องต่อไปบางคนอาจหยุดเล่นเพลงพร้อมกันและบางคนอาจผิดพลาด .

copyคำสั่งรู้อะไรเกี่ยวกับไฟล์ประเภทอื่น ๆ กว่าข้อความธรรมดา (และแม้แล้วข้อความ ASCII เท่านั้น) ดังนั้นเพียงข้อความธรรมดาสามารถรวมกันได้อย่างถูกต้องกับมัน ไฟล์ไบนารีจะต้องรวมกันโดยใช้เครื่องมือแก้ไขที่รู้วิธีแยกวิเคราะห์และตีความเนื้อหาอย่างถูกต้อง


นีซ, VLC เล่นไฟล์ MP3 ทั้งสองและแม้กระทั่งพยายามอย่างถูกต้อง แต่ปัญหาเดียวก็คือว่าคุณไม่ได้เป็นเพียงแค่ต้องการที่จะเห็นการเปลี่ยนแปลงเวลา ...
Chibueze Opata

เช่นเดียวกับที่ฉันพูดบางโปรแกรมทนต่อไฟล์เสียหาย อัลกอริธึมการแยกวิเคราะห์ของ VLC สามารถข้ามเฟรม“ เสียหาย” แต่เนื่องจากไม่ใช่เฟรมจริงจึงไม่มีวิธีทราบความยาวที่ถูกต้องดังนั้นจึงกระโดดไปมา มันเหมือนกับว่าคุณโหลดไฟล์ PDF สองหน้าข้างบนที่คิดค้นขึ้นมา ผู้อ่านจะไม่ทราบว่ามีหลายหน้าจริง ทางออกที่ดีที่สุดของคุณกับ MP3 คือการแยกแท็กเพื่อให้มีเพียงเฟรมเสียงจำนวนหนึ่งก่อนที่จะทำการคัดลอกไบนารี
Synetech

1

ในตัวอย่างของคุณด้วย MP3 มันอาจจะให้พฤติกรรมแปลก ๆ เพราะวิธีการเข้ารหัส MP3 ตัวอย่างเช่นแท็ก ID3v1 เป็น 128 ไบต์สุดท้ายของ MP3 (เช่นศิลปินอัลบั้ม ฯลฯ ) ข้อมูลนี้ไม่สามารถ "เล่นได้" เมื่อ VLC หรือเครื่องเล่นสื่ออื่นเปิด MP3 ขึ้นมามันจะเล่นผ่าน MP3 ตัวแรกทำตัวตลกสำหรับข้อมูลแล้วเล่นผ่านไฟล์ที่เหลือ ตอนนี้ฉันยังไม่ได้โหลด Windows ดังนั้นฉันไม่สามารถทดสอบได้อย่างแน่นอน

ฉันคิดว่านี่เป็นภาพและภาพยนตร์; ขึ้นอยู่กับว่าไฟล์นั้นถูกเข้ารหัสอย่างไรขึ้นอยู่กับว่าไฟล์จะ "รวมกัน" อย่างไร ฉันนึกภาพการทำงานนี้มาจากสมัยของ DOS เมื่อทุกอย่างเป็นข้อความธรรมดา


1

นานมาแล้วในวันเก่า ๆ ที่ฉันชนะฉันใช้เพื่อต่อวิดีโอคลิปเข้าด้วยกัน มันใช้งานไม่ได้ตลอดเวลา แต่ใช้งานได้บางเวลา

นี่คือตัวอย่างของคำสั่งที่ฉันใช้:

copy /b movie1.mpg + movie2.mpg + movie3.mpg movie4.mpg

หากภาพยนตร์ที่ไม่ใหญ่เกินไปและประเภทเดียวกันอัตราเฟรม ฯลฯ ทั้งหมดพวกเขามักจะรวมอย่างไม่มีที่ติ ไม่ได้ลองอะไรแบบนี้เมื่อเร็ว ๆ นี้


-1

เกี่ยวกับ MP3 อย่างคร่าว ๆ ว่ามีอะไรหลังจากที่ส่วนหัวสามารถอ่านเป็นข้อมูลได้ มีเกมนี้ Sonic 3 ใน Sega Genesis และอีกเกมหนึ่งชื่อว่า Sonic & Knuckles คาร์ทริดจ์ดั้งเดิมของ Sonic & Knuckles มีช่องเสียบที่ต้องการแทรกเกมอื่น แต่เมื่อเพิ่ม Sonic 2 และพิเศษ 3 อาจเช็คซัมจะเรียกตัวชี้อีกชุดเกมจะทำงานแตกต่างกัน copy /b sonick.bin+sonic3.bin sonic3k.binในช่วงเริ่มต้นของการใช้รอมเมื่อใดก็ตามที่เราต้องการที่จะใส่สองตลับในการทำงานเหมือนมันเป็นในฮาร์ดแวร์เราใช้ ด้วยวิธีนี้การผสานของพวกเขาจะส่งผลให้มี ROM ขนาดใหญ่หนึ่งเดียวซึ่ง Sonick จะมีชุดคำสั่ง (พอยน์เตอร์) เพื่อให้ใช้ทรัพยากร sonic3

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