Wireshark 是否支持不需要每个数据包中包含 TCP/UDP/以太网标头的格式?
任何其他(非 pcap)格式的wireshark支持将不胜感激。我需要将无标头数据放入wireshark中以进行进一步检查。
我有一个在 Mac 上创建的 PCAP 文件,mergecap可以使用 Apple 的 libpcap 在 Mac 上解析该文件,但无法在 Linux 系统上解析。组合文件有一个额外的 16 字节标头,其中包含pcap 文件中常见的介绍0a 0d 0d 0a 78 00 00 00。4d 3c 2b 1a这是一个十六进制转储:
0000000: 0a0d 0d0a 7800 0000 4d3c 2b1a 0100 0000 ....x...M<+.....
0000010: ffff ffff ffff ffff 0100 4700 4669 6c65 ..........G.File
0000020: 2063 7265 6174 6564 2062 7920 6d65 7267 created by merg
0000030: 696e 673a 200a 4669 6c65 313a 2037 2e70 ing: .File1: 7.p
0000040: 6361 7020 0a46 …Run Code Online (Sandbox Code Playgroud) 我已将 Cisco 路由器配置为转储 pcap 文件以获取特定接口上的流量,我尝试使用 dpkt 和 Python (2.7) 解析该接口。基本代码是:
f = open('pktrace1.pcap','rb')
pcap = dpkt.pcap.Reader(f)
for ts,buf in pcap:
eth = dpkt.ethernet.Ethernet(buf)
ip = eth.data
tcp = ip.data
f.close()
Run Code Online (Sandbox Code Playgroud)
现在不幸的是,无论出于何种原因,来自路由器的 pcap 转储都将第 2 层信息留空,并且该帧以原始 IP 格式封装。上面的代码在第 7 行失败,并出现以下 AttributeError: 'str' object has no attribute 'data'
我想这是有道理的,因为它期望解析不存在的第 2 层以太网信息。
我对 Python 比较陌生,dpkt 文档对我没有太大帮助。有谁知道我如何让 dpkt 处理这些缺少以太网信息的数据包?或者也许如何让路由器(Cisco 2911,IOS 15.0)将它们与以太网信息原封不动地导出?
我觉得必须有一种简单的方法让 dpkt 处理这些转储,因为 Wireshark 可以完美地读取它们。任何帮助深表感谢!:)
我实际上是想用python嗅探数据包(使用pypcap和dpkt).
我尝试了以下方法:
import dpkt, pcap
pc = pcap.pcap() # construct pcap object
pc.setfilter('src host X.X.X.X or dst host X.X.X.X')
for timestamp, packet in pc:
print dpkt.ethernet.Ethernet(packet)
Run Code Online (Sandbox Code Playgroud)
但是当我启动脚本时没有任何反应......我错过了什么吗?
在OS X Yosemite上使用Python 2.7(10.10)
我的问题与 DIX(以太网 II)和以太网有关:链路层有什么区别(如果有)?我在标准列表中没有看到链接层,但是在进行 pcap 捕获时,我看到wireshark 会以不同的方式构建它们(我不打算发布 pcap,但我确定发布了标准)。来源:http : //www.tcpdump.org/linktypes.html
我有一个很大的 pcap 文件,我想生成一个仅包含前十分钟流量的新 pcap。我可以这样做tcpdump吗?我在editcap网上看到提到过,但tcpdump如果可能,我想使用。
我一直在尝试 Scapy,但文档太稀疏,我无法让它很好地进行简单编辑。
本质上,我正在Python中寻找一个简单的解决方案,从.pcap中获取每个数据包,读取/修改一些数据/删除数据包并将其另存为.pcap。
例如:
给定一个 sACN 数据包,我需要读取/修改优先级八位字节(108)和全域八位字节(113-114)并再次保存。
谢谢!
是否可以在已使用的端口上侦听(而不是创建新连接)TCP 数据包,即将数据从路由器发送到服务器。
我知道以下内容启动了上述端口上的侦听过程,并将其保存在文件中pcap:
服务器端:nc -l -p <port> > file_name.pcap
客户端:sudo tcpdump -s 0 -U -n -i eth0 not host <server_ip> -w file_name.pcap | nc <server_ip> <port>
但这会在给定端口上创建一个新连接并捕获与其相关的数据包。我想捕获已用于发送数据包的端口上的数据包。
我有一个问题,我想解码 pcap 记录的 MAC 地址并将其表示为UInt8数组中的4c:76:25:e9:78:42 。
该数组看起来像这样,它是 pcap 记录的一部分。
UInt8[0x4c, 0x76, 0x25, 0xe9, 0x78, 0x42, 0xe0, 0x0e, 0xda, 0x58 … 0x3c, 0xb6, 0x47, 0x00, 0x00, 0x00, 0xe6, 0x5a, 0xa0, 0x29]
Run Code Online (Sandbox Code Playgroud)
其他人为 Julia 0.6.4 创建的逻辑不再适用于 Julia 1.0
这是项目中的一些代码。
数据
julia> cap = PcapOffline("C:/users/XXX/desktop/31072018_1800_2000_IMSI_XXXXXXXXXXXXXXX.pcap")
PcapOffline("C:/users/XXX/desktop/31072018_1800_2000_IMSI_XXXXXXXXXXXXXXX.pcap", IOStream(<file C:/users/rsteel7/desktop/31072018_1800_2000_IMSI_XXXXXXXXXXXXXXX.pcap>), PcapFileHeader(0xa1b23c4d, 0x0002, 0x0004, 0, 0x00000000, 0x00000800, 0x00000001), PcapRec(0x00000000, 0x00000000, 0x00000000, 0x00000000, UInt8[]), true)
julia> rec = pcap_get_record(cap)
PcapRec(0x5b60a3a1, 0x1acb91ba, 0x00000082, 0x00000082, UInt8[0x4c, 0x76, 0x25, 0xe9, 0x78, 0x42, 0xe0, 0x0e, 0xda, 0x58 … 0x00, …Run Code Online (Sandbox Code Playgroud) 我想捕获从我的机器出来的数据包,我正在使用libpcap(版本1.0.0-1).问题是,像这样的基本程序 -
#include <stdio.h>
#include <pcap.h>
int main(int argc, char *argv[]) {
char *dev, errbuf[PCAP_ERRBUF_SIZE];
dev = pcap_lookupdev(errbuf);
if (dev == NULL) {
fprintf(stderr, "%s\n", errbuf);
return (2);
}
printf("Device : %s\n", dev);
return (0);
}
Run Code Online (Sandbox Code Playgroud)
似乎没有显示无线接口.每次我编译并运行程序时,它都会检测到eth0.我怎样才能捕获无线接口呢?