一、在win10中搭建go编译环境
1.go for windows下载地址:
下载完成后,安装(go1.13.5.windows-amd64. msi )
2.设置go 环境变量 (GOROOT, GOPATH,GOBIN)
- 检查go的运行环境
二、搭建go的编辑环境
使用sublime text 3作为编辑器
- 下载sublime text3 :
- 破解sublime text3: 备份sublime_text. exe文件 ,用uedit打开sublime_text.exe文件, 找到97 94 0D,修改为00 00 00报文替换
Help -> Enter License输入:
—– BEGIN LICENSE —–
TwitterInc
200 User License
EA7E-890007
1D77F72E 390CDD93 4DCBA022 FAF60790
61AA12C0 A37081C5 D0316412 4584D136
94D7F7D4 95BC8C1C 527DA828 560BB037
D1EDDD8C AE7B379F 50C9D69D B35179EF
2FE898C4 8E4277A8 555CE714 E1FB0E43
D5D52613 C3D12E98 BC49967F 7652EED2
9D2D2E61 67610860 6D338B72 5CF95C69
E36B85CC 84991F19 7575D828 470A92AB
—— END LICENSE ——
- github.com中下载 GoSublime(通过git clone下载到本地解压后,放到sublime p AC kege目录下
三、 Portal / Radius 模拟器
通过监听指定端口( tcp 使用pcap抓取 syn 报文,udp采用net.ListenUDP), 收到报文后,通过原子操作增加接收计数,然后,使用net.DialUDP (全局配置,从而节约 socket 数目,达到并发目的)向认证AC发起CoA Ping和CoA Request报文,同时监听接收的CoA ACK报文,原子操作增加统计计数。
当AC收到CoA Request后,向Radius Sever发起 Accept request(udp 1812), Radius Server回应Accept后,AC发起Accounting start Request(udp 1813), Radius Server同样回应Accept后,AC向Portal发起CoA ACK完成整个认证过程
几个关键代码和算法:
- 命令行参数解析
通过flag包中进行命令行解析
import "flag"
- 获得本地所有的接口信息,比对IP地址,返回正确的接口信息给pcap进行 抓包
- 报文抓取,每一个报文触发一次CoA Ping和CoA Request
- Coa Request中的 authentication 算法
其中 header 的是CoA报文头部, authenticationBinStr是16字节的hex字符串(“0000…”), secretBinStr为共享秘钥(AC与Portal之间的共享秘钥)的hex字符串.
对于Radius报文,计算方法一样,只是authenticationBinStr将是接收报文中的authentication字段(16字节)。
- 用户密码计算
- 通过go命令,实现多线程并发
//使用全部的CPU
runtime .GOMAXPROCS(runtime.NumCPU())
四、对未知对象的使用属性和方法查看
import “reflect”