如何用C++建立PPPOE连接

之前我们把闪讯拨号的真实用户名通过特定算法得到了,密码闪讯是没有加密的,因此我们接下来就是建立一个PPPOE连接。通过程序代码建立PPPOE连接的方法有大概这么几种:

1)直接修改系统的PBK电话簿文件内容(只对WIN8和WIN10有效)

PBK电话簿路径C:\ProgramData\Microsoft\Network\Connections\Pbk\rasphone.pbk我们一般手动通过 控制面板\所有控制面板项\网络和共享中心\设置新的连接和网络来建立一个拨号连接,这种方式建立的网络连接的连接信息在WIN8/10中储存在这个PBK文件中,但在WIN7系统下就不管用了,WIN7的PPPOE连接信息并不依赖这个文件,所以你直接拿一个正确的PPPOE连接的信息去替换原来的PBK文件内容在WIN7中也是无效的,因此这种方式只能在WIN8/10中玩玩,因此这种方法兼容性太差 舍去。
下面是一个名称为0的PPPOE连接的PBK文件内容

[0]
Encoding=1
PBVersion=4
Type=5
AutoLogon=0
UseRasCredentials=1
LowDateTime=1569292672
HighDateTime=30552893
DialParamsUID=7955968
Guid=F80C6B8196921A4EAF308401972D3382
VpnStrategy=0
ExcludedProtocols=8
LcpExtensions=1
DataEncryption=0
SwCompression=0
NegotiateMultilinkAlways=1
SkipDoubleDialDialog=0
DialMode=0
OverridePref=15
RedialAttempts=0
RedialSeconds=0
IdleDisconnectSeconds=0
RedialOnLinkFailure=0
CallbackMode=0
CustomDialDll=
CustomDialFunc=
CustomRasDialDll=
ForceSecureCompartment=0
DisableIKENameEkuCheck=0
AuthenticateServer=0
ShareMsFilePrint=1
BindMsNetClient=1
SharedPhoneNumbers=0
GlobalDeviceSettings=0
PrerequisiteEntry=
PrerequisitePbk=
PreferredPort=PPPoE5-0
PreferredDevice=WAN Miniport (PPPOE)
PreferredBps=0
PreferredHwFlow=0
PreferredProtocol=0
PreferredCompression=0
PreferredSpeaker=0
PreferredMdmProtocol=0
PreviewUserPw=1
PreviewDomain=0
PreviewPhoneNumber=0
ShowDialingProgress=0
ShowMonitorIconInTaskBar=0
CustomAuthKey=0
AuthRestrictions=552
IpPrioritizeRemote=1
IpInterfaceMetric=0
IpHeaderCompression=0
IpAddress=0.0.0.0
IpDnsAddress=0.0.0.0
IpDns2Address=0.0.0.0
IpWinsAddress=0.0.0.0
IpWins2Address=0.0.0.0
IpAssign=1
IpNameAssign=1
IpDnsFlags=0
IpNBTFlags=1
TcpWindowSize=0
UseFlags=2
IpSecFlags=0
IpDnsSuffix=
Ipv6Assign=1
Ipv6Address=::
Ipv6PrefixLength=0
Ipv6PrioritizeRemote=0
Ipv6InterfaceMetric=0
Ipv6NameAssign=1
Ipv6DnsAddress=::
Ipv6Dns2Address=::
Ipv6Prefix=0000000000000000
Ipv6InterfaceId=0000000000000000
DisableClassBasedDefaultRoute=0
DisableMobility=0
NetworkOutageTime=0
ProvisionType=0
PreSharedKey=
CacheCredentials=0
NumCustomPolicy=0
NumEku=0
UseMachineRootCert=0
NumServers=0
NumRoutes=0
NumNrptRules=0
AutoTiggerCapable=0
NumAppIds=0
NumClassicAppIds=0
SecurityDescriptor=
ApnInfoProviderId=
ApnInfoUsername=
ApnInfoPassword=
ApnInfoAccessPoint=
ApnInfoAuthentication=1
ApnInfoCompression=0
WebPreAuth=
DisableDefaultDnsSuffixes=0
NumTrustedNetworks=0
NumDnsSearchSuffixes=0
PowershellCreatedProfile=0
ProxyFlags=0
ProxySettingsModified=0
ProvisioningAuthority=
AuthTypeOTP=0
GREKeyDefined=0
NumPerAppTrafficFilters=0
AlwaysOnCapable=0
PrivateNetwork=0NETCOMPONENTS=
ms_msclient=1
ms_server=1MEDIA=rastapi
Port=PPPoE5-0
Device=WAN Miniport (PPPOE)DEVICE=PPPoE
LastSelectedPhone=0
PromoteAlternates=0
TryNextAlternateOnFail=1

