หนึ่งจะสร้าง Zip Bomb ได้อย่างไร?


131

คำถามเกี่ยวกับระเบิดซิปนี้ทำให้ฉันไปที่หน้า Wikipediaในหัวข้อนี้ บทความกล่าวถึงตัวอย่างของไฟล์ zip ขนาด 45.1 kb ที่ขยายขนาดเป็น 1.3 เอ็กซาไบต์

อะไรคือหลักการ / เทคนิคที่จะใช้ในการสร้างไฟล์ดังกล่าวตั้งแต่แรก? ฉันไม่ต้องการทำสิ่งนี้จริงๆสนใจคำอธิบาย "วิธีการทำงาน" ที่เรียบง่ายของแนวคิดที่เกี่ยวข้องมากกว่า

PS

บทความกล่าวถึงไฟล์ zip 9 ชั้นดังนั้นจึงไม่ใช่กรณีง่ายๆที่จะต้องใส่เลขศูนย์ ทำไม 9 ทำไมถึง 10 ไฟล์ในแต่ละไฟล์?


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

2
ประเด็นคือ OP อ้างถึงไฟล์เฉพาะซึ่งประกอบด้วยไฟล์เก็บถาวรที่ซ้อนกันไม่ใช่ไฟล์บีบอัดขนาดใหญ่
Michael Borgwardt

1
ฉันคิดว่าไมเคิลพูดถูกเขาอธิบายวิธีสร้างไฟล์ที่อธิบายไว้ใน "PS" แต่คนอื่น ๆ ก็ไม่ทำเช่นนั้น อย่างไรก็ตามมีการเพิ่ม "PS" เป็นการแก้ไขดังนั้นคำตอบเหล่านั้นอาจไม่ได้ผิดอย่างโจ่งแจ้งในเวลาที่ได้รับ พวกเขาคิดว่า "ไฟล์ดังกล่าว" หมายถึง "ไฟล์ใด ๆ ที่คลายการบีบอัดเป็น 1.3 เอ็กซาไบต์" เมื่อปรากฎว่ามีจุดประสงค์เพื่อหมายถึง "ไฟล์ที่มีโครงสร้างเหมือนกับที่อธิบายไว้ในบทความที่ฉันลิงก์"
Steve Jessop

1
@onebyone ฉันเห็นด้วยอย่างสมบูรณ์ ฉันไม่คิดว่าการโหวตลดจะเหมาะสมในสถานการณ์เช่นนี้
San Jacinto

4
ฉันเดาว่ามันขึ้นอยู่กับว่าคุณคิดว่าการโหวตลดลงหมายถึง "นี่ไม่ใช่คำตอบที่ดีที่สุดสำหรับคำถาม" หรือ "คุณเป็นคนโง่และไม่สมควรมีชีวิตอยู่" หรือว่าอยู่ที่ไหนระหว่างนั้น โดยส่วนตัวแล้วฉันไม่ลงคะแนนหมายความว่าฉันควรอ่านคำตอบของฉันอีกครั้งและดูว่ามีอะไรผิดปกติอย่างชัดเจนที่ฉันควรแก้ไขหรือไม่ แต่ตอนนี้ฉันมีความสุขพอสมควรที่ไม่เห็นด้วยและไม่เปลี่ยนคำตอบถ้าฉันคิดว่าคำตอบของฉันมีส่วนช่วยอะไรบางอย่าง และฉันก็ค่อนข้างไม่มั่นใจเกี่ยวกับกระบวนการลงคะแนนทั้งหมดอยู่ดีตอนนี้ก็ชัดเจนว่าฉันจะไม่จับ Jon Skeet ;-)
Steve Jessop

คำตอบ:


92

อ้างจากหน้า Wikipedia:

ตัวอย่างหนึ่งของ Zip bomb คือไฟล์ 45.1.zip ซึ่งมีขนาดข้อมูลบีบอัด 45.1 กิโลไบต์ซึ่งมีไฟล์ zip ซ้อนกันเก้าชั้นในชุดละ 10 ไฟล์โดยไฟล์เก็บถาวรชั้นล่างแต่ละไฟล์จะมีไฟล์ขนาด 1.30 กิกะไบต์สำหรับข้อมูลที่ไม่มีการบีบอัดทั้งหมด 1.30 เอ็กซาไบต์ .

