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

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

本文简介:

      // Fields
      private long _clientCount;
      private bool _foundMac;
      private string _mac;
      private ArrayList _macArray;
      private long _startTicks;
      private long _ticks;
      private long _userIndex;
      private string _username;
}
 
继续,刚才找了CreateLicense,现在开始找ValidateLicenseData。
protected virtual bool ValidateLicenseData(Type type, string licenseData)
{
      bool flag1 = false;
      char[] chArray1 = new char[1] { ':' } ;
      string[] textArray1 = licenseData.Split(chArray1);
      if (textArray1.Length == 7)
      {
            return (string.Compare("URTracker1Licensed", textArray1[0], true, CultureInfo.InvariantCulture) == 0);
      }
      return flag1;
}
 
哈哈,就是说刚才分析那个数组中textArray1[0],必须是URTracker1Licensed!哈哈,这也进一步证实了我们要把注册信息字符串用":"分开的设想。
Come on!离成功越来越近了!接着分析ValidateLicense。
protected virtual bool ValidateLicense(ServerLicense license, out string errorMessage)
{
      errorMessage = null;
      URTrackerLicense license1 = (URTrackerLicense) license;
      if (license1.IsExpired)
      {
            errorMessage = "The License has expired.";
            return false;
      }
      return true;
}
 
哦,知道了!原来是判断URTrackerLicense的属性IsExpired的真假!好,咱们看看属性IsExpired。
public bool IsExpired
{
      get
      {
            if ((DateTime.Today.Ticks <= this._ticks) && (DateTime.Now.Ticks >= this._startTicks))
            {
                  return !this._foundMac;
            }
            return true;
      }
}
 
 知道了吧!就是判断当前时间要在ticks和startTicks之间!然后再判断Mac的值。
 现在查找Mac的相关类或者方法。找到了GetMacArray
 public static ArrayList GetMacArray()
{
      ManagementClass class1 = new ManagementClass("Win32_NetworkAdapterConfiguration");
      ManagementObjectCollection collection1 = class1.GetInstances();
      ArrayList list1 = new ArrayList();
      using (ManagementObjectCollection.ManagementObjectEnumerator enumerator1 = collection1.GetEnumerator())
      {
            while (enumerator1.MoveNext())
            {
                  ManagementObject obj1 = enumerator1.get_Current();
                  if ((bool) obj1.get_Item("IPEnabled"))
                  {
                        list1.Add(obj1.get_Item("MacAddress").ToString().Replace(":", "").ToUpper());
                  }
                  obj1.Dispose();
            }
      }
      return list1;
}
 
咱们从这里可以猜测的出,获得的Mac应该是去掉":" 如:01:AB:9E:6T:AB:9E:6T (注意了,是要大写的!)

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

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

go top