我在PCAP文件中捕获了H264流,并尝试从数据创建媒体文件.容器并不重要(avi,mp4,mkv,...).
当我使用videosnarf或rtpbreak(结合在每个数据包之前添加00 00 00 01的python代码)然后ffmpeg时,仅当输入帧速率恒定(或接近常量)时结果才可以.但是,当输入为vfr时,结果播放得太快(并且在相同的罕见情况下太慢).
例如:
videosnarf -i captured.pcap -c
ffmpeg -i H264-media-1.264 output.avi
在对该问题进行一些调查后,我现在相信,由于videosnarf(和rtpbreak)正在从数据包中删除RTP标头,因此时间戳丢失,ffmpeg将输入数据称为cbr.
注意:所有工作都是离线完成的,输出没有限制.它可以是cbr/vbr,任何可播放的容器和转码.我唯一的"限制":它应该全部运行在Linux上...
谢谢你
一些额外的信息:
由于没有为FFMPEG提供时间戳数据,我决定尝试不同的方法:跳过videosnarf并使用Python代码将数据包直接传送到ffmpeg(使用"-f -i - "选项)但是然后它拒绝接受它,除非我提供SDP文件...
我如何提供SDP文件?它是一个额外的输入文件?("-i config.sdp")
以下代码尝试执行上述操作是不成功的:
import time
import sys
import shutil
import subprocess
import os
import dpkt
if len(sys.argv) < 2:
print "argument required!"
print "txpcap <pcap file>"
sys.exit(2)
pcap_full_path = sys.argv[1]
ffmp_cmd = ['ffmpeg','-loglevel','debug','-y','-i','109c.sdp','-f','rtp','-i','-','-na','-vcodec','copy','p.mp4']
ffmpeg_proc = subprocess.Popen(ffmp_cmd,stdout = subprocess.PIPE,stdin = subprocess.PIPE)
with open(pcap_full_path, "rb") as pcap_file:
pcapReader = dpkt.pcap.Reader(pcap_file)
for ts, data in pcapReader: …Run Code Online (Sandbox Code Playgroud) 我从其中一个答案中读到了文档:
ntohs函数采用TCP/IP网络字节顺序的16位数字(AF_INET或AF_INET6地址族),并以主机字节顺序返回一个16位数字.
请解释一个例子,如什么是网络字节顺序以及什么是主机字节顺序.
有没有简单的方法来创建一个PCAP文件的使用可能与特定日期时间范围内的数据包tshark,tcpdump或其他命令行工具?
tshark -R与frame.time似乎很有前途,但我一直没能上班了这一点尚未...
编辑
最后的命令:
editcap -F libpcap -A "2013-07-20 23:00:00" -B "2013-07-20 23:20:00" input.pcap output.pcap
Run Code Online (Sandbox Code Playgroud) 我有一些pcap文件,我想按协议过滤,即,如果我想通过HTTP协议过滤,除HTTP数据包之外的任何东西都将保留在pcap文件中.
有一个名为openDPI的工具,它非常适合我需要的工具,但没有python语言的包装器.
有谁知道任何可以做我需要的python模块?
谢谢
编辑1:
HTTP过滤只是一个例子,我想要过滤很多协议.
编辑2:
我试过Scapy,但我不知道如何正确过滤.过滤器只接受Berkeley Packet Filter表达式,即我无法应用msn,HTTP或上层的其他特定过滤器.谁能帮我?
想知道你们中的任何人都可以给我一些评论+见解.在性能方面,我应该使用哪一个,jNetPcap还是Jpcap?
谢谢!
我在我的linux系统上安装了pcap库,但是在包含它时我得到了错误
/usr/include/pcap/bpf.h:88:1: error: unknown type name ‘u_int’
/usr/include/pcap/bpf.h:108:2: error: unknown type name ‘u_int’
/usr/include/pcap/bpf.h:1260:2: error: unknown type name ‘u_short’
/usr/include/pcap/bpf.h:1261:2: error: unknown type name ‘u_char’
/usr/include/pcap/bpf.h:1262:2: error: unknown type name ‘u_char’
In file included from ../src/test.c:1:0:
/usr/include/pcap/pcap.h:125:2: error: unknown type name ‘u_short’
/usr/include/pcap/pcap.h:126:2: error: unknown type name ‘u_short’
/usr/include/pcap/pcap.h:171:2: error: unknown type name ‘u_int’
...
make: *** [src/test.o] Error 1
Run Code Online (Sandbox Code Playgroud)
包括我
#include <pcap/pcap.h>
#include <sys/types.h>
#include <pcap-bpf.h>
Run Code Online (Sandbox Code Playgroud)
在节目中,我错过了什么?
我正在尝试阅读本教程:http: //www.tcpdump.org/pcap.html
现在我使用以下命令安装pcap(代码提示和所有工作):
sudo apt-get install libpcap-dev
Run Code Online (Sandbox Code Playgroud)
到目前为止,我有以下代码(文件名是example_pcap.c):
#include <stdio.h>
#include <pcap.h>
int main(int argc, char *argv[]) {
char *dev, errbuf[PCAP_ERRBUF_SIZE];
dev = pcap_lookupdev(errbuf);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
根据我已经看到的许多问题,他们说使用这个编译它:
gcc -lpcap example_pcap.c -o example_pcap
Run Code Online (Sandbox Code Playgroud)
但是我仍然收到以下错误:
example_pcap.c:(.text+0x32): undefined reference to `pcap_lookupdev'
Run Code Online (Sandbox Code Playgroud) 我想知道如果我们有wireshark pcaps,wireshark是否有办法重建一个完整的TCP会话(HTML页面),wireshark可以重建吗?或者是否有可以进行重建的工具?从源传输的数据可以被压缩(Gzip)或未压缩,重建的最终结果应该是包含其所有内容的有效完整HTML页面.
我正在尝试编写.pcap文件,这可以在Wireshark中使用.为了做到这一点,我有几个结构,我需要写入文件的各种数据类型.(见代码)
所以,我创建结构实例,填写数据,使用FILE*fp = fopen("test.pcap","w"),然后我不确定如何正确地将它写入文件.我相信我应该使用memcpy,但我不确定最好的方法.我过去主要使用C++库来执行此操作.有什么建议?
typedef struct pcap_hdr_s {
uint32_t magic_number; /* magic number */
uint16_t version_major; /* major version number */
uint16_t version_minor; /* minor version number */
int32_t thiszone; /* GMT to local correction */
uint32_t sigfigs; /* accuracy of timestamps */
uint32_t snaplen; /* max length of captured packets, in octets */
uint32_t network; /* data link type */
} pcap_hdr_t;
typedef struct pcaprec_hdr_s {
uint32_t ts_sec; /* timestamp seconds */
uint32_t ts_usec; /* timestamp microseconds */
uint32_t …Run Code Online (Sandbox Code Playgroud) 我想知道是否有任何工具可以解析pcap数据并将其转换为具有以下信息的csv文件:
时间戳,字节,上行链路/下行链路,一些额外信息..
基本上,IP/MAC地址可以看到上行链路/下行链路,并且实际上并不需要额外信息,但我的意思是选择数据包的特定字段.
我一直在尝试一些工具,但我还没找到合适的工具.否则我会写一个小解析器.提前致谢!