Menu

Corrupted 7z archive

Help
2013-03-13
2022-06-18
1 2 3 4 > >> (Page 1 of 4)
  • microsample

    microsample - 2013-03-13

    Hi! I have (1 year old) 7z arhive.
    Someday, when i'm tried to open it, 7zip sayd: "Can not open the file as 7z archive".
    This archive is important to me and i don't have any backup.
    As far as I remember, it is arhive with LZMA Ultra. I tried about hundred recovery porgrams but no result, and most of them doesn't support 7z.
    My arhive have the same size (before and after corrupting), ~460 mb. All file archivers (WinAce, WinRAR,WinZip,KGB Archiver,PeaZip,FreeArc, Linux archivers etc) can't open it.
    It is possible to recover it, maybe partly?
    Sorry for my English.

     
  • Igor Pavlov

    Igor Pavlov - 2013-03-13

    Show
    1) exact size of archive.
    2) first 48 bytes in hex.
    3) last 96 bytes in hex.

     
  • microsample

    microsample - 2013-03-13

    1)Size: 481 990 031 bytes

    2)first 48 bytes:

    37 7A BC AF 27 1C 00 03 6C 92 CE F2 49 95 BA 1C
    00 00 00 00 26 00 00 00 00 00 00 00 78 F1 EE 0E
    00 28 12 BC 60 28 97 D5 5D 3A 50 4E 2E 80 52 D3

    3)last 96 bytes:

    97 3B A4 2D 51 B6 2A 3C 65 6E 91 EB BD EB F2 A3
    9A 67 87 26 90 70 E9 2C 76 97 0F DA FF A2 AB 34
    45 02 87 85 C5 64 52 E7 29 E6 43 7A 28 F2 65

     
  • Igor Pavlov

    Igor Pavlov - 2013-03-13

    List of files probably is corrupted.
    You can try to extract RAW data.

    1) split bad.7z to
    - bad.7z.001 - 32 bytes
    - bad.7z.002 - remainder. (481990031 - 32 bytes) in your case

    2) You must get some file "RAW" that is larger than total size of files in bad.7z.
    Select RAW file in 7-Zip and press "Add" button to create a.7z archive with LZMA method (not LZMA2) and Ultra level
    (dictionary size must be equal or larger than dictionary size that was used to create bad.7z).
    a.7z also must be larger than bad.7z

    3) split a.7z to
    - a.7z.001 - 32 bytes
    - a.7z.002 - (481990031 - 32 bytes)
    - a.7z.003 - remainder

    4) delete a.7z.002 and rename bad.7z.002 to a.7z.002.

    5) try to extract from a.7z.001 to another folder

    you will get RAW.
    that file contains original files combined to one file.
    If you had many files in corrupted bad.7z, you must find some program that will parse the data in RAW file to extract files using known file type signatures.

     

    Last edit: Igor Pavlov 2013-03-14
    • Nic

      Nic - 2013-08-10

      Hi!
      I have some troubles with a7z archive also.
      Method: PPMD:o16:mem26

      I have adapted your method by using PPMD in creating RAW file by archiving bad.7z.002. (the new archive is o16:mem24; did not succeeded to create o16:mem26).
      In step 5 it is retuning BAD CRC.

      Would you be so kind to advise what do I have to do for PPMD method?
      Thank you!
      Nic

       
      • Igor Pavlov

        Igor Pavlov - 2013-08-10

        You must use same options.
        Create "PPMD:o16:mem26" archive.
        RAW file must be larger than 16 MB.

         
        • Nic

          Nic - 2013-08-12

          Thank you! With your help I managed to get something out of the corrupted archive.
          My archive is containing many text files. Most of them are recovered (especially in the beginning). The last ones are lost (random errors here and there, in the end messed everything).

          I took a good archive and I followed step 1-5. Still, in the end of the recovered raw I get many errors (same like with the corrupted one).
          I thought is an issue with RAW file. I tried with a text one (created manually) and then I tried with another binary one (random picked from HDD). Same result.

          I get 2 errors, both with corrupted archive and good archive:
          0 Path to the archive\raw.7z.001
          1 Data error in 'raw'. File is broken.

          Still I have the feeling that I am missing something.
          Please advise me what can I do more.
          Thank you in advance!

           
  • microsample

    microsample - 2013-03-13

    Thanks for answer.
    How can i split my archive?
    Does any file splitter can do that or i need special splitter?

    Здесь не запрещено по русски писать?

     

    Last edit: microsample 2013-03-13
  • Igor Pavlov

    Igor Pavlov - 2013-03-13

    7-zip can split files.

     
  • Igor Pavlov

    Igor Pavlov - 2013-03-14

    I've changed the message with recovering instruction.

     
  • Starter

    Starter - 2013-03-14

    Hi, I have a similar problem with my 7z. No recovery tool can read from it. My file size is 3.57 GB (3,835,691,008 bytes). I found 7z source code, and ran it on my machine, and found that for this file, in InArchive.java, method ReadDatabase, crcFromArchive, nextHeaderOffset, and so on are all 0.

    Can you please tell me how to find out the hex notations for the first 48 and last 96 bytes?

     
  • Igor Pavlov

    Igor Pavlov - 2013-03-14

    You can find info about 7z format in source code in DOCS folder.

    Show first and last bytes in hex. So it will be simpler to detect type of corruption.

     
  • Starter

    Starter - 2013-03-14

    1) file size: 3,835,691,008 bytes

    2) first 48 bytes in hex

    37 7A BC AF 27 1C 00 03 00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    00 28 12 BC 60 28 97 D5 5D 3A 4F E9 08 37 E7 6C

    3) last 96 bytes

    C5 73 C5 70 64 EC D8 6A D4 A9 9C 13 95 8D A9 5C
    5A 27 63 37 2A CD A3 61 50 76 F3 8F D5 46 85 60
    94 32 A9 43 2F 65 C4 14 E1 4A 1A 84 81 47 52 BE
    B2 F3 D2 E4 09 0C CE 8D F6 C2 6C 74 4E EC FB 2E
    8B BF 9F E4 8E A2 44 AA F7 F3 71 E1 49 43 C1 A7
    4F 09 D7 9C 77 CD 61 A4 15 87 EF 7D 55 22 87 87

     
  • Starter

    Starter - 2013-03-14

    Sorry, but how do I split the archive into 2 volumes -- 1 vol of 32 bytes and other vol of remaining archive size. If I enter 32 in the split window, it seems it will create a lot of volumes of 32 bytes each (archive_size/32bytes=no. of volumes)

     
  • Igor Pavlov

    Igor Pavlov - 2013-03-14

    Use spaces to specify volume sizes in split window:
    32 4G

     
  • Starter

    Starter - 2013-03-14

    I zipped a ~4.4G file for a.7z. After step 5, the bad.7z was 1.95 GB (2,100,392,180 bytes) much less that the original 3.57 GB (3,835,691,008 bytes). Is that due to the removal of the corrupted bytes?

    Also, my bad.7z contained lots of folders and different types of files, eg. .jpg, .avi etc. Are there parsers that can parse different file types?

    PS. At the end of step 5, for all files being extracted including bad.7z, the diagnostic reports, '<filename> is broken'. Is that expected?

     
  • Igor Pavlov

    Igor Pavlov - 2013-03-14

    1) Probably solid block size was about 2 GB.
    Then it started another solid block. But recovered archive doesn't contain information about exact solid block range.
    That information is stored at the end of archive (it's broken part in your case).

    It's possible to detect exact solid block range. But now there are no programs that can do it. Maybe I'll develop something in future. It's not so simple. So keep your broken archive. Maybe it will be simpler to recover it in future.

    2) I don't know any parsers now.

    3) after step 5 you must have only one file (RAW).
    And "is broken" message is expected.

     
  • Starter

    Starter - 2013-03-15
    1. For z.7z I chose a folder of size ~4.4G. It has many files in it.
    2. Then I replaced a.7z.002 with bad.7z.002.
    3. After step 5, do we expect only 1 file or some of the files of a.7z also will be extracted?
     
  • Igor Pavlov

    Igor Pavlov - 2013-03-15
    1. You must use one big file "RAW" instead of set of files.
    2. After step 5 you will have only one "RAW" file.

    Actually you must use headers from new (good) archive that contains onle one RAW file and the data from "bad" archive.

     
  • Starter

    Starter - 2013-03-15
    1. Observation: For my update above, I observed that
      i. bad.7z at step 5 is 2G (something you relate to the solid block range)
      ii. if I open the bad.7z in 7z archive, it actually reads 4 files of total size 14M
      iii. I was able to extract these 4 files without the need of any parser

    Does this observation tell you anything so that you can give instructions to get some more files without the need to find a parser program that can extract files based on identifiable signatures?

    1. Perhaps not the correct question to ask here, but since the files are all very important to me: how do I get one single file of ~4G without the help of audio/video/graphic files?
     
  • Igor Pavlov

    Igor Pavlov - 2013-03-15

    You are in wrong way.
    There is no bad.7z in step 5.
    a.7z must contain only one file. We use name "RAW" for that file. In step 5 you extract one "RAW" file from a.7z.001

    You can use any BIG file as RAW file. For example, you can use AVI file. There are only two conditions:
    1) RAW file must be larger than total size of original files that were used to create bad.7z
    2) a.7z after compression must be larger than bad.7z

     
  • Starter

    Starter - 2013-03-19

    I found a program that uses FileOutputStream to create a file and insert random data into it to create a 4G file. Now I have one file 'RAW' at step 5.

    At step 5, does RAW contain data in binary format? I mean do I have to search for parsers that can parse binary format files (jpeg and avi formats in my case)?

     

    Last edit: Starter 2013-03-19
  • Igor Pavlov

    Igor Pavlov - 2013-03-19

    Yes.
    Please write here about these parsers, if you can find some good parser program.

     
  • Starter

    Starter - 2013-03-19

    The bad.7z had jpg file and others. In my following update when I was following your instructions incorrectly, I was able to retrieve 4 of those jpg files (https://sourceforge.net/p/sevenzip/discussion/45798/thread/e34b4a1d/#6dbc). All of them start with the jpg hex notation of "FF D8 FF E1" and they end with 'FF D9". But the 'RAW' file at step 5 doesn't have even one occurrence of FF D8 FF E1.
    1. Your comments would be of value here.
    2. Is it possible that since out of a potential 3.57G bad.7z file, since only ~2G is being extracted, it's only partial data and hence cannot be parsed?

     
1 2 3 4 > >> (Page 1 of 4)

Log in to post a comment.