ดังนั้นสิ่งที่คุณต้องมีคือไฟล์ 1.3GB ไฟล์เดียวที่เต็มไปด้วยศูนย์บีบอัดลงในไฟล์ ZIP ทำสำเนา 10 ชุดบรรจุลงในไฟล์ ZIP และทำขั้นตอนนี้ซ้ำ 9 ครั้ง

ด้วยวิธีนี้คุณจะได้รับไฟล์ซึ่งเมื่อไม่มีการบีบอัดอย่างสมบูรณ์จะสร้างข้อมูลที่ไร้สาระโดยที่คุณไม่ต้องเริ่มต้นด้วยจำนวนนั้น

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


2
ไม่สามารถ ... เมื่อคุณ zip ไฟล์ที่เป็นศูนย์ที่ด้านล่างไฟล์ซิปที่ได้จะไม่เกือบจะบีบอัดได้สำหรับเลเยอร์ถัดไป
ปลาปักเป้า

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

10
ประเด็นไม่ได้อยู่ที่วิธีสร้างจำนวนข้อมูลสูงสุดจากไฟล์ที่เล็กที่สุดเท่าที่จะเป็นไปได้ประเด็นคือการเอาชนะความพยายามของโปรแกรมสแกนไวรัสในการป้องกันไฟล์เก็บถาวรที่มีขนาดใหญ่เกินไป
Michael Borgwardt

2
นั่นไม่ใช่แรงผลักดันของบทความใน wikipedia ดูเหมือนว่าจะผลักดันการโจมตีแบบดอส
San Jacinto

2
แต่ไฟล์ไม่ได้รับการแตกซ้ำ ... เหยื่อควรแยกไฟล์ zip ย่อยต่อไปเพื่อให้ใช้งานได้ ... วิธีแก้ปัญหาใด ๆ
มาโนช

46

สร้างไฟล์ 1.3 เอ็กซาไบต์ของศูนย์

คลิกขวา> ส่งไปยังโฟลเดอร์บีบอัด (ซิป)


22
คุณลืมคำถากถาง "ยิ้ม"
tvanfosson

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

133
ควรสร้างไฟล์ 1.3 exabyte ที่มีขนาด 1 พวกเขาดูน่ากินกว่าของ 0 มาก :)
Quinn Wilson

33
@quinn - นั่นเป็นเหตุผลว่าทำไมการบีบอัดศูนย์ (เริ่มอ้วนขึ้น) จึงมีประสิทธิภาพมากกว่ามาก
wefwfwefwe

1
สิ่งนี้ให้ไฟล์ zip> 1gb แก่คุณเว้นแต่ฉันจะเข้าใจผิด
Chris S

36

ทำได้อย่างง่ายดายภายใต้ Linux โดยใช้คำสั่งต่อไปนี้:

dd if=/dev/zero bs=1024 count=10000 | zip zipbomb.zip -

แทนที่การนับด้วยจำนวน KB ที่คุณต้องการบีบอัด ตัวอย่างด้านบนสร้างระเบิดซิป 10MiB (ไม่มากนัก แต่จะแสดงกระบวนการ)

คุณไม่จำเป็นต้องมีเนื้อที่ว่างบนฮาร์ดดิสก์เพื่อจัดเก็บข้อมูลทั้งหมดที่ไม่มีการบีบอัด


8
แต่คุณต้องการพลังในการประมวลผลเพื่อบีบอัดข้อมูลที่ไม่มีการบีบอัดข้อมูลก็ยังคงเป็น O (n) ในขนาดของข้อมูลที่ไม่มีการบีบอัด
tonfa

2
ใช่เช่นเดียวกับคำตอบอื่น ๆ ทั้งหมดที่นี่
Thomi

6
คำตอบของ Michael Borgwardt คือ O (log N) ในขนาดของข้อมูลที่ไม่มีการบีบอัด
Steve Jessop