2)使用系统的rasphone.exe用VBS代码来建立PPPOE

rasphone.exe路径C:\WINDOWS\System32\rasphone.exe,启动它我们可以看到当前系统存在的所有PPPOE连接,也可以新建PPPOE连接,通过运行一段VBS代码

Set WshShell = CreateObject("WScript.Shell")
WshShell.Run("rasphone -a ""宽带连接X""")
WScript.Sleep 500
WshShell.SendKeys "R"
WScript.Sleep 20
WshShell.SendKeys "{ENTER}"
WScript.Sleep 20
WshShell.SendKeys "{ENTER}"
WScript.Sleep 20

把这段代码复制到记事本,后缀名改为.vbs双击运行即可,随后他就会帮我们建立一个名为“宽带连接X”的PPPOE连接,使用C#的Process启动它也可以,但不足的是他建立连接的时候要弹出对话窗口,因此这种方法背离了我们通过代码建立拨号连接的意图 也舍去。

3)使用Rasapi32.dll中的函数来建立PPPOE连接

函数名:RasSetEntryProperties
具体函数功能见https://msdn.microsoft.com/en-us/library/windows/desktop/aa377827
直接上代码

# include <ras.h>
# include <windows.h>
#pragma comment(lib, "Rasapi32.lib")
int __stdcall CreatePPPOE(int PPPOENumber)//传入PPPOE连接的数字名称
{LPRASENTRY lpRasEntry = NULL;DWORD cb = sizeof(RASENTRY);DWORD dwBufferSize = 0;DWORD dwRet = 0;// 取得entry的大小,这句是必须的,RasGetEntryProperties(NULL, L"", NULL, &dwBufferSize, NULL, NULL);if (dwBufferSize == 0)return -1;lpRasEntry = (LPRASENTRY)HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, dwBufferSize);if (lpRasEntry == NULL)return -2;ZeroMemory(lpRasEntry, sizeof(RASENTRY));lpRasEntry->dwSize = dwBufferSize;lpRasEntry->dwfOptions = RASEO_PreviewUserPw | RASEO_RemoteDefaultGateway; lpRasEntry->dwType = RASET_Broadband;lstrcpy(lpRasEntry->szDeviceType, RASDT_PPPoE);lstrcpy(lpRasEntry->szDeviceName, L"");lpRasEntry->dwfNetProtocols = RASNP_Ip;lpRasEntry->dwFramingProtocol = RASFP_Ppp;wchar_t  A[10];//PPPOE连接名称_itow_s(PPPOENumber, A, 10, 10);DWORD dwRul = ::RasDeleteEntry(NULL, A);//先删dwRet = RasSetEntryProperties(NULL, A, lpRasEntry, dwBufferSize, NULL, 0); // 创建连接HeapFree(GetProcessHeap(), 0, (LPVOID)lpRasEntry);if (dwRet != 0){return 3;}return 0;
}

这种方法掉用的是系统函数因此可以在WIN7/8/10上完美运行,而且不显示界面,非常稳定,最终选用了它。

BY Sunday丶若雪 转载请注明出处

