那些天在家里做准备去北京找软件开发方面的工作。正巧去姑姑那里玩,她在邮电所工作,最近装了宽带和机顶盒,有个数字电视演示电视机。但姑姑不知道宽带的帐号和密码,没办法,她那里的查询系统也查不到帐号和密码。于是我试着拿网线连接机顶盒和我的笔记本电脑。发现本地连接断开的,机顶盒没反应。于是我用双机互联的网线连接,本地连接连上了,机顶盒提示正在寻找服务器,时间长了提示超时。我想到了我电脑里有大学计算机网络课的实验软件Ethereal,试着抓包看看,发现机顶盒在发送PPPOED类型广播包(PADI)。用网线连接猫和我电脑,发现我桌面的宽带连接也发送PADI和有其他包直到和宽带接入服务器建立连接,并发送帐号和密码验证(都错的,当然失败)。计划来了:写个程序伪装成服务器,和客户端沟通并获取帐号密码。
开发过程:
首先想到了winsock,但后来发现PPPOE协议的特点是没用到IP协议。用winsock原始套接字自定义封包不知道可以实现否,我没找到资料。突然想到了Ethereal可以抓到PPPOE封包,并且可以分析交互过程,分析下它的实现,发现原来这个软件使用了libpcap的内核,找到方法了。到网上下了个winpcap,已经编译好的wi