1
โดยประมาณอย่างไรก็ตาม การทำซ้ำของกระบวนการแต่ละครั้ง "ตัดส่วนหัวของไฟล์เก็บถาวรซ้ำรายการไฟล์บีบอัด 10 ครั้งแทนที่ส่วนหัวของไฟล์เก็บถาวรบีบอัด" เพิ่มระดับการซ้อนซิปทีละ 1 ใช้เวลาตามสัดส่วนกับขนาดของข้อมูลที่บีบอัดจากขั้นตอนก่อนหน้า , คูณขนาดของข้อมูลที่ไม่มีการบีบอัดด้วย 10, และถ้ามันเพิ่มขนาดของข้อมูลที่บีบอัดเลยแน่นอนว่าจะไม่ทำเช่นนั้นด้วยปัจจัยเชิงเส้น
Steve Jessop

3
เช่นเดียวกับการทดสอบฉัน zip -9 1.3 GB ของศูนย์ ผลลัพธ์คือไฟล์ 1.3M ฉันทำซ้ำสิ่งนี้ 10 ครั้ง (ไม่ต้องกังวลกับการยุ่งกับส่วนหัว zip ดังนั้นผลลัพธ์จะไม่ทำงานเป็นระเบิดซิป แต่แสดงหลักการ) เพื่อให้ไฟล์ 13M ซึ่งบีบอัดด้วย zip -9 ถึง 34381 ไบต์ ดังนั้นขั้นตอนการทำสำเนาจึงทำให้ไฟล์มีขนาดเล็กลงจริง ๆ เนื่องจาก deflate รองรับโทเค็นที่มีขนาดสูงสุดที่กำหนดเท่านั้น ขั้นตอนต่อไปผลลัพธ์ในปี 18453 จากนั้น 19012, 19312, 19743, 20120, 20531, 20870
Steve Jessop

10

ด้านล่างนี้สำหรับ Windows:

จากแนวคิดการพิสูจน์ความปลอดภัยโฟกัส (NSFW!) เป็นไฟล์ ZIP ที่มี 16 โฟลเดอร์แต่ละโฟลเดอร์มี 16 โฟลเดอร์ซึ่งจะเป็นเช่นนั้น (42 คือชื่อไฟล์ zip):

\ 42 \ lib 0 \ book 0 \ ตอนที่ 0 \ doc 0 \ 0.dll
...
\ 42 \ lib F \ book F \ ตอน F \ doc F \ 0.dll

ฉันอาจจะผิดกับรูปนี้ แต่มันสร้างไดเร็กทอรี 4 ^ 16 (4,294,967,296) เนื่องจากแต่ละไดเร็กทอรีต้องการพื้นที่จัดสรร N ไบต์จึงมีขนาดใหญ่ ไฟล์ dll ท้ายคือ 0 ไบต์

การคลายซิปไดเร็กทอรีแรกเพียงอย่างเดียวจะ\42\lib 0\book 0\chapter 0\doc 0\0.dllทำให้เกิดพื้นที่จัดสรร 4gb


27
ฉันแค่สันนิษฐานว่าพวกเธอเป็นผู้หญิงเปลือยที่กำลังทำการวิจัยด้านความปลอดภัย
James McMahon

3
ซิปคือ nsfw สัญญาณเตือนสีแดงตื่นตระหนกขนาดใหญ่จะดับลงและกรงจะตกลงมาจากเพดานรอบโต๊ะทำงานของคุณ
Chris S

4
หากการโจมตีไฟล์ไวรัสทุกครั้งส่งผลให้มีการสัมภาษณ์กับ HR คุณก็ไม่จำเป็นต้องใช้โปรแกรมสแกนไวรัสหรือมิฉะนั้นคุณไม่จำเป็นต้องมีแผนกทรัพยากรบุคคล หนึ่งในนั้นไม่ได้มีส่วนช่วยในธุรกิจ ;-)
Steve Jessop

2
อาจเป็น NSFW เนื่องจาก Network Virus Scanner อาจต้องการตรวจสอบและแยกออกมาเพื่อทำเช่นนั้น
Michael Stum

