简介

目的: 通过代码实现移动设备的上下操作

上线操作

调用方式

public static void main(String[] args) {ChapAuthTest();
}/*** 上线请求测试*/
public static void ChapAuthTest() {new SkspruceChapAuth("192.168.1.199", 2000, "192.168.1.200", "zyt@siganet", "siganet", Utils.getRandom(65025, 0)).start();
}

SkspruceChapAuth.java

package tlv.socket;import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;
import java.net.UnknownHostException;
import java.util.ArrayList;
import java.util.List;import tlv.bean.Attr;
import tlv.bean.TlvHwBean;
import tlv.enums.TlvType;
import tlv.tools.TlvSkspruce;/*** 西加云杉700E设备认证* @author yet**/
public class SkspruceChapAuth extends Thread {private DatagramSocket s;private InetAddress hostAddress;private byte[] buf = new byte[1000];private DatagramPacket dp = new DatagramPacket(buf, buf.length);private byte[] bufRe = new byte[1000];private DatagramPacket dpRe = new DatagramPacket(bufRe, bufRe.length);private int port;private String userIp;private int serialNo;private String username;private String password;public void run() {try {s.send(Dgram.toDatagram(ReqChallenge(), hostAddress, port));s.receive(dp);TlvHwBean b = parse(dp.getData());if(b.getErrCode()==0){System.out.println("获取Challenge成功");System.out.println("开始发送认证");s.send(Dgram.toDatagram(ReqAuth(b.getReqId()), hostAddress, port));s.receive(dpRe);TlvHwBean bre = parse(dpRe.getData());if(bre.getErrCode()==0){System.out.println("用户认证成功");}else{System.out.println("用户认证失败");}}else{System.out.println("获取Challenge失败");}} catch (IOException e) {e.printStackTrace();System.exit(1);}}/*** 生成Challenge的请求* @return*/public byte[] ReqChallenge() {List<Attr> attr = new ArrayList<Attr>();Attr a = new Attr(1, username.getBytes());Attr b = new Attr(2, password.getBytes());attr.add(a);attr.add(b);return TlvSkspruce.buildSkspruce(TlvType.ReqChallenge,serialNo,0, userIp, attr);}/*** 生成认证请求* @param reqId* @return*/private byte[] ReqAuth(int reqId){List<Attr> attr = new ArrayList<Attr>();Attr a = new Attr(1, username.getBytes());Attr b = new Attr(2, password.getBytes());attr.add(a);attr.add(b);return TlvSkspruce.buildSkspruce(TlvType.ReqAuth,serialNo, reqId, userIp, attr);}/*** 将byte[]转为TlvHwBean* @param a* @return*/private TlvHwBean parse(byte[] a){return TlvSkspruce.parseHw(a);}/*** @param ip AC的ip地址* @param port AC监听的端口* @param userIp 用户内网ip* @param username 用户名* @param password 密码* @param serialNo 一段时间内唯一的序列号*/public SkspruceChapAuth(String ip, int port,String userIp,String username,String password,int serialNo) {this.port = port;this.userIp = userIp;this.serialNo = serialNo;this.username = username;this.password = password;try {s = new DatagramSocket();hostAddress = InetAddress.getByName(ip);} catch (UnknownHostException e) {System.err.println("Cannot find host");System.exit(1);} catch (SocketException e) {System.err.println("Can't open socket");e.printStackTrace();System.exit(1);}System.out.println("请求开始");}
}

下线操作

调用方式

public static void main(String[] args) {ChapLogoutTest();
}/*** 下线请求测试*/
public static void ChapLogoutTest() {new SkspruceChapLogout("192.168.1.199", 2000, "192.168.1.200", "zyt", "123456", Utils.getRandom(65025, 0)).start();}

SkspruceChapLogout.java

package tlv.socket;import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;
import java.net.UnknownHostException;
import java.util.ArrayList;
import java.util.List;
import tlv.bean.Attr;
import tlv.bean.TlvHwBean;
import tlv.enums.TlvType;
import tlv.tools.TlvSkspruce;/*** 西加云杉700E设备请求下线* @author yet**/
public class SkspruceChapLogout extends Thread {private DatagramSocket s;private InetAddress hostAddress;private byte[] buf = new byte[1000];private DatagramPacket dp = new DatagramPacket(buf, buf.length);private int port;private String userIp;private int serialNo;private String username;private String password;public void run() {try {s.send(Dgram.toDatagram(HwReqLogout(), hostAddress, port));s.receive(dp);TlvHwBean b = parse(dp.getData());if(b.getErrCode()==0){System.out.println("下线成功");}else{System.out.println("下线失败");}} catch (IOException e) {e.printStackTrace();System.exit(1);}}/*** 生成强制下线请求* @return*/private byte[] HwReqLogout(){List<Attr> attr = new ArrayList<Attr>();Attr a = new Attr(1, username.getBytes());Attr b = new Attr(2, password.getBytes());attr.add(a);attr.add(b);return TlvSkspruce.buildSkspruce(TlvType.ReqLogout,serialNo, 00, userIp, attr);}/*** 将byte[]转为TlvHwBean* @param a* @return*/private TlvHwBean parse(byte[] a){return TlvSkspruce.parseHw(a);}/*** * @param ip AC的ip地址* @param port AC监听的端口* @param userIp 用户内网ip*/public SkspruceChapLogout(String ip, int port,String userIp,String username,String password,int serialNo) {this.port = port;this.userIp = userIp;this.serialNo = serialNo;this.username = username;this.password = password;try {s = new DatagramSocket();hostAddress = InetAddress.getByName(ip);} catch (UnknownHostException e) {System.err.println("Cannot find host");System.exit(1);} catch (SocketException e) {System.err.println("Can't open socket");e.printStackTrace();System.exit(1);}System.out.println("请求开始");}
}

