VB .NET - Protegendo o seu Sistema
No artigo de hoje eu vou mostrar uma maneira bem simples de proteger o seu sistema usando os recursos da classe ManagementClass a partir de onde iremos gerar um serial a partir do endereço MAC. |
A primeira coisa que vou deixar bem claro é que o código apresentando neste artigo é bem simples e tem como objetivo apenas dar uma idéia de como proteger um sistema usando o endereço MAC e gerando uma chave de ativação.
Não preciso dizer que o código poderá ser quebrado por programadores mais experientes e por isso não recomendo que você o utilize como esta em seus sistemas de produção.
Existem muitas abordagens que podem ser feitas para proteger o seu sistema e esta é uma forma de mostrar como usar a classe ManagementClass.
b - VerificaChaveAtivacao() - verifica se a chave de ativação
informada pelo cliente é válida
O cliente informa o seu número serial e recebe a chave de ativação que deve informar para validação.
Recursos usados:
Nota: Baixe e use a versão Community 2015 do VS ela é grátis e é equivalente a versão Professional.
Criando o projeto no Visual Studio 2015 Community
Abra o VS 2015 Community e clique em New Project;
Selecione a linguagem Visual Basic e o template Windows Forms Application;
Informe o nome VB_NumeroSerial e clique no botão OK;
Referenciando o namespace ManagementClass
Vamos incluir uma referência ao namespace System.Management em nosso projeto.
No menu Project clique em Add Reference;
Selecione a guia Assemblies e marque a opção System.Management e clique em OK;
Criando a classe para gerar o serial e verificar a chave de ativação
No menu Project clique em Add Class e informe o nome GerenciaAtivacao.
A seguir inclua o código abaixo nesta classe:
Imports System.Management
Public Class GerenciaAtivacao
Public Function GetNumeroSerialCliente() As Long
' a classe Win32_NetworkAdapterConfiguration
' representa os atributos e comportamentos do adaptador de rede
Dim mc As New ManagementClass("Win32_NetworkAdapterConfiguration")
Dim mac As String = ""
'Obtem a coleção de adaptadors de rede
Dim moc As ManagementObjectCollection = mc.GetInstances
'Itera sobre os adaptadores obtendo o primeiro que puder
For Each mo As ManagementObject In moc
If mo.Item("IPEnabled") Then
mac = mo.Item("MacAddress").ToString
Exit For
End If
Next
mc.Dispose()
' Esta função pega o serial a partir do endereço MAC
' Se x for o MAC e y for o serial
' a função será y += x[i] + (i * 2)
' ond i é o indíce do elemento do endereço MAC
Dim soma As Long = 0
Dim index As Integer = 1
For Each ch As Char In mac
If Char.IsDigit(ch) Then
soma += soma + Integer.Parse(ch) * (index * 2)
ElseIf Char.IsLetter(ch) Then
Select Case ch.ToString.ToUpper
Case "A"
soma += soma + 10 * (index * 2)
Case "B"
soma += soma + 11 * (index * 2)
Case "C"
soma += soma + 12 * (index * 2)
Case "D"
soma += soma + 13 * (index * 2)
Case "E"
soma += soma + 14 * (index * 2)
Case "F"
soma += soma + 15 * (index * 2)
End Select
End If
index += 1
Next
Return soma
End Function
Public Function VerificaChaveAtivacao(ByVal chaveAtivacao As Long) As Boolean
Dim x As Long = GetNumeroSerialCliente()
Dim y As Long = x * x + 53 / x + 113 * (x / 4)
Return y = chaveAtivacao
End Function
End Class
|
Incluindo o projeto Class Library
Para poder testar o sistema vamos incluir um novo projeto do tipo Class Library onde vamos criar a classe GerenciaChaves().
No menu File clique em Add -> New Project e selecione o template Class Library e informe o nome Ativacao.
Altere o nome da classe Class1 gerada por padrão para GerenciaChaves e inclua o código abaixo nesta classe:
Public Class GerenciaChaves
Public Function GeraChaveAtivacao(ByVal serialCliente As Long) As Long
Dim x As Long = serialCliente
Return x * x + 53 / x + 113 * (x / 4)
End Function
End Class
|
Temos nesta classe o método GeraChaveAtivacao() que gera a chave do cliente a partir do seu serial.
Implementando o lado do cliente
A seguir temos uma implementação bem simples feita apenas para mostrar uma forma de usar as funcionalidades criadas.
No projeto VB .NET Windows Forms abra o formulário Form1.vb e inclua os controles Label, TextBox e Button no formulário conforme o leiaute mostrado na figura abaixo:
No formulário declare o seguinte namespace:
Imports Ativacao
Após a definição da classe Form1 defina as seguintes variáveis:
Dim reg As GerenciaAtivacao
Dim ger As GerenciaChaves
No evento Load do formulário inclua o código abaixo:
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Dim reg As New GerenciaAtivacao
Try
txtSerial.Text = reg.GetNumeroSerialCliente()
Catch ex As Exception
MessageBox.Show("Erro : " + ex.Message)
End Try
End Sub
|
Este código obtém o serial do cliente a partir do seu endereço MAC e exibe na caixa de texto do formulário.
No evento Click do botão de comando - btnGerarChave :
Private Sub btnGerarChave_Click(sender As Object, e As EventArgs) Handles btnGerarChave.Click
Dim reg As New GerenciaAtivacao
Try
Dim chaveAtivacao As Long = Convert.ToInt64(txtChaveAtivacao.Text)
If reg.VerificaChaveAtivacao(chaveAtivacao) Then
MessageBox.Show("Ativação realizada com sucesso !")
Else
MessageBox.Show("Ativação falhou !!!")
End If
Catch ex As Exception
MessageBox.Show("Erro : " + ex.Message)
End Try
End Sub
|
Neste código temos a validação da chave de ativação que o usuário informa na caixa de texto txtChaveAtivacao.
Você pode melhorar o código apresentado de diversas formas fique à vontade...
Pegue o projeto completo aqui : VB_NumeroSerial.zip
Mas, ó
homem, quem és tu, que a Deus replicas? Porventura a coisa formada dirá ao que a
formou: Por que me fizeste assim?
Ou não tem o oleiro poder sobre o barro, para da mesma massa fazer um vaso para
honra e outro para desonra?
Romanos 9:20,21
Veja os
Destaques e novidades do SUPER DVD Visual Basic
(sempre atualizado) : clique e confira !
Quer migrar para o VB .NET ?
Quer aprender C# ??
Quer aprender os conceitos da Programação Orientada a objetos ? Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ? Quer aprender a criar aplicações Web Dinâmicas usando a ASP .NET MVC 5 ? |
Gostou ? Compartilhe no Facebook Compartilhe no Twitter
Referências:
Super DVD Vídeo Aulas - Vídeo Aula sobre VB .NET, ASP .NET e C#
https://msdn.microsoft.com/pt-br/library/system.management.managementclass(v=vs.110).aspx