![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
文件类型识别
文章平均质量分 72
编程十万问
我是王小智,Linux C 开发工程师,喜欢钻研技术,写文章,交朋友。
展开
-
libmagic通过mime来识别文件类型
比如想识别一个文件是不是jpg,通过查看mime.types文件,我们知道jpg对应的mime是image/jpeg,那么我们可以将文件通过libmagic识别,返回的mime与image/jpeg进行比较,这个比较是字符串的比较,可以用多模AC算法或者是哈希算法,就可以很容易的知道一个文件是不是jpg文件了。》文章的朋友应该知道,如果我们通过libmagic返回的描述信息来进行文件识别,有一个麻烦的地方是,我们无法获取到一个完整的文件描述信息列表,因为magic.mgc是二进制文件,我们看不到。原创 2023-06-29 00:12:24 · 306 阅读 · 0 评论 -
libmagic文件类型识别库源码分析
ligmagic的主要逻辑:启动时加载magic.mgc数据库的特征规则,然后读取要识别文件类型的文件内容,与magic.mgc的特征进行匹配,如果匹配上了,就表示确定了文件的类型,输出的是文件类型的一串描述信息。magic_file和magic_bufffer的区别就是magic_file需要先调用file_or_fd读取一下文件的内容和长度,然后再就都是调用file_buffer函数。》介绍了libmagic库的使用,今天我们来对libmagic库的源码做一个简单的分析。原创 2023-06-27 21:39:42 · 435 阅读 · 0 评论 -
libmagic文件类型识别库的使用
magic_buffer传入的是magic_t句柄,要识别的一段缓冲区的起始地址以及缓冲区的长度,其实就可以理解为我们把magic_file中的文件内容读到了一段内存中,然后进行识别的,差别不大。我们以下载的libmagic-5.25开发库为例,magic.h在include目录下,libmagic的库在lib目录下,magic.mgc文件在share/misc目录下。下载使用,如果想研究源码,就从github上下载file命令的源码进行研究。好了,libmagic库的使用就讲到这里了,是不是比较简单呢?原创 2023-06-26 22:02:07 · 835 阅读 · 0 评论 -
文件类型识别的实现思路
首先,用户上网传输文件一般大都是经过传输层的tcp协议,了解tcp协议的同学应该知道,tcp报文一般不分片,而是使用分段,那么一个文件一般都很大,所以一个tcp分段报文是传输不完的,那么一个文件必然就会存在很多tcp分段报文中,所以在进行文件识别和过滤之前,需要先将文件的内容正确的还原出来,所以第一步涉及到tcp分段的重组,当然今天重点只是讲文件识别和过滤,tcp分段重组下次再单独讲。完成tcp分段重组,重组文件内容之后,我们需要先识别文件的类型,那么如何识别文件的类型呢?那么文件过滤的功能是怎么实现呢?原创 2023-06-20 20:43:23 · 489 阅读 · 0 评论