Kindle 3的系统和网络情况以及通过其连电脑上网
January/23rd 2011

    搜索“kindle 3用作modem共享3G上网”,有很多文章,但绝大部分都是翻译国外一个哥们的文章,写的很大概,一般人很难操作成功。 昨天根据这篇文章研究了下kindle 3的系统,得到一些成功。

    Kindle 的系统是amazon基于linux开发的嵌入式系统。通过在kindle上安装usbNetwork(网上自己搜索,有很多东西都要用到usbNetwork),可以把kindle与电脑连成一个局域网内。然后通过ssh或者telnet可以进入kindle内部。(用户名是root,密码是空,一般usbNetwork装好后,电脑的ip就是192.168.2.1,kindle的ip是192.168.2.2)

    Kindle 3 打开wireless 并成功连上3g网络后,用ifconfig命令可以看到有一个ppp0连接,这就是3G网卡。 按理说就算是漫游,设备在连接上3G网络后,都应该有完全的网络访问能力。但是kindle系统限制了只能连接某几个ip(几个*.amazon.com的站点)。ping www.amazon.com 可以,但是ping 8.8.8.8就不行。 kindle系统里面的浏览器是通过fints-
g7g.amazon.com ( 72.21.206.113 ) 这个http代理服务器实现上网的(https代理服务器是另外一个)。

    可恶的是,amazon的代理服务器需要验证身份,在发送给代理服务器的http请求header里面需要加上x-fsn和x-fn-appid头才能通过验证。不同的kindle设备这两个值不同,所以需要先截取kindle内部浏览器发送的请求,得到这两个header值。方法是下载一个tcpdump-arm软件,传到kindle内(可以使用scp命令,或者先在U盘模式下存到kindle的sd卡里,然后可以在/mnt/us/下面找到)。然后进入kindle内部,运行此软件(如果提示没有权限,可以试试chmod 555 tcpdump-arm设置下权限)。运行方式是找到tcpdump-arm文件的文件夹,然后./tcpdump-arm -nAi ppp0 -s0。 然后在kindle上打开浏览器,随便上一个http网站,电脑上的命令行界面就可以看到截取的各种消息,很容易就从中找出需要的两个header值。

    得到两个header值之后,我们就可以在电脑上伪造kindle内部浏览器的请求了。 很遗憾,目前只能用firefox实现,并需要一枚firefox扩展:modify-headers。安装好这个扩展,先添加上面说的两个header,然后设置forefix的http代理服务器为 localhost 端口号是1234(随你)。 然后在kindle上做一个逆向端口转发,把本地的1234端口的数据转发到72.21.206.113的80端口上。 具体步骤是 先telnet或者ssh进你的kindle,然后输入ssh -R 1234:72.21.206.113:80 username@192.168.2.1。其中username@192.168.2.1是你电脑的ssh用户名和ip。能这样做的前提是你的电脑可以通过ssh登录,这个在mac os 和linux下非常容易,windows用户只能说靠你自己了。。。。

    此时你应该可以用你的firefox正常上网了。 你可以跳过添加验证header的步骤,也可以上网,但是仅限于*.amazon.com站点。 不过遗憾的是,就算能够正常上网,也无法访问https链接,因为modify-headers这个扩展貌似不支持https请求。

    另外,ssh可能会经常断,kindle的3g连接在一段时间不使用后,也会自动断开。为了防止此种情况发生,在创建好反向连接后,输入ping 192.168.2.2 从你的电脑不停的ping kindle,这样可以保持这个反向连接不断开。然后再开一个命令行窗口,再次进入kindle,输入ping www.amazon.com ,这样可以保持kindle的3G网络不断开。

    如果某个高人能够破解kindle系统对网络访问的限制,使其能访问任意站点,那就不用这么麻烦了,而且数据也不用走美国跑一趟。这应该是可以通过软方法实现的,因为既然kindle能直接访问*.amazon.com,那就证明kindle有网络访问权限,问题肯定在操作系统上。

    如果实在无法破解其限制,我在考虑做一个proxy程序,在kindle上运行,自动添加验证header到每个请求头部。这样,就可以简化到 1在kindle上运行usbNetwork和proxy并连接到电脑,2在电脑上任意浏览器输入http代理 192.168.2.2 80端口,就可以了。 而且也能更好的支持https。 我在考虑用开源的tinyproxy修改,交叉编译然后放到kindle里面运行。

    交叉编译我们学校教过,但是被我完全忘了。。。。一切得从头学一下。

    对于某些同学认为如果大家都滥用kindle的免费3G,amazon肯定会禁用全部kindle的3g访问。 我觉得不会,因为目前,所有流量都是走amazon的代理,他们知道所有流量信息,并且能区分不同的kindle设备发送的数据,觉得某个kindle有问题,把那个kindle设备禁用掉就行,不会殃及到其他人的。 要是那个高人破解了kindle系统的网络访问限制,那估计AT&T会真的找到amazon禁用全球漫游的数据。。。

    kindle的所有网络请求都走代理,虽然响应速度慢了点,但是下载速度还可以,我试过下载最高可以达到100-200K/s,但是如果持续的大流量下载,代理服务器会禁用你的连接一会儿。 比如我无法完整的看完一个视频。   另外,就是这个代理服务器可以顺便实现翻墙,不过悲剧的事情有来了,twitter和facebook等绝大部分墙外的东西登录都用的是https。。。解决办法是先用电脑正常翻墙登录并保存登录信息,然后再用kindle上。



