CodeBasePHP检查未知媒体文件的格式

Posted YunGaZeon

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CodeBasePHP检查未知媒体文件的格式相关的知识,希望对你有一定的参考价值。

用法:

<?php

$filefullpath="F:/test/2awd45wr1e5fef5e5";
echo Format::check($filefullpath,[\'png\',\'jpg\',\'gif\']);

 

格式检查类:

  1 <?php
  2 /**
  3  * lib_format.php
  4  * $Author: YunGaZeon $
  5  * $Blog: http://www.cnblogs.com/GaZeon/ $
  6  * $Id: lib_collection.php Date:2017-8-14 YunGaZeon $
  7 */
  8 
  9 class Format
 10 {
 11     public static function check($data,$formats=[])
 12     {
 13         $_fc=new FormatChecker;
 14 
 15         return $_fc->check($data,$formats);
 16     }
 17 }
 18 
 19 class FormatChecker
 20 {    
 21     private $_format=[
 22         \'jp2\' => \'0000000C6A502020\',
 23         \'3gp\' => \'0000002066747970\',
 24         \'3gp5\' => \'0000001866747970\',
 25         \'m4a\' => \'00000020667479704D3441\',
 26         \'ico\' => \'00000100\',
 27         \'spl\' => \'00000100\',
 28         \'vob\' => \'000001BA\',
 29         \'cur\' => \'00000200\',
 30         \'wb2\' => \'00000200\',
 31         \'wk1\' => \'0000020006040600\',
 32         \'wk3\' => \'00001A0000100400\',
 33         \'wk4\' => \'00001A0002100400\',
 34         \'wk5\' => \'00001A0002100400\',
 35         \'123\' => \'00001A00051004\',
 36         \'qxd\' => \'00004D4D585052\',
 37         \'mdf\' => \'010F0000\',
 38         \'tr1\' => \'0110\',
 39         \'rgb\' => \'01DA01010003\',
 40         \'drw\' => \'07\',
 41         \'dss\' => \'02647373\',
 42         \'dat\' => \'A90D000000000000\',
 43         \'db3\' => \'03\',
 44         \'qph\' => \'03000000\',
 45         \'adx\' => \'80000020031204\',
 46         \'db4\' => \'04\',
 47         \'n\' => \'FFFE0000\',
 48         \'a\' => \'FFFE0000\',
 49         \'skf\' => \'07534B46\',
 50         \'dtd\' => \'0764743264647464\',
 51         \'db\' => \'D0CF11E0A1B11AE1\',
 52         \'pcx\' => \'0A050101\',
 53         \'mp\' => \'0CED\',
 54         \'doc\' => \'D0CF11E0A1B11AE1\',
 55         \'nri\' => \'0E4E65726F49534F\',
 56         \'wks\' => \'FF00020004040554\',
 57         \'pf\' => \'1100000053434341\',
 58         \'ntf\' => \'4E49544630\',
 59         \'nsf\' => \'4E45534D1A01\',
 60         \'arc\' => \'41724301\',
 61         \'pak\' => \'5041434B\',
 62         \'eth\' => \'1A350100\',
 63         \'mkv\' => \'1A45DFA393428288\',
 64         \'ws\' => \'1D7D\',
 65         \'gz\' => \'1F8B08\',
 66         \'tar.z\' => \'1FA0\',
 67         \'ain\' => \'2112\',
 68         \'lib\' => \'213C617263683E0A\',
 69         \'msi\' => \'D0CF11E0A1B11AE1\',
 70         \'vmdk\' => \'4B444D\',
 71         \'dsp\' => \'23204D6963726F73\',
 72         \'amr\' => \'2321414D52\',
 73         \'hdr\' => \'49536328\',
 74         \'sav\' => \'24464C3240282329\',
 75         \'eps\' => \'C5D0D3C6\',
 76         \'pdf\' => \'25504446\',
 77         \'fdf\' => \'25504446\',
 78         \'hqx\' => \'2854686973206669\',
 79         \'log\' => \'2A2A2A2020496E73\',
 80         \'ivr\' => \'2E524543\',
 81         \'rm\' => \'2E524D46\',
 82         \'rmvb\' => \'2E524D46\',
 83         \'ra\' => \'2E7261FD00\',
 84         \'au\' => \'646E732E\',
 85         \'cat\' => \'30\',
 86         \'evt\' => \'300000004C664C65\',
 87         \'asf\' => \'3026B2758E66CF11\',
 88         \'wma\' => \'3026B2758E66CF11\',
 89         \'wmv\' => \'3026B2758E66CF11\',
 90         \'wri\' => \'BE000000AB\',
 91         \'7z\' => \'377ABCAF271C\',
 92         \'psd\' => \'38425053\',
 93         \'sle\' => \'414376\',
 94         \'asx\' => \'3C\',
 95         \'xdr\' => \'3C\',
 96         \'dci\' => \'3C21646F63747970\',
 97         \'manifest\' => \'3C3F786D6C2076657273696F6E3D\',
 98         \'xml\' => \'3C3F786D6C2076657273696F6E3D22312E30223F3E\',
 99         \'msc\' => \'D0CF11E0A1B11AE1\',
100         \'fm\' => \'3C4D616B65724669\',
101         \'mif\' => \'56657273696F6E20\',
102         \'gid\' => \'4C4E0200\',
103         \'hlp\' => \'4C4E0200\',
104         \'dwg\' => \'41433130\',
105         \'syw\' => \'414D594F\',
106         \'abi\' => \'414F4C494E444558\',
107         \'aby\' => \'414F4C4442\',
108         \'bag\' => \'414F4C2046656564\',
109         \'idx\' => \'5000000020000000\',
110         \'ind\' => \'414F4C494458\',
111         \'pfc\' => \'414F4C564D313030\',
112         \'org\' => \'414F4C564D313030\',
113         \'vcf\' => \'424547494E3A5643\',
114         \'bin\' => \'424C4932323351\',
115         \'bmp\' => \'424D\',
116         \'dib\' => \'424D\',
117         \'prc\' => \'424F4F4B4D4F4249\',
118         \'bz2\' => \'425A68\',
119         \'tar.bz2\' => \'425A68\',
120         \'tbz2\' => \'425A68\',
121         \'tb2\' => \'425A68\',
122         \'rtd\' => \'43232B44A4434DA5\',
123         \'cbd\' => \'434246494C45\',
124         \'iso\' => \'4344303031\',
125         \'clb\' => \'434F4D2B\',
126         \'cpt\' => \'43505446494C45\',
127         \'cru\' => \'43525553482076\',
128         \'swf\' => \'465753\',
129         \'ctf\' => \'436174616C6F6720\',
130         \'dms\' => \'444D5321\',
131         \'adf\' => \'5245564E554D3A2C\',
132         \'dvr\' => \'445644\',
133         \'ifo\' => \'445644\',
134         \'cdr\' => \'52494646\',
135         \'vcd\' => \'454E545259564344\',
136         \'e01\' => \'4C5646090D0AFF00\',
137         \'evtx\' => \'456C6646696C6500\',
138         \'qbb\' => \'458600000600\',
139         \'cpe\' => \'464158434F564552\',
140         \'flv\' => \'464C56\',
141         \'aiff\' => \'464F524D00\',
142         \'eml\' => \'582D\',
143         \'gif\' => \'47494638\',
144         \'pat\' => \'47504154\',
145         \'gx2\' => \'475832\',
146         \'sh3\' => \'4848474231\',
147         \'tif\' => \'4D4D002B\',
148         \'tiff\' => \'4D4D002B\',
149         \'mp3\' => \'494433\',
150         \'koz\' => \'49443303000000\',
151         \'crw\' => \'49491A0000004845\',
152         \'cab\' => \'4D534346\',
153         \'lit\' => \'49544F4C49544C53\',
154         \'chi\' => \'49545346\',
155         \'chm\' => \'49545346\',
156         \'jar\' => \'5F27A889\',
157         \'jg\' => \'4A47040E000000\',
158         \'kgb\' => \'4B47425F61726368\',
159         \'shd\' => \'68490000\',
160         \'lnk\' => \'4C00000001140200\',
161         \'obj\' => \'80\',
162         \'pdb\' => \'ACED000573720012\',
163         \'mar\' => \'4D41723000\',
164         \'dmp\' => \'504147454455\',
165         \'hdmp\' => \'4D444D5093A7\',
166         \'mls\' => \'4D563243\',
167         \'mmf\' => \'4D4D4D440000\',
168         \'nvram\' => \'4D52564E\',
169         \'ppz\' => \'4D534346\',
170         \'snp\' => \'4D534346\',
171         \'tlb\' => \'4D53465402000100\',
172         \'dvf\' => \'4D535F564F494345\',
173         \'msv\' => \'4D535F564F494345\',
174         \'mid\' => \'4D546864\',
175         \'midi\' => \'4D546864\',
176         \'dsn\' => \'4D56\',
177         \'com\' => \'EB\',
178         \'dll\' => \'4D5A\',
179         \'drv\' => \'4D5A\',
180         \'exe\' => \'4D5A\',
181         \'pif\' => \'4D5A\',
182         \'qts\' => \'4D5A\',
183         \'qtx\' => \'4D5A\',
184         \'sys\' => \'FFFFFFFF\',
185         \'acm\' => \'4D5A\',
186         \'ax\' => \'4D5A900003000000\',
187         \'cpl\' => \'DCDC\',
188         \'fon\' => \'4D5A\',
189         \'ocx\' => \'4D5A\',
190         \'olb\' => \'4D5A\',
191         \'scr\' => \'4D5A\',
192         \'vbx\' => \'4D5A\',
193         \'vxd\' => \'4D5A\',
194         \'386\' => \'4D5A\',
195         \'api\' => \'4D5A900003000000\',
196         \'flt\' => \'76323030332E3130\',
197         \'zap\' => \'4D5A90000300000004000000FFFF\',
198         \'sln\' => \'4D6963726F736F66742056697375616C\',
199         \'jnt\' => \'4E422A00\',
200         \'jtp\' => \'4E422A00\',
201         \'cod\' => \'4E616D653A20\',
202         \'dbf\' => \'4F504C4461746162\',
203         \'oga\' => \'4F67675300020000\',
204         \'ogg\' => \'4F67675300020000\',
205         \'ogv\' => \'4F67675300020000\',
206         \'ogx\' => \'4F67675300020000\',
207         \'dw4\' => \'4F7B\',
208         \'pgm\' => \'50350A\',
209         \'pax\' => \'504158\',
210         \'pgd\' => \'504750644D41494E\',
211         \'img\' => \'EB3C902A\',
212         \'zip\' => \'504B0304140000\',
213         \'docx\' => \'504B030414000600\',
214         \'pptx\' => \'504B030414000600\',
215         \'xlsx\' => \'504B030414000600\',
216         \'kwd\' => \'504B0304\',
217         \'odt\' => \'504B0304\',
218         \'odp\' => \'504B0304\',
219         \'ott\' => \'504B0304\',
220         \'sxc\' => \'504B0304\',
221         \'sxd\' => \'504B0304\',
222         \'sxi\' => \'504B0304\',
223         \'sxw\' => \'504B0304\',
224         \'wmz\' => \'504B0304\',
225         \'xpi\' => \'504B0304\',
226         \'xps\' => \'504B0304\',
227         \'xpt\' => \'5850434F4D0A5479\',
228         \'grp\' => \'504D4343\',
229         \'qemu\' => \'514649\',
230         \'abd\' => \'5157205665722E20\',
231         \'qsd\' => \'5157205665722E20\',
232         \'reg\' => \'FFFE\',
233         \'sud\' => \'52454745444954\',
234         \'ani\' => \'52494646\',
235         \'cmx\' => \'52494646\',
236         \'ds4\' => \'52494646\',
237         \'4xm\' => \'52494646\',
238         \'avi\' => \'52494646\',
239         \'cda\' => \'52494646\',
240         \'qcp\' => \'52494646\',
241         \'rmi\' => \'52494646\',
242         \'wav\' => \'52494646\',
243         \'cap\' => \'58435000\',
244         \'rar\' => \'526172211A0700\',
245         \'ast\' => \'5343486C\',
246         \'shw\' => \'53484F57\',
247         \'cpi\' => \'FF464F4E54\',
248         \'sit\' => \'5374756666497420\',
249         \'sdr\' => \'534D415254445257\',
250         \'cnv\' => \'53514C4F434F4E56\',
251         \'cal\' => \'B5A2B0B3B3B0A5B5\',
252         \'info\' => \'E310000100000000\',
253         \'uce\' => \'55434558\',
254         \'ufa\' => \'554641C6D2C1\',
255         \'pch\' => \'564350434830\',
256         \'ctl\' => \'56455253494F4E20\',
257         \'ws2\' => \'575332303030\',
258         \'lwp\' => \'576F726450726F\',
259         \'bdr\' => \'5854\',
260         \'zoo\' => \'5A4F4F20\',
261         \'ecf\' => \'5B47656E6572616C\',
262         \'vcw\' => \'5B4D535643\',
263         \'dun\' => \'5B50686F6E655D\',
264         \'sam\' => \'5B7665725D\',
265         \'cpx\' => \'5B57696E646F7773\',
266         \'cfg\' => \'5B666C7473696D2E\',
267         \'cas\' => \'5F434153455F\',
268         \'cbk\' => \'5F434153455F\',
269         \'arj\' => \'60EA\',
270         \'vhd\' => \'636F6E6563746978\',
271         \'csh\' => \'6375736800000002\',
272         \'p10\' => \'64000000\',
273         \'dex\' => \'6465780A30303900\',
274         \'dsw\' => \'64737766696C65\',
275         \'flac\' => \'664C614300000022\',
276         \'dbb\' => \'6C33336C\',
277         \'acd\' => \'72696666\',
278         \'ram\' => \'727473703A2F2F\',
279         \'dmg\' => \'78\',
280         \'lgc\' => \'7B0D0A6F20\',
281         \'lgd\' => \'7B0D0A6F20\',
282         \'pwi\' => \'7B5C707769\',
283         \'rtf\' => \'7B5C72746631\',
284         \'psp\' => \'7E424B00\',
285         \'wab\' => \'9CCBCB8D1375D211\',
286         \'wpf\' => \'81CDAB\',
287         \'png\' => \'89504E470D0A1A0A\',
288         \'aw\' => \'8A0109000000E108\',
289         \'hap\' => \'91334846\',
290         \'skr\' => \'9501\',
291         \'gpg\' => \'99\',
292         \'pkr\' => \'9901\',
293         \'qdf\' => \'AC9EBD8F0000\',
294         \'pwl\' => \'E3828596\',
295         \'dcx\' => \'B168DE3A\',
296         \'tib\' => \'B46E6844\',
297         \'acs\' => \'C3ABCDAB\',
298         \'lbk\' => \'C8007900\',
299         \'class\' => \'CAFEBABE\',
300         \'dbx\' => \'CFAD12FE\',
301         \'dot\' => \'D0CF11E0A1B11AE1\',
302         \'pps\' => \'D0CF11E0A1B11AE1\',
303         \'ppt\' => \'D0CF11E0A1B11AE1\',
304         \'xla\' => \'D0CF11E0A1B11AE1\',
305         \'xls\' => \'D0CF11E0A1B11AE1\',
306         \'wiz\' => \'D0CF11E0A1B11AE1\',
307         \'ac_\' => \'D0CF11E0A1B11AE1\',
308         \'adp\' => \'D0CF11E0A1B11AE1\',
309         \'apr\' => \'D0CF11E0A1B11AE1\',
310         \'mtw\' => \'D0CF11E0A1B11AE1\',
311         \'opt\' => \'D0CF11E0A1B11AE1\',
312         \'pub\' => \'D0CF11E0A1B11AE1\',
313         \'rvt\' => \'D0CF11E0A1B11AE1\',
314         \'sou\' => \'D0CF11E0A1B11AE1\',
315         \'spo\' => \'D0CF11E0A1B11AE1\',
316         \'vsd\' => \'D0CF11E0A1B11AE1\',
317         \'wps\' => \'D0CF11E0A1B11AE1\',
318         \'ftr\' => \'D20A0000\',
319         \'arl\' => \'D42A\',
320         \'aut\' => \'D42A\',
321         \'wmf\' => \'D7CDC69A\',
322         \'efx\' => \'DCFE\',
323         \'one\' => \'E4525C7B8CD8A74D\',
324         \'rpm\' => \'EDABEEDB\',
325         \'gho\' => \'FEEF\',
326         \'ghs\' => \'FEEF\',
327         \'wp\' => \'FF575043\',
328         \'wpd\' => \'FF575043\',
329         \'wpg\' => \'FF575043\',
330         \'wpp\' => \'FF575043\',
331         \'wp5\' => \'FF575043\',
332         \'wp6\' => \'FF575043\',
333         \'jfif\' => \'FFD8FF\',
334         \'jpe\' => \'FFD8FF\',
335         \'jpeg\' => \'FFD8FF\',
336         \'jpg\' => \'FFD8FF\',
337         \'mof\' => \'FFFE23006C006900\',
338         \'ipa\' => \'504B03040A\'
339     ];
340     
341     
342     private $_allow_format=[];
343     
344     /*设置允许通过的格式*/
345     public function allow($allow_format=[])
346     {
347         if(!empty($allow_format))
348             $this->_allow_format=$allow_format;
349     }
350 
351     /*根据长度读取文件二进制内容*/
352     public function readHead($filepath,$size)
353     {
354         $fh=fopen($filepath,\'rb\');
355         $bin=fread($fh,$size);
356         fclose($fh);
357         return $bin;
358     }
359     
360     /*检查格式*/
361     public function check($filepath,$allow_format=[])
362     {
363         $_allow_format=empty($allow_format)?$this->_allow_format:$allow_format;
364         if(empty($filepath))
365             return false;
366         
367         if(!empty($_allow_format))
368         {
369             foreach($_allow_format as $fm)
370             {
371                 if(!isset($this->_format[$fm]))
372                     continue;
373                 $len=strlen($this->_format[$fm]);
374                 $binHead=$this->readHead($filepath,$len);
375                 $fileHead=unpack(\'H\'.$len,$binHead);
376                 
377                 if(strtoupper($fileHead[1])==$this->_format[$fm])
378                     return $fm;
379             }
380         }
381         else
382         {
383             foreach($this->_format as $fm=>$fbinhead)
384             {
385                 $len=strlen($fbinhead);
386                 $binHead=$this->readHead($filepath,$len);
387                 $fileHead=unpack(\'H\'.$len,$binHead);
388                 if(strtoupper($fileHead[1])==$fbinhead)
389                     return $fm;
390             }
391         }
392         return false;
393     }
394 }

 

以上是关于CodeBasePHP检查未知媒体文件的格式的主要内容,如果未能解决你的问题,请参考以下文章

未知类型的文件,怎样判别文件格式

CodeBasePHP立即输出结果

Flume 推文的未知文件格式

015 输入理解时间片

Firebase 存储:发生未知错误,请检查错误负载以获取服务器响应

如何检查未知的 XML 文件以获取其元素或属性?