Adam est orienté dans le bon sens.
Si vous voulez savoir comment sens presque n'importe quel fichier, regardez la base de données derrière le file
commande sur un UNIX, Linux, ou Mac OS X de la machine.
file
utilise une base de données des "nombres magiques" - ces premiers octets Adam énumérés à sens le type d'un fichier. man file
va vous dire où trouver la base de données sur votre machine, par exemple, /usr/share/file/magic
. man magic
va vous raconter son format.
Vous pouvez soit écrire votre propre code de détection basé sur ce que vous voyez dans la base de données, l'utilisation de pré-emballés bibliothèques (par exemple, python-magie), ou - si vous êtes vraiment aventureux, - mettre en place un .La version NET de libmagic
. Je ne pouvais pas en trouver un, et l'espoir d'un autre membre peut point une.
Dans le cas où vous n'avez pas une machine UNIX à portée de main, la base de données ressemble à ceci:
# PNG [Portable Network Graphics, ou "PNG n'est Pas GIF"] images
# (Greg Roelofs, newt@uchicago.edu)
# (Albert Cahalan, acahalan@cs.uml.edu)
#
# 137 P N G \r \n ^Z \n [4 octets] H E A D [TÊTE de données] [CHEF de la crc] ...
#
0 string \x89PNG image PNG de données,
>4 appartiennent !0x0d0a1a0a CORROMPU,
>4 appartiennent 0x0d0a1a0a
>>16 appartiennent à x %ld x
>>20 appartiennent à x %ld,
>>24 octets x %d-bit
>>25 octet 0 en niveaux de gris,
>>25 octet 2 \b/couleur RVB,
>>25 octet 3 palettes,
>>25 octet 4 gris+alpha,
>>25 octet 6 \b/couleur RGBA,
#>>26 octet 0 dégonfler/32K,
>>28 octet 0 non entrelacé
>>28 octet 1 entrelacé
1 chaîne PNG PNG données d'image, CORROMPU
# GIF
0 chaîne GIF8 image GIF de données
>4 cordes 7a \b, la version 8% s,
>4 cordes 9a \b, la version 8% s,
>6 leshort >0 %hd x
>8 leshort >0 %hd
#>10 byte &0x80 couleur mappé,
#>10 byte&0x07 =0x00 2 couleurs
#>10 byte&0x07 =0x01 4 couleurs
#>10 byte&0x07 =0x02 8 couleurs
#>10 byte&0x07 =0x03 16 couleurs
#>10 byte&0x07 =0x04 32 couleurs
#>10 byte&0x07 =0x05 64 couleurs
#>10 byte&0x07 =0x06 128 couleurs
#>10 byte&0x07 =0x07 256 couleurs
Bonne chance!