AIN

From Just Solve the File Format Problem
(Difference between revisions)
Jump to: navigation, search
m (Sample files)
 
(One intermediate revision by one user not shown)
Line 6: Line 6:
 
}}
 
}}
 
'''AIN''' is a compressed archive format, produced by a DOS shareware program of the same name. It was developed by InfoService Ltd., later Transas Marine Ltd.
 
'''AIN''' is a compressed archive format, produced by a DOS shareware program of the same name. It was developed by InfoService Ltd., later Transas Marine Ltd.
 +
 +
== Format details ==
 +
The v2.2 documentation says "AIN version 2.2 archive format is incompatible with that of AIN version 2.0." But, no versions before 2.1 have been found.
 +
 +
None of the compression methods used in AIN seem to be publicly known.
 +
 +
An AIN file consists of an archive header, then a segment for the file data, then an index at the end of the file. The index is evidently compressed.
 +
 +
=== Archive header ===
 +
''[Incomplete information, based on reverse engineering. Written for the fileformats.archiveteam.org wiki.]''
 +
 +
The first 24 bytes of the file are the archive header. Byte order is little-endian.
 +
 +
{| class="wikitable"
 +
! Offset !! Size !! Description
 +
|-
 +
|0  || 1 || Unknown, observed to be 0x21.
 +
|-
 +
|1  || 1 || /u setting (high 4 bits), /m setting (low 4 bits)
 +
|-
 +
|2  || 1 || Unknown, observed to be 0.
 +
|-
 +
|3  || 1 || Flags: 0x80=garbled, 0x40=more fragments follow
 +
|-
 +
|4  || 2 || Data related to garbled archives. 0 if not garbled.
 +
|-
 +
|6  || 2 || Volume number (0=first)
 +
|-
 +
|8  || 2 || Number of member files
 +
|-
 +
|10 || 4 || Archive timestamp
 +
|-
 +
|14 || 4 || Location of index
 +
|-
 +
|18 || 2 || Index checksum: low 16 bits of {sum of bytes from {location of index} through EOF}.
 +
|-
 +
|20 || 2 || Unknown, observed to be 0.
 +
|-
 +
|22 || 2 || Header checksum: {sum the first 22 bytes} xor 0x5555.
 +
|}
  
 
== AINEXE ==
 
== AINEXE ==
AIN also includes an [[executable compression]] utility named '''AINEXE'''. It compresses [[MS-DOS EXE]] files.
+
AIN also includes an [[executable compression]] utility named '''AINEXE'''. It compresses [[MS-DOS EXE|DOS EXE]] files.
  
 
== Self-extracting archives ==
 
== Self-extracting archives ==
Line 16: Line 56:
  
 
Version 2.32: The included AINEXT.EXE extraction utility doubles as the self-extractor module. You can prepend it to an AIN archive to create a self-extracting archive. Or you can use AIN's <code>-e</code> option to create a self-extracting archive instead of an .AIN archive (this requires that AINEXT.EXE be present). Note that AINEXT.EXE may report its version number to be 2.31.
 
Version 2.32: The included AINEXT.EXE extraction utility doubles as the self-extractor module. You can prepend it to an AIN archive to create a self-extracting archive. Or you can use AIN's <code>-e</code> option to create a self-extracting archive instead of an .AIN archive (this requires that AINEXT.EXE be present). Note that AINEXT.EXE may report its version number to be 2.31.
 
== Notes ==
 
The documentation says "AIN version 2.2 archive format is incompatible with that of AIN version 2.0." But, no versions before 2.1 have been found.
 
  
 
== Identification ==
 
== Identification ==
At least some .AIN files start with the byte sequence (hex) {{magic|21 ?? 00 00 00 00 00 00}}.
+
Robust identification of AIN format is nontrivial. The software itself uses the header checksum and index checksum.
 +
 
 +
An AIN file with default settings starts with (hex bytes) {{magic|21}}, has {{magic|00 00 00 00 00 00}} at offset 2, and {{magic|00 00}} at offset 20.
 +
 
 +
Some of the bits at the end of the file might also help to identify AIN, but they are not byte-aligned.
  
 
AINEXE-compressed EXE files most likely have ASCII "{{magic|AIN}}" at offset 32.
 
AINEXE-compressed EXE files most likely have ASCII "{{magic|AIN}}" at offset 32.
Line 39: Line 80:
  
 
== Sample files ==
 
== Sample files ==
* https://telparia.com/fileFormatSamples/archive/ain/
+
* {{DexvertSamples|archive/ain}}
  
 
[[Category:Executable compression]]
 
[[Category:Executable compression]]

Latest revision as of 04:19, 28 December 2023

File Format
Name AIN
Ontology
Extension(s) .ain
Released ≤1993

AIN is a compressed archive format, produced by a DOS shareware program of the same name. It was developed by InfoService Ltd., later Transas Marine Ltd.

Contents

[edit] Format details

The v2.2 documentation says "AIN version 2.2 archive format is incompatible with that of AIN version 2.0." But, no versions before 2.1 have been found.

None of the compression methods used in AIN seem to be publicly known.

An AIN file consists of an archive header, then a segment for the file data, then an index at the end of the file. The index is evidently compressed.

[edit] Archive header

[Incomplete information, based on reverse engineering. Written for the fileformats.archiveteam.org wiki.]

The first 24 bytes of the file are the archive header. Byte order is little-endian.

Offset Size Description
0 1 Unknown, observed to be 0x21.
1 1 /u setting (high 4 bits), /m setting (low 4 bits)
2 1 Unknown, observed to be 0.
3 1 Flags: 0x80=garbled, 0x40=more fragments follow
4 2 Data related to garbled archives. 0 if not garbled.
6 2 Volume number (0=first)
8 2 Number of member files
10 4 Archive timestamp
14 4 Location of index
18 2 Index checksum: low 16 bits of {sum of bytes from {location of index} through EOF}.
20 2 Unknown, observed to be 0.
22 2 Header checksum: {sum the first 22 bytes} xor 0x5555.

[edit] AINEXE

AIN also includes an executable compression utility named AINEXE. It compresses DOS EXE files.

[edit] Self-extracting archives

Some versions support self-extracting archives, in DOS EXE format.

Version 2.23: The distribution includes an AINSFX.EXE file, which seems to be undocumented, but can be prepended to an AIN archive to create a self-extracting archive.

Version 2.32: The included AINEXT.EXE extraction utility doubles as the self-extractor module. You can prepend it to an AIN archive to create a self-extracting archive. Or you can use AIN's -e option to create a self-extracting archive instead of an .AIN archive (this requires that AINEXT.EXE be present). Note that AINEXT.EXE may report its version number to be 2.31.

[edit] Identification

Robust identification of AIN format is nontrivial. The software itself uses the header checksum and index checksum.

An AIN file with default settings starts with (hex bytes) 21, has 00 00 00 00 00 00 at offset 2, and 00 00 at offset 20.

Some of the bits at the end of the file might also help to identify AIN, but they are not byte-aligned.

AINEXE-compressed EXE files most likely have ASCII "AIN" at offset 32.

[edit] Software

[edit] Sample files

Personal tools
Namespaces

Variants
Actions
Navigation
Toolbox