A good practice program is the good old fashioned hex dump.
Code:
$ hd nevergonnagiveyouup.wav | head -10
00000000 52 49 46 46 24 c5 1e 01 57 41 56 45 66 6d 74 20 |RIFF$...WAVEfmt |
00000010 10 00 00 00 01 00 01 00 44 ac 00 00 88 58 01 00 |........D....X..|
00000020 02 00 10 00 64 61 74 61 00 c5 1e 01 01 00 01 00 |....data........|
00000030 01 00 01 00 ff ff 03 00 fd ff 05 00 fd ff 05 00 |................|
00000040 fc ff 03 00 ff ff 02 00 fc ff 04 00 fd ff 05 00 |................|
00000050 fd ff 03 00 fd ff 03 00 01 00 ff ff 03 00 fd ff |................|
00000060 07 00 f8 ff 08 00 f8 ff 04 00 01 00 fc ff 04 00 |................|
00000070 fa ff 06 00 fa ff 04 00 fc ff 02 00 fe ff 02 00 |................|
00000080 fc ff 05 00 fc ff 05 00 fd ff 02 00 fe ff 01 00 |................|
00000090 02 00 fa ff 04 00 fb ff 06 00 fb ff 02 00 ff ff |................|
When you're experienced at reading files one byte a time, then you can start looking for jpeg magic sequences.