【发布时间】:2012-11-13 11:50:28
【问题描述】:
我去年收到了一份礼物,它是索尼 CMT700Ni 音频站,支持 wifi。它还具有类似于广播的功能,称为“PartyStreaming”。我目前正在挖掘内部,探索它,所以也许我可以结束拥有自己的“PartyStreaming”设备并免费拥有类似 AirPlay 的功能(挑战也很有趣)
PartyStreaming 是一个非常容易理解的基于 SOAP 的服务。有 4 个主要功能分为 2 组:服务器端和客户端。每组中的 2 个函数代表开始与对方的连接或结束连接(服务器的开始/停止,客户端的加入/离开)
实际上我已经走了很远,因为我现在能够访问服务器 - 音频站 - 在网络上传播的音频数据。似乎,在使用soap方法加入服务器后,客户端必须在端口3975上向服务器发送一个UDP数据包。收到后,服务器通过在同一端口上向客户端发送数据包来回复,持续30秒。
看了大约一百个之后,我发现一个典型的数据包长 1024 字节,其中有 64 字节的标头,64 字节的 0 填充,然后是 896 字节的声音数据。
我现在有了数据,但它看起来像是一堆随机写入的字节。没有编解码器信息,没有结构,没有“块格式”(就像在波形文件中一样)。我找不到任何关于协议或任何“PartyStreaming”相关技术资料的好文档。
我的问题是:“嘿 StackOverflow,有什么建议吗?有什么线索吗?我应该放弃还是你有一个可以测试的想法?”
可能有用的东西:
关于主题的注释:http://pastebin.com/pp8aRQrR
转储没有标头的数据包:http://cl.ly/430H2i001K3R
转储带有标头和一些格式以读取它们的数据包:http://cl.ly/2i2F2c3E3W3C
我现在要测试的东西:
作为客户端捕获 UDP 数据包,然后启动服务器并将该数据发送到我的音频站,看看它是否可以读取它;也许有服务器端加密,如果是这样,我就卡住了
建立一个1kHz的文件,并在音频站播放;捕获数据包并观察其字节,也许与用许多编解码器编码的同一文件进行比较以找到模式......
【问题讨论】:
-
你使用什么编程语言?
-
我使用python进行快速开发,但我可以使用其他任何东西
标签: audio udp protocols reverse-engineering network-protocols