下载安卓APP箭头
箭头给我发消息

客服QQ:3315713922

简析关于Android VPN 编程方法

作者:课课家教育     来源: http://www.kokojia.com点击数:2636发布时间: 2016-04-07 10:22:40

标签: androidvpnapktool

      Android开发是时下非常吃香的一个岗位,毕竟当下 Android占市场比例份量那么大,使用 Android操作系统的人满大街都是,那么学习 Android开发时也要学习VPN的相关知识,本文主要讲关于Android VPN 的编程。

简析关于Android VPN 编程方法_android_vpn_apktool_课课家

      VPN的英文全称是“Virtual Private Network”,翻译过来就是“虚拟专用网络”。顾名思义,虚拟专用网络我们可以把它理解成是虚拟出来的企业内部专线。它可以通过特殊的加密的通讯协议在连接在Internet上的位于不同地方的两个或多个企业内部网之间建立一条专有的通讯线路,就好比是架设了一条专线一样,但是它并不需要真正的去铺设光缆之类的物理线路。这就好比去电信局申请专线,但是不用给铺设线路的费用,也不用购买路由器等硬件设备。VPN技术原是路由器具有的重要技术之一,目前在交换机,防火墙设备或Windows2000等软件里也都支持VPN功能,一句话,VPN的核心就是在利用公共网络建立虚拟私有网。虚拟专用网(VPN)被定义为通过一个公用网络(通常是因特网)建立一个临时的、安全的连接,是一条穿过混乱的公用网络的安全、稳定的隧道。虚拟专用网是对企业公司分支机构、商业伙伴及供应商同公司的内部网建立可信的安全连接,并保证数据的安全传输。

  关于Android VPN编程,网上的资料比较少,本人最近有一个关于在Android平台下开发VPN 客户端的项目,在项目刚开始的时候,进行比较艰难,主要是android(4.0之前)的VPN领域鲜有API可供直接调用,也没有官方的说明文档。经过将近一个星期的研究,终于有些头绪,在此本人愿将一些经验与大家共享。

  为了研究android vpn,本人下载一些apk,通过反编译工具apktool,查看了一些代码片段,虽然反编译之后的代码不易于阅读,但是还是提供了一些有用的信息。通过对apk的debug,本人发现很多apk都引入了xinkvpn开发包。非常感谢xinkvpn的开发者,抽取并封装了Android系统不对外访问的API,并提供了完整的代码,到目前为止可能对于SDK10之后的访问还存在问题,对于SDK14之前可以在此基础上进行一些修改,对于SDK14(Android4.0)后,则无法调用到公开的Android API接口,因此需要另外的研究。

  需要注意的是,对于android 4.0之前的版本,如果采用l2tp secret,ipsec 方式,则需要获得root权限,并写入Keystore;对于PPTP和L2tp则不需要,但是因为其采用的是非加密方式,因此安全性要差一些。

  关于xinkvpn,有兴趣的读者可以到网上进行下载并运行,在此不再重复。

  本人的项目要求是用户不需要输入用户名/密码/服务器IP等和VPN设置有关的参数,就可以直接连接到VPN。因此链接VPN的操作要在后台进行,这样就要对账户进行封装。当然本文的代码也可以供非此类情况的使用。

  首先建立一个保存VPN Profile的抽象类,供PPTP,L2tp,L2tpIpsecPsk等扩展,此抽象类如下

    PPTP的扩展如下

  请自行填入关于PPTP的账户信息,如果没有的话,可以到网上找一个VPN的免费代理,申请帐号。

  L2TP IP Sec的代码如下,

  请自行填入关于账户的相关信息。

  建立好账户的类之后,就是把账户存入Profile,

  接着是连接到账户

  最后需要对连接的状态进行监听,

     本文主要讲了保存VPN Profile的抽象类,供PPTP,L2tp,L2tpIpsecPsk等扩展的步骤,从而实现Android VPN 编程。

赞(0)
踩(0)
分享到:
华为认证网络工程师 HCIE直播课视频教程