Добро пожаловать! Это — архивная версия форумов на «Хакер.Ru». Она работает в режиме read-only.
 

Как обойти привязку по железу?

Пользователи, просматривающие топик: none

Зашли как: Guest
Все форумы >> [Первый вопрос] >> Как обойти привязку по железу?
Имя
Сообщение << Старые топики   Новые топики >>
Как обойти привязку по железу? - 2012-04-28 22:23:59.286666   
wit_btk

Сообщений: 3
Оценки: 0
Присоединился: 2012-04-28 21:57:31.720000
Добрый день. Не могу найти способ, как обойти привязку по железу данного парсера. Автор проги отказывается мне помочь в этом вопросе. Я уже и не знаю что мне делать ? Я очень надеюсь на Вашу помощь. Заранее благодарен!

Вот ссылка: http://www.rapidshare.ru/2818667
Post #: 1
RE: Как обойти привязку по железу? - 2012-04-29 11:14:15.340000   
Flint_ta

Сообщений: 3720
Оценки: 1120
Присоединился: 2007-01-26 15:49:18.323333
Net сборка обфусцирована. В каталоге лежит файл License.lic (судя по названию файл лицензии) кодированный bаse64, после декодирования получается бинарный файл:

Чем-то пошифрован еще. После деобфускации слово bаse64 встречается несколько раз в коде программы:

