WinPcap 创建空的 .pcap 文件
WinPcap creating empty .pcap file
你知道如何用winpcap dll创建空文件pcap吗?我在程序内存中缓冲过滤后的数据包,并希望在用户单击导出到 .pcap 文件时保存。
但是当使用 pcap_open_offline(const char *fname, char *errbuf) 只有文件存在时才能打开文件。我之前尝试过 fopen 和其他函数来创建文件(也在二进制模式下)但没有成功。
那么如何通过这种方式获得pcap_t pcap_dump_open(pcap_t *p, const char *fname) 的句柄指针?
更新:
我尝试使用此代码
fileHandle = pcap_open_offline(pcap_file_path.c_str(), errbuf);
if (errbuf == nullptr) {
fprintf(stderr, "\nUnable to open the file %s.\n", pcap_file_path.c_str());
return 1;
}
if (fileHandle == nullptr) {
fprintf(stderr, "\nError to open file\n");//HERE IT FAILS
return 1;
}
dumpfile = pcap_dump_open(fileHandle, pcap_file_path.c_str());
if (dumpfile == NULL)
{
fprintf(stderr, "\nError opening output file\n");
return 1;
}
解决方案:(Creating a pcap file)
/*create fake handle*/
fileHandle = pcap_open_dead(DLT_EN10MB, 65535);
if (fileHandle == nullptr) {
fprintf(stderr, "\nError to open file\n");
return 1;
}
/* Open the dump file */
dumpfile = pcap_dump_open(fileHandle, file_path.c_str());
if (dumpfile == NULL)
{
fprintf(stderr, "\nError opening output file\n");
return 1;
}
Do you know how to create empty file pcap with winpcap dll? I buffer filtered packets in program memory and want to save when user click to export to .pcap file.
...
So how to get pcap_t handle pointer for pcap_dump_open(pcap_t *p, const char *fname) this way?
pcap_dump_open()
returns一个pcap_dumper_t *
写文件时使用的句柄; pcap_t *
用于 捕获 或 读取 ,而不是 写入 .
如果你想写一个pcap文件,你需要做的是使用pcap_dump_open()
。如果您有一个 pcap_t *
从中读取或捕获已过滤的数据包,则应在调用 pcap_dump_open()
.
时使用该 pcap_t *
你知道如何用winpcap dll创建空文件pcap吗?我在程序内存中缓冲过滤后的数据包,并希望在用户单击导出到 .pcap 文件时保存。
但是当使用 pcap_open_offline(const char *fname, char *errbuf) 只有文件存在时才能打开文件。我之前尝试过 fopen 和其他函数来创建文件(也在二进制模式下)但没有成功。
那么如何通过这种方式获得pcap_t pcap_dump_open(pcap_t *p, const char *fname) 的句柄指针?
更新: 我尝试使用此代码
fileHandle = pcap_open_offline(pcap_file_path.c_str(), errbuf);
if (errbuf == nullptr) {
fprintf(stderr, "\nUnable to open the file %s.\n", pcap_file_path.c_str());
return 1;
}
if (fileHandle == nullptr) {
fprintf(stderr, "\nError to open file\n");//HERE IT FAILS
return 1;
}
dumpfile = pcap_dump_open(fileHandle, pcap_file_path.c_str());
if (dumpfile == NULL)
{
fprintf(stderr, "\nError opening output file\n");
return 1;
}
解决方案:(Creating a pcap file)
/*create fake handle*/
fileHandle = pcap_open_dead(DLT_EN10MB, 65535);
if (fileHandle == nullptr) {
fprintf(stderr, "\nError to open file\n");
return 1;
}
/* Open the dump file */
dumpfile = pcap_dump_open(fileHandle, file_path.c_str());
if (dumpfile == NULL)
{
fprintf(stderr, "\nError opening output file\n");
return 1;
}
Do you know how to create empty file pcap with winpcap dll? I buffer filtered packets in program memory and want to save when user click to export to .pcap file.
...
So how to get pcap_t handle pointer for pcap_dump_open(pcap_t *p, const char *fname) this way?
pcap_dump_open()
returns一个pcap_dumper_t *
写文件时使用的句柄; pcap_t *
用于 捕获 或 读取 ,而不是 写入 .
如果你想写一个pcap文件,你需要做的是使用pcap_dump_open()
。如果您有一个 pcap_t *
从中读取或捕获已过滤的数据包,则应在调用 pcap_dump_open()
.
pcap_t *