fi3ldy Posted October 24, 2007 Share Posted October 24, 2007 Ok, I'm getting a little ahead of my here.. I've done a little searching and found nothing on generating file crc32 strings I was wondering if anybody knew of a way to generate the file crc32. Ideally I am going to use this for scanning running processes and picking up specific programs. Thanks in advanced! Link to comment Share on other sites More sharing options...
ptrex Posted October 24, 2007 Share Posted October 24, 2007 @ Ths is what i found in my au3 box. Don't ask questions because I am not the author, and don't understand what it is supposed to do. expandcollapse popup#include-once ; CRC32 Encryption Function in AutoIt ; by the DtTvB ; Converted from Visual Basic code ; from http://www.di-mgt.com.au/src/basCRC32.txt global $crcArray[256]; $crcArray[0] = 0x0; $crcArray[1] = 0x77073096; $crcArray[2] = 0xEE0E612C; $crcArray[3] = 0x990951BA; $crcArray[4] = 0x76DC419; $crcArray[5] = 0x706AF48F; $crcArray[6] = 0xE963A535; $crcArray[7] = 0x9E6495A3; $crcArray[8] = 0xEDB8832; $crcArray[9] = 0x79DCB8A4; $crcArray[10] = 0xE0D5E91E; $crcArray[11] = 0x97D2D988; $crcArray[12] = 0x9B64C2B; $crcArray[13] = 0x7EB17CBD; $crcArray[14] = 0xE7B82D07; $crcArray[15] = 0x90BF1D91; $crcArray[16] = 0x1DB71064; $crcArray[17] = 0x6AB020F2; $crcArray[18] = 0xF3B97148; $crcArray[19] = 0x84BE41DE; $crcArray[20] = 0x1ADAD47D; $crcArray[21] = 0x6DDDE4EB; $crcArray[22] = 0xF4D4B551; $crcArray[23] = 0x83D385C7; $crcArray[24] = 0x136C9856; $crcArray[25] = 0x646BA8C0; $crcArray[26] = 0xFD62F97A; $crcArray[27] = 0x8A65C9EC; $crcArray[28] = 0x14015C4F; $crcArray[29] = 0x63066CD9; $crcArray[30] = 0xFA0F3D63; $crcArray[31] = 0x8D080DF5; $crcArray[32] = 0x3B6E20C8; $crcArray[33] = 0x4C69105E; $crcArray[34] = 0xD56041E4; $crcArray[35] = 0xA2677172; $crcArray[36] = 0x3C03E4D1; $crcArray[37] = 0x4B04D447; $crcArray[38] = 0xD20D85FD; $crcArray[39] = 0xA50AB56B; $crcArray[40] = 0x35B5A8FA; $crcArray[41] = 0x42B2986C; $crcArray[42] = 0xDBBBC9D6; $crcArray[43] = 0xACBCF940; $crcArray[44] = 0x32D86CE3; $crcArray[45] = 0x45DF5C75; $crcArray[46] = 0xDCD60DCF; $crcArray[47] = 0xABD13D59; $crcArray[48] = 0x26D930AC; $crcArray[49] = 0x51DE003A; $crcArray[50] = 0xC8D75180; $crcArray[51] = 0xBFD06116; $crcArray[52] = 0x21B4F4B5; $crcArray[53] = 0x56B3C423; $crcArray[54] = 0xCFBA9599; $crcArray[55] = 0xB8BDA50F; $crcArray[56] = 0x2802B89E; $crcArray[57] = 0x5F058808; $crcArray[58] = 0xC60CD9B2; $crcArray[59] = 0xB10BE924; $crcArray[60] = 0x2F6F7C87; $crcArray[61] = 0x58684C11; $crcArray[62] = 0xC1611DAB; $crcArray[63] = 0xB6662D3D; $crcArray[64] = 0x76DC4190; $crcArray[65] = 0x1DB7106; $crcArray[66] = 0x98D220BC; $crcArray[67] = 0xEFD5102A; $crcArray[68] = 0x71B18589; $crcArray[69] = 0x6B6B51F; $crcArray[70] = 0x9FBFE4A5; $crcArray[71] = 0xE8B8D433; $crcArray[72] = 0x7807C9A2; $crcArray[73] = 0xF00F934; $crcArray[74] = 0x9609A88E; $crcArray[75] = 0xE10E9818; $crcArray[76] = 0x7F6A0DBB; $crcArray[77] = 0x86D3D2D; $crcArray[78] = 0x91646C97; $crcArray[79] = 0xE6635C01; $crcArray[80] = 0x6B6B51F4; $crcArray[81] = 0x1C6C6162; $crcArray[82] = 0x856530D8; $crcArray[83] = 0xF262004E; $crcArray[84] = 0x6C0695ED; $crcArray[85] = 0x1B01A57B; $crcArray[86] = 0x8208F4C1; $crcArray[87] = 0xF50FC457; $crcArray[88] = 0x65B0D9C6; $crcArray[89] = 0x12B7E950; $crcArray[90] = 0x8BBEB8EA; $crcArray[91] = 0xFCB9887C; $crcArray[92] = 0x62DD1DDF; $crcArray[93] = 0x15DA2D49; $crcArray[94] = 0x8CD37CF3; $crcArray[95] = 0xFBD44C65; $crcArray[96] = 0x4DB26158; $crcArray[97] = 0x3AB551CE; $crcArray[98] = 0xA3BC0074; $crcArray[99] = 0xD4BB30E2; $crcArray[100] = 0x4ADFA541; $crcArray[101] = 0x3DD895D7; $crcArray[102] = 0xA4D1C46D; $crcArray[103] = 0xD3D6F4FB; $crcArray[104] = 0x4369E96A; $crcArray[105] = 0x346ED9FC; $crcArray[106] = 0xAD678846; $crcArray[107] = 0xDA60B8D0; $crcArray[108] = 0x44042D73; $crcArray[109] = 0x33031DE5; $crcArray[110] = 0xAA0A4C5F; $crcArray[111] = 0xDD0D7CC9; $crcArray[112] = 0x5005713C; $crcArray[113] = 0x270241AA; $crcArray[114] = 0xBE0B1010; $crcArray[115] = 0xC90C2086; $crcArray[116] = 0x5768B525; $crcArray[117] = 0x206F85B3; $crcArray[118] = 0xB966D409; $crcArray[119] = 0xCE61E49F; $crcArray[120] = 0x5EDEF90E; $crcArray[121] = 0x29D9C998; $crcArray[122] = 0xB0D09822; $crcArray[123] = 0xC7D7A8B4; $crcArray[124] = 0x59B33D17; $crcArray[125] = 0x2EB40D81; $crcArray[126] = 0xB7BD5C3B; $crcArray[127] = 0xC0BA6CAD; $crcArray[128] = 0xEDB88320; $crcArray[129] = 0x9ABFB3B6; $crcArray[130] = 0x3B6E20C; $crcArray[131] = 0x74B1D29A; $crcArray[132] = 0xEAD54739; $crcArray[133] = 0x9DD277AF; $crcArray[134] = 0x4DB2615; $crcArray[135] = 0x73DC1683; $crcArray[136] = 0xE3630B12; $crcArray[137] = 0x94643B84; $crcArray[138] = 0xD6D6A3E; $crcArray[139] = 0x7A6A5AA8; $crcArray[140] = 0xE40ECF0B; $crcArray[141] = 0x9309FF9D; $crcArray[142] = 0xA00AE27; $crcArray[143] = 0x7D079EB1; $crcArray[144] = 0xF00F9344; $crcArray[145] = 0x8708A3D2; $crcArray[146] = 0x1E01F268; $crcArray[147] = 0x6906C2FE; $crcArray[148] = 0xF762575D; $crcArray[149] = 0x806567CB; $crcArray[150] = 0x196C3671; $crcArray[151] = 0x6E6B06E7; $crcArray[152] = 0xFED41B76; $crcArray[153] = 0x89D32BE0; $crcArray[154] = 0x10DA7A5A; $crcArray[155] = 0x67DD4ACC; $crcArray[156] = 0xF9B9DF6F; $crcArray[157] = 0x8EBEEFF9; $crcArray[158] = 0x17B7BE43; $crcArray[159] = 0x60B08ED5; $crcArray[160] = 0xD6D6A3E8; $crcArray[161] = 0xA1D1937E; $crcArray[162] = 0x38D8C2C4; $crcArray[163] = 0x4FDFF252; $crcArray[164] = 0xD1BB67F1; $crcArray[165] = 0xA6BC5767; $crcArray[166] = 0x3FB506DD; $crcArray[167] = 0x48B2364B; $crcArray[168] = 0xD80D2BDA; $crcArray[169] = 0xAF0A1B4C; $crcArray[170] = 0x36034AF6; $crcArray[171] = 0x41047A60; $crcArray[172] = 0xDF60EFC3; $crcArray[173] = 0xA867DF55; $crcArray[174] = 0x316E8EEF; $crcArray[175] = 0x4669BE79; $crcArray[176] = 0xCB61B38C; $crcArray[177] = 0xBC66831A; $crcArray[178] = 0x256FD2A0; $crcArray[179] = 0x5268E236; $crcArray[180] = 0xCC0C7795; $crcArray[181] = 0xBB0B4703; $crcArray[182] = 0x220216B9; $crcArray[183] = 0x5505262F; $crcArray[184] = 0xC5BA3BBE; $crcArray[185] = 0xB2BD0B28; $crcArray[186] = 0x2BB45A92; $crcArray[187] = 0x5CB36A04; $crcArray[188] = 0xC2D7FFA7; $crcArray[189] = 0xB5D0CF31; $crcArray[190] = 0x2CD99E8B; $crcArray[191] = 0x5BDEAE1D; $crcArray[192] = 0x9B64C2B0; $crcArray[193] = 0xEC63F226; $crcArray[194] = 0x756AA39C; $crcArray[195] = 0x26D930A; $crcArray[196] = 0x9C0906A9; $crcArray[197] = 0xEB0E363F; $crcArray[198] = 0x72076785; $crcArray[199] = 0x5005713; $crcArray[200] = 0x95BF4A82; $crcArray[201] = 0xE2B87A14; $crcArray[202] = 0x7BB12BAE; $crcArray[203] = 0xCB61B38; $crcArray[204] = 0x92D28E9B; $crcArray[205] = 0xE5D5BE0D; $crcArray[206] = 0x7CDCEFB7; $crcArray[207] = 0xBDBDF21; $crcArray[208] = 0x86D3D2D4; $crcArray[209] = 0xF1D4E242; $crcArray[210] = 0x68DDB3F8; $crcArray[211] = 0x1FDA836E; $crcArray[212] = 0x81BE16CD; $crcArray[213] = 0xF6B9265B; $crcArray[214] = 0x6FB077E1; $crcArray[215] = 0x18B74777; $crcArray[216] = 0x88085AE6; $crcArray[217] = 0xFF0F6A70; $crcArray[218] = 0x66063BCA; $crcArray[219] = 0x11010B5C; $crcArray[220] = 0x8F659EFF; $crcArray[221] = 0xF862AE69; $crcArray[222] = 0x616BFFD3; $crcArray[223] = 0x166CCF45; $crcArray[224] = 0xA00AE278; $crcArray[225] = 0xD70DD2EE; $crcArray[226] = 0x4E048354; $crcArray[227] = 0x3903B3C2; $crcArray[228] = 0xA7672661; $crcArray[229] = 0xD06016F7; $crcArray[230] = 0x4969474D; $crcArray[231] = 0x3E6E77DB; $crcArray[232] = 0xAED16A4A; $crcArray[233] = 0xD9D65ADC; $crcArray[234] = 0x40DF0B66; $crcArray[235] = 0x37D83BF0; $crcArray[236] = 0xA9BCAE53; $crcArray[237] = 0xDEBB9EC5; $crcArray[238] = 0x47B2CF7F; $crcArray[239] = 0x30B5FFE9; $crcArray[240] = 0xBDBDF21C; $crcArray[241] = 0xCABAC28A; $crcArray[242] = 0x53B39330; $crcArray[243] = 0x24B4A3A6; $crcArray[244] = 0xBAD03605; $crcArray[245] = 0xCDD70693; $crcArray[246] = 0x54DE5729; $crcArray[247] = 0x23D967BF; $crcArray[248] = 0xB3667A2E; $crcArray[249] = 0xC4614AB8; $crcArray[250] = 0x5D681B02; $crcArray[251] = 0x2A6F2B94; $crcArray[252] = 0xB40BBE37; $crcArray[253] = 0xC30C8EA1; $crcArray[254] = 0x5A05DF1B; $crcArray[255] = 0x2D02EF8D; func sr8($x); local $n; $n = floor(bitAnd($x, 0x7fffffff) / 256); if (not(bitAnd($x, 0x80000000) = 0)) then; $n = bitOr($n, 0x800000); endIf; return $n; endFunc; func _convCRC32($data); local $crc, $i, $t, $c, $a, $l; $crc = 0xffffffff; $l = stringLen($data); for $i = 1 to $l; $c = asc(stringMid($data, $i, 1)); $t = bitXor(bitAnd($crc, 0xff), $c); $a = sr8($crc); $crc = bitXor($a, $crcArray[$t]); next; return bitXor($crc, 0xffffffff); endFunc; regards ptrex Contributions :Firewall Log Analyzer for XP - Creating COM objects without a need of DLL's - UPnP support in AU3Crystal Reports Viewer - PDFCreator in AutoIT - Duplicate File FinderSQLite3 Database functionality - USB Monitoring - Reading Excel using SQLRun Au3 as a Windows Service - File Monitor - Embedded Flash PlayerDynamic Functions - Control Panel Applets - Digital Signing Code - Excel Grid In AutoIT - Constants for Special Folders in WindowsRead data from Any Windows Edit Control - SOAP and Web Services in AutoIT - Barcode Printing Using PS - AU3 on LightTD WebserverMS LogParser SQL Engine in AutoIT - ImageMagick Image Processing - Converter @ Dec - Hex - Bin -Email Address Encoder - MSI Editor - SNMP - MIB ProtocolFinancial Functions UDF - Set ACL Permissions - Syntax HighLighter for AU3ADOR.RecordSet approach - Real OCR - HTTP Disk - PDF Reader Personal Worldclock - MS Indexing Engine - Printing ControlsGuiListView - Navigation (break the 4000 Limit barrier) - Registration Free COM DLL Distribution - Update - WinRM SMART Analysis - COM Object Browser - Excel PivotTable Object - VLC Media Player - Windows LogOnOff Gui -Extract Data from Outlook to Word & Excel - Analyze Event ID 4226 - DotNet Compiler Wrapper - Powershell_COM - New Link to comment Share on other sites More sharing options...
BrettF Posted October 24, 2007 Share Posted October 24, 2007 I'd love to look at this... In the mean time... Look at http://www.greenend.org.uk/rjk/2004/crc.html Vist my blog!UDFs: Opens The Default Mail Client | _LoginBox | Convert Reg to AU3 | BASS.au3 (BASS.dll) (Includes various BASS Libraries) | MultiLang.au3 (Multi-Language GUIs!)Example Scripts: Computer Info Telnet Server | "Secure" HTTP Server (Based on Manadar's Server)Software: AAMP- Advanced AutoIt Media Player | WorldCam | AYTU - Youtube Uploader Tutorials: Learning to Script with AutoIt V3Projects (Hardware + AutoIt): ArduinoUseful Links: AutoIt 1-2-3 | The AutoIt Downloads Section: | SciTE4AutoIt3 Full Version! Link to comment Share on other sites More sharing options...
fi3ldy Posted October 24, 2007 Author Share Posted October 24, 2007 Thanks for the replies. Ok, taking a look at that link, I'm kind of urging onto using file md5 hashes, as I'm not going to be able to work with crc32, seems to much work Link to comment Share on other sites More sharing options...
SkinnyWhiteGuy Posted October 24, 2007 Share Posted October 24, 2007 As far as generating the a file for crc32, I have no clue, but I can help you generate a hex string for crc32: Func Crc32($pData) Local $crc32tab[256] = [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] Local $pCrc32 = 0xFFFFFFFF, $i = 0 For $i = 1 To BinaryLen($pData) $pCrc32 = BitXOR(BitShift($pCrc32,8),$crc32tab[BitXOR(BinaryMid($pData,$i,1),BitAND($pCrc32,0x000000FF))]) Next $pCrc32 = BitNOT($pCrc32) Return Hex($pCrc32) EndFunc I didn't understand ptrex's functions, but the above was translated from the rehash project source code found on sourceforge.net. I tested it to the best of my abilities, and it seems to work as intended. I coded it with Binary info because whether you pass in a string or binary, binary functions will work on it, but String functions don't like to work with Binary datatypes correctly (I think, been awhile). Link to comment Share on other sites More sharing options...
ptrex Posted October 24, 2007 Share Posted October 24, 2007 (edited) @all I changed it for readability and added an example cfr. the CRC16 example. expandcollapse popupDim $avTest[5] = ["Test line 1.", "abcdefghijklmnopqrstuvwxyz01234567890", 0xFEDCBA98, "", StringToBinary("Binary test.")] $sMsg = "" For $n = 0 To UBound($avTest) - 1 $sMsg &= $avTest[$n] & " CRC32 = " & Crc32($avTest[$n]) & @CRLF Next MsgBox(64, "StringCrc16 Test", $sMsg) Func Crc32($pData) Local $crc32tab[256] = [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] Local $pCrc32 = 0xFFFFFFFF, $i = 0 For $i = 1 To BinaryLen($pData) $pCrc32 = BitXOR(BitShift($pCrc32,8),$crc32tab[BitXOR(BinaryMid($pData,$i,1),BitAND($pCrc32,0x000000FF))]) Next $pCrc32 = BitNOT($pCrc32) Return Hex($pCrc32) EndFunc Regards, ptrex Edited October 24, 2007 by ptrex Contributions :Firewall Log Analyzer for XP - Creating COM objects without a need of DLL's - UPnP support in AU3Crystal Reports Viewer - PDFCreator in AutoIT - Duplicate File FinderSQLite3 Database functionality - USB Monitoring - Reading Excel using SQLRun Au3 as a Windows Service - File Monitor - Embedded Flash PlayerDynamic Functions - Control Panel Applets - Digital Signing Code - Excel Grid In AutoIT - Constants for Special Folders in WindowsRead data from Any Windows Edit Control - SOAP and Web Services in AutoIT - Barcode Printing Using PS - AU3 on LightTD WebserverMS LogParser SQL Engine in AutoIT - ImageMagick Image Processing - Converter @ Dec - Hex - Bin -Email Address Encoder - MSI Editor - SNMP - MIB ProtocolFinancial Functions UDF - Set ACL Permissions - Syntax HighLighter for AU3ADOR.RecordSet approach - Real OCR - HTTP Disk - PDF Reader Personal Worldclock - MS Indexing Engine - Printing ControlsGuiListView - Navigation (break the 4000 Limit barrier) - Registration Free COM DLL Distribution - Update - WinRM SMART Analysis - COM Object Browser - Excel PivotTable Object - VLC Media Player - Windows LogOnOff Gui -Extract Data from Outlook to Word & Excel - Analyze Event ID 4226 - DotNet Compiler Wrapper - Powershell_COM - New Link to comment Share on other sites More sharing options...
eltorro Posted October 31, 2007 Share Posted October 31, 2007 I've had this for quite some time. It generates the crc table on startup instead of having to hardcode it. expandcollapse popup;converted from http://www.vbforums.com/showthread.php?t=412922 #include <GUIConstants.au3> Global $pInititialized Global $pTable[256] $Form1 = GUICreate("CRC32", 403, 239, 209, 164) $FilePath = GUICtrlCreateInput("C:\Program Files\AutoIt3\Au3Info.exe", 6, 32, 347, 21) ;$FilePath = GUICtrlCreateInput("c:\Python25\shelve\workon\kjv.txt", 6, 32, 347, 21) $Browse = GUICtrlCreateButton("...", 360, 32, 28, 22, 0) GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif") $GetCRC = GUICtrlCreateButton("Generate CRC32", 98, 61, 193, 33, 0) GUICtrlSetState(-1, $GUI_DISABLE) $Group1 = GUICtrlCreateGroup("Results:", 9, 98, 384, 127) $FileSize = GUICtrlCreateLabel("", 70, 122, 315, 17, $SS_SUNKEN) GUICtrlSetBkColor(-1, 0xFFFFFF) $FileCRC = GUICtrlCreateLabel("", 70, 145, 315, 17, $SS_SUNKEN) GUICtrlSetBkColor(-1, 0xFFFFFF) $TotTime = GUICtrlCreateLabel("", 70, 168, 315, 17, $SS_SUNKEN) GUICtrlSetBkColor(-1, 0xFFFFFF) $Label5 = GUICtrlCreateLabel("File Size:", 20, 122, 46, 17) $Label6 = GUICtrlCreateLabel("CRC32:", 20, 145, 41, 17) $Label7 = GUICtrlCreateLabel("Time:", 20, 168, 30, 17) $Progress1 = GuiCtrlCreateProgress(20,195,365,17) GUICtrlCreateGroup("", -99, -99, 1, 1) $Label4 = GUICtrlCreateLabel("File Name:", 6, 8, 54, 17) GUISetState(@SW_SHOW) crcInit() While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE Exit Case $Browse GUICtrlSetData($FilePath, FileOpenDialog("Select File", "::{20D04FE0-3AEA-1069-A2D8-08002B30309D}", "All Files (*.*)", 1)) Case $GetCRC If FileExists(GUICtrlRead($FilePath)) Then if (StringInStr(FileGetAttrib(GUICtrlRead($FilePath)), "D")) Then MsgBox(266288, "CRC", "Please Select a file instead of a folder.") Else $timer = TimerInit() GUICtrlSetData($FileSize, FileGetSize(GUICtrlRead($FilePath))) GUICtrlSetData($FileCRC, "") GUICtrlSetData($TotTime, "") GUICtrlSetData($FileCRC, crc32File(GUICtrlRead($FilePath))) GUICtrlSetData($TotTime, _TicksToTime(TimerDiff($timer))) EndIf EndIf EndSwitch If GUICtrlRead($FilePath) <> "" Then If BitAND(GUICtrlGetState($GetCRC), $GUI_DISABLE) = $GUI_DISABLE Then GUICtrlSetState($GetCRC, $GUI_ENABLE) Else If BitAND(GUICtrlGetState($GetCRC), $GUI_ENABLE) = $GUI_ENABLE Then GUICtrlSetState($GetCRC, $GUI_DISABLE) EndIf WEnd Func crcInit($Poly = 0xEDB88320) Local $crc Local $i Local $j For $i = 0 To 255 $crc = $i For $j = 0 To 7 If BitAND($crc, 0x1) Then $crc = BitXOR(BitAND(BitAND($crc, 0xFFFFFFFE) / 0x2, 0x7FFFFFFF), $Poly) Else $crc = BitAND(($crc / 0x2), 0x7FFFFFFF) EndIf Next $pTable[$i] = $crc Next $pInititialized = 1 EndFunc ;==>crcInit Func crc32File($Path) Local $Buffer Local $BufferSize Local $crc Local $FileNr Local $Length Local $i If Not $pInititialized Then crcInit() $FileLen = FileGetSize($Path) $Length = $FileLen $BufferSize = 1024 * 32 ;'32 KB If $Length < $BufferSize Then $BufferSize = $Length $ReadStruct = DllStructCreate("byte[" & $BufferSize & "]") $FileNr = FileOpen($Path, 0) Local $Progress = $Length $crc = 0xFFFFFFFF Local $TotalProgress = 0 GuiCtrlSetData($Progress1,0) While $Length If $Length < $BufferSize Then $BufferSize = $Length EndIf DllStructSetData($ReadStruct, 1, FileRead($FileNr, $BufferSize)) For $i = 1 To $BufferSize $Buffer = (DllStructGetData($ReadStruct, 1, $i)) $crc = BitXOR(BitAND((BitAND($crc, 0xFFFFFF00) / 0x100), 0xFFFFFF) , ($pTable[BitAND(BitXOR($Buffer, $crc), 0xFF) ])) Next $Length = $Length - $BufferSize $TotalProgress = $TotalProgress + $BufferSize GuiCtrlSetData($Progress1,Int(100* (($TotalProgress + $i) / $Progress))) WEnd $ReadStruct = 0 FileClose($FileNr) Return Hex(BitNOT($crc), 8) EndFunc ;==>crc32File ;=============================================================================== ; ; Description: Converts the specified tick amount to hours, minutes, and ; seconds. ; Parameter(s): $iTicks - Tick amount ; ; Requirement(s): None ; Return Value(s): On Success Array of times ; On Failure - 0 and sets @ERROR = 1 ; Author(s): Marc <mrd at gmx de> ; This version modified by eltorro gehossafats at netmdc dot com ; Note(s): None ; ;=============================================================================== Func _TicksToTime($iTicks) If Number($iTicks) > 0 Then $iTicks = Round($iTicks / 1000) Local $iHours = Int($iTicks / 3600) $iTicks = Mod($iTicks, 3600) Local $iMins = Int($iTicks / 60) Local $iSecs = Round(Mod($iTicks, 60)) ; If $iHours = 0 then $iHours = 24 Return StringFormat("%02i:%02i:%02i", $iHours, $iMins, $iSecs) Else SetError(1) Return "" EndIf EndFunc ;==>_TicksToTime Regards, [indent]ElTorro[/indent][font="Book"] Decide, Commit, Achieve[/font]_ConfigIO.au3Language Translation --uses Google(tm) MsgBox Move XML wrapper UDF XML2TreeView Zip functionality Split your GUI Save Print ScreenZipPluginEdit In Place listviewSome of my scripts on Google code Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now