Results 1 to 21 of 21

Thread: 7-zip plugins

  1. #1
    Member
    Join Date
    May 2008
    Location
    Kuwait
    Posts
    353
    Thanks
    37
    Thanked 38 Times in 23 Posts

    7-zip plugins

    This is a main thread for all 7-zip addons and plugins

    Proxy7z: https://www.tc4shell.com/en/7zip/proxy7z/
    Allow other products using 7zip dll extractor to extend extraction to below shown plugins (like extrating file compressed with mfilter..etc)

    7-Zip-FL2: https://github.com/conor42/7-Zip-FL2
    7-Zip using the Fast LZMA2 library

    Asar7z: http://www.tc4shell.com/en/7zip/asar/

    This plugin allows you to open, create, or modify ASAR archives (used for packaging applications based on the Electron framework).

    eDecoder: http://www.tc4shell.com/en/7zip/edecoder/

    This plugin allows you to open following email files and MHTML files in 7-Zip:

    MGS – a format used by Microsoft Outlook
    TNEF – a format used by Microsoft Outlook (the winmail.dat or ATT0001.dat file)
    DBX – the format used by Outlook Express 5 and 6
    MBX – the format used by Outlook Express 4
    MBOX – a format used by many email clients
    TBB – the format used by The Bat!
    PMM – the format used by Pegasus Mail
    EMLX – the format used by Mail (Apple’s email client)
    EML, NWS, MHT, MHTML, and B64
    UUE and XXE
    NTX – YEnc files
    BIN – MacBinary files
    HQX – BinHex files
    WARC – Web ARChive files

    It also can create B64, XXE, UUE, NTX, BIN, and HQX files.

    The plugin also contains eSplitter. It's a special codec that helps 7-Zip pack text files containing binary data encoded using base64.

    ExFat7z http://www.tc4shell.com/en/7zip/exfat7z/
    open ExFat disk images and extract files from.

    fast-lzma2: https://github.com/conor42/fast-lzma2
    adds Fast LZMA2 math finder to 7-zip.


    Forensic7z: http://www.tc4shell.com/en/7zip/forensic7z/

    This plugin allows you to open and browse the following disk images created by specialized software for forensic analysis:

    ASR Expert Witness Compression Format (.S01)
    Encase Image File Format (.E01, .Ex01)
    Encase Logical Image File Format (.L01, .Lx01)
    Advanced Forensics Format (.AFF)
    AccessData FTK Imager Logical Image (.AD1)

    Grit7z: http://www.tc4shell.com/en/7zip/grit7z/

    This plugin allows you to open, create, or modify PAK archives (used in Chrome or Chromium-based browsers):

    Iso7z:http://www.tc4shell.com/en/7zip/iso7z/

    This plugin allows you to open the following additional disc images formats in 7-Zip:

    CCD/IMG - disc images created with CloneCD
    CDI - disc images created with DiscJuggler
    CHD (v4) - images used by MAME
    CSO
    CUE/BIN
    ECM - disc images compressed with ECM Tool
    GDI - Dreamcast Gigabyte disc images
    ISZ - disc images created with UltraISO
    MDS/MDF - disc images created with Alcohol 120%
    NRG - disc images created with Nero Burning ROM
    Zisofs compressed files

    The plugin also contains a special codec RawSplitter that enables 7-Zip to efficiently pack uncompressed raw disc images (CCD/IMG, CDI, CUE/BIN, GDI, MDS/MDF, or NRG) into 7z archives

    Lzip7z: http://www.tc4shell.com/en/7zip/lzip/

    This plugin allows you to open, create, or modify LZIP archives (used on Unix-like systems based on http://www.nongnu.org/lzip/lzip.html).

    Modern7z:http://www.tc4shell.com/en/7zip/modern7z/

    This plugin allows you to use the following additional compression methods in 7-Zip:

    Zstandard v1.4.2
    Brotli v1.0.4
    LZ4 v1.9.1
    LZ5 v1.5
    Lizard v1.0
    Fast LZMA2 v0.9.2

    7-zip Zstd: https://github.com/mcmilk/7-Zip-zstd

    Adds support to other compression methods to 7-Zip with support for Brotli, Fast-LZMA2, Lizard, LZ4, LZ5 and Zstandard.

    Mfilter: http://www.tc4shell.com/en/7zip/mfilter/

    Filter plugin designed to deliver higher compression ratios to certain multimedia file types by means of automatic pre-processing

    Smart 7z: http://www.tc4shell.com/en/7zip/smart7z/

    This plugin provides flexible settings when packing files into a .7z archive

    Thumbs7z: http://www.tc4shell.com/en/7zip/thumbs7z/

    This plugin allows you to open Thumbs.db and thumbcache.db files (Windows thumbnail cache files) in 7-Zip.

    Wavpack7z: http://www.tc4shell.com/en/7zip/wavpack7z/

    This plugin allows you to use additional compression method WavPack in 7-Zip:

    .wav (including bwf/rf64 and Multiple Data Chunks (Legasy Audition Format) formats)
    .caf (Core Audio Format)
    .w64 (Sony Wave64)
    .dff (Philips DSDIFF)
    .dsf (Sony DSD stream)
    .aif, .afc (Аudio Interchange File Format, including AIFF-C format)

    Wincrypthashers: http://www.tc4shell.com/en/7zip/wincrypthashers/

    This plugin allows you to view additional checksums in 7-Zip:
    MD2
    MD4
    MD5
    SHA-384
    SHA-512

    It can also create text files containing checksums.

    Old Plugins:

    LZMH: New compression method from Igor Pavlov https://encode.su/threads/1117-LZHAM...ll=1#post22513

    LZHAM
    : New compression method at https://github.com/richgel999/lzham_codec_devel



    Optimizers:

    7-ZIP finetuner : http://krzyrio.blogspot.com/2017/01/...finetuner.html
    optimize 7z to smaller size

    Ultra7z Optimizer: http://www.ultra7z.ru/
    Optimize and convert your 7z (rar, zip…) in smaller 7z archives!


    http://www.tc4shell.com/en/7zip/

    Test files:


    7zmethods
    : https://encode.su/threads/15-7-Zip?p...ll=1#post11695

    7z file with files compressed in different method in one file.


    Other Developments:

    Ecozip: based on 7-zip with additional compression methods https://github.com/StephanBusch/EcoZip
    Last edited by maadjordan; 2nd July 2020 at 18:18.

  2. Thanks (5):

    Bulat Ziganshin (14th September 2019),Cyan (17th August 2019),dado023 (16th August 2019),sathex (22nd August 2019),snowcat (19th September 2019)

  3. #2
    Member
    Join Date
    May 2008
    Location
    Kuwait
    Posts
    353
    Thanks
    37
    Thanked 38 Times in 23 Posts
    New Plugin Added: ExFat7z

  4. #3
    Member
    Join Date
    Apr 2019
    Location
    uk
    Posts
    3
    Thanks
    0
    Thanked 0 Times in 0 Posts
    Does anyone have some kind of quick manual or "doc" how to make simple plugin for (p)7zip?
    tc4shell made it really well but it's all binary, if one wants to made their own there is lack of any kind of info about that, even on 7zip page/discussion. Author doesn't bother either.

  5. #4
    Administrator Shelwien's Avatar
    Join Date
    May 2008
    Location
    Kharkov, Ukraine
    Posts
    3,946
    Thanks
    294
    Thanked 1,286 Times in 728 Posts
    If you can build 7-zip itself, it shouldn't be a problem to build a plugin, since they're all in separately compiled modules.
    You can just use existing ones as example, eg. see
    https://github.com/kornelski/7z/blob...ndler.cpp#L470 (a whole new archive format)
    https://github.com/kornelski/7z/blob...mdRegister.cpp (a codec for .7z)
    Basically compile it with DllExports.cpp and put into Codecs subdir.

  6. Thanks:

    kaitz (20th January 2020)

  7. #5
    Member
    Join Date
    Apr 2019
    Location
    uk
    Posts
    3
    Thanks
    0
    Thanked 0 Times in 0 Posts
    I understand now. Will check it. Thanks.

    ed: do you mean $p7zip/CPP/Archive/DllExports2.cpp ? And what will be different in linux (p7zip)?

  8. #6
    Administrator Shelwien's Avatar
    Join Date
    May 2008
    Location
    Kharkov, Ukraine
    Posts
    3,946
    Thanks
    294
    Thanked 1,286 Times in 728 Posts
    p7zip even has an example, a standalone dynamic library for rar format:
    https://github.com/tehmul/p7zip-zstd.../makefile.list

    > do you mean $p7zip/CPP/Archive/DllExports2.cpp ?

    Here's an example for windows: https://github.com/conor42/7-Zip-FL2...lzma2/makefile

  9. #7
    Member
    Join Date
    Apr 2019
    Location
    uk
    Posts
    3
    Thanks
    0
    Thanked 0 Times in 0 Posts
    Thanks for those links, they were invaluable.

    I found that unlike main/official 7zip release mcmilk-7zip-zstd do have few codecs made as plugins which is really cool but still don't understand it. I analyzed codecs source and my discoveries are like that: Codec.def provides symbols* that are to be exported in .so/.dll but I checked all released codecs sources** and they are not defined anywhere*** which perplexes me.

    So first what is the meaning of these methods*? Is that all symbols I need to provide for export to make it work and how do I change existing archive codec, for example `$_7ZIP_SRC/CPP/7zip/Archive/`LzHandler.cpp or .../Bzip2Handler.cpp, whatever? The simpler the better.

    I just noticed, that for lizard, for example, there is either plugin and archive codec definitions****. Is that redundancy or is it really a dynamic plugin or it is embedded archive codec?


    ------------------------------------

    * Codec.def: CreateDecoder, CreateEncoder, CreateObject, GetMethodProperty, GetNumberOfMethods

    ** brotli, flzma, lizard, zstd

    *** `$ find $_7ZIP_SRC -iname lizard\* -exec grep CreateEncoder {} ";"`
    gives nothing

    **** archive codecs are wired/embedded into 7zip and cannot be dynamically added/removed
    their exports are defined in `$_7ZIP_SRC/CPP/7zip/Archive/`Archive.def or .../Archive2.def.

  10. #8
    Administrator Shelwien's Avatar
    Join Date
    May 2008
    Location
    Kharkov, Ukraine
    Posts
    3,946
    Thanks
    294
    Thanked 1,286 Times in 728 Posts
    > I analyzed codecs source and my discoveries are like that: Codec.def provides symbols*
    > that are to be exported in .so/.dll but I checked all released codecs sources** and
    > they are not defined anywhere*** which perplexes me.

    Exported symbols are always only in *Export*.cpp

    7-zip plugin system works like this:
    1) There're macros (REGISTER_CODEC_E etc), which define global tables as codec/format descriptors.
    These tables are defined with some global function calls for init.
    So they can be defined in different independently-compiled object modules,
    but a single function would be called as "initializer" to enumerate them.
    2) There's always the same COM-like interface.
    3) Overall framework design and APIs are similar to https://en.wikipedia.org/wiki/DirectShow#Architecture

    > So first what is the meaning of these methods*?

    It doesn't really matter for you.
    Just take some simple codec (eg. CopyCoder.cpp) and modify the Code() method
    to do something different.
    Also, in theory, each codec is supposed to have an unique name and binary id,
    these are shown by "7z i":
    Code:
    REGISTER_FILTER_E(BCJ, CCoder(false), CCoder(true), 0x3030103, "BCJ" )
    > I just noticed, that for lizard, for example, there is either plugin and archive codec definitions****.
    > Is that redundancy or is it really a dynamic plugin or it is embedded archive codec?

    Standard 7-zip does the same for .pmd and .lzma formats.
    Codec objects in 7-zip are basically extra codecs for 7-zip format,
    while format objects (defined with REGISTER_ARC_I) don't necessarily have
    to export their codecs for .7z use (and its more efficient to use codecs directly
    rather than with 7z's GUID-based COM API).

    > *** `$ find $_7ZIP_SRC -iname lizard\* -exec grep CreateEncoder {} ";"`
    > gives nothing

    Its defined in CodecExports.cpp

    > **** archive codecs are wired/embedded into 7zip and cannot be dynamically added/removed
    > their exports are defined in `$_7ZIP_SRC/CPP/7zip/Archive/`Archive.def or .../Archive2.def.

    Not really. Just not add an .obj with format or codec descriptor table and
    7-zip won't support this format or codec.

  11. #9
    Member
    Join Date
    May 2008
    Location
    Kuwait
    Posts
    353
    Thanks
    37
    Thanked 38 Times in 23 Posts
    Iso7z support for bin files are limited to 4gb .. larger files are cut to 4gb limit even if using 64bit dll module.

  12. #10
    Administrator Shelwien's Avatar
    Join Date
    May 2008
    Location
    Kharkov, Ukraine
    Posts
    3,946
    Thanks
    294
    Thanked 1,286 Times in 728 Posts
    > Iso7z support for bin files are limited to 4gb

    That could be because 7z's default solid mode has 4g blocks.
    Try adding -ms=1t or something.

  13. #11
    Member
    Join Date
    Aug 2016
    Location
    Russia
    Posts
    108
    Thanks
    6
    Thanked 70 Times in 37 Posts
    Quote Originally Posted by maadjordan View Post
    Iso7z support for bin files are limited to 4gb .. larger files are cut to 4gb limit even if using 64bit dll module.
    Is there a way to get a sample of such file to debug?

  14. #12
    Member
    Join Date
    May 2008
    Location
    Kuwait
    Posts
    353
    Thanks
    37
    Thanked 38 Times in 23 Posts
    Quote Originally Posted by Aniskin View Post
    Is there a way to get a sample of such file to debug?
    check your inbox

  15. #13
    Member
    Join Date
    May 2008
    Location
    Kuwait
    Posts
    353
    Thanks
    37
    Thanked 38 Times in 23 Posts
    Quote Originally Posted by Shelwien View Post
    > Iso7z support for bin files are limited to 4gb

    That could be because 7z's default solid mode has 4g blocks.
    Try adding -ms=1t or something.
    I will try this and post result

  16. #14
    Member
    Join Date
    Aug 2016
    Location
    Russia
    Posts
    108
    Thanks
    6
    Thanked 70 Times in 37 Posts
    Quote Originally Posted by maadjordan View Post
    Iso7z support for bin files are limited to 4gb
    Fixed.

  17. #15
    Member
    Join Date
    May 2008
    Location
    Kuwait
    Posts
    353
    Thanks
    37
    Thanked 38 Times in 23 Posts
    Quote Originally Posted by Aniskin View Post
    Fixed.
    Checked for size is working fine but getting unpack error.. I tried through "bin" file and through "Cue" file.

    I will restart my system and try again.

    What is the new maximum size limit?

  18. #16
    Member
    Join Date
    Aug 2016
    Location
    Russia
    Posts
    108
    Thanks
    6
    Thanked 70 Times in 37 Posts
    Quote Originally Posted by maadjordan View Post
    Checked for size is working fine but getting unpack error.
    Fixed. Thanks for bug report.

    But there is no difference between disc1.bin and extracted disc1.iso for the sample you provided because the image was created with using of "2048 bytes per sector" mode.

  19. #17
    Member
    Join Date
    May 2008
    Location
    Kuwait
    Posts
    353
    Thanks
    37
    Thanked 38 Times in 23 Posts
    Quote Originally Posted by Aniskin View Post
    Fixed. Thanks for bug report.

    But there is no difference between disc1.bin and extracted disc1.iso for the sample you provided because the image was created with using of "2048 bytes per sector" mode.
    I think the file was the problem. after testing many programs for bin2iso and last using Isobuster managed to convert to iso but after comparing both bin and iso files was found identical. just rename the bin file as iso and extractng worked fine

  20. #18
    Member
    Join Date
    May 2008
    Location
    Kuwait
    Posts
    353
    Thanks
    37
    Thanked 38 Times in 23 Posts
    Is there away to let mfilter handle "xor" files. The sample iso has CNG files that are XORed jpg.. I could not find away to guest if data streams are Xor'ed or not.

    http://www.subdude-site.com/WebPages...2jpg_guide.htm

  21. #19
    Administrator Shelwien's Avatar
    Join Date
    May 2008
    Location
    Kharkov, Ukraine
    Posts
    3,946
    Thanks
    294
    Thanked 1,286 Times in 728 Posts
    I suppose you can try looking for "10 37 10 0F" signatures. (Which is FF D8 FF E0 xor EF =239)
    But isn't it simpler to make a standalone converter for this, rather than modify mfilter?

  22. #20
    Member
    Join Date
    Aug 2016
    Location
    Russia
    Posts
    108
    Thanks
    6
    Thanked 70 Times in 37 Posts
    Quote Originally Posted by maadjordan View Post
    Is there away to let mfilter handle "xor" files.
    Maybe later.

  23. #21
    Member
    Join Date
    May 2008
    Location
    Kuwait
    Posts
    353
    Thanks
    37
    Thanked 38 Times in 23 Posts
    Quote Originally Posted by Shelwien View Post
    I suppose you can try looking for "10 37 10 0F" signatures. (Which is FF D8 FF E0 xor EF =239)
    But isn't it simpler to make a standalone converter for this, rather than modify mfilter?
    many standalone converters has already existing but adding such trick to compressor would improve compression for special algorithms like mfilter. Base64 is standard and can be added directly as usually are stored as blocks.

    I found these tools https://github.com/hiddenillusion/NoMoreXOR and https://github.com/hellman/xortool which can used to analysis data either as file or stream before sending to compressor.

  24. Thanks:

    schnaader (7th July 2020)

Similar Threads

  1. 7-zip 19
    By avitar in forum Data Compression
    Replies: 0
    Last Post: 22nd February 2019, 13:06
  2. Replies: 3
    Last Post: 8th July 2008, 15:55
  3. 7-zip
    By squxe in forum Forum Archive
    Replies: 19
    Last Post: 9th April 2008, 22:26
  4. QuickLZ ZIP - new zip/deflate library
    By Lasse Reinhold in forum Forum Archive
    Replies: 23
    Last Post: 1st October 2007, 22:08
  5. 7-zip 4.53
    By squxe in forum Forum Archive
    Replies: 5
    Last Post: 28th August 2007, 03:37

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •