二进制文件每两个的字节位置交换
发表于:2025-01-21 作者:千家信息网编辑
千家信息网最后更新 2025年01月21日,(一).写作缘由:写这篇博客的目的是是为了方便下次使用或者帮助其他需要的人。在打CTF的时候,偶尔会遇到还原一些文件,笔者遇到的是分析数据流量的时候,提取出了一个未知文件,用二进制编辑器打开,搜所文件
千家信息网最后更新 2025年01月21日二进制文件每两个的字节位置交换
(一).写作缘由:
写这篇博客的目的是是为了方便下次使用或者帮助其他需要的人。在打CTF的时候,偶尔会遇到还原一些文件,笔者遇到的是分析数据流量的时候,提取出了一个未知文件,用二进制编辑器打开,搜所文件头,发现和某个文件头有点相似,但是每两个字节位置颠倒了,于是就想到把每两个字节交换位置,就像下面这种:
(二).演示及效果:
在命令行执行前后如下图:
(三).贴上代码:
代码是C写的,有点多不太美观,功能太单一, 也没弄啥模块化,编写环境是windows。
#include#include #include int main(int argc, const char** argv){ //The pointer of input file and output file FILE *fin; FILE* fout; //The file name of input file and output char* inFile; char* outFile; //The pointer of single and double byte type unsigned short* pDouble = NULL; unsigned char* pSingle = NULL; //The memery buffer of header and tail pointer about input file void* fBuffStart = NULL; void* fBuffEnd = NULL; //The size of input file (Byte) unsigned long fileSize = 0; //Judge the count of parameter and the file name limit if(argc != 3 || strlen(argv[1]) > 255 || strlen(argv[2]) > 255) { printf("\n[-]Usage: %s infile outfile\n", argv[0]); printf("[-]Filename limited: 255 Byte\n"); exit(-1); } inFile = argv[1]; outFile = argv[2]; //Exception handling if(!(fin = fopen(inFile, "rb"))) { printf("Error: open %s failed!\n", inFile); exit(-1); } //Obtain file size fseek(fin, 0, SEEK_END); fileSize = ftell(fin); fseek(fin, 0, SEEK_SET); //Alloc memery for input file and read its data to memery fBuffStart = (unsigned char*)malloc(fileSize); memset(fBuffStart, 0, fileSize); fread(fBuffStart, 1, fileSize, fin); fclose(fin); //The position of start and end input file memery fBuffEnd = (unsigned char*)fBuffStart + fileSize; pDouble = (unsigned short*)fBuffStart; //Exception handling if(!(fout = fopen(outFile,"wb"))) { printf("Error: open %s failed!\n", outFile); exit(-1); } //Exchange position of each two byte while(pDouble != fBuffEnd) { pSingle = pDouble; fwrite(pSingle+1, 1, 1, fout); fwrite(pSingle, 1, 1, fout); pDouble++; } fclose(fout); return 0;}
(四).若有不足之处,还请斧正。
文件
两个
位置
字节
时候
二进制
相似
美观
上代
代码
功能
博客
命令
效果
数据
模块
流量
环境
目的
笔者
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
网络安全 网络文明大学生
广州服务备件管理软件开发
明日之后夏尔镇服务器有主播吗
嵌入式 流媒体 服务器
亿人服务器集群价格
邢台网络安全和信息化委员会
如何增强青少年网络安全意识
香港盘古软件开发有限公司
腾越互联网科技
云端服务器怎么登陆
软件开发什么前景好
信息网络安全论文1500字
怎样删除app数据库
服务器高端工作站使用多少内存
淇县软件开发有限公司
医疗软件开发协议
如何识别服务器挖矿行为
315网络安全图片
智能化施工及软件开发合同
服务器机箱外壳设计
数据库造成系统卡该怎么解决
电脑dns服务器检测到没有响应
机房网络安全加固
如何禁止网络安全共享
网络技术工作室要交税吗
数据库学习哪家好
青少年网络安全公约原则
交通行业服务器加固系统费用
南京服务器工控机通讯
华为5g网络安全