问题标签 [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.

0 投票
1 回答
457 浏览

wireshark - 使用命令行从过滤器中获取数据包字节

我在搜索特定过滤器后寻找命令,例如:tcp.port==80输出将以字节为单位的数据包。

直到现在我都在使用这个命令:tshark.exe -Y tcp.port==80 -n -r file.pcap 输出只是数据包的详细信息:

0 投票
2 回答
240 浏览

tcp - 如何编写http层嗅探器

我想写一个应用层嗅探器(SMTP/ftp/http)。

根据我的搜索,第一步(也许是最难的!)步骤是重新组装嗅探连接的 tcp 流。

事实上,我需要的是类似wireshark的“follow TCP stream”选项,但我需要一个在实时界面上自动执行的工具。据我所知,Tshark 可以自动从保存的 pcap 文件(链接)中提取 TCP 流数据,但不能从实时接口中提取。Tshark 可以在实时界面上做到吗???

据我所知,TCPflow 可以做我想做的事,但是,它不能处理 IP 碎片整理和 SSL 连接(我想在我有服务器私钥的情况下分析 SSL 内容)。

最后,我也尝试了兄弟网络监视器。尽管它提供了 TCP 连接列表 (conn.log),但我无法获取 TCP 连接内容。

欢迎对上述工具或任何其他有用工具提出任何建议。

在此先感谢,丹。

0 投票
1 回答
2212 浏览

sip - 从命令行检测 VoIP 呼叫 - Wireshark

我正在使用 Wireshark 嗅探网络并检测 VoIP 呼叫。检测到的 VoIP 呼叫可以从 GUI(电话->VoIP 呼叫)中看到。

现在我想从命令行获取这个列表。我搜索了wireshark文档,但找不到执行此操作的命令。

我正在使用类似的命令

来自本主题: 使用 tshark 过滤 VoIP 呼叫

是否有命令从命令行显示 voip 呼叫列表,还是我必须解析输出并创建自己的列表?您是否建议使用其他任何工具来做到这一点?

任何帮助将不胜感激。

0 投票
0 回答
489 浏览

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

0 投票
2 回答
1232 浏览

lua - 运行 lua dissector 并同时敲入 tshark

我有一个自定义解析器(用 Lua 编写),我在当前项目的许多方面都在使用它。

我还想写一个水龙头来为特定任务执行一些特定的计算。出于模块化的目的,我想将其与通用解析器分开。

有没有办法从 tshark 命令行调用一个用 Lua 编写的解剖器和一个水龙头?更一般地说,是否可以调用任意数量的 Lua 脚本,如果可以,它们会以正确的顺序被调用吗?

编辑: 我尝试从命令行调用这两个脚本:

但我收到一个错误:

此行引用的字段名称是在 中创建的,但在加载my_diss.lua时显然不可见。my_tap.lua

0 投票
2 回答
9115 浏览

ffmpeg - 如何从 Wireshark Capture 中提取 RTP 数据包特定字段?

我有一个 PCAPNG 文件,我需要从中获取 RTP 数据包。具体来说,我的一个 RTP 数据包看起来像......

帧 N:线上 X 字节...

  • 以太网 II,源:...
  • IPv4,源:...
  • TCP,源端口:rstp ...
  • RTSP 交错帧,通道:0x02,163 字节
  • 实时传输协议

...而我从每个数据包中需要的是...

  1. 来自 RTSP 交错帧的通道
  2. RTSP 交错帧的长度
  3. 来自 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 运行数据而无需修改它)。关于如何创建所需格式的任何想法?

0 投票
1 回答
34485 浏览

networking - 按域过滤

我想按他们的域过滤我的 pcap 文件。我的意思是,我希望看到数据包来自以“.com”、“.org”或“.net”结尾的网站。

我试过:dns 包含“com”,ip.src_host == com,ip.src_host == com,http 包含“com”。他们都没有正常工作。

0 投票
1 回答
338 浏览

networking - Snort 分析 - 规则比较

我想问一个关于snort的问题。

我有不同的 snort 规则,一些属于 v2.9.1(大约 3 年前),一些属于 v2.9.5.6。

我还有一个数据集,其中也包含一些恶意流量。

现在,当我使用规则 v2.9.1 运行 snort 时,它会为我的数据集的 %17 发出警报。另一方面,使用规则 2.9.5.6,它只对我数据集的 0.02% 发出警报。这是什么原因?我期待得到更好的结果,但它几乎无法检测到恶意数据包。

有人对此有想法吗?

提前致谢。

真挚地。

埃雷

0 投票
1 回答
2091 浏览

python - Python子进程输出读取错误

我有一个在终端上运行良好的命令:

我试图从我的 python 脚本中读取输出:

这没用。也许在列表中编写命令有些麻烦。

我收到错误:

0 投票
1 回答
4111 浏览

tcpdump - 转储工具之间的性能和效率比较:tcpdump、tshark、dumpcap

我正在通过网络适配器捕获 tcp/udp 数据包并尝试分析数据包以获得一些统计指标,例如带宽速率或协议效率。无论如何,我需要使用一些 CLI 工具监控特定链接(src、dst、端口,可能是整体流量)上的网络流量。

我想要的捕获工具可以是:

  • 长时间运行监控大文件传输;

  • 同时运行多个实例来监控不同的链路;(不想复杂的过滤规则);

  • 可以在磁盘上写入数据,而且我不希望io操作对捕获和其他进程造成太大影响,所以二进制文件是可以的,只要它可以被tshark转储即可。

现在我知道 tshark、tcpdump(当前使用它)和 dumpcap,但我不知道这些工具之间的性能差异。有人可以帮忙吗?