利用detours开发包截获星空极速账号和密码
有些地区的中国电信(如湖北)对用星空极速拨号的账号或者密码进行了加密处理,一旦用户使用过一次星空极速进行拨号,那么他的账号或者密码将被加密,这样就导致路由器直接用原来的初始拨号账号和密码无法拨号,本文将利用微软的detours开发包工具截获加密后的账号和密码,用此账号密码路由器即可成功拨号。
网络上已经有一些星空极速账号密码算法研究的文章,但是都不是很彻底,也不是一劳永逸的方法,因为一旦算法改变那么方法也就失效,需要重新分析算法。本文介绍的方法则可以一劳永逸的解决上面的问题
本人经过分析星空极速拨号软件,它在底层调用了windows PPPoE拨号API(rasapi32.dll),关键的函数就是如下图中的RasDialA函数,此函数需要传递一个结构体,而此结构体中就存在我们需要的敏感数据:ADSL账号和密码
①RasDialA 函数参数中的一个结构体如下RASDIALPARAMSA,其中szUserName和szPassword为ADSL账号和密码,也是我们需要截获的数据,一旦我们有方法截获这两个参数的值那么不管中国电信以后的算法如何升级,只要他不全部重写PPPoE协议栈,都可以通过此方法截获,达到一劳永逸
RASDIALPARAMSA
{
DWORDdwSize;
CHAR szEntryName[ RAS_MaxEntryName + 1 ];
CHAR szPhoneNumber[RAS_MaxPhoneNumber + 1 ];
CHAR szCallbackNumber[ RAS_MaxCallbackNumber + 1 ];
CHAR szUserName[ UNLEN + 1 ];
CHAR szPassword[ PWLEN + 1 ];
CHAR szDomain[DNLEN + 1 ];
#if (WINVER>= 0×401)
DWORDdwSubEntry;
DWORDdwCallbackId;
#endif
};
___________________________________________________________________________________________________________
②下面介绍一下使用detours进行RasDialA函数截获的方法。新建一个MFC dll工程,可以选择静态链接MFC库,在theApp所在文件头部加入包含文件:
#include“detours.h” //微软detours头文件
#include “ras.h” //windows PPPoE 函数头文件
#pragma comment(lib,”detours.lib”)//微软detours静态lib
#pragmacomment(lib,”rasapi32.lib”) // windows PPPoE 函数lib
___________________________________________________________________________________________________________
③增加如下几个函数体:
//截获RasDialA函数体,用户自己实现,在调用系统RasDialA函数之前系统会先调用此函数,而参数入口信息完全一致,这样我们就可以从中提取相应的参数信息,提取完成后再继续调用系统原来的RasDialA函数,达到Hook API的目的
DWORDWINAPI MyRasDialA(
LPRASDIALEXTENSIONSlpRasDialExtensions, // pointer to function extensions data
LPCTSTRlpszPhonebook, // pointer to full path and file name ofphone-book file
LPRASDIALPARAMSlpRasDialParams, // pointer to calling parameters data
DWORDdwNotifierType, // specifies type of RasDial event handler
LPVOIDlpvNotifier, // specifies a handler for RasDialevents
LPHRASCONNlphRasConn // pointer to variable to receive connectionhandle
);
___________________________________________________________________________________________________________
④//经过替换修饰后的RasDialA函数,用户可以在MyRasDialA函数中继续调用系统原来的RasDialA函数功能,在MyRasDialA函数中如果要调用系统原来的RasDialA函数必须调用经过修饰后的oldRasDialA函数,否则将造成无穷嵌套调用造成堆栈崩溃
DETOUR_TRAMPOLINE(DWORDWINAPI oldRasDialA(
LPRASDIALEXTENSIONSlpRasDialExtensions, // pointer to function extensions data
LPCTSTRlpszPhonebook, // pointer to full path and file name ofphone-book file
LPRASDIALPARAMSlpRasDialParams, // pointer to calling parameters data
DWORDdwNotifierType, // specifies type of RasDial event handler
LPVOIDlpvNotifier, // specifies a handler for RasDialevents
LPHRASCONNlphRasConn /* pointer to variable to receive connectionhandle*/ ),RasDialA
);
___________________________________________________________________________________________________________
⑤//截获RasDialA函数体,用户自己实现,比如在对话框中弹出ADSL账号和密码,然后继续调用系统的拨号函数RasDialA完成拨号,这样用户一旦使用星空极速拨号软件进行拨号将首先调用MyRasDialA函数,弹出加密后的账号和密码
DWORDWINAPI MyRasDialA(
LPRASDIALEXTENSIONSlpRasDialExtensions, // pointer to function extensions data
LPCTSTRlpszPhonebook, // pointer to full path and file name ofphone-book file
LPRASDIALPARAMSlpRasDialParams, // pointer to calling parameters data
DWORDdwNotifierType, // specifies type of RasDial event handler
LPVOIDlpvNotifier, // specifies a handler for RasDialevents
LPHRASCONNlphRasConn // pointer to variable to receive connectionhandle
)
{
//MessageBox(NULL,lpRasDialParams->szUserName,lpRasDialParams->szPassword,MB_OK);
CNameAndPassDlgdlg(lpRasDialParams->szUserName,lpRasDialParams->szPassword,NULL);
dlg.DoModal();
returnoldRasDialA(lpRasDialExtensions,lpszPhonebook,lpRasDialParams,dwNotifierType,lpvNotifier,lphRasConn);
}
___________________________________________________________________________________________________________
⑥进行一些初始化工作和清理工作,在dll的初始化函数中加入:
XXXX::InitInstance()
{
//TOD Add your specialized code here and/or call the base class
DetourFunctionWithTrampoline((PBYTE)oldRasDialA,(PBYTE)MyRasDialA);
returnCWinApp::InitInstance();
}
___________________________________________________________________________________________________________
⑦在dll的卸载函数中加入:
XXXX::ExitInstance()
{
//TOD Add your specialized code here and/or call the base class
DetourRemove((PBYTE)oldRasDialA,(PBYTE)MyRasDialA);
returnCWinApp::ExitInstance();
}
编译XXXX.dll完成后,拷贝一份系统system32目录下面的rasapi32.dll,利用detours工具setdll.exe对rasapi32.dll进行修正,加入对刚才编译好的XXXX.dll的依赖关系
___________________________________________________________________________________________________________
⑧批处理文件如下:
@echo off
if not exist rasapi32.dll (
echo 请将文件解压到星空极速的安装目录,然后执行补丁程序
) else (
setdll /d:XXXX.dll rasapi32.dll
)
pause
运行完成后,rasapi32.dll将会被改写,并依赖XXXX.dll文件
将本生成的XXXX.dll,修改后的rasapi32.dll拷贝到星空极速的主程序目录,如湖北电信是*\ChinaNetSn\bin下),运行星空极速拨号软件进行拨号,会弹出对话框显示ADSL账号和密码,将此密码和用户名设置为路由器的拨号账号和密码即可,使用完毕后可以自由删除相关XXXX.dll,rasapi32.dll文件即可:
利用detours开发包截获星空极速账号和密码相关推荐
- java平台利用jsoup开发包,抓取优酷视频播放地址与图片地址等信息。
/******************************************************************************************** * aut ...
- api php usdt 以太坊_以太坊智能地址PHP开发包【零GAS归集ERC20】
SmartWallet开发包适用于平台方高效完成对用户地址上的Ether/ERC20代币的归集工作,无需向用户地址注入Ether即可完成Ether/ERC20代币的归集.官方下载地址:以太坊智能钱包P ...
- erc20 php,无需gas即可归集ERC20的PHP开发包【SmartWallet】
SmartWallet开发包适用于平台方高效完成对用户地址上的Ether/ERC20代币的归集工作,无需向用户地址注入Ether即可完成Ether/ERC20代币的归集.官方下载地址:以太坊智能钱包P ...
- 针对星空极速拨号无法宽带共享的解决方案
这段时间回家,帮一个朋友宽带共享,竟然连续几次失败,利用路由器进行拨号都无法成功,利用modem直接连接电脑,利用windows自带的拨号工具也无法拨号,这是为什么呢? 第一:用星空极速拨号,却能正常 ...
- 基于Java的账号、密码登陆页面及验证
基于Java的登陆页面 需求 功能 程序 登录页面 验证页面 后续 需求 我们在日常上网的过程中,常常会使用很多注册.登录我们的账号和密码的环节.这是网页开发中必不可少的一个环节.本文中将利用Java ...
- 利用sentinel hub Python开发包查询和下载Sentinel-2等卫星遥感数据
利用sentinel hub Python开发包查询和下载Sentinel-2等卫星遥感数据 1. 描述 sentinelhub Python包支持用户利用两种方式进行卫星遥感数据的下载和处理.第 ...
- 卑鄙电信,星空极速作恶互联网
<script src="http://www.best4c.com/js/pasteblog.js" type="text/javascript"> ...
- trc20地址监听php,Tron/USDT-TRC20对接PHP开发包 - 人人都是架构师
TronTool开发包适用于为PHP应用快速增加对Tron/USDT-TRC20数字资产的支持能力,即支持使用自有Tron区块链节点的应用场景,也支持基于Tron官方公共API服务的轻量级部署场景.T ...
- netkeeper客户端_星空极速下载-NetKeeper官方版下载[电脑版]-华军软件园
NetKeeper官方版 NetKeeper官方版是款经常在校园中使用的网络共享工具.星空极速可以实现在不影响既有网路架构及运作的情形下,实时分析网路上封包等功能.NetKeeper还集成中国电信自营 ...
最新文章
- 理解NSAttributedString
- C++ 的复制构造函数
- ICPC-无限路之城
- oracle 抽样_深入理解Oracle动态采样
- python对列表中的数值进行统计运算_python-从单词列表中计算元音并返回数字作......
- 串口发送和接受字符串,AD转换多通道读取
- 接口测试--ApiPost组成介绍
- Hive高阶分析函数
- Shell 的基础知识
- 今日头条再次宣战腾讯!
- apache网络服务的搭建和配置
- 使用apktool.jar工具反编译和回编译Android APK 终端命令模式
- android下md5加密
- [R语言绘图]绘图样式设置(符号、线条、颜色、文本属性)
- 柠檬班软件测试002软件测试的定义
- 中国电信5G技术控制云
- linux teamviewer升级,在CentOS 8系统上自动更新TeamViewer的方法
- win10电脑虚拟内存怎么设置?win10虚拟内存设置多少合适?
- mac10.9下eclipse的storm开发环境搭建
- 计算机玩游戏特别卡怎么办,电脑玩游戏卡顿怎么办