问题标签 [tshark]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
wireshark - 使用命令行从过滤器中获取数据包字节
我在搜索特定过滤器后寻找命令,例如:tcp.port==80
输出将以字节为单位的数据包。
直到现在我都在使用这个命令:tshark.exe -Y tcp.port==80 -n -r file.pcap
输出只是数据包的详细信息:
tcp - 如何编写http层嗅探器
我想写一个应用层嗅探器(SMTP/ftp/http)。
根据我的搜索,第一步(也许是最难的!)步骤是重新组装嗅探连接的 tcp 流。
事实上,我需要的是类似wireshark的“follow TCP stream”选项,但我需要一个在实时界面上自动执行的工具。据我所知,Tshark 可以自动从保存的 pcap 文件(链接)中提取 TCP 流数据,但不能从实时接口中提取。Tshark 可以在实时界面上做到吗???
据我所知,TCPflow 可以做我想做的事,但是,它不能处理 IP 碎片整理和 SSL 连接(我想在我有服务器私钥的情况下分析 SSL 内容)。
最后,我也尝试了兄弟网络监视器。尽管它提供了 TCP 连接列表 (conn.log),但我无法获取 TCP 连接内容。
欢迎对上述工具或任何其他有用工具提出任何建议。
在此先感谢,丹。
sip - 从命令行检测 VoIP 呼叫 - Wireshark
我正在使用 Wireshark 嗅探网络并检测 VoIP 呼叫。检测到的 VoIP 呼叫可以从 GUI(电话->VoIP 呼叫)中看到。
现在我想从命令行获取这个列表。我搜索了wireshark文档,但找不到执行此操作的命令。
我正在使用类似的命令
来自本主题: 使用 tshark 过滤 VoIP 呼叫
是否有命令从命令行显示 voip 呼叫列表,还是我必须解析输出并创建自己的列表?您是否建议使用其他任何工具来做到这一点?
任何帮助将不胜感激。
c - 管道 tshark 输出时,从命名管道读取冻结
我正在尝试实现一个网络预取系统。像这样的系统的目的是“预测”未来的请求并预取它们。
系统根据网络导航日志(Squid access.log 文件)构建预测模型。该模型是一个依赖图,如果在 URL A 之后立即请求了 URL B,则表示 URL A 的节点具有到表示 URL B 的节点的弧。
模型建立后,系统会接收用户请求的 URL 查询,并根据图进行“预测”。预测是将来很可能被请求的资源 (URL)。因此,根据预测,系统会在用户请求之前预取这些资源以将它们存储在缓存中。
我正在使用以下测试场景:
- 一个进程模拟多个客户端,使用 libcurl 请求文件中的 URL。该过程在与预取系统不同的 PC 中运行。PC 通过以太网电缆直接连接
- 从第一个请求开始,客户端模拟器发出的请求始终是相同相对时间的相同 URL。所有请求都将发送到端口 3128(Prefetch PC Squid 侦听端口)(端口 80 DNAT 到客户端中的端口 3128)。
- 预取系统运行在 CentOS 6.3 机器上,内核 2.6.32-71.el6.i686,2 核 Intel Pentium 4 3.00GHz 处理器,4 GB RAM。
- 预取系统是一个具有多个线程的进程。主线程创建预测模型并根据查询生成预测。“侦听器”线程读取用户请求的 URL,并使用 libcurl 预取预测的 URL。“监听”意味着从使用 tshark 的接口上实时捕获的命名管道(称为 url_fifo)读取 URL:
stdbuf -o0 tshark -i eth1 tcp port 3128 and "tcp[((tcp[12:1] & 0xf0) >> 2):4] = 0x47455420" -T fields -e http.request.full_uri >> url_fifo
- 每 10 分钟(1 个周期),模型会根据上一个周期的请求进行更新。当一个周期结束时,客户端会告诉系统模型会被更新。模型更新后,系统会告诉客户端从下一个周期开始请求 URL。
情况如下:有时从命名管道中读取会冻结。即使 tshark 不断捕获 URL 并将它们重定向到命名管道,也不会从管道中读取任何 URL。一个小时(或几个小时)后,所有“缓冲”的 URL 将在 10 分钟内被读取。之后,从管道中读取数据再次正常。这种情况并不总是发生(50% 的时间冻结,50% 没有)。
似乎存在缓冲问题,因为 tshark 不断捕获 URL,并且所有请求都正确记录在 Squid 的 access.log 中。
一开始,我使用选项运行 tshark -l
,使其输出变为行缓冲。然后我开始使用stdbuf -o0
(无缓冲)。无论如何,情况仍然发生。
在系统代码中,我还尝试将命名管道作为流(FILE *
)打开和读取,并将流设置为无缓冲或行缓冲(使用setvbuf()
函数)。情况还是发生了。
在某些周期中,请求比在其他周期中更快。无论如何,这似乎不是一个快速生产者慢消费者问题,因为在多次重复测试中,所有 URL 都被正确读取和处理,没有任何冻结。
我是否缺少与命名管道和缓冲相关的内容?我真的很感激一些指导。
假设网络(接口、路由、iptables、squid)没问题。我没有任何与之相关的问题。
代码(假设包含必要的头文件):
functions.c
获取.c
网络.c
lua - 运行 lua dissector 并同时敲入 tshark
我有一个自定义解析器(用 Lua 编写),我在当前项目的许多方面都在使用它。
我还想写一个水龙头来为特定任务执行一些特定的计算。出于模块化的目的,我想将其与通用解析器分开。
有没有办法从 tshark 命令行调用一个用 Lua 编写的解剖器和一个水龙头?更一般地说,是否可以调用任意数量的 Lua 脚本,如果可以,它们会以正确的顺序被调用吗?
编辑: 我尝试从命令行调用这两个脚本:
但我收到一个错误:
此行引用的字段名称是在 中创建的,但在加载my_diss.lua
时显然不可见。my_tap.lua
ffmpeg - 如何从 Wireshark Capture 中提取 RTP 数据包特定字段?
我有一个 PCAPNG 文件,我需要从中获取 RTP 数据包。具体来说,我的一个 RTP 数据包看起来像......
帧 N:线上 X 字节...
- 以太网 II,源:...
- IPv4,源:...
- TCP,源端口:rstp ...
- RTSP 交错帧,通道:0x02,163 字节
- 实时传输协议
...而我从每个数据包中需要的是...
- 来自 RTSP 交错帧的通道
- RTSP 交错帧的长度
- 来自 RTP 的有效负载
...使用这些数据,我将重新创建一个音频和视频文件,以从本地有效负载重新构建完整的视频(播放不是流式传输)。
我可以使用任何一种方法成功获取 RTP 数据包...
tshark -r my.pcap -R -T fields -e rtp.payload -w rtp.out
或者...
tshark -r my.pcap -R -T fields -e rtp.payload > rtp.out
...但我遇到的问题是第一种方法将保存我需要的所有内容,但由于某种原因,它会在奇怪的地方添加额外的数据(即不仅仅是 RTP 有效负载和 RTSP 交错帧内容)......阻止我编写程序来生成我需要测试的数据。我尝试使用几个正则表达式删除所有额外的数据,但是有太多不同的场景与其他有效场景重叠。
第二种方法将仅提供 RTP 有效负载,而没有我需要的交错属性(它将生成每个字节之间带有冒号的十六进制,但这很容易处理)。即使我可以再次调用以获取所有 RTSP 交错帧属性,我也需要通过使用分隔符/定界符识别每个数据包来组合 2 个输出,我想避免这种情况(我无法获得 tshark要么这样做......)。
我查看了 tshark 读取过滤器,它似乎应该能够做我需要的,但到目前为止我还没有弄清楚。请注意,我这样做只是为了创建示例数据并编写格式化播放所需数据的逻辑。最终,我的一位同事将修改流式客户端以以适当的格式捕获数据(因此我可以简单地通过 ffmpeg 运行数据而无需修改它)。关于如何创建所需格式的任何想法?
networking - 按域过滤
我想按他们的域过滤我的 pcap 文件。我的意思是,我希望看到数据包来自以“.com”、“.org”或“.net”结尾的网站。
我试过:dns 包含“com”,ip.src_host == com,ip.src_host == com,http 包含“com”。他们都没有正常工作。
networking - Snort 分析 - 规则比较
我想问一个关于snort的问题。
我有不同的 snort 规则,一些属于 v2.9.1(大约 3 年前),一些属于 v2.9.5.6。
我还有一个数据集,其中也包含一些恶意流量。
现在,当我使用规则 v2.9.1 运行 snort 时,它会为我的数据集的 %17 发出警报。另一方面,使用规则 2.9.5.6,它只对我数据集的 0.02% 发出警报。这是什么原因?我期待得到更好的结果,但它几乎无法检测到恶意数据包。
有人对此有想法吗?
提前致谢。
真挚地。
埃雷
python - Python子进程输出读取错误
我有一个在终端上运行良好的命令:
我试图从我的 python 脚本中读取输出:
这没用。也许在列表中编写命令有些麻烦。
我收到错误:
tcpdump - 转储工具之间的性能和效率比较:tcpdump、tshark、dumpcap
我正在通过网络适配器捕获 tcp/udp 数据包并尝试分析数据包以获得一些统计指标,例如带宽速率或协议效率。无论如何,我需要使用一些 CLI 工具监控特定链接(src、dst、端口,可能是整体流量)上的网络流量。
我想要的捕获工具可以是:
长时间运行监控大文件传输;
同时运行多个实例来监控不同的链路;(不想复杂的过滤规则);
可以在磁盘上写入数据,而且我不希望io操作对捕获和其他进程造成太大影响,所以二进制文件是可以的,只要它可以被tshark转储即可。
现在我知道 tshark、tcpdump(当前使用它)和 dumpcap,但我不知道这些工具之间的性能差异。有人可以帮忙吗?