当我使用tshark来解码这样的capfile时
tshark -V -r test.cap -Y 'http>0'
Run Code Online (Sandbox Code Playgroud)
我有
...
JavaScript Object Notation: application/json
Object
Member Key: "ret"
Number value: 99
Member Key: "message"
String value:test
Run Code Online (Sandbox Code Playgroud)
问题是如何使用tshark获取json数据
...
{"ret":99,"message":"test"}
Run Code Online (Sandbox Code Playgroud) 对于几年前的计算机科学信息战类,我编写了一个python脚本,运行libpcap混杂数据包捕获文件来解析Facebook聊天流量(以明文形式传递的earlang元组),并认为一个有趣的项目是移植程序到Android.
我想用Java重写它,但无法直接在手机上找到有关数据包捕获的任何信息.
是否有自动方式(在tcpdump或通过帮助应用程序Out There)生成一个pcap文件,其中只包含以太网,IP和第4层(在我的情况下为TCP)标头,因此没有有效载荷/应用程序数据结果pcap?我发现由于标题大小经常变化,因此不可能选择不会捕获任何有效负载数据的捕获大小.
我想在一周内在Android中获取数据包级数据流量捕获(.pcap)(如果可能的话,在几个文件中).
我以为我可以通过Shark使用tcpdump,但是我发现捕获在一段时间后停止了.我获得的最大数据包捕获量约为40MB.我发现更改网络接口时tcpdump会停止/崩溃.例如,当手机连接到3G时,当我从Shark运行tcpdump时,我可以看到tcpdump运行的过程,直到我打开WiFi.
在Galaxy S2中,当通过WiFi连接时,我有以下接口(通过在adb shell中使用netcfg获得):lo,svnet0,usb0,sit0,eth0.当我通过3G连接时,我得到pdp0而不是eth0.
有什么方法可以运行tcpdump 24/7吗?或者以任何方式检查它何时运行以及是否停止使其从Java应用程序再次运行?检查tcpdump的过程或类似的事情可能吗?或者每次更改网络时监控网络状态并运行tcpdump?
我看一下:在TCPDump-Buffer上的ReadLine有时会阻塞直到kill tcpdump,但它并没有完全解决我的问题.
我正在使用root设备.
问题描述:
我想只打印来自tcpdump [1]的源和目标地址.
有一个有效的解决方案,但相信它可以得到很大改善.一个捕获5个数据包的示例,就像我正在寻找的一个例子:
tcpdump -i eth1 -n -c 5 ip | \
cut -d" " -f3,5 | \
sed -e 's/^\([0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\)\..* \([0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\).*$/\1 > \2/'
Run Code Online (Sandbox Code Playgroud)
题:
这可以用任何更简单的方式完成吗?性能也是一个问题.
[1]测试的一部分,如果正确定义了snort home_net,或者我们是否看到home_net中未定义的流量.
解:
好的,感谢所有回复此问题的人.有两个与答案有关的问题,一个是不同linux版本之间的兼容性,第二个是速度.
这是我做的速度测试的结果.首先是grep版本:
time tcpdump -l -r test.dmp -n ip 2>/dev/null | grep -P -o '([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+).*? > ([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+)' | grep -P -o '[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+' | xargs -n 2 echo >/dev/null
real 0m5.625s
user 0m0.513s
sys 0m4.305s
Run Code Online (Sandbox Code Playgroud)
那么sed版本:
time tcpdump -n -r test.dmp ip | sed -une 's/^.* \(\([0-9]\{1,3\}\.\?\)\{4\}\)\..* \(\([0-9]\{1,3\}\.\?\)\{4\}\)\..*$/\1 > \3/p' >/dev/null …Run Code Online (Sandbox Code Playgroud) 有办法吗?
tcpdump -i lo -A
Run Code Online (Sandbox Code Playgroud)
并打印所有网址,任何连接?
我已经做好了:
sudo tcpdump -i lo -A | grep Host:
Run Code Online (Sandbox Code Playgroud)
这很棒.但我想知道是否有选项可以在tcpdump中做同样的事情
最后,有没有办法在python中执行此操作而不使用sys命令或Popen/subprocess
我有一个巨大的pcap文件(100GB),我对少量的数据包感兴趣,我知道数字是5,000,000到5,000,020.
如何使用tcpdump读取pcap文件,按数据包编号(或范围)过滤掉数据包,然后将其写入新的pcap文件?
我正试图用它来诊断网络问题tcpdump.我运行命令
tcpdump -i eth0 -nS host nameless.host.io
Run Code Online (Sandbox Code Playgroud)
当我发出命令traceroute或ping命令时,nameless.host.io我会看到信息,tcpdump但是当我用来curl从主机检索内容时
curl http://nameless.host.io/mycontent/data
Run Code Online (Sandbox Code Playgroud)
该curl命令返回我期望的内容,但我看不到输出tcpdump.主机肯定是"外部的"所以它应该在线上.
为什么tcpdump对成功的curl命令保持沉默?
我正在尝试向流添加过滤器tcpdump。
我试图运行的表达式是:
tcpdump -i eth0 -U -w - host 192.168.2.29 and (port 22222 or port 22221 or port 80)
Run Code Online (Sandbox Code Playgroud)
这种特殊的格式会抛出:
bash: syntax error near unexpected token '('
Run Code Online (Sandbox Code Playgroud)
我预计这会基于THIS起作用。
以下工作不会引发错误:
a) tcpdump -i eth0 -U -w - host 192.168.2.29
b) tcpdump -i eth0 -U -w - port 22222
Run Code Online (Sandbox Code Playgroud)
我已经尝试了关联的每种排列都抛出相同的错误。
我正在开发一个高性能 TCP 服务器,当我使用 TCP 客户端泵送高流量时,我发现服务器的处理速度不够快。经过仔细检查,我发现 TCP 服务器上的“增量时间”出现峰值。而且,我看到服务器发送了一个 ACK,0.8 秒后又发送了相同 seqno 的 PSH、ACK。我在 pcap 中多次看到这种模式。专家能否评论一下为什么服务器发送 ACK 后跟 PSH,ACK,中间有延迟?