标签: pcap

如何将H264 RTP流从PCAP转换为可播放的视频文件

我在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.

  1. 我想知道是否有传递的方式(在一个单独的文件?)时间戳载体或任何其他信息的ffmpeg所以结果会正确创建?
  2. 有没有其他方法可以将数据从PCAP文件中取出并播放或转换然后播放?
  3. 由于所有工作都是用Python完成的,因此欢迎任何有助于工作的库/模块建议(即使需要一些编码).

注意:所有工作都是离线完成的,输出没有限制.它可以是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)

python ffmpeg pcap h.264

13
推荐指数
1
解决办法
7615
查看次数

pcap中的ntohs()究竟做了什么?

我从其中一个答案中读到了文档:

ntohs函数采用TCP/IP网络字节顺序的16位数字(AF_INET或AF_INET6地址族),并以主机字节顺序返回一个16位数字.

请解释一个例子,如什么是网络字节顺序以及什么是主机字节顺序.

endianness pcap

12
推荐指数
1
解决办法
1万
查看次数

过滤特定时间范围的pcap转储文件

有没有简单的方法来创建一个PCAP文件的使用可能与特定日期时间范围内的数据包tshark,tcpdump或其他命令行工具?

tshark -Rframe.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)

tcpdump pcap tshark editcap

12
推荐指数
1
解决办法
2万
查看次数

如何使用python通过特定协议过滤pcap文件?

我有一些pcap文件,我想按协议过滤,即,如果我想通过HTTP协议过滤,除HTTP数据包之外的任何东西都将保留在pcap文件中.

有一个名为openDPI的工具,它非常适合我需要的工具,但没有python语言的包装器.

有谁知道任何可以做我需要的python模块?

谢谢

编辑1:

HTTP过滤只是一个例子,我想要过滤很多协议.

编辑2:

我试过Scapy,但我不知道如何正确过滤.过滤器只接受Berkeley Packet Filter表达式,即我无法应用msn,HTTP或上层的其他特定过滤器.谁能帮我?

python filter scapy pcap

11
推荐指数
4
解决办法
4万
查看次数

jNetPcap vs Jpcap

想知道你们中的任何人都可以给我一些评论+见解.在性能方面,我应该使用哪一个,jNetPcap还是Jpcap?

谢谢!

java winpcap pcap libpcap

11
推荐指数
2
解决办法
2万
查看次数

C PCAP库未知类型错误

我在我的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)

在节目中,我错过了什么?

pcap

11
推荐指数
2
解决办法
8501
查看次数

Pcap函数有"未定义的引用"

我正在尝试阅读本教程: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)

c linux pcap undefined-reference libpcap

11
推荐指数
1
解决办法
1万
查看次数

从WireShark pcaps完成TCP会话(HTML页面)的重建,这是什么工具?

我想知道如果我们有wireshark pcaps,wireshark是否有办法重建一个完整的TCP会话(HTML页面),wireshark可以重建吗?或者是否有可以进行重建的工具?从源传输的数据可以被压缩(Gzip)或未压缩,重建的最终结果应该是包含其所有内容的有效完整HTML页面.

html pcap wireshark

10
推荐指数
1
解决办法
3万
查看次数

C - 将结构写入文件(.pcap)

我正在尝试编写.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)

c io fopen struct pcap

10
推荐指数
2
解决办法
1万
查看次数

将pcap数据导出到csv:时间戳,字节,上行链路/下行链路,额外信息

我想知道是否有任何工具可以解析pcap数据并将其转换为具有以下信息的csv文件:

时间戳,字节,上行链路/下行链路,一些额外信息..

基本上,IP/MAC地址可以看到上行链路/下行链路,并且实际上并不需要额外信息,但我的意思是选择数据包的特定字段.

我一直在尝试一些工具,但我还没找到合适的工具.否则我会写一个小解析器.提前致谢!

csv pcap wireshark

10
推荐指数
3
解决办法
3万
查看次数

标签 统计

pcap ×10

c ×2

libpcap ×2

python ×2

wireshark ×2

csv ×1

editcap ×1

endianness ×1

ffmpeg ×1

filter ×1

fopen ×1

h.264 ×1

html ×1

io ×1

java ×1

linux ×1

scapy ×1

struct ×1

tcpdump ×1

tshark ×1

undefined-reference ×1

winpcap ×1