ARJ

From Just Solve the File Format Problem
(Difference between revisions)
Jump to: navigation, search
 
(24 intermediate revisions by 4 users not shown)
Line 1: Line 1:
 
{{FormatInfo
 
{{FormatInfo
 
|subcat=Archiving
 
|subcat=Archiving
|extensions={{ext|arj}}
+
|extensions={{ext|arj}}, {{ext|a01}}, {{ext|a02}}, ...
 
|pronom={{PRONOM|fmt/610}}
 
|pronom={{PRONOM|fmt/610}}
 +
|wikidata={{wikidata|Q2693033}}
 +
|released=1990 (beta), 1991 (v1.00)
 
}}
 
}}
[[ARJ]] was one of the leading compression tools during the nineties. While it was a bit slower than PkZIP, it sported many more options, some of which were unique during that time (archives over multiple disks/volumes, fine-tuning of the compression algorithms used based on the data that was being compressed, recovery records to recover from simple transmission errors, etc.)
+
'''ARJ''' is a compressed archive format, and associated software. It was developed by Robert Jung.
  
See also [[JAR (ARJ Software)]].
+
== Discussion ==
 +
ARJ was one of the leading compression tools during the 1990s. While it was a bit slower than [[PKZIP]], it sported many more options, some of which were unique during that time (archives over multiple disks/volumes, fine-tuning of the compression algorithms used based on the data that was being compressed, recovery records to recover from simple transmission errors, etc.).
 +
 
 +
=== ARJ software expiration ===
 +
If you wish to use or research the official ARJ software, be aware that some of the free/evaluation and beta versions of ARJ and ARJ32 have a hard-coded expiration date. They do not work, or do not work as well, if they think they are being used after that date. Expiration can manifest in several ways.
 +
 
 +
The 0.xx versions disable some features, based on the system clock, and the timestamp of the file being archived. Other versions only seem to care about the system clock.
 +
 
 +
Some beta versions inexplicably print "CRC error!" if they're expired.
 +
 
 +
At least one version prints a message about a time delay, but then seems to hang forever.
 +
 
 +
Newer versions have a time delay whose duration depends on how long ago they expired. The delay can be several minutes.
 +
 
 +
The newest versions that don't expire are apparently ARJ 2.76 and ARJ32 3.09.
 +
 
 +
Suggest running expired DOS versions in [[DOSBox-X]], which lets you set the clock.
 +
 
 +
== Format details ==
 +
 
 +
=== Compression methods ===
 +
{| class="wikitable"
 +
! ID !! Name !! Description
 +
|-
 +
|0 || stored || No compression
 +
|-
 +
|1 || compressed most ||rowspan="3"| [[LZ77 with Huffman coding|LZ77+Huffman]]. These are all essentially the same as [[LHA]]'s "lh6" method, but with the history window artificially limited to 26K, instead of 32K.
 +
 
 +
It is possible for ARJ files to exist that violate the 26K limit, e.g. if they were created by [[ARJZ]], or by Open-Source ARJ with the <code>-hdd32750</code> debug option.
 +
|-
 +
|2 || ...
 +
|-
 +
|3 || ...
 +
|-
 +
|4 || compressed fastest || An ARJ-specific implementation of [[LZ77]]/[[LZSS]].
 +
 
 +
Note: This compression method was slightly different in ARJ v0.13–0.14.
 +
|-
 +
|8 || no data, no CRC ||
 +
|-
 +
|9 || no data ||
 +
|}
 +
 
 +
=== Format version number ===
 +
The main header and each local file header have two 1-byte fields, named "archiver version" and "min archiver version to extract". The main "archiver version" field in particular could be useful to help classify the file. It normally appears at file offset 5.
 +
 
 +
