zoukankan      html  css  js  c++  java
  • NOD32升级账号更新器 [ C# | NOD32 | Eset ]


    前言

          NOD32的大名这里就不介绍了,一直使用免费的升级服务器或升级ID,很脸红的说一句:“有钱了一定买正版的!”。

    声明

          本软件仅限于参考学习之用,请勿用于其他非法用途!

    参考文章

      1.  编程读取NOD32 注册表内的用户名和密码(Delphi)

      2.  ESET(NOD32)有效ID自动获取、检查、写入注册表 纯VBS脚本(论坛要注册,直接下载

    运行环境

          1.      Microsoft .NET Framework 2.0

    正文

      1.  先贴效果图

                    

          2.      原理与功能

                2.1      原理非常简单,从http://www.nod321.com/抓取最新的用户名和密码,然后更新到注册表中。

                2.2      启动进入界面,直接点击"立即更新"按钮就行了,本版没有加入判断是否已经联网,所以需要你先确定自己是否能够上网!如果连续点击立即更新的话,会按上面网页中出现的升级ID从上到下依次设置为当前升级ID。

          3.  部分代码

                3.1      异步分析下载

            /// <summary>
            
    /// 异步更新
            
    /// </summary>
            
    /// <param name="sender"></param>
            
    /// <param name="e"></param>
            private void btnUpdating_Click(object sender, EventArgs e)
            {
                AppendMessage(
    "开始连接\r\n", Color.Blue);

                
    using (WebClient wClient = new WebClient())
                {
                    AutoResetEvent waiter 
    = new AutoResetEvent(false);
                    wClient.Credentials 
    = CredentialCache.DefaultCredentials;
                    wClient.DownloadDataCompleted 
    += new DownloadDataCompletedEventHandler(AsyncURIAnalyze);
                    wClient.DownloadDataAsync(
    new Uri(URL_USER), waiter);
                    
    //waiter.WaitOne();     //阻止当前线程,直到收到信号
                }
            }

            
    /// <summary>
            
    /// 异步分析
            
    /// </summary>
            
    /// <param name="sender"></param>
            
    /// <param name="e"></param>
            protected void AsyncURIAnalyze(Object sender, DownloadDataCompletedEventArgs e)
            {
                
    //消息
                AppendMessage("已连接,正在分析\r\n", Color.Blue);

                
    //获取数据
                string pageData = Encoding.UTF8.GetString(e.Result);

                MatchCollection matchs 
    = Regex.Matches(pageData, REGULAR_USER, RegexOptions.IgnoreCase);

                
    foreach (Match match in matchs)
                {
                    
    string[] values = match.Value.Replace("<br/>""@").Split('@');
                    
    string username = values[0].Replace("UserName:"string.Empty).Trim();
                    
    string password = values[1].Replace("PassWord:"string.Empty).Trim();

                    
    if (!users.Contains(username))
                    {
                        users.Add(username);

                        Regedit(username,password);
                        
                        
    break;
                    }
                }
            }

                  3.2      Nod32的密码加密与解密

            /// <summary>
            
    /// 解密
            
    /// </summary>
            
    /// <param name="buf"></param>
            
    /// <returns></returns>
            private string byte2str(byte[] buf)
            {
                StringBuilder pwd 
    = new StringBuilder();
                
    if (buf != null)
                {
                    
    for (int i = 0, j = mask.Length; i < j; i += 2)
                    {
                        pwd.Append((
    char)(buf[i] ^ mask[i]));
                    }
                }
                
    return pwd.ToString();
            }

            
    /// <summary>
            
    /// 加密
            
    /// </summary>
            
    /// <param name="str"></param>
            
    /// <returns></returns>
            private byte[] str2byte(string str)
            {
                
    byte[] buf = Encoding.ASCII.GetBytes(str);
                
    byte[] result = new byte[buf.Length * 2];
                
    if (buf != null)
                {
                    
    for (int i = 0, j = 0; i < mask.Length; i++, j++)
                    {
                        result[i] 
    = (byte)(buf[j] ^ mask[i]);
                        result[
    ++i] = mask[i];
                    }
                }
                
    return result;
            }

          4.  下载

                4.1  安装程序

                      NodFixSetup.rar 解压安装即可。

                4.2  可直接运行的EXE文件,需要Framework 2.0

                     NodFix.rar 

                4.3  源代码

                     NodFixSrc.rar

          5.      注意

                由于http://www.nod321.com/更新升级ID稍慢导致ID无效,需要你重复点击"立即更新"来尝试其他的升级ID,如果本程序更新的ID都无法使用,也代表上面这个网站的升级ID无法使用!比如2009-5-15更新的升级ID中只有最后一组可以使用!


    后期维护
          1.      2009-7-20
                修正两个BUG,分别是密码为空是更新出错和匹配用户名密码没考虑Username和Password这种情况,更新exe下载,替换NodFix.exe就行:
                NodFix2009-7-20.rar
          2.      2009-8-3
                紧急修正分析结果未加Tirm()的BUG,同上,替换NodFix.exe就行:
                NodFix2009-8-3.rar

      3.  2009-9-4

        由于nod321.com网站被关闭,在本软件失效之际找到另外一个提供免费升级ID的网站:nod320.org,小有改动代码,请下载替换NodFix.exe:

        NodFix2009-9-4.rar

      4.  2009-9-20

        nod320.org改了匹配的用户名 - -#,请替换NodFix.exe,也附加本次的源代码,自己用闲工夫的人把这个程序改成一个字典形式的吧,我懒 - - #。

        EXE:  NodFix2009-9-20_EXE.rar

        SRC:  NodFix2009-9-20_SRC.rar

      5.  2011-3-25

        已经购买正版360版ESET NOD32,40元一年。上班已经4年,能承受得起这个费用了,支持正版!本文源代码要是觉得有价值可以下载学习一下,主要是操作注册表。

    结束

          自己动手,丰衣足食! 短时间内不用到处找升级ID了,而且用起来放心,有源代码在这呢 : )顺便还学习了一下Winform打包:  )

  • 相关阅读:
    golang-cron定时任务
    卡特兰数
    树的直径
    虚拟机之Hyper-V
    tag of loj
    wx.requestSubscribeMessage无法弹窗,显示20001报错?
    nginx日志切割
    小程序首次加载过慢以及点击微信授权不弹出授权框的问题
    外网访问小程序显示网络错误问题以及总是走wx.request里面的fail回调问题
    http转https以及ssl证书配置以及安装
  • 原文地址:https://www.cnblogs.com/over140/p/1456605.html
Copyright © 2011-2022 走看看