我的宽带我做主,抛弃《宽带我世界》

原创作品,转载请注明出自xelz's blog

博客地址:http://mingcn.cnblogs.com/

本文地址:http://mingcn.cnblogs.com/archive/2010/11/12/cncdec.html

 

河南用联通线的网友们对这个东西肯定不陌生,每次装宽带都会被安装人员强行装上这么个破软件,看完这篇文章你就可以完全的抛弃它了

 

判死刑要有罪状,我是不会冤枉好人的^_^ 悉数如下:

占用内存(15-40M不等)

捆绑插件(安装完毕系统软件列表中多出5个,分别是 宽带我世界、灵信ADSL拨号客户端、网通安全卫士、网通ADSL拨号专用版、中国网通CNCMAX客户端,安装时选择在D盘安装,除了CNCMAX在D盘放了410KB了两个文件外其余都在C盘,并且修改注册表,最小化安装只能省掉安全卫士,貌似最近出的兼容WIN7的版本把这些插件去掉了,因为win7用不了,联通的技术员可真省事啊 - -!)

限制共享(当对软件创建的"rwpppoe"连接设置Internet共享后,上线不到3分钟就会掉线,一直在监视着,当然占内存)

DNS劫持(用户无法自行更改DNS,同上,具有监视功能的客户端会把它改回来,而用它的DNS,你浏览的网页就会被嵌入该死的广告)

弹窗广告(恩,玩全屏游戏的估计最恶心这个了...)

 

宽带我世界采用的是PPPoE拨号,2000及以后的系统中都集成的有PPP协议,直接利用系统自带的拨号程序就可以了。但是联通给我们的账号是加密的,不能直接用来拨号。所谓的客户端最有用的功能就是解密,市面上销售的河南联通专用路由也就是内置了解密程序。

 

如果你已经装过宽带我世界并成功联网,右键点“网上邻居”,属性,打开“网络连接”,右键点“rwpppoe”选“属性”,在“选项”一栏将“提示名称、密码和证书等”打上√,确定退出。

 

然后双击打开,就可以看到真实的账号了(形如2:XXXXXX)。

 

还有一种方法是打开IE的属性对话框,在“连接”选项卡中,选中rwpppoe,点右边的设置,也可以看到真实的账号。

 

如果你还没装宽带我世界也不打算装,那么可以点此下载我写的一个小工具,直接将账号解密。

 

拿到了真实的账号,下面要做的就是用它创建一个新的拨号连接,密码还是原来的密码。不会的话用百歌谷度一下,创建之前先把宽带我世界卸载掉吧!

 

解密的算法很简单(C):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
int decode(char* strSrcAcc, char* strResAcc)
{
    char DicA[] = {
        '9', '0', '1', '2', '3', '4', '5', '6', '7', '8', 'a', 'b', 'c', 'd', 'e', 'A',
        'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'f', 'g', 'h',
        'i', 'j', 'k', 'l', 'm', 'n', 'U', 'V', 'W', 'X', 'Y', 'Z', 'x', 'y', 'z', 'u',
        'v', 'w', 'o', 'p', 'q', 'r', 's', 't', 'O', 'P', 'Q', 'R', 'S', 'T'
    };
    int DicB[] = {
        0x11, 0x34, 0xc9, 0x23, 0x75, 0x18, 0xd7, 0xe2, 0x12, 0x35, 0x29, 0x2b, 0xec, 0xb6, 0x23, 0x19
    };
    int length = strlen(strSrcAcc);
    char chrResAcc[20] = {'\0'};
    int num2;
    int num4 = 0x25;
    int num3=0;
    int dic;
    int index;
    for (int i = 0; i < length; i++)
    {
        for (int j = 0; j < 62; j++)
        {
            if (strSrcAcc[i] == DicA[j])
            {
                dic = DicB[i % 16];
                num2 = num4 * 3;
                index = (((dic ^ num2) ^ num3) + j) % 62;
                chrResAcc[i] = DicA[index];
                num2 = index;
                num4 = num4 ^ (num2 + 0x24d9);
            }
        }
        if(chrResAcc[i]==0)
            chrResAcc[i]=strSrcAcc[i];
        num3=num3+5;
    }
    strcat(strResAcc, "2:");
    strcat(strResAcc, chrResAcc);
    return 1;
}
posted @   xelz  阅读(4713)  评论(17编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· [AI/GPT/综述] AI Agent的设计模式综述
点击右上角即可分享
微信分享提示