|
|

PeaZip is
an open source file and archive manager: cross
platform, available as portable and installable software for 32 and 64
bit Windows (9x,
2k, XP, Vista, 7) and Linux x86 and x86-64 (PeaZip is a desktop neutral
application).
Full
support: 7z, FreeArc's
arc/wrc,
sfx (7z and arc), bz2, gz, paq/lpaq/zpaq, pea, quad/balz, split, tar,
upx, zip
Read
(browse,
extract,
test) 134 file extensions: 7z, bz, bz2,
bzip2, tbz2, tbz, gz, gzip, tgz, tpz, tar, zip, zipx, z01, smzip, arj, cab,
chm, chi, chq, chw, hxs, hxi, hxr, hxq, hxw, lit, cpio, deb, lzh, lha, rar, r01, 00, rpm, z, taz, tz, iso, jar, ear,
war, lha, pet, pup, pak, pk3, pk4, slp, [Content], xpi, wim, u3p,
lzma86, lzma, udf, xar, dmg, hfs, part1, split, swm, tpz, kmz, xz, txz,
vhd, mslz, apm, mbr, fat, ntfs, exe, dll, sys, msi, msp, ods, ots, odm,
oth, oxt, odb, odf, odg, otg, odp, otp, odt, ott, gnm, doc, dot, xls,
xlt, ppt, pps, pot, docx, dotx, xlsx, xltx, swf, flv, quad, balz, zpaq,
paq8f, paq8jd, paq8l, paq8o, lpaq1, lpaq5, lpaq8, ace, arc, wrc, 001,
pea, cbz, cbr, cba, cb7,
cbt (and more...)
Repair: FreeArc's arc/wrc
PeaZip allows to create, convert and
extract multiple archives at once; create self-extracting archives;
bookmark archives and folders; apply powerful multiple search filters
to archive's content; export job definition as command line; save
archive's layouts; scan and open with custom applications compressed
and uncompressed files etc...
Other features: strong encryption,
robust file copy, split/join files (file span), secure data deletion,
compare, checksum and hash files, system benchmark, generate random
passwords and keyfiles.
Flexibility
PeaZip can
extract most
of archive formats both from
Windows and
Unix worlds, ranging from
mainstream formats as 7Z, RAR, TAR and ZIP to
experimental ones like PAQ/LPAQ family, currently the most powerful
compressor available.
PeaZip supports creating archives with a wide range of compression and
encryption standards, and allows to
export job definition as scripts to bridge the gap between GUI and
console applications, and let the user pick the best of the two worlds.
PeaZip is a reliable
solution
for most of the archive types you may met, and will
help you in finding the right tool for a wide range of specific needs
if you are searching for speed, or maximum compression, or strong
encryption.
|
|
Security
PeaZip has
secure
deletion feature, can verify file checksum and hash, and supports
multiple strong encryption standards, optionally using two factor
authentication (password and keyfile) for increased security:
- 7Z's
AES256 encryption
- ZIP WinZip's AE encryption based on
AES256 (and ZipCrypto for legacy compatibility); can decrypt PKZip's
AES encryption
- FreeARC's ARC: AES256, Blowfish,
Twofish256 and
Serpent256; this format also supports recovery records to protect
data against corruption
- PEA: AES256
EAX authenticated encryption
PeaZip
is focused on security and supports
multiple strong encryption standards.
|
|
Portability
You can use
PeaZip on all
Windows version and on Linux (PeaZip is a desktop neutral application)
with the same features and look
and feel; moreover, for both platforms, PeaZip is
also available as
standalone, portable application not needing installation.
You can bring PeaZip with
you and rely on
it on multiple platforms.
Free as in
freedom
PeaZip is freeware, free of charge for any personal and corporate use,
and is also free as in
freedom since it's released under Open
Source license LGPLv3.
PeaZip contains
exclusively Open Source
components released under OSI approved
licenses
|
Third
parts technologies

