linux查看程序recvfrom,Linux网络抓包的程序 [使用recvfrom之后无限阻塞]
操作系统:
ubuntu 2.6.24
g++
网络没有问题
程序原理是 :
1,先创建一个RAW的socket,
2,再把网卡设为混杂模式。
3,使用recvfrom开始抓包。
症状描述:
recvfrom一直阻塞,不返回任何值:
下面是代码:
#include // for AF_INET SOCK_RAW
#include // for socket
#include // for sockaddr_in
#include // for strerror
#include // for errno
#include // for ioctl
#include // for ifreq
#include
#include
#include
#define DIE(x) printf(x);printf("Error Infor = [ %s ] ",strerror(errno));
exit(1);
#define BUFF_SIZE 2048
#define PORT_NUMBER 12345
struct ifreq ifr;
int main(int argc,char *argv[])
{
int sock;
sockaddr_in addr_in;
// 网上也有人用 sock = socket(AF_INET,SOCK_PACKET,htonl(EH_P_IP)),我试了下,结果和 这个一样
if (-1 == (sock = socket(AF_INET, SOCK_RAW,htonl(ETH_P_ALL))))
{
DIE("Create socket failed.n")
}
// 用ifconfig试了下,我的网卡是eth1
strcpy(ifr.ifr_name, "eth1");
if (ioctl(sock, SIOCGIFFLAGS, &ifr) == -1)
{
DIE("ioctl failed.n");
}
ifr.ifr_flags |= IFF_PROMISC;
printf("Interface is %s.n",ifr.ifr_name);
if (ioctl(sock, SIOCSIFFLAGS, &ifr) == -1)
{
DIE("Second ioctl failed.n");
}
printf("Interface %sn",ifr.ifr_name); // 这里用 $ifconfig eth1 查看网卡 属性,成功设置混杂模式
char buff[BUFF_SIZE];
socklen_t sock_len = sizeof(buff);
printf("Begin capture.n");
while (true)
{
printf("peek.n");
memset(buff, 0, sizeof(char) * sock_len);
// 问题就在这里,一直阻塞,没有任何返回值
sock_len = recvfrom(
sock ,buff ,sizeof(buff) ,0 ,(sockaddr *)&addr_in ,&sock_len);
buff[sock_len] = '';
printf("%sn",buff);
}
return 0;
}
搞了几天了,搞不定.
谢谢
|
28.4 Raw Socket Input
The first question that we must answer regarding raw socket input is: Which
received IP datagrams does the kernel pass to raw sockets? The following rules
apply:
Received UDP packets and received TCP packets are never passed to a raw
socket. If a process wants to read IP datagrams containing UDP or TCP packets,
the packets must be read at the datalink layer, as described in Chapter 29.
---------------UNPv2
linux查看程序recvfrom,Linux网络抓包的程序 [使用recvfrom之后无限阻塞]相关推荐
- 【学习点滴】linux调试工具、cmake和网络抓包
目录 gdb 多进程调试 多线程调试: gdb底层原理 Linux下查看服务器端的并发连接个数: Valgrind memcheck strace Linux下,绑定1024以下的端口需要root权限 ...
- 安卓抓包工具 linux,Android 下使用tcpdump网络抓包方法
Android 下使用tcpdump网络抓包方法 抓包需要tcpdump以及Root权限,tcpdump在本文后有下载. 首先把tcpdump传进手机,用adb命令(放SD卡有时会有问题,我一次可以用 ...
- Linux下使用libpcap进行网络抓包并保存到文件
libpcap是一个抓取网络数据报文的C语言函数库,使用这个库可以非常方便的抓取网络上的报文,方便我们分析经过我们设备上的各种报文: 1.libpcap安装 下载文件:libpcap-x.x.x.ta ...
- linux 网卡包存储,Linux下使用libpcap进行网络抓包并保存到文件-Go语言中文社区
libpcap是一个抓取网络数据报文的C语言函数库,使用这个库可以非常方便的抓取网络上的报文,方便我们分析经过我们设备上的各种报文: 1.libpcap安装 下载文件:libpcap-x.x.x.ta ...
- linux 抓包生成文件,Linux下使用libpcap进行网络抓包并保存到文件(函数介绍)
libpcap是一个抓取网络数据报文的C语言函数库,使用这个库可以非常方便的抓取网络上的报文,方便我们分析经过我们设备上的各种报文: 使用libcap库编译时都要在后面加上-lpcap选项 使用pca ...
- Linux系统抓包回放,Linux下24小时持续网络抓包(TCPDUMP)
适用于CentOS/REHL/Ubuntu/Debian等,抓出来的包可用Wireshark直接打开分析. 参考文章: 原文的脚本相互调用时,名称有些问题,已修改 1.安装tcpdump 执行(Ubu ...
- WinPcap网络抓包分析程序--总结
应付大作业写的一个程序,先给出程序的运行界面 程序的核心内容是抓包然后分析数据,我做的最多的也是协议分析这块内容.上面首先给出的是当前网络的上传下载速度,这块内容我是参考Windows性能计数器来写的 ...
- 关于Linux 网络抓包的一些笔记整理
写在前面 遇到一个 ping 单通 的情况,需要抓包分析下,所以整理这部分笔记 博文内容涉及: HTTP/TCP 抓包分析 Demo ICMP 抓包分析 Demo Nginx 抓包分析用户名密码 De ...
- 网络抓包与流量在线分析系统的设计与实现-基于libpcap在MacOS上实现 记录这愉快(DT)的一周
网络抓包与流量在线分析系统的设计与实现-基于libpcap在MacOS上实现 记录这愉快(DT)的一周 要求: 基于LINUX系统设计并实现一个网络流量的分析系统.该系统具有以下功能:(1)实时抓取网 ...
最新文章
- 百度编辑器(1.4.3—net版)上传图片路径及其他配置
- IBM收购Q1 Labs
- J2SE的30个基本概念
- Windows10下git bash中添加wget下载工具
- Java NIO系列教程(三) Buffer
- Drupal 覆写系统样式
- Spring Cloud Feign 请求压缩 、Feign的日志级别配置
- android 安卓市场,安卓市场(Android Market).doc
- pythonint函数的参数_向嵌入的Python函数传递两个参数(int和array)
- 855计算机应用基础,2017年曲阜师范大学信息技术与传播学院855计算机应用基础考研导师圈点必考题汇编...
- 实现动态验证码的思路
- Lua程序设计--全局变量
- GIS和RS里面的一些小问题
- js中的数组Array定义与sort方法使用示例
- 「管理数学基础」4.1 模糊数学:模糊现象与模糊集、隶属函数、模糊集的运算、水平截集与分解定理
- 读 《.Net 之美》解析.Net Remoting (应用程序域)-- Part.1
- pytest框架(三)
- 50元打造双网卡负载均衡服务器(Network Load Balancing)
- 2020-08-07#自学编程方法论# 怎么学到后面越来越难?达克效应在作祟!
- 谷歌浏览器翻译插件使用不了,替代品 AnyTranslation
热门文章
- 对于Listview未满一屏添加footerView 满了一屏幕将View固定在屏幕下方的解决方案
- 台积电和三星都变脸了,美国图谋失败,外媒:拜登心都碎了
- 数字图像处理实验(二)
- 万字长文,学会ElasticSearch,这一篇就够了!
- matlab预测未来gdp,matlab对国内生产总值(GDP)建立马尔可夫链模型(MC)并可视化...
- QQmusic imitations record 第二天
- Java8 ~ Java17 新特性
- CRM客户管理系统的作用和四大优势
- python如何对excel批量加密_批量解除excel密码保护 可多个密码,python
- 设计模式之工厂方法模式