Binary file — tarkibi matn muharriri o‘qishi uchun belgilar ketma-ketligi sifatida emas, ma’lum format qoidalariga ko‘ra baytlar tuzilmasi sifatida talqin qilinadigan fayldir. Executable, rasm, audio, arxiv va ko‘plab ma’lumot bazasi fayllari binary formatga misol bo‘ladi. Aslida barcha fayl baytlardan iborat; “binary” va “text” farqi ularni qanday izohlashga bog‘liq.
Format tuzilishi
Binary format header, metadata, indeks va payload qismlariga ega bo‘lishi mumkin. Headerdagi magic bytes fayl turini, version esa parser qaysi sxemani ishlatishini bildiradi. Length maydoni keyingi blok hajmini ko‘rsatadi, checksum esa tasodifiy buzilishni aniqlashi mumkin.
Extension faqat nomlash odati. .png deb nomlangan fayl haqiqatan PNG ekanini magic va strukturani parse qilish bilan tekshiriladi. Faqat foydalanuvchi bergan MIME type yoki extensionga ishonish upload xavfsizligida yetarli emas.
Bayt tartibi va alignment
Bir nechta baytdan iborat integer big-endian yoki little-endian tartibda yozilishi mumkin. 0x1234 big-endian holatda 12 34, little-endianda 34 12 bo‘ladi. Format tartibni aniq belgilaydi; host CPU tartibini bevosita diskka yozish portabilityni buzadi.
Structni xotiradagi ko‘rinishicha faylga dump qilish padding, alignment, pointer va compiler farqiga bog‘liq. Portable format har maydon uzunligi, sign, encoding va tartibini alohida serializatsiya qiladi.
Matn bilan farqi
Text fayl belgilarni UTF-8 kabi encodingda saqlaydi va newline qoidasi bo‘lishi mumkin. Binary mode ayrim platformalarda newline yoki end-of-file byte’ni o‘zgartirmasdan o‘qiydi. Shuning uchun rasmni text mode’da ko‘chirish byte corruption keltirishi mumkin.
Binary format odatda ixcham va tez parse qilinadi, lekin inson ko‘zi bilan review qilish qiyin. Text format diff va debugging uchun qulay, ammo hajmi kattaroq va grammar noaniqligi bo‘lishi mumkin. Tanlov performance, evolyutsiya, interoperability va auditga bog‘liq.
Xavfsiz parsing
Fayl ishonchsiz kirish deb qaraladi. Parser length overflow, truncated data, chuqur nesting, decompression bomb va noto‘g‘ri offsetni tekshiradi. Avval lengthni o‘qib, cheksiz xotira ajratish denial-of-servicega olib kelishi mumkin. Arithmetic checked type bilan bajariladi.
Unknown version yoki required feature aniq rad etiladi. Parser qisman muvaffaqiyatli natijani xavfsiz deb bermaydi. Fuzz testing tasodifiy va mutatsiyalangan fayllar bilan crash hamda memory safety xatolarini topishga yordam beradi.
Tahlil va taqqoslash
Hex editor baytlarni offset va ASCII ko‘rinishi bilan ko‘rsatadi. file kabi vosita signature orqali taxmin qiladi. Structured diff esa formatni parse qilib section yoki field darajasida farqni tushuntiradi; oddiy byte diff timestamp yoki metadata sabab katta farq ko‘rsatishi mumkin.
Executable binary uchun symbol, section, import va signature maxsus vosita bilan tekshiriladi. Noma’lum binaryni tahlil qilish uni ishga tushirishni talab qilmaydi; static inspection izolyatsiyalangan muhitda boshlanadi.
Format evolyutsiyasi
Binary format versioni yangi field va encodingni boshqaradi. Reader eski versionni qo‘llab, noma’lum optional blokni length orqali o‘tkazib yuborishi mumkin. Required semantika tushunilmasa fail-closed rad etish xavfsizroq. Eski field IDni yangi ma’no uchun qayta ishlatish compatibilityni buzadi.
Writer canonical representation hosil qilsa bir xil ma’lumot bir xil baytga aylanadi; bu hashing va digital signature uchun muhim. Floating-point NaN, map order va padding canonicalizatsiyada nozik muammo tug‘diradi. Format hujjati parser limitlari, maximum length va duplicate field semantikasini ham belgilaydi. Test corpus valid, truncated va malicious namunalarni qamrab oladi.
Bog‘liq tushunchalar
File format, Byte, Serialization, Endianness, Magic number, Hex editor, Binary executable