jpezzi <[email protected]> added the comment:

Here's the Netgem binary from their latest firmware.

http://www.megaupload.com/?d=ZIS4JYKS

Decoder code:

#include <stdio.h>

unsigned long DataDecode ( unsigned long k, unsigned char *data, int len )
{
 unsigned long newk;
 unsigned int c;

 newk=k;

 for ( c=0 ; c<len ; c++ )
 { newk = (newk*0x41c64e71)+1;
   data[c] = data[c]^((newk>>16)&0xff);
 }

 return newk;
}

void extract_data ( char *fname, unsigned long offset, unsigned long len )
{
 unsigned char buf[1024];
 FILE* fp_in, * fp_out;
 int k = 0;

 fp_in  = fopen( "upgrade.bin","rb" );
 fp_out = fopen( fname, "wb" );

 if ( !fp_in || !fp_out )
     { printf("Failed to open upgrade.bin for decoding.\n");
       return;
     }

 fseek( fp_in, offset, SEEK_SET );

 while ( len )
 { int block_len;

   block_len = len>sizeof(buf) ? sizeof(buf) : len;
   block_len = fread( buf, 1, block_len, fp_in );
   if ( block_len == 0 )
       break;
   k = DataDecode( k, buf, block_len );
   fwrite( buf, 1, block_len, fp_out );
   len -= block_len;
 }

 fclose( fp_in );
 fclose( fp_out );
}

int main()
{
extract_data("part_partition.img", 0x000620, 0x6A); // partition table
 extract_data("part_upgrade.img",   0x000686, 0x51B80); //upgrade
 extract_data("part_ngu.img",       0x052206, 0x40); // ngu
 extract_data("part_firmware.img",  0x052246, 0x44F64); // firmware
 // Blank of 12 bytes (padding ??)
 extract_data("part_elf.img",       0x08F9B6, 0x4710);
 extract_data("part_usr.img",       0x0940c6, 0x57FC00); //minixfs 1
 extract_data("part_bios.img",      0x6140c6, 0x40000);
 extract_data("part_root.img",      0x6540c6, 0x67FC00); //minixfs 2


 return( 0 );
}

----------
assignedto:  -> cehoyos
nosy: +cehoyos

____________________________________________________
FFmpeg issue tracker <[email protected]>
<https://roundup.ffmpeg.org/roundup/ffmpeg/issue678>
____________________________________________________

Reply via email to