diff --git a/README.md b/README.md index 6652e2b..21cd1a5 100644 --- a/README.md +++ b/README.md @@ -26,6 +26,7 @@ Everything will immediately show up in ImHex's Content Store and gets bundled wi | 7Z | | [`patterns/7z.hexpat`](patterns/7z.hexpat) | 7z File Format | | AFE2 | | [`patterns/afe2.hexpat`](patterns/afe2.hexpat) | Nintendo Switch Atmosphère CFW Fatal Error log | | AR | `application/x-archive` | [`patterns/ar.hexpat`](patterns/ar.hexpat) | Static library archive files | +| ARIA2 | | [`patterns/aria2.hexpat`](patterns/aria2.hexpat) | ARIA2 Download Manager Control files | | ARM VTOR | | [`patterns/arm_cm_vtor.hexpat`](patterns/arm_cm_vtor.hexpat) | ARM Cortex M Vector Table Layout | | Bencode | `application/x-bittorrent` | [`patterns/bencode.hexpat`](patterns/bencode.hexpat) | Bencode encoding, used by Torrent files | | BMP | `image/bmp` | [`patterns/bmp.hexpat`](patterns/bmp.hexpat) | OS2/Windows Bitmap files | diff --git a/patterns/aria2.hexpat b/patterns/aria2.hexpat new file mode 100644 index 0000000..ac9139c --- /dev/null +++ b/patterns/aria2.hexpat @@ -0,0 +1,36 @@ +#pragma author itsmeow +#pragma description aria2 Control File + +#pragma endian big + +/* +Format sourced from: +https://aria2.github.io/manual/en/html/technical-notes.html#control-file-aria2-format + +Version 0 files are not supported by default +However parsing one is as simple as changing to #pragma endian ittle +and resolving any errors resulting from that by adding be prefixes to struct fields. +*/ + +struct AriaInFlight { + u32 index; + u32 length; + u32 bitfield_piece_length; + u8 bitfield_p[bitfield_piece_length]; +}; + +struct AriaHeader { + u16 version; + u32 extension; + u32 infohash_length; + u8 infohash[infohash_length]; + u32 piece_length; + u64 total_length; + u64 upload_length; + u32 bitfield_length; + u8 bitfield_d[bitfield_length]; + u32 inflight_count; + AriaInFlight inflights[inflight_count]; +}; + +AriaHeader aria_header @ 0x00; \ No newline at end of file diff --git a/tests/patterns/test_data/aria2.hexpat.aria2 b/tests/patterns/test_data/aria2.hexpat.aria2 new file mode 100644 index 0000000..e21bf54 Binary files /dev/null and b/tests/patterns/test_data/aria2.hexpat.aria2 differ