西加云杉700E设备AAA认证之移动设备的上下线操作相关推荐

  1. 西加云杉700E设备AAA认证目录

    博客目录 西加云杉700E设备AAA认证之基础配置 西加云杉700E设备AAA认证之Portal页面弹出 西加云杉700E设备AAA认证之Portal服务器与AC的交互 西加云杉700E设备AAA认证 ...

  2. 西加云杉700E设备AAA认证之Radius服务器与Mysql数据库交互

    简介 目的: AC向FreeRadius服务器发送验证请求时,Radius服务器与mysql数据库认证后通过认证请求,使请求的用户可以上网. 文章结构 FreeRadius配置 Mysql数据库配置 ...

  3. 西加云杉700E设备AAA认证之基础配置

    简介 该配置使用的是本地转发模式 拓扑图 配置流程 配置vlan.ip.端口.路由.防火墙 配置dhcp地址池 配置wlan 配置ap模板 配置vlan.端口.路由.防火墙 vlan vlan dat ...

  4. Packet Tracer - 在思科路由器上配置 AAA 认证

    Packet Tracer - 在思科路由器上配置 AAA 认证 拓扑图 地址分配表 设备 接口 IP 地址 子网掩码 默认网关 交换机端口 R1 G0/1 192.168.1.1 255.255.2 ...

  5. my cloud 验证服务器,西数MyCloud设备存在认证绕过漏洞CVE-2018-17153 - 嘶吼 RoarTalk – 回归最本质的信息安全,互联网安全新媒体,4hou.com...

    研究人员发现西数MyCloud network-attached storage(网络存储器,NAS)设备存在漏洞,攻击者利用该漏洞可以绕过认证机制,并以管理员权限控制设备.该漏洞被发现已经有1年半时 ...

  6. 随笔:使用Windows搭建AAA认证服务器

    使用Windows搭建AAA认证服务器 前言: 一.AD域安装 1.添加角色和功能 2.添加角色和功能 3.添加角色和特征 4.服务器池选取 5.添加AD域服务,同时添加所需功能 6.根据提示操作,下 ...

  7. linux系统下freeradius AAA认证服务器创建

    网上也有很多关于freeradius服务器的搭建过程,笔者试过很多次,但都无功而返,原因是他们的介绍过于笼统,即使一步不差的按照他们的方法进行搭建,也是漏洞百出,错误连篇.因此笔者写下这篇博文,以供大 ...

  8. 详解Cisco ACS AAA认证

    详解Cisco ACS AAA认证 近来,有些同学会问到关于AAA认证的问题,以及cisco ACS如何使用,那么今天我们就主要来讲一下关于这方面的知识. AAA代表Authentication.Au ...

  9. AAA认证、授权、计费

    AAA是验证.授权和记账(Authentication.Authorization.Accounting )三个英文单词的简称.其主要目的是管理哪些用户可以访问网络服务器,具有访问权的用户可以得到哪些 ...

最新文章

  1. 如何让 zend studio 10 识别 Phalcon语法并且进行语法提示
  2. ava method org.apache.struts2.components.Form.getValidators(String) threw an exception when invoke
  3. SAFESEH 映像的模块不安全
  4. 【总结】找到自适合的学习方法
  5. Linux上Libevent的安装
  6. [UWP]做个调皮的BusyIndicator
  7. 窥探Swift之新添数据类型元组与可选值
  8. matlab gui期末设计,MATLABGUI课程设计期末大作业湖南理工学院
  9. hdu 5437 Alisha’s Party 优先队列
  10. 单片机原理及应用课程设计
  11. 路遥《平凡的世界》读后感
  12. 乌龟git安装和使用
  13. Python之pip安装出现报错ERROR: Cannot unpack file
  14. html网页挂马,浏览器安全之网页挂马实战 ——合天网安实验室学习笔记
  15. 如何清除系统垃圾 介绍几大方法【图解】
  16. 【转载】英语动词过去式ed的发音规则
  17. 计算机基础1模拟题,计算机基础模拟题1(有答案)
  18. Excel导出带图片详解
  19. PIR热释电红外人体感应IC
  20. 分布式搜索elasticsearch搜索功能【深入】

热门文章

  1. echarts柱状图两列单位不同
  2. 王振2020-5-29笔记
  3. 读《杜拉拉升职记》的感受、还有摘录
  4. 皮克斯创始人之一约翰·拉塞特今年底将正式离职,他对于动画世界的贡献无法被磨灭
  5. 03_Shell 基础 - 环境变量配置文件
  6. 苹果炉石传说显示无法连接服务器,《炉石传说》无法连接到战网解决方法 无法连接请检查网络连接如何快速解决...
  7. 苹果炉石传说显示无法连接服务器,炉石传说无法连接请检查网络连接解决办法 无法连接战网怎么办?...
  8. Win10激活KMS
  9. 近七成企业不赚钱,汽车经销商如何跨越生死K线?
  10. 后台基础权限框架搭建实现[木字楠博客]