最新版 URTracker 2.11版 license验证原理剖析- -[4]

[入库:2006年2月23日] [更新:2007年3月24日]

本文简介:

对照URTrackerLicense的构造函数,我们就明白各字段的含义了。也可以构造出一个伪license。我随便构造一个,
string data = "URTracker1Licensed:632598806976562500:735608407859509835:CaoxiCao:0:1000:0:AB9E6TAB9E6T";
注意一下那两个ticks字段,需要把当前的ticks时间包含起来才行,否则IsExpired会判断为true的

回到刚才的思路 分析完 CreateLicense,GetLicense,ValidateLicense ,ValidateLicenseData。现在开始分析GetLicenseDataStream

protected virtual Stream GetLicenseDataStream(Type type)
{
      string text3 = type.Assembly.GetName().Name;
      type.Assembly.GetName().Version.ToString();
      string text1 = "~/licenses/URTRACKER.aspx";
      string text2 = null;
      try
      {
            text2 = HttpContext.Current.Server.MapPath(text1);
            if (!File.Exists(text2))
            {
                  text2 = null;
            }
      }
      catch
      {
      }
      if (text2 != null)
      {
            return new FileStream(text2, FileMode.Open, FileAccess.Read, FileShare.Read);
      }
      return null;
}
 
知道了,这次知道了licenses生成的地方以及名称就是URTRACKER.aspx!!!

现在只是找到了licese格式,名称和位置,但是具体算法还是没有找到。继续在Lealsoft.URTracker.BLL命名空间找。呵呵!发现个叫EncryptedLicenseProvider的类,看看

居然有个东东!眼睛一亮!
protected override Stream GetLicenseDataStream(Type type)
{
      Stream stream1 = base.GetLicenseDataStream(type);
      if (stream1 == null)
      {
            return null;
      }
      DESCryptoServiceProvider provider1 = new DESCryptoServiceProvider();
      provider1.Key = EncryptedLicenseProvider.encryptionKeyBytes;
      provider1.IV = EncryptedLicenseProvider.encryptionKeyBytes;
      ICryptoTransform transform1 = provider1.CreateDecryptor();
      return new CryptoStream(stream1, transform1, CryptoStreamMode.Read);
}
 
因为我们看到了DES!哈哈,知道了,是DES加密!
看到调用base.GetLicenseDataStream了吗?就是取得license的内容!!
而它的基类就是我们刚刚分析过的ServerLicenseProvider。
好,我们下一步搞清楚Key和IV的值。当找到这个静态构造函数时,心一下子揪了起来,成功了吗?快了!
static EncryptedLicenseProvider()
{
      EncryptedLicenseProvider.encryptionKeyBytes = new byte[8] { 0x35, 0x37, 0x42, 50, 0x42, 0x31, 70, 0x36 } ;
}
 
^_^,终于哭了,搞清楚了DES加密啊!
可以写代码生成伪licese文家了!本来俺做了个 注册机出来的,怕太对不起作者了,暂不公布了!

把源代码公布吧!

---------------------------------------------
using System;
using System.Collections.Generic;
using System.Text;
using System.Security.Cryptography;
using System.IO;


namespace ConsoleApplication2
{
 class Program
 {
  static void Main(string[] args)
  {
   byte[] encryptionBytes = new byte[8] { 0x35, 0x37, 0x42, 50, 0x42, 0x31, 70, 0x36 };
   DESCryptoServiceProvider provider = new DESCryptoServiceProvider();
   provider.Key = encryptionBytes;
   provider.IV = encryptionBytes;
   ICryptoTransform transform1 = provider.CreateEncryptor();

   string data = "URTracker1Licensed:632572024003281250:735608407859509835:CaoxiCao:0:10000:0111A7C7D865";
   Console.WriteLine(System.DateTime.Now.Ticks);  //当前的ticks
   byte[] message = Encoding.UTF8.GetBytes(data);
   FileStream fs = new FileStream("c:\\URTRACKER.aspx", FileMode.Create,
     FileAccess.Write, FileShare.Write);
   CryptoStream cs = new CryptoStream(fs, transform1, CryptoStreamMode.Write);
   cs.Write(message, 0, message.Length);
   cs.Flush();
   cs.Close();
   fs.Close();

本文关键:最新版 URTracker 2.11版 license验证原理剖析- -
  相关方案
Google
 

本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)

go top