Example #1
0
Boolean_T crc32file(char *name, DWORD *crc, long *charcnt)
{
      register FILE *fin;
      register DWORD oldcrc32;
      register int c;

      oldcrc32 = 0xFFFFFFFF; *charcnt = 0;
#ifdef MSDOS
      if ((fin=fopen(name, "rb"))==NULL)
#else
      if ((fin=fopen(name, "r"))==NULL)
#endif
      {
            perror(name);
            return Error_;
      }
      while ((c=getc(fin))!=EOF)
      {
            ++*charcnt;
            oldcrc32 = UPDC32(c, oldcrc32);
      }

      if (ferror(fin))
      {
            perror(name);
            *charcnt = -1;
      }
      fclose(fin);

      *crc = oldcrc32 = ~oldcrc32;

      return Success_;
}
Example #2
0
/* Capture the keyboard, as long as the event is not the same as the last two
   events, add the crc of the event to the pool along with the crc of the time
   difference between this event and the last. The role of CRC-32 is merely to
   perform diffusion. Note that the output of CRC-32 is subsequently processed
   using a cryptographically secure hash algorithm.  */
LRESULT CALLBACK KeyboardProc (int nCode, WPARAM wParam, LPARAM lParam)
{
	static int lLastKey, lLastKey2;
	static DWORD dwLastTimer;
	int nKey = (lParam & 0x00ff0000) >> 16;
	int nCapture = 0;

	if (nCode < 0)
		return CallNextHookEx (hMouse, nCode, wParam, lParam);

	if ((lParam & 0x0000ffff) == 1 && !(lParam & 0x20000000) &&
	    (lParam & 0x80000000))
	{
		if (nKey != lLastKey)
			nCapture = 1;	/* Capture this key */
		else if (nKey != lLastKey2)
			nCapture = 1;	/* Allow for one repeat */
	}
	if (nCapture)
	{
		DWORD dwTimer = GetTickCount ();
		DWORD j = dwLastTimer - dwTimer;
		unsigned __int32 timeCrc = 0L;
		int i;

		dwLastTimer = dwTimer;
		lLastKey2 = lLastKey;
		lLastKey = nKey;

		for (i = 0; i < 4; i++)
		{
			timeCrc = UPDC32 (((unsigned char *) &j)[i], timeCrc);
		}

		for (i = 0; i < 4; i++)
		{
			timeCrc = UPDC32 (((unsigned char *) &dwTimer)[i], timeCrc);
		}

		EnterCriticalSection (&critRandProt);
		RandaddInt32 ((unsigned __int32) (GetCrc32((unsigned char*) &lParam, sizeof(lParam)) + timeCrc));
		LeaveCriticalSection (&critRandProt);
	}

	return CallNextHookEx (hMouse, nCode, wParam, lParam);
}
unsigned long int crc32buf(const char *pBuffer, std::size_t nLength) {
  unsigned long int oldcrc32;
  oldcrc32 = 0xFFFFFFFF;
  for (; nLength; --nLength, ++pBuffer) {
    oldcrc32 = UPDC32(*pBuffer, oldcrc32);
  }
  return ~oldcrc32;
}
int crc32file( char *name ) {
	FILE *fin;
	unsigned long oldcrc32;
	unsigned long crc32;
	unsigned long oldcrc;
	int c;
	long charcnt;
	long l;

	oldcrc32 = 0xFFFFFFFF;
	charcnt = 0;
	if ((fin=fopen(name, "r"))==nullptr) {
		perror(name);
		return ERROR;
	}
	while ((c=getc(fin))!=EOF) {
		++charcnt;
		oldcrc32 = UPDC32(c, oldcrc32);
	}

	if (ferror(fin)) {
		perror(name);
		fclose(fin);
		return ERROR;
	} else {
		if (Block) {
			for (l = charcnt; l % Block; ++l) {
				oldcrc32 = UPDC32(032, oldcrc32);
			}
		}
		crc32 = oldcrc32;
		oldcrc = oldcrc32 = ~oldcrc32;

		printf("%08lX %7ld ", oldcrc, charcnt);
		if (Block == 128) {
			printf("%5ld+%3ld ", charcnt/Block, charcnt%Block);
		}
		if (Block == 1024) {
			printf("%5ld+%4ld ", charcnt/Block, charcnt%Block);
		}
		std::clog << " " << name << "\n";
	}

	fclose( fin );
	return OK;
}
Example #5
0
/* Capture the mouse, and as long as the event is not the same as the last
   two events, add the crc of the event, and the crc of the time difference
   between this event and the last + the current time to the pool.
   The role of CRC-32 is merely to perform diffusion. Note that the output
   of CRC-32 is subsequently processed using a cryptographically secure hash
   algorithm. */
