搜狗浏览器教育网加速所用代理协议初探

February 28, 2009
后注(09-04-14):其实Sogou浏览器的代理功能是独立的,可以单独利用,分析其协议意义不大,见通过Wine使用Sogou浏览器的教育网加速代理

搜狗浏览器的教育网加速功能,对n多在学校使用校园网的用户来说可是福音,更别提其附带的翻墙功能。自从搜狗浏览器发布那天起,我就对其所用的代理服务器虎视眈眈:要是能在其他浏览器使用,多好啊……

早前,用Wireshark嗅探搜狗连接加速代理的数据包,找到如219.234.81.(64/65/)66、219.234.81.(35/36/37)等几个服务器,看其发送的数据包,好像和HTTP代理差不多!试着将其加入Firefox的代理……果然吃的是闭门羹:Try Sogou Explorer now!

也看到搜狗发出的HTTP GET带有一些私有头部X-Sogou-XXXX的,估计有一些校验机制,就暂时放下了。

这几天校园网特别不稳定,又打起搜狗的主意。

感谢Python能够用这么简单的语句给我提供实验的环境,现在已经肯定下面的代码能够通过搜狗的代理访问到google的主页!程序输出的确实是Google的HTML代码!

#!/usr/bin/python
 
import socket, sys
 
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
 
s.connect( ("219.234.81.66", 80) )
 
data = "GET http://www.google.com/ HTTP/1.1\r\nHost: www.google.com\
\r\nX-Sogou-Auth: 438892784B65C0ADAB8B42F1BF6E7984/91/1ac66c2d240157be\
\r\nX-Sogou-Tag: 82cfc55e\r\nX-Sogou-Timestamp: 49a7fa22\r\n\r\n"
 
s.sendall(data)
 
while 1:
    buf = s.recv(4096)
    if not len(buf):
        break
    sys.stdout.write(buf)

然而,现在高兴还为时过早,这个程序我发送的HTTP头信息如下:

GET http://www.google.com/ HTTP/1.1
Host: www.google.com
X-Sogou-Auth: 438892784B65C0ADAB8B42F1BF6E7984/91/1ac66c2d240157be
X-Sogou-Tag: 82cfc55e
X-Sogou-Timestamp: 49a7fa22

已经确定这三个X-Sogou是必须的头验证,缺一不可,改掉其中任意一个的值,也不行。

其中X-Sogou-Auth的值一直不变,估计和系统、硬件有关。

X-Sogou-Tag一直在变,摸不清头绪。

X-Sogou-Timestamp似乎如其名字,和时间有关,每次发出都大概和秒表一样加一。

……  ……  ……  ……  ……  …… 接下来做了以下的猜测:

X-Sogou-Timestamp似乎是一个数值,按16进制输入计算器,将其转换成10进制数字,得到1235745314……恩,想起之前外国很多IT媒体都在兴奋的报道,情人节那天,Sat Feb 14 07:31:30 CST 2009——的时候的Unix时间值是1234567890,难道这个就是当前的Unix时间值?马上验证:

>>> time.ctime(1235745314)
'Fri Feb 27 22:35:14 2009'

强大!果然是刚才的时间!貌似看到希望的曙光了!

…… …… …… …… …… …… ……

然而,过了n久,运行刚才的python脚本,依然可以正常输出!看来代理服务器并没有校验Timestamp的值是否合理……那么唯一的解释,就是用Timestamp来做验证的密码了……

观察X-Sogou-Tag,刷新一个网页往往会发出很多个连接,包括图片、css文件什么的,发现同一秒中发出的连接,Timestamp值相同,Tag的值也相同!Tag由Timestamp决定!

…… …… …… …… …… …… ……

继续观察,发现Timestamp相同,但是域名不同的网站,Tag也不同,X-Sogou-Domain也不定时出现……

…… …… …… …… …… …… ……

哎,可恶的Tag,貌似Out of my reach了……看来自己还是当不成黑客,密码学领域知识很空白……对数字也没那个敏感……

收获就是对HTTP头的结构了解……上网查过,居然没有一点资料详细说!害我在wireshark里面对着那些16进制一个个字节的看!

16 Responses to 搜狗浏览器教育网加速所用代理协议初探

  1. says:

    同样想邪恶的想法!

  2. dreamer says:

    喔,强淫一个啊……

  3. Iven says:

    这个恐怕要靠反编译了……

  4. Solon says:

    Firefox用户: 强淫一个,精神上支持你的研究。期待你早日修成正果。

  5. Lily says:

    不用这么麻烦,用Process Explorer仔细瞧瞧它的第二个进程的TCP/IP....

  6. PT says:

    楼上一语点醒,Sogou浏览器专门在后台开了的proxy的进程,用-proxy参数启动的,加以利用即可!

  7. Pingback: 通过Wine使用Sogou浏览器的教育网加速代理 - apt-blog.net IT民工养成计划 PT博客

  8. 小三 says:

    呵呵~Windows用户飘过!

  9. iCity says:

    我也想用其他的浏览器使用搜狗的代理

  10. iCity says:

    刚搜索到了解决使用搜狗代理的方法了,直接调用搜狗的加速进程就可以实现。

  11. Mike says:

    挖一个坟

    似乎TAG是根据Host字段来的,然而host字段似乎完全可以无视,就随便写个www.google.com就可以,这个host字段和最终的发送的host字段是无关的。最终的字段永远是根据url里面的domain指定的:)

  12. michael says:

    貌似现在最新的2.0.0.1049版本不是这样了吧?

  13. Xiaoxia says:

    i wrote a piece of code to make X-Sogou-Tag. it's a hash about Timestamp+Host+"SogouProxySogouExplorerProxy". it's not crc32 as it was what i had guessed at first. instead, it's a complicated hash function i found with OD.

  14. bush says:

    居然兩年過去了,這個漏洞還沒被 gfw 發現?

Leave a Reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="" highlight="">

Page optimized by WP Minify WordPress Plugin

 
Powered by Wordpress and MySQL. Theme by Shlomi Noach, openark.org