The table below maps format versions to software versions and some relevant format changes. There is a similar table in the Open-Source ARJ FAQ (in resource/en/readme.txt), which includes some additional software.
 +
 
 +
{| class="wikitable"
 +
! Format ver. !! Used by !! Remarks
 +
|-
 +
|1 || ARJ 0.13-0.14
 +
|-
 +
|2 || ARJ 0.15-1.00 || Changed <code>-m4</code> compression.
 +
|-
 +
|3 || ARJ 1.10-2.22 || Added support for directories.
 +
|-
 +
|4 || ARJ 2.30
 +
|-
 +
|5 || ARJ 2.39a-2.39b
 +
|-
 +
|6 || ARJ 2.39c-2.41a || Last-modified-time field added to main header.
 +
|-
 +
|7 || ARJ 2.42a-2.50a
 +
|-
 +
|8 || ARJ 2.55-2.61 || Encryption version field added to main header. Support for "chapters" added.
 +
|-
 +
|9 || ARJ 2.62-2.63[release 2 of 5?]<br>ARJ32 3.00 || Flags bit 0x02 redefined to mean "ANSIPAGE". Creation-time and access-time fields added.
 +
|-
 +
|10 || ARJ 2.63[release 3 of 5?]-2.76 || "ARJ protection factor" field added to main header.
 +
|-
 +
|11 || ARJ 2.81-(at least 2.86) || "Flags (second series)" field added to main header.
 +
|-
 +
|50 || ARJZ || Used by [[ARJZ]], maybe only in the "min version" field.
 +
|-
 +
|51 || ARJZ || Used by [[ARJZ]].
 +
|-
 +
|100 || ARJ32 3.00a-3.01a || Feature-equivalent to 9.
 +
|-
 +
|101 || ARJ32 3.02-3.09 || Feature-equivalent to 10.
 +
|-
 +
|102 || ARJ32 3.10-(at least 3.20) || Feature-equivalent to 11.
 +
|}
 +
 
 +
== Self-extracting archives ==
 +
ARJ can create self-extracting archives. This is usually done with the <code>-je</code> or <code>-je1</code> option. The <code>-je1</code> option creates an "SFXJR" archive, which is smaller, but has limited features.
 +
 
 +
According to the documentation, the ASCII signature "{{magic|aRJsfX}}" appears somewhere in the first 1000 bytes of all such files made by ARJ v2.20+.
 +
 
 +
Files made by ARJ for DOS use [[MS-DOS EXE|EXE]] format. The different versions are summarized below.
 +
 
 +
{| class="wikitable"
 +
! Versions !! Option !! Remarks
 +
|-
 +
| &lt;0.15 || || No such feature.
 +
|-
 +
| 0.15–0.15a || <code>-x</code> || The executable part is pre-compressed with [[LZEXE]]. LZEXE's usual "<code>LZ91</code>" signature appears at offset 28.
 +
|-
 +
| 0.20 || <code>-je</code> || LZEXE w/"<code>LZ91</code>" signature.
 +
|-
 +
| 1.00–2.00 || <code>-je</code> or <code>-je1</code> || Apparently uses [[DIET (compression)|DIET]] compression.
 +
|-
 +
| 2.10 || <code>-je</code> or <code>-je1</code> || LZEXE w/"<code>LZ91</code>" signature.
 +
|-
 +
| 2.20+ || <code>-je</code> or <code>-je1</code> || LZEXE w/"<code>RJSX</code>" signature.
 +
|}
 +
 
 +
== Identification ==
 +
An ARJ archive starts with signature bytes {{magic|0x60 0xea}}. Byte <code>0x02</code> appears at offset 10.
 +
 
 +
The full identification algorithm used by the ARJ software is given in its technical documentation.
 +
 
 +
== See also ==
 +
* [[ARJ-PROTECT data]]
 +
* [[ARJZ]]
 +
* [[JAR (ARJ Software)]]
 +
* [[SARJ]]
 +
* [[SDN (SDN Project)]]
 +
 
 +
== Specifications ==
 +
* The ARJ/UNARJ distributions include detailed format information, in a file named TECHNOTE.TXT or similar.
 +
