More file type identification improvements

- Split fonts into their own file.
 - Improved JSON matching.
 - Added XML-RPC content matching using application/xml-rpc
 - Added OCSP requests
This commit is contained in:
Seth Hall 2015-04-09 01:23:55 -04:00
parent 6162d986a2
commit e8c87e19bd
5 changed files with 65 additions and 58 deletions

View file

@ -1,5 +1,6 @@
@load-sigs ./archive @load-sigs ./archive
@load-sigs ./audio @load-sigs ./audio
@load-sigs ./font
@load-sigs ./general @load-sigs ./general
@load-sigs ./image @load-sigs ./image
@load-sigs ./msoffice @load-sigs ./msoffice

View file

@ -0,0 +1,40 @@
# Web Open Font Format
signature file-woff {
file-magic /^wOFF/
file-mime "application/font-woff", 70
}
# TrueType font
signature file-ttf {
file-mime "application/x-font-ttf", 80
file-magic /^\x00\x01\x00\x00\x00/
}
signature file-embedded-opentype {
file-mime "application/vnd.ms-fontobject", 50
file-magic /^.{34}LP/
}
# X11 SNF font
signature file-snf {
file-mime "application/x-font-sfn", 70
file-magic /^(\x04\x00\x00\x00|\x00\x00\x00\x04).{100}(\x04\x00\x00\x00|\x00\x00\x00\x04)/
}
# OpenType font
signature file-opentype {
file-mime "application/vnd.ms-opentype", 70
file-magic /^OTTO/
}
# FrameMaker Font file
signature file-maker-screen-font {
file-mime "application/x-mif", 190
file-magic /^\x3cMakerScreenFont/
}
# >0 string,=SplineFontDB: (len=13), ["Spline Font Database "], swap_endian=0
signature file-spline-font-db {
file-mime "application/vnd.font-fontforge-sfd", 160
file-magic /^SplineFontDB\x3a/
}

View file

