我想要个T恤衫

本文介绍了获取qq、微信好友IP地址的方法,并且讲解了其中的原理。

0×01为什么还要写好友定位?

在freebuf已经好些人写过相关内容的文章了,我为什么还要写呢?

原因很简单,我想换一个freebuf的T恤衫,这个T恤衫需要15金币,而我只有7个,怎么办?写个文章换金币呗。。。。。。。

这个话题虽说是老生长谈了,但是其实我要将的不仅仅是获取IP然后定位这样,我最初是想通过获取IP==>打通通道==>消耗流量,但是后来我发现我国的网络错综复杂,想打通通道却是难事,终极目的尚未达成,但是我又渴望得到这件T恤。。。。所以我打算写个上下篇,先把能实现的写出来,没能实现的以后实现了我再写。

我觉得这个T恤挺不错的。。

我觉得这个T恤挺不错的。。

0×02 获取IP的方法

前些日子有个定位女友的文章写了一个定位好友的方法,非常巧妙,原理类似于钓鱼,通过点击发送的页面来获取真实的IP。我跟这位小哥的方法不太一样,还有位小哥用筛选02004800字符串的方法寻找IP,我其实跟他这个类似,只不过我筛选的方法不同而已。我是通过udp.length==80来进行筛选,筛选出的结果会非常直观。

首先,打开你的wireshark,开始抓包,筛选udp.length==80的报文(不要),然后用qq或者微信给你的好友打电话(响两声就挂就行)。

QQ图片20170820215436.png

可以非常直观的看出qq电话的报文。

这里面106开头的公网IP地址就是你好友所使用的公网IP,你可以找个IP定位的网站定位一下就好了,比如 http://ipplus360.com/就可以进行定位,不过这几天不知道怎么了没法对移动网络就行精准定位了,但是对那种有线的家用宽带定位还是可以的。

QQ截图20170820220726.png

如果只是想简单的定位,那么看到这里就可以了,如果想了解其中的原理,你可以接着往下看。

0×03 网络电话的原理

细心的网友可能会发现,上文中我抓的包中除了公网IP之外还有一个私有IP地址,这个地址是什么鬼呢?

22.png

而且这个私网IP跟我所在的内网还不是同一网段,我第一次看到的时候我脑子里就出现一句话:这特么有毛用啊!?

后来我发现,这个地址竟然是qq电话被叫好友的地址,这台电脑是连接在手机热点下的,获取的是手机分配给它的一个私网地址,就是这个192.168.43.25。

毫无疑问这个私有地址和公有地址肯定都是对端qq软件上传给腾讯服务器,服务器又传给我的qq软件的(腾讯兄,这算不算上传用户信息啊?嘿嘿)。

但是我目前还是很懵逼,还是不知道跟一个私有IP通信是为了啥?而且为啥对方连个回应也没有啊,这不科学啊。

于是我就继续抓包,不同的网络,不同的主机抓到的报文差异很大,比如下面这个

33.png

这里的192.168.228.1其实并不是对端的私有IP,而且是因为对端的主机安装了vmware,这个地址其实是vmware虚拟网卡的IP地址(看来qq比较傻,分辨不出那个才是真的IP)。

有的时候又会不同,比如下面这个

44.png

这个对端有回应了,准确的说是收到了对方的回应。之所以这样是因为对方也是处在有线的网络之中,具体的后面我会讲。

还有一种情况就是两个qq用户处在同一个局域网之中了

55.png

直接就建立了连接了。这下我终于明白为啥会给对方的私有IP发报文了,就是为了应对同一局域网的情况。

夜深了,我的条理有点混乱了。。。。

梳理一下:至此,我大概明白了qq电话的通信流程了

第一步、先确定对方跟自己是不是处在同一个局域网,方法就是给对方的私有ip发请求,如果不是同一局域网那么这条报文就会因为没有路由而被丢弃,如果是同一局域网那么就会成功建立起连接(安装了vmware的是特殊情况,不会建起局域网内的连接),这样直接交换信息,连接最稳定速度也快,就跟内网qq之间传文件一个道理。

第二步、在第一步确定不是同一局域网的情况下,会尝试进行UDP打洞,让两个同在不同局域网的主机直接进行连接,这就用到了UDP打洞技术,但是UDP打洞不是什么情况下都能成功的,这要看双方的NAT方式,我会在下文详细讲。

第三步、是在两个qq用户不在同一局域网,并且UDP打洞不成功的情况下使用的,那就是通过腾讯的服务器进行中转,让腾讯服务器在中间做个代理帮忙传话。

用这三步就能让两个qq用户间建立最适合的通道,来完成通话。

0×04 UDP打洞原理

UDP打洞其实就是让两个处在局域网中的主机建立udp连接的一种方法,这个原理要是详细讲也能讲一会的,我下篇文章再做详细分析吧。^_^

12

发表评论

已有 8 条评论

取消
Loading...

填写个人信息

姓名
电话
邮箱
公司
行业
职位
css.php