授人以鱼不如授人以渔。

最近有很多人问咱如何获取 SingleNet 之类的各种算法,因为 V4 版本也出来了,没有深入研究过 V4,但是估计是更难了,那咱把这个所谓的 V3 版拿出来炒下冷饭,其实方法都是大同小异,更重要的是前辈们所流传的内容。

首先咱就来讲下如何获取他的拨号密钥。

配置调试环境

如果环境就在学校的话,拿出虚拟机就可以直接调试了,但是咱现在已经不在学校了,就需要手动搭建一套 PPPoE 的环境,也不麻烦,直接用海蜘蛛或者 OpenWRT 甚至随便找个 Linux 就行,不过海蜘蛛一键安装配置,咱就随手拿来用啦。

其次呢,千万不要再虚拟机内开 Wireshark,因为会被检查到,而且那样就不会走正确的算法了。

咱是用 VMWare Fushion 的 vmnet-sniffer,通过一条命令就可以开始嗅探啦:

# sudo vmnet-sniffer -w dial.pcap vmnet2

之后还得准备好 OllyDBG。

开始动手

首先咱来测试下 PPPoE 服务器能正常工作,打开 singleNet.exe,其实真正的拨号是通过这个进行的,我们随手输入个账号密码,顺便开启嗅探程序,然后点击拨号,如果不出意外的话,应该被错误在认证用户名密码的步骤上:

咱现在也可以通过 Wireshark 直接查看所捕获的数据包,发现用户名是加密的啦喵。

那么现在就要上 OD 了哟。

使用 OD 打开后,也正确启动,看起来没啥问题。发现加密后的用户名实际上就是换了个密钥,所以我们直接断在 time 上:

然后点鸡拨号!

发现程序顺利被断下来了:

返回到用户代码,然后不远处有一个非常可疑的函数,先下断然后步入:

然后密钥就出来了喵~

密钥其实挺简单的,比较棘手的是之后心跳的部分,等咱有空再讲当时咱是怎么解决的吧~