PeaZip acts as graphic frontend for multiple "engines"
performing archiving, compression, encryption and volume split features
- Pea
(Giorgio Tani,
LGPLv3) archiving utility featuring authenticated encryption; both
PeaZip and Pea uses Wolfgang Ehrhardt's Pascal/Delphi crypto
library
- 7z
(Igor
Pavlov, LGPL) and p7zip
(Myspace,
LGPL, the POSIX port of 7z for Unix systems), supporting most of the
mainstream archiving and compression formats
- ARC
(Bulat
Ziganshin, GPL) FreeARC archiver, featuring high compression and strong
encryption
- PAQ/LPAQ/ZPAQ
(Matt
Mahoney and other contributors, GPL) various compression utilities, the
current state of art for maximum compression ratio
- QUAD
(Ilia
Muraviev, LGPL) and BALZ
(Ilia
Muraviev, public domain) compression utilities
- UPX
(Markus
F.X.J. Oberhumer, László Molnár and John F.
Reiser, GPL), compression utility for binaries, and Strip
form GNU
binutils (GPL)
- UNACE
(Marcel
Lemke, ACE Compression Software, royalty-free UNACEV2.DLL license)
UNACEV2.DLL 2.6.0.0 and UNACE for Linux (royalty-free UNACE for Linux
license) extractor for ACE files.
Open source
archiving and
compression utilities are included in the
program’s package and ready to use; all software included in the
package is released under OSI
approved licenses. UNACE is available as separate downloadable
plugin since, while royalty free, it's not released under an
OSI-approved open source license.
Self-extracting archives are supported, built using 7-Zip's sfx modules
(with custom icons and compressed with UPX in order to minimize the
overhead added to the archive) and alternatively FreeArc's sfx modules.
Custom third parts modules distributors are linked in Add-ons page.
|
|

PeaZip on Windows
|
|

PeaZip on Linux
|
Project's goals

