BlackHole escribió:Pero si no haces un reconociminento exhaustivo del resto de los datos y solo te fijas en una cabecera, es como hacer un pan como unas hostias: no estás validando la integridad de los datos y no compruebas que pudiesen estar corrompidos.
Tienes que hacer un "parser" para todo el fichero, si no, no vale para nada.
Pues tienes razón... lo suyo sería que el plugin calculara él mismo los Data Hash.
De todas formas es sencillo de generar, simplemente saltarse todos los bloques salvo los 10, 11, 14, 19 y 4B, y de estos últimos concatenar sus datos (sin cabeceras de bloque) y por ultimo calcular su hash.
Podeis ver cómo se genera en el tsx.php que tengo en mi repositorio.
Código: Seleccionar todo
//Data info (blocks: 10, 11, 14, ¿19?, 4B)
$data = array();
$data['blocks'] = 0;
$tmp = "";
foreach ($this->blocks as $b) {
switch ($b->getId()) {
case 0x10:
case 0x11:
case 0x14:
case 0x19:
case 0x4B:
$data['blocks']++;
$tmp .= $b->getData();
break;
}
}
$data['crc32'] = hash("crc32b", $tmp);
$data['md5'] = md5($tmp);
$data['sha1'] = sha1($tmp);
$info['data'] = $data;