Home  >  Article  >  Backend Development  >  Win7 changes file type PHP file type verification function based on file header

Win7 changes file type PHP file type verification function based on file header

WBOY
WBOYOriginal
2016-07-29 08:48:331063browse

I wrote a verification class here to determine the file format through the file header. (It is not 100% safe. If the user forges the file header, it can also pass the verification)

Copy the code The code is as follows:


/**
* 检证文件类型类
*
* @author Silver
*/
class FileTypeValidation
{
// 文件类型,不同的头信息
private static $_fileFormats = Array(
'jp2' => '0000000C6A502020',
'3gp' => '0000002066747970',
'3gp5' => '0000001866747970',
'm4a' => '00000020667479704D3441',
'ico' => '00000100',
'spl' => '00000100',
'vob' => '000001BA',
'cur' => '00000200',
'wb2' => '00000200',
'wk1' => '0000020006040600',
'wk3' => '00001A0000100400',
'wk4' => '00001A0002100400',
'wk5' => '00001A0002100400',
'123' => '00001A00051004',
'qxd' => '00004D4D585052',
'mdf' => '010F0000',
'tr1' => '0110',
'rgb' => '01DA01010003',
'drw' => '07',
'dss' => '02647373',
'dat' => 'A90D000000000000',
'db3' => '03',
'qph' => '03000000',
'adx' => '80000020031204',
'db4' => '04',
'n' => 'FFFE0000',
'a' => 'FFFE0000',
'skf' => '07534B46',
'dtd' => '0764743264647464',
'db' => 'D0CF11E0A1B11AE1',
'pcx' => '0A050101',
'mp' => '0CED',
'doc' => 'D0CF11E0A1B11AE1',
'nri' => '0E4E65726F49534F',
'wks' => 'FF00020004040554',
'pf' => '1100000053434341',
'ntf' => '4E49544630',
'nsf' => '4E45534D1A01',
'arc' => '41724301',
'pak' => '5041434B',
'eth' => '1A350100',
'mkv' => '1A45DFA393428288',
'ws' => '1D7D',
'gz' => '1F8B08',
'tar.z' => '1FA0',
'ain' => '2112',
'lib' => '213C617263683E0A',
'msi' => 'D0CF11E0A1B11AE1',
'vmdk' => '4B444D',
'dsp' => '23204D6963726F73',
'amr' => '2321414D52',
'hdr' => '49536328',
'sav' => '24464C3240282329',
'eps' => 'C5D0D3C6',
'pdf' => '25504446',
'fdf' => '25504446',
'hqx' => '2854686973206669',
'log' => '2A2A2A2020496E73',
'ivr' => '2E524543',
'rm' => '2E524D46',
'rmvb' => '2E524D46',
'ra' => '2E7261FD00',
'au' => '646E732E',
'cat' => '30',
'evt' => '300000004C664C65',
'asf' => '3026B2758E66CF11',
'wma' => '3026B2758E66CF11',
'wmv' => '3026B2758E66CF11',
'wri' => 'BE000000AB',
'7z' => '377ABCAF271C',
'psd' => '38425053',
'sle' => '414376',
'asx' => '3C',
'xdr' => '3C',
'dci' => '3C21646F63747970',
'manifest' => '3C3F786D6C2076657273696F6E3D',
'xml' => '3C3F786D6C2076657273696F6E3D22312E30223F3E',
'msc' => 'D0CF11E0A1B11AE1',
'fm' => '3C4D616B65724669',
'mif' => '56657273696F6E20',
'gid' => '4C4E0200',
'hlp' => '4C4E0200',
'dwg' => '41433130',
'syw' => '414D594F',
'abi' => '414F4C494E444558',
'aby' => '414F4C4442',
'bag' => '414F4C2046656564',
'idx' => '5000000020000000',
'ind' => '414F4C494458',
'pfc' => '414F4C564D313030',
'org' => '414F4C564D313030',
'vcf' => '424547494E3A5643',
'bin' => '424C4932323351',
'bmp' => '424D',
'dib' => '424D',
'prc' => '424F4F4B4D4F4249',
'bz2' => '425A68',
'tar.bz2' => '425A68',
'tbz2' => '425A68',
'tb2' => '425A68',
'rtd' => '43232B44A4434DA5',
'cbd' => '434246494C45',
'iso' => '4344303031',
'clb' => '434F4D2B',
'cpt' => '43505446494C45',
'cru' => '43525553482076',
'swf' => '465753',
'ctf' => '436174616C6F6720',
'dms' => '444D5321',
'adf' => '5245564E554D3A2C',
'dvr' => '445644',
'ifo' => '445644',
'cdr' => '52494646',
'vcd' => '454E545259564344',
'mdi' => '4550',
'e01' => '4C5646090D0AFF00',
'evtx' => '456C6646696C6500',
'qbb' => '458600000600',
'cpe' => '464158434F564552',
'flv' => '464C56',
'aiff' => '464F524D00',
'eml' => '582D',
'gif' => '47494638',
'pat' => '47504154',
'gx2' => '475832',
'sh3' => '4848474231',
'tif' => '4D4D002B',
'tiff' => '4D4D002B',
'mp3' => '494433',
'koz' => '49443303000000',
'crw' => '49491A0000004845',
'cab' => '4D534346',
'lit' => '49544F4C49544C53',
'chi' => '49545346',
'chm' => '49545346',
'jar' => '5F27A889',
'jg' => '4A47040E000000',
'kgb' => '4B47425F61726368',
'shd' => '68490000',
'lnk' => '4C00000001140200',
'obj' => '80',
'pdb' => 'ACED000573720012',
'mar' => '4D41723000',
'dmp' => '504147454455',
'hdmp' => '4D444D5093A7',
'mls' => '4D563243',
'mmf' => '4D4D4D440000',
'nvram' => '4D52564E',
'ppz' => '4D534346',
'snp' => '4D534346',
'tlb' => '4D53465402000100',
'dvf' => '4D535F564F494345',
'msv' => '4D535F564F494345',
'mid' => '4D546864',
'midi' => '4D546864',
'dsn' => '4D56',
'com' => 'EB',
'dll' => '4D5A',
'drv' => '4D5A',
'exe' => '4D5A',
'pif' => '4D5A',
'qts' => '4D5A',
'qtx' => '4D5A',
'sys' => 'FFFFFFFF',
'acm' => '4D5A',
'ax' => '4D5A900003000000',
'cpl' => 'DCDC',
'fon' => '4D5A',
'ocx' => '4D5A',
'olb' => '4D5A',
'scr' => '4D5A',
'vbx' => '4D5A',
'vxd' => '4D5A',
'386' => '4D5A',
'api' => '4D5A900003000000',
'flt' => '76323030332E3130',
'zap' => '4D5A90000300000004000000FFFF',
'sln' => '4D6963726F736F66742056697375616C',
'jnt' => '4E422A00',
'jtp' => '4E422A00',
'cod' => '4E616D653A20',
'dbf' => '4F504C4461746162',
'oga' => '4F67675300020000',
'ogg' => '4F67675300020000',
'ogv' => '4F67675300020000',
'ogx' => '4F67675300020000',
'dw4' => '4F7B',
'pgm' => '50350A',
'pax' => '504158',
'pgd' => '504750644D41494E',
'img' => 'EB3C902A',
'zip' => '504B0304140000',
'docx' => '504B030414000600',
'pptx' => '504B030414000600',
'xlsx' => '504B030414000600',
'kwd' => '504B0304',
'odt' => '504B0304',
'odp' => '504B0304',
'ott' => '504B0304',
'sxc' => '504B0304',
'sxd' => '504B0304',
'sxi' => '504B0304',
'sxw' => '504B0304',
'wmz' => '504B0304',
'xpi' => '504B0304',
'xps' => '504B0304',
'xpt' => '5850434F4D0A5479',
'grp' => '504D4343',
'qemu' => '514649',
'abd' => '5157205665722E20',
'qsd' => '5157205665722E20',
'reg' => 'FFFE',
'sud' => '52454745444954',
'ani' => '52494646',
'cmx' => '52494646',
'ds4' => '52494646',
'4xm' => '52494646',
'avi' => '52494646',
'cda' => '52494646',
'qcp' => '52494646',
'rmi' => '52494646',
'wav' => '52494646',
'cap' => '58435000',
'rar' => '526172211A0700',
'ast' => '5343486C',
'shw' => '53484F57',
'cpi' => 'FF464F4E54',
'sit' => '5374756666497420',
'sdr' => '534D415254445257',
'cnv' => '53514C4F434F4E56',
'cal' => 'B5A2B0B3B3B0A5B5',
'info' => 'E310000100000000',
'uce' => '55434558',
'ufa' => '554641C6D2C1',
'pch' => '564350434830',
'ctl' => '56455253494F4E20',
'ws2' => '575332303030',
'lwp' => '576F726450726F',
'bdr' => '5854',
'zoo' => '5A4F4F20',
'ecf' => '5B47656E6572616C',
'vcw' => '5B4D535643',
'dun' => '5B50686F6E655D',
'sam' => '5B7665725D',
'cpx' => '5B57696E646F7773',
'cfg' => '5B666C7473696D2E',
'cas' => '5F434153455F',
'cbk' => '5F434153455F',
'arj' => '60EA',
'vhd' => '636F6E6563746978',
'csh' => '6375736800000002',
'p10' => '64000000',
'dex' => '6465780A30303900',
'dsw' => '64737766696C65',
'flac' => '664C614300000022',
'dbb' => '6C33336C',
'acd' => '72696666',
'ram' => '727473703A2F2F',
'dmg' => '78',
'lgc' => '7B0D0A6F20',
'lgd' => '7B0D0A6F20',
'pwi' => '7B5C707769',
'rtf' => '7B5C72746631',
'psp' => '7E424B00',
'wab' => '9CCBCB8D1375D211',
'wpf' => '81CDAB',
'png' => '89504E470D0A1A0A',
'aw' => '8A0109000000E108',
'hap' => '91334846',
'skr' => '9501',
'gpg' => '99',
'pkr' => '9901',
'qdf' => 'AC9EBD8F0000',
'pwl' => 'E3828596',
'dcx' => 'B168DE3A',
'tib' => 'B46E6844',
'acs' => 'C3ABCDAB',
'lbk' => 'C8007900',
'class' => 'CAFEBABE',
'dbx' => 'CFAD12FE',
'dot' => 'D0CF11E0A1B11AE1',
'pps' => 'D0CF11E0A1B11AE1',
'ppt' => 'D0CF11E0A1B11AE1',
'xla' => 'D0CF11E0A1B11AE1',
'xls' => 'D0CF11E0A1B11AE1',
'wiz' => 'D0CF11E0A1B11AE1',
'ac_' => 'D0CF11E0A1B11AE1',
'adp' => 'D0CF11E0A1B11AE1',
'apr' => 'D0CF11E0A1B11AE1',
'mtw' => 'D0CF11E0A1B11AE1',
'opt' => 'D0CF11E0A1B11AE1',
'pub' => 'D0CF11E0A1B11AE1',
'rvt' => 'D0CF11E0A1B11AE1',
'sou' => 'D0CF11E0A1B11AE1',
'spo' => 'D0CF11E0A1B11AE1',
'vsd' => 'D0CF11E0A1B11AE1',
'wps' => 'D0CF11E0A1B11AE1',
'ftr' => 'D20A0000',
'arl' => 'D42A',
'aut' => 'D42A',
'wmf' => 'D7CDC69A',
'efx' => 'DCFE',
'one' => 'E4525C7B8CD8A74D',
'rpm' => 'EDABEEDB',
'gho' => 'FEEF',
'ghs' => 'FEEF',
'wp' => 'FF575043',
'wpd' => 'FF575043',
'wpg' => 'FF575043',
'wpp' => 'FF575043',
'wp5' => 'FF575043',
'wp6' => 'FF575043',
'jfif' => 'FFD8FF',
'jpe' => 'FFD8FF',
'jpeg' => 'FFD8FF',
'jpg' => 'FFD8FF',
'mof' => 'FFFE23006C006900',
'ipa' => '504B03040A',
);
/**
* Check file type
*
* @param string $filePath file path
* @param string $fileExt file extension
*
* @return boolean
*/
public static function validation($filePath, $fileExt)
{
// 文件格式未知
if (!isset(self::$_fileFormats[$fileExt]))
{
return false;
}
$length = strlen(self::$_fileFormats[$fileExt]);
$bin = self::_readFile($filePath, $length);
$fileHead = @unpack("H{$length}", $bin);
// 判断文件头
if (strtolower(self::$_fileFormats[$fileExt]) == $fileHead[1])
{
return true;
}
return false;
}
/**
* Read file content
*
* @param string $filePath file path
* @param integer $size
*
* @return string
*/
private function _readFile($filePath, $size)
{
$file = fopen($filePath, "rb");
$bin = fread($file, $size);
fclose($file);
return $bin;
}
}
?>


调用

复制代码 代码如下:


require './class_filetypevalidation.php';
// 文件路径
$filePath = "D:/test.png";
$x = FileTypeValidation::validation($filePath, 'zip');
var_dump($x);

以上就介绍了win7更改文件类型 PHP 基于文件头的文件类型验证类函数,包括了win7更改文件类型方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn