示例#1
0
文件: file_gz.c 项目: mqudsi/testdisk
static void register_header_check_gz(file_stat_t *file_stat)
{
  register_header_check(0, gz_header_magic,sizeof(gz_header_magic), &header_check_gz, file_stat);
}
示例#2
0
static void register_header_check_mrw(file_stat_t *file_stat)
{
  static const unsigned char mrw_header[4]= { 0x00,'M','R','M'}; /* Minolta Raw */
  register_header_check(0, mrw_header,sizeof(mrw_header), &header_check_mrw, file_stat);
}
示例#3
0
static void register_header_check_dex(file_stat_t *file_stat)
{
  static const unsigned char dex_header[4]= {'d','e','x','\n'};
  register_header_check(0, dex_header,sizeof(dex_header), &header_check_dex, file_stat);
}
示例#4
0
static void register_header_check_all(file_stat_t *file_stat)
{
  register_header_check(0, all_header,sizeof(all_header), &header_check_all, file_stat);
}
示例#5
0
static void register_header_check_amd(file_stat_t *file_stat)
{
  register_header_check(0, amd_header,sizeof(amd_header), &header_check_amd, file_stat);
  register_header_check(0, amt_header,sizeof(amt_header), &header_check_amt, file_stat);
}
示例#6
0
static void register_header_check_fit(file_stat_t *file_stat)
{
  static const unsigned char fits_header[4]= { '.', 'F', 'I', 'T' };
  register_header_check(8, fits_header, sizeof(fits_header), &header_check_fit, file_stat);
}
示例#7
0
文件: file_fat.c 项目: Tom9X/TestDisk
static void register_header_check_fat(file_stat_t *file_stat)
{
  register_header_check(0x1fe, fat_sign, sizeof(fat_sign), &header_check_fat, file_stat);
}
示例#8
0
static void register_header_check_a(file_stat_t *file_stat)
{
  register_header_check(0, a_header,sizeof(a_header), &header_check_a, file_stat);
}
示例#9
0
static void register_header_check_wpd(file_stat_t *file_stat)
{
  register_header_check(0, wpd_header,sizeof(wpd_header), &header_check_wpd, file_stat);
}
示例#10
0
文件: file_axx.c 项目: Tom9X/TestDisk
static void register_header_check_axx(file_stat_t *file_stat)
{
  register_header_check(0, axx_header, sizeof(axx_header), &header_check_axx, file_stat);
}
示例#11
0
static void register_header_check_psf(file_stat_t *file_stat)
{
  register_header_check(12, "PSD5RDOC", 8, &header_check_psf, file_stat);
}
示例#12
0
static void register_header_check_ts(file_stat_t *file_stat)
{
  register_header_check(0, "G", 1,  &header_check_m2t, file_stat);
  register_header_check(4, "G", 1,  &header_check_m2ts, file_stat);
}
示例#13
0
static void register_header_check_fs(file_stat_t *file_stat)
{
  static const unsigned char fs_header[4]={ 'F', 'S','2','1' };
  register_header_check(0, fs_header,sizeof(fs_header), &header_check_fs, file_stat);
}
示例#14
0
static void register_header_check_dad(file_stat_t *file_stat)
{
  register_header_check(0, "DHAV", 4, &header_check_dad, file_stat);
}
示例#15
0
文件: file_ra.c 项目: Ctrlshiftm/ICU
static void register_header_check_ra(file_stat_t *file_stat)
{
  static const unsigned char ra_header[4]  = { '.', 'r', 'a', 0xfd};
  register_header_check(0, ra_header,sizeof(ra_header), &header_check_ra, file_stat);
}
示例#16
0
static void register_header_check_x3f(file_stat_t *file_stat)
{
    register_header_check(0, x3f_header,sizeof(x3f_header), &header_check_x3f, file_stat);
}
示例#17
0
static void register_header_check_ptb(file_stat_t *file_stat)
{
  static const unsigned char ptb_header[4]= {'p', 't', 'a', 'b'};
  register_header_check(0, ptb_header,sizeof(ptb_header), &header_check_ptb, file_stat);
}
示例#18
0
static void register_header_check_djv(file_stat_t *file_stat)
{
  register_header_check(0, djv_header,sizeof(djv_header), &header_check_djv, file_stat);
}
示例#19
0
static void register_header_check_res(file_stat_t *file_stat)
{
  static const unsigned char MS_res_header[14]= {0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00,
    0xFF, 0xFF, 0, 0, 0xFF, 0xFF};
  register_header_check(0, MS_res_header,sizeof(MS_res_header), &header_check_res, file_stat);
}
示例#20
0
static void register_header_check_win(file_stat_t *file_stat)
{
  register_header_check(0, win_header, sizeof(win_header), &header_check_win, file_stat);
}
示例#21
0
static void register_header_check_3dm(file_stat_t *file_stat)
{
  register_header_check(0, "3D Geometry File Format ", 24, &header_check_3dm, file_stat);
}
示例#22
0
文件: file_pdf.c 项目: Tom9X/TestDisk
static void register_header_check_pdf(file_stat_t *file_stat)
{
  register_header_check(0, pdf_header,sizeof(pdf_header), &header_check_pdf, file_stat);
}
示例#23
0
static void register_header_check_ab(file_stat_t *file_stat)
{
  static const unsigned char ab_header[2]={ 'L', 'J' };
  register_header_check(0, ab_header,sizeof(ab_header), &header_check_addressbook, file_stat);
}
示例#24
0
static void register_header_check_prc(file_stat_t *file_stat)
{
  register_header_check(0x30, prc_header,sizeof(prc_header), &header_check_prc, file_stat);
}
示例#25
0
static void register_header_check_torrent(file_stat_t *file_stat)
{
  register_header_check(0, torrent_header, sizeof(torrent_header), &header_check_torrent, file_stat);
}
示例#26
0
文件: file_it.c 项目: Tom9X/TestDisk
static void register_header_check_it(file_stat_t *file_stat)
{
  register_header_check(0, it_header, sizeof(it_header), &header_check_it, file_stat);
}
示例#27
0
static void register_header_check_gm6(file_stat_t *file_stat)
{
  /*
  These are the headers that identify Game Maker files for 8.1 and earlier.
  First set of 4 bytes: Little-endian, constant 1234321 (decimal)
  Second set of 4 bytes: Little-endian, Version identifier
  Source: "Binary Format of GameMaker Save Files (gmd, gm6, gmk)" by IsmAvatar
  URL: http://ismavatar.com/lgm/formats/gmformat7.txt
  */
  //Version 8.1 (.gm81)
  static const unsigned char gm81_header[8] = {
    0x91, 0xd5, 0x12, 0x00, 0x2a, 0x03, 0x00, 0x00
  };
  //Version 8.0 (.gmk)
  static const unsigned char gm80_header[8] = {
    0x91, 0xd5, 0x12, 0x00, 0x20, 0x03, 0x00, 0x00
  };
  //Version 7.0 variant 2 (.gmk)
  static const unsigned char gm72_header[8] = {
    0x91, 0xd5, 0x12, 0x00, 0xbe, 0x02, 0x00, 0x00
  };
  //Version 7.0 variant 1 (.gmk)
  static const unsigned char gm71_header[8] = {
    0x91, 0xd5, 0x12, 0x00, 0xbd, 0x02, 0x00, 0x00
  };
  //Version 7.0 early variant (.gmk)
  static const unsigned char gm62_header[8] = {
    0x91, 0xd5, 0x12, 0x00, 0x6c, 0x02, 0x00, 0x00
  };
  //Version 6.0-6.1 (.gm6)
  static const unsigned char gm60_header[8] = {
    0x91, 0xd5, 0x12, 0x00, 0x58, 0x02, 0x00, 0x00
  };
  //Version 5.3 (.gmd)
  static const unsigned char gm53_header[8] = {
    0x91, 0xd5, 0x12, 0x00, 0x12, 0x02, 0x00, 0x00
  };
  //Version 5.2 (.gmd)
  static const unsigned char gm52_header[8] = {
    0x91, 0xd5, 0x12, 0x00, 0x08, 0x02, 0x00, 0x00
  };
  //Version 5.1 (.gmd)
  static const unsigned char gm51_header[8] = {
    0x91, 0xd5, 0x12, 0x00, 0xfe, 0x01, 0x00, 0x00
  };
  //Version 5.0 (.gmd)
  static const unsigned char gm50_header[8] = {
    0x91, 0xd5, 0x12, 0x00, 0xf4, 0x01, 0x00, 0x00
  };
  //Version 4.3 (.gmd)
  static const unsigned char gm43_header[8] = {
    0x91, 0xd5, 0x12, 0x00, 0xae, 0x01, 0x00, 0x00
  };

  //Register all variant header signatures with respective extensions
  register_header_check(0, gm81_header, sizeof(gm81_header), &header_check_gm81, file_stat);
  register_header_check(0, gm80_header, sizeof(gm80_header), &header_check_gmk, file_stat);
  register_header_check(0, gm72_header, sizeof(gm72_header), &header_check_gmk, file_stat);
  register_header_check(0, gm71_header, sizeof(gm71_header), &header_check_gmk, file_stat);
  register_header_check(0, gm62_header, sizeof(gm62_header), &header_check_gmk, file_stat);
  register_header_check(0, gm60_header, sizeof(gm60_header), &header_check_gm6, file_stat);
  register_header_check(0, gm53_header, sizeof(gm53_header), &header_check_gmd, file_stat);
  register_header_check(0, gm52_header, sizeof(gm52_header), &header_check_gmd, file_stat);
  register_header_check(0, gm51_header, sizeof(gm51_header), &header_check_gmd, file_stat);
  register_header_check(0, gm50_header, sizeof(gm50_header), &header_check_gmd, file_stat);
  register_header_check(0, gm43_header, sizeof(gm43_header), &header_check_gmd, file_stat);
}
示例#28
0
static char *parse_signature_file(file_stat_t *file_stat, char *pos)
{
  while(*pos!='\0')
  {
    /* skip comments */
    while(*pos=='#')
    {
      while(*pos!='\0' && *pos!='\n')
	pos++;
      if(*pos=='\0')
	return pos;
      pos++;
    }
    /* each line is composed of "extension offset signature" */
    {
      char *extension;
      unsigned int offset=0;
      unsigned char *tmp=NULL;
      unsigned int signature_max_size=512;
      unsigned int signature_size=0;
      {
	const char *extension_start=pos;
	while(*pos!='\0' && !isspace(*pos))
	  pos++;
	if(*pos=='\0')
	  return pos;
	*pos='\0';
	extension=strdup(extension_start);
	pos++;
      }
      /* skip space */
      while(isspace(*pos))
	pos++;
      /* read offset */
      pos=str_uint(pos, &offset);
      /* read signature */
      tmp=(unsigned char *)MALLOC(signature_max_size);
      while(*pos!='\n' && *pos!='\0')
      {
	if(signature_size==signature_max_size)
	{
	  unsigned char *tmp_old=tmp;
	  signature_max_size*=2;
	  tmp=(unsigned char *)realloc(tmp, signature_max_size);
	  if(tmp==NULL)
	  {
	    free(extension);
	    free(tmp_old);
	    return pos;
	  }
	}
	if(isspace(*pos) || *pos=='\r' || *pos==',')
	  pos++;
	else if(*pos== '\'')
	{
	  pos++;
	  if(*pos=='\0')
	  {
	    free(extension);
	    free(tmp);
	    return pos;
	  }
	  else if(*pos=='\\')
	  {
	    pos++;
	    if(*pos=='\0')
	    {
	      free(extension);
	    free(tmp);
	      return pos;
	    }
	    else if(*pos=='b')
	      tmp[signature_size++]='\b';
	    else if(*pos=='n')
	      tmp[signature_size++]='\n';
	    else if(*pos=='t')
	      tmp[signature_size++]='\t';
	    else if(*pos=='r')
	      tmp[signature_size++]='\r';
	    else if(*pos=='0')
	      tmp[signature_size++]='\0';
	    else
	      tmp[signature_size++]=*pos;
	    pos++;
	  }
	  else
	  {
	    tmp[signature_size++]=*pos;
	    pos++;
	  }
	  if(*pos!='\'')
	  {
	    free(extension);
	    free(tmp);
	    return pos;
	  }
	  pos++;
	}
	else if(*pos=='"')
	{
	  pos++;
	  for(; *pos!='"' && *pos!='\0'; pos++)
	  {
	    if(signature_size==signature_max_size)
	    {
	      unsigned char *tmp_old=tmp;
	      signature_max_size*=2;
	      tmp=(unsigned char *)realloc(tmp, signature_max_size);
	      if(tmp==NULL)
	      {
		free(extension);
		free(tmp_old);
		return pos;
	      }
	    }
	    if(*pos=='\\')
	    {
	      pos++;
	      if(*pos=='\0')
	      {
		free(extension);
		free(tmp);
		return pos;
	      }
	      else if(*pos=='b')
		tmp[signature_size++]='\b';
	      else if(*pos=='n')
		tmp[signature_size++]='\n';
	      else if(*pos=='r')
		tmp[signature_size++]='\r';
	      else if(*pos=='t')
		tmp[signature_size++]='\t';
	      else if(*pos=='0')
		tmp[signature_size++]='\0';
	      else
		tmp[signature_size++]=*pos;
	    }
	    else
	      tmp[signature_size++]=*pos;;
	  }
	  if(*pos!='"')
	  {
	    free(extension);
	    free(tmp);
	    return pos;
	  }
	  pos++;
	}
	else if(*pos=='0' && (*(pos+1)=='x' || *(pos+1)=='X'))
	{
	  pos+=2;
	  while(isxdigit(*pos) && isxdigit(*(pos+1)))
	  {
	    unsigned int val=(*pos);
	    if(*pos>='0' && *pos<='9')
	      val-='0';
	    else if(*pos>='A' && *pos<='F')
	      val=val-'A'+10;
	    else if(*pos>='a' && *pos<='f')
	      val=val-'a'+10;
	    pos++;
	    val*=16;
	    val+=(*pos);
	    if(*pos>='0' && *pos<='9')
	      val-='0';
	    else if(*pos>='A' && *pos<='F')
	      val=val-'A'+10;
	    else if(*pos>='a' && *pos<='f')
	      val=val-'a'+10;
	    pos++;
	    tmp[signature_size++]=val;
	  }
	}
	else
	{
	  free(extension);
	  free(tmp);
	  return pos;
	}
      }
      if(*pos=='\n')
	pos++;
      if(signature_size>0)
      {
	/* FIXME: Small memory leak */
	unsigned char *signature=(unsigned char *)MALLOC(signature_size);
	log_info("register a signature for %s\n", extension);
	memcpy(signature, tmp, signature_size);
	register_header_check(offset, signature, signature_size, &header_check_sig, file_stat);
	signature_insert(extension, offset, signature, signature_size);
      }
      else
      {
	free(extension);
      }
      free(tmp);
    }
  }
  return pos;
}
示例#29
0
static void register_header_check_ess(file_stat_t *file_stat)
{
  register_header_check(0, "TESV_SAVEGAME", 13, &header_check_ess, file_stat);
}
示例#30
0
文件: file_cab.c 项目: Ctrlshiftm/ICU
static void register_header_check_cab(file_stat_t *file_stat)
{
  static const unsigned char cab_header[4]  = { 'M','S','C','F'};
  register_header_check(0, cab_header,sizeof(cab_header), &header_check_cab, file_stat);
}