Beispiel #1
0
int main(int argc, char **argv)
{
  if(argc < 2)
    return 1;
  FILE *f = fopen(argv[1], "rb");
  if(!f)
    return 1;
  struct stat st;
  fstat(fileno(f), &st);
  std::string md5;
  if(argc > 3)
    md5_compute(f, atoi(argv[2]), atoi(argv[3]), md5);
  else
    md5_compute(f, 0, st.st_size-1, md5);
  printf("%s\n", md5.c_str());
  return 0;
}
Beispiel #2
0
/**
 * Calculates number of hashes from stdin or from files 
 *
 * Expected input ./gethash [-md5] [-c16] [-c32] [-xor] [-hex] [-f file]
 */
int main( int argc, char *argv[] )
{

   unsigned char hash = 0;
   FILE *file = stdin;

   parse_args(argc, argv, &hash, &file);

   unsigned int length;
   unsigned char *data = read_file(file, &length);
   

   printf("Length: %i bytes\n", length);

   if(hash & XOR){
      printf("XOR: ");
      if(hash & HEX)
         printf("0x%02x\n", xor_compute(data, length));
      else
         printf("%u\n", xor_compute(data, length));
   }

   if(hash & C16){
      printf("CRC-16: ");
      if(hash & HEX)
         printf("0x%04x\n", crc16_compute(data, length));
      else
         printf("%u\n", crc16_compute(data, length));
   }

   if(hash & C32){
      printf("CRC-32: ");
      if(hash & HEX)
         printf("0x%08x\n", crc32_compute(data, length));
      else
         printf("%u\n", crc32_compute(data, length));
   }

   if(hash & MD5){
      unsigned char result[16];
      md5_compute(data, length, result);

      printf("MD5: ");
      for (int i = 0; i < 16; i++){
         printf("%02x", result[i]);
      }
      printf("\n");
   }

   free(data);
   fclose(file);

   return 0;
}