5
โปรแกรมสแกนไวรัสควรทำเครื่องหมายว่าน่าสงสัย (ซึ่งอาจส่งผลให้ถูกบล็อกอย่างปลอดภัยหรืออาจส่งผลให้คุณไม่ปลอดภัยได้รับรายงานว่าพยายามติดตั้งไวรัส) หากระเบิดเกิดขึ้นจริงแผนกไอทีของคุณได้เรียนรู้สิ่งที่มีค่า - พวกเขาต้องการโปรแกรมสแกนไวรัสที่ดีกว่า
Steve Jessop

8

คำตอบที่จริงจัง:

(โดยทั่วไปมาก) การบีบอัดขึ้นอยู่กับการระบุรูปแบบการทำซ้ำดังนั้นไฟล์ zip จะมีข้อมูลที่แสดงถึงสิ่งที่ต้องการ

0x100000000000000000000000000000000000  
(Repeat this '0' ten trillion times)

ไฟล์ zip ที่สั้นมาก แต่มีขนาดใหญ่เมื่อคุณขยาย


1
ที่สามารถบีบอัดได้ไกลกว่านั้นจริงๆ: 0x1 (0x35) (นั่นคือ 0 ที่สองซ้ำ 35 ครั้งดังนั้นมันจะขยายไปยังความคิดเห็นของคุณ)
Michael

5

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


5

บทความกล่าวถึงไฟล์ zip 9 ชั้นดังนั้นจึงไม่ใช่กรณีง่ายๆที่จะต้องใส่เลขศูนย์ ทำไม 9 ทำไมถึง 10 ไฟล์ในแต่ละไฟล์?

ก่อนอื่นบทความ Wikipedia ในปัจจุบันกล่าวว่า 5 ชั้นมี 16 ไฟล์แต่ละไฟล์ ไม่แน่ใจว่าความแตกต่างนั้นมาจากไหน แต่ไม่เกี่ยวข้องทั้งหมด คำถามที่แท้จริงคือเหตุใดจึงใช้การซ้อนกันตั้งแต่แรก

DEFLATE ซึ่งเป็นวิธีการบีบอัดที่รองรับโดยทั่วไปเพียงวิธีเดียวสำหรับไฟล์ zip * มีอัตราส่วนการบีบอัดสูงสุดที่ 1032 ซึ่งสามารถทำได้โดยไม่มีอาการสำหรับลำดับการทำซ้ำใด ๆ ที่มีขนาด 1-3 ไบต์ ไม่ว่าคุณจะทำอะไรกับไฟล์ zip ตราบใดที่ใช้เพียง DEFLATE ขนาดที่คลายออกจะมีขนาดไม่เกิน 1032 เท่าของขนาดไฟล์ zip เดิม

ดังนั้นจึงจำเป็นต้องใช้ไฟล์ zip ที่ซ้อนกันเพื่อให้ได้อัตราส่วนการบีบอัดที่สูงมาก หากคุณมีการบีบอัด 2 ชั้นอัตราส่วนสูงสุดจะกลายเป็น 1032 ^ 2 = 1065024 สำหรับ 3 คือ 1099104768 เป็นต้น สำหรับเลเยอร์ 5 ชั้นที่ใช้ใน 42.zip อัตราส่วนการบีบอัดสูงสุดตามทฤษฎีคือ 1170572956434432 อย่างที่คุณเห็น 42.zip ที่แท้จริงอยู่ไกลจากระดับนั้น ส่วนหนึ่งคือค่าใช้จ่ายของรูปแบบ zip และส่วนหนึ่งคือพวกเขาไม่สนใจ

ถ้าจะเดาก็คงต้องบอกว่า 42.zip นั้นเกิดขึ้นจากการสร้างไฟล์ว่างขนาดใหญ่จากนั้นก็ทำการบีบอัดและคัดลอกซ้ำ ๆ ไม่มีความพยายามที่จะเพิ่มขีด จำกัด ของรูปแบบหรือเพิ่มการบีบอัดหรือสิ่งใด ๆ - พวกเขาเลือก 16 สำเนาต่อเลเยอร์โดยพลการ ประเด็นคือการสร้างน้ำหนักบรรทุกขนาดใหญ่โดยไม่ต้องใช้ความพยายามมากนัก

