|
27.10.2012, 21:57
|
#1
|
|
|
|
Разведчик
|
Регистрация: 27.10.2012
Сообщений: 2
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
|
Привязка на c#
Привет всем.
Теория:
Эта привязка работает так:
Вам генерируеться ваш уникальный код, чтобы войти в программу вам нужно чтобы ваш код был в базе + ваш логин
Для примера тут 2 логина:
1.BassBoy
2.Lol
Тоесть в первом текстбоксе будет ваш сгенерированый код а во втором вы должны будете ввести свой логин.
И так перейдем к делу:
Для начала создаем проект и добавляем к нему ссылку:
Выбераем вкладку .NET и выбераем System.Management
Далее открываем файл Program.cs и пишем:
Using:
Код:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;
using System.Management;
using System.Security.Principal;
using System.Diagnostics;
using System.ComponentModel;
Code:
Заменяем весь код от static class Program
на:
Код:
static class Program
{
public static string K1 = "";
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}
}
public class DE
{
public static string GS()//GetSerial
{
string obmanka1 = "7EA1";//пишешь все, что хочешь.
string str1 = "";
ManagementObjectSearcher searcher = new ManagementObjectSearcher("root\\CIMV2", "SELECT * FROM Win32_Processor");
foreach (ManagementObject queryObj in searcher.Get())//Получение ид процессора
{
str1 = queryObj["ProcessorId"].ToString();
}
return str1 + obmanka1;
}
}
}
Далее на форму кидаем 2 лейбла 2 текстбокса и 2 кнопки
нажимаем 2 раза по форме и на событии Form_Load пишем:
if (DE.GS() == K1) //if (DE.GS() == K1 || DE.GS() == K2 || DE.GS() == K3)
{
this.Text = "[Activated]";
textBox1.Text = DE.GS();
}
else
{
this.Text = "[Not activated]";
textBox1.Text = DE.GS();
}
Тепеть после
Код:
public Form1()
{
InitializeComponent();
}
пишем:
Код:
public static string K1 = "";//тут будут ваши ключи
Теперь нажимаем 2 раза на первую кнопку и вставляем код:
Код:
if (textBox2.Text == "BassBoy" & DE.GS() == K1 || textBox2.Text == "Lol" & DE.GS() == K2)
{
MessageBox.Show("Успешно!");
}
else
{
MessageBox.Show("Вашего ключа нету в базе.");
}
а на вторую кнопку:
Код:
Clipboard.SetText(DE.GS());// копирование в буфер обмена
Вот так должно у вас получиться:
|
|
|
28.10.2012, 11:23
|
#2
|
|
|
|
Старший сержант
|
Регистрация: 29.07.2011
Сообщений: 197
Популярность: 8989
Сказал(а) спасибо: 45
Поблагодарили 175 раз(а) в 139 сообщениях
|
Re: Привязка на c#
Бред, это мне ради каждого нового пользователя придется править исходник...
|
|
|
28.10.2012, 15:54
|
#3
|
|
|
|
Сержант
|
Регистрация: 01.10.2011
Сообщений: 128
Популярность: 5723
Сказал(а) спасибо: 25
Поблагодарили 174 раз(а) в 105 сообщениях
|
Re: Привязка на c#
На дворе эра информационных технологий, хостинг стоит копейки, что мешает использовать связку мускул+пхп на веб серверах или для большей безопасности VPS+Verify Server, остается только обфусцировать код.
Для кого эти костыли с оффлайн привязкой?
________________
Talk is cheap. Show me the code
— Linus Torvalds
|
|
|
Пользователь сказал cпасибо:
|
|
28.10.2012, 18:26
|
#5
|
|
|
|
Старший сержант
|
Регистрация: 04.02.2011
Сообщений: 198
Популярность: 12244
Сказал(а) спасибо: 453
Поблагодарили 435 раз(а) в 242 сообщениях
|
Re: Привязка на c#
|
Цитата: |
|
|
|
|
|
|
|
|
|
я хотел сначало сделать так но ни чего не понял как проверять на сервере это..даже не смог разобрать привязку никтии..
знаю наб..
|
|
|
|
|
|
Бонально считать фаил(с построчно занесенными ключами) с сервера в переменную и осуществить поиск по совпадению? Не?
Код:
string Key_File ="http://...........ru/key.ini";//Ссылка на базу
string serv = null;
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Key_File);
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
using (StreamReader reader = new StreamReader(response.GetResponseStream()))
serv = reader.ReadToEnd();
Пример поиска
Код:
static int a = 0;
string temp = String.Empty;//переменная содержащая полученный индитификатор машины
while (a != -1)
{
a = RichTextBox.Find(temp, a, RichTextBoxFinds.None);
if (a != -1)
{
//---Проверка пройдена(в базе)
}
else
{
//---Проверка не пройдена(нет в базе)
}
break;
}
a++;
________________
-Отложи на послезавтра то что можешь сделать сегодня, и тогда у тебя появятся два свободных дня!
Последний раз редактировалось крайслер; 28.10.2012 в 18:28.
|
|
|
28.10.2012, 19:50
|
#6
|
|
|
|
Старший сержант
|
Регистрация: 29.07.2011
Сообщений: 197
Популярность: 8989
Сказал(а) спасибо: 45
Поблагодарили 175 раз(а) в 139 сообщениях
|
Re: Привязка на c#
|
|
|
28.10.2012, 20:34
|
#7
|
|
|
|
Рыцарь-капитан
|
Регистрация: 29.01.2010
Сообщений: 547
Популярность: 41279
Сказал(а) спасибо: 692
Поблагодарили 2,270 раз(а) в 1,035 сообщениях
|
Re: Привязка на c#
а почему цифровую подпись никто не юзает?
|
|
|
28.10.2012, 20:38
|
#8
|
|
|
|
Рыцарь-защитник
|
Регистрация: 28.08.2009
Сообщений: 603
Популярность: 19129
Золото Zhyk.Ru: 500
Сказал(а) спасибо: 84
Поблагодарили 602 раз(а) в 321 сообщениях
|
Re: Привязка на c#
|
Цитата: |
|
|
|
|
|
|
|
|
|
на самом деле такая защита не есть проблемной, но достаточно маленькой модификации и она будет намного эффективней )
|
|
|
|
|
|
Например можно закриптовать данные, а ключ хранить в закриптованном виде, естественно обсуфицировать программу. Тогда подменить нельзя будет. Ибо условия:
1. Сервер не вернул ошибку
2. Сервер не вернул пустоту
3. Сервер вернул закриптованные данные
4. Данные успешно декриптуются по текущему ключу
5. Ключ проверен на наличие в базе
6. Если он есть => запускаем программу, если условие 5 выполнено а ключа нету => выводим окошко с HWID, если не выполнены условия 2|3|4 => попытка подменить данные, если не выполняется условие 1 => проблемы с сервером.
________________
We are Ducks. We are birds. We like bread. We cryack. Cryack.
Последний раз редактировалось Nickitee; 28.10.2012 в 20:45.
|
|
|
28.10.2012, 21:21
|
#9
|
|
|
|
Рыцарь-капитан
|
Регистрация: 29.01.2010
Сообщений: 547
Популярность: 41279
Сказал(а) спасибо: 692
Поблагодарили 2,270 раз(а) в 1,035 сообщениях
|
Re: Привязка на c#
|
|
|
28.10.2012, 21:24
|
#10
|
|
|
|
Старший сержант
|
Регистрация: 29.07.2011
Сообщений: 197
Популярность: 8989
Сказал(а) спасибо: 45
Поблагодарили 175 раз(а) в 139 сообщениях
|
Re: Привязка на c#
|
|
|
28.10.2012, 21:25
|
#11
|
|
|
|
Рыцарь-защитник
|
Регистрация: 28.08.2009
Сообщений: 603
Популярность: 19129
Золото Zhyk.Ru: 500
Сказал(а) спасибо: 84
Поблагодарили 602 раз(а) в 321 сообщениях
|
Re: Привязка на c#
________________
We are Ducks. We are birds. We like bread. We cryack. Cryack.
|
|
|
28.10.2012, 21:56
|
#12
|
|
|
|
Рыцарь-капитан
|
Регистрация: 29.01.2010
Сообщений: 547
Популярность: 41279
Сказал(а) спасибо: 692
Поблагодарили 2,270 раз(а) в 1,035 сообщениях
|
Re: Привязка на c#
|
Цитата: |
|
|
|
|
|
|
|
|
|
Я не знаю как пользоваться цифровой подписью.
Банальная криптация увеличит анти-крякабельность программы на 50%.
Ну и как вариант, сверять размер исполняемого файла вплоть до байтов с валидным размером файла последней версии с сервера в криптованном виде.
|
|
|
|
|
|
смысл в том что у тебя есть 2 ключа. 1 приватный, 2 публичный. с помощью приватного ключа можно шифровать и расшифровывать, а с помощью публичного только расшифровывать(он будет записан в программе). те ты криптуешь у себя на компьютере данные(допустим hwid) и кидаешь их на сервер. программа скачивает, проверяет публичным ключём целостность данных, если инфа и ключ совпадает всё ок, если нет ошибка
сейчас скину пример
Код:
генерация ключа
public RSACryptoServiceProvider rsa;
public void AssignNewKey()
{
const int PROVIDER_RSA_FULL = 1;
const string CONTAINER_NAME = "SpiderContainer";
CspParameters cspParams;
cspParams = new CspParameters(PROVIDER_RSA_FULL);
cspParams.KeyContainerName = CONTAINER_NAME;
cspParams.Flags = CspProviderFlags.UseMachineKeyStore;
cspParams.ProviderName = "Microsoft Strong Cryptographic Provider";
rsa = new RSACryptoServiceProvider(2048, cspParams);
//provide public and private RSA params
StreamWriter writer = new StreamWriter(@"privatekey.xml");
string publicPrivateKeyXML = rsa.ToXmlString(true);
writer.Write(publicPrivateKeyXML);
writer.Close();
//provide public only RSA params
writer = new StreamWriter(@"publickey.xml");
string publicOnlyKeyXML = rsa.ToXmlString(false);
writer.Write(publicOnlyKeyXML);
writer.Close();
}
Код:
public string enc(string ptext) //криптовка
{
// hash
SHA1CryptoServiceProvider cryptoTransformSHA1 = new SHA1CryptoServiceProvider();
//using System.Security.Cryptography;
byte[] buffer = Encoding.ASCII.GetBytes(ptext);
buffer = cryptoTransformSHA1.ComputeHash(buffer);
// sign
RSACryptoServiceProvider RSA = new RSACryptoServiceProvider();
XmlDocument xmlPrivateKey = new XmlDocument(); //using System.Xml;
xmlPrivateKey.Load("privatekey.xml");
RSA.FromXmlString(xmlPrivateKey.InnerXml);
RSAPKCS1SignatureFormatter RSAFormatter = new RSAPKCS1SignatureFormatter(RSA);
RSAFormatter.SetHashAlgorithm("SHA1");
byte[] SignedHash = RSAFormatter.CreateSignature(buffer);
return Convert.ToBase64String(SignedHash);
}
Код:
//проверка
//<key1> - незашифрованный текст
//<key2> - зашифрованый
public bool lookkey(string key1, string key2)
{
try
{
byte[] buffer = Encoding.ASCII.GetBytes(key1);
RSACryptoServiceProvider RSA = new RSACryptoServiceProvider();
RSA.KeySize = 2048;
RSA.FromXmlString(@"publickey.xml");
byte[] Signature = Convert.FromBase64String(key2);
return RSA.VerifyData(buffer, "SHA1", Signature);
}
catch
{
return false;
}
}
Последний раз редактировалось warl0ck; 28.10.2012 в 22:11.
|
|
|
2 пользователя(ей) сказали cпасибо:
|
|
29.10.2012, 13:34
|
#13
|
|
|
|
Разведчик
|
Регистрация: 09.07.2012
Сообщений: 8
Популярность: 149
Сказал(а) спасибо: 21
Поблагодарили 42 раз(а) в 37 сообщениях
|
Re: Привязка на c#
Этот код можно совместить с кодом ТС'а , или нужно все полностью переписывать ?
|
|
|
31.10.2012, 17:36
|
#14
|
|
|
|
Разведчик
|
Регистрация: 29.07.2012
Сообщений: 12
Популярность: 231
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
|
Re: Привязка на c#
|
|
|
31.10.2012, 17:55
|
#15
|
|
|
|
Старший сержант
|
Регистрация: 29.07.2011
Сообщений: 197
Популярность: 8989
Сказал(а) спасибо: 45
Поблагодарили 175 раз(а) в 139 сообщениях
|
Re: Привязка на c#
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Похожие темы
|
Тема |
Автор |
Раздел |
Ответов |
Последнее сообщение |
[Помогите!] Привязка
|
kit20977(2) |
Общение и обсуждение |
1 |
02.05.2012 20:31 |
[Помогите!] Привязка
|
ShtormBlazer |
Общение и обсуждение |
5 |
24.04.2012 22:43 |
[Помогите!] Привязка к бп
|
GoOldeEn |
Общение и обсуждение |
0 |
10.04.2012 20:33 |
Заявление об ответственности / Список мошенников
Часовой пояс GMT +4, время: 13:51.
|
|