** [https://github.com/FarGroup/FarManager/blob/master/plugins/multiarc/arc.doc/arj.txt A copy of the 2001-09 version] (with an addendum of some sort)
 +
* [http://www.fileformat.info/format/arj/corion.htm The ARJ Archive File Format], from fileformat.info and Corion.net
 +
* Some extensions are documented in the [http://arj.sourceforge.net/ Open-source ARJ] project, especially in [https://github.com/joncampbell123/arj/blob/master/resource/en/readme.txt#L373 resource/en/readme.txt], "INFORMATION FOR DEVELOPERS" section.
  
 
== Software ==
 
== Software ==
* [http://www.arjsoftware.com/ Official homepage of ARJ software]
+
* ARJ - Official compression/decompression software for DOS
 +
** {{CdTextfiles|nightowl/carrs/015A/ARJ013A.ZIP|v0.13a}} (1990-09-29)
 +
** {{CdTextfiles|hof91/ARC/ARJ100.LZH|v1.00}} (1991-02-07)
 +
** {{CdTextfiles|pier/pier01/001a/arj230.exe|v2.30}} (1992-01-19)
 +
** {{CdTextfiles|simtel/simtel20/MSDOS/ARCHIVRS/ARJ241A.EXE|v2.41a}} (1993-07-10)
 +
** {{CdTextfiles|simtel/stmsdos9709/disk1/DISC1/ARCERS/ARJ250A.EXE|v2.50a}} (1995-12-12)
 +
** {{CdTextfiles|ftp.wwiv.com/pub/GENUTIL/arj260.exe|v2.60}} (1997-11-16)
 +
** [http://www.filegate.net/compress/arj271.exe v2.71] (1999-12-19)
 +
** v2.76 (2001-06-18): [https://archive.org/details/chip_20018102_hu Chip CD 20018102 HU] → sac/pack/arj276.exe
 +
** [https://www.sac.sk/download/pack/arj286.exe v2.86] (2012-01-02)
 +
** [http://old-dos.ru/index.php?page=files&mode=files&do=show&id=779 Various versions at old-dos.ru]
 +
* ARJ32 - Official compression/decompression software for Windows console
 +
** [http://www.filegate.net/compress/arj32v3j.exe v3.04] (1999-12-19)
 +
** v3.09 (2001-06-18): [https://archive.org/details/chip_20018102_hu Chip CD 20018102 HU] → sac/pack/arj32v3p.exe
 +
** [https://www.sac.sk/download/pack/arj32320.exe v3.20] (2012-01-02)
 +
** [http://old-dos.ru/index.php?page=files&mode=files&do=show&id=1463 Various versions at old-dos.ru]
 +
* UNARJ - Official software, decompression only
 +
** {{CdTextfiles|simtel/simtel20/MSDOS/ARCHIVRS/UNARJ241.ZIP|v2.41}} (1993-04) - Source code + DOS binary
 +
** [https://www.sac.sk/download/pack/unarj265.exe v2.65] (2002-06) - Source code + DOS binary + Windows console binary
 +
* ARJCRYPT - An add-on required to enable the "new" encryption method
 +
** arjc270.exe: [http://www.filegate.net/pub/compress/arjc270.exe], [https://toogam.com/software/archive/archiver/arj/arjc270.exe]
 +
** arj32c3i.exe: [http://www.filegate.net/pub/compress/arj32c3i.exe], [https://toogam.com/software/archive/archiver/arj/arj32c3i.exe]
 +
* [https://github.com/PascalVault/Lazarus_Unpacker Open-source library in Free Pascal]
 
* [[7-Zip]]
 
* [[7-Zip]]
 
* [http://arj.sourceforge.net/ Open-source ARJ]
 
* [http://arj.sourceforge.net/ Open-source ARJ]
 +
* [[Konvertor]]
 +
* [[Xelitan Zip]]
 +
 +
''See also the notes about software expiration, elsewhere on this page.''
  
 
== Sample files ==
 
== Sample files ==
* http://cd.textfiles.com/20mnn/HPTEXT/PHRACK/
+
* {{CdTextfilesURL|20mnn/HPTEXT/PHRACK/}}
* [http://cd.textfiles.com/silvercollection/ The Silver Collection] CDs have many ARJ files
+
* {{CdTextfiles|silvercollection/|The Silver Collection}} CDs have many ARJ files
 +
* {{CdTextfilesURL|goldmedal/}}
 +
* {{DexvertSamples|archive/arj}}
  
==Resources==
+
== Links ==
 
* [[Wikipedia:ARJ|Wikipedia article]]
 
* [[Wikipedia:ARJ|Wikipedia article]]
* [http://www.fileformat.info/format/arj/corion.htm The ARJ Archive File Format], from fileformat.info
+
* [http://www.arjsoftware.com/ Official homepage of ARJ software]
* [http://farmanager.com/svn/trunk/plugins/multiarc/arc.doc/arj.txt Another, slightly more verbose, file format description] (apparently moved [http://farmanager.googlecode.com/svn/trunk/plugins/multiarc/arc.doc/arj.txt here])
+

Latest revision as of 20:59, 5 October 2024

File Format
Name ARJ
Ontology
Extension(s) .arj, .a01, .a02, ...
PRONOM fmt/610
Wikidata ID Q2693033
Released 1990 (beta), 1991 (v1.00)

ARJ is a compressed archive format, and associated software. It was developed by Robert Jung.

Contents

[edit] Discussion

ARJ was one of the leading compression tools during the 1990s. While it was a bit slower than PKZIP, it sported many more options, some of which were unique during that time (archives over multiple disks/volumes, fine-tuning of the compression algorithms used based on the data that was being compressed, recovery records to recover from simple transmission errors, etc.).

[edit] ARJ software expiration

If you wish to use or research the official ARJ software, be aware that some of the free/evaluation and beta versions of ARJ and ARJ32 have a hard-coded expiration date. They do not work, or do not work as well, if they think they are being used after that date. Expiration can manifest in several ways.

The 0.xx versions disable some features, based on the system clock, and the timestamp of the file being archived. Other versions only seem to care about the system clock.

Some beta versions inexplicably print "CRC error!" if they're expired.

At least one version prints a message about a time delay, but then seems to hang forever.

Newer versions have a time delay whose duration depends on how long ago they expired. The delay can be several minutes.

The newest versions that don't expire are apparently ARJ 2.76 and ARJ32 3.09.

Suggest running expired DOS versions in DOSBox-X, which lets you set the clock.

[edit] Format details

[edit] Compression methods

ID Name Description
0 stored No compression
1 compressed most LZ77+Huffman. These are all essentially the same as LHA's "lh6" method, but with the history window artificially limited to 26K, instead of 32K.

It is possible for ARJ files to exist that violate the 26K limit, e.g. if they were created by ARJZ, or by Open-Source ARJ with the -hdd32750 debug option.

2 ...
3 ...
4 compressed fastest An ARJ-specific implementation of LZ77/LZSS.

Note: This compression method was slightly different in ARJ v0.13–0.14.

8 no data, no CRC
9 no data

[edit] Format version number

The main header and each local file header have two 1-byte fields, named "archiver version" and "min archiver version to extract". The main "archiver version" field in particular could be useful to help classify the file. It normally appears at file offset 5.

The table below maps format versions to software versions and some relevant format changes. There is a similar table in the Open-Source ARJ FAQ (in resource/en/readme.txt), which includes some additional software.

Format ver. Used by Remarks
1 ARJ 0.13-0.14
2 ARJ 0.15-1.00 Changed -m4 compression.
3 ARJ 1.10-2.22 Added support for directories.
4 ARJ 2.30
5 ARJ 2.39a-2.39b
6 ARJ 2.39c-2.41a Last-modified-time field added to main header.
7 ARJ 2.42a-2.50a
8 ARJ 2.55-2.61 Encryption version field added to main header. Support for "chapters" added.
9 ARJ 2.62-2.63[release 2 of 5?]
ARJ32 3.00
Flags bit 0x02 redefined to mean "ANSIPAGE". Creation-time and access-time fields added.
10 ARJ 2.63[release 3 of 5?]-2.76 "ARJ protection factor" field added to main header.
11 ARJ 2.81-(at least 2.86) "Flags (second series)" field added to main header.
50 ARJZ Used by ARJZ, maybe only in the "min version" field.
51 ARJZ Used by ARJZ.
100 ARJ32 3.00a-3.01a Feature-equivalent to 9.
101 ARJ32 3.02-3.09 Feature-equivalent to 10.
102 ARJ32 3.10-(at least 3.20) Feature-equivalent to 11.

[edit] Self-extracting archives

ARJ can create self-extracting archives. This is usually done with the -je or -je1 option. The -je1 option creates an "SFXJR" archive, which is smaller, but has limited features.

According to the documentation, the ASCII signature "aRJsfX" appears somewhere in the first 1000 bytes of all such files made by ARJ v2.20+.

Files made by ARJ for DOS use EXE format. The different versions are summarized below.

Versions Option Remarks
<0.15 No such feature.
0.15–0.15a -x The executable part is pre-compressed with LZEXE. LZEXE's usual "LZ91" signature appears at offset 28.
0.20 -je LZEXE w/"LZ91" signature.
1.00–2.00 -je or -je1 Apparently uses DIET compression.
2.10 -je or -je1 LZEXE w/"LZ91" signature.
2.20+ -je or -je1 LZEXE w/"RJSX" signature.

[edit] Identification

An ARJ archive starts with signature bytes 0x60 0xea. Byte 0x02 appears at offset 10.

The full identification algorithm used by the ARJ software is given in its technical documentation.

[edit] See also

[edit] Specifications

[edit] Software

See also the notes about software expiration, elsewhere on this page.

[edit] Sample files

[edit] Links

Personal tools
Namespaces

Variants
Actions
Navigation
Toolbox