หมายเหตุ: รูปแบบการบีบอัดอื่น ๆ เช่น bzip2 มีอัตราส่วนการบีบอัดสูงสุดที่มากและมาก อย่างไรก็ตามโปรแกรมแยกวิเคราะห์ zip ส่วนใหญ่ไม่ยอมรับ

ป.ล. เป็นไปได้ที่จะสร้างไฟล์ zip ซึ่งจะเปิดเครื่องรูดเป็นสำเนาของตัวมันเอง (quine) คุณยังสามารถสร้างไฟล์ที่คลายซิปเป็นสำเนาหลาย ๆ ชุดได้ ดังนั้นหากคุณเปิดเครื่องรูดไฟล์ซ้ำ ๆ ตลอดไปขนาดสูงสุดที่เป็นไปได้จะไม่สิ้นสุด ข้อ จำกัด เพียงอย่างเดียวคือสามารถเพิ่มได้สูงสุด 1032 ในแต่ละการวนซ้ำ

PPS ตัวเลข 1032 ถือว่าข้อมูลไฟล์ใน zip ไม่ปะติดปะต่อกัน รูปแบบไฟล์ zip อย่างหนึ่งคือมีไดเร็กทอรีกลางซึ่งแสดงรายการไฟล์ในไฟล์เก็บถาวรและออฟเซ็ตกับข้อมูลไฟล์ หากคุณสร้างไฟล์หลายรายการที่ชี้ไปยังข้อมูลเดียวกันคุณจะได้อัตราส่วนการบีบอัดที่สูงขึ้นมากแม้ว่าจะไม่มีการซ้อนกันก็ตาม แต่ไฟล์ zip ดังกล่าวมักจะถูกปฏิเสธโดยโปรแกรมแยกวิเคราะห์


4

วิธีที่ดีในการสร้าง zipbomb (หรือ gzbomb) คือการทราบรูปแบบไบนารีที่คุณกำหนดเป้าหมาย มิฉะนั้นแม้ว่าคุณจะใช้ไฟล์สตรีมมิ่ง (ตัวอย่างเช่นการใช้ไฟล์/dev/zero ) คุณจะยังคงถูก จำกัด ด้วยพลังคอมพิวเตอร์ที่จำเป็นในการบีบอัดสตรีม

ตัวอย่างที่ดีของ gzip bomb: http://selenic.com/googolplex.gz57 (มีข้อความฝังอยู่ในไฟล์หลังจากการบีบอัดหลายระดับส่งผลให้ไฟล์ขนาดใหญ่)

ขอให้สนุกกับการค้นหาข้อความนั้น :)


2

บางทีใน unix คุณสามารถใส่เลขศูนย์จำนวนหนึ่งลงในโปรแกรม zip โดยตรงหรืออะไรก็ได้? ไม่รู้เกี่ยวกับยูนิกซ์มากพอที่จะอธิบายได้ว่าคุณจะทำอย่างไร นอกเหนือจากนั้นคุณจะต้องมีแหล่งที่มาของศูนย์และใส่เข้าไปในซิปที่อ่านจาก stdin หรือบางอย่าง ...


ลงคะแนนที่ไม่สนใจคำถามจริงซึ่งกล่าวถึงไฟล์เฉพาะที่ไม่ได้เป็นผลมาจากการบีบอัดข้อมูลขนาดใหญ่
Michael Borgwardt

ไม่คุณจะยังคงถูก จำกัด ด้วยพลังคอมพิวเตอร์ ตามหลักการแล้วคุณไม่ต้องการเรียกใช้ gzip / zip เนื่องจากจะใช้ CPU จำนวนมาก (หรืออย่างน้อย O (n) n เป็นขนาดของไฟล์ที่คลายการบีบอัด)
tonfa

@tonfa: แน่นอนว่าคุณจะถูก จำกัด ด้วยพลังคอมพิวเตอร์ เหตุผลของฉันคือคุณอาจไม่ต้องการสร้างไฟล์ขนาดใหญ่เอ็กซาไบต์บนดิสก์ของคุณแล้ว zip นั้น ...
Svish

2

อัลกอริธึมการบีบอัดไฟล์ทั้งหมดขึ้นอยู่กับเอนโทรปีของข้อมูลที่จะบีบอัด ในทางทฤษฎีคุณสามารถบีบอัดสตรีมที่เป็น 0 หรือ 1 และถ้ามันยาวพอมันจะบีบอัดได้ดีมาก