@ -10,12 +10,18 @@ signature file-plaintext {
# This can't go well... # This can't go well...
signature file-json { signature file-json {
file-mime "text/json", 1 file-mime "text/json", 1
file-magic /^(\xef\xbb\xbf)?[\x0d\x0a[:blank:]]*\{[\x0d\x0a[:blank:]]*(['"][a-zA-Z\\][a-zA-Z0-9\\]*['"]|[a-zA-Z][a-zA-Z0-9]*)[\x0d\x0a[:blank:]]*:[\x0d\x0a[:blank:]]*(['"]|\[|\{|[0-9]|true|false)/ file-magic /^(\xef\xbb\xbf)?[\x0d\x0a[:blank:]]*\{[\x0d\x0a[:blank:]]*(["][^"]{1,}["]|[a-zA-Z][a-zA-Z0-9\\_]*)[\x0d\x0a[:blank:]]*:[\x0d\x0a[:blank:]]*(["]|\[|\{|[0-9]|true|false)/
} }
signature file-json2 { signature file-json2 {
file-mime "text/json", 1 file-mime "text/json", 1
file-magic /^(\xef\xbb\xbf)?[\x0d\x0a[:blank:]]*\[[\x0d\x0a[:blank:]]*(['"][a-zA-Z\\][a-zA-Z0-9\\]*['"]|[0-9]{1,})[\x0d\x0a[:blank:]]*,[\x0d\x0a[:blank:]]*(['"]|\[|\{|[0-9]|true|false)/ file-magic /^(\xef\xbb\xbf)?[\x0d\x0a[:blank:]]*\[[\x0d\x0a[:blank:]]*(((["][^"]{1,}["]|[0-9]{1,}(\.[0-9]{1,})?|true|false)[\x0d\x0a[:blank:]]*,)|\{|\[)[\x0d\x0a[:blank:]]*/
}
# Match empty JSON documents.
signature file-json3 {
file-mime "text/json", 0
file-magic /^(\xef\xbb\xbf)?[\x0d\x0a[:blank:]]*(\[\]|\{\})[\x0d\x0a[:blank:]]*$/
} }
signature file-xml { signature file-xml {
@ -63,6 +69,11 @@ signature file-cross-domain-policy2 {
file-magic /^([\x0d\x0a[:blank:]]*(<!--.*-->)?[\x0d\x0a[:blank:]]*)*(<\?xml .*\?>)?([\x0d\x0a[:blank:]]*(<!--.*-->)?[\x0d\x0a[:blank:]]*)*<[cC][rR][oO][sS][sS]-[dD][oO][mM][aA][iI][nN]-[pP][oO][lL][iI][cC][yY]/ file-magic /^([\x0d\x0a[:blank:]]*(<!--.*-->)?[\x0d\x0a[:blank:]]*)*(<\?xml .*\?>)?([\x0d\x0a[:blank:]]*(<!--.*-->)?[\x0d\x0a[:blank:]]*)*<[cC][rR][oO][sS][sS]-[dD][oO][mM][aA][iI][nN]-[pP][oO][lL][iI][cC][yY]/
} }
signature file-xmlrpc {
file-mime "application/xml-rpc", 49
file-magic /^(\xef\xbb\xbf)?([\x0d\x0a[:blank:]]*(<!--.*-->)?[\x0d\x0a[:blank:]]*)*(<\?xml .*\?>)?([\x0d\x0a[:blank:]]*(<!--.*-->)?[\x0d\x0a[:blank:]]*)*<[mM][eE][tT][hH][oO][dD][rR][eE][sS][pP][oO][nN][sS][eE]>/
}
signature file-coldfusion { signature file-coldfusion {
file-mime "magnus-internal/cold-fusion", 20 file-mime "magnus-internal/cold-fusion", 20
file-magic /^([\x0d\x0a[:blank:]]*(<!--.*-->)?)*<(CFPARAM|CFSET|CFIF)/ file-magic /^([\x0d\x0a[:blank:]]*(<!--.*-->)?)*<(CFPARAM|CFSET|CFIF)/
@ -80,21 +91,21 @@ signature file-jar {
} }
signature file-java-applet { signature file-java-applet {
file-magic /^\xca\xfe\xba\xbe...[\x2d-\x34]/
file-mime "application/x-java-applet", 71 file-mime "application/x-java-applet", 71
file-magic /^\xca\xfe\xba\xbe...[\x2d-\x34]/
} }
signature file-oscp-response { # OCSP requests over HTTP.
signature file-ocsp-request {
file-magic /^.{11,19}\x06\x05\x2b\x0e\x03\x02\x1a/
file-mime "application/ocsp-request", 71
}
signature file-ocsp-response {
file-magic /^.{11,19}\x06\x09\x2B\x06\x01\x05\x05\x07\x30\x01\x01/ file-magic /^.{11,19}\x06\x09\x2B\x06\x01\x05\x05\x07\x30\x01\x01/
file-mime "application/ocsp-response", 71 file-mime "application/ocsp-response", 71
} }
# Web Open Font Format
signature file-woff {
file-magic /^wOFF/
file-mime "application/font-woff", 70
}
# Shockwave flash # Shockwave flash
signature file-swf { signature file-swf {
file-magic /^(F|C|Z)WS/ file-magic /^(F|C|Z)WS/
@ -188,7 +199,7 @@ signature file-javascript {
signature file-javascript2 { signature file-javascript2 {
file-mime "application/javascript", 60 file-mime "application/javascript", 60
file-magic /^[\x0d\x0a[:blank:]]*<[sS][cC][rR][iI][pP][tT][[:blank:]]+([tT][yY][pP][eE]|[lL][aA][nN][gG][uU][aA][gG][eE])=['"]?([tT][eE][xX][tT]\/)?[jJ][aA][vV][aA][sS][cC][rR][iI][pP][tT]['"]?>/ file-magic /^[\x0d\x0a[:blank:]]*<[sS][cC][rR][iI][pP][tT][[:blank:]]+([tT][yY][pP][eE]|[lL][aA][nN][gG][uU][aA][gG][eE])=['"]?([tT][eE][xX][tT]\/)?[jJ][aA][vV][aA][sS][cC][rR][iI][pP][tT]/
} }
signature file-javascript3 { signature file-javascript3 {

View file

@ -99,19 +99,12 @@ signature file-magic-auto34 {
file-magic /(\x23VRML ?V1\x2e0 ?ascii)/ file-magic /(\x23VRML ?V1\x2e0 ?ascii)/
} }
# >0 string,=<MakerScreenFont (len=16), ["FrameMaker Font file"], swap_endian=0
signature file-magic-auto35 {
file-mime "application/x-mif", 190
file-magic /(\x3cMakerScreenFont)/
}
# >0 string,=Extended Module: (len=16), ["Fasttracker II module sound data"], swap_endian=0 # >0 string,=Extended Module: (len=16), ["Fasttracker II module sound data"], swap_endian=0
signature file-magic-auto36 { signature file-magic-auto36 {
file-mime "audio/x-mod", 190 file-mime "audio/x-mod", 190
file-magic /(Extended Module\x3a)/ file-magic /(Extended Module\x3a)/
} }
# >0 string/t,=<?xml version=" (len=15), [""], swap_endian=0 # >0 string/t,=<?xml version=" (len=15), [""], swap_endian=0
# >>20 search/wc/1000,=<!DOCTYPE X3D (len=13), ["X3D (Extensible 3D) model xml text"], swap_endian=0 # >>20 search/wc/1000,=<!DOCTYPE X3D (len=13), ["X3D (Extensible 3D) model xml text"], swap_endian=0
signature file-magic-auto40 { signature file-magic-auto40 {
@ -214,12 +207,6 @@ signature file-magic-auto61 {
file-magic /(.{39})(\x3cgmr\x3aWorkbook)/ file-magic /(.{39})(\x3cgmr\x3aWorkbook)/
} }
# >0 string,=SplineFontDB: (len=13), ["Spline Font Database "], swap_endian=0
signature file-magic-auto63 {
file-mime "application/vnd.font-fontforge-sfd", 160
file-magic /(SplineFontDB\x3a)/
}
# >0 string/ct,=delivered-to: (len=13), ["SMTP mail text"], swap_endian=0 # >0 string/ct,=delivered-to: (len=13), ["SMTP mail text"], swap_endian=0
signature file-magic-auto64 { signature file-magic-auto64 {
file-mime "message/rfc822", 160 file-mime "message/rfc822", 160
@ -514,12 +501,6 @@ signature file-magic-auto162 {
file-magic /(\x3c\x3fxml)(.{15})(.*)( xmlns\x3d)(['"]http:\x2f\x2fwww.opengis.net\x2fkml)/ file-magic /(\x3c\x3fxml)(.{15})(.*)( xmlns\x3d)(['"]http:\x2f\x2fwww.opengis.net\x2fkml)/
} }
# >0 string,=\000\001\000\000\000 (len=5), ["TrueType font data"], swap_endian=0
signature file-magic-auto187 {
file-mime "application/x-font-ttf", 80
file-magic /(\x00\x01\x00\x00\x00)/
}
# >0 string,=%PDF- (len=5), ["PDF document"], swap_endian=0 # >0 string,=%PDF- (len=5), ["PDF document"], swap_endian=0
signature file-magic-auto189 { signature file-magic-auto189 {
file-mime "application/pdf", 80 file-mime "application/pdf", 80
@ -576,14 +557,6 @@ signature file-magic-auto203 {
# file-magic /(.{4})/ # file-magic /(.{4})/
#} #}
# >0 lelong&,=4 (0x00000004), [""], swap_endian=0
# >>104 lelong&,=4 (0x00000004), ["X11 SNF font data, LSB first"], swap_endian=0
signature file-magic-auto217 {
file-mime "application/x-font-sfn", 70
file-magic /(\x04\x00\x00\x00)(.{100})(\x04\x00\x00\x00)/
}
# This didn't auto-generate correctly due to non-sequential offsets and # This didn't auto-generate correctly due to non-sequential offsets and
# use of bitwise/relational comparisons. At a glance: may not be # use of bitwise/relational comparisons. At a glance: may not be
# that common/useful, leaving for later. # that common/useful, leaving for later.
@ -1279,18 +1252,6 @@ signature file-magic-auto378 {
file-magic /(\x13\x57\x9a\xce)/ file-magic /(\x13\x57\x9a\xce)/
} }
# >0 belong&,=4 (0x00000004), ["X11 SNF font data, MSB first"], swap_endian=0
signature file-magic-auto379 {
file-mime "application/x-font-sfn", 70
file-magic /(\x00\x00\x00\x04)/
}
# >0 string,=OTTO (len=4), ["OpenType font data"], swap_endian=0
signature file-magic-auto380 {
file-mime "application/vnd.ms-opentype", 70
file-magic /(OTTO)/
}
# >0 string,=<MML (len=4), ["FrameMaker MML file"], swap_endian=0 # >0 string,=<MML (len=4), ["FrameMaker MML file"], swap_endian=0
signature file-magic-auto381 { signature file-magic-auto381 {
file-mime "application/x-mif", 70 file-mime "application/x-mif", 70
@ -1539,12 +1500,6 @@ signature file-magic-auto496 {
file-magic /(\x85\x02)/ file-magic /(\x85\x02)/
} }
# >34 string,=LP (len=2), ["Embedded OpenType (EOT)"], swap_endian=0
signature file-magic-auto506 {
file-mime "application/vnd.ms-fontobject", 50
file-magic /(.{34})(LP)/
}
# >0 beshort&,=2935 (0x0b77), ["ATSC A/52 aka AC-3 aka Dolby Digital stream,"], swap_endian=0 # >0 beshort&,=2935 (0x0b77), ["ATSC A/52 aka AC-3 aka Dolby Digital stream,"], swap_endian=0
signature file-magic-auto507 { signature file-magic-auto507 {
file-mime "audio/vnd.dolby.dd-raw", 50 file-mime "audio/vnd.dolby.dd-raw", 50

View file

@ -85,11 +85,11 @@ signature file-quicktime {
# MPEG v4 video # MPEG v4 video
signature file-mp4 { signature file-mp4 {
file-mime "video/mp4", 70 file-mime "video/mp4", 70
file-magic /(.{4})(ftyp)(isom|mp4[12])/ file-magic /^....ftyp(isom|mp4[12])/
} }
# 3GPP Video # 3GPP Video
signature file-3gpp { signature file-3gpp {
file-mime "video/3gpp", 60 file-mime "video/3gpp", 60
file-magic /^....(ftyp)(3g[egps2]|avc1|mmp4)/ file-magic /^....ftyp(3g[egps2]|avc1|mmp4)/
} }