Интересен класс c000029:
using System; using System.IO; using System.Security.Cryptography; using System.Text; namespace ___codefort { public sealed class c000029 { public c000029() { } static c000029() { } public static byte[] m000169(byte[] p0, byte[] p1, byte[] p2) { System.IO.MemoryStream memoryStream = new System.IO.MemoryStream(); System.Security.Cryptography.Rijndael rijndael = System.Security.Cryptography.Rijndael.Create(); rijndael.Key = p1; rijndael.IV = p2; System.Security.Cryptography.CryptoStream cryptoStream = new System.Security.Cryptography.CryptoStream(memoryStream, rijndael.CreateEncryptor(), System.Security.Cryptography.CryptoStreamMode.Write); cryptoStream.Write(p0, 0, p0.Length); cryptoStream.Close(); return memoryStream.ToArray(); } public static string m00016a(string p0, string p1) { byte[] bArr1 = System.Text.Encoding.Unicode.GetBytes(p0); System.Security.Cryptography.PasswordDeriveBytes passwordDeriveBytes = new System.Security.Cryptography.PasswordDeriveBytes(p1, new byte[] { 73, 118, 97, 110, 32, 77, 101, 100, 118, 101, 100, 101, 118 }); byte[] bArr2 = ___codefort.c000029.m000169(bArr1, passwordDeriveBytes.GetBytes(32), passwordDeriveBytes.GetBytes(16)); return System.Convert.Tobаse 64String(bArr2); } public static byte[] m00016b(byte[] p0, string p1) { System.Security.Cryptography.PasswordDeriveBytes passwordDeriveBytes = new System.Security.Cryptography.PasswordDeriveBytes(p1, new byte[] { 73, 118, 97, 110, 32, 77, 101, 100, 118, 101, 100, 101, 118 }); return ___codefort.c000029.m000169(p0, passwordDeriveBytes.GetBytes(32), passwordDeriveBytes.GetBytes(16)); } public static void m00016c(string p0, string p1, string p2) { bool flag; System.IO.FileStream fileStream1 = new System.IO.FileStream(p0, System.IO.FileMode.Open, System.IO.FileAccess.Read); System.IO.FileStream fileStream2 = new System.IO.FileStream(p1, System.IO.FileMode.OpenOrCreate, System.IO.FileAccess.Write); System.Security.Cryptography.PasswordDeriveBytes passwordDeriveBytes = new System.Security.Cryptography.PasswordDeriveBytes(p2, new byte[] { 73, 118, 97, 110, 32, 77, 101, 100, 118, 101, 100, 101, 118 }); System.Security.Cryptography.Rijndael rijndael = System.Security.Cryptography.Rijndael.Create(); rijndael.Key = passwordDeriveBytes.GetBytes(32); rijndael.IV = passwordDeriveBytes.GetBytes(16); System.Security.Cryptography.CryptoStream cryptoStream = new System.Security.Cryptography.CryptoStream(fileStream2, rijndael.CreateEncryptor(), System.Security.Cryptography.CryptoStreamMode.Write); int i1 = 4096; byte[] bArr = new byte[i1]; do { int i2 = fileStream1.Read(bArr, 0, i1); cryptoStream.Write(bArr, 0, i2); flag = i2 != 0; } while (flag); cryptoStream.Close(); fileStream1.Close(); } public static byte[] m00016d(byte[] p0, byte[] p1, byte[] p2) { System.IO.MemoryStream memoryStream = new System.IO.MemoryStream(); System.Security.Cryptography.Rijndael rijndael = System.Security.Cryptography.Rijndael.Create(); rijndael.Key = p1; rijndael.IV = p2; System.Security.Cryptography.CryptoStream cryptoStream = new System.Security.Cryptography.CryptoStream(memoryStream, rijndael.CreateDecryptor(), System.Security.Cryptography.CryptoStreamMode.Write); cryptoStream.Write(p0, 0, p0.Length); cryptoStream.Close(); return memoryStream.ToArray(); } public static string m00016e(string p0, string p1) { byte[] bArr1 = System.Convert.Frombаse 64String(p0); System.Security.Cryptography.PasswordDeriveBytes passwordDeriveBytes = new System.Security.Cryptography.PasswordDeriveBytes(p1, new byte[] { 73, 118, 97, 110, 32, 77, 101, 100, 118, 101, 100, 101, 118 }); byte[] bArr2 = ___codefort.c000029.m00016d(bArr1, passwordDeriveBytes.GetBytes(32), passwordDeriveBytes.GetBytes(16)); return System.Text.Encoding.Unicode.GetString(bArr2); } public static byte[] m00016f(byte[] p0, string p1) { System.Security.Cryptography.PasswordDeriveBytes passwordDeriveBytes = new System.Security.Cryptography.PasswordDeriveBytes(p1, new byte[] { 73, 118, 97, 110, 32, 77, 101, 100, 118, 101, 100, 101, 118 }); return ___codefort.c000029.m00016d(p0, passwordDeriveBytes.GetBytes(32), passwordDeriveBytes.GetBytes(16)); } public static void m000170(string p0, string p1, string p2) { bool flag; System.IO.FileStream fileStream1 = new System.IO.FileStream(p0, System.IO.FileMode.Open, System.IO.FileAccess.Read); System.IO.FileStream fileStream2 = new System.IO.FileStream(p1, System.IO.FileMode.OpenOrCreate, System.IO.FileAccess.Write); System.Security.Cryptography.PasswordDeriveBytes passwordDeriveBytes = new System.Security.Cryptography.PasswordDeriveBytes(p2, new byte[] { 73, 118, 97, 110, 32, 77, 101, 100, 118, 101, 100, 101, 118 }); System.Security.Cryptography.Rijndael rijndael = System.Security.Cryptography.Rijndael.Create(); rijndael.Key = passwordDeriveBytes.GetBytes(32); rijndael.IV = passwordDeriveBytes.GetBytes(16); System.Security.Cryptography.CryptoStream cryptoStream = new System.Security.Cryptography.CryptoStream(fileStream2, rijndael.CreateDecryptor(), System.Security.Cryptography.CryptoStreamMode.Write); int i1 = 4096; byte[] bArr = new byte[i1]; do { int i2 = fileStream1.Read(bArr, 0, i1); cryptoStream.Write(bArr, 0, i2); flag = i2 != 0; } while (flag); cryptoStream.Close(); fileStream1.Close(); } } // class c000029 }
Видно что используется шифрование по алгоритму Rijndael с ключом { 73, 118, 97, 110, 32, 77, 101, 100, 118, 101, 100, 101, 118 }, эта последовательность байт в читаемом виде:Ivan Medvedev
Сподручными тулзами расшифровать не удается. Может кто-то еще покопает.
Post #: 2
RE: Как обойти привязку по железу? - 2012-04-29 12:26:52.693333   
wit_btk

Сообщений: 3
Оценки: 0
Присоединился: 2012-04-28 21:57:31.720000
Файл "License.lic" генерировал автор после того как я ему присылал "код для лицензии: 705D4-A5AD2-495F5", из раздела помощь, он говорил что у него привязка к железу (камень, мать, веник).
Post #: 3
RE: Как обойти привязку по железу? - 2012-05-01 12:28:42.200000   
wit_btk

Сообщений: 3
Оценки: 0
Присоединился: 2012-04-28 21:57:31.720000
Неужели никто не сможет мне помочь :(?
Post #: 4
Страниц:  [1]
Все форумы >> [Первый вопрос] >> Как обойти привязку по железу?







Связаться:
Вопросы по сайту / xakep@glc.ru

Предупреждение: использование полученных знаний в противозаконных целях преследуется по закону.