模拟登录一个网站,用抓包工具得到post数据如下
userName=csdn529
password=ff1544161dbc39615727835782ab21bc
passpod=
category=
__validationToken__=tdfhrya3wflbc6n7xskbd4pvha5gfzx6
__validationDna__=password明显是加密了
多次测试发现password、__validationToken__每次post时都是变化的
求高手帮忙测试下,给个post的代码,谢谢了!!测试账号:csdn529 
密码:csdn529
登录地址https://passport.5173.com/?returnUrl=http%3a%2f%2fwww.5173.com%2f

解决方案 »

  1.   

    password的加密要么是JS实现,要么是将password传输到服务器返回加密后的字符串。
    后者貌似不可取,意义不大,第一种的可能性较大,httpwatch跟踪一下浏览器请求记录就知道了
    至于状态字段的变化,那是必须的,你不能指望手动post一个固定的内容,动态获取,然后再POST过去,包括cookie代码可以参考这个资源:
    http://download.csdn.net/source/2277988
      

  2.   

    大家说的都有道理,我用火狐狸+火狐狸debug跟踪过了,是在客户端用js进行的加密
    加密方法好像是取了md5(password)的后一半,再加上一个send参数(一个字符串,每次都变,不知道怎么来的)后,在用md5加密,昨晚调试的,现在记得也不是很清楚了,我对那个调试工具也不懂,所以调不出具体地思路来,现在就是要知道password具体地加密方法和__validationToken__值具体是怎么来的
    另:回楼上的,我是动态获取然后再POST过去包括cookie的,但现在登录的post必须要先做好的。
    上面有朋友问网址,我已经发了一次的,我再发下
    登录地址https://passport.5173.com/?returnUrl=http%3a%2f%2fwww.5173.com%2f
      

  3.   

    https 也能抓包?请教一下你的抓包工具
      

  4.   


    抓包工具:HttpAnal
    麻烦大家都帮我调试下了,非常感谢
      

  5.   

    既然是JS处理的.那可以分析JS代码.
      

  6.   

    现在又有点发现,问题可能简单些了,高手帮忙看看
    用firefox+firebug分析登陆网页,登陆网页调用了passportuserlogin脚本文件,
    passportuserlogin脚本文件在地址https://security.5173.com/security/clientBroker/下面
    在上面地址的脚本里发现了所有需要的数据
    p = hex_md5(hex_md5(p).substr(8, 16) + seed);//加密方法在119行
    getPassword('k3qmkp');// 283行的这个k3qmkp就是上面加密用的seed
    这个seed每次刷新登陆网页都会变化,但在passportuserlogin脚本文件里每次都用明文显示
    现在问题是怎么在程序里得到这个seed呢?我直接用HttpWebRequest来获取
    https://security.5173.com/security/clientBroker/passportuserlogin
    里面的内容,显示的脚本只是我前面跟踪的一部分,没有我需要的数据
    盼高手帮忙解决下,谢谢了
      

  7.   

    闲着搞了下:
    需要 Microsoft.Http.dll, Microsoft.Http.Extension.dll
    下载地址:http://aspnet.codeplex.com/releases/view/24644 
    当然也可以直接用 HttpWebRequest。
    下面代码运行后,应该是跳转到:var url = unescape("http%3a%2f%2fwww.5173.com%2f");
    lz自己接着搞吧。
     
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using Microsoft.Http;
    using System.Security.Cryptography;
    using System.Text.RegularExpressions;class Program
     {
         static void Main(string[] args)
         {
             var client = new HttpClient();
             var get = client.Get("https://security.5173.com/Security/ClientBroker/PassportUserLogin").Content.ReadAsString();
             var regex4token = new Regex("(?is)<input id=\"__validationToken__\" name=\"__validationToken__\" type=\"hidden\" value=\"(.*?)\" />");
             var match = regex4token.Match(get);
             if (!match.Success)
             {
                 Console.WriteLine("failed");
                 return;
             }
             var token = match.Groups[1].Value;
             Console.WriteLine(token);
             var regex4seed = new Regex(@"(?is)tpm\.getPassword\('(.*?)'\);");
             match = regex4seed.Match(get);
             if (!match.Success)
             {
                 Console.WriteLine("failed");
                 return;
             }
             var seed = match.Groups[1].Value;
             Console.WriteLine(seed);
             var user = "csdn529";
             var passwd = GetPasswd("csdn529", seed);
             Console.WriteLine(passwd);
             client.DefaultHeaders.Add("Referer", "https://passport.5173.com/?returnUrl=http%3a%2f%2fwww.5173.com%2f");
             client.DefaultHeaders.Add("Origin", "https://passport.5173.com");
             client.DefaultHeaders.Add("Cookie", "__utmz=1.1306665492.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); __utma=1.1232420102.1306665492.1306665492.1306665492.1; __utmc=1; __utmb=1.1.10.1306665492");
             var body = new HttpUrlEncodedForm();
             body.Add("userName", user);
             body.Add("password", passwd);
             body.Add("passpod", "");
             body.Add("category", "");
             body.Add("__validationToken__", token);
             body.Add("__validationDna__", "");
             var post = client.Post("https://passport.5173.com/?returnUrl=http%3a%2f%2fwww.5173.com%2f", body.CreateHttpContent());
             Console.WriteLine(post.StatusCode);
             Console.Read();
         }     static string GetPasswd(string passwd, string seed)
         {
             return Md5(Md5(passwd).Substring(8, 16) + seed);
         }     static string Md5(string str)
         {
             MD5 m = new MD5CryptoServiceProvider();
             byte[] s = m.ComputeHash(UnicodeEncoding.UTF8.GetBytes(str));
             return BitConverter.ToString(s).Replace("-", "").ToLower();
         }
         
     }
      

  8.   

    请问 https://security.5173.com/Security/ClientBroker/PassportUserLogin这个是怎么获得的那
    我怎么使用firebug httpanl 都找不到那