【问题标题】:Trying to understand packets captured with tcpdump试图理解使用 tcpdump 捕获的数据包
【发布时间】:2017-01-06 05:34:29
【问题描述】:

所以我截获了一个从我的 android 设备发送到应用服务器的数据包。我想了解我的手机正在向服务器发送什么。

我已经root了手机,并在上面安装了tcpdump。我已经使用 adb shell 运行了:

tcpdump -n -i wlan0 -w OUTPUT_FILE src host IP_ADDRESS and greater 200

我已经在我的电脑上获取了数据包并通过wireshark运行它。

有人告诉我,在 ascii 部分中普遍存在的一长串“........”是因为没有特定 HEX 的 ascii 表示。

这是真的吗?

我已经能够确定数据包没有加密,因为我可以在我在应用程序中输入的 ascii 中看到明文字符串。

我猜数据是二进制或 base64 编码的 JSON,转换为十六进制并发送到服务器。 我可以采取什么步骤来进一步了解从我的设备发送到远程服务器的数据结构?

任何其他提示或随机见解都会非常有帮助。

【问题讨论】:

    标签: tcpdump packet-capture packet-sniffers


    【解决方案1】:

    这是真的吗?

    是的。

    我可以采取什么步骤来进一步了解从我的设备发送到远程服务器的数据结构?

    捕获的数据包包括一个以太网Ⅱ头和一个IPv4头和一个UDP头,如下:

    Ethernet Ⅱ: from 20:e5:2a:4f:b9:4f (NETGEAR) to 44:80:eb:ea:ef:9b (Motorola)
    IPv4: from 169.55.244.58 to 192.168.1.12, not fragmented
    UDP: from port 14242 to port 48818, payload length=1406 bytes
    

    第 3 行的右侧块(即bb 19 43 4f 02 c8 2b a3)是应用程序数据的开始。 要分析应用程序数据,您需要知道应用程序使用什么协议发送数据包并学习该协议。

    【讨论】:

    • 谢谢!这很有帮助。
    • “你需要知道应用程序使用什么协议”是指 UDP(我们已经知道),还是指节俭、协议缓冲区、JSON 之类的东西。我知道,如果我在应用程序中输入内容并点击“发送”,它将在数据正文中显示为 ascii。所以我猜测数据不是二进制格式。我应该如何弄清楚协议并剖析数据负载?
    • 我指的是 UDP 协议。可能应用程序使用了一个协议从端口 14242 向端口 48818 发送数据,而应用程序数据的开始(bb 19 43 4f 02 c8 2b a3)实际上是协议头的开始。但是,由于应用程序没有使用众所周知的端口,因此无法从捕获的数据包中知道协议是什么。您需要阅读应用程序的详细设计文档左右。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-09-16
    • 1970-01-01
    • 1970-01-01
    • 2013-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多