You ever wanted to create a "hidden" ZIP File which still can easily be opened? Here is a solution for you:

Create your ZIP File, then create a "container" file, in my case i used an PNG image. Now append the ZIP to the PNG: cat test.png >> test_out

If you now check the filetype of the created file, it will be PNG!

$ file; Zip archive data, at least v1.0 to extract
$ file test.png
test.png; PNG image, 238 x 180, 8-bit/color RGB, non-interlaced
$ cat test.png >> test_out
$ file test_out
test_out; PNG image, 238 x 180, 8-bit/color RGB, non-interlaced

but you can still use common programs to extract the ZIP file from test_out and you can still view the png image with no problem. Why? Because most programs to identify filetypes only take a look at the file-magic (which is at the beginning). For PNG files it is 47 4E 50 89 (Little Endian), and if you take a look at the beginning of the test_out file, you see excactly that. Now what about the ZIP file? ZIP Files also have a magic, but parsing ZIP files is a little bit different. Most programs will start from the end of the file and search for a central directory entry (looking for the byte sequence 06 05 4B 50 (Little Endian)) and then parse these entries to find the local headers (byte sequence 03 04 4B 50). But most filetype identification will look for this local header in the front of the file, but there is none, so the identification for the ZIP file will fail (and of course PNG is shown, because there is a png header).

If you yell at me like "you will not hide anything with it!" you are right. This method is just to understand the different types of file parsing and understand the process of filetype identification.

To see whats happening, i attached the pngzip file here:

The image appears to be also a ZIP file!