如何用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拨号相关推荐

  1. 【网络工程】9、实操-万达酒店综合项目(三)

    接上篇<8.实操-万达酒店综合项目(三)> 之前我们按照项目要求进行模拟拓扑的构建实操,完成了办公区部分的网络配置,本篇我们来继续完成其他区域的网络配置. 一.总体架构情况 按照之前项目需 ...

  2. 树莓派综合项目2:智能小车(三)无线电遥控

    一.介绍   阅读本篇文章前建议先参考前期文章:   树莓派基础实验34:L298N模块驱动直流电机实验   树莓派综合项目2:智能小车(一)四轮驱动   树莓派综合项目2:智能小车(二)tkinte ...

  3. 闪讯利用openwrt路由器拨号教程(三)

    4.制作openwrt闪讯插件--修改与编译    这里特别感谢https://github.com/miao1007提供闪讯插件源码.    交叉编译环境搭建好后,我们开始制作闪讯拨号的插件.首先我 ...

  4. 综合项目三----包裹的旅行

    [问题描述] 包裹的旅行综合项目:从解决实际问题出发,以"包裹的旅行"项目进行研究,通过"购物体验""订单管理""物流运输&quo ...

  5. 基于 abp vNext 和 .NET Core 开发博客项目 - Blazor 实战系列(三)

    基于 abp vNext 和 .NET Core 开发博客项目 - Blazor 实战系列(三) 转载于:https://github.com/Meowv/Blog 上一篇完成了博客的主题切换,菜单和 ...

  6. 基于 abp vNext 和 .NET Core 开发博客项目 - 定时任务最佳实战(三)

    基于 abp vNext 和 .NET Core 开发博客项目 - 定时任务最佳实战(三) 转载于:https://github.com/Meowv/Blog 本篇继续围绕抓取完成后的操作做一个提醒. ...

  7. 树莓派python交互界面实例_树莓派综合项目2:智能小车(二)tkinter图形界面控制...

    一.介绍 树莓派综合项目2:智能小车(一)四轮驱动中,实现了代码输入对四个电机的简单控制,本章将使用Python 的图形开发界面的库--Tkinter 模块(Tk 接口),编写本地运行的图形界面,控制 ...

  8. 大数据架构师——音乐数据中心平台离线数仓综合项目(一)

    文章目录 音乐数据中心平台离线数仓综合项目 数据库与ER建模 数据库 数据库三范式 第一范式(1NF):原子性,字段不可分 第二范式(2NF):唯一性,一个表只能说明一个事物,有主键,非主键字段依赖主 ...

  9. JavaSE综合项目演练

    光阴似箭日月如梭,大家学习已经有了一段时间了,转眼间,从刚开始如何配置JDK已经到了现在快学完网络编程了.学了这么多,眼看就要进入下一个阶段了,数据库编程了,那么在进入下个阶段前,我们来完成一个综合性 ...

  10. Android App 可以定时启动! 并且完成短信自动发送获取内容功能 (以获取闪讯密码为例 大学宿舍宽带)

    接上一篇:android 发送短信sendTextMessage()真机运行报错,退出,在已申请SEND_SMS权限的情况下Android send SMS not working uid ... 重 ...

最新文章

  1. python要学多久-零基础python培训需要学多久?
  2. mysql提示符prompt的用法
  3. 新建Angular2项目
  4. 阿里百度盛大等全业务布局揭秘
  5. sklear多项式回归
  6. Linux学习:文件属性函数
  7. cenos 安装 phpredis 扩展
  8. arguments使用
  9. 自定义背景_新版快绘精选:自定义背景墙 | 吊顶 | 云渲染滤镜升级
  10. vue读取终端硬件信息_自助服务终端机主要特点及规格
  11. xml文件修改逆向android,Android逆向重置版(2)—起源
  12. 百度人脸识别离线SDK_Android版_在线激活失败:not enough param_解决方案---百度人脸识别技术应用005
  13. 解决 sublime text3 运行python文件无法input的问题
  14. PCL之ubuntu安装CloudCompare
  15. 大牛讲解信号与系统(通俗易懂)
  16. AWS云计算题目总结
  17. java 读取ssh2协议得到的数据_Java通过SSH2协议执行远程Shell脚本
  18. db2 ? 22018
  19. python pip 设置代理
  20. 第一章 卡耐基应付对手的方法 二 正视别人的批评

热门文章

  1. Clock saver for Mac(博朗手表时钟屏保)
  2. 字节教育开辟新业务线,推出“闪电搜题”App可拍题和自习
  3. 从IAP升级到涂鸦OTA升级介绍 (下)
  4. 信息系统项目管理师---综合类计算
  5. 重磅白皮书发布,华为持续引领未来智慧园区建设新模式
  6. 圆运动和椭圆运动公式
  7. 清华大学计算机考研信息汇总
  8. python+pyecharts实现中国省份地图可视化
  9. 善领声音编辑器,修改search.dat完美启动静音
  10. 台湾瑞昱Realtek RTL8153-VC-CG USB3.0 to lan简介