- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我正在尝试构建一个应用程序,将我的旧自定义以太网日志(bin 文件)转换为标准 winpcap 样式日志。
问题是我似乎找不到如何在不使用适配器(网卡)的情况下打开 pcap_t* 的示例。尚未创建 temp.pkt。
我看过 Winpcap 提供的示例,它们在转储数据包时都使用实时适配器。这个例子最接近\WpdPack\Examples-pcap\savedump\savedump.c 最接近,看下面的例子稍作修改。
#ifdef _MSC_VER
/*
* we do not want the warnings about the old deprecated and unsecure CRT functions
* since these examples can be compiled under *nix as well
*/
#define _CRT_SECURE_NO_WARNINGS
#endif
#include "pcap.h"
int main(int argc, char **argv)
{
pcap_if_t *alldevs;
pcap_if_t *d;
int inum;
int i=0;
pcap_t *adhandle;
char errbuf[PCAP_ERRBUF_SIZE];
pcap_dumper_t *dumpfile;
/* Open the adapter */
if ((adhandle= pcap_open(??????, // name of the device
65536, // portion of the packet to capture.
// 65536 grants that the whole packet will be captured on all the MACs.
1, // promiscuous mode (nonzero means promiscuous)
1000, // read timeout
errbuf // error buffer
)) == NULL)
{
fprintf(stderr,"\nUnable to open the adapter. %s is not supported by WinPcap\n", d->name);
/* Free the device list */
pcap_freealldevs(alldevs);
return -1;
}
/* Open the dump file */
dumpfile = pcap_dump_open(adhandle, argv[1]);
if(dumpfile==NULL) {
fprintf(stderr,"\nError opening output file\n");
return -1;
}
// ---------------------------
struct pcap_pkthdr header;
header.ts.tv_sec = 1 ; /* seconds */
header.ts.tv_usec = 1; /* and microseconds */
header.caplen = 100; /* length of portion present */
header.len = 100 ; /* length this packet (off wire) */
u_char pkt_data[100];
for( int i = 0 ; i < 100 ; i++ ) {
pkt_data[i] = i ;
}
pcap_dump( (u_char *) dumpfile, &header, (u_char *) &pkt_data);
// ---------------------------
/* start the capture */
// pcap_loop(adhandle, 0, packet_handler, (unsigned char *)dumpfile);
pcap_close(adhandle);
return 0;
}
最佳答案
我建议使用 pcap_t
这样做,因为使用 WinPcap 比自己编写更好。
以下是操作步骤:
pcap_open_dead()
函数创建一个pcap_t
。阅读功能说明here .以太网的 linktype
是 1。pcap_dump_open()
函数创建一个 pcap_dumper_t
。pcap_dump()
函数将数据包写入转储文件。希望对您有所帮助。
关于c++ - Winpcap 保存原始数据包不是来自适配器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3114671/
在 Windows 上,我正在加载一个 DLL 并运行它。 DLL 执行大量网络事件。现在我需要监视 DLL 连接到哪个 url 和主机。我认为使用数据包嗅探器可能是一个不错的选择。 WinPcap
有谁知道我为什么要使用 Winpcap 而不仅仅是 .Net 套接字来嗅探本地 PC 上的数据包? 泰 最佳答案 套接字(.NET、Winsock 等)通常收集在第 7 层,即应用程序层。也就是说,发
在解析 Arp 数据包时,我发现了这个好问题。 当收到 Arp 数据包时,我正在解析目标的 IP 地址。 我的 hex dumb 中有 c0 a8,但在那之后它就结束了。我缺少数据!我在 Wiresh
我的 C++ 应用程序使用 Winpcap 做各种事情(主要是现在学习)。 如何检查 Winpcap 是否已安装,如果未安装则在应用程序启动时抛出错误? 此外,任何人都可以阐明如何调用 Winpcap
我正在尝试从配置 UI 生成 WinPcap 过滤器。现在我有一个过滤器字符串,看起来像这样 ip && (((ip.src == 10.10.10.10 && (tcp.port == 10 ||
我想知道链接 Wincap 库并在我在代码块中开发的 C++ 项目中使用它的过程。 最佳答案 在自己努力做到这一点之后,我认为我应该在这里发布我的解决方案。 您需要下载 WinPCap 的开发者版本并
我在可视化 C++ 项目中使用 WinPcap 库。当我尝试编译项目时出现链接器错误,但我已正确配置项目属性以包含适当的文件和库。这是我得到的错误: Error LNK2019: unresolved
我今天去了 winpcap.org,下载了安装程序,并在我的 Windows 7 笔记本电脑上安装了 WinPcap。但是,安装它的文件夹仅包含一个安装日志、一个名为 rpcapd.exe 的可执行文
我正在尝试使用适用于 Windows 的 WinPcap 4.1.1 库,但我什至无法编译该库提供的示例源代码。 我遇到了这些错误: 'PCAP_OPENFLAG_PROMISCUOUS' undec
我想制作一个使用 winpcap 的 C 程序。但是,我首先需要使用安装程序将 winpcap 软件包安装到我的 PC 中,然后才能执行我的程序。如何让我的程序自动执行此操作(执行 winpcap 安
我正在尝试构建一个应用程序,将我的旧自定义以太网日志(bin 文件)转换为标准 winpcap 样式日志。 问题是我似乎找不到如何在不使用适配器(网卡)的情况下打开 pcap_t* 的示例。尚未创建
/* start the capture */ pcap_loop(adhandle, 0, packet_handler, NULL); 上面开始捕获,但我找不到停止捕获的方法,除了退出程序...
我正在“尝试”研究 Pcap 库。目前我使用的是 Windows 计算机,因此我下载了 Winpcap Dev pack。我想知道函数pcap_sendpacket的内容。我搜索了Winpcap De
据我所知,winPcap 允许您绕过操作系统并绕过 TCP 的应用程序和传输层处理,并提供对链路层的直接访问。 我打算使用 winpcap 来做一些用户应用程序的事情,而不仅仅是嗅探。我将使用 pca
有没有一种方法可以使用 WinPcap 读取数据包,如果该数据包要发送到某个域名,我可以使用自定义 HTML 页面阻止该数据包?比如,如果我想去我的空间并且我的程序看到了它,有没有办法让我返回 HTM
您好,我在从 WinPcap 驱动程序获取网卡地址信息时遇到了一些问题。我注意到,每当为特定 NIC 启用 IPv6 时,它的地址信息就会变为 0.0.0.0。我该如何解决这个问题? pcap_add
我正在尝试使用 WinPCap 获取和解析以太网标签(目标地址、源地址、类型/长度字段)。 我主要是从 WinPCap SDK 复制/粘贴。我正在尝试将 WinPCap 数据包数据(在 pkt_dat
我有一个循环来使用 pcap_next_ex 捕获数据包,并且在每次迭代中我都会根据处理数据包进行大量函数调用。这些东西可以通过循环中的 Sleep() 调用来模拟。然后我在 pcap_next_ex
我开始了一个需要使用网络级数据包的项目,例如 IP/ICMP/UDP/TCP 数据包。 有两种主要的处理方法:原始套接字和 Winpcap/libpcap。 我知道 pcap 在操作系统上安装了一个驱
我正在尝试使用 wine 将 Windows 可执行文件移植到 Linux。我现在可以运行可执行文件,但它返回一些错误,说它无法加载“npf”驱动程序。有没有办法在 Linux 上也移植 winpca
我是一名优秀的程序员,十分优秀!