`
pcajax
  • 浏览: 2163519 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

QQ自动发日志分析

阅读更多

首先列举比较重要的问题在前面。

1.关于QQ密码码的加密:

2.关于登陆是否需要验证码的校验。

3. 发日志的时候g_tk参数的算法。

 

分析过程。

1.登陆的时候,需要先判断是否需要使用验证码。

string url = String.Format("http://ptlogin2.qq.com/check?uin={0}&appid={1}&r=0.{2}", TxtUser.Text.Trim(), "2001601", Bases.GetGuid(Bases.RandEnum.Numeric, 16));

进行Get请示,如果返回值 是1开头结果的需要验证码,如果是0开头的,是不需要验证码的。

 

2.有验证码的情况 ,获得验证码图片地址,同时要记录验证码的cookie,在提交的时候需要用到。

string strImageUrl = String.Format("http://captcha.qq.com/getimage?&uin={0}&vc_type={1}&aid={2}&0.{3}",TxtUser.Text.Trim(),vcCode, "2001601", Bases.GetGuid(Bases.RandEnum.Numeric, 16));

 

3.进行登陆,

登陆地址:http://ptlogin2.qq.com/login?u={0}&p={1}&verifycode={2}&aid=1006102&u1=http%3A%2F%2Fid.qq.com%2Findex.html&h=1&ptredirect=1&ptlang=2052&from_ui=1&dumy=&fp=loginerroralert

注:u:你的QQ号, p:加密过的QQ密码,verifycode:验证码

 

    3.1 :QQ密码的加密代码:c#版的。

public static class qqPwdEncrypt
   {
       /// <summary>
       /// 计算网页上QQ登录时密码加密后的结果
       /// </summary>
       /// <param name="pwd" />QQ密码</param>
       /// <param name="verifyCode" />验证码</param>
       /// <returns></returns>
       public static String Encrypt(string pwd, string verifyCode)
       {
           return (md5(md5_3(pwd).ToUpper() + verifyCode.ToUpper())).ToUpper();
       }
       /// <summary>
       /// 计算字符串的三次MD5
       /// </summary>
       /// <param name="s" /></param>
       /// <returns></returns>
       private static String md5_3(String s)
       {
           System.Security.Cryptography.MD5 md5 = new System.Security.Cryptography.MD5CryptoServiceProvider();
           byte[] bytes = System.Text.Encoding.UTF8.GetBytes(s);

           bytes = md5.ComputeHash(bytes);
           bytes = md5.ComputeHash(bytes);
           bytes = md5.ComputeHash(bytes);

           md5.Clear();

           string ret = "";
           for (int i = 0; i < bytes.Length; i++)
           {
               ret += Convert.ToString(bytes[i], 16).PadLeft(2, '0');
           }

           return ret.PadLeft(32, '0');
       }
       /// <summary>
       /// 计算字符串的一次MD5
       /// </summary>
       /// <param name="s" /></param>
       /// <returns></returns>
       private static String md5(String s)
       {
           System.Security.Cryptography.MD5 md5 = new System.Security.Cryptography.MD5CryptoServiceProvider();
           byte[] bytes = System.Text.Encoding.UTF8.GetBytes(s);

           bytes = md5.ComputeHash(bytes);

           md5.Clear();

           string ret = "";
           for (int i = 0; i < bytes.Length; i++)
           {
               ret += Convert.ToString(bytes[i], 16).PadLeft(2, '0');
           }

           return ret.PadLeft(32, '0');
       }
   }

3.2 关于js版的加密方法,请直接查看源代码,从QQ的页面上读取。

 

4.登陆成功后,开始发日志,

发日志地址:http://b.qzone.qq.com/cgi-bin/blognew/blog_add?g_tk=" + gtkValue

1:g_tk的参数如何取:

     gtkValue的值是也是经过QQ加密过的

    加密原理:对于登陆成功后,会在登陆成功的cookie值中有一个skey的cookie,取该cookie的值,进行循环取单字符的二进制并取左值。

   找了一个获得gtkValue的js方法:【期待谁可以翻译成c#版的,因为js的方法,在c#的调用不太方便,还要引用一个dll的控件才可以。】

js方法提供如下:

function getGTK(str){
   var hash = 5381;
   for(var i = 0, len = str.length; i < len; ++i)
   {
   hash += (hash << 5) + str.charAt(i).charCodeAt();
   }
   return hash & 0x7fffffff;
}

通过调用些方法后,就可以获得发日志的具体地址了、

 

5.进行post提供要发的日志内容【注:登陆的时候,是get请求,非post请求】

前面都很顺利,到这里把我卡住了,不知道为什么提交后,没有数据返回,相对应也就是没有发布成功,也怪调试不细心。

后来发现提交的时候,会catch到 “关于“服务器提交了协议冲突. Section=ResponseStatusLine"

经常查询问题根源:【网上找的,嘿嘿】

The  server  committed  a  protocol  violation.  Section=ResponseHeader  Detail=CR  must  be  followed  by  LF 微软没有容忍不符合RFC  822中的httpHeader必须以CRLF结束的规定的服务器响应。
通过修改配置文件解决:在app.config(WinForm)或web.config(Web)文件里修改。
WinForm下的app.config默认不存在,手动在Debug文件夹所在的同级目录下新建一个XML配置文件,内容为:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.net>
        <settings>
            <httpWebRequest  useUnsafeHeaderParsing= "true "  />
        </settings>
    </system.net>
</configuration>
编译以后会在Debug下面自动创建一个 程序名.exe.config 的配置文件

 

加入以上代码就OK了。

本文以记录分析过程,并留以后查看备忘 ,如果对大家无用,请飘了。哈

 

关于程序文章,或收藏一般同步发到javaeye,cnblogs,

关于其它文章,一般同步发到sina,QQ空间。

 

发成功了。哈哈。

image

0
10
分享到:
评论

相关推荐

    QQ空间日志用户采集器

    QQ空间日志用户采集器是一款专门针对QQ空间社交平台的工具,主要用于收集和分析特定日志的用户互动数据。这款软件的核心功能在于,通过输入一个指定的QQ空间日志URL,能够提取出在该日志中进行过点赞、转载以及留言...

    Android日志分析工具--V3.4.2

    为了解决这些问题,故而开发了此款软件,该软件不仅解决了上述问题,而且还支持对日志文件进行离线分析和导出备份,支持对日志内容的横向过滤和纵向过滤,且可通过ADB工具直连物理设备进行日志的监控和分析,无需...

    易语言取QQ空间日志

    而“取QQ空间日志”是指通过程序自动化的方式,获取特定用户或者公开的日志内容。这种功能通常需要处理网络请求、解析网页内容以及处理可能的安全问题。 易语言实现这个功能的关键在于对HTTP协议的理解和应用,因为...

    Android日志分析工具-V3.6.3

    为了解决这些问题,故而开发了此款软件,该软件不仅解决了上述问题,而且还支持对日志文件进行离线分析和导出备份,支持对日志内容的横向过滤和纵向过滤,且可通过ADB工具直连物理设备进行日志的监控和分析,无需...

    Android日志分析工具-V3.5.2

    为了解决这些问题,故而开发了此款软件,该软件不仅解决了上述问题,而且还支持对日志文件进行离线分析和导出备份,支持对日志内容的横向过滤和纵向过滤,且可通过ADB工具直连物理设备进行日志的监控和分析,无需...

    Android日志分析工具-V3.6.4

    为了解决这些问题,故而开发了此款软件,该软件不仅解决了上述问题,而且还支持对日志文件进行离线分析和导出备份,支持对日志内容的横向过滤和纵向过滤,且可通过ADB工具直连物理设备进行日志的监控和分析,无需...

    QQ群聊天机器人 易语言 自动回复 QQ机器人免费版

    5. **日志记录**:记录所有交互过程,方便后期分析和优化机器人的行为。 6. **扩展功能**:可通过插件或模块化设计,扩展更多实用功能,如定时任务、自动拉人、禁言管理等。 在这个名为"EQ V1.1(QQ机器人)"的压缩包...

    D1S3 - 智通运维及海量日志分析

    ### D1S3 - 智通运维及海量日志分析 #### 智能运维概念与发展 在当今数字化时代,随着IT系统复杂性的增加,传统的运维方式已难以满足高效管理的需求。因此,“智能运维”(AIOps,Algorithmic IT Operation)作为...

    取QQ空间日志.rar

    总的来说,"取QQ空间日志.rar"的源码分析和学习可以涵盖网络编程基础、网页抓取技术、HTML解析、模拟登录以及易语言的GUI编程等多个方面,对于提升编程技能,尤其是中文编程的理解具有很大帮助。如果你对这些领域感...

    QQ群自动客服系统

    QQ群自动客服系统是一种智能化的在线服务解决方案,它模拟了腾讯QQ客服的工作模式,能够处理大量用户咨询,实现多人自动排队等待接入的功能。这个系统旨在提高客服效率,减少人工客服的工作压力,同时保证用户得到...

    QQ空间日志查看

    QQ空间日志查看是一个工具,专门用于访问非好友的QQ空间日志。这一功能的实现涉及到网络爬虫技术、网页解析以及数据提取等多个IT领域的知识。 首先,我们要了解QQ空间的架构。QQ空间是由腾讯公司推出的一个社交网络...

    QQ自动登录器.rar

    通过分析和学习QQ自动登录器的源代码,初学者可以学习到C#的基本语法、Windows Forms的界面设计、网络编程的原理以及自动化操作的实现,这些都是软件开发中的重要技能。同时,了解安全性和错误处理机制也有助于提升...

    Linux网络日志分析与流量监控

    ### Linux网络日志分析与流量监控 #### 一、引言 随着信息技术的快速发展,网络安全已成为企业和组织关注的重点。为了确保网络安全稳定运行,对网络日志进行有效的分析和监控至关重要。《UNIX+Linux网络日志分析与...

    天智Apache日志分析器

    Apache日志分析是运维人员和网站开发者日常工作中不可或缺的一部分,它可以帮助我们理解网站的访问情况,检测潜在的问题,以及优化网站性能。"天智Apache日志分析器"是一款专为这项任务设计的工具,由VC++编程语言...

    Python实现QQ相册自动上传照片源码

    这个"Python实现QQ相册自动上传照片源码"就是一个很好的例子,它利用编程技术实现了无人值守的照片上传功能,对于个人或企业来说,这可以极大地节省时间和精力。 首先,我们要了解这个项目的核心——Python编程语言...

    易语言自动加QQ好友源码

    6. **错误处理与日志记录**:为了调试和优化,程序应包含适当的错误处理机制,并记录每次尝试添加好友的结果,以便分析和改进。 7. **数据输入**:用户可能需要提供一个QQ号码列表,程序将依次处理这些号码,尝试将...

    QQ自动登录程序(源码)

    10. **日志系统**:为了便于调试和监控,程序应当有完整的日志记录系统,记录登录成功、失败以及各种异常情况,以便于分析和优化。 源码的学习可以帮助开发者了解上述技术的实际应用,理解如何实现自动化登录的流程...

    IIS日志分析归类工具

    "IIS日志分析归类工具"就是针对这些日志进行深度分析和整理的软件,它能够帮助管理员高效地理解和解读IIS日志数据。 这款完全免费的IIS日志分析软件具备以下几个关键功能: 1. 数据导入:工具能够导入IIS日志文件...

    windows日志分析工具

    在Windows操作系统中,日志分析是一项关键的任务,用于诊断系统问题、排查安全事件以及优化系统性能。"windowslog"描述的可能是一个专用于处理Windows日志的软件或插件。这个工具可能具备读取、解析、筛选和报告系统...

Global site tag (gtag.js) - Google Analytics