1.程序代码

#include

#include

#include

#include

#include

#define PCAP_ERRBUF_SIZE 1024

#define pcap_t void

typedef unsigned int bpf_u_int32;

typedef unsigned char u_char;

struct bpf_program

{

unsigned int bf_len;

void *bf_insns;

};

struct pcap_pkthdr

{

struct timeval ts;

bpf_u_int32 caplen; //表示抓到的数据长度

bpf_u_int32 len; //表示数据包的实际长度

};

void get_packet(const struct pcap_pkthdr *pkthdr, const u_char *packet)

{

int i;

printf("\n");

printf("Packet length: %d\n", pkthdr->len);

printf("Number of bytes: %d\n", pkthdr->caplen);

printf("Recieved time: %s\n", ctime((const time_t *)&pkthdr->ts.tv_sec));

for(i=0; ilen; ++i)

{

printf("%02x ", packet[i]);

if((i + 1) % 16 == 0)

{

printf("\n");

}

}

printf("\n\n");

}

int main(int argc, char **argv)

{

struct in_addr addr;

struct bpf_program filter;

struct pcap_pkthdr header; //由pcap.h定义

pcap_t *handle;

char errbuf[PCAP_ERRBUF_SIZE];

char filter_app[] = "port 23"; //过滤表达式

char *dev = NULL;

bpf_u_int32 mask; //执行嗅探的设备的网络掩码

bpf_u_int32 net; //执行嗅探的设备的IP地址

u_char *packet; //实际的包

dev = (char *)pcap_lookupdev(errbuf);

memset(&header, 0x00, sizeof(header));

printf("\nDevice = [%s]\n", dev);

//printf("errbuf = [%s]\n", errbuf);

/* 探查设备属性 */

pcap_lookupnet(dev, &net, &mask, errbuf);

/* 以混杂模式打开会话 */

handle = (pcap_t *)pcap_open_live(dev, 1000, 1, 0, errbuf);

/* 编译过滤器 */

//pcap_compile(handle, &filter, filter_app, 0, net);

/* 应用过滤器 */

//pcap_setfilter(handle, &filter);

addr.s_addr = net;

printf("net=[%s]\n", inet_ntoa(addr));

addr.s_addr = mask;

printf("mask=[%s]\n", inet_ntoa(addr));

/* 截获一个包 */

packet = (u_char *)pcap_next(handle, &header);

if(!packet)

{

printf("did not capture a packet!\n");

exit(1);

}

/* 打印包数据 */

get_packet(&header, packet);

/* 关闭会话 */

pcap_close(handle);

return 0;

}

2.编译

gcc -o pcap-test pcap-test.c -lpcap

3.运行及结果

# ./pcap-test

Device = [eth1]

net=[172.16.79.0]

mask=[255.255.255.0]

Packet length: 150

Number of bytes: 150

Recieved time: Mon Dec 30 19:13:19 2019

00 50 56 c0 00 08 00 0c 29 55 6e bc 08 00 45 10

00 88 68 3c 40 00 40 06 db 81 ac 10 4f 80 ac 10

4f 01 00 16 c9 c7 16 d5 1c f4 4b 0e 77 50 50 18

01 68 81 12 00 00 de a1 f2 88 9f 59 54 22 cb 29

8a b9 c0 e5 d2 f3 3c cd ae 84 93 74 9a b5 66 44

17 be cb 6d 3b 1a 99 33 01 11 26 04 31 8f de 58

52 52 fa a8 99 a1 3a f6 fe 31 de 23 76 81 bc f1

70 a6 b5 48 04 69 1f a2 8e 34 b1 70 e6 f6 8d ac

f2 95 16 f9 3d a3 a1 b3 5e 39 63 b9 15 23 f6 bd

20 80 02 f7 4f df

c语言无线网络抓包程序,c语言实现抓包相关推荐

  1. python3屏幕抓取程序_python之屏幕抓取

    Tidy 和 HTML 解析 Beautiful Soup 屏幕抓取:是通过程序下载网页并从中提取信息的过程. 简单来见:下载数据并对其进行分析 思路:可使用urllib来获取网页的HTML代码,再使 ...

  2. c语言按键实现跳转程序,C语言中的跳转语句

    <C语言中的跳转语句>由会员分享,可在线阅读,更多相关<C语言中的跳转语句(4页珍藏版)>请在人人文库网上搜索. 1.C语言中的跳转语句c语言有4个跳转语句return.got ...

  3. 如何用c语言编写炫酷烟花程序,C语言实现放烟花的程序

    这是一个利用C语言编写放烟花的程序(同时也可以播放音乐),供大家参考,具体内容如下 代码如下 #pragma once #include #include //图形界面库头文件 #include // ...

  4. C语言输入end时结束程序,c语言输入eof结束怎么写

    1.C语言里的EOF(结束程序)怎么用 在C语言中,或更精确地说成C标准函数库中表示文件结束符(end of file).在while循环中以EOF作为文件结束标志,这种以EOF作为文件结束标志的文件 ...

  5. c语言入门经典18个程序,C语言入门经典

    面向C语言初学者,详细且全面地讲解了C语言的各种知识,从基础知识到高级应用,由浅入深,循序渐进地引领读者掌握C语言中的各种编程技术,体会C语言的灵活与强大.同时,<C语言入门经典>着眼于应 ...

  6. c语言设计一个自动报警的程序,C语言程序设计试题(B卷)..doc

    商洛学院2007-2008年度第一学期期末考试试题 课程:C语言程序设计(B卷) 适用班级:06物理教育(本)06生物(本) 一.填空题:(每空1分,共10分) 结构化程序设计所规定的三种基本的控制结 ...

  7. c语言向指定文件写入程序,C语言同时向不同的文件写入不同的数据

    C语言同时向不同的文件写入不同的数据 这个我写了好久才写出来的,之前不知道是什么原因总是不能同时一起写,而且写完一个程序就死了,后来在网上查到一篇文章 http://blog.csdn.net/fei ...

  8. c语言用链表写管理系统程序,c语言课程设计职工信息管理系统单链表实现程序源代码-20210401015126.docx-原创力文档...

    文档编制序号:[KKIDT-LLE0828-LLETD298-POI08] 文档编制序号:[KKIDT-LLE0828-LLETD298-POI08] C语言课程设计职工信息管理系统单链表实现程序源代 ...

  9. c语言密码强度的判断程序,C语言实现密码强度检测

    这篇文章主要为大家详细介绍了C语言实现密码强度检测,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 本文实例为大家分享了C语言实现密码强度检测,供大家参考,具体内容如下 ...

最新文章

  1. Nature Microbiology:微生物与海洋全球变化
  2. redis stream java消息队列_Redis-消息队列的两种实现方式
  3. js小案例:定时轮播图
  4. 蓝桥备赛第四周 同余+并查集
  5. eclipse 创建maven web项目_Eclipse创建第一个Scala项目(过程)
  6. LeetCode 623. 在二叉树中增加一行(BFS/DFS)
  7. python矩阵中插入矩阵_Python | 矩阵的痕迹
  8. html列表拖拽排序插件,JS拖拽排序插件Sortable.js用法实例分析
  9. Titon Toolkit – 非常强大的用户界面组件
  10. ContentPresenter
  11. linux内核串口调试,linux 串口调试方法
  12. php多人聊天室系统,PHP打造多人在线聊天室[一]
  13. 我奋斗十八年不是为了和你一起喝咖啡
  14. 单片机通过串口与电脑通信
  15. MATLAB实现Enigma 密码机
  16. RedHat 8 dnf源配置
  17. Robust continuous clustering
  18. 给时光以生命,而不是给生命以时光--2018年终总结
  19. 计算机专业创新点子借鉴,[在计算机教学中应如何开展创新教育]大学生创新创业点子300...
  20. 量子计算机研制成功图片,光量子计算机的曙光:科学家成功研制出量子光源

热门文章

  1. header php下载文件很小,php中Accept-Length获取不到下载文件的大小
  2. 转hdmi_LT8619CHDMI转LVDS-HDMI支持高达4Kx2K_30Hz的分辨率
  3. 64位系统下一个32位的程序究竟可以申请到多少内存?
  4. 如何选择正确的控制系统?PLC和DCS各有不同
  5. Python Appium 元素定位方法简单介绍
  6. 【Spring】Service 注入失败,空指针
  7. MySQL 两个死锁样例
  8. java:Map借口及其子类HashMap五,identityHashMap子类
  9. LVS+Heartbeat+Ldirectord
  10. LaTeX tikz初探——利用emoji画GPS卫星2D分布图(2)