php curl 登录 金智统一认证平台(Wisedu)

  • A+
所属分类:PHP

好久之前就已经把模拟登录学校统一认证系统的代码写了一遍了,今天突然想到分享一下分析流程。
php curl 登录 金智统一认证平台(Wisedu)
一般我都会先定位下 html 中表单的位置,看看参数
php curl 登录 金智统一认证平台(Wisedu)
然后随便输入个账号,在切换到密码框时可以看到它请求了 checkNeedCaptcha 这个接口
php curl 登录 金智统一认证平台(Wisedu)
很显然这就是判断是否需要验证码的接口,某一账号只有密码输错三次以上才会需要验证码
php curl 登录 金智统一认证平台(Wisedu)
随便输入密码后登录,返回 401,即验证失败
php curl 登录 金智统一认证平台(Wisedu)
查看参数,红框这四个显然是固定的,execution 在前面表单中有,可以直接获取,captcha 验证码可以先不管
那么就只剩下了 password 这一加密参数
php curl 登录 金智统一认证平台(Wisedu)
之前的表单中有 pwdEncryptSalt 这一盐值,显然与其有关
php curl 登录 金智统一认证平台(Wisedu)
查看 login.js
php curl 登录 金智统一认证平台(Wisedu)
php curl 登录 金智统一认证平台(Wisedu)
使用 pwdEncryptSalt 通过 encryptPassword 函数将密码框值加密,并置于 saltPassword 栏
php curl 登录 金智统一认证平台(Wisedu)
saltPassword 栏位置
php curl 登录 金智统一认证平台(Wisedu)
定位 encryptPassword 函数 在 encrypt.js 中,这里加密流程很直观 先在密码前拼接 64 位随机字符,然后使用 pwdEncryptSalt 作为 aesKey,以及随机 16 位字符作为 iv,使用 AES-128-CBC 标准进行加密,得到加密后密码
php curl 登录 金智统一认证平台(Wisedu)
这样我们就得到所有需要的参数了,然后就可以着手写代码了
首先访问登录页面,并从 header 中提取出 cookie 并从 html 中解析出所需参数,然后打包
php curl 登录 金智统一认证平台(Wisedu)
判断是否需要验证码,并将数据发送到登录页面 根据返回的头信息的 Location 判断是否登录成功,并提取 cookie
php curl 登录 金智统一认证平台(Wisedu)
函数注明:

self::get_url($path) // 得到 authserver 服务器url + $path 的地址
self::get_cookie($header) // 从 $header 头信息中提取 cookie
self::encrypt($pass, $salt) // 进行 AES 加密
self::request(string $url, array $param = [], array $headers = [], string $cookie = '')  // 自己写的 curl 请求函数

本文只做思路分享,白嫖代码什么的别想了,还是得自己研究研究哦

  • 我的微信
  • 这是我的微信扫一扫
  • weinxin
  • 我的微信公众号
  • 我的微信公众号扫一扫
  • weinxin

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: