Domanda

Il metodo più comune per corrompere i file compressi è eseguire inavvertitamente un trasferimento FTP in modalità ASCII, che provoca un'eliminazione molti a uno dei caratteri CR e/o LF.

Ovviamente si verifica una perdita di informazioni e il modo migliore per risolvere questo problema è effettuare nuovamente il trasferimento, in modalità binaria FTP.

Tuttavia, se l'originale viene perso ed è importante, quanto sono recuperabili i dati?

[In realtà, so già quale penso sia la risposta migliore (è molto difficile ma a volte possibile - ne pubblicherò altre in seguito) e le comuni non risposte (molti programmi standard per riparare CRC senza riparare i dati ), ma ho pensato che sarebbe stato interessante provare questa domanda durante il periodo beta di StackOverflow e vedere se qualcun altro ha seguito il percorso di ripristino riuscito o ha scoperto strumenti di cui non sono a conoscenza.]

È stato utile?

Soluzione

Da Software Buky

Circa 1 su 256 byte è noto per essere corrotto e si sa che la corruzione si verifica solo in byte con il valore ' 012'.Quindi il tasso di errore di byte è 1/256 (0,39% dell'input) e 2/256 byte (0,78% di input) sono sospetti.Ma poiché sono interessati solo tre bit per byte distrutto, il tasso di errore del bit è solo 3/(256*8):Lo 0,15% è cattivo, lo 0,29% è sospetto.

...

Un errore nell'input compresso interrompe il processo di decompressione per tutti i byte successivi ... il fatto che l'output decompresso sia riconoscibilmente grave così rapidamente è motivo di speranza: una ricerca della risposta corretta può identificare rapidamente risposte errate.

Alla fine, diverse tecniche sono state combinate per estrarre con successo dati ragionevoli da questi file:

  • Analisi specifica del dominio di campi e stringhe tra virgolette
  • Apprendimento automatico da dati precedenti con bassa probabilità di danno
  • Tolleranza per danni ai file dovuti ad altre cause (ad es.disco pieno durante la registrazione)
  • Lookahead per guidare la ricerca lungo i percorsi a più alta probabilità

Queste tecniche identificano il 75% delle riparazioni necessarie con certezza e il resto viene esplorato la massima probabilità, in modo che le ricostruzioni plausibili vengano identificate immediatamente.

Altri suggerimenti

Potresti provare a scrivere un piccolo script per sostituire tutti i CR con CRLF (supponendo che la direzione del cestino fosse da CRLF a CR), scambiandoli casualmente per blocco finché non hai ottenuto il crc corretto.Supponendo che i dati non fossero particolarmente grandi, immagino che potrebbe non utilizzare tutta la CPU fino al completamento della morte termica dell'universo.

Poiché vi è una chiara perdita di informazioni, non so che esista un modo migliore.La perdita nella direzione da CR a CRLF potrebbe essere leggermente più semplice da ripristinare.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top