- PEA - Pack
Encrypt
Authenticate
- The initial goal of the application was
creating
a frontend for Pea archiver utility, implementing PEA archive format,
designed ground up by myself to primarily focus on security and
integrity: I wanted something performing strong authenticated
encryption and perform integrity checks on both input objects and
output volume(s). Pea offer those characteristics, and is open source
(LGPL) freeware; file format specifications are released under public
domain. I did a bit of cryptanalisys of it (see Documentation package);
I hope more authoritative people may analyze it further.
- Most archivers offer strong encryption, but
bounded to password-only auhentication: Pea executable offers two
factor authentication to increase encryption's security margins against
password-related threats, like social engineering, dictionary attacks,
bruteforcing, keylogging...
- Bring focus
on
Lazarus/FreePascal
- I'm developing PeaZip project in FreePascal
language, under Lazarus IDE. I like Pascal-related languages and I
think Lazarus/FreePascal is one of the best cross-platform IDE
available; I like it even more because it is open source and because
it's growing day by day in a more mature and powerful IDE. I'll be glad
to bring a bit of developer's attention on Lazarus/FreePascal through
my project.
- Archiving
and compression
- Designing PeaZip UI, I'm aiming to focus on
archive-specific tools, operations and needs rather than focusing on
offering a faithful emulation of a file browser, like many mainstream
archivers does. Saving lists of objects to be archived, saving
archiving/extraction job definitions and receiving detailed job log
after operations are primary goals of PeaZip UI. However, PeaZip's
system integration, if desired, allows the user to perform most common
operations (add to archive, extract here, encrypt, split file etc)
without even care of the main program UI.
- 7-Zip: thanking Igor Pavlov and Myspace
choice of
offering 7z under LGPL I was able to easily add support to many
mainstream archive and compression formats to PeaZip, transforming it
from a niche project (formerly named Pea-Peach) to a possibly wider
targeted software. I hope I can turn back to them part of the benefit
supporting .7z archive format, especially on Linux systems, offering a
ready to use solution to extract and archive in .7z format among
others.
- ARC: a new, very promising archive format,
featuring powerful but efficient compression, strong encryption and
recovery records.
- PAQ/LPAQ/ZPAQ: one of the most promising
research project in the field of maximum compression is Matt Mahoney's
Paq.
Many different implementation and branches exists, as command line
binaries and or integrated in archivers with GUI (like WinRK, WinUDA,
KGB Archiver etc). PeaZip act as GUI fronted to various *Paq, hoping to
contribute
to the diffusion of this high compression format and in bringing focus
on this
interesting research project.
- QUAD/BALZ: Ilia Muraviev's QUAD and BALZ
are very
promising ROLZ-based compression software featuring high compression
ratio and fast decompression, making them very well suited in scenarios
were decompression occurs more often than compression (i.e. package
release).
- Strip/UPX: I often use Strip/UPX on
executables I
compile (including PeaZip's ones); the GUI frontend for Strip/UPX in
PeaZip comes to be very handy for me and I hope it can be an useful
plus for many other developers to reduce executables size.
- Two factor authentication: from version 2.1
PeaZip can use keyfiles for any supported format featuring encryption.
The SHA256 hash of the keyfile (no size limit) is encoded in Base64
(RFC 4648) and prepended to the password. So, it is possible to work on
archives encrypted in that way using PeaZip or any application
following the same convention, or simply entering the Base64-encoded
hash as the first part of the password.
Notes for users
UTF-8
support
From version 2.2
UTF-8
character encoding is supported,
allowing to properly handle extended characters in filenames and to
deploy localization of PeaZip's user interface text in any language.
It should be noted however that, at present level of development of
Lazarus/FreePascal project, most of the underlying FreePascal
file-handling routines are still ANSI-only, meaning the UTF-8 strings
PeaZip uses internally still have to be translated to ANSI strings to
be passed to some functions.
As PeaZip aims 1) to stay cross-platform and 2) to bridge the gap
between GUI and console worlds, allowing to easily export jobs as
command lines, UTF-8 support is utterly complicated because each system
/ desktop environment / widgetset PeaZip is ported to has different
levels and ways of supporting UTF-8 encoding for different APIs, for
system pipes, for command line interpreters etc.
This issue currently causes:
- PeaZip cannot browse files/dirs containing
characters
which are not featured in host system’s character’s set (they will be
replaced by ? wildcard) due to the need of ANSI translation for strings
passed to some FPC routines;
- decoding of names of
archived objects
containing
extended characters, form version 3.0.1, is supported for file types
handled using 7z/p7zip backend (using backend's -sccUTF-8 option).
However in some cases, due to the archive format specifications, or to
issues of the software used to create the archive being examined, or
due to charset conversion problems between the source system and the
target system that is reading the archive, the conversion of character
in filenames inside the archive may fail anyway. Optionally extended
characters can be set to be
always replaced by jolly "?" character to avoid possible issues between
archive's and system's character encodings on some special cases.
In
any case the ability of operate (test,
create,
extract
etc) on the whole archive (as long as the file name can be passed to
the application) is not affected by this issue
Custom drag and drop
(Windows)
From version 2.1 it is possible to drag items from application to
system (Windows version).
PeaZip uses a
custom
drag&drop to system feature that doesn’t need to copy files being
dragged to system’s temp folder before, resulting in faster operation
when big files are involved, and in better security if temp folder has
not the same desired security policies of actual output folder.
This custom drag
and drop
function will not show default Windows drag and drop cursors and it can
drag files to the path of (file)Explorer windows with Address field
enabled (as it is by default on all Windows versions), or to the
desktop; it will prompt a directory selection dialog if the path is not
recognized i.e. content is dropped to an application other than
(file)Explorer.
PEA archive type
limitations
Such a list can be
all but
complete, however: when I designed PEA
archive format I was less experienced and I basically didn't take in
account the need to browse the archive or to partially extract objects;
just to create and extract it.
Since filenames are, by design, saved along file streams, there is not
an easy way to accomplish it without parsing the entire archive (which
can be a reasonable solution only for small archives) or without
changing format specifications breaking the compatibility with former
versions.
A workaround I may implement in future to allow archive browsing could
be creating an extra text filecontaining filenames, saved as first
archive's object; that will not introduce backward incompatibility
since previos PEA version could still correctly handle the new archives
(just having the list-file as extra content) and will be quite painless
introducing negligible space and speed payload, unless archiving many
small files.
This is just an hypothetical evaluation and there still is not a
roadmap about it. Anyway this is a PEA format related issue has no
impact on users using PeaZip to handle formats other than PEA.
Cryptoanalisys
You can find a stub of cryptoanalisys of PEA archive format on PEA online help (.pdf)
Notes
for translators

Language files are UTF-8 encoded
text files which can be edited using any suitable text editor.
To create a new translation file you can:
1 - copy default.txt (in PeaZip's path in /res/lang subfolder) or any
other language file, if you prefer starting from another language, to a
new file;
2 - edit lines 2 to 6 of the document to enter language name (both in
English and in the original language for better readability), PeaZip's
version (major.minor) the translation is aimed to, translator's and
last last revisor's name and last revision date; IMPORTANT:
revision number must not be
specified alongside major.minor release number in 3rd line of language
files since
revisions shares the same text and are meant to deploy between-releases
updates, ie.e for bugfixing or for packaging additional translations or
resources.
3 - translate the text after the
"variable_name: " part in
"=== PeaZip text group ===" AND "=== PeaLauncher text group ==="
sections of the file (don't move or remove lines, don't change the
"variable_name: " part);
4 - optionally, translate the mini-tutorial after "=== about text group
===" line (free editing, it is loaded and displayed "as is" as
application's mini-tutorial); it is very important to improve usability
of the program for non-English speaking users.
In "PeaZip translations" download page, there is a package named
peazip-x.y.about_translations.zip containing a spreadsheet file to help
in creating and maintaining localizations, simply compiling column D of
the spreadsheet.
IMPORTANT: the spreadsheet contains 3 pages, "PeaZip text group",
"PeaLauncher text group", and "About text group": all pages need to be
completed and pasted (column E, for first two pages) in the language
file; the "About text group" can be freely edited.
The spreadsheet shows variable name (column B), corresponding text
string in english (column C) and a blank, yellow column (D) for typing
the translated text strings.
On the right, a column E (blue) will show the "variable_name: " part
assembled with the translated string: the content of this area can be
copied and paste to replace the text in "=== PeaZip text group ===" and
"=== PeaLauncher text group ===" sections (the spreadsheet features TWO
pages, one for each of the two groups).
Lines must be pasted in the original order (it is sufficient to sort
them by column F).
After column F are featured all currently available translations, in
order to help translators more proficient in other languages than
Englis, and to help to spot out what localizations need to be updated.
At each version all language files are mass-updated, with missing text
lines in English; to update a localization, it's enough to update the
English text lines.
For a better result it is also recommended to check all the language
file to see if the update is coherent with linguistic style used by the
translator of the current version.
For languages spoken in different ways in different countries (i.e.
English, Spanish, Portuguese...) it is recommended to fork the
translation, creating i.e. en-us, pt-br etc
PeaZip can load out of order (not optimal for performances) language
files for older or newer versions.
Translated language files
can be sent to me using the address giorgio.tani.software@gmail.com
(don't forget to remove the _removethis_ part), to be evaluated for
inclusion in future updates and publication on peazip-translations
All translated language files should be considered as released under
GFDL, GNU Free Documentation License, as they have to be considered
derivate work from the application's language file which is released
under GFDL.
Default language file is default.txt
Notes
for developers

PeaZip sources are contained in the peazip-*.src.zip package.
PeaZip and PeaZip_portable shares the same sources being PeaZip
installable basically the same portable application packaged into an
installable format: Inno Setup's .exe for Windows, DEB, RPM and TGZ for
Linux.
Compilation, build
and
porting
PeaZip, Pea and PeaLauncher are written in FreePascal (highly
compatible with Delphi and ObjectPascal languages) and require Lazarus IDE to
be compiled; Windows setup
scripts (.iss files) are developed using Inno Setup.
To compile PeaZip binaries open the .lpi file of the desired binary
(i.e. peach.lpi for peazip binary) and select "build all".
FreePascal supports multiple widgetsets (Win32, WinCE, GTK1, GTK2, Qt,
Carbon, fpGUI) to allow compilation of GUI applications for the various
supported systems and to create different “flavours” of the application
for platforms supporting multiple widgetsets (i.e Linux).
PeaZip's sourcecode is cross platform, platform-specific code portions
are contained in conditional compilations blocks.
Deploying the application to other targets than MSWINDOWS and LINUX may
require adaptation of those platform specific areas (and possibly other
fine-tunings); PC-BSD users successfully built PeaZip on *BSD platform.
PeaZip will also need various backend compression and archiving
applications to be reachable in expected directories within the
application's path, please refer to the structure of any of the
precompiled packages, either installable or portable, to see what third
parts binaries must be included, and refer to respective Authors for
ports of those utilities; also read the help file readme.txt in the
source's package for more
hints.
Being PeaZip programmed as frontend/backend application, missing or
unwanted backend binaries can be omitted, at the cost of losing the
ability of handling supported formats; for the same reason, backend
binaries can be freely replaced with 64 bit counterparts or with
updated versions (which will work fine as long as they follow the same
syntax).
PeaZip code should be fairly easy to port on Delphi and other Pascal
dialects; the underlying crypto
library ,
developed and maintained by
Wolfgang Ehrhardt, is explicitly written to be portable to most or all
Pascal dialects, however due to some ASM parts some of its features may
be x86 processor specific.
Some units of the crypto
library uses ASM sections not fully compatible with 64 bit
Lazarus/FPC compiler, but the library provides also pure Pascal
replacement for those units in order to allow compilation in those
environments.
Packages
Testing
PeaZip
free archiver should run on all Windows and Linux systems, in case of
problems please refer to information in Hints sections on Windows, Portable
and Linux
download pages .
The
program is tested on:
- Windows 98SE;
- Windows 2000; Windows XP
- Windows Vista; Windows 7 32 and 64
bit
- various x86 and x86-64 Linux distributions with
GTK2 or Qt,
both for
Gnome and KDE
PEA archive support
in
third parts software
To support Pea file format in your applications you may follow one of
those ways:
- use directly the executable Pea archiving
utility
(LGPL freeware) passing parameters through command line, as in PeaZip;
- use Pea sourcecode as library to call
Pea-related
functions from your code (as in the demo application in "sources"
package);
- create a new implementation following the file
format
specifications, which are released under public domain and, as for what
is known to the author, are free and unencumbered for any use.
|