LRESULT CALLBACK MouseProc (int nCode, WPARAM wParam, LPARAM lParam)
{
	static DWORD dwLastTimer;
	static unsigned __int32 lastCrc, lastCrc2;
	MOUSEHOOKSTRUCT *lpMouse = (MOUSEHOOKSTRUCT *) lParam;

	if (nCode < 0)
		return CallNextHookEx (hMouse, nCode, wParam, lParam);
	else
	{
		DWORD dwTimer = GetTickCount ();
		DWORD j = dwLastTimer - dwTimer;
		unsigned __int32 crc = 0L;
		int i;

		dwLastTimer = dwTimer;

		for (i = 0; i < sizeof (MOUSEHOOKSTRUCT); i++)
		{
			crc = UPDC32 (((unsigned char *) lpMouse)[i], crc);
		}

		if (crc != lastCrc && crc != lastCrc2)
		{
			unsigned __int32 timeCrc = 0L;

			for (i = 0; i < 4; i++)
			{
				timeCrc = UPDC32 (((unsigned char *) &j)[i], timeCrc);
			}

			for (i = 0; i < 4; i++)
			{
				timeCrc = UPDC32 (((unsigned char *) &dwTimer)[i], timeCrc);
			}

			EnterCriticalSection (&critRandProt);
			RandaddInt32 ((unsigned __int32) (crc + timeCrc));
			LeaveCriticalSection (&critRandProt);
		}
		lastCrc2 = lastCrc;
		lastCrc = crc;

	}
	return 0;
}
Example #6
0
unsigned long doFCS(unsigned char* buf, int len) {
    int i;
    unsigned long crc=0xffffffff;
    for(i=0;i<len;i++) {
        crc=UPDC32(buf[i],crc);
    }
    return(crc);
}
Example #7
0
inline uint32_t crc32(uint32_t partial, const char* buf, size_t len)
{
/// TODO:
/// Consider algos from http://www.hackersdelight.org/hdcodetxt/crc.c.txt

static uint32_t crc_32_tab[] =
{ /* CRC polynomial 0xedb88320 */
  0x00000000, 0x77073096, 0xee0e612c, 0x990951ba, 0x076dc419, 0x706af48f,
  0xe963a535, 0x9e6495a3, 0x0edb8832, 0x79dcb8a4, 0xe0d5e91e, 0x97d2d988,
  0x09b64c2b, 0x7eb17cbd, 0xe7b82d07, 0x90bf1d91, 0x1db71064, 0x6ab020f2,
  0xf3b97148, 0x84be41de, 0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7,
  0x136c9856, 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec, 0x14015c4f, 0x63066cd9,
  0xfa0f3d63, 0x8d080df5, 0x3b6e20c8, 0x4c69105e, 0xd56041e4, 0xa2677172,
  0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b, 0x35b5a8fa, 0x42b2986c,
  0xdbbbc9d6, 0xacbcf940, 0x32d86ce3, 0x45df5c75, 0xdcd60dcf, 0xabd13d59,
  0x26d930ac, 0x51de003a, 0xc8d75180, 0xbfd06116, 0x21b4f4b5, 0x56b3c423,
  0xcfba9599, 0xb8bda50f, 0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924,
  0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d, 0x76dc4190, 0x01db7106,
  0x98d220bc, 0xefd5102a, 0x71b18589, 0x06b6b51f, 0x9fbfe4a5, 0xe8b8d433,
  0x7807c9a2, 0x0f00f934, 0x9609a88e, 0xe10e9818, 0x7f6a0dbb, 0x086d3d2d,
  0x91646c97, 0xe6635c01, 0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e,
  0x6c0695ed, 0x1b01a57b, 0x8208f4c1, 0xf50fc457, 0x65b0d9c6, 0x12b7e950,
  0x8bbeb8ea, 0xfcb9887c, 0x62dd1ddf, 0x15da2d49, 0x8cd37cf3, 0xfbd44c65,
  0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2, 0x4adfa541, 0x3dd895d7,
  0xa4d1c46d, 0xd3d6f4fb, 0x4369e96a, 0x346ed9fc, 0xad678846, 0xda60b8d0,
  0x44042d73, 0x33031de5, 0xaa0a4c5f, 0xdd0d7cc9, 0x5005713c, 0x270241aa,
  0xbe0b1010, 0xc90c2086, 0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f,
  0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4, 0x59b33d17, 0x2eb40d81,
  0xb7bd5c3b, 0xc0ba6cad, 0xedb88320, 0x9abfb3b6, 0x03b6e20c, 0x74b1d29a,
  0xead54739, 0x9dd277af, 0x04db2615, 0x73dc1683, 0xe3630b12, 0x94643b84,
  0x0d6d6a3e, 0x7a6a5aa8, 0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1,
  0xf00f9344, 0x8708a3d2, 0x1e01f268, 0x6906c2fe, 0xf762575d, 0x806567cb,
  0x196c3671, 0x6e6b06e7, 0xfed41b76, 0x89d32be0, 0x10da7a5a, 0x67dd4acc,
  0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5, 0xd6d6a3e8, 0xa1d1937e,
  0x38d8c2c4, 0x4fdff252, 0xd1bb67f1, 0xa6bc5767, 0x3fb506dd, 0x48b2364b,
  0xd80d2bda, 0xaf0a1b4c, 0x36034af6, 0x41047a60, 0xdf60efc3, 0xa867df55,
  0x316e8eef, 0x4669be79, 0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236,
  0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f, 0xc5ba3bbe, 0xb2bd0b28,
  0x2bb45a92, 0x5cb36a04, 0xc2d7ffa7, 0xb5d0cf31, 0x2cd99e8b, 0x5bdeae1d,
  0x9b64c2b0, 0xec63f226, 0x756aa39c, 0x026d930a, 0x9c0906a9, 0xeb0e363f,
  0x72076785, 0x05005713, 0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38,
  0x92d28e9b, 0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21, 0x86d3d2d4, 0xf1d4e242,
  0x68ddb3f8, 0x1fda836e, 0x81be16cd, 0xf6b9265b, 0x6fb077e1, 0x18b74777,
  0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c, 0x8f659eff, 0xf862ae69,
  0x616bffd3, 0x166ccf45, 0xa00ae278, 0xd70dd2ee, 0x4e048354, 0x3903b3c2,
  0xa7672661, 0xd06016f7, 0x4969474d, 0x3e6e77db, 0xaed16a4a, 0xd9d65adc,
  0x40df0b66, 0x37d83bf0, 0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9,
  0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6, 0xbad03605, 0xcdd70693,
  0x54de5729, 0x23d967bf, 0xb3667a2e, 0xc4614ab8, 0x5d681b02, 0x2a6f2b94,
  0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, 0x2d02ef8d
};

#define UPDC32(octet, crc) (crc_32_tab[((crc) ^ (octet)) & 0xff] ^ ((crc) >> 8))
  for (; len; --len, ++buf)
      partial = UPDC32(*buf, partial);
  return partial;
#undef UPDC32
}
Example #8
0
uint32 crc32(char *in, uint64 length){
	register uint32 oldcrc32;
	char *buf = in;
	oldcrc32 = 0xFFFFFFFF;
	for ( ; length; --length, ++buf) {
        oldcrc32 = UPDC32(*buf, oldcrc32);
    }
    return ~oldcrc32; // Return inverted (NOT) value
}
Example #9
0
File: crc.c Project: n9Mtq4/JamWiFi
uint32_t crc32(const char *buf, size_t len) {
    uint32_t crc = 0xFFFFFFFF;
    
    for (; len; --len, ++buf) {
        crc = UPDC32(*buf, crc);
    }
    
    return crc;
}
Example #10
0
uint32_t crc32buf(char *buf, size_t len)
{
	uint32_t crc;

	crc = 0xFFFFFFFF;

	for (; len; --len, ++buf)
		crc = UPDC32(*buf, crc);

	return crc;
}
Example #11
0
crc32 calc_crc32_buf(const void *buf, size_t n){
    int         i;
    const char *buffer = (const char *)buf;
    crc32       crc = ~0;


    for (i = 0; i < n; i++)
        crc = UPDC32(buffer[i], crc);

    return ~crc;
}
Example #12
0
/* Send ZMODEM binary header hdr of type type */
static void zsbh32(char *hdr, int type)
{
    register int n;
    register unsigned long crc;

    xsendline(ZBIN32);
    zsendline(type);
    crc = 0xFFFFFFFFL;
    crc = UPDC32(type, crc);

    for (n = 4; --n >= 0; ++hdr) {
        crc = UPDC32((0377 & *hdr), crc);
        zsendline(*hdr);
    }
    crc = ~crc;
    for (n = 4; --n >= 0;) {
        zsendline((int) crc);
        crc >>= 8;
    }
}
Example #13
0
uint32_t crc32buf(const char *buf)
{
      uint32_t oldcrc32 = 0xFFFFFFFF;

      for (const char* len = buf; len && *len != '\0'; ++len)
      {
		  oldcrc32 = UPDC32(*len, oldcrc32);
      }

      return ~oldcrc32;
      
}
Example #14
0
unsigned int crc32(char *buf, size_t len)
{
      register unsigned int oldcrc32;

      oldcrc32 = 0xFFFFFFFF;

      for ( ; len; --len, ++buf)
      {
            oldcrc32 = UPDC32(*buf, oldcrc32);
	  }

      return ~oldcrc32;
}
UINT32
compute_crc32 P2(unsigned char *, buf, int, len)
{
    register UINT32 crc = 0xFFFFFFFFL;
    register int j;

    j = len;
    while (j--) {
	/* the UPDC32 macro uses 1st arg only once */
	crc = UPDC32((unsigned int) *buf++, crc);
    }
    return crc;
}
wxUint32 Helpers::crc32buf(const char *buf, size_t len)
{
      register wxUint32 oldcrc32;

      oldcrc32 = 0xFFFFFFFF;

      for ( ; len; --len, ++buf)
      {
            oldcrc32 = UPDC32(*buf, oldcrc32);
      }

      return ~oldcrc32;
}
Example #17
0
u_int32_t crc32(const char *buf, int len)
{
    u_int32_t    result = 0xFFFFFFFF;

    if( buf == NULL || len < 1 )
        return result;

    while(len--) {
        result = UPDC32((u_int32_t) *buf++, result);
    }

    return result;
}
Example #18
0
DWORD crc32pseudo()
{
   int i;
   register DWORD oldcrc32;

   oldcrc32 = 0xFFFFFFFF;

   for (i = 0 ; i < 1024; ++i)
   {
      oldcrc32 = UPDC32(rand(), oldcrc32);
   }

   return ~oldcrc32;
}
Example #19
0
DWORD r3dCRC32(const BYTE* data, DWORD size)
{
  DWORD crc32 = 0xFFFFFFFF;

  #define UPDC32(octet,crc) (crc_32_tab[((crc) ^ ((BYTE)octet)) & 0xff] ^ ((crc) >> 8))

  for(; size; --size, ++data) {
    crc32 = UPDC32(*data, crc32);
  }

  #undef UPDC32

  return ~crc32;
}
Example #20
0
uint32_t crc32buf(char *buf, size_t len)
{
      register uint32_t oldcrc32;

      oldcrc32 = 0xFFFFFFFF;

      for ( ; len; --len, ++buf)
      {
            oldcrc32 = UPDC32(*buf, oldcrc32);
      }

      return ~oldcrc32;

}
DWORD crc32buf(char *buf, size_t len)
{
    register DWORD oldcrc32;
    
    oldcrc32 = 0xFFFFFFFF;
    
    for ( ; len; --len, ++buf)
    {
        oldcrc32 = UPDC32(*buf, oldcrc32);
        PA_YieldAbsolute();
    }
    
    return ~oldcrc32;
    
}
Example #22
0
File: crc.c Project: pgul/lgate
unsigned long filecrc32(char * fname)
{
	register unsigned long crc32;
	register int i;
	FILE *f;

	crc32 = 0xFFFFFFFFl;
	if ((f=fopen(fname, "rb"))==NULL)
		return crc32;
	while ((i=fgetc(f))!=EOF)
		crc32 = UPDC32(i, crc32);

	fclose(f);
	return crc32;
}
Example #23
0
uint32 crc32buffer(const uint8 *arBuffer, int arLen)
{
	register uint32		oldcrc32;
	register uint32		oldcrc;
	uint8				c;
	register int		charcnt;

	oldcrc32 = 0xFFFFFFFFL; charcnt = 0;
	while(arLen) {
		c = arBuffer[charcnt];
		++charcnt;
		--arLen;
		oldcrc32 = UPDC32(c, oldcrc32);
	}
	oldcrc = oldcrc32 = ~oldcrc32;
	return oldcrc;
}
Example #24
0
static int zrdat32(char *buf, int length, size_t * bytes_received)
{
    register int c;
    register unsigned long crc;
    register char *end;
    register int d;

    crc = 0xFFFFFFFFL;
    end = buf + length;
    while (buf <= end) {
        if ((c = zdlread()) & ~0377) {
          crcfoo:
            switch (c) {
            case GOTCRCE:
            case GOTCRCG:
            case GOTCRCQ:
            case GOTCRCW:
                d = c;
                c &= 0377;
                crc = UPDC32(c, crc);
                if ((c = zdlread()) & ~0377)
                    goto crcfoo;
                crc = UPDC32(c, crc);
                if ((c = zdlread()) & ~0377)
                    goto crcfoo;
                crc = UPDC32(c, crc);
                if ((c = zdlread()) & ~0377)
                    goto crcfoo;
                crc = UPDC32(c, crc);
                if ((c = zdlread()) & ~0377)
                    goto crcfoo;
                crc = UPDC32(c, crc);
                if (crc != 0xDEBB20E3) {
                    return ERROR;
                }
                *bytes_received = length - (end - buf);
                COUNT_BLK(*bytes_received);
                return d;
            case GOTCAN:
                return ZCAN;
            case TIMEOUT:
                return c;
            default:
                return c;
            }
        }
        *buf++ = c;
        crc = UPDC32(c, crc);
    }
    return ERROR;
}
unsigned long int crc32str(char *name)
{
  register unsigned int oldcrc32;
  register unsigned int crc32;
  register unsigned char c;
  register int a=0;


  oldcrc32 = 0;
  while (name[a] != 0) {
    c=name[a];
    oldcrc32 = UPDC32(c, oldcrc32);
        a++;
  }

  crc32 = oldcrc32;  oldcrc32 = oldcrc32;

  return crc32;
}
Example #26
0
crc32 calc_crc32_fd(int fd)
{
    int             i, r;
    unsigned char   buffer[256];
    crc32           crc = ~0;
    off_t           pos;


    pos = lseek(fd, 0, SEEK_CUR);
    lseek(fd, 0, SEEK_SET);

    while ((r = read(fd, buffer, sizeof(buffer))) > 0)
    {
        for (i = 0; i < r; i++) crc = UPDC32(buffer[i], crc);
    }

    lseek(fd, pos, SEEK_SET);
    return ~crc;
}
Example #27
0
File: crc.c Project: pgul/lgate
unsigned long crc32(char * str)
{

	register unsigned long crc32;

	crc32 = 0xFFFFFFFFl;
    for (;*str;str++)
    {
		crc32 = UPDC32(*str, crc32);
	}

/*
	crc32 = UPDC32((oldcrc32 & 0377), crc32);  oldcrc32 >>=8;
	crc32 = UPDC32((oldcrc32 & 0377), crc32);  oldcrc32 >>=8;
	crc32 = UPDC32((oldcrc32 & 0377), crc32);  oldcrc32 >>=8;
	crc32 = UPDC32((oldcrc32 & 0377), crc32);  oldcrc32 >>=8;
	printf("%08lX ", crc32);
*/

	return crc32;
}
Example #28
0
int crc32file(char *name, DWORD *crc) {
  register FILE *fin;
  register DWORD oldcrc32;
  register int c;

  oldcrc32 = 0xFFFFFFFF;
  if ((fin=fopen(name, "rb"))==NULL) {
    perror(name);
    return -1;
  }
  while ((c = getc(fin)) != EOF) {
    oldcrc32 = UPDC32(c, oldcrc32);
  }

  if (ferror(fin)) {
    perror(name);
  }
  fclose(fin);
  *crc = oldcrc32 = ~oldcrc32;
  return 0;
}
Example #29
0
int crc32file (char *name)
{
	register FILE *fin;
	register unsigned long crc32;
	register unsigned short ccitt, crc16;
	register int c;
	register long charcnt;

	crc32 = 0xFFFFFFFF; ccitt = 0xFFFF;
	crc16 = charcnt = 0;
	if ((fin=fopen(name, "rb"))==NULL)
	{
		perror(name);
		return ERROR;
	}
	while ((c=getc(fin))!=EOF) {
		++charcnt;
		crc32 = UPDC32(c, crc32);
		ccitt = UPDCIT(c, ccitt);
		crc16 = UPDC16(c, crc16);
	}

	if (ferror(fin))
	{
		perror(name);
		fclose(fin); return ERROR;
	}
	else
	{
		crc32 = ~crc32;
		ccitt = ~ccitt;

		printf(" %08lX  %04X  %04X%10ld   %s\n",
						crc32, ccitt, crc16, charcnt, name);
	}

	fclose(fin); return OK;
}
Example #30
0
Boolean_T crc32file(char *name, DWORD *crc, long *charcnt)
{
      // FB -- change to make the benchmark use stdio without command-line args
      register FILE *fin = stdin;
      register DWORD oldcrc32;
      register int c;

      oldcrc32 = 0xFFFFFFFF; *charcnt = 0;
#ifdef MSDOS
      // FB -- change to make the benchmark use stdio without command-line args
      if (name != NULL && (fin=fopen(name, "rb"))==NULL)
#else
      // FB -- change to make the benchmark use stdio without command-line args
      if (name != NULL && (fin=fopen(name, "r"))==NULL)
#endif
      {
            perror(name);
            return Error_;
      }
      while ((c=getc(fin))!=EOF)
      {
            ++*charcnt;
            oldcrc32 = UPDC32(c, oldcrc32);
      }

      if (ferror(fin))
      {
            perror(name);
            *charcnt = -1;
      }
      fclose(fin);

      *crc = oldcrc32 = ~oldcrc32;

      return Success_;
}