misc文件操作
文件类型识别、取证
1、file命令
当文件没有后缀名或者有后缀名而无法正常打开时,根据识别出的文件类型来修改后缀名即可正常打开文件(在Linux操作系统下使用该命令)
格式: file 文件名
2、strings命令
打印文件中可打印的字符,经常用来发现文件中的一些提示信息或是一些特殊的编码信息,常常用来发现题目的突破口
配合grep命令探测指定信息:
strings 文件名 | grep -i XXCTF
例如:strings webshell.pcapng | grep { #查找带有{ 的字符串
3、十六进制查看器
通过winhex、010editor或notepad++可以查看文件头类型,根据文件头类型判断出文件类型
1 |
|
winhex试用期已过窗口绕过方法:点击details(详细),把打开的窗格最小化之后,即可正常使用winhex
notepad++查看十六进制需要下载一个HEX-Editor插件
4、文件头残缺/错误
通常文件无法正常打开有两种情况,一种是文件头部残缺,另一种是文件头部字段错误。针对文件头部残缺的情况,使用winhex程序添加相应的文件头,支队头部字段错误可以找一个相同类型的文件进行替换
一般使用file命令,只显示data,那么就极有可能是文件头残缺或错误
文件分离操作
1、Binwalk工具
binwalk是Linux下用来分析和分离文件的工具,可以快速分辨文件是否有多个文件合并而成,并将文件进行分离,如果分离成功会在目标文件的目录的同目录下生成一个形如
_文件名_extracted等文件目录,目录中有分离的文件
分析方法: binwalk filename
分离方法: binwalk -e filename
2、foremost
如果binwalk无法正确分离除文件,可以使用foremost,将目标文件复制到kali中,成功执行后,会在目标文件的文件目录下生成我们设置的目录,目录中会按文件类型分离出文件
用法: foremost 文件名 -o 输出目录名
3、dd
当文件自动分离出错或者因为其他原因无法自动分离时,可以使用dd实现文件手动分离
格式: dd if=源文件 of=目标文件名 bs=1 skip=开始分离的字节数
参数说明:
if=file #输入文件名,缺省为标准输入
of=file #输出文件名,缺省为标准输出
bs=bytes #同时设置读写块的大小为bytes,可代替ibs和obs
skip=blocks #从输入文件开头跳过blocks个块后再开始复制
这里最后2.txt中内容为12345
真正使用的时候需要配合binwalk使用,binwalk可以分析出文件分离的起始和终止位置
4、Winhex
除了使用dd外,还可以使用winhex实现手动文件分离,将目标文件拖入winhex中,找到要分离的部分,点击复制即可
当给定有个txt文件,里面是16进制的压缩包,这时可以使用010editor导入16进制,再保存成压缩包即可
文件合成操作
Linux下的文件合并
linux下通常对文件名相似的文件要进行批量合并
格式:cat 合并的文件>输出的文件
完整性检测:linux下计算文件md5
格式:md5sum 文件名
(这个操作的原因是因为,你不知道所给部分文件的合并顺序,出题人可能会给出最后合并文件的md5值,这样就可以达到检测合并顺序是否正确的效果)