再谈BlackBerry 7230的激活
这年头BlackBerry 7230的激活已经是老掉牙的话题了。其实原理相当简单, 无非是让BB做个到MDS服务器的连接,连上MDS之后BB就认为自己激活了, 然后就能使用cnwap正常上网了。maxpda上也有高人贴出了 自建MDS服务器进行激活的办法。
简单来说,BlackBerry 7230激活的过程如下:
- 导入ServiceBook,其中IPPP的IP地址需要指向MDS服务器。
- 在Options->Service Book中恢复删除所有内容。
- 设置Options->TCP的APN为空。
- 以上的设置是保证BlackBerry 7230能使用ServiceBook中设置的MDS服务器进行连接。
- 然后启动任意一款能不通过WAP建立网络连接的程序。QQ3可以,自带的浏览器似乎不行。
- 使用该程序建立直接的网络连接(不能走WAP)。
- 待BlackBerry 7230连接到MDS服务器之后,激活成功。
- 此时在Service Book中删除IPPP,并设置TCP的APN为cmwap,就可以用WAP上网了。
在这个过程中,关键的就是这一步:使用该程序建立直接的网络连接(不能走WAP)。 也就是说,任何一个能建立直接连接的程序都可以用来激活。为什么呢?
大家可以查查BlackBerry JDE的javadoc。建立网络连接主要使用 javax.microedition.io.Connector 类的 open 方法(这在《BlackBerry Application Developer Guide Volume 1》中有介绍)。 open方法支持多种协议,比较注目的就是http和socket。 从http协议的参数中可以看到,其中包含 WapGatewayIP、WapGatewayPort等参数, 所以可以认为http是走WAP的(实际不一定如此,但不影响本文的介绍),而且用法比较复杂。 相比之下,socket就简单得多。打开一个socket连接的方法如下。
connection = (StreamConnection)Connector.open("socket://1.2.3.4:5555");
URL可以带一个参数 deviceside,这个参数很关键。根据javadoc, 该函数可以取以下的两个值:
- deviceside=true:直接建立手机到服务器的连接,不使用MDS服务器。
- deviceside=false:通过MDS服务器建立连接。
我们知道,激活是要走MDS进行认证的,所以必须使用deviceside=false才能正常使用MDS进行认证。 所以上面的建立socket链接的语句千万不能加deviceside=true参数,否则就白忙了。 BlackBerry 7230的默认连接方式是 deviceside=false 的,所以什么参数都不加就可以了。
知道了原理,只要写一个程序,调用上面的Connector.open,不管连接什么URL都能完成激活。 我写了个程序,编译后的cod文件只有2440字节,完全可以取代上百K的QQ3。 源代码和cod文件见文末的下载。
另外有兴趣的同学还要注意了,BlackBerry对进行网络连接的程序有严格的限制。 同一程序不能同时连接外网和内网,这里的外网就是上述deviceside=true的直接连接, 内网就是deviceside=false的走MDS的连接。而且这里的“同时”是永久性的, 也就是说,一旦你的程序连过外网,BlackBerry就会认为你是一个外网程序, 以后就永远禁止你连接内网,反之亦然。想连内网,对不起,只能请你换个名字了。 这种同时连接外网内网的行为叫做“split-pipe”, 关于禁止这一点在《TCP IP Support for the BlackBerry 6500 Series and BlackBerry 7500 Series of Wireless Handhelds》中有说明。
程序下载: