ความครอบคลุมการตรวจจับ
วัดผลจริง ไม่ใช่แค่กล่าวอ้าง
ตัวเลขทุกตัวด้านล่างได้จากการวัดจริง โดยฉีดความเสียหายจริงเข้าไปในไฟล์ตัวอย่างจริงแล้วนับสิ่งที่ตัวตรวจสอบจับได้ — 100 ครั้งต่อรูปแบบต่อโหมด ใช้ seed คงที่ และข้อมูลดิบรายครั้งอยู่ในรีโพซิทอรี เราเผยแพร่เลขศูนย์ด้วย: บางรูปแบบไม่มีกลไกความสมบูรณ์อยู่เลย และเราขอบอกคุณตรง ๆ ดีกว่าปล่อยให้เข้าใจผิด
- Sniper — พลิกบิตสุ่มเพียงบิตเดียวที่ตำแหน่งไบต์แบบสุ่ม — ความเสียหายที่จับได้ยากที่สุด
- Shotgun — เขียนทับไบต์สุ่มต่อเนื่อง 4,096 ไบต์ที่ตำแหน่งสุ่ม — จำลองเซกเตอร์ดิสก์ที่เสียหาย
อัตราการตรวจจับสูงขึ้นทุกรุ่นที่ออก: ตัวถอดรหัสเชิงลึกถูกเพิ่มทีละรูปแบบ และตารางนี้ถูกสร้างใหม่จากข้อมูลการวัดดิบทุกครั้ง
หมายเหตุกลไกแสดงเป็นภาษาอังกฤษ: เป็นคำอธิบายทางเทคนิคเชิงลึกที่คงไว้ตามต้นฉบับจากรายงานการวัด
ภาพและภาพถ่าย
| รูปแบบ | Sniper | Bolter | Shotgun | วัดผลแล้ว | จับได้อย่างไร (หรือทำไมจึงจับไม่ได้) |
|---|---|---|---|---|---|
| รูปภาพ PNGPNG | 100% | 100% | 100% | CRC32 per chunk | |
| รูปภาพ JPEG XLJXL | 87% | 97% | 100% | Container + frame checksums | |
| รูปภาพ WebPWebP | 83% | 82% | 84% | libwebp full decode | |
| macOS IconICNS | 97% | 97% | 100% | TLV chunk stream; near-total coverage | |
| แฟลช SWFSWF | 100% | 100% | 100% | CWS = zlib wrapper; any flip = zlib CRC fail | |
| กราฟิกแบบเวกเตอร์ SVGSVG | 45% | 98% | 99% | XML parse — almost any corruption breaks the XML grammar. | |
| ไอคอนวินโดวส์ICO | 63% | 54% | 70% | Directory entries + embedded PNG/BMP image validation. Multi-resolution ICO has high structural-byte density. | |
| รูปภาพคิวโอไอQOI | 0% | 0% | 0% | QOI spec has no per-opcode checksum — bit flips in pixel data decode to different-but-valid pixels. Only magic (4 B) and end marker (8 B) are checkable. Fundamental format limit. | |
| รูปภาพ JPEG2000JPEG2K | 6% | 5% | 97% | Codestream marker structure | |
| รูปภาพ GIFGIF | 9% | 35% | 100% | LZW decode (shotgun desyncs state); larger animated fixture lifts header-tamper detection | |
| รูปภาพ JPEGJPEG | 4% | 8% | 100% | jpegz wrapperDecode (062393f); most single-byte tamper lands in entropy-coded data, which JPEG tolerates by design | |
| ภาพ OpenEXR HDREXR | 1% | 0% | 100% | ZIP-compressed EXR — zlib decompress path runs on every scanline block. Shotgun detection perfect; sniper lower than the 26 KB NONE-compressed sample (6%) because structural bytes are a smaller fraction on the larger file. Both paths validated. | |
| อะโดบี โฟโต้ช็อปPSD | 2% | 2% | 50% | RLE-compressed PSD — `validatePsdDeep` decodes every scanline. The old RAW-compressed `sample.psd` (0%/7%) is retained; sweep picks the larger RLE one. Measures the strong path that the RAW sample couldn't exercise. | |
| รูปภาพ HEIC/HEIFHEIC | 0% | 0% | 4% | H.265 CABAC per tile; no content checksum, so many entropy-payload flips decode as different valid pixels. Structural, NAL, RBSP, and decoder-state violations are still detectable. | |
| รูปภาพ AVIFAVIF | 0% | 0% | 1% | AV1 OBUs with entropy-coded tile data; no image-content checksum, so many payload flips can remain syntactically valid. Container/OBU structure and decoder errors are still detectable. | |
| รูปภาพบีเอ็มพีBMP | 0% | 0% | 0% | BMP spec has no data checksums — `bmp_decoder.validateBmp` walks every pixel row proving accessibility but cannot detect bit-flips in pixel bytes. 0/400 at ±0.5% CI. Fundamental format limit. | |
| รูปภาพ DPXDPX | 0% | 0% | 0% | Raw pixel; SMPTE 268M spec has no checksum | |
| รูปภาพ Anymap แบบพกพาPAM/PPM | 0% | 0% | 0% | Raw pixel; Netpbm spec has no checksum | |
| รูปภาพ TGATGA | 25% | 27% | 100% | Header + image-spec validation catches malformed-byte tamper; tiny 11 KB fixture pushes structural-byte density up | |
| รูปภาพ TIFFTIFF | 63% | 93% | 100% | Every IFD plus every LZW-compressed strip/tile is decoded with tiffz's shared strict lzwz core. Required EOD plus exact decoded strip/tile extent reject truncation and excess output; valid-but-different LZW streams still have no pixel checksum. Deterministic 100-trial seed-42 sweep: 63% sniper, 93% bolter, 100% shotgun. | |
| ภาพสองระดับ JBIG2JBIG2 | 0% | n/a | n/a | Bi-level image stream walk; sniper 0% on truncated sample. Shotgun N/A (sample < 4 KB). |
RAW จากกล้อง
| รูปแบบ | Sniper | Bolter | Shotgun | วัดผลแล้ว | จับได้อย่างไร (หรือทำไมจึงจับไม่ได้) |
|---|---|---|---|---|---|
| Adobe DNG RAWDNG | 3% | 3% | 3% | TIFF-based via tiffz strip+tile decode loop + jpegz preview decode; 77 MB sensor dump dilutes detection density per byte | |
| แคนนอน RAWCR2 | 2% | 1% | 6% | TIFF-based; IFD-walked preview JPEG decoded via libjpeg-turbo (sRAW2 lossless strip filtered out so heuristic keeps the real preview) | |
| นิคอน RAWNEF | 0% | 0% | 0% | TIFF-based; deep via zigimg | |
| โซนี่ RAWARW | 0% | 4% | 15% | TIFF-based; deep via zigimg | |
| Fuji RAWRAF | 0% | 0% | 2% | Fuji; validator decodes the JPEG preview at 0x54/0x58, but preview is ~0.5% of a 208 MB sensor dump — shotgun almost never lands in it. ⚠ See Action Items. | |
| NRW | 0% | 1% | 0% | Nikon; dispatched through LibRaw which unpacks sensor data but the format has no per-row checksum. `libraw_unpack_thumb` is not currently wired up — adding it would catch corruption inside the embedded preview JPEG and could lift this to ~15-30% shotgun. Follow-up item. | |
| Olympus RAWORF | 0% | 0% | 0% | Olympus; validator WARNs on "uncompressed IFD claims but Huffman-compressed data". Structural-only. | |
| Pentax RAWPEF | 0% | 0% | 0% | Pentax; TIFF-wrapped. Structural-only. | |
| Panasonic RAWRW2 | 0% | 0% | 0% | Panasonic; TIFF-wrapped. Structural-only. | |
| Canon CR3 RAWCR3 (Canon) | 0% | 0% | 0% | ISOBMFF-based Canon RAW 3; structural box walk. 15 MB sample at 0%/0% confirms no integrity mechanism beyond structure. |
วิดีโอ
| รูปแบบ | Sniper | Bolter | Shotgun | วัดผลแล้ว | จับได้อย่างไร (หรือทำไมจึงจับไม่ได้) |
|---|---|---|---|---|---|
| วิดีโอของ MatroskaMKV | 100% | 100% | 100% | CRC32 per EBML cluster — **gold standard** | |
| วิดีโอ AV1AV1 | 5% | 6% | 100% | OBU structure + tile decode | |
| สตรีมการขนส่ง MPEGMPEG-TS | 4% | 5% | 100% | PAT/PMT CRC + continuity counters | |
| ไฟล์ MIDI มาตรฐานMIDI | 15% | 94% | 100% | Track framing + delta/event validation | |
| วิดีโอ Apple ProResProRes/MOV | 5% | 7% | 78% | ProRes intra-frame DCT decode per frame | |
| วิดีโอ MP4MP4 | 0% | 0% | 66% | H.264 CABAC + AAC decode (sample = `avc1` + AAC) | |
| วิดีโอ QuickTimeMOV | 1% | 1% | 75% | H.264 CABAC decode — new sample generated from public-domain jellyfish footage via ffmpeg. Old MPEG-4 Part 2 sample kept in `sample.mov` but sweep now picks the larger H.264 one. | |
| วิดีโอ WebMWebM (VP9+Opus) | 86% | 69% | 78% | libvpx 1.14.1 full VP9 decode per frame — every frame entropy + DCT decoded via `vpx_codec_decode`. Opus audio CRC provides additional coverage. | |
| วิดีโอ WebMWebM (VP8) | 88% | n/a | 90% | libvpx 1.14.1 full VP8 decode. **Critical:** uses `VP8D_GET_FRAME_CORRUPTED` control query after each frame — without it, VP8's built-in error concealment silently patches bit flips. Both sniper and shotgun lift by ~90 points because of this query. | |
| วิดีโอเอวีไอAVI | 0% | 20% | 93% | MJPEG per-frame decode via libjpeg-turbo — new sample generated via ffmpeg. Old MPEG-4 Part 2 sample kept in `generated_testsrc.avi` but sweep picks the larger MJPEG one. | |
| วีดิโอดีวีDV | 0% | 3% | 0% | DV spec has no checksum; relies on tape physical ECC | |
| กระแสข้อมูลเบื้องต้น MPEGMPEG-ES | 0% | 0% | 0% | Start codes only | |
| สตรีมโปรแกรม MPEGMPEG-1/2 | 0% | 0% | 0% | Start codes only | |
| MPEG-4 Part 2 | 0% | 0% | 0% | VOP header parsing tolerates VOP failures | |
| RealMediaRM | 0% | 1% | 2% | RealMedia spec has no checksums; structural chunk walk only | |
| แฟลชวิดีโอFLV | 40% | n/a | n/a | Flash Video tag walk; no per-tag CRC. Tiny 33 B sample — sniper hits magic + header bytes. Shotgun N/A (sample < 4 KB). | |
| สตรีมโปรแกรม MPEGMPEG-PS | 0% | n/a | n/a | MPEG Program Stream; PES header walk; no CRC. Shotgun N/A (sample < 4 KB). | |
| วิดีโอ Ogg (ธีโอรา)Theora (.ogv) | 100% | n/a | 100% | Theora-in-Ogg; libtheora-encoded testsrc (CC0). Ogg page CRC32 catches every probed bit flip in both modes. | |
| คอนเทนเนอร์วิดีโอ IVFVP8 (raw IVF) | 0% | 0% | 0% | IVF container with VP8 frames; structural-only without libvpx wired into the IVF dispatch path. Hand-authored CC0 sample. Detection is fundamentally low until VP8-in-IVF gets the same `VP8D_GET_FRAME_CORRUPTED` query as VP8-in-WebM. |
เสียง
| รูปแบบ | Sniper | Bolter | Shotgun | วัดผลแล้ว | จับได้อย่างไร (หรือทำไมจึงจับไม่ได้) |
|---|---|---|---|---|---|
| ระบบเสียง Dolby Digital AC-3AC3 | 100% | 100% | 100% | CRC-16 per syncframe. Previous sample `TomorrowNeverDies-...ac3` was malformed (started with bytes 0x84 4F 59 11, not AC3 sync 0B 77) — validator correctly rejected it, so the old 100%/100% number was a false positive from trial inheritance. Removed 2026-04-23; now measured against a genuinely valid sample. | |
| อ็อก ออดิโอOGG | 100% | 100% | 100% | CRC32 per OGG page | |
| ระบบเสียงดอลบี้ดิจิตอลพลัสE-AC3 (large) | 100% | n/a | 100% | CRC-16 per syncframe (full file, after 2026-03-06 fix) | |
| ระบบเสียงดอลบี้ดิจิตอลพลัสE-AC3 (small) | 81% | 100% | 85% | ⚠ Lower coverage on smaller file — reflects frame-size / coverage density, not a bug | |
| เสียง FLACFLAC | 80% | 96% | 88% | MD5 audio hash + CRC-8/CRC-16 per frame | |
| เสียง Apple LosslessALAC | 1% | 0% | 100% | Lossless decode — 4KB overwrite kills a frame | |
| Opus | 1% | 62% | 35% | OGG page CRC + libopus decode | |
| เสียง M4AAAC (M4A) | 4% | 3% | 31% | MP4 box + AAC syntax decode | |
| เสียง AAC-LC (ADTS)AAC (ADTS) | 6% | 10% | 20% | ADTS framing + syntax | |
| เสียง MP3MP3 | 1% | 0% | 1% | Frame sync only — MP3 spec has no data CRC | |
| เสียง WAVWAV | 0% | 0% | 2% | RIFF structural; no data checksum | |
| เสียง AIFFAIFF | 0% | 0% | 1% | IFF structural; no data checksum | |
| ซีเอเอฟ ออดิโอCAF | 0% | 0% | 1% | Chunk walk; no data checksum | |
| เสียงออสเตรเลีย/SNDAU | 0% | 0% | 0% | Header + raw PCM | |
| โมดูล ProTrackerTracker (MOD) | 0% | 0% | 0% | No integrity mechanism in format | |
| เครื่องเสียง AMRAMR | 14% | n/a | n/a | Adaptive Multi-Rate audio; frame-table based, no per-frame CRC. Sniper at 14% reflects sync-byte coverage on a 38 B sample. Shotgun N/A. | |
| เสียงของลิงAPE (Monkey's Audio) | 99% | 100% | 100% | MAC header + descriptor + per-frame CRC32. Full deep-decode validation now wired via vendored upstream Monkey's Audio SDK 12.73 (`deps/libape/`, BSD-3 since 2023). The validator runs structural rigor first (descriptor, header, seek-table monotonicity, audio-region bounds, field sanity, version range) then decodes every frame and surfaces per-frame CRC32-over-decoded-PCM mismatches via the C-shim `validate_ape_decode_check`. Truncation is caught either by the structural seek-table walk (modern v3980+ has audio_data_length) or by the decoder's sample-count-mismatch path. Synthetic 16 KB corpus is now a real APE encoded by the SDK from white-noise WAV (\`mac -c2000\`), so it actually decodes; sniper hits 99% (only the descriptor MD5 bytes — which are byte-level metadata not bitstream — escape detection in some random flips), shotgun hits 100%. Tested with the in-tree Zig tests + tests/cli/ape_validation (11 PASS). | |
| CD+Graphics KaraokeCD+G (Karaoke) | 0% | 0% | 2% | 24-byte fixed-size sectors; structural only — no checksum. 0%/2% confirms fundamental format limit. | |
| เสียง DSDIFFDFF (DSDIFF) | 52% | n/a | n/a | DSD audio container; chunk walk only. Tiny 32 B header-only sample. Shotgun N/A. | |
| ไฟล์สตรีม DSDDSF (DSD) | 60% | n/a | n/a | Sony DSD; structural walk. Shotgun N/A. | |
| DTS Digital Surround AudioDTS (Digital Surround) | 0% | 0% | 51% | Frame sync + size walk; no per-frame CRC. Shotgun lift from 4 KB overwrite desyncing the frame stream. | |
| ทรูออดิโอ (TTA)TTA (True Audio) | 97% | n/a | n/a | Per-frame CRC32 catches almost every probed bit flip. Shotgun N/A (sample < 4 KB). | |
| WavPack เสียงWavPack | 100% | 100% | 100% | libwavpack 5.9.0 deep decode: every block decoded to PCM, per-block CRC over decoded samples + checksum sub-block + sample-count drift. Block-checksum sub-block (`ID_BLOCK_CHECKSUM`) catches header/bitstream tampering at open-time; post-decode CRC catches arithmetic drift; truncation surfaces as decoded < expected sample count. |
เอกสารและสำนักงาน
| รูปแบบ | Sniper | Bolter | Shotgun | วัดผลแล้ว | จับได้อย่างไร (หรือทำไมจึงจับไม่ได้) |
|---|---|---|---|---|---|
| สเปรดชีต Excel (97-2003)XLS | 22% | 24% | 96% | BIFF8 records + SST + formulas + cells | |
| เอกสารเวิร์ด (97-2003)DOC (large) | 2% | 2% | 2% | FIB + 31 fc/lcb pair bounds + CLX piece table. Detection density drops on large docs — body text is most of the file. | |
| เอกสารเวิร์ด (97-2003)DOC (small) | n/a | n/a | 52% | Same validator, smaller file — shotgun has ~21% chance of hitting FIB/Table/CLX. | |
| เอกสาร PDFPDF | n/a | n/a | n/a | †Headline numbers are misleading for PDF: detection rate is dominated by which compression filters the document uses for its embedded streams (Flate, DCT/JPEG, JPX/JPEG2000, JBIG2, CCITT), not by the validator. See "PDF detection by stream-filter dominance" subsection below for the breakout table. The exit-code bug from 2026-03-06 was fixed in commit `c304f36` (2026-04-23, Action Item #1). | |
| พาวเวอร์พอยต์ (97-2003)OLE2 (PPT) | 0% | 0% | 0% | FAT/directory structural only | |
| เอกสาร Adobe InDesignInDesign | 1% | 0% | 73% | Page structure. | |
| เอกสารเวิร์ด (OOXML)DOCX | 87% | 82% | 100% | OOXML = ZIP with per-entry CRC32. Sample replaced 2026-04-23 from Apache 2.0 Tika test corpus. | |
| สเปรดชีต Excel (OOXML)XLSX | 82% | 83% | 100% | OOXML = ZIP with per-entry CRC32. Sample from Apache Tika. | |
| พาวเวอร์พอยต์ (OOXML)PPTX | 93% | 97% | 100% | OOXML = ZIP with per-entry CRC32. Sample from Apache Tika. | |
| ข้อความ OpenDocumentODT | 96% | 98% | 100% | ODF = ZIP with per-entry CRC32. Sample from Apache Tika. Note: currently auto-detected as EPUB (also ZIP) — separate detection-priority bug. | |
| สเปรดชีต OpenDocumentODS | 88% | 88% | 100% | Same as ODT. | |
| การนำเสนอเอกสาร OpenDocumentODP | 97% | 98% | 100% | Same as ODT. | |
| รูปแบบข้อความที่หลากหลายRTF | 0% | 0% | 92% | Structural only — RTF has no checksums. Shotgun high because 4 KB overwrite reliably breaks brace matching or control-word syntax. | |
| ข้อความอีเมล EMLEML | 12% | 97% | 84% | UTF-8 + NUL-byte integrity check on the raw file before structural parsing. NUL is never legal in a mail message; flipping the high bit of an ASCII byte produces a lone UTF-8 continuation byte. Caught ~50% of single-bit ASCII flips and ~80% of 4 KB shotgun overwrites. | |
| แฟ้มจดหมาย MBOXMBOX | 13% | 100% | 100% | Same UTF-8 + NUL-byte check as EML, applied to the whole concatenated file. Shotgun catches every 4 KB random overwrite (random bytes almost always include NUL or invalid UTF-8 sequences). Sniper catches roughly half the random bit flips. | |
| แอปเปิลเพจPages | 100% | 99% | 100% | iWork bundle = ZIP with per-entry CRC32. Hand-authored from scratch (no Apple software, no permissive corpus exists); `scripts/build-pages-sample` regenerates a deterministic 8-IWA inner `Index.zip` with high-entropy openssl-AES-CTR payloads plus real plist metadata. CRC32 per entry catches every bit flip and every 4 KB shotgun overwrite. | |
| Apple KeynoteKeynote | 99% | 100% | 100% | iWork bundle = ZIP with per-entry CRC32. Hand-authored mirroring the Pages sample; `scripts/build-keynote-sample` regenerates a 9-IWA inner `Index.zip` plus an uncompressed `buildVersionHistory.plist` carrying `com.apple.iWork.Keynote` so the format detector keys on it. CRC32 per entry catches every 4 KB shotgun overwrite and ~99% of single-bit flips. | |
| Apple NumbersNumbers | 100% | 99% | 100% | Same iWork-bundle template as Keynote with a Tables/-shaped IWA layout. The `com.apple.iWork.Numbers` marker is stored uncompressed at the head of the outer ZIP. CRC32 per entry catches every probed bit flip and every 4 KB shotgun overwrite. | |
| อะโดบี อิลลัสเตรเตอร์AI (Adobe Illustrator) | 6% | n/a | n/a | PostScript-derived header + PDF body. Tiny 372 B sample is mostly PDF magic; later bytes are uncovered text. Shotgun N/A. | |
| BAI2 Balance ReportBAI2 (Bank Admin Inst.) | 20% | n/a | n/a | Fixed-format banking text; structural validation of record-type prefixes. No checksum. Shotgun N/A. | |
| ข้อมูล CSVCSV | 26% | 100% | 100% | Structural CSV + mandatory UTF-8 validation. bolter/shotgun reliably produce invalid UTF-8 -> 100%; sniper 26% = flips landing in a multibyte sequence. (Was 0/0/0 before 2026-06-22: CSV was omitted from the extension-remap dispatch and silently skipped its UTF-8 check; fixed and guarded by tests/cli/utf8_required_formats_reject.) | |
| ClarisWorks/AppleWorksClarisWorks | 6% | n/a | n/a | Legacy AppleWorks. Structural walk. Shotgun N/A. | |
| UN/EDIFACTEDIFACT | 37% | n/a | n/a | Fixed-format trade messages; validator cross-checks UNH/UNT counts. Shotgun N/A. | |
| PostScript แบบห่อหุ้มEPS | 4% | n/a | n/a | PostScript header + structural walk. Shotgun N/A. | |
| EPUB อีบุ๊คEPUB | 69% | n/a | n/a | ZIP container with mimetype check; per-entry CRC32. Shotgun N/A. | |
| เอกสาร HTMLHTML | 22% | 100% | 100% | Tag-tree parse + UTF-8 validation gated on a declared charset (<meta charset=utf-8>). bolter/shotgun -> 100%; sniper 22% on the >=12 KB fixture. | |
| iCalendariCalendar (RFC 5545) | 21% | n/a | n/a | Structural; BEGIN/END pairing + property syntax. Shotgun N/A. | |
| มาร์กอัป Adobe InDesignIDML (InDesign) | 55% | n/a | n/a | ZIP+XML markup; per-entry CRC32. Shotgun N/A. | |
| การกำหนดค่า INIINI | 17% | n/a | n/a | Plain-text key-value; structural only. Shotgun N/A. | |
| ข้อมูล JSONJSON | 43% | 100% | 100% | RFC 8259 mandates UTF-8: the validator rejects invalid UTF-8, then parses structure. On the >=12 KB multibyte fixture, bolter/shotgun almost always corrupt a UTF-8 sequence -> 100%; sniper 43% is the share of single-bit flips that land in a multibyte byte or a JSON token. | |
| JSON5 | 30% | n/a | n/a | JSON5 parser; structural only. Shotgun N/A. | |
| SWIFT MT940 Bank StatementMT940 (SWIFT) | 11% | n/a | n/a | Banking text; structural only. Shotgun N/A. | |
| เอกสารแมคไรท์MacWrite Document | 0% | n/a | n/a | Legacy word processor; structural only. Tiny sample. Shotgun N/A. | |
| NACHA/ACH Electronic PaymentsNACHA (ACH) | 15% | n/a | n/a | Banking fixed-format text; record-type validation. Shotgun N/A. | |
| Open Financial ExchangeOFX (Open Financial) | 2% | n/a | n/a | Banking SGML/XML; structural only. Shotgun N/A. | |
| ข้อความธรรมดา (UTF-8)Plain Text | 0% | 0% | 95% | UTF-8 + control-char check. Invalid UTF-8 that is still Latin-1-decodable falls back to single-byte decode with a WARN (exit 0, so counted as not-detected) -> sniper/bolter ~0%; shotgun 95% because a random 4 KB overwrite injects NUL or undecodable bytes that hard-fail. | |
| เซสชั่นเครื่องมือ ProPTX (Pro Tools) | 0% | 0% | 0% | Avid session structural walk. 0%/0% on 40 KB confirms structural-only. | |
| Quicken Interchange FormatQIF (Quicken Interchange) | 3% | n/a | n/a | Plain-text; structural only. Shotgun N/A. | |
| การกำหนดค่า TOMLTOML | 42% | 100% | 100% | TOML structural parse + mandatory UTF-8. bolter/shotgun -> 100% (invalid UTF-8); sniper 42% on the >=12 KB multibyte fixture. | |
| Tax Exchange FormatTXF (Tax Exchange) | 3% | n/a | n/a | Plain-text; structural only. Shotgun N/A. | |
| vCardvCard (RFC 6350) | 32% | n/a | n/a | Structural BEGIN/END pairing + property syntax. Shotgun N/A. | |
| เอกสารเวิร์ดเพอร์เฟคWordPerfect | 2% | n/a | n/a | Header walk; structural only. Shotgun N/A. | |
| X12 EDI | 21% | n/a | n/a | Fixed-format trade messages; ISA/IEA + GS/GE counts cross-validated. Shotgun N/A. | |
| เอกสารเอ็กซ์เอ็มแอลXML | 52% | 100% | 100% | XML well-formedness + mandatory UTF-8. bolter/shotgun -> 100%; sniper 52% from tag/quote/multibyte density on the >=12 KB fixture. | |
| ข้อมูล YAMLYAML | 0% | n/a | n/a | Plain-text; structural only. Shotgun N/A. | |
| ข้อความมาร์กดาวน์Markdown | 0% | n/a | n/a | Plain-text; structural only. Shotgun N/A. |
ฟอนต์
| รูปแบบ | Sniper | Bolter | Shotgun | วัดผลแล้ว | จับได้อย่างไร (หรือทำไมจึงจับไม่ได้) |
|---|---|---|---|---|---|
| ฟอนต์ TrueTypeTTF | 100% | 100% | 100% | Per-table checksum + whole-file checkSumAdjustment (strict mode) | |
| แบบอักษร OpenTypeOTF | 100% | 100% | 100% | Per-table checksum + whole-file checkSumAdjustment | |
| ฟอนต์ WOFFWOFF | 100% | 100% | 100% | Per-table zlib-decompress + origChecksum verification (font_validator.zig:370). Prior "0%/0%" was a stale sweep — the code was already doing the right thing. | |
| ฟอนต์ WOFF2WOFF2 | 49% | 63% | 100% | Per-table Brotli-decompress + origChecksum verification. Prior "0%/0%" was a stale sweep. Sniper is lower than WOFF because WOFF2's Brotli framing is more compact (fewer structural bytes), but shotgun still perfect. |
วิทยาศาสตร์
| รูปแบบ | Sniper | Bolter | Shotgun | วัดผลแล้ว | จับได้อย่างไร (หรือทำไมจึงจับไม่ได้) |
|---|---|---|---|---|---|
| เหมาะกับข้อมูลทางดาราศาสตร์FITS (with CHECKSUM) | 100% | n/a | 100% | CHECKSUM/DATASUM per HDU | |
| เหมาะกับข้อมูลทางดาราศาสตร์FITS (no CHECKSUM) | 0% | 0% | 2% | Keyword validation only | |
| ภาพทางการแพทย์ DICOMDICOM | 7% | 9% | 20% | Tag structure + value validation | |
| ข้อมูลทางวิทยาศาสตร์ HDF5HDF5 | 4% | 72% | 13% | Jenkins lookup3 checksum (small file) | |
| โครงสร้างโปรตีน PDBPDB (Protein) | 16% | 19% | 39% | ATOM/HETATM record cross-validation | |
| ข้อมูลผลึกศาสตร์ CIFCIF (Crystallographic Info) | 0% | n/a | n/a | Plain-text scientific format; structural only. Shotgun N/A. | |
| ลำดับฟาสต้าFASTA | 22% | n/a | n/a | Plain-text bioinformatics; structural only. Shotgun N/A. | |
| การอ่านลำดับ FASTQFASTQ | 28% | n/a | n/a | Plain-text bioinformatics; per-record sequence/quality length cross-check. Shotgun N/A. | |
| ข้อมูล MATLABMAT-File | 94% | n/a | n/a | Element header + flag walk; magic + endian + tag length validation. Shotgun N/A. | |
| ข้อมูลทางวิทยาศาสตร์ของ NetCDFNetCDF | 39% | n/a | n/a | NetCDF classic header walk; HDF5-derived NetCDF-4 reuses HDF5's lookup3 checksums. Tiny sample. Shotgun N/A. | |
| NIfTI การสร้างภาพประสาทNIfTI-1 | 1% | n/a | n/a | Header magic + dims; no checksum. Shotgun N/A. | |
| ข้อมูลปาร์เก้ ApacheParquet | 2% | n/a | n/a | Footer + page CRC32 (not currently verified by validator beyond header). Shotgun N/A. | |
| ESRI เชปไฟล์Shapefile | 89% | n/a | n/a | GIS .shp; record-by-record header check + magic. Shotgun N/A. |
ฐานข้อมูล
| รูปแบบ | Sniper | Bolter | Shotgun | วัดผลแล้ว | จับได้อย่างไร (หรือทำไมจึงจับไม่ได้) |
|---|---|---|---|---|---|
| QuickBooks Company FileQBW | 100% | 100% | 100% | CRC32 per 4096-byte page (v12+) | |
| ฐานข้อมูล SQLiteSQLite | 54% | 52% | 100% | Page headers + btree structure | |
| ฐานข้อมูลไมโครซอฟต์แอคเซสACCDB | 1% | 0% | 73% | Jet engine page structure (small file) | |
| ฐานข้อมูล Microsoft Access (97-2003)MDB | 1% | 0% | 73% | Jet engine page structure (small file) | |
| QuickBooks BackupQuickBooks Backup (.qbb) | 8% | 7% | 24% | OLE2-based; dispatches through document_validators (no per-stream checksum). Sample shared with ole2/sample.doc. | |
| ฐานข้อมูล dBASEdBASE (.dbf) | 0% | 0% | 100% | Header version + date + record-length cross-validation; hand-authored CC0 dBASE III. Sniper rate fundamental (no per-record checksum); shotgun lands in tail records past header-declared range. |
อาร์ไคฟ์
| รูปแบบ | Sniper | Bolter | Shotgun | วัดผลแล้ว | จับได้อย่างไร (หรือทำไมจึงจับไม่ได้) |
|---|---|---|---|---|---|
| Compact Pro ArchiveCPT | 100% | 100% | 100% | CRC per resource fork entry (Compact Pro archive, not audio) | |
| คลังข้อมูลทาร์TAR | 15% | 78% | 73% | Header checksum per 512-byte block | |
| ไฟล์เก็บถาวร 7-Zip7z | 99% | n/a | 100% | 7z next-header CRC32 + per-stream CRC32. Hand-authored xorshift corpus (CC0). Both sniper and shotgun catch nearly every flip. | |
| ไฟล์เก็บถาวร Unix arAR (Unix archive) | 38% | n/a | n/a | `!<arch>\n` magic + 60-byte member headers; no per-entry checksum. Shotgun N/A. | |
| BLIP ArchiveBLAR (Blake3 Archive) | 100% | n/a | n/a | Peter's archive format with Blake3 per-entry hashing. Every probed bit flip detected. Shotgun N/A. | |
| Brotli CompressedBrotli | 47% | 72% | 100% | Raw Brotli stream; full streaming decompression via libbrotli. RFC 7932 has no whole-file checksum, but the entropy coder rejects most structurally invalid prefix codes / distance overflows / window-bits errors. ~47% of single-bit flips on dense English-text Huffman streams cascade into decoder failure; the rest decode to wrong-but-valid bytes (silent). 4 KB shotgun overwrites are essentially always rejected. Earlier 0%/0% row used a pathological xorshift random-noise corpus where compressed output is ~8 bits/byte and bit flips are statistically valid Huffman codes; replaced with a deterministic CC0 English-text corpus (scripts/build-brotli-corpus). | |
| Bzip2 ถูกบีบอัดBzip2 | 100% | 100% | 100% | CRC32 per block + combined CRC. Hand-authored xorshift corpus (CC0). | |
| Microsoft Cabinet ArchiveCAB (Microsoft) | 100% | 100% | 100% | Per-folder + per-file CSUM (Adler-like) cross-validated. CC0 sample built via gcab. | |
| Gzip ถูกบีบอัดGzip | 100% | 100% | 100% | CRC32 + ISIZE in trailer. Hand-authored xorshift corpus (CC0). | |
| BinHex 4.0 ArchiveBinHex (.hqx) | 100% | 100% | 100% | BinHex 4.0 header + per-fork CRC16. Hand-authored CC0 sample (encoder reverse-engineered from validator). | |
| BLIP Mini-ArchiveMBLAR (Multi-Blake3) | 100% | n/a | n/a | Peter's manifest-bundle archive; Blake3 per file. Shotgun N/A. | |
| เอกสาร Parity PAR2PAR2 | 100% | 100% | 100% | MD5 of every packet + recovery slice integrity. Built via par2cmdline (BSD-licensed). | |
| RAR ArchiveRAR | 100% | 100% | 100% | Per-entry CRC32 + RAR5 BLAKE2sp option. CC0 corpus (rar -m5). | |
| StuffIt ArchiveStuffIt | 94% | n/a | n/a | Header + entry walk; sniper 94% on 140 B from header dominance. Shotgun N/A. | |
| XZ บีบอัดXZ | 100% | 100% | 100% | CRC32/CRC64/SHA-256 per stream + index integrity. Hand-authored xorshift corpus (CC0). | |
| แฟ้ม ZIPZIP | 100% | 100% | 100% | Per-entry CRC32 + EOCD record. Hand-authored xorshift corpus (CC0). | |
| บีบอัดมาตรฐานZstd | 100% | 100% | 100% | Frame-level XXH64 + frame footer. Hand-authored xorshift corpus (CC0). | |
| โครงการสตูดิโอวันStudio One Project (.song) | 100% | 99% | 100% | ZIP-based; per-entry CRC32 + metainfo.xml integrity. Hand-authored CC0 sample. | |
| StuffIt X ArchiveStuffIt X (.sitx) | 0% | 0% | 0% | Magic + structural header walk only; no per-entry checksums in current validator. Hand-authored. |
ROM เกม
| รูปแบบ | Sniper | Bolter | Shotgun | วัดผลแล้ว | จับได้อย่างไร (หรือทำไมจึงจับไม่ได้) |
|---|---|---|---|---|---|
| เอสเนส รอมSNES | 100% | 100% | 99% | Internal ROM checksum + complement | |
| รอมเกมบอยGB | 0% | 100% | 1% | Header checksum only (tiny coverage) | |
| ROM เกมบอยแอดวานซ์GBA | 0% | 0% | 0% | Header checksum only | |
| ROM ของเซก้าเจเนซิสGenesis | 0% | 100% | 1% | Header checksum only | |
| เนสรอมNES | 0% | 0% | 0% | iNES header only | |
| รอมนินเทนโด 64N64 | 0% | 10% | 0% | No integrity mechanism | |
| รูปภาพ MAME CHDCHD (MAME) | 10% | n/a | n/a | MAME's compressed disc; SHA-1 per hunk + global SHA-1. Tiny synthetic 124 B sample. Shotgun N/A. | |
| นินเทนโดดีเอสรอมNDS (Nintendo DS) | 41% | n/a | n/a | Header CRC16 (logo + secure area). 41% sniper on 1 KB. Shotgun N/A. | |
| คลังเอกสาร DOOM WADWAD (Doom/Wii) | 100% | n/a | n/a | Lump table; structural only. Tiny synthetic sample — header IS most of file. Shotgun N/A. |
อิมเมจดิสก์ / ระบบไฟล์ / ไฟล์โปรแกรม / อื่น ๆ
| รูปแบบ | Sniper | Bolter | Shotgun | วัดผลแล้ว | จับได้อย่างไร (หรือทำไมจึงจับไม่ได้) |
|---|---|---|---|---|---|
| อิมเมจดิสก์ของ AppleDMG | 0% | 0% | 10% | Plist + koly trailer | |
| ดิสก์อิมเมจ ISO 9660ISO | 0% | 0% | 0% | PVD structural only | |
| ไฟล์วัตถุ COFFCOFF | 0% | 0% | 1% | Section header structure | |
| Mach-O ไบนารีสากลMach-O Fat | 0% | 0% | 0% | Architecture header only | |
| นิยายเชิงโต้ตอบของ BlorbBlorb | 0% | 0% | 0% | IFF structural only | |
| macOS DS_StoreDS_Store | 0% | 0% | 25% | BTree page structure | |
| เอเอสเอฟ มีเดียASF | 1% | 4% | 0% | GUID/object structural | |
| Quicken Data FileQDF | 1% | 1% | 0% | OLE2/ZIP structural | |
| 3MF การผลิต 3 มิติ3MF (3D Manufacturing) | 75% | n/a | n/a | ZIP-based; per-entry CRC32 + XML manifest. Shotgun N/A (sample < 4 KB). | |
| โครงการ Adobe After EffectsAEP (After Effects Project) | 27% | n/a | n/a | RIFX container; structural-only walk. Tiny sample (44 B). Shotgun N/A. | |
| เอเบิลตัน ไลฟ์ เซ็ตALS (Ableton Live Set) | 90% | n/a | n/a | gzip-wrapped XML. Tiny sample — gzip CRC32 + zlib structure catches most bit flips. Shotgun N/A. | |
| Apple Media Library DatabaseApple Media DB | 46% | n/a | n/a | tvdb/photo SQLite-derived store. Structural walk. Shotgun N/A. | |
| โครงการการาจแบนด์GarageBand (.band) | 0% | n/a | n/a | Bundle (directory) format — `projectData` inside is a plist routed to plist validator. Sweep-only on the plist file. Shotgun N/A. | |
| Erlang/Elixir BEAM BytecodeBEAM (Erlang) | 36% | n/a | n/a | FOR1/IFF chunk container; chunk lengths cross-validated. No CRC. Shotgun N/A. | |
| โปรเจ็กต์ Blender 3DBlender (.blend) | 47% | n/a | n/a | DNA-block-based binary. Structural walk; no checksum. Tiny header-only sample. Shotgun N/A. | |
| ไฟล์แผนที่ BSPBSP (Quake) | 39% | n/a | n/a | Lump-table walk; no CRC. Structural only. Shotgun N/A. | |
| โครงการ Bitwig สตูดิโอBitwig Project | 0% | n/a | n/a | ZIP-derived but tiny sample (128 B). Sniper 0% — sample is below ZIP minimum. Shotgun N/A. | |
| PAK ทรัพยากรโครเมียมChromium PAK | 0% | n/a | n/a | Resource bundle; index walk only. Tiny synthetic sample. Shotgun N/A. | |
| โครงการคิวเบสCubase Project | 49% | n/a | n/a | Steinberg binary. Structural only. Shotgun N/A. | |
| DER Certificate/KeyDER (ASN.1) | 7% | n/a | n/a | TLV-walked. Structural; no checksum. Shotgun N/A. | |
| โครงการ DaVinci ResolveDRP (DR Painter) | 60% | n/a | n/a | Generic binary — high sniper from header dominance. Shotgun N/A. | |
| การเขียนแบบ AutoCADDWG (AutoCAD) | 1% | n/a | n/a | Section structure walk. Tiny sample. Shotgun N/A. | |
| AutoCAD DXFDXF (AutoCAD) | 5% | n/a | n/a | Plain-text CAD; structural only. Shotgun N/A. | |
| เทมเพลต EEx/ERBErlang Mix .eex | 0% | n/a | n/a | Plain-text template; structural only. Shotgun N/A. | |
| เอลฟ์ปฏิบัติการได้ELF | 20% | n/a | n/a | Section header walk; no whole-file checksum. Tiny synthetic 64 B sample. Shotgun N/A. | |
| ระยะเออร์แลงErlang BERT | 0% | n/a | n/a | External Term Format walk. Shotgun N/A. | |
| Final Cut Pro XMLFCPXML (Final Cut) | 58% | n/a | n/a | XML-based; structural walk. Shotgun N/A. | |
| โครงการฟลอริด้า สตูดิโอFL Studio | 6% | n/a | n/a | Project file structural walk. Tiny sample. Shotgun N/A. | |
| GLB ไบนารี glTFGLB (glTF binary) | 32% | n/a | n/a | Chunk-based; structural walk. JSON chunk + BIN chunk lengths cross-validated. Shotgun N/A. | |
| ฉาก glTF 3DglTF (JSON) | 20% | n/a | n/a | JSON manifest; structural only. Shotgun N/A. | |
| ไอเอฟเอฟคอนเทนเนอร์IFF (EA) | 46% | n/a | n/a | Chunk walk; no CRC. Shotgun N/A. | |
| Java Class FileJava .class | 21% | n/a | n/a | ClassFile constant pool walk; magic + version check. Shotgun N/A. | |
| ข้อมูลทางภูมิศาสตร์ของ KMLKML | 58% | n/a | n/a | GIS XML; structural only. Shotgun N/A. | |
| KMZ บีบอัด KMLKMZ | 95% | n/a | n/a | KMZ = zipped KML; per-entry CRC32 catches almost any bit flip on the small sample. Shotgun N/A. | |
| โปรเจ็กต์ลอจิก Pro XLogic Pro X | 71% | n/a | n/a | Bundle format — sample is `ProjectData` plist alone. Shotgun N/A. | |
| ลาเรียน สตูดิโอ พีเอเคLSPK (Larian Studios) | 3% | n/a | n/a | Pak file; structural only. Shotgun N/A. | |
| มัค-O ไบนารีMach-O | 0% | n/a | n/a | Single-arch sample; load command walk; no checksum. Shotgun N/A. | |
| โมเดล Wavefront OBJ 3DOBJ (Wavefront) | 44% | n/a | n/a | Plain-text 3D; vertex/face syntax check. Shotgun N/A. | |
| Quake PAK เอกสารสำคัญPAK (Quake) | 60% | n/a | n/a | Header offset/length cross-check. Tiny synthetic sample (12 B). Shotgun N/A. | |
| Windows PE ปฏิบัติการได้PE (Windows) | 3% | n/a | n/a | MZ + PE headers; optional checksum (rarely populated). Tiny sample. Shotgun N/A. | |
| PEM Certificate/KeyPEM (RFC 7468) | 51% | n/a | n/a | Base64 envelope; structural only. Shotgun N/A. | |
| PGP Signed Message | 81% | n/a | n/a | Header/footer detect + Base64 walk. Shotgun N/A. | |
| รายการทรัพย์สินของ ApplePlist | 52% | n/a | n/a | Both XML and binary plist; structural only. Shotgun N/A. | |
| ไฟล์ PLY รูปหลายเหลี่ยมPLY (3D) | 51% | n/a | n/a | Header + element count; no per-element checksum. Shotgun N/A. | |
| โครงการอะโดบีพรีเมียร์โปรPremiere Project | 55% | n/a | n/a | Gzip-wrapped XML. Tiny sample. Shotgun N/A. | |
| โครงการเหตุผลReason (Propellerhead) | 33% | n/a | n/a | Bundle binary; structural walk. Shotgun N/A. | |
| โครงการเกี่ยวข้าวRPP (Reaper) | 50% | n/a | n/a | Plain-text project; structural only. Shotgun N/A. | |
| ไฟล์การออกแบบร่างSketch (.sketch) | 56% | n/a | n/a | ZIP-based; per-entry CRC32. Shotgun N/A. | |
| SSH Signature | 64% | n/a | n/a | RFC 4880-like wire-format walk. Shotgun N/A. | |
| ขั้นตอน CAD โมเดลSTEP (.step) | 23% | n/a | n/a | ISO 10303-21 plain-text CAD. Shotgun N/A. | |
| โมเดล STL 3DSTL (3D) | 73% | n/a | n/a | Both ASCII and binary stl; sniper 73% on small ASCII sample. Shotgun N/A. | |
| Roxio Toast Disc ImageToast (Roxio) | 0% | 0% | 10% | Apple Toast disc image; structural walk. | |
| แบบอักษรประเภทที่ 1Type 1 Font | 0% | n/a | n/a | PostScript-derived font; eexec encrypted body walk. Shotgun N/A. | |
| VMware Virtual DiskVMDK | 0% | 0% | 0% | VMware disk descriptor + extent walk. 65 KB sample at 0%/0% — structural-only. | |
| เอกสารสำคัญ PAK ของ ValveVPK (Valve Pak) | 100% | n/a | n/a | Tiny synthetic 28 B sample; structural walk catches every flip (header IS the file). Shotgun N/A. | |
| คลังเว็บ WARCWARC (Web Archive) | 48% | n/a | n/a | Record header + content-length walk. Shotgun N/A. | |
| โมดูลการประกอบเว็บWebAssembly | 35% | n/a | n/a | Section LEB128 length walk; magic + version. Tiny sample. Shotgun N/A. | |
| Windows Imaging FormatWIM (Windows Imaging) | 8% | n/a | n/a | XPRESS/LZX section walk; partial integrity. Shotgun N/A. | |
| Microsoft InstallerMicrosoft Installer (.msi) | 0% | 0% | 43% | OLE2 compound file (no integrity beyond CFBF FAT structure). Built via wixl. Shotgun catches FAT/dir mismatch. | |
| Windows ESD ImageWindows ESD (.esd) | 1% | 0% | 0% | WIM variant with LZMS compression; structural header walk (208-byte WIM header). Hand-authored. | |
| LLVM Precompiled HeaderLLVM Precompiled Header (.pch) | 0% | 0% | 0% | Magic ("CPCH") + LLVM bitcode signature only. Bitcode contents are version-specific; structural only. | |
| LLVM Serialized DiagnosticsLLVM Serialized Diagnostics (.dia) | 0% | 0% | 0% | Magic ("DIAG") + LLVM bitcode signature only. Same limit as .pch. | |
| การจับภาพเครือข่าย PCAPPCAP | 4% | 3% | 100% | Hand-authored (no sudo for tcpdump in nix sandbox). Walks every packet record's incl_len/orig_len; shotgun lands in valid trailer bytes that fail length checks. Fixed 64 MiB-stack-overflow bug in `validatePcap` while landing the sample. | |
| การจับภาพเครือข่าย PCAPNGPCAPNG | 10% | 8% | 100% | Walks every PCAPNG block's declared length and matching trailing length across every section. Unknown packet payloads remain opaque, so this is structural—not a per-packet checksum guarantee. | |
| G-code (3D Printer/CNC)G-code | 27% | 99% | 98% | Text format; line-grammar walk catches 27% sniper (most flips break a coordinate or G/M code prefix). Shotgun 98% — large overwrite breaks too many lines to ignore. Hand-authored CC0. | |
| MessagePack DataMessagePack (.msgpack) | 0% | 0% | 0% | Type-tagged binary; validator walks tag stream but spec has no checksum. Most flips land in payload bytes that decode to different-but-valid values. Fundamental limit per RFC. Hand-authored CC0. | |
| แพ็กเกจ RPMRPM Package (.rpm) | 3% | 7% | 30% | RPM v3 lead + signature header + main header. Validator computes SHA-1 over main header (when sig tag 269 present). Shotgun 30% reflects header dominance vs payload mass. Built via rpmbuild (CC0 spec). Fixed 16 MiB-stack-overflow bug in `validateRpm` while landing the sample. |