试图找出特定的 32 十六进制字符网络表单是如何从 Netgear Managed Switch 本地 UI 网页生成的

Trying to find how a specific 32 hex character webform is generated from Netgear Managed Switch local UI webpage

我正在尝试在 C# 中模拟导航 Netgear 托管交换机 (GC108PP) 本地 UI 网页。当使用 Chrome 浏览器发送 HttpWebRequest 时,我学会了使用 Fiddler - 点击 URL:

时会生成 3 个 WebForms

http://192.168.50.101

最终成为:

http://192.168.50.101/cgi/get.cgi?cmd=home_login&dummy=1582137153063&bj4=3f104a21e12a9584d36372142f16e35b

网络表单:

  1. cmd=home_login

  2. dummy=1582137153063(纪元以来的时间,这个很容易算出来)

  3. bj4=3f104a21e12a9584d36372142f16e35b(想知道如何生成这个)

没有来自 Netgear 的 HTTP API 可供参考。我试过只生成一个 32 个字符的字符串:

private static Random random = new Random();
public static string randomString(int length)
{
    const string chars = "abcdef0123456789";
    return new string(Enumerable.Repeat(chars, length).Select(s =>s[random.Next(s.Length)]).ToArray());
}

但是,我收到 ERROR 400 Bad Request.If 我使用了 bj4 key/ID,它由我的浏览器在我的代码中静态生成,它可以工作,但是我想正确生成此网络表单。

关于如何生成此 WebForm 的任何想法?

在 JS 中找到它...

function gotoLogin()
{
  document.cookie = \"testcookie\";
  cookieEnabled = (document.cookie.indexOf(\"testcookie\") != -1) ? true : false;
  if (cookieEnabled == false)
  {
    alert(\"Browser does not accept cookies. Please configure your browser to accept cookies in order to access the Web Interface.\");
  }

  var fileVer = (new Date().getTime());
  var url = \"login.html?aj4=\"+fileVer;
  url = url + '&bj4=' + md5(url.split('?')[1]); //here!!!
  window.location.href=url;
}