综合项目之闪讯破解(三)之 如何用C++实现PPPOE拨号
如何用C++实现PPPOE拨号
1)CMD命令行方式
拨号本是一件很简单的事情,CMD命令行直接搞定,但我在第一篇文章中提到过,闪讯的真实用户名的前两位是换行符‘\n’和 ‘\r’,这两个字符是不可能在命令行中打出来的(这正是闪讯之所以限制我们的原因),所以这个方法行不通。
2)使用Rasapi32.dll中的函数来进行PPPOE拨号
函数名:RasDial
函数具体功能见:https://msdn.microsoft.com/en-us/library/windows/desktop/aa377004(v=vs.85).aspx
直接上代码
# include <ras.h>
# include <windows.h>
#pragma comment(lib, "Rasapi32.lib")
BOOL DailPPPOE(char* PPPOENumber, char* UserName, char* UserPassWard)
{RASDIALPARAMSA RasPragma = { 0 };HRASCONN m_hRasConn = NULL;RasPragma.dwSize = 1064;//这个非常重要strcpy(RasPragma.szEntryName, PPPOENumber); //set PPPOE Dial up entry nameRasPragma.szEntryName[1] = '\0';strcpy(RasPragma.szUserName, UserName); //set PPPOE Dial up user nameRasPragma.szUserName[29] = '\0';strcpy(RasPragma.szPassword, UserPassWard); //set PPPOE Dial up passwordRasPragma.szPassword[6] = '\0';BOOL ret = RasDialA(NULL, NULL, &RasPragma, 0L, NULL, &m_hRasConn);return ret;
}
在这里我必须强调一下RasPragma.dwSize = 1064;这一段代码,这段代码的实际意义是取得RasPragma结构体的大小,这个是整个拨号代码中最重要的一段。我们一般在网上搜到的RasDial拨号代码一般是”RasPragma.dwSize =sizeof(RasPragma);”,这段代码在WIN8/10上使用都没有问题,但在WIN7上拨号就会一直返回错误632(结构大小错误),这就是为什么在WIN7上拨号总是失败的原因,具体为什么要让RasPragma大小等于1064我也不是很清楚,其实当时我也是被这个问题困扰了许久,后来网上下了一个大神的拨号程序,他的程序可以在WIN7上拨号,于是我就用IDA反编译看到了他的拨号代码,注意下图红框部分,他直接让RasPragma.dwSize =1064了,我按着他的尝试了一下,直接OK。
另一个问题就是大神用的是RasDialA这个函数,我在ras.h头文件中找了一下还发现了RasDialW这个函数,他俩的区别在于传入变量名称的字符编码方式的不同,功能都一样,区别见下图
其实VS已经自动的帮我们选用了一种编码方式UNICODE编码,所以我们一般写RasDial其使用的是RasDialW这个函数,见下图
虽说两者W和A功能相同但还是要注意传入变量的结构体还是有区别的,编程的时候注意一下就OK了。
经过上面的处理,我们只要把用户名和密码都以Char*传进去就可以了,PPPOE拨号问题也就迎刃而解了。
BY Sunday丶若雪 转载请注明出处
综合项目之闪讯破解(三)之 如何用C++实现PPPOE拨号相关推荐
- 【网络工程】9、实操-万达酒店综合项目(三)
接上篇<8.实操-万达酒店综合项目(三)> 之前我们按照项目要求进行模拟拓扑的构建实操,完成了办公区部分的网络配置,本篇我们来继续完成其他区域的网络配置. 一.总体架构情况 按照之前项目需 ...
- 树莓派综合项目2:智能小车(三)无线电遥控
一.介绍 阅读本篇文章前建议先参考前期文章: 树莓派基础实验34:L298N模块驱动直流电机实验 树莓派综合项目2:智能小车(一)四轮驱动 树莓派综合项目2:智能小车(二)tkinte ...
- 闪讯利用openwrt路由器拨号教程(三)
4.制作openwrt闪讯插件--修改与编译 这里特别感谢https://github.com/miao1007提供闪讯插件源码. 交叉编译环境搭建好后,我们开始制作闪讯拨号的插件.首先我 ...
- 综合项目三----包裹的旅行
[问题描述] 包裹的旅行综合项目:从解决实际问题出发,以"包裹的旅行"项目进行研究,通过"购物体验""订单管理""物流运输&quo ...
- 基于 abp vNext 和 .NET Core 开发博客项目 - Blazor 实战系列(三)
基于 abp vNext 和 .NET Core 开发博客项目 - Blazor 实战系列(三) 转载于:https://github.com/Meowv/Blog 上一篇完成了博客的主题切换,菜单和 ...
- 基于 abp vNext 和 .NET Core 开发博客项目 - 定时任务最佳实战(三)
基于 abp vNext 和 .NET Core 开发博客项目 - 定时任务最佳实战(三) 转载于:https://github.com/Meowv/Blog 本篇继续围绕抓取完成后的操作做一个提醒. ...
- 树莓派python交互界面实例_树莓派综合项目2:智能小车(二)tkinter图形界面控制...
一.介绍 树莓派综合项目2:智能小车(一)四轮驱动中,实现了代码输入对四个电机的简单控制,本章将使用Python 的图形开发界面的库--Tkinter 模块(Tk 接口),编写本地运行的图形界面,控制 ...
- 大数据架构师——音乐数据中心平台离线数仓综合项目(一)
文章目录 音乐数据中心平台离线数仓综合项目 数据库与ER建模 数据库 数据库三范式 第一范式(1NF):原子性,字段不可分 第二范式(2NF):唯一性,一个表只能说明一个事物,有主键,非主键字段依赖主 ...
- JavaSE综合项目演练
光阴似箭日月如梭,大家学习已经有了一段时间了,转眼间,从刚开始如何配置JDK已经到了现在快学完网络编程了.学了这么多,眼看就要进入下一个阶段了,数据库编程了,那么在进入下个阶段前,我们来完成一个综合性 ...
- Android App 可以定时启动! 并且完成短信自动发送获取内容功能 (以获取闪讯密码为例 大学宿舍宽带)
接上一篇:android 发送短信sendTextMessage()真机运行报错,退出,在已申请SEND_SMS权限的情况下Android send SMS not working uid ... 重 ...
最新文章
- python要学多久-零基础python培训需要学多久?
- mysql提示符prompt的用法
- 新建Angular2项目
- 阿里百度盛大等全业务布局揭秘
- sklear多项式回归
- Linux学习:文件属性函数
- cenos 安装 phpredis 扩展
- arguments使用
- 自定义背景_新版快绘精选:自定义背景墙 | 吊顶 | 云渲染滤镜升级
- vue读取终端硬件信息_自助服务终端机主要特点及规格
- xml文件修改逆向android,Android逆向重置版(2)—起源
- 百度人脸识别离线SDK_Android版_在线激活失败:not enough param_解决方案---百度人脸识别技术应用005
- 解决 sublime text3 运行python文件无法input的问题
- PCL之ubuntu安装CloudCompare
- 大牛讲解信号与系统(通俗易懂)
- AWS云计算题目总结
- java 读取ssh2协议得到的数据_Java通过SSH2协议执行远程Shell脚本
- db2 ? 22018
- python pip 设置代理
- 第一章 卡耐基应付对手的方法 二 正视别人的批评
热门文章
- Clock saver for Mac(博朗手表时钟屏保)
- 字节教育开辟新业务线,推出“闪电搜题”App可拍题和自习
- 从IAP升级到涂鸦OTA升级介绍 (下)
- 信息系统项目管理师---综合类计算
- 重磅白皮书发布,华为持续引领未来智慧园区建设新模式
- 圆运动和椭圆运动公式
- 清华大学计算机考研信息汇总
- python+pyecharts实现中国省份地图可视化
- 善领声音编辑器,修改search.dat完美启动静音
- 台湾瑞昱Realtek RTL8153-VC-CG USB3.0 to lan简介