我一直在使用Wireshark,我想知道有没有人可以帮助我。我记录了随机浏览,并将其保存到pcap文件。我想创建一个从数据包中提取每个信息的程序(我知道许多存在但我想要练习),比如源和目标IP,使用的端口,数据等。我的学习目标是完成的就是从流中提取图像或Youtube视频或任何东西(我知道,我将不得不对数据包进行分组和排序等),但这是我猜想的后期项目。 :)使用C++提取数据包信息
我正在使用libpcap(在Linux上),我的代码到目前为止可以读取脱机文件数据包的数据包,并且 - 因为我知道他们是PPP数据包在我的情况下 - 如果我加载自定义结构来自数据包第20个字节的信息,我可以查看MAC地址和IP地址。
我的问题:
1)我怎么知道/确定没有Wireshark的是什么样的数据链路类型的,用的? (以太网,WiFi,PPP等)
2)如何读取数据包的更多数据?如果我只读了一个字节,我的程序不会做什么,每个变量都是空的。
我有一个ppphdr结构,其中包含:
u_int16_t htype;
u_int16_t ptype;
u_char hplen;
u_char plen;
u_int16_t oper;
u_char sha[6];
u_char spa[4];
u_char tha[6];
u_char tpa[4];
,我称这种为每个数据包:
pppheader = (struct ppphdr*)(packet+20);
因为PPP帧从20字节开始。它给出了发件人和目标MAC和IP地址。
在我继续读取接下来的几个字节后,使用相同的调用只是不同的结构,它回到空白,程序在1个数据包后停止。我正在尝试使用本指南:http://www.tcpipguide.com/free/t_PPPGeneralFrameFormat.htm
从这里开始:http://en.wikipedia.org/wiki/Ethernet_frame – Nim
如果您在问题中添加了一些代码,以及关于捕获什么的一些信息,您将有更高的获得合理答案的机会你有的文件,确切地说。特别是问题2听起来像是代码中的问题。 – hyde
http://en.wikipedia.org/wiki/Pcap – hyde