Реализация защиты от копирования
Автор: Алексей Боган • Май 12, 2024 • Лабораторная работа • 4,189 Слов (17 Страниц) • 61 Просмотры
1. Задание
Реализовать защиту от копирования.
2. Ход работы
Для защиты программы от копирования используется привязка к аппаратуре. Вместе с основной программой поставляется программа-активатор. Программа-активатор с помощью средств ОС получает идентификатор процессора и имя пользователя, получает хэш алгоритмом SHA512 и отсылает зашифрованное сообщение на сервер активации. Сервер сохраняет полученное сообщение.
Основная программа при запуске получает идентификатор процессора, шифрует его и посылает на сервер активации, Если на сервере активации в базе данных этот идентификатор есть, то отправляется положительный ответ, в противном случае – отрицательный. При положительном ответе программа продолжает свое нормальное выполнение, иначе выводит сообщение о том, что программа не активирована.
3. Вывод
В ходе выполнения лабораторной работы были изучены методы защиты информации от копирования. Был изучен способ получения и использования информации об аппаратуре для реализации привязки программы к конкретному устройству. Был реализован способ защиты программы от копирования с использованием цифровой подписи и сервера активации.
Приложение А
Листинг кода
Сервер
using System;
using System.Text;
using System.Net;
using System.Net.Sockets;
using System.Xml.Linq;
using System.IO;
namespace ServerZI
{
class Program
{
static void Main(string[] args)
{
try
{
TcpListener serverSocket = new TcpListener(IPAddress.Any, 7000);
Console.WriteLine("Server started");
serverSocket.Start();
while (true)
{
TcpClient clientSocket = serverSocket.AcceptTcpClient();
NetworkStream stream = clientSocket.GetStream();
byte[] bytes = new byte[512];
int leangth = stream.Read(bytes, 0, bytes.Length);
string request = Encoding.UTF8.GetString(bytes, 0, leangth);
Console.WriteLine(request);
string[] subs = request.Split(' ');
if (subs[0] == "SET")
{
Console.WriteLine(subs[0]);
Console.WriteLine("Установка лицензция для: " + subs[1]);
string poisk = SearchText(subs[1]);
if (subs[1] != poisk)
{
StreamWriter sw = new StreamWriter("Key.txt", true);
sw.WriteLine(subs[1]);
sw.Close();
Console.WriteLine("Успешно.");
}
else {
Console.WriteLine("Повтор.");
}
stream.Write(Encoding.UTF8.GetBytes("Лицензия активирована"));
stream.Flush();
}
else if (subs[0] == "GET")
{
Console.WriteLine("Проверка лицензии для: " + subs[1]);
string poisk = SearchText(subs[1]);
string ans = "Ошибка";
if (subs[1] == poisk)
{
...