使用 curl 复制密码混淆以编程方式登录网站

Replicate password obfuscation to programatically login to a website with curl

我想 submit/simulate 一个带有 curl 的登录网络表单。我正在使用....

curl -X POST https://example.com/login
   -H 'Content-Type: application/json'
   -d '{"cpuid":"my_login","password":"my_password"}'

表单有效,但我得到的密码不正确。

当我检查实际的 GUI 登录屏幕时,“密码”key/value 在请求中看起来很模糊。

如何复制网页正在做的任何事情?

这是一个例子(我已经改变了值)...

GUI密码提交= "TPqWKSFz^D63R8"

实际提交了什么....

我很感激我可能在这里陷入了死胡同,因为可能有各种各样的选项用于加密传输中的密码。我知道它不是 B64 编码的。也许我可以深入查看页面js,看看那里是否使用了函数?或者它可能是服务器端?

编辑:看起来有一个 sha1 脚本 运行...这是标准的东西吗?

Edit2:作为绕过这个的 hacky 方法,我可以使用实际网站预先对密码进行哈希处理,然后将其从检查器中取出来存储以备使用。

基本上,是的,它最终成为了 SHA1。我从 here 抓取了一个 SHA1 脚本并将其添加到 Google Sheets 脚本以生成哈希。我选择 Sheets 只是因为我已经有了一个与非技术人员共享的文档,该文档使用一些已定义的变量将 curl 查询构建到 运行。

这是相关代码,以防 link 出现故障...

function SHA1(s) {
  var hexstr = '';
  var digest = Utilities.computeDigest(Utilities.DigestAlgorithm.SHA_1, s)
  for (i = 0; i < digest.length; i++) {
    var val = (digest[i]+256) % 256;
    hexstr += ('0'+val.toString(16)).slice(-2);
  }
  return hexstr

现在我可以使用 curl 中的哈希从 /login 端点检索会话 cookie,并以编程方式查询本地网站以从所需的 HTML 页面抓取信息。

稍微偏离主题,但为此我正在做以下事情...

curl --cookie-jar cookie -X POST http://<LOCAL IP>/login -H 'Content-Type: application/json' -d '{"cpuid":"<CPU ID>","password":"<PASSWORD>"}'

然后...

curl -L http://<LOCAL IP> --cookie cookie | grep <search term>

grep 只是为了过滤掉 HTML 源噪声。