นั่นคือส่วนของทฤษฎี ส่วนการปฏิบัติได้ถูกชี้ให้เห็นแล้วโดยคนอื่น ๆ


2

อัลกอริธึมการบีบอัดล่าสุด (โพสต์ 1995) เช่น bz2, lzma (7-zip) และ rar ให้การบีบอัดไฟล์ที่น่าเบื่ออย่างน่าทึ่งและการบีบอัดชั้นเดียวก็เพียงพอที่จะรวมเนื้อหาขนาดใหญ่ให้มีขนาดที่สามารถจัดการได้

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


2

พยายามแล้ว ขนาดไฟล์ zip ที่ส่งออกเป็นไฟล์ขนาดเล็ก 84 KB

ขั้นตอนที่ฉันทำจนถึงตอนนี้:

  1. สร้างไฟล์. txt 1.4-GB ที่เต็มไปด้วย '0'
  2. บีบอัด
  3. เปลี่ยนชื่อ. zip เป็น. txt จากนั้นทำสำเนา 16 ชุด
  4. รวมทั้งหมดเป็นไฟล์. zip
  5. เปลี่ยนชื่อไฟล์. txt ที่เปลี่ยนชื่อภายในไฟล์. zip เป็น. zip อีกครั้ง
  6. ทำซ้ำขั้นตอนที่ 3 ถึง 5 แปดครั้ง
  7. สนุก :)

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


อย่างไรก็ตามอย่ากลัวว่ามันจะแยกไฟล์ zip ทั้งหมดที่อยู่ข้างในออกมาอย่างต่อเนื่อง มันแตกเฉพาะไฟล์ zip ที่ซ้อนอยู่ด้านล่างเท่านั้นไม่ใช่ไปจนถึงด้านล่างสุด
jaycroll

2

Silicon Valley Season 3 ตอนที่ 7 พาฉันมาที่นี่ ขั้นตอนในการสร้างระเบิดซิปคือ

  1. สร้างไฟล์ดัมมี่ที่มีเลขศูนย์ (หรือไฟล์ที่คุณคิดว่ามันมีขนาดเล็ก) (พูด 1 GB)
  2. บีบอัดไฟล์นี้เป็นไฟล์ zip พูด 1.zipบีบอัดไฟล์นี้ให้ซิปไฟล์พูด
  3. ทำnสำเนาของไฟล์นี้ (พูด 10) และเพิ่มไฟล์ 10 ไฟล์เหล่านี้ลงในไฟล์บีบอัด (พูด2.zip )
  4. ทำซ้ำขั้นตอนที่ 3 kหลายครั้ง
  5. คุณจะได้รับระเบิดซิป

สำหรับการดำเนินงานหลามตรวจสอบนี้


1

ฉันไม่รู้ว่า ZIP ใช้ Run Length Encoding หรือเปล่า แต่ถ้าเป็นเช่นนั้นไฟล์บีบอัดดังกล่าวจะมีข้อมูลขนาดเล็กและมีค่า run-length ที่ใหญ่มาก ค่าความยาวรันจะระบุจำนวนครั้งที่ข้อมูลขนาดเล็กถูกทำซ้ำ เมื่อคุณมีค่ามากข้อมูลผลลัพธ์จะมีขนาดใหญ่ตามสัดส่วน


2
ZIP ใช้การบีบอัด Lempel-Ziv-Welch (หรือเวอร์ชันแก้ไข) ซึ่งโทเค็นข้อมูลได้อย่างมีประสิทธิภาพ การรัน 'ชุด' ของไบต์เป็นเวลานานจะส่งผลให้เกิดการบีบอัดที่ดีดังนั้นทำไม GIF (ซึ่งใช้ LZW) จึงดีสำหรับกราฟิกและ JPEG (ซึ่งใช้การบีบอัดคลื่นไซน์ที่ซับซ้อน) จะดีกว่าสำหรับภาพถ่ายที่ข้อมูลมีมากกว่า 'แบบสุ่ม '
ลาซารัส
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.