综合项目之闪讯破解(二)之 如何用C++建立PPPOE连接相关推荐

  1. 火狐浏览器,访问腾讯云服务器的时候,出现建立安全连接失败的问题。

    在腾讯云上部署了一个服务器,听过服务器ip访问项目的时候,刚开始的时候,启动tomcat,是可以启动的,有进程的,但是访问的时候,会出现超时连接.后来想了想可能是端口的问题.在服务器上,开通了8080 ...

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

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

  3. 【网络工程】8、实操-万达酒店综合项目(二)

    接上篇<7.实操-万达酒店综合项目(一)> 之前我们讲解了酒店网络项目的整体需求文档,包括项目背景.总体架构设计以及网络功能域划分.配置标准.路由规划等.本篇我们就来按照项目要求进行模拟拓 ...

  4. 树莓派综合项目2:智能小车(二)tkinter图形界面控制

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

  5. 闪讯利用openwrt路由器拨号教程(二)

    2.制作openwrt闪讯插件的前奏--搭建openwrt简易交叉编译环境 在此特别感谢https://github.com/miao1007,提供相关源码. (1)搭建linux虚拟机(Ubuntu ...

  6. b2c项目基础架构分析(二)前端框架 以及补漏的第一篇名词解释

    b2c项目基础架构分析(二)前端框架 以及补漏的第一篇名词解释 继续上篇,上篇里忘记了也很重要的前端部分,今天的网站基本上是以一个启示页,然后少量的整页切换,大量的浏览器后台调用web服务局部.动态更 ...

  7. 利用用户行为数据——基于Spark平台的协同过滤实时电影推荐系统项目系列博客(二)

    系列文章目录 初识推荐系统--基于Spark平台的协同过滤实时电影推荐系统项目系列博客(一) 利用用户行为数据--基于Spark平台的协同过滤实时电影推荐系统项目系列博客(二) 项目主要效果展示--基 ...

  8. 关于学校闪讯的路由器使用

    **近期回了趟学校,折腾了下路由器,原本安装的是老毛子的固件,内置了闪讯插件,使用的时候勾选南昌的确的插件就可以直接登录netkeep. 然后想试试能不能多拨,所以切换回了潘多拉固件,但是潘多拉需要自 ...

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

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

  10. 闪讯路由器linux系统,Linux操作系统下连接闪讯的方法(支持有线与无线)

    一.前言 用过电信闪讯的同学都知道,闪讯没有开发Linux的客户端程序,所以这让很多玩Linux操作系统同时又是闪讯用户的同学很头疼,今天我就来介绍一下如何在Linux下连接闪讯网络,并且支持有线连接 ...

最新文章

  1. 看源码,我为什么推荐IDEA?
  2. 用python描述车_使用Python探索二手车市场(含代码)
  3. Android开发问题集锦
  4. 【Python】利用 pytesseract 识别图片中的数字
  5. [react] 使用React的memo和forwardRef包装的组件为什么提示children类型不对?
  6. 信息学奥赛C++语言:删除试题
  7. socketserver库的使用
  8. 打不过 Chrome 的 Firefox,我为什么要选择?
  9. 机房三维(3D)监控系统和机房可视化动力环境监控系统两者有什么特点?
  10. html中的分页条怎么写,html如何制作分页
  11. matlab互相关函数并画图,自相关函数和互相关函数的matlab计算和作图
  12. 冯·诺依曼理论的要点
  13. RT5350配置uboot 支持8M的Flash
  14. 江涛带你玩STM-CubeMx之OLED使用3线SPI和4线SPI驱动详解
  15. pyTorch入门(六)——实战Android Minist OpenCV手写数字识别(附源码地址)
  16. 常见的嵌入式操作系统
  17. 基于STM32的便携式多功能医用交互设备
  18. zookeeper的使用与集群搭建以及原理应用
  19. 计算机网络基本实训报告,计算机网络实训报告.doc
  20. Python获取秒级时间戳与毫秒级时间戳

热门文章

  1. 使用腾讯云发送短信 ---- 手把手教你搞定所有步骤
  2. IT成长日记(一)——字体
  3. RPLIDAR十分钟极速入门教程
  4. DHCP报文单播/广播分析
  5. 实验二.常用网络命令
  6. 计算机频率原理,频率计数器的工作原理和发展
  7. Excel快速实现中英文分列
  8. 什么是性能调优?性能调优的方法有哪些,流程是怎样的
  9. office办公哪个版本稳定好用
  10. Win10使用快捷键新建文件夹和.txt文本文档,提升工作效率,让你成为最靓的仔