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

Alex

Пользователь
Регистрация
18.03.13
Сообщения
20
Реакции
0
Баллы
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 то его перенаправит на гугл :D.
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!
 

NeonEye

Ready Aim Fire Away!!!
Пользователь
Регистрация
31.07.13
Сообщения
189
Реакции
0
Баллы
11
Адрес
-Death_Note-
Ну хоть что то, верно? Или выложи сам какую нибудь привязку, которая оказалась бы не слабой.
 

Статистика форума

Темы
205.157
Сообщения
386.574
Пользователи
327.908
Новый пользователь
zloix3mal
Сверху Снизу