精华内容
下载资源
问答
  • 常用文件的文件头-16进制
    千次阅读
    2021-01-11 16:21:35

    格式:文件描述(后缀名),文件头(hex):文件头标识(十六进制)

    PNG (png),文件头(hex):89504E47
    PNGImageFile (png), 文件头(hex):89504E470D0A
    JPEG (jpg), 文件头(hex):FFD8FF
    GIF (gif),文件头(hex):47494638
    TIFF (tif),文件头(hex):49492A00
    GzipArchiveFile (gz;tar;tgz), 文件头(hex):1F8B
    AdobeAcrobat (pdf), 文件头(hex):255044462D312E
    EXE(EXE), 文件头(hex):4D5A90
    Windows Bitmap (bmp),文件头(hex):424D
    CAD (dwg),文件头(hex):41433130
    Adobe Photoshop (psd),文件头(hex):38425053
    Rich Text Format (rtf),文件头(hex):7B5C727466
    XML (xml),文件头(hex):3C3F786D6C
    HTML (html),文件头(hex):68746D6C3E
    Email [thorough only] (eml),文件头(hex):44656C69766572792D646174653A
    Outlook Express (dbx),文件头(hex):CFAD12FEC5FD746F
    Outlook (pst),文件头(hex):2142444E
    MS Word/Excel (xls.or.doc),文件头(hex):D0CF11E0
    MS Access (mdb),文件头(hex):5374616E64617264204A
    WordPerfect (wpd),文件头(hex):FF575043
    Postscript (eps.or.ps),文件头(hex):252150532D41646F6265
    Adobe Acrobat (pdf),文件头(hex):255044462D312E
    Quicken (qdf),文件头(hex):AC9EBD8F
    Windows Password (pwl),文件头(hex):E3828596
    ZIP Archive (zip),文件头(hex):504B0304
    RAR Archive (rar),文件头(hex):52617221
    Wave (wav),文件头(hex):57415645
    AVI (avi),文件头(hex):41564920
    Real Audio (ram),文件头(hex):2E7261FD
    Real Media (rm),文件头(hex):2E524D46
    MPEG (mpg),文件头(hex):000001BA
    MPEG (mpg),文件头(hex):000001B3
    Quicktime (mov),文件头(hex):6D6F6F76
    Windows Media (asf),文件头(hex):3026B2758E66CF11
    MIDI (mid),文件头(hex):4D546864

    更多相关内容
  • 对常见文件文件头和隐写术做个归纳总结:文件头文件尾、图片隐写、音频隐写、电子文档隐写

    前言

    对常见文件文件头和隐写术做个归纳总结

    • 文件头文件尾
    • 图片隐写
    • 音频隐写
    • 电子文档隐写

    一、文件头文件尾

    1、图片

    • JPEG
      文件头:FF D8 FF     
      文件尾:FF D9
    • TGA
      未压缩的前4字节 00 00 02 00
      RLE压缩的前5字节 00 00 10 00 00
    • PNG
      文件头:89 50 4E 47 0D 0A 1A 0A    
      文件尾:AE 42 60 82
    • GIF
      文件头:47 49 46 38 39(37) 61    
      文件尾:00 3B
    • BMP
      文件头:42 4D
      文件头标识(2 bytes) 42(B) 4D(M)
    • TIFF (tif)
      文件头:49 49 2A 00
    • ico
      文件头:00 00 01 00
    • Adobe Photoshop (psd)
      文件头:38 42 50 53

    2、office文件

    • MS Word/Excel (xls.or.doc)
      文件头:D0 CF 11 E0

    • MS Access (mdb)
      文件头:53 74 61 6E 64 61 72 64 20 4A

    • WordPerfect (wpd)
      文件头:FF 57 50 43

    • Adobe Acrobat (pdf)
      文件头:25 50 44 46 2D 31 2E

    • application/vnd.visio(vsd)
      文件头:D0 CF 11 E0 A1 B1 1A E1

    • Email [thorough only] (eml)
      文件头:44 65 6C 69 76 65 72 79 2D 64 61 74 65 3A

    • Outlook Express (dbx)
      文件头:CF AD 12 FE C5 FD 74 6F

    • Outlook (pst)
      文件头:21 42 44 4E

    • Rich Text Format (rtf)
      文件头:7B 5C 72 74 66

    • txt 文件(txt)
      文件头:Unicode:FE FF / Unicode big endian:FF FE / UTF-8:EF BB BF /ANSI编码是没有文件头的

    3、压缩包文件

    • ZIP Archive (zip)
      文件头:50 4B 03 04
      文件尾:50 4B
    • RAR Archive (rar)
      文件头:52 61 72 21

    4、音频文件

    • Wave (wav)
      文件头:57 41 56 45
    • audio(Audio)
      文件头: 4D 54 68 64
    • audio/x-aac(aac)
    • 文件头:FF F1(9)

    5、视频文件

    • AVI (avi)
      文件头:41 56 49 20
    • Real Audio (ram)
      文件头:2E 72 61 FD
    • Real Media (rm)
      文件头:2E 52 4D 46
    • MPEG (mpg)
      文件头:00 00 01 BA(3)
    • Quicktime (mov)
      文件头:6D 6F 6F 76
    • Windows Media (asf)
      文件头:30 26 B2 75 8E 66 CF 11
    • MIDI (mid)
      文件头:4D 54 68 64

    6、代码文件

    • XML (xml)
      文件头:3C 3F 78 6D 6C

    • HTML (html)
      文件头:68 74 6D 6C 3E

    • Quicken (qdf)
      文件头:AC 9E BD 8F

    • Windows Password (pwl)
      文件头:E3 82 85 96

    7、其他类型

    • windows证书文件(der)
      文件头:30 82 03 C9
    • CAD (dwg)
      文件头:41 43 31 30
    • Windows Shortcut (lnk)
      文件头:4C 00 00 00
    • Windows reg(reg)
      文件头:52 45 47 45 44 49 54 34

    二、图片隐写

    1、附加式的图片隐写

    操作系统识别,从文件头标志,到文件的结束标志位
    当系统识别到图片的结束标志位后,默认是不再继续识别的
    所以可以在文件尾后面加东西

    (1)附加字符串

    最简单的是附加字符串

    附加方法

    • winhex直接附加再保存
    • copy /b a.jpg+b.txt c.jpg,在a图片里加b的内容,得到c图片

    识别方法

    • winhex直接看
    • notepad也可以看
    • linux的strings指令

    应用

    • 制作图片马,即把木马放到图片的最后

    实例

    (2)隐藏压缩文件

    可以把压缩文件藏在图片文件尾后
    看起来还是图片

    附加方法

    • winhex直接附加再保存

    识别方法

    • 有些直接改扩展名就可以用
    • linux的binwalk指令
    • stegsolve分离
    • winhex复制压缩文件内容重新保存

    实例

    2、基于文件结构的图片隐写

    主要是针对PNG图片

    标准的PNG文件结构应包括:

    • PNG文件标志
    • PNG数据块:关键数据块和辅助数据块,其中正常的关键数据块有长度、数据块类型码、数据块数据和CRC这4种

    (1)png图片文件头数据块(IHDR)

    PNG图片的第一个数据块

    • 一张PNG图片仅有一个IHDR数据块
    • 包括了图片的宽,高,图像深度,颜色类型,压缩方法等信息

    在这里插入图片描述
    蓝色部分就是IHDR

    可以修改高度值或宽度值对部分信息进行隐藏

    • 如果图片原本是800(宽)*600(高),然后图片的高度从600变成500
    • 这样下面800×100区域的信息就无法从图片中显示出来,我们可见的只有上方800*500的区域,这样就达成了图片隐写的目的
    • 同理可知图片的宽度也可以进行类似的修改以达到隐藏信息的目的

    识别方法

    • 用winhex或者010Editor等编辑器打开图片
    • 修改长度或宽度值
    • 在修改文件后,需要利用CRC Calculator对CRC校验码进行重新计算赋值,以防图片被修改后,自身的CRC校验报错,导致图片不能正常打开

    实例

    (2)IDAT 数据块

    • 存储实际的数据
    • 在数据流中可包含多个连续顺序的图像数据块
    • 写入一个多余的IDAT也不会多大影响肉眼对图片的观察

    识别方法

    • 用pngcheck对图片进行检测pngcheck -v hidden.png

    在这里插入图片描述
    可能会出现一个size为0的异常块

    提取内容的脚本

    #!/usr/bin/python
    
    from struct import unpack
    from binascii import hexlify, unhexlify
    import sys, zlib
    
    # Returns [Position, Chunk Size, Chunk Type, Chunk Data, Chunk CRC]
    def getChunk(buf, pos):
        a = []
        a.append(pos)
        size = unpack('!I', buf[pos:pos+4])[0]
        # Chunk Size
        a.append(buf[pos:pos+4])
        # Chunk Type
        a.append(buf[pos+4:pos+8])
        # Chunk Data
        a.append(buf[pos+8:pos+8+size])
        # Chunk CRC
        a.append(buf[pos+8+size:pos+12+size])
        return a
    
    def printChunk(buf, pos):
        print 'Pos : '+str(pos)+''
        print 'Type: ' + str(buf[pos+4:pos+8])
        size = unpack('!I', buf[pos:pos+4])[0]
        print 'Size: ' + str(size)
        #print 'Cont: ' + str(hexlify(buf[pos+8:pos+8+size]))
        print 'CRC : ' + str(hexlify(buf[pos+size+8:pos+size+12]).upper())
        print
    
    if len(sys.argv)!=2:
        print 'Usage: ./this Stegano_PNG'
        sys.exit(2)
    
    buf = open(sys.argv[1]).read()
    pos=0
    
    print "PNG Signature: " + str(unpack('cccccccc', buf[pos:pos+8]))
    pos+=8
    
    chunks = []
    for i in range(3):
        chunks.append(getChunk(buf, pos))
        printChunk(buf, pos)
        pos+=unpack('!I',chunks[i][1])[0]+12
    
    
    decompressed = zlib.decompress(chunks[1][3])
    # Decompressed data length = height x (width * 3 + 1)
    print "Data length in PNG file : ", len(chunks[1][3])
    print "Decompressed data length: ", len(decompressed)
    
    height = unpack('!I',(chunks[0][3][4:8]))[0]
    width = unpack('!I',(chunks[0][3][:4]))[0]
    blocksize = width * 3 + 1
    filterbits = ''
    for i in range(0,len(decompressed),blocksize):
        bit = unpack('2401c', decompressed[i:i+blocksize])[0]
        if bit == '\x00': filterbits+='0'
        elif bit == '\x01': filterbits+='1'
        else:
            print 'Bit is not 0 or 1... Default is 0 - MAGIC!'
            sys.exit(3)
    
    s = filterbits
    endianess_filterbits = [filterbits[i:i+8][::-1] for i in xrange(0, len(filterbits), 8)]
    
    flag = ''
    for x in endianess_filterbits:
        if x=='00000000': break
        flag += unhexlify('%x' % int('0b'+str(x), 2))
    
    print 'Flag: ' + flag
    

    3、LSB隐写

    LSB,最低有效位,英文是Least Significant Bit

    • 容量大、嵌入速度快、对载体图像质量影响小
    • 在PNG和BMP上可以实现

    原理

    • 图片中的像素一般是由三种颜色组成,即三原色(红绿蓝),由这三种原色可以组成其他各种颜色
    • 在png图片的存储中,每个颜色占有8bit,即有256种颜色,一共包含256的三次方颜色,即16777216种颜色
    • 人类的眼睛可以区分约1,000万种不同的颜色,剩下无法区分的颜色就有6777216
    • LSB隐写就是修改了像素中的最低位,把一些信息隐藏起来

    给个直观例子

    在这里插入图片描述
    这人眼看不出颜色区别,但最低位不一样

    嵌入脚本

    from PIL import Image
    import math
     
    class LSB:
    	def __init__(self):
    		self.im=None
     
    	def load_bmp(self,bmp_file):
    		self.im=Image.open(bmp_file)
    		self.w,self.h=self.im.size
    		self.available_info_len=self.w*self.h # 不是绝对可靠的
    		print ("Load>> 可嵌入",self.available_info_len,"bits的信息")
     
    	def write(self,info):
    		"""先嵌入信息的长度,然后嵌入信息"""
    		info=self._set_info_len(info)
    		info_len=len(info)
    		info_index=0
    		im_index=0
    		while True:
    			if info_index>=info_len:
    				break
    			data=info[info_index]
    			x,y=self._get_xy(im_index)
    			self._write(x,y,data)
    			info_index+=1
    			im_index+=1
     
    	def save(self,filename):
    		self.im.save(filename)
     
    	def read(self):
    		"""先读出信息的长度,然后读出信息"""
    		_len,im_index=self._get_info_len()
    		info=[]
    		for i in range(im_index,im_index+_len):
    			x,y=self._get_xy(i)
    			data=self._read(x,y)
    			info.append(data)
    		return info
     
    	#===============================================================#
    	def _get_xy(self,l):
    		return l%self.w,int(l/self.w)
     
    	def _set_info_len(self,info):
    		l=int(math.log(self.available_info_len,2))+1
    		info_len=[0]*l
    		_len=len(info)
    		info_len[-len(bin(_len))+2:]=[int(i) for i in bin(_len)[2:]]
    		return info_len+info
     
    	def _get_info_len(self):
    		l=int(math.log(self.w*self.h,2))+1
    		len_list=[]
    		for i in range(l):
    			x,y=self._get_xy(i)
    			_d=self._read(x,y)
    			len_list.append(str(_d))
    		_len=''.join(len_list)
    		_len=int(_len,2)
    		return _len,l
     
    	def _write(self,x,y,data):
    		origin=self.im.getpixel((x,y))
    		lower_bit=origin%2
    		if lower_bit==data:
    			pass
    		elif (lower_bit,data) == (0,1):
    			self.im.putpixel((x,y),origin+1)
    		elif (lower_bit,data) == (1,0):
    			self.im.putpixel((x,y),origin-1)
     
    	def _read(self,x,y):
    		data=self.im.getpixel((x,y))
    		return data%2
     
    if __name__=="__main__":
    	lsb=LSB()
    	# 写
    	lsb.load_bmp('test.bmp')
    	info1=[0,1,0,1,1,0,1,0]
    	lsb.write(info1)
    	lsb.save('lsb.bmp')
    	# 读
    	lsb.load_bmp('lsb.bmp')
    	info2=lsb.read()
    	print (info2)
    

    识别方法

    • stegsolve,调通道
    • zsteg,神一样的工具

    提取脚本

    from PIL import Image
    
    im = Image.open("extracted.bmp")
    pix = im.load()
    width, height = im.size
    
    extracted_bits = []
    for y in range(height):
        for x in range(width):
            r, g, b = pix[(x,y)]
            extracted_bits.append(r & 1)
            extracted_bits.append(g & 1)
            extracted_bits.append(b & 1)
    
    extracted_byte_bits = [extracted_bits[i:i+8] for i in range(0, len(extracted_bits), 8)]
    with open("extracted2.bmp", "wb") as out:
        for byte_bits in extracted_byte_bits:
                    byte_str = ''.join(str(x) for x in byte_bits)
            byte = chr(int(byte_str, 2))
            out.write(byte)
    

    实例

    4、基于DCT域的JPG图片隐写

    JPEG图像格式使用离散余弦变换(Discrete Cosine Transform,DCT)函数来压缩图像

    • 通过识别每个8×8像素块中相邻像素中的重复像素来减少显示图像所需的位数
    • 使用近似估算法降低其冗余度
    • 有损压缩(Loss Compression)技术
    • 常见的隐写方法有JSteg、JPHide、Outguess、F5

    Jsteg隐写

    • 将秘密信息嵌入在量化后的DCT系数的LSB上
    • 原始值为-1,0,+1的DCT系数除外
    • 量化后的DCT系数中有负数

    实现

    import math
    import cv2
    import numpy as np
     
    def dct(m):
        m = np.float32(m)/255.0
        return cv2.dct(m)*255
    
    class Jsteg:
    	def __init__(self):
    		self.sequence_after_dct=None
     
    	def set_sequence_after_dct(self,sequence_after_dct):
    		self.sequence_after_dct=sequence_after_dct
    		self.available_info_len=len([i for i in self.sequence_after_dct if i not in (-1,1,0)]) # 不是绝对可靠的
    		print ("Load>> 可嵌入",self.available_info_len,'bits')
    	
    	def get_sequence_after_dct(self):
    		return self.sequence_after_dct
     
    	def write(self,info):
    		"""先嵌入信息的长度,然后嵌入信息"""
    		info=self._set_info_len(info)
    		info_len=len(info)
    		info_index=0
    		im_index=0
    		while True:
    			if info_index>=info_len:
    				break
    			data=info[info_index]
    			if self._write(im_index,data):
    				info_index+=1
    			im_index+=1
     
     
    	def read(self):
    		"""先读出信息的长度,然后读出信息"""
    		_len,sequence_index=self._get_info_len()
    		info=[]
    		info_index=0
     
    		while True:
    			if info_index>=_len:
    				break
    			data=self._read(sequence_index)
    			if data!=None:
    				info.append(data)
    				info_index+=1
    			sequence_index+=1
     
    		return info
     
    	#===============================================================#
     
    	def _set_info_len(self,info):
    		l=int(math.log(self.available_info_len,2))+1
    		info_len=[0]*l
    		_len=len(info)
    		info_len[-len(bin(_len))+2:]=[int(i) for i in bin(_len)[2:]]
    		return info_len+info
     
    	def _get_info_len(self):
    		l=int(math.log(self.available_info_len,2))+1
    		len_list=[]
    		_l_index=0
    		_seq_index=0
    		while True:
    			if _l_index>=l:
    				break
    			_d=self._read(_seq_index)
    			if _d!=None:
    				len_list.append(str(_d))
    				_l_index+=1
    			_seq_index+=1
    		_len=''.join(len_list)
    		_len=int(_len,2)
    		return _len,_seq_index
     
    	def _write(self,index,data):
    		origin=self.sequence_after_dct[index]
    		if origin in (-1,1,0):
    			return False
     
    		lower_bit=origin%2
    		if lower_bit==data:
    			pass
    		elif origin>0:
    			if (lower_bit,data) == (0,1):
    				self.sequence_after_dct[index]=origin+1
    			elif (lower_bit,data) == (1,0):
    				self.sequence_after_dct[index]=origin-1
    		elif origin<0:
    			if (lower_bit,data) == (0,1):
    				self.sequence_after_dct[index]=origin-1
    			elif (lower_bit,data) == (1,0):
    				self.sequence_after_dct[index]=origin+1
     
    		return True
     
    	def _read(self,index):
    		if self.sequence_after_dct[index] not in (-1,1,0):
    			return self.sequence_after_dct[index]%2
    		else:
    			return None
     
    if __name__=="__main__":
    	jsteg=Jsteg()
    	# 写
    	sequence_after_dct=[-1,0,1]*100+[i for i in range(-7,500)]
    	jsteg.set_sequence_after_dct(sequence_after_dct)
    	info1=[0,1,0,1,1,0,1,0]
    	jsteg.write(info1)
    	sequence_after_dct2=jsteg.get_sequence_after_dct()
    	# 读
    	jsteg.set_sequence_after_dct(sequence_after_dct2)
    	info2=jsteg.read()
    	print (info2)
    

    Outgusee算法

    • 针对Jsteg算法的缺陷提出的一种方法
    • 嵌入过程不修改ECT系数值为0,1的DCT系数
    • 利用为随机数发生器产生间隔以决定下一个要嵌入的DCT系数的位置
    • 纠正过程消除对效应的出现

    识别方法

    • Stegdetect:检测到通过JSteg、JPHide、OutGuess、Invisible Secrets、F5、appendX和Camouflage等这些隐写工具隐藏的信息
    • JPHS:针对JPHide
    • Outguess:针对OutGuess

    5、数字水印隐写

    数字水印(digital watermark)

    • 在数字化的数据内容中嵌入不明显的记号
    • 被嵌入的记号通常是不可见或不可察的
    • 可以通过计算操作检测或者提取

    盲水印

    • 对图像进行傅里叶变换,起始是一个二维离散傅里叶变换,图像的频率是指图像灰度变换的强烈程度
    • 将二维图像由空间域变为频域后,图像上的每个点的值都变成了复数,也就是所谓的复频域,通过复数的实部和虚部,可以计算出幅值和相位,计算幅值即对复数取模值,将取模值后的矩阵显示出来,即为其频谱图
    • 对模值再取对数,在在0~255的范围内进行归一化,这样才能够准确的反映到图像上,发现数据之间的差别,区分高频和低频分量

    识别方法

    实例

    6、图片容差隐写

    容差

    • 在选取颜色时所设置的选取范围
    • 容差越大,选取的范围也越大
    • 其数值是在0-255之间

    容差比较的隐写

    • 若是有两张图片,则对两张图片的每一个像素点进行对比,设置一个容差的阈值α,超出这个阈值的像素点RGB值设置为(255,255,255),若是没超过阈值,则设置该像素点的RGB值为(0,0,0)。因此,通过调整不同的α值,可以使对比生成的图片呈现不同的画面。比如两张图完全一样,设置阈值α为任何值,最后得到的对比图都只会是全黑。若两张图每一个像素点都不同,阈值α设置为1,则对比图将是全白。如果将隐藏信息附加到某些像素点上,这时调整阈值α即可看到隐藏信息。

    • 如果是一张图片,则根据每一像素点周围像素的值进行判断,同样设置一个阈值,若当前像素点超过周围像素点的均值,或者其它的某种规则,则将该像素点RGB值置为(255,255,255),反之则不进行处理,或者设置为全0.这样也可以获得隐藏的信息。

    识别方法

    • beyond compare比较图片

    7、打乱进制

    比如把整个二进制都逆序
    得到一堆乱码

    识别方法

    • winhex,看文件头尾是不是互换且逆序

    实例

    8、GIF的组合

    gif每帧是某个图的一部分
    提取每帧再拼接

    工具

    • ps

    实例

    三、音频隐写

    简单提一下

    • 频谱图藏信息
    • 高低位二进制
    • 波形藏摩斯密码
    • MP3Stego
    • 音频中也有LSB

    本来想自己整理下
    看到国光大佬的很全面
    就直接放个链接

    CTF中音频隐写的一些整理总结

    实例

    四、电子文档隐写

    1、隐藏文字

    看图说话

    在这里插入图片描述

    2、文件隐藏

    类似图片隐藏文件
    直接看例子吧
    攻防世界 Misc高手进阶区 3分题 小小的PDF

    结语

    对常见文件文件头和图片音频文档隐写术做了个总结

    展开全文
  • 常见文件文件头

    千次阅读 2019-09-06 16:14:54
    Email [thorough only] (eml),文件头:44656C69766572792D646174653A Outlook Express (dbx),文件头:CFAD12FEC5FD746F Outlook (pst),文件头:2142444E MS Word/Excel (xls.or.doc),文件头:D0CF11E0 ...

    各类文件的文件头标志

    1、从Ultra-edit-32中提取出来的

    附件:文件格式分析器

    JPEG (jpg),文件头:FFD8FF

    PNG (png),文件头:89504E47

    GIF (gif),文件头:47494638

    TIFF (tif),文件头:49492A00

    Windows Bitmap (bmp),文件头:424D

    CAD (dwg),文件头:41433130

    Adobe Photoshop (psd),文件头:38425053

    Rich Text Format (rtf),文件头:7B5C727466

    XML (xml),文件头:3C3F786D6C

    HTML (html),文件头:68746D6C3E

    Email [thorough only] (eml),文件头:44656C69766572792D646174653A

    Outlook Express (dbx),文件头:CFAD12FEC5FD746F

    Outlook (pst),文件头:2142444E

    MS Word/Excel (xls.or.doc),文件头:D0CF11E0

    MS Access (mdb),文件头:5374616E64617264204A

    WordPerfect (wpd),文件头:FF575043

    Postscript (eps.or.ps),文件头:252150532D41646F6265

    Adobe Acrobat (pdf),文件头:255044462D312E

    Quicken (qdf),文件头:AC9EBD8F

    Windows Password (pwl),文件头:E3828596

    ZIP Archive (zip),文件头:504B0304

    RAR Archive (rar),文件头:52617221

    Wave (wav),文件头:57415645

    AVI (avi),文件头:41564920

    Real Audio (ram),文件头:2E7261FD

    Real Media (rm),文件头:2E524D46

    MPEG (mpg),文件头:000001BA

    MPEG (mpg),文件头:000001B3

    Quicktime (mov),文件头:6D6F6F76

    Windows Media (asf),文件头:3026B2758E66CF11

    MIDI (mid),文件头:4D546864

    2、从winhex中取出的文件头列表

    File Type ExtensionsHeader

    JPEG jpg;jpeg 0xFFD8FF

    PNG png 0x89504E470D0A1A0A

    GIF gif GIF8

    TIFF tif;tiff 0x49492A00

    TIFF tif;tiff 0x4D4D002A

    Bit map bmp BM

    AOL ART art 0x4A47040E000000

    AOL ART art 0x4A47030E000000

    PC Paintbrush pcx 0x0A050108

    Graphics Metafile wmf 0xD7CDC69A

    Graphics Metafile wmf 0x01000900

    Graphics Metafile wmf 0x02000900

    Enhanced Metafile emf 0x0100000058000000

    Corel Draw cdr CDR

    CAD dwg 0x41433130

    Adobe Photoshop psd 8BPS

    Rich Text Format rtf rtf

    XML xml

    HTML html;htm;PHP;php3;php4;phtml;shtml type

    Email eml Delivery-date:

    Outlook Express dbx 0xCFAD12FE

    Outlookpst!BDN

    MS Office/OLE2doc;xls;dot;ppt;xla;ppa;pps;pot;msi;sdw;db 0xD0CF11E0A1B11AE1

    MS Access mdb;mda;mde;mdt Standard J

    WordPerfect wpd 0xFF575043

    OpenOffice Writer sxw writer

    OpenOffice Calc sxc calc

    OpenOffice Math sxm math

    OpenOffice Impress sxi impress

    OpenOffice Draw sxd draw

    Adobe FrameMaker fm <MAKERFILE

    PostScript eps.or.ps;ps;eps %!PS-Adobe

    Adobe Acrobat pdf %PDF-1.

    Quicken qdf 0xAC9EBD8F

    QuickBooks Backup qbb 0x458600000600

    Sage sly.or.srt.or.slt;sly;srt;slt0x53520100

    Sage Backup 1 SAGEBACKUP

    Lotus WordPro v9 lwp 0x576F726450726F

    Lotus 123 v9 123 0x00001A00051004

    Lotus 123 v5 wk4 0x00001A0002100400

    Lotus 123 v3 wk3 0x00001A0000100400

    Lotus 123 v1 wk1 0x2000604060

    Windows Password pwl 0xE3828596

    ZIP Archive zip;jar 0x504B0304

    ZIP Archive (outdated) zip 0x504B3030

    RAR Archive rar Rar!

    GZ Archive gz;tgz 0x1F8B08

    BZIP Archive bz2 BZh

    ARJ Archive arj 0x60EA

    7-ZIP Archive 7z 7z集'

    Wave wav WAVE

    AVI avi AVI

    Real Audio ram;ra .ra?0

    Real Media rm .RMF

    MPEG mpg;mpeg 0x000001BA

    MPEG mpg;mpeg 0x000001B3

    Quicktime mov moov

    Windows Media asf 0x3026B2758E66CF11

    MIDI mid MThd

    Win32 Executable exe;dll;drv;vxd;sys;ocx;vbxMZ

    Win16 Executable exe;dll;drv;vxd;sys;ocx;vbxMZ

    ELF Executable elf;; 0x7F454C4601010100

    各种文件类型文件头标志位详细列表

    FFD8FFFE00, .JPEG;.JPE;.JPG, "JPGGraphic File"

    FFD8FFE000, .JPEG;.JPE;.JPG, "JPGGraphic File"

    474946383961, .gif, "GIF 89A"

    474946383761, .gif, "GIF 87A"

    424D, .bmp, "Windows Bitmap"

    4D5A,.exe;.com;.386;.ax;.acm;.sys;.dll;.drv;.flt;.fon;.ocx;.scr;.lrc;.vxd;

    .cpl;.x32, "Executable File"

    504B0304, .zip, "Zip Compressed"

    3A42617365, .cnt, ""

    D0CF11E0A1B11AE1,.doc;.xls;.xlt;.ppt;.apr, "MS Compound Document v1 or Lotus Approach APRfile"

    0100000058000000, .emf, ""

    03000000C466C456, .evt, ""

    3F5F0300, .gid;.hlp;.lhp, "Windows HelpFile"

    1F8B08, .gz, "GZ Compressed File"

    28546869732066696C65, .hqx, ""

    0000010000, .ico, "Icon File"

    4C000000011402, .lnk, "Windows LinkFile"

    25504446, .pdf, "Adobe PDF File"

    5245474544495434, .reg, ""

    7B5C727466,.rtf, "Rich Text Format File"

    lh, .lzh, "Lz compression file"

    MThd, .mid, ""

    0A050108, .pcx, ""

    25215053, .eps, "Adobe EPS File"

    2112, .ain, "AIN Archive File"

    1A02, .arc, "ARC/PKPAK Compressed 1"

    1A03, .arc, "ARC/PKPAK Compressed 2"

    1A04, .arc, "ARC/PKPAK Compressed 3"

    1A08, .arc, "ARC/PKPAK Compressed 4"

    1A09, .arc, "ARC/PKPAK Compressed 5"

    60EA, .arj, "ARJ Compressed"

    41564920, .avi, "Audio Video Interleave(AVI)"

    425A68, .bz;.bz2, "Bzip Archive"

    49536328, .cab, "Cabinet File"

    4C01, .obj, "Compiled Object Module"

    303730373037, .tar;.cpio, "CPIO ArchiveFile"

    4352555348, .cru;.crush, "CRUSH ArchiveFile"

    3ADE68B1, .dcx, "DCX Graphic File"

    1F8B, .gz;.tar;.tgz, "Gzip ArchiveFile"

    91334846, .hap, "HAP Archive File"

    3C68746D6C3E,.htm;.html, "HyperText Markup Language 1"

    3C48544D4C3E,.htm;.html, "HyperText Markup Language 2"

    3C21444F4354, .htm;.html, "HyperText MarkupLanguage 3"

    100, .ico, "ICON File"

    5F27A889, .jar, "JAR Archive File"

    2D6C68352D,.lha, "LHA Compressed"

    20006040600, .wk1;.wks, "Lotus 123 v1 Worksheet"

    00001A0007800100, .fm3, "Lotus 123 v3 FMTfile"

    00001A0000100400, .wk3, "Lotus 123 v3Worksheet"

    20006800200, .fmt, "Lotus 123 v4 FMTfile"

    00001A0002100400, .wk4, "Lotus 123 v5"

    5B7665725D, .ami, "Lotus Ami Pro"

    300000041505052, .adx, "Lotus ApproachADX file"

    1A0000030000, .nsf;.ntf, "Lotus NotesDatabase/Template"

    4D47582069747064, .ds4, "MicrografixDesigner 4"

    4D534346, .cab, "Microsoft CAB FileFormat"

    4D546864, .mid, "Midi Audio File"

    000001B3, .mpg;.mpeg, "MPEG Movie"

    0902060000001000B9045C00, .xls, "MS Excel v2"

    0904060000001000F6055C00, .xls, "MS Excel v4"

    7FFE340A,.doc, "MS Word"

    1234567890FF, .doc, "MS Word 6.0"

    31BE000000AB0000, .doc, "MS Word forDOS 6.0"

    1A00000300001100, .nsf, "NotesDatabase"

    7E424B00, .psp, "PaintShop Pro Image File"

    504B0304, .zip, "PKZIP Compressed"

    89504E470D0A, .png, "PNG Image File"

    6D646174, .mov, "QuickTime Movie"

    6D646174, .qt, "Quicktime MovieFile"

    52617221, .rar, "RAR Archive File"

    2E7261FD, .ra;.ram, "Real AudioFile"

    EDABEEDB, .rpm, "RPM Archive File"

    2E736E64, .au, "SoundMachine AudioFile"

    53495421, .sit, "Stuffit v1 ArchiveFile"

    53747566664974, .sit, "Stuffit v5Archive File"

    1F9D, .z, "TAR Compressed ArchiveFile"

    49492A, .tif;.tiff, "TIFF (Intel)"

    4D4D2A,.tif;.tiff, "TIFF (Motorola)"

    554641, .ufa, "UFA Archive File"

    57415645666D74, .wav, "Wave Files"

    D7CDC69A,.wmf, "Windows Meta File"

    4C000000, .lnk, "Windows Shortcut (LinkFile)"

    504B3030504B0304, .zip, "WINZIPCompressed"

    FF575047, .wpg, "WordPerfectGraphics"

    FF575043, .wp, "WordPerfect v5 orv6"

    3C3F786D6C,.xml, "XML Document"

    FFFE3C0052004F004F0054005300540055004200, .xml, "XML Document(ROOTSTUB)"

    3C21454E54495459, .dtd, "XML DTD"

    5A4F4F20, .zoo, "ZOO Archive File"

    展开全文
  • java通过文件头内容判断文件类型

    热门讨论 2012-04-22 22:50:20
    java通过文件头内容判断文件类型
  • java根据文件头判断文件类型

    千次阅读 2019-02-15 12:33:37
    // MS Excel 注意:word、msi 和 excel的文件头一样  FILE_TYPE_MAP.put("d0cf11e0a1b11ae10000", "vsd"); // Visio 绘图  FILE_TYPE_MAP.put("5374616E64617264204A", "mdb"); // MS Access (mdb)  FILE_TYPE_...
    package com.mytest;
    
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.IOException;
    import java.util.HashMap;
    import java.util.Iterator;
    import java.util.Map;
    
    public class VerifyFileType {
    
        public final static Map<String, String> FILE_TYPE_MAP = new HashMap<String, String>();
        private static FileInputStream is;
        static {
            getAllFileType(); // 初始化文件类型信息
        }
        /**
         * 常用文件格式
         */
        private static void getAllFileType() {
            FILE_TYPE_MAP.put("ffd8ffe000104a464946", "jpg"); // JPEG (jpg)
            FILE_TYPE_MAP.put("89504e470d0a1a0a0000", "png"); // PNG (png)
            FILE_TYPE_MAP.put("47494638396126026f01", "gif"); // GIF (gif)
            FILE_TYPE_MAP.put("49492a00227105008037", "tif"); // TIFF (tif)
            FILE_TYPE_MAP.put("424d228c010000000000", "bmp"); // 16色位图(bmp)
            FILE_TYPE_MAP.put("424d8240090000000000", "bmp"); // 24位位图(bmp)
            FILE_TYPE_MAP.put("424d8e1b030000000000", "bmp"); // 256色位图(bmp)
            FILE_TYPE_MAP.put("41433130313500000000", "dwg"); // CAD (dwg)
            FILE_TYPE_MAP.put("3c21444f435459504520", "html"); // HTML (html)
            FILE_TYPE_MAP.put("3c21646f637479706520", "htm"); // HTM (htm)
            FILE_TYPE_MAP.put("48544d4c207b0d0a0942", "css"); // css
            FILE_TYPE_MAP.put("696b2e71623d696b2e71", "js"); // js
            FILE_TYPE_MAP.put("7b5c727466315c616e73", "rtf"); // Rich Text Format (rtf)
            FILE_TYPE_MAP.put("38425053000100000000", "psd"); // Photoshop (psd)
            FILE_TYPE_MAP.put("46726f6d3a203d3f6762", "eml"); // Email [Outlook Express 6] (eml)
            FILE_TYPE_MAP.put("d0cf11e0a1b11ae10000", "doc"); // MS Excel 注意:word、msi 和 excel的文件头一样
            FILE_TYPE_MAP.put("d0cf11e0a1b11ae10000", "vsd"); // Visio 绘图
            FILE_TYPE_MAP.put("5374616E64617264204A", "mdb"); // MS Access (mdb)
            FILE_TYPE_MAP.put("252150532D41646F6265", "ps");
            FILE_TYPE_MAP.put("255044462d312e350d0a", "pdf"); // Adobe Acrobat (pdf)
            FILE_TYPE_MAP.put("2e524d46000000120001", "rmvb"); // rmvb/rm相同
            FILE_TYPE_MAP.put("464c5601050000000900", "flv"); // flv与f4v相同
            FILE_TYPE_MAP.put("00000020667479706d70", "mp4");
            FILE_TYPE_MAP.put("49443303000000002176", "mp3");
            FILE_TYPE_MAP.put("000001ba210001000180", "mpg"); //
            FILE_TYPE_MAP.put("3026b2758e66cf11a6d9", "wmv"); // wmv与asf相同
            FILE_TYPE_MAP.put("52494646e27807005741", "wav"); // Wave (wav)
            FILE_TYPE_MAP.put("52494646d07d60074156", "avi");
            FILE_TYPE_MAP.put("4d546864000000060001", "mid"); // MIDI (mid)
            FILE_TYPE_MAP.put("504b0304140000000800", "zip");
            FILE_TYPE_MAP.put("526172211a0700cf9073", "rar");
            FILE_TYPE_MAP.put("235468697320636f6e66", "ini");
            FILE_TYPE_MAP.put("504b03040a0000000000", "jar");
            FILE_TYPE_MAP.put("4d5a9000030000000400", "exe");// 可执行文件
            FILE_TYPE_MAP.put("3c25402070616765206c", "jsp");// jsp文件
            FILE_TYPE_MAP.put("4d616e69666573742d56", "mf");// MF文件
            FILE_TYPE_MAP.put("3c3f786d6c2076657273", "xml");// xml文件
            FILE_TYPE_MAP.put("494e5345525420494e54", "sql");// xml文件
            FILE_TYPE_MAP.put("7061636b616765207765", "java");// java文件
            FILE_TYPE_MAP.put("406563686f206f66660d", "bat");// bat文件
            FILE_TYPE_MAP.put("1f8b0800000000000000", "gz");// gz文件
            FILE_TYPE_MAP.put("6c6f67346a2e726f6f74", "properties");// bat文件
            FILE_TYPE_MAP.put("cafebabe0000002e0041", "class");// bat文件
            FILE_TYPE_MAP.put("49545346030000006000", "chm");// bat文件
            FILE_TYPE_MAP.put("04000000010000001300", "mxp");// bat文件
            FILE_TYPE_MAP.put("504b0304140006000800", "docx");// docx文件
            FILE_TYPE_MAP.put("d0cf11e0a1b11ae10000", "wps");// WPS文字wps、表格et、演示dps都是一样的
            FILE_TYPE_MAP.put("6431303a637265617465", "torrent");
    
            FILE_TYPE_MAP.put("6D6F6F76", "mov"); // Quicktime (mov)
            FILE_TYPE_MAP.put("FF575043", "wpd"); // WordPerfect (wpd)
            FILE_TYPE_MAP.put("CFAD12FEC5FD746F", "dbx"); // Outlook Express (dbx)
            FILE_TYPE_MAP.put("2142444E", "pst"); // Outlook (pst)
            FILE_TYPE_MAP.put("AC9EBD8F", "qdf"); // Quicken (qdf)
            FILE_TYPE_MAP.put("E3828596", "pwl"); // Windows Password (pwl)
            FILE_TYPE_MAP.put("2E7261FD", "ram"); // Real Audio (ram)
            FILE_TYPE_MAP.put("null", null); // null
        }
    
        /**
         * 得到上传文件的文件头
         * 
         * @param src
         * @return
         */
        public static String bytesToHexString(byte[] src) {
            StringBuilder stringBuilder = new StringBuilder();
            if (src == null || src.length <= 0) {
                return null;
            }
            for (int i = 0; i < src.length; i++) {
                int v = src[i] & 0xFF;
                String hv = Integer.toHexString(v);
                if (hv.length() < 2) {
                    stringBuilder.append(0);
                }
                stringBuilder.append(hv);
            }
            return stringBuilder.toString();
        }
        /**
         * 根据制定文件的文件头判断其文件类型
         * 
         * @param filePaht
         * @return
         */
        public static String getFileType(String filePaht) {
            String res = null;
            try {
                is = new FileInputStream(filePaht);
                byte[] b = new byte[10];
                is.read(b, 0, b.length);
                String fileCode = bytesToHexString(b);
    
                Iterator<String> keyIter = FILE_TYPE_MAP.keySet().iterator();
                while (keyIter.hasNext()) {
                    String key = keyIter.next();
                    // 验证前5个字符比较
                    if (key.toLowerCase().startsWith(fileCode.toLowerCase().substring(0, 5))
                            || fileCode.toLowerCase().substring(0, 5).startsWith(key.toLowerCase())) {
                        res = FILE_TYPE_MAP.get(key);
                        break;
                    }
                }
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
            return res;
        }
    
        public static void main(String[] args) throws Exception {
            String type = getFileType("E:\\20170615163016.png");
            System.out.println("Except : " + type);
            System.out.println();
        }
    }

     

    展开全文
  • 判断几种图片文件头的c++代码

    热门讨论 2011-11-02 23:46:39
    用二进制方式读取文件头,与gif,bmp,jpg的文件头比较,从而判断文件类型
  • 各类文件的文件头标志

    千次阅读 2018-07-17 10:51:44
    JPEG (jpg),文件头:FFD8FF PNG (png),文件头:89504E47 GIF (gif),文件头:47494638 TIFF (tif),文件头:49492A00 Windows Bitmap (bmp),文件头:424D CAD (dwg),文件头:41433130 Adobe Photoshop ...
  • PE文件解析-文件头与整体介绍

    千次阅读 2019-01-03 20:58:37
     PE(Portable Execute)文件是Windows下可执行文件的总称,常见的有DLL,EXE,OCX,SYS等,事实上,一个文件是否是PE文件与其扩展名无关,PE文件可以是任何扩展名。  认识PE文件不是作为单一内存映射文件被装入...
  • 文件头文件尾总结JPEG (jpg), 文件头:FFD8FF 文件尾:FF D9 PNG (png), 文件头:89504E47 文件尾:AE 42 60 82GIF (gif), ...
  • 常见文件头

    万次阅读 2019-03-10 12:30:54
    JPEG (jpg), 文件头:FFD8FF  PNG (png), 文件头:89504E47 文件尾:0000000049454E44AE426082 GIF (gif), 文件头:47494638 ZIP Arc...
  • 常见的文件头格式解析

    万次阅读 2018-03-31 00:24:18
    1、从Ultra-edit-32中提取出来的附件:文件格式分析器JPEG (jpg),文件头:FFD8FFPNG (png),文件头:89504E47GIF (gif),文件头:47494638TIFF (tif),文件头:49492A00Windows Bitmap (bmp),文件头:424DCAD (dwg...
  • Winhex添加文件头的方法

    千次阅读 2021-04-15 17:42:06
    有的题目中会出现缺少 png文件头的问题 PNG (png), 文件头:89 50 4E 47 0D 0A 1A 0A 我们这时复制89504E47
  • Linux 给文件内容添加 文件头

    千次阅读 2019-11-05 14:25:58
    例: COOOOOOOOOOOO1 _Ml_N_20191010_00000010.TXT 统计文本中的记录数,然后插入到文本的第一行,命令如下: sed -i "1i 01|XXXXXXXXXXXXXX|`cat XXXXXXX.txt |wc -l`|00000001" XXXXXXX.txt ...
  • IDEA设置文件头方法

    千次阅读 2019-11-21 11:16:23
    File -> Setting -> Editor -> File and Code Templates -> Includes -> File Header /** * @Description: * @Author: 大强 * @CreateTime: ${DATE} * @Company: */
  • 图片文件头以及解码

    千次阅读 2018-10-06 09:47:35
    - 文件头标识 (2 bytes): 0xff, 0xd8 (SOI) (JPEG 文件标识) - 文件结束标识 (2 bytes): 0xff, 0xd9 (EOI) 2.TGA - 未压缩的前5字节 00 00 02 00 00 - RLE压缩的前5字节 00 00 10 00 00 3.PNG - 文件头标识 (8 ...
  • 常见的文件头识别和修复

    千次阅读 2020-08-09 14:25:39
    常见的文件头识别和修复 文件头是位于文件开头的一段承担一定任务的数据 以下是常见的文件头: 相应的还有文件结尾 zip文件的结尾以一串504B0506开始 rar文件以C43D7B00400700结尾 JPG文件结尾为FFD9 PNG文件 结尾为...
  • SpringBoot 文件上传 通过Content-Type和文件头判断文件类型 一、关于MIME MIME的全称是Multipurpose Internet Mail Extensions,即多用途互联网邮件扩展,尽管读起来有些拗口,但大多数人可能都知道, 这是HTTP协议...
  • 各种常见文件的文件头及其含义

    万次阅读 2018-01-12 10:10:47
    JPEG (jpg),文件头:FFD8FFE1 PNG (png),文件头:89504E47 GIF (gif),文件头:47494638 TIFF (tif),文件头:49492A00 Windows Bitmap (bmp),文件头:424D CAD (dwg),文件头:41433
  • python代码文件头注释规范

    千次阅读 2020-12-15 16:15:01
    文件头注释规范格式,如下: # -*- coding: utf-8 -*- # # ------------------------------------------------------------------ # File Name: pyxxx # Author: sacevan # Version: ver0_1 # C
  • 文件头注释和方法注释的两种方式 方法一: 文件头注释: 打开File–>Settings–>Editor–>File and Code Templates–>includes–>File Header 1.第一步点击File 2.找到File中的Settings 3....
  • CTFHub 文件上传-文件头检查

    千次阅读 2020-03-01 22:01:32
    CTFHub 文件上传-文件头检查 一道基础and简单题 前面几步没有截图,,, 文件上传基本思路:上传.php(只能能被中间件解析的文件,.php,.php4等等),但题目会对上传的后缀名进行限制,这里限制分为黑名单,就是不...
  • 128个常见的文件头信息对照表

    千次阅读 2019-02-18 10:43:00
    Mime Type(Content-Type) ... 文件头 video/3gpp 3gp 00 00 00 14 66 74 79 70 00 00 00 14 66 74 79 70 00 00 00 20 66 74 79 70 00 00 00 20 66 74 79 70 video/mp...
  • vscode配置文件头部注释

    千次阅读 2020-06-17 16:29:55
    新建settings.json文件 { "python.pythonPath": "D:\\ProgramData\\Anaconda3\\envs\\pt\\python.exe", "fileheader.Author": "Su Yunzheng", // 插件配置选项,readme:...
  • PyCharm中给Python文件添加文件头注释

    千次阅读 2019-08-09 22:36:55
    PyCharm中给Python文件添加文件头注释: 1、工程中点击 File-Settings 2、在 Editor - File and Code Templates - Python Script 中加入设计的文件头注释格式 # -*- coding: utf-8 -*- # @Time : ${DATE} ${...
  • python文件头注释及添加文件头模版

    千次阅读 2020-03-05 20:14:15
    一、python文件头注释 主要是以下两行: #!/usr/bin/env python # -*-coding:utf-8 -*- 第一行是选定编译器的版本,一般我们都通过以下方式运行python代码: python 1003.py 有了第一句之后,python文件就可以和...
  • 根据位图文件头,求BMP文件大小

    千次阅读 2020-06-10 13:35:07
    根据位图文件头,求BMP文件大小 题目描述 根据位图文件头,求文件大小。 输入 输入占一行,以十六进制的形式输入BMP文件的位图文件头。 输出 输出二行: 第1行是用十六进制表示的BMP文件大小 ,加上前导0x(x是小写)...
  • 各种类型文件头标准编码

    千次阅读 2019-09-17 17:51:23
    JPEG (jpg),文件头:FF D8 FF PNG (png),文件头:89 50 4E 47 【参考:png文件头详解】89 50 4e 47 0d 0a 1a 0a GIF (gif),文件头:47 49 46 38 Windows Bitmap (bmp),文件头:42 4D [参考:bmp文件格式详解]42 ...
  • 常见文件头 文件幻数

    千次阅读 2019-09-05 10:57:26
    JPEG (jpg),文件头:FFD8FF PNG (png),文件头:89504E47 GIF (gif),文件头:47494638 TIFF (tif),文件头:49492A00 Windows Bitmap (bmp),文件头:424D CAD (dwg),文件头:41433130 Adobe Photoshop (psd),...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,353,594
精华内容 541,437
关键字:

文件头

友情链接: GG4.4.rar