Привязка к железу. C#

  • Автор темы Alex
  • 854
  • Обновлено
  • 18, Mar 2013
  • #1
Привязка к железу. C#.




Привет, сегодня решил написать довольно таки "hard" гайд по привязке к железу, кому то он покажется сложным, кому-то нет - не важно! Принцип прост - при запуске генерируется уникальный ключ, который после высвечивается в текст боксе, юзер отправляет вам ключ, вы добавляете в базу его Ник(логин) и сам ключ.



Тобишь кроме него никто не сможет зайти по этому логину.
Что нам потребуется:


1. Компилятор C#, я советую Microsoft Visual Studio 2008/2010
2. Хостинг с поддержкой php, для начала советую h u t 2 . r u (удалить пробелы)
3. Базовые знание по СиШарпу
4. Точные действия по гайду
5. И как всегда руки (желательно прямые) и конечно серое вещство.
6. Добавить следующие библеотеки:
 using System.IO;
using System.Net;
using System.Management;

7. Добавить Management, Кликаем на References(Ссылки) правой кнопкой, Add Reference(Добавить Ссылку), Там выбрать .NET и найти System.Management и нажать ОК.
Поехали...


1. Создадим формочку с 2 group box, 1 label, 2 textBox-a, 1 button.



2. Теперь нам надо сгенерировать SYS-KEY, для этого получим HDD Serial Number где установлена Windows и закпритуем самым обычным способом, который я взял у TBX1n.
Для этого добавим после:
 public Autorization() //Имя вашей формы

{

InitializeComponent();

}
Следующее:
 private string Crypt(string text)

{

string rtnStr = string.Empty;

foreach (char c in text) // Цикл, которым мы и криптуем "текст"

{

rtnStr += (char)((int)c ^ 1); //Число можно взять любое.

}

return rtnStr; //Возвращаем уже закриптованную строку. 

}
3. Теперь на эвент: Form_Load, добавим код:
 try

{

string drive = Environment.GetFolderPath(Environment.SpecialFolder.System).Substring(0, 1);

ManagementObject disk = new ManagementObject("win32_logicaldisk.deviceid=\"" + drive + ":\"");

disk.Get();

string diskLetter = (disk["VolumeSerialNumber"].ToString());

string lol1 = (Crypt(diskLetter.ToString()));

textBox1.Text = lol1;

}

catch (Exception)

{

textBox1.Text = "Error to generate SYS code!";

}
Генерируем ключ и выводим в текстБокс1. 4. Теперь, создадим файл db.php, и воткнём в него код:
 <?

?>
ТЕПЕРЬ! Каждый раз когда вам надо добавить нового юзера вы должны открыть db.php через FTP и ввести инфо юзера таким образом:
 <?
UserName|SYS-KEY
UserName2|SYS-KEY
?>
И так далее... 5. Теперь зальём файл login.php на наш хост с таким содержанием:
 <?php

$login = $_POST['log'];

$password = $_POST['pas'];

if($login == 'Вписываем логин' && $password == 'пароль' && !empty($login) && !empty($password))

{

$lines = file('db.php');

foreach($lines as $single_line)

echo $single_line . "<br />\n";

}

else

{

$URL="http://www.google.com";

header ("Location: $URL");

}

?>
В поля логин и пароль вписываем значения, при которых юзер при запросе, ответ получт db.php, если юзер прийдёт на login.php без post параметра log,pass то его перенаправит на гугл



. 6. Теперь добавим на буттон код:
 String password = "log=ЛогинКоторыйЛежитВLogin.php&pas=АналогичноПасВLogin.php";

HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://сайт.hut2.ru/login.php");

request.UserAgent = "Opera/9.80";

request.Method = "POST";

request.ContentType = "application/x-www-form-urlencoded";

byte[] EncodedPostParams = Encoding.ASCII.GetBytes(password);

request.ContentLength = EncodedPostParams.Length;

request.GetRequestStream().Write(EncodedPostParams, 0, EncodedPostParams.Length);

request.GetRequestStream().Close();

HttpWebResponse response = (HttpWebResponse)request.GetResponse();

string html = new StreamReader(response.GetResponseStream(), Encoding.GetEncoding("windows-1251")).ReadToEnd();

string[] stringSeparators = new string[] { "\n" };

string[] result = html.Split(stringSeparators, StringSplitOptions.RemoveEmptyEntries);

string PolucheniiNomer = "";

foreach (string stroka in result)

{

if (stroka.IndexOf(textBox2.Text) != -1)

{

string[] NashaStroka = stroka.ToString().Split((Convert.ToChar("|")));

string reLoL0 = (Crypt(NashaStroka[1].ToString()));

PolucheniiNomer = reLoL0.ToString();

}

}

string HoldingAdress = "";

try

{

string drive = Environment.GetFolderPath(Environment.SpecialFolder.System).Substring(0, 1);

ManagementObject disk = new ManagementObject("win32_logicaldisk.deviceid=\"" + drive + ":\"");

disk.Get();

string diskLetter = (disk["VolumeSerialNumber"].ToString());

HoldingAdress = diskLetter;

}

catch (Exception)

{

MessageBox.Show("Critical error, application automatically exit", "", MessageBoxButtons.OK, MessageBoxIcon.Error);

Application.Exit();

}

if (PolucheniiNomer == HoldingAdress)

{

MessageBox.Show("Loging Succefull!");

}

else

{

MessageBox.Show("Loging Fail!");

}
7. Запускаем, получаем SYS-KEY, на фтп в db.php добавляем строку в теги
 <?
?>

 UserName|SYSKEY

8. Всё, если вы всё правильно сделали, у вас должны было появиться такое окошко:



9. Гуглим: DotNetReactor 4.0.0.0 + Crack, качаем, защищаем код проги.
10. PROFIT!

Alex


Рег
18 Mar, 2013

Тем
19

Постов
20

Баллов
210
  • 24, Sep 2013
  • #2
Ну хоть что то, верно? Или выложи сам какую нибудь привязку, которая оказалась бы не слабой.
 

NeonEye


Рег
31 Jul, 2013

Тем
115

Постов
177

Баллов
1327
Тем
49554
Комментарии
57426
Опыт
552966

Интересно