havanalocobandicoot
11-02-2009, 19:49
Qualche mese fa ho avuto degli errori CRC con un cavetto IDE/USB cinese:
http://www.hwupgrade.it/forum/showthread.php?t=1774279
L'altro giorno scopro un errore anche con un box esterno multimediale (sempre di cineserie si tratta comunque), e ho viste cose che voi umani non potreste immaginarvi. :sofico:
Mi sono accorto che un file copiato dall'hard disk interno a quello esterno (cioè quello nel box) aveva hash diverso rispetto all'origine. Così da un controllo con CDCheck 3.1.13.0 è risultato il seguente errore:
Errore;Confronto dati;Contenuto differente (99% di corrispondenza, prima differenza (B): 380677633, corrispondenza errata (B): 20734/733972480) (codice: 62)
...cioè dice che il primo errore è a 380677633 byte, e complessivamente dura 20734 byte (che potrebbero però anche non essere contigui).
Ciascun file ha dimensione 699.97 MiB (733972480 byte) con una dimensione su disco di 699.97 MiB (733974528 byte).
Essendo un file video, ho voluto vedere a che punto del filmato corrispondesse l'errore. Il filmato dura 1h30'14.040", cioè 5414.04 secondi. Da una proporzione (x : 5414.04 = 380677633 : 733972480) risulta che l'errore dovrebbe essere a 2807.99 secondi circa, cioè a 46'47.99" circa, e dovrebbe durare per circa 0.15" (x : 5414.04 = 20734 : 733972480).
Guardando i filmati in quei punti non sembra esserci alcuna differenza.
Essendo la dimensione dei cluster del disco fisso di 4 KiB, cioè 4096 byte, il file doveva avere (733974528/4096=) 179193 cluster, e infatti Disk Investigator 1.4 conferma:
http://img178.imageshack.us/img178/472/primoclusterei3.th.png (http://img178.imageshack.us/img178/472/primoclusterei3.png)
Il primo cluster con l'errore doveva essere:
179193 * 380677633 / 733974528 = 92938.88
...cioè il numero 92939. E infatti ecco l'errore:
http://img516.imageshack.us/img516/8421/hex39avr9.th.png (http://img516.imageshack.us/img516/8421/hex39avr9.png) http://img516.imageshack.us/img516/6594/hex39bmg1.th.png (http://img516.imageshack.us/img516/6594/hex39bmg1.png)
Assumendo che l'errore sia uno solo, e quindi contiguo, esso dovrebbe durare:
20734 / 4096 = 5.06 cluster.
Infatti ecco come finiscono i rispettivi cluster numero 92944:
http://img516.imageshack.us/img516/9606/hex44amx2.th.png (http://img516.imageshack.us/img516/9606/hex44amx2.png) http://img516.imageshack.us/img516/4711/hex44biv1.th.png (http://img516.imageshack.us/img516/4711/hex44biv1.png)
I cluster da 92945 in poi tornano ad essere uguali.
In definitiva il controller ha quindi scritto 41 00 41 EF al posto di 41 EF ad un certo punto del cluster 92939 (inventandosi quindi questi 2 byte; strano comunque il fatto che ci sia uno 00 e poi una ripetizione del byte precedente), traslando di fatto tutto il contenuto corretto fino alla fine del cluster. Ha continuato a traslare per altri 4 cluster, e, alla fine del numero 92944 avrà forse capito la c**zata che stava facendo :D, e ha preferito saltare 2 byte (13 C2) per poi cominciare a scrivere il cluster numero 92945 in maniera corretta.
In sintesi, 2 byte persi nel nulla, e 2 byte di "nuovi contenuti" che il controller del box mi ha gentilmente fatto dono. Non vorrei essere scortese nei suoi confronti, ma avrei preferito che al posto del "regalo" mi desse quei 2 byte che mi spettavano.
Ma non finisce qua!
Il filmato ha 25 fps. Con l'aiuto di VirtualDub ho estratto i frame (in BMP) che compongono il filmato da 46'47'' a 46'49'' (per stare un attimino "larghi"): 50 frame per ciascun file, e avevano tutti l'hash uguale... Ma non mi sono dato per vinto.
Mi sono allargato ancora e ho estratto i frame da 46' a 48' (3000 frame per file!), la cui comparazione con CDCheck ha dato errore nei frame da 71909 (che tramite VDub ho visto essere corrispondente a 47'56.360") fino a 71987 (corrispondente a 47'59.480": che c*lo! Per poco non sforavo i 48 minuti! :D). Guarda caso, il frame 71987 è un "key frame": strana coincidenza secondo me.
Solo il frame 71910 (cioè il secondo all'interno dell'intervallo 71909-71987), stranamente, non è diverso dall'originale.
Comunque sia, se escludiamo il 71910, ci sono 78 frame contigui con errori (più "un buco" nell'intervallo, costituito dal frame 71910), corrispondenti a poco più di 3 secondi di filmato, il che potrebbe stranizzare, dato che l'ipotesi iniziale era che l'errore doveva durare solo 0.15 secondi. Ma tutto questo (sia il punto d'inizio che la durata dell'errore all'interno del filmato) è molto probabile che dipenda dalla struttura di un file AVI: posizione della parte audio e firma digitale potrebbero essere le cause della discrepanza a cui sono arrivato. Insomma... potremmo dire: "misteri degli AVI". :p
Inoltre, il frame visivamente differente ad occhio è il 71909 (per il quale CDCheck ha dato una corrispondenza del 42%), mentre tutti gli altri sono apparentemente identici, indistinguibili ad occhio (conferma, questa, del fatto che CDCheck ha dato ad essi una corrispondenza del 99%).
A questo punto è d'obbligo aprire il file corrotto e andare a guardare il filmato in quel punto: ebbene, a circa 47'56" sia il flusso video che quello audio scattano un po'. Il file originale è perfettamente fluido.
Che dire... il controller del box l'errore lo ha fatto, e in un certo senso "lo ringrazio" di avermi fatto fare questa esperienza.
http://www.hwupgrade.it/forum/showthread.php?t=1774279
L'altro giorno scopro un errore anche con un box esterno multimediale (sempre di cineserie si tratta comunque), e ho viste cose che voi umani non potreste immaginarvi. :sofico:
Mi sono accorto che un file copiato dall'hard disk interno a quello esterno (cioè quello nel box) aveva hash diverso rispetto all'origine. Così da un controllo con CDCheck 3.1.13.0 è risultato il seguente errore:
Errore;Confronto dati;Contenuto differente (99% di corrispondenza, prima differenza (B): 380677633, corrispondenza errata (B): 20734/733972480) (codice: 62)
...cioè dice che il primo errore è a 380677633 byte, e complessivamente dura 20734 byte (che potrebbero però anche non essere contigui).
Ciascun file ha dimensione 699.97 MiB (733972480 byte) con una dimensione su disco di 699.97 MiB (733974528 byte).
Essendo un file video, ho voluto vedere a che punto del filmato corrispondesse l'errore. Il filmato dura 1h30'14.040", cioè 5414.04 secondi. Da una proporzione (x : 5414.04 = 380677633 : 733972480) risulta che l'errore dovrebbe essere a 2807.99 secondi circa, cioè a 46'47.99" circa, e dovrebbe durare per circa 0.15" (x : 5414.04 = 20734 : 733972480).
Guardando i filmati in quei punti non sembra esserci alcuna differenza.
Essendo la dimensione dei cluster del disco fisso di 4 KiB, cioè 4096 byte, il file doveva avere (733974528/4096=) 179193 cluster, e infatti Disk Investigator 1.4 conferma:
http://img178.imageshack.us/img178/472/primoclusterei3.th.png (http://img178.imageshack.us/img178/472/primoclusterei3.png)
Il primo cluster con l'errore doveva essere:
179193 * 380677633 / 733974528 = 92938.88
...cioè il numero 92939. E infatti ecco l'errore:
http://img516.imageshack.us/img516/8421/hex39avr9.th.png (http://img516.imageshack.us/img516/8421/hex39avr9.png) http://img516.imageshack.us/img516/6594/hex39bmg1.th.png (http://img516.imageshack.us/img516/6594/hex39bmg1.png)
Assumendo che l'errore sia uno solo, e quindi contiguo, esso dovrebbe durare:
20734 / 4096 = 5.06 cluster.
Infatti ecco come finiscono i rispettivi cluster numero 92944:
http://img516.imageshack.us/img516/9606/hex44amx2.th.png (http://img516.imageshack.us/img516/9606/hex44amx2.png) http://img516.imageshack.us/img516/4711/hex44biv1.th.png (http://img516.imageshack.us/img516/4711/hex44biv1.png)
I cluster da 92945 in poi tornano ad essere uguali.
In definitiva il controller ha quindi scritto 41 00 41 EF al posto di 41 EF ad un certo punto del cluster 92939 (inventandosi quindi questi 2 byte; strano comunque il fatto che ci sia uno 00 e poi una ripetizione del byte precedente), traslando di fatto tutto il contenuto corretto fino alla fine del cluster. Ha continuato a traslare per altri 4 cluster, e, alla fine del numero 92944 avrà forse capito la c**zata che stava facendo :D, e ha preferito saltare 2 byte (13 C2) per poi cominciare a scrivere il cluster numero 92945 in maniera corretta.
In sintesi, 2 byte persi nel nulla, e 2 byte di "nuovi contenuti" che il controller del box mi ha gentilmente fatto dono. Non vorrei essere scortese nei suoi confronti, ma avrei preferito che al posto del "regalo" mi desse quei 2 byte che mi spettavano.
Ma non finisce qua!
Il filmato ha 25 fps. Con l'aiuto di VirtualDub ho estratto i frame (in BMP) che compongono il filmato da 46'47'' a 46'49'' (per stare un attimino "larghi"): 50 frame per ciascun file, e avevano tutti l'hash uguale... Ma non mi sono dato per vinto.
Mi sono allargato ancora e ho estratto i frame da 46' a 48' (3000 frame per file!), la cui comparazione con CDCheck ha dato errore nei frame da 71909 (che tramite VDub ho visto essere corrispondente a 47'56.360") fino a 71987 (corrispondente a 47'59.480": che c*lo! Per poco non sforavo i 48 minuti! :D). Guarda caso, il frame 71987 è un "key frame": strana coincidenza secondo me.
Solo il frame 71910 (cioè il secondo all'interno dell'intervallo 71909-71987), stranamente, non è diverso dall'originale.
Comunque sia, se escludiamo il 71910, ci sono 78 frame contigui con errori (più "un buco" nell'intervallo, costituito dal frame 71910), corrispondenti a poco più di 3 secondi di filmato, il che potrebbe stranizzare, dato che l'ipotesi iniziale era che l'errore doveva durare solo 0.15 secondi. Ma tutto questo (sia il punto d'inizio che la durata dell'errore all'interno del filmato) è molto probabile che dipenda dalla struttura di un file AVI: posizione della parte audio e firma digitale potrebbero essere le cause della discrepanza a cui sono arrivato. Insomma... potremmo dire: "misteri degli AVI". :p
Inoltre, il frame visivamente differente ad occhio è il 71909 (per il quale CDCheck ha dato una corrispondenza del 42%), mentre tutti gli altri sono apparentemente identici, indistinguibili ad occhio (conferma, questa, del fatto che CDCheck ha dato ad essi una corrispondenza del 99%).
A questo punto è d'obbligo aprire il file corrotto e andare a guardare il filmato in quel punto: ebbene, a circa 47'56" sia il flusso video che quello audio scattano un po'. Il file originale è perfettamente fluido.
Che dire... il controller del box l'errore lo ha fatto, e in un certo senso "lo ringrazio" di avermi fatto fare questa esperienza.