通过二进制头识别文件类型
通过二进制头识别文件类型,可以使用UE或者WinHex软件打开
1.JPEG/JPG
- 文件头标识 (2 bytes): $ff, $d8 (SOI) (JPEG文件标识)
- 文件结束标识 (2 bytes): $ff, $d9 (EOI)
2.TGA
- 未压缩的前5字节 00 00 02 0000
- RLE压缩的前5字节 00 00 10 0000
3.PNG
- 文件头标识 (8 bytes) 89 50 4E 470D 0A 1A 0A
4.GIF
- 文件头标识 (6 bytes) 47 49 46 3839(37) 61
G I F 8 9 (7) a
5.BMP
- 文件头标识 (2 bytes) 424D
B M
6.PCX
- 文件头标识 (1 bytes) 0A
7.TIFF
- 文件头标识 (2 bytes) 4D 4D 或 4949
8.ICO
- 文件头标识 (8 bytes) 00 00 01 0001 00 20 20
9.CUR
- 文件头标识 (8 bytes) 00 00 02 0001 00 20 20
10.IFF
- 文件头标识 (4 bytes) 46 4F 524D
F O R M
11.ANI
- 文件头标识 (4 bytes) 52 49 4646
R I F F
根据这些文件头标识的收集,我可以写一个识别图像格式的模块了。但是在写这个模块之前可以对收集到的文件头标识进行优化,使得程序中字符串比对次数尽量的少。
1.JPEG我们知需要比对文件头的$ff, $d8这两个字符,而不用读取最后的两个结束标识了。
2.TGA,ICO,CUR只需比对第三个与第五个字符即可。
3.PNG比对[89][50]这两个字符。
4.GIF比对[47][49][46]与第五个字符。
废话不多说了,利用内存流来判断文件的格式,其实判断文件的前几个字节就可以简单的判断这个文件是什么类型的文件,例如
jpg文件 是 FFD8 (从低位到高位就要反过来 D8FF 下面都是一样)
BMP文件 是 424D ---4D42
其他的我就不一一列举了,想知道跟多文件类型分别是用什么字符作为文件的开头的话,下载个C32asm或者UE等这类16进制编辑器就可以看到了。
原文链接:http://zjf30366.blog.163.com/blog/static/41116458201042194542973/
附:常见文件的文件头标识
255044PDF
526563 EML
D0CF11 PPT
4D5AEE COM
E93B03 COM
4D5A90 EXE
424D3E BMP
49492A TIF
384250 PSD
C5D0D3 EPS
0A0501 PCS
89504E PNG
060500 RAW
000002 TGA
60EA27 ARJ
526172 RAR
504B03 ZIP
495363 CAB
1F9D8C Z
524946 WAV
435753 SWF
3026B2 WMV
3026B2 WMA
2E524D RM
00000F MOV
000077 MOV
000001 MPA
FFFB50 MP3
234558 m3u
3C2144 HTM
FFFE3C XSL
3C3F78 XML
3C3F78 MSC
4C0000 LNK
495453 CHM
805343 scm
D0CF11 XLS
31BE00 WRI
00FFFF MDF
4D4544 MDS
5B436C CCD
00FFFF IMG
FFFFFF SUB
17A150 PCB
2A5052 ECO
526563 PPC
000100 DDB
42494C LDB
2A7665 SCH
2A2420 LIB
434841 FNT
7B5C72 RTF
7B5072 GTD
234445 PRG
000007 PJT
202020 BAS
000002 TAG
4D5A90 dll
4D5A90 OCX
4D5A50 DPL
3F5F03 HLP
4D5A90 OLB
4D5A90 IMM
4D5A90 IME
3F5F03 LHP
C22020 NLS
5B5769 CPX
4D5A16 DRV
5B4144 PBK
24536F PLL
4E4553 NES
87F53E GBC
00FFFF SMD
584245 XBE
005001 XMV
000100 TTF
484802 PDG
000100 TST
414331 dwg
D0CF11 max
另外还有一些重要的文件,没有固定的文件头,如下:
TXT 没固定文件头定义
TMP 没固定文件头定义
INI 没固定文件头定义
BIN 没固定文件头定义
DBF 没固定文件头定义
C 没没固定文件头定义
CPP 没固定文件头定义
H 没固定文件头定义
BAT 没固定文件头定义
还有一些不同的文件有相同的文件头,最典型的就是下面:
4D5A90 EXE
4D5A90 dll
4D5A90 OCX
4D5A90 OLB
4D5A90 IMM
4D5A90 IME
参考:http://blog.sina.com.cn/s/blog_6bfe46bc0100q1bx.html
通过二进制头识别文件类型相关推荐
- BOM头识别文件类型。
在JAVA读取文件时需要处理文件的BOM头. HTTP服务器端,读取客户端上传文件时,也需要解析BOM头. --注意使用windowsAPI读取文件时,BOM头会自动去掉. 1.从Ultra-edit ...
- Qt识别文件类型的正确姿势
一般我们识别文件类型都是从文件的后缀区分,这样做可以识别出文件格式.但在Qt里有更好的实现方法. 以识别图片类型为例 一般识别图片类型方法: 虽然这一方法可以实现识别图片类型,但是维护起来相对困难 ...
- linux用file查看文件类型,Linux怎么使用file命令识别文件类型
file是通过查看文件的头部内容,来获取文件的类型.使用file命令可以知道某个文件究竟是二进制(ELF格式)的可执行文件, 还是Shell Script文件,或者是其它的什么格式.那么Linux怎么 ...
- 防止文件泄露,教你如何识别文件类型
文件类型识别是文件内容还原以及后续的文件敏感信息检测预处理过程中不可或缺的一部分,精确的文件类型识别是文件内容还原和文件敏感信息检测模型选择的关键步骤之一,它能够让我们根据不同的文件类型选择适合的文件 ...
- java识别文件类型_在Java中识别文件类型
我使用 Apache Tika,它使用魔术字节模式和globbing提示(文件扩展名)来识别文件类型,以检测MIME类型.它还支持对文件内容的其他解析(我不真正使用). 以下是一个简单而肮脏的例子,说 ...
- Linux 命令之 file 命令-识别文件类型
文章目录 介绍 语法格式 常用选项 参考示例 (一)显示文件类型 (二)显示符号链接的文件类型 介绍 file 命令用来识别文件类型,也可用来辨别一些文件的编码格式.它是通过查看文件的头部信息来获取文 ...
- linux 识别文件类型,技术|Linux 中 7 个判断文件系统类型的方法
文件通过文件系统在磁盘及分区上命名.存储.检索以及更新,文件系统是在磁盘上组织文件的方式. 文件系统分为两个部分:用户数据和元数据(文件名.创建时间.修改时间.大小以及目录层次结构中的位置等). 在本 ...
- 没有扩展名也能轻松识别文件类型
一般的情况下,我们可以通过文件的扩展名(后缀名)来判断文件的类型,从而找到打开它们的对应的程序.而因为某种原因,我们可能会得到一个文件,却是没有扩展名的,那该如何识别它呢? 一.什么是文件类型 文件格 ...
- Linux识别文件类型的几种方法
对于第一次使用 Linux 命令行的用户,可能真的搞不清楚哪个是文件,哪个是目录,究其原因是很难直接通过名字看出来目录和文件的区别. 虽然从名称上不容易分辨,但是可以从颜色上进行区分.一般情况下,Li ...
- 通过判断流的头 判断文件类型
图片文件 文件类型 扩展名 16进制数字 xx这里表示变量 Ascii数字 . = 不是Ascii字符 Bitmap format .bmp 42 4d BM FITS format .fits 53 ...
最新文章
- GCC编译选项参数介绍
- Ubuntu 15.10安装ns2.35+nam
- js form中的onsubmit和action
- CentOS6安裝Cacti
- spring组键扫描
- leetcode9. 回文数
- php函数总结,php函数
- 微信小程序实质是什么? Hybrid App
- 虚拟机技术抗黑产!几维安全KiwiVM虚拟机实现全平台全架构防护方案!
- 操作系统学习笔记:文件系统接口
- 珍藏的软件/工具/网站分享
- C语言apr_socket,APR分析-高级IO篇
- java 微信转账 ca_error_CA证书出错,请登录微信支付商户平台下载证书
- 【H5即时通讯系统PHP源码】支持嵌入+单聊+群聊+可单独封装APP
- 无法启动此程序,因为计算机中丢失api-ms-win-crt-runtime-l1-1-0.dll。尝试重新安装该程序以解决此问题。
- c++ mupdf 提取pdf文件里面图片
- 通过快递鸟如何接入中通快递电子面单
- java——java删除指定文件或文件夹
- [日语]基于日语常用汉字表的音读到汉字的映射表
- java-实战:进制转换
热门文章
- 子网划分,掩码转换计算
- vue项目PC端字体大小自适应
- gta5oracle.yft原文件,GTA5 addonpeds2.2[添加人物模型的人物模型选择器]
- oracle自增序列
- 三维扫描仪在工业生产中的作用
- Python搭建BT资源搜索站
- 蘑菇租房java,租房经历总结-----我是如何2天找到合适租房的(房东直租)简单粗暴...
- 【上网】微信能上网,谷歌浏览器上不了网,怎么解决?
- 物联网控制APP入门专题(一)---做物联网APP的几个模式简介
- Kotlin for Android (let、with、run、apply、also函数)