IOS多网卡抓包
linux下libpcap支持从多网卡抓包,设置为any即可
在IOS或者mac上就无法通过次方法抓取所有网卡报文
1.通过设置libevent事件回调,每个网卡注册读事件, fd通过
pd = pcap_open_live(device, snaplen, dopromisc, timeout, ebuf);
获得。
- #ifdef IOS
- static int add_event(pcap_t *p)
- {
- if(!p)
- return -;
- //event_init();
- if(!base)
- base = event_base_new();
- struct event *ev = NULL;
- int fd = pcap_fileno(p);
- printf("---------fd:%d \n", fd);
- //event_set(&evListen, fd, EV_READ, user_pcap_run, p );
- ev = event_new(base,fd, EV_READ | EV_PERSIST, user_pcap_run,p);
- struct timeval timeout;
- timeout.tv_sec = ;
- timeout.tv_usec = ;
- //event_base_set(base,&evListen);
- event_add(ev, NULL);
- return ;
- }
- #endif
2.开线程 调用事件循环
- void *mt_vqmon_thread(void *param)
- {
- #ifdef ANDROID
- mmap_cap_run();
- #elif defined IOS
- event_base_dispatch(base);
- printf("exit monitor thread\n");
- #else
- pcap_t *p = (pcap_t *)param;
- user_pcap_loop(p);
- #endif
- return NULL;
- }
3.其他读取报文,处理和pcap之前类似
- #ifdef IOS
- void user_pcap_run(evutil_socket_t s, short t, void *arg)
- {
- if(!arg)
- return;
- pcap_t *p = (pcap_t *)arg;
- const uint8_t *packet;
- struct pcap_pkthdr *pcap_header;
- int32_t retval;
- static uint64_t recv_bytes = ;
- static unsigned long start_time = ;
- unsigned long end_time, diff_time;
- int link_type;
- link_type = pcap_datalink(p);
- while()
- {
- retval = pcap_next_ex(p, &pcap_header, &packet);
- if(retval >= && packet)
- {
- //handle_dissector(link_type,packet,pcap_header->caplen,&pcap_header->ts);
- recv_bytes += pcap_header->caplen;
- }
- else if(retval == ) //time out
- {
- printf("call user_pcap_run failed : No packets arrived before the timeout expired,try again!!!\n");
- break;
- }
- else if(retval == - ) // error
- {
- printf("No more packets to read from the file !\n");
- return ;
- }
- else
- {
- printf("call pcap_next_ex failed : %s\n",pcap_geterr(p));
- return ;
- }
- static uint32_t last_drop_num = ;
- struct pcap_stat stat;
- pcap_stats(p,&stat);
- if(stat.ps_drop && stat.ps_drop != last_drop_num)
- {
- printf("========>total packet = %u drop packet = %u \n",stat.ps_recv,stat.ps_drop);
- last_drop_num = stat.ps_drop;
- }
- // Print debug info.
- end_time = time();
- if(start_time == )
- {
- start_time = end_time;
- }
- diff_time = end_time - start_time;
- if(diff_time >= )
- {
- float mbps;
- mbps = recv_bytes * 1.0 / ( * * diff_time);
- start_time = end_time;
- recv_bytes = ;
- printf("==================================================> captured speed = %.2f Mbps !!!\n",mbps);
- }
- /*
- * Check for savagely closed TCP connections.
- */
- tcp_check_timeouts(&pcap_header->ts);
- }
- return ;
- }
- #endif
IOS多网卡抓包的更多相关文章
- 如何在ios 系统 中抓包??
为了实现在ios系统上抓包,如下步骤: 1,设备越狱 2,在cydia-软件源-设置中改为开发者,否则有些deb搜索不到 安装如下软件:OpenSSH,OpenSSL,wget (下载工具) Apti ...
- ios透明代理抓包
之前接到一些ios测试的时候,一些应用往往由于这样那样的原因(比如自实现的发包函数)导致直接使用本地ios系统的代理很难将数据代理到主机的burp或findler中,本文提供了一种解决该问题的途径 原 ...
- iOS,Android网络抓包教程之tcpdump
现在的移动端应用几乎都会通过网络请求来和服务器交互,通过抓包来诊断和网络相关的bug是程序员的重要技能之一.抓包的手段有很多:针对http和https可以使用Charles设置代理来做,对于更广泛的协 ...
- iOS 利用Charles抓包
1.安装 Mac下好用的HTTP/HTTPS抓包工具Charles,到官网http://www.charlesproxy.com/可下载到最新版本(若不支持rMBP可拖到Retinizer中把文字变清 ...
- iOS系统网络抓包方法
转到自己的博客收藏. 1. 网络共享 + 可视化抓包工具 基本原理 原理比较简单,ios设备通过代理方式共享连接mac电脑的无线网卡,使用抓包工具抓包,然后进行分析(我们推荐使用Wireshark,在 ...
- 使用Fiddler对Android或者iOS设备进行抓包
1.PC端Fiddler配置 Tools->HTTPS->选中“Decrpt HTTPS traffic”,“Ignore server certificate errors” Tools ...
- UNIX网络编程——尝试探索基于Linux C的网卡抓包过程
抓包首先便要知道经过网卡的数据其实都是通过底层的链路层(MAC),在Linux系统中我们获取网卡的数据流量其实是直接从链路层收发数据帧.至于如何进行TCP/UDP连接本文就不再赘述(之前的一段关于w ...
- Centos7 多网卡抓包可以抓到UDP但程序recvfrom不到
问题: Centos7多网卡,抓包时发现某网卡上有UDP包,但是用程序recvfrom无法接收到消息. 解决步骤: 1.确认防火墙是否关闭: 已关闭 2.确认网卡是否开启过滤:cat /proc/sy ...
- IOS 苹果手机fiddler抓包时出现了tunnel to 443 解决方案,亲测有效
先上一张捉取成功图[版本需4.0以上,并非所有https数据可抓取,具体原因未知] 1.先对Fiddler进行设置[打开Fiddler ——> Options .然后打开的对话框中,选择HTTP ...
随机推荐
- Spring Cloud入门程序
本文手把手教你,做出第一个Spring Cloud程序,Eureka的简单入门使用 1.创建Spring Starter Project工程 点击next,添加项目名 2.引入Spring Cloud ...
- 使用C语言来实现模块化
除了C语言以及C++编程语言之外,在其它现在非常流行的开发语言中,比如说:java,php,jsp等等.我们很难想象到缺少标准化的模块管理机制是一件多么可怕的事情.但是这往往也是由C语言本身的设计哲学 ...
- ARM实验3 ——串口实验
uart串口实验 实验内容: 编写UART模块程序,通过串口将信息打印到终端. 实验目的: 熟悉开发环境的使用. 掌握exynos4412处理器的UART功能. 实验平台: FS4412开发板,ecl ...
- 译:Local Spectral Graph Convolution for Point Set Feature Learning-用于点集特征学习的局部谱图卷积
标题:Local Spectral Graph Convolution for Point Set Feature Learning 作者:Chu Wang, Babak Samari, Kaleem ...
- AD的命名规则 AD常用产品型号命名规则
AD的命名规则 AD常用产品型号命名规则 DSP信号处理器 放大器工业用器件通信 电源管理 移动通信 视频/图像处理器等 模拟A/D D/A 转换器 传感器 模拟器件 A ...
- firewalld 使用简介
学习apache安装的时候需要打开80端口,由于centos 7版本以后默认使用firewalld后,网上关于iptables的设置方法已经不管用了,想着反正iptable也不会用,索性直接搬官方文档 ...
- 如何将Win7做为NTP服务器
1. 修改注册表项 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NtpServer ...
- 机器学习实战之Logistic回归
Logistic回归一.概述 1. Logistic Regression 1.1 线性回归 1.2 Sigmoid函数 1.3 逻辑回归 1.4 LR 与线性回归的区别 2. LR的损失函数 3. ...
- halcon保存带有region的图片算子
显示带区域的图片除了可以用dev_display挨个显示外再截图,还可以通过一个算子来实现这一功能 这个算子是:dump_window_image.(其实就是截图) 这个算子的意思是把WindowHa ...
- 【转】Mac 程序员的十种武器
http://chijianqiang.baijia.baidu.com/article/3733 上 在写 Mac 程序员的十个武器之前,我决定先讲一个故事,关于 Mac 和爱情的.(你们不是问 M ...