ZIP File Contents Analysis[Back] This is a page for ZIP file analysis (Header). Try sample file: Try an example
What are we looking for?For a ZIP file, we look for the byte sequence 504B0304 or the ASCII sequence of PK.. Try your ownOr enter your own URL to analyse the first six sectors of the file: |
File contents analysisStarting tag (should be 0x504b0304): 504B0304 File signature analysis (Header analysis)ZIP file (Starts with 0x50 0x04B)Additional scanning signature analysisPossible: [ZIP files, sig: 504B03] Count: 1 File hex characters[00000000] 50 4B 03 04 14 00 02 00 08 00 80 9D 6C 39 DA 4D PK..........l9.M Base-64 conversionUEsDBBQAAgAIAICdbDnaTbgPkAEAACcGAAAJAAAAYW5pbS54YW1s7VTRToMwFH038R+afgDFaUwksMTNqQ9qlo1kzxXuoLG0pC2Kf28tbGPKFBMffJCnAuece+856Q1XTKTyBdXBlFOtI7wq15dlyVlCDZPi3Gv+n+DjI2SfuuDCgnJjyoAQneRQUO0VLFFSy7XxElmQFybWNRn5/jmpacFJqUCDME6vKxPUPxNquTEzHGyfbV/oFliWmwif+j5GK5aavDmPG3h4o1jant370tDkaU4FcHRPVcZEhEdb9Ba1gMRQkXHYSF6c7UrZ8wf8Pse7Zpz3IJr6krN0KrlUE1Xp3Dr/QAs70KVghfPonYyRQ0R4ASlGpK8a+bZcp6FYsSwDpS3qQFuzZ5tRC0MLWRlI3af3FjYq97LSMBMGFD4wnZOagHV1aaR6fZRUpV9A20AGIh3a+bL16jNhp+bFNl4wfe4OoM2VLEGZ1wi7ij2UWEZ4wivA6KpSTjvCfuAHo/7A9sMbNHRIhlkZkm56v5DxHdBn+M+4ydhdwT8X8Vf7oHPbD0C6C5HsNuJmZ5J2aYakWbPjN1BLAQIUABQAAgAIAICdbDnaTbgPkAEAACcGAAAJACQAAAAAAAEAIAAAAAAAAABhbmltLnhhbWwKACAAAAAAAAEAGAAQfpgB/0TJAQBXmAH/RMkBEJNWAf9EyQFQSwUGAAAAAAEAAQBbAAAAtwEAAAAAUEsDBBQAAgAIAICdbDnaTbgPkAEAACcGAAAJAAAAYW5pbS54YW1s7VTRToMwFH038R+afgDF |
Sample code
public string getZip(System.IO.Stream file) { /* 0 4 Local file header signature = (read as a little-endian number) 4 2 Version needed to extract (minimum) 6 2 General purpose bit flag 8 2 Compression method 10 2 File last modification time 12 2 File last modification date 14 4 CRC-32 18 4 Compressed size 22 4 Uncompressed size 26 2 File name length (n) 28 2 Extra field length (m) 30 n File name 30+n m Extra field */ string TextBox1 = ""; byte[] b = ReadFully(file, file.Length); TextBox1 = "Starting tag (should be 0x504b0304): " + Global.intToHex(b[0]) + Global.intToHex(b[1]) + Global.intToHex(b[2]) + Global.intToHex(b[3]) + "<br/>"; TextBox1 += "Version: " + Global.intToHex(b[4]) + " " + Global.intToHex(b[5]) + "<br/>"; TextBox1 += "General purpose bit flag: " + Global.intToHex(b[6]) + " " + Global.intToHex(b[7]) + "<br/>"; TextBox1 += "Compression method: " + Global.intToHex(b[8]) + " " + Global.intToHex(b[9]) + "<br/>"; TextBox1 += "File last modification time: " + Global.intToHex(b[10]) + " " + Global.intToHex(b[11]) + "<br/>"; TextBox1 += "File last modification date: " + Global.intToHex(b[12]) + " " + Global.intToHex(b[13]) + "<br/>"; TextBox1 += "CRC: " + Global.intToHex(b[14]) + Global.intToHex(b[15]) + Global.intToHex(b[16]) + Global.intToHex(b[17]) + "<br/>"; TextBox1 += "Compessed size: " + Global.intToHex(b[18]) + Global.intToHex(b[19]) + Global.intToHex(b[20]) + Global.intToHex(b[21]) + "<br/>"; TextBox1 += "Uncompressed size: " + Global.intToHex(b[22]) + Global.intToHex(b[23]) + Global.intToHex(b[24]) + Global.intToHex(b[25]) + "<br/>"; TextBox1 += "File name length: " + Global.intToHex(b[26]) + Global.intToHex(b[27]) + "<br/>"; TextBox1 += "Extra field length: " + Global.intToHex(b[28]) + Global.intToHex(b[29]) + "<br/>"; TextBox1 += "Filename: "; for (int i = 0; i < b[26]; i++) TextBox1 += (char)b[30 + i]; TextBox1 += "<br/>"; return (TextBox1); }