首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Tshark查看json数据

使用Tshark查看json数据
EN

Stack Overflow用户
提问于 2014-03-10 16:29:51
回答 3查看 10.1K关注 0票数 9

当我使用tshark解码capfile时,如下所示

代码语言:javascript
复制
 tshark -V -r test.cap  -Y 'http>0'

我得到了

代码语言:javascript
复制
...
JavaScript Object Notation: application/json
    Object
        Member Key: "ret"
            Number value: 99
        Member Key: "message"
            String value:test

问题是我如何使用tshark获得像这样json数据

代码语言:javascript
复制
...
{"ret":99,"message":"test"}
EN

回答 3

Stack Overflow用户

发布于 2016-11-24 03:51:00

代码语言:javascript
复制
tshark -r test.cap  -Y 'http>0' -T json

tshark -r test.cap  -Y 'http>0' -T json -x # to also include the raw packet data
票数 2
EN

Stack Overflow用户

发布于 2015-09-17 15:16:57

也有类似的问题。仅使用wireshark/tshark选项无法解决此问题。下面是我从cap文件中提取原始json和xml的变通方法。

代码语言:javascript
复制
# 1. convert to pdml with DISABLED json and xml dissectors
tshark -r "wireshark.cap" -2 -R "http" --disable-protocol json --disable-protocol xml -V -T pdml > "wireshark.cap.pdml.xml" 

# 2. get hex encoded raw data from media.type pdml element
# 3. perform hex decode

我在步骤2和3中使用了groovy脚本

代码语言:javascript
复制
import groovy.xml.*

...

def String hexDecode(String s) {
    if ( null == s || 0 == s.length() ) { 
            return null
    }   
    def res = ""
    for (int i = 0; i < s?.length(); i += 2) {
            res += (Character)((Character.digit(s.charAt(i), 16) << 4) + Character.digit(s.charAt(i+1), 16))
    }   
    return res 
}

...

def xmlFile = new File("wireshark.cap.pdml.xml")
def pdml  = new XmlParser().parseText( xmlFile.text )
pdml.packet.each{ packet->
    def media = packet.proto.find{ "media"==it.@name }
    def hex  = media?.field.find{"media.type"==it.@name }?.@value
    def raw = hexDecode(hex)
}
票数 1
EN

Stack Overflow用户

发布于 2014-03-10 23:50:49

我不太确定“我如何才能像使用tshark那样获取json数据”是什么意思。您在运行tshark时看到的JavaScript信息看起来是这样的,因为tshark将应用程序/ JSON主体解析为JSON,并在输出中显示JSON信息,如您所见。如果你不希望它这样做,你需要禁用JSON协议/解析器;不幸的是,我不相信在tshark中有禁用协议的方法,但在wireshark中有(转到菜单Analyze->Enabled protocols并取消选中JSON协议)。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22295281

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档