hex2pcap
#include <stdlib.h>
#include <stdio.h>
#include <string.h> typedef struct
{
unsigned int magic_number;
unsigned short version_major;
unsigned short version_minor;
unsigned int thiszone;
unsigned int sigfigs;
unsigned int snaplen;
unsigned int network;
}pcap_hdr_t; typedef struct
{
unsigned int ts_sec;
unsigned int ts_usec;
unsigned int incl_len;
unsigned int orig_len;
}pkt_hdr_t; FILE *pcap_fd = NULL;
unsigned char input_buf[] = {};
unsigned char output_buf[] ={};
int input_len = , output_len = ; int hexdump(unsigned char *name, unsigned char *data, unsigned short len)
{
int i, j, p, ret, tmp_len = ;
static unsigned char dump_buf[] = {};
printf("hexdump(%s len=%d)\r\n", name, len);
memset(dump_buf, 0x00, sizeof(dump_buf)); for (i = , j = , p = ; i < len; i++)
{
ret = sprintf( (dump_buf + p), " %02x", *(data + i) );
p += ret;
j++;
if(j >= )
{
printf("%s\r\n", dump_buf);
j = ;
p = ;
}
}
if(p > )
printf("%s\r\n", dump_buf);
return ;
} int file_size(FILE *fd)
{
int cur, len;
cur = ftell(fd);
fseek(fd, , SEEK_END);
len = ftell(fd);
fseek(fd,cur, SEEK_SET);
return len;
} int wpkt(unsigned char *buf, int size)
{
int ret;
ret = fwrite(buf, size, , pcap_fd);
if(ret != )
printf("fwrite %d %d err \n", size, ret);
return ;
} int pcap_deinit(void)
{
fclose(pcap_fd);
return ;
} int eth_pcap(unsigned char *pkt, int len)
{
pkt_hdr_t pkt_hdr = {}; pkt_hdr.incl_len = pkt_hdr.orig_len = len;
wpkt((unsigned char *)(&pkt_hdr), sizeof(pkt_hdr));
wpkt(pkt, len);
return ;
} int pcap_init(int pkt_type, unsigned char *file)
{
pcap_hdr_t pcap = {}; pcap_fd = fopen(file, "wb+");
if(NULL == pcap_fd)
{
printf("create %s err\n", file);
return -;
}
printf("create %s file\r\n", file);
pcap.magic_number = 0xa1b2c3d4;
pcap.snaplen = 0x900;
pcap.version_major = ;
pcap.version_minor = ;
pcap.network = pkt_type;//105,1
wpkt((unsigned char *)(&pcap), sizeof(pcap));
return ;
} int main(int argc, char *argv[])
{
FILE *fd;
unsigned char ch, *token, *delim = " ,";
int i, ret,pkt_type; argc--;
argv++;
/*hex2pkt -mac -i frame.hex -o mac.pcap*/
do
{
if( == strcmp(argv[], "-eth"))
{
pkt_type = ;
}
else if( == strcmp(argv[], "-mac"))
{
pkt_type = ;
}
else if( == strcmp(argv[], "-i"))
{
argv++;
argc--;
fd = fopen(argv[], "rb");
printf("-i %s\r\n", argv[]);
input_len = file_size(fd);
ret = fread( input_buf, input_len, , fd );
if( != ret)
printf("fread err ret %d\r\n", ret);
printf("input_buf(len=%d):\r\n%s\r\n", input_len, input_buf);
fclose(fd);
}
else if( == strcmp(argv[], "-o"))
{
argv++;
argc--;
for( token = strtok(input_buf, delim), output_len=; token != NULL; token = strtok(NULL, delim) )
{
sscanf(token, "%x", &output_buf[output_len++]);
}
hexdump("output", output_buf, output_len);
pcap_init(pkt_type, argv[]);
eth_pcap(output_buf, output_len);
pcap_deinit();
}
else
{
printf("unknow cmd %s\r\n", argv[]);
}
argv++;
argc--;
}
while(argc); return ;
}
hex2pcap的更多相关文章
- AireOS WLC配置抓包
这个Note主要列举在AireOS WLC上如何抓包.它实现的步骤也相对比较简单: 1.开启debug packet, 2.有数据被抓取到时,会以16进制的形式在WLC上输出, 3.我们将输出信息保存 ...
随机推荐
- 如何理解Virtual DOM
什么是虚拟DOM 接下来用vdom(Virtual DOM)来简称为虚拟DOM. 指的是用JS模拟的DOM结构,将DOM变化的对比放在JS层来做.换而言之,虚拟DOM就是JS对象.如下DOM结构: & ...
- OpenDaylight开发hello-world项目之功能实现
OpenDaylight开发hello-world项目之开发环境搭建 OpenDaylight开发hello-world项目之开发工具安装 OpenDaylight开发hello-world项目之代码 ...
- git光速入门
git的使用和讲解 版本控制 说到版本控制,脑海里总会浮现大学毕业是写毕业论文的场景,你电脑上的毕业论文一定出现过这番景象! 1 2 3 4 5 6 7 8 9 10 11 毕业论文_初稿.doc ...
- CF 704 D. Captain America
CF 704 D. Captain America 题目链接 题目大意:给出\(n\)个点的坐标,你要将每个点染成红色或者蓝色.染一个红色要付出\(r\)的代价,染一个蓝色要付出\(b\)的代价.有\ ...
- python实现圣诞树
先来个迷你的 *_* height = 5 stars = 1 for i in range(height): print((' ' * (height - i)) + ('*' * stars)) ...
- postman测试文件上传接口教程
postman是一个很好的接口测试软件,有时候接口是Get请求方式的,肯定在浏览器都可以测了,不过对于比较规范的RestFul接口,限定了只能post请求的,那你只能通过工具来测了,浏览器只能支持ge ...
- 洛谷 P4124 (数位 DP)
### 洛谷 P4124 题目链接 ### 题目大意: 给你一段区间,让你求满足下列两个条件时的数的个数. 1.至少有 3 个相邻相同数字 (即 111 .1111 .222 等) 2.不能同时出现 ...
- 数据库之MySQL与Python交互
准备数据 创建数据表 -- 创建 "京东" 数据库 create database jing_dong charset=utf8; -- 使用 "京东" 数据库 ...
- C# convert between Image and Base64string
static void ImageMSDemo(string picPath) { byte[] imageArray = System.IO.File.ReadAllBytes(picPath); ...
- 抖音美女千千万,想用Python爬爬看
前言 文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者: 星安果.AirPython PS:如有需要Python学习资料的小伙 ...