struct affheader { u_int32_t magic // 0x41464600 u_int32_t namelen=NAMELEN; u_int32_t datalen; u_int32_t argument; char name[NAMELEN]; } struct afffooter { u_int32_t magic; // 0x41545400 u_int32_t seglen; }Please note that this structure definition differs from the AFF definition in the fact that AFF defines the format to use only big endian integer notation while gfzip accepts both little and big endian notation. If a file is meant to be AFF compliant, then big endian should be used throughout the whole file.
section name | In partition |
---|---|
pageNNN | data |
md5 | digest |
sha1 | digest |
section name | In partition | Redundant with |
---|---|---|
pagesize | data | Footer::bcount |
imagesize | meta.acquire | Footer::unc_size |
pageNNN_md5 | digest | Digest::gfz.digesttable |
acquisition_technician | meta.acquire | meta.acquire::gfz.x509 |
struct gfz_footer { u_int64_t magic; u_int64_t unc_size; u_int64_t partitioningtable_offset; unsigned_char partition_count; unsigned char version; unsigned char compression; unsigned char pltype; u_int32_t bcount; }We shall describe the different fields in this footer:
struct partition_ref { u_int64_t partition_start; u_int64_t partition_size; u_int16_t certificate_meta_partition; u_int8_t encrypted; u_int8_t signing_type; u_int16_t parent_partition; u_int16_t coparent_partition; char signature[]; }The partition_start and partition_size fields indicate the location and size of the partition. The certificate_meta_partition defines what number (order in the partition records partition) partition contains the x509 certificate used to sign the partition.
struct ivtable { char[16] aeskey; char[32] digest; }
struct ftable_rec { u_int32_t subtable; u_int32_t orflags; u_int32_t andflags; } struct ftable_node { struct ftable_rec subrec[256]; }
partition | section | description |
---|---|---|
case/warrant | case_num | An ID for the case as provided by the procecutor |
warrant | gfz.warrant_num | An ID for the warrant as provided by the pocecutor |
warrant | gfz.warant_not_before | Start of valid acquirement window |
warrant | gfz.warant_not_after | End of valid acquirement window |
warrant/acquire,phys_acquire,orgtransfer | gfz.locality_country | |
warrant/acquire,phys_acquire,orgtransfer | gfz.locality_sop | state or province |
warrant/acquire,phys_acquire,orgtransfer | gfz.locality_city | |
warrant/acquire,phys_acquire,orgtransfer | gfz.locality_street | |
warrant/acquire,phys_acquire,orgtransfer | gfz.locality_building | |
warrant/acquire,phys_acquire,orgtransfer | gfz.locality_appartment | |
acquire,phys_acquire,orgtransfer | gfz.locality_room | |
acquire,phys_acquire | gfz.locality_esource_location | location in the room the evidence source was found |
acquire | gfz.locality_media | location in the evidence source where the media was found |
acquire,phys_acquire | gfz.esource_id | unique id (within case) of the evidence source. |
acquire | gfz.media_id | unique id (within evidence source) of the media. |
orgtransfer | gfz.organisation | |
orgtransfer | gfz.ou | organisational unit |
orgtransfer | gfz.dep | department |
orgtransfer | gfz.representative | |
reduction | gfz.reductionset_id | |
repair | gfz.damagereport | |
declare | gfz.declaration_reason | why was the data declared insubmissable as evidence |