36979 read 23 comment(s)
#1
听临   2011年02月14号 03:24       回复
我当时也有这个想法~~现在看来实现还是挺复杂的~~
#2
baby walker   2011年03月03号 15:06       回复
不错,学习了呢
#3
远走高飞   2011年03月10号 16:15       回复
占个位先
#4
power cord   2011年03月10号 17:03       回复
看完后,我发现七窍通了六窍。
#5
bgs90   2011年04月24号 10:52       回复
不错啊,要绕开amazon的代理,我相信肯定在操作系统内核做了调整,只允许amazon域名的通信,学过linux的可以看看,在哪个模块做限制比较方便,就可以破解了吧?
#6
xuzhouweb   2011年04月26号 13:51       回复
看上去还挺麻烦呢 
#7
babylong   2011年06月11号 08:39       回复
博主您好,用您的方法可以实现代理,但是3.1版本以后amazon好像就封掉了这个功能。
一开网页命令行窗口就出现ssh: Server sent unrequested forward from "127.0.0.1:1234"
#8
xiaobei   2011年07月02号 21:53       回复
There is a problem with your Kindle account. Please call Customer Service at 1-866-321-8851 or 1-206-266-0927. For UK customers, please call +44(0)800 496 2449.
如上错误
#9
jetsanix   2011年08月10号 13:25       回复
https 的话,试试 privoxy
#10
ray   2011年08月21号 08:56       回复
@bgs90 
iptables
#11
唉。   2011年08月21号 11:26       回复
和7楼的一样的状况,我的是3.2.1版本3G广告版啊。完全一样的状况啊。
但是3.1版本以后amazon好像就封掉了这个功能。
一开网页命令行窗口就出现ssh: Server sent unrequested forward from "127.0.0.1:1234"

具体我是按照这儿操作的。用的是vshellhttp://bbs.mydoo.cn/viewthread.php?tid=14508&extra=&page=1
#12
longbill   2011年08月26号 00:50       回复
@唉。 3.1版的系统没用过。kindle好久没在我手上了。这次回去再拿来捣鼓一下。
#13
felonwan   2011年08月27号 21:47       回复
哈哈,原来是x-fsn和x-fn-appid这两个headers哦,第一次用,不知道咋整,可算知道怎么弄了。
#14
xxxx   2011年08月28号 19:15       回复
高端玩家啊!
#15
starboy   2011年09月04号 08:14       回复
usbnetwork之后连接电脑还是优盘模式怎么回事?
#16
rahj   2011年10月10号 11:25       回复
你好。
印象中KINDLE一直不支持Peer to Peer的无线连接,不确定KINDLE3g能否通过tether wifi来共享3g?
http://www.mobileread.com/forums/showthread.php?t=109351
根据上帖8楼提供的线索,可惜找到的还是CR. Mulliner的博文,通过USB共享上网的那篇教程。
想请问有没有通过WIFI共享的实现手持设备上网的方案?
#17
wiwi   2011年10月22号 15:12       回复
我的是3.2.1广告版,设置完以上步骤后,一打开网页,firefox就提示
There is a problem with your Kindle account. Please call Customer Service at 1-866-321-8851 or 1-206-266-0927. For UK customers, please call +44(0)800 496 2449.
 
#18
liva   2011年12月30号 17:25       回复
我都用的kindle touch,没发现有fsn这个东西,在头里面有个x-adp-token,里面有enc和key,走的代理是kindle-proxy.amazon.com
#19
Michael   2012年01月17号 15:36       回复
@liva 请问kindle touch 如何做代理让电脑上网?
#20
buikhlj   2012年06月11号 15:50       回复
我表示,看了后七窍流血了
#21
jacklondon   04月29日 22:55       回复
我今天刚刚了解到这个算是历史的事情。根据网友的说法,kindle是内置SIM卡(或者具备同样功能的软/硬件),然后在全球都是按照GSM协议漫游到美国AT&T。那么这样说的话,实际上就是亚马逊与AT&T签合同,批发了一批漫游的服务,然后设备里面通过软/硬件限制了网络流量必须先走g7g.amazon.com ( 72.21.206.113 )这个代理从而限制用户的使用。那么,既然kindle已经内置了SIM功能,为何不直接提取出来,然后不就是一个由亚马逊掏钱的可以一直使用的SIM漫游卡了吗?而这样并没有经过亚马逊的服务器,所以无论是否滥用亚马逊也不知道。
还有就是,网上说是最早可以访问一切网站的,后来才被亚马逊禁止只能官网和维基,那么这个是通过什么技术手段?(毕竟走的是运营商的通道,亚马逊管不着啊)
#22
jacklondon   04月29日 22:55       回复
我今天刚刚了解到这个算是历史的事情。根据网友的说法,kindle是内置SIM卡(或者具备同样功能的软/硬件),然后在全球都是按照GSM协议漫游到美国AT&T。那么这样说的话,实际上就是亚马逊与AT&T签合同,批发了一批漫游的服务,然后设备里面通过软/硬件限制了网络流量必须先走g7g.amazon.com ( 72.21.206.113 )这个代理从而限制用户的使用。那么,既然kindle已经内置了SIM功能,为何不直接提取出来,然后不就是一个由亚马逊掏钱的可以一直使用的SIM漫游卡了吗?而这样并没有经过亚马逊的服务器,所以无论是否滥用亚马逊也不知道。
还有就是,网上说是最早可以访问一切网站的,后来才被亚马逊禁止只能官网和维基,那么这个是通过什么技术手段?(毕竟走的是运营商的通道,亚马逊管不着啊)
#23
jacklondon   04月29日 22:55       回复
@Michael 我今天刚刚了解到这个算是历史的事情。根据网友的说法,kindle是内置SIM卡(或者具备同样功能的软/硬件),然后在全球都是按照GSM协议漫游到美国AT&T。那么这样说的话,实际上就是亚马逊与AT&T签合同,批发了一批漫游的服务,然后设备里面通过软/硬件限制了网络流量必须先走g7g.amazon.com ( 72.21.206.113 )这个代理从而限制用户的使用。那么,既然kindle已经内置了SIM功能,为何不直接提取出来,然后不就是一个由亚马逊掏钱的可以一直使用的SIM漫游卡了吗?而这样并没有经过亚马逊的服务器,所以无论是否滥用亚马逊也不知道。
还有就是,网上说是最早可以访问一切网站的,后来才被亚马逊禁止只能官网和维基,那么这个是通过什么技术手段?(毕竟走的是运营商的通道,亚马逊管不着啊)
添加新的评论
称呼:*
邮件:*
网站:
内容:

Copyright © Longbill 2008-2020 , Designed by EndTo , Powered by EndCMS