C 如何在同一HTTPS流量中区分不同类型的数据包?

C 如何在同一HTTPS流量中区分不同类型的数据包?,c,tcp,https,wireshark,libpcap,C,Tcp,Https,Wireshark,Libpcap,有件事困扰着我:我想区分来自Youtube的数据包和来自Wikipedia的数据包:它们都是通过HTTPS传输的,都来自端口443 因为它们是通过HTTPS传输的,所以它们的有效负载是不可理解的,我无法进行全面深入的数据包检查:我只能查看以太网、IP和TCP结构头。我可能会查看这两个数据包的IP地址来源,看看它们实际上来自哪里,但要知道它们是来自Youtube还是Wikipedia,我应该已经知道这两个站点的IP地址 我想弄明白的是一种不用调查有效载荷就能从HTTP流媒体(就像Youtube)和

有件事困扰着我:我想区分来自Youtube的数据包和来自Wikipedia的数据包:它们都是通过HTTPS传输的,都来自端口443

因为它们是通过HTTPS传输的,所以它们的有效负载是不可理解的,我无法进行全面深入的数据包检查:我只能查看以太网、IP和TCP结构头。我可能会查看这两个数据包的IP地址来源,看看它们实际上来自哪里,但要知道它们是来自Youtube还是Wikipedia,我应该已经知道这两个站点的IP地址

我想弄明白的是一种不用调查有效载荷就能从HTTP流媒体(就像Youtube)和简单HTML传输(维基百科)中分辨出来的方法


编辑1:在复制视频期间启动的Wireshark会话中,我收到了大量数据包。也许我应该开始查看来自同一地址的数据包之间的超时时间。

您可以尝试查看TCP报头选项,但通常情况下,流量是由于某种原因而加密的。。。这样中间的人就看不见了。如果可能的话,根据定义,这将是一个糟糕的加密标准。由于您拥有用户代理已知的捕获和所有信息,因此您不是“中间人”。但是,您需要使用用户代理信息进行解密,然后才能真正看到流中的内容。

此链接:

表示几种方法

建议在C程序中运行IP上的
nslookup


记住,地址/ip值可以嵌套在数据包的数据中,可能(可能会)需要对数据包数据进行一些调查,才能找到数据包的发起者。当用户明确加密信息以获得匿名性时,如何获取与服务器交换的信息。快速的反应是你不能。但只有当您能够穿透SSL连接时,您才能获得更多信息

即使是服务器和客户端之间交换的SSL证书也没有帮助,因为它只标识服务器(而不是您将在此connecton后面尝试的虚拟主机),并且多个SSL服务器(具有称为HTTP虚拟主机的功能)多个服务器可以侦听同一地址的同一端口上的连接

SSL参数是在连接之后协商的,通常使用请求的
Host
http头字段选择虚拟服务器(请参见RFC-2616),但这些参数是在SSL协商完成后才协商的,因此您无权访问它们


唯一可以确定的是,您可以尝试通过此类流量显示的数量和连接模式来识别youtube的连接。

如果您只是对Wireshark中的数据流感兴趣,您可以使用TCP流索引,过滤器类似于TCP.stream==12

流索引从wireshark遇到的第一个流的零开始,并为每个新流(持久连接)递增

因此,相同IP之间的两个不同流将具有两个不同的编号。例如,相同IP地址之间的视频流可能是12,音频流可能是13


如果在启动流之前启动捕获,则可以看到原始的SSL连接的流量设置(大部分是在明文中)

,您可以考虑查看服务器证书。它会告诉你是youtube(谷歌)还是facebook


这会让你知道SSL连接是否是到youtube的,哪一个是到facebook的。

可能想看看(研究论文,PDF格式)抱歉,修复了(我把
放在
()
里面,而不是后面。)谢谢,我会看的。@Mark Plotnick,虽然论文基本上是正确的,它不能解释一些相当基本的事实。首先,每单位甚至每段时间的数据量远不是常数。这将取决于画面改变屏幕内容的速度。有几个人坐着聊天的新闻广播会有很高的压缩率,而摄像机角度不会改变,当摄像机角度改变或他们去外景时,压缩率也会很高。体育和卡通片的单位时间数据速率更加一致,但卡通片的数据量会比体育节目少。我将看一看TCP头选项,也许它们包含一些信息,这些信息可以区分流媒体中涉及的数据包和其他数据包。这不是一个好方法(好吧,可以是谷歌或youtube,但不是一般)通常情况下,ISP使用http的虚拟主机功能在同一主机上装载不同的web提供商。从ip流量中,除了ip地址和端口号之外,您无法获得任何信息。其他所有信息都是加密的。某种启发式分析?我可以将来自/到Youtube的数据包地址与所属的ip地址列表进行比较致谷歌公司(请咨询AS15169)。或者我可以计算来自谷歌IP地址的数据包,如果我收到大量TCP确认的数据包,可能会有一个视频缓冲。我认为一个缓冲Youtube视频会比一个简单的谷歌查询发送给我更多的数据包,对吗?不,TCP确认在TCP流量中埋得太深。视频流是可以在TCP上完成的事情,就像你一样不需要快速响应时间,因此您甚至可以花费数分钟填充缓冲区,以确保有足够的缓冲区空间在播放过程中不会中断。视频下载中的ACK不会比普通文件下载中的ACK多。但是,如果您愿意,可以测试这一模式。这是您唯一可以做的事情我无法访问连接的内部。