编写c语言程序,检查图像文件格式

编写c语言程序,检查图像文件格式,第1张

通过strncmp判断文件头部的特征。他的方式是如果从第六个(0开始算)字节开始是JFIF就是jpeg,如果是GIF89a开头就是gif,如果从第一个字节开始是PNG就是png。不过实际上jpeg的开头是"\xFF\xD8\xFF\xE0??JFIF"(??是州樱两个内容不确定的字节,想要判断减半部分必须单用一个strncmp),册渣丛png的开头是"\梁誉x89PNG"。

当然,文件头的特征符合并不一定说明文件内容就对。

1.图片也是属于文件类型的一种,图片属于二进制文件。使用fopen函数的二进制模式“rb”就可以打开。

2.例程:

    #include <stdlib.h>

    #include <stdio.h>

    int main ()

    {

        FILE * fpPhoto, * fpText, * fpTarget 

        int     iRead 

        char    szBuf[100] 

          

        printf ("请输入第一个文件名(jpg):\n") 

        gets (szBuf) 

        fpPhoto = fopen (szBuf, "rb") 

        printf ("请输入第二个文件名(txt):\n") 

        gets (szBuf) 

        fpText = fopen (szBuf, "rb") 

        printf ("请输入目的文件名(jpg):\n") 

        gets (szBuf) 

        fpTarget = fopen (szBuf, "wb") 

      

        if (!fpPhoto || !fpText || !fpTarget)

        {

            printf ("打开文件失败!\n") 

    冲老        system("pause") 

            return -1 

        }

      

   唤判雀     while ((iRead = fread (szBuf, 1, sizeof (szBuf), fpPhoto)) > 0)

            fwrite 和早(szBuf, 1, iRead, fpTarget) 

        while ((iRead = fread (szBuf, 1, sizeof (szBuf), fpText)) > 0)

            fwrite (szBuf, 1, iRead, fpTarget) 

      

        fclose (fpPhoto) 

        fclose (fpText) 

        fclose (fpTarget) 

        return 0 

    }

使用电脑时,往往会遇到一些不太可信的文件,如解除版游戏或软件,算号器及注册机,小众软件,网购时对方给的文件等,这些东西有可能包含病毒木马或者是会有修改IE设置等流氓行为打开这些文件不安全,不打开不舒心这时就需要一些 方法 判断这个文件是否安全。以下我整理的判断文件是否为恶意文件的技巧,供大家参考,希望大家能够有所收获!

判断文件是否为恶意文件的方法:

一、查看文件属性

1、通过文件名判断

查看文件属性可以说是最简单快捷的一个方法。这个方法,只能对那些伪装为正常文件的病毒木马有效,而这类病毒多见于网购时和U盘里。其中裂掘最典型的是双后缀和unicode反转技术,例如,某文件名为“照片.gif.exe”或者是“货物exe.jpg”,这类文件几乎可以肯定有问题。

这类文件前者是针对没有在文件夹选项中取消“隐藏已知文件扩展名”的用户,该类用户在收到“照片.gif.exe”时,只能看到“照片.gif”,很容易误以为这是一个后缀名为gif的图片文件,打开这类文件几乎可以肯定会出问题,当然QQ和旺旺貌似都会对可执行文件强制改名,很大情况上避免了这类事件的发生后者主要是针对那些不够细心的用户,这类用户看到陌生文件后往往不会认真查看文件属性,结果往往会将“货物exe.jpg”这类文件误以为是后缀名为jpg的图片文件,但实际上却是可执行文件,运行后肯定又悲剧了。

这里,最主要的就是取消掉“隐藏已知文件扩展名”,方法如下:

依次点击,开始菜单->控制面板->文件夹选项,然后如下图设置即可,

当然,双后缀和unicode反转中没有可执行文件的扩展名时,就没多大必要担心了。可执行文件的扩展名包括exe、bat、com、msi等。另外,CAD文件、office文件、PDF文件等也需要注意,因为这些文件都有可能感染病毒,如CAD病毒、宏病毒等,打开带有这些病毒的文件时,可能会使电脑上的正常CAD文件和office文件受损,如果可能,尽量使用最新的正版软件打开这类文件或者是考虑安装能防CAD病毒或宏病毒的杀毒软件,如360等,而PDF文件只要使用最新正式版的Adobe Reader、Foxit Reader等打开就没事。

除了双后缀和unicode反转,某些特殊的文件名的文件也需要注意,例如过于简单的文件名,如1.exe、d.exe等与系统文件宏帆或有名软件的名称极为相似的文件名,如expIore.exe、QQDown1oad.exe等看起来像网址的文件,如wenwen.soso.com、www.baidu.com等扩展名偏门的文件也不要随意打开,例如hta、pif、vbs之类的。

2、通过数字签名判断

程序上的数字签名标明了程序的厂商,在软件上主要就是用于验证软件的完整性,在发布后有没有被修改过。正规公司出品的软件都有有效的数字签名。

如果声称自己是正规公司出品,或者是软件名或文件名是某个有名的软件,但有没有有效的数字签名,那就可以肯定该软件是仿冒的。其中数字签名无效的软件比没有数字签名的软件更可疑,因为数字签名无效在属性里不能直接看到,很容易将之误解为是某个正规公司的软件。需要注意的是,大多数解除软件、第三方修改版软件都没有数字签名,这些蔽源雹很危险,因为无法验证在发布后是否被修改过。

下面是数字签名的验证方式(以傲游3为例):

(1)、在傲游3主程序(Maxthon.exe)上右击,在d出菜单中选择“属性”,在属性窗口中单击数字签名选项卡:

2、在数字签名选项卡中选中签名,单击详细信息查看证书的详细信息:

在这里面,需要特别注意查看数字签名是否有效,数字签名有效,该软件可信,数字签名无效,该软件就很可疑了还需要注意颁发者,如果颁发者名不见经传,那也需要注意。比较常见的有一下几种:COMODO、VeriSign、Microsoft等。

二、根据多引擎扫描网站的结果判断:

这是判断某个文件是否是病毒木马的另一个较快的办法。

多引擎扫描网站利用网站服务器上的杀软引擎,将用户上传的文件进行扫描,得出扫描结果。利用这个结果,有时候可以很快判断文件是不是病毒。

一般来说,当某个文件,所有杀毒软件引擎都报毒,或上段提到的几个杀毒软件都报毒,那几乎可以肯定该文件是恶意文件,打开会导致电脑出问题。如果所有杀毒软件都没有报毒,而文件在网络上又已经有一段时间了,那该文件几乎不可能是恶意软件。

当然更多的情况是一些杀毒软件报毒,一些不报毒,这个时候就需要对杀毒软件的及病毒名进行综合查看,有名的杀毒软件,特别是在AV-TEST、AV-C测试中误报较少的杀软报毒一般都可以确定该文件确实有问题。此外病毒名中往往会带有杀软判断该文件是恶意文件的理由,例如:backdoor意为后门,即软件作者可能绕过安全性控制而获取对程序或系统访问权spy、Trojan为间谍软件,即软件作者可能利用此软件在未经用户允许的情况下暗中收集用户信息malware是病毒的一种,可能感染并损害计算机win32一般多见于病毒的命名中Generic代表该文件是被启发式扫描引擎报毒(这类报毒的误报可能性最高)等等,具体可以在软件官网上查询到。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/12272186.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-24
下一篇 2023-05-24

发表评论

登录后才能评论

评论列表(0条)

保存