# General purpose file magic signatures. # Plaintext # (Including BOMs for UTF-8, 16, and 32) signature file-plaintext { file-mime "text/plain", -20 file-magic /^(\xef\xbb\xbf|(\x00\x00)?\xfe\xff|\xff\xfe(\x00\x00)?)?[[:space:]\x20-\x7E]{10}/ } # This can't go well... signature file-json { 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)/ } signature file-json2 { 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)/ } signature file-xml { file-mime "application/xml", 10 file-magic /^(\xef\xbb\xbf)?([\x0d\x0a[:blank:]]*()?[\x0d\x0a[:blank:]]*)*<\?xml / } signature file-xhtml { file-mime "text/html", 100 file-magic /^(\xef\xbb\xbf)?([\x0d\x0a[:blank:]]*()?[\x0d\x0a[:blank:]]*)*(<\?xml .*\?>)?([\x0d\x0a[:blank:]]*()?[\x0d\x0a[:blank:]]*)*<(![dD][oO][cC][tT][yY][pP][eE] {1,}[hH][tT][mM][lL]|[hH][tT][mM][lL]|[mM][eE][tT][aA] {1,}[hH][tT][tT][pP]-[eE][qQ][uU][iI][vV])/ } signature file-html { file-mime "text/html", 49 file-magic /^(\xef\xbb\xbf)?([\x0d\x0a[:blank:]]*()?[\x0d\x0a[:blank:]]*)*(<\?xml .*\?>)?([\x0d\x0a[:blank:]]*()?[\x0d\x0a[:blank:]]*)*)?[\x0d\x0a[:blank:]]*)*(<\?xml .*\?>)?([\x0d\x0a[:blank:]]*()?[\x0d\x0a[:blank:]]*)*<([hH][eE][aA][dD]|[hH][tT][mM][lL]|[tT][iI][tT][lL][eE]|[bB][oO][dD][yY])/ } signature file-rss { file-mime "text/rss", 90 file-magic /^(\xef\xbb\xbf)?([\x0d\x0a[:blank:]]*()?[\x0d\x0a[:blank:]]*)*(<\?xml .*\?>)?([\x0d\x0a[:blank:]]*()?[\x0d\x0a[:blank:]]*)*<[rR][sS][sS]/ } signature file-atom { file-mime "text/atom", 100 file-magic /^(\xef\xbb\xbf)?([\x0d\x0a[:blank:]]*()?[\x0d\x0a[:blank:]]*)*(<\?xml .*\?>)?([\x0d\x0a[:blank:]]*()?[\x0d\x0a[:blank:]]*)*<([rR][sS][sS][^>]*xmlns:atom|[fF][eE][eE][dD][^>]*xmlns=["']?http:\/\/www.w3.org\/2005\/Atom["']?)/ } signature file-soap { file-mime "application/soap+xml", 49 file-magic /^(\xef\xbb\xbf)?([\x0d\x0a[:blank:]]*()?[\x0d\x0a[:blank:]]*)*(<\?xml .*\?>)?([\x0d\x0a[:blank:]]*()?[\x0d\x0a[:blank:]]*)*<[sS][oO][aA][pP](-[eE][nN][vV])?:[eE][nN][vV][eE][lL][oO][pP][eE]/ } signature file-cross-domain-policy { file-mime "text/x-cross-domain-policy", 49 file-magic /^([\x0d\x0a[:blank:]]*()?[\x0d\x0a[:blank:]]*)*(<\?xml .*\?>)?([\x0d\x0a[:blank:]]*()?[\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-coldfusion { file-mime "magnus-internal/cold-fusion", 20 file-magic /^([\x0d\x0a[:blank:]]*()?)*<(CFPARAM|CFSET|CFIF)/ } # Microsoft LNK files signature file-lnk { file-mime "application/x-ms-shortcut", 49 file-magic /^\x4C\x00\x00\x00\x01\x14\x02\x00\x00\x00\x00\x00\xC0\x00\x00\x00\x00\x10\x00\x00\x00\x46/ } signature file-jar { file-mime "application/java-archive", 100 file-magic /^PK\x03\x04.{1,200}\x14\x00..META-INF\/MANIFEST\.MF/ } signature file-java-applet { file-magic /^\xca\xfe\xba\xbe...[\x2d-\x34]/ file-mime "application/x-java-applet", 71 } # Shockwave flash signature file-swf { file-magic /^(F|C|Z)WS/ file-mime "application/x-shockwave-flash", 60 } # Microsoft Outlook's Transport Neutral Encapsulation Format signature file-tnef { file-magic /^\x78\x9f\x3e\x22/ file-mime "application/vnd.ms-tnef", 100 } # Mac OS X Mach-O executable signature file-mach-o { file-magic /^[\xce\xcf]\xfa\xed\xfe/ file-mime "application/x-mach-o-executable", 100 } # Mac OS X Universal Mach-O executable signature file-mach-o-universal { file-magic /^\xca\xfe\xba\xbe..\x00[\x01-\x14]/ file-mime "application/x-mach-o-executable", 100 } signature file-pkcs7 { file-magic /^MIME-Version:.*protocol=\"application\/pkcs7-signature\"/ file-mime "application/pkcs7-signature", 100 } # Concatenated X.509 certificates in textual format. signature file-pem { file-magic /^-----BEGIN CERTIFICATE-----/ file-mime "application/x-pem" } # Java Web Start file. signature file-jnlp { file-magic /^\/ } signature file-javascript3 { file-mime "application/javascript", 60 # This seems to be a somewhat common idiom in javascript. file-magic /^[\x0d\x0a[:blank:]]*for \(;;\);/ } signature file-javascript4 { file-mime "application/javascript", 60 file-magic /^[\x0d\x0a[:blank:]]*document\.write(ln)?[:blank:]?\(/ } signature file-javascript5 { file-mime "application/javascript", 60 file-magic /^\(function\(\)[[:blank:]\n]*\{/ } signature file-javascript6 { file-mime "application/javascript", 60 file-magic /^[\x0d\x0a[:blank:]]*