PROTE?ÃO DE SOFTWARE

FABAO 12/07/2015 17:24:09
#448703
Olá amigos...

Venho compartilhar com meus colegas, uma linha de raciosinio que tenho e que quero saber se ja existe algo do tipo, e se realmente é possivel fazer

bom é o seguinte, eu tenho um sistema que é distribuido em CDs, porém estive queimando os miolos pensando numa forma de evitar que redistribuam o CD fornecido por mim

pois bem, o que pensei foi o seguinte:


cada vez que gravo o cd com os arquivos é gerado um serial para este CD (gerado altomaticamente na propria gravação, sem minha intervenção)

o que eu pensei em fazer foi usar este numero de serie e com algum algoritimo e geral a chave que seria valida somente para este CD, ao fazer uma cópia do CD, a mesma chave não seria mais valida...

alguem sabe me dizer se dá certo, ou se existe forma simples de driblar esta solução?

Se tiverem outra sugestão tbm será muto bem vinda...

DS2T 12/07/2015 20:05:28
#448711
Cara, a única solução que vejo, que te dê uma uma segurança maior é validar via internet.

Toda vez que o cara fosse instalar, ele precisaria de uma liberação pra isso. Você assinalaria [Ô]OK[Ô] no teu banco de dados e quando ele tentasse novamente liberaria.

O que acha?

Att,
JABA 12/07/2015 21:22:59
#448714
O problema de se basear no serial do CD é que sua aplicação só passaria a funcionar se o cliente colocasse o CD do sistema no driver. Ficar dependendo do driver pra fazer o sistema funcionar é uma coisa muito chata e isso poderia fazer você perder muitos clientes.
FABAO 12/07/2015 22:04:35
#448717
Citação:

:
Cara, a única solução que vejo, que te dê uma uma segurança maior é validar via internet.

Toda vez que o cara fosse instalar, ele precisaria de uma liberação pra isso. Você assinalaria [Ô]OK[Ô] no teu banco de dados e quando ele tentasse novamente liberaria.

O que acha?

Att,





sim amigo é uma ideia a se pensar...


Citação:

:
O problema de se basear no serial do CD é que sua aplicação só passaria a funcionar se o cliente colocasse o CD do sistema no driver. Ficar dependendo do driver pra fazer o sistema funcionar é uma coisa muito chata e isso poderia fazer você perder muitos clientes.


Não amigo, a verificação seria somente na instalação, uma unica vez ao instalar... Pois a ideia não é limitar a quantidade de pcs que ele instale, pode instalar em quantos PCs quiser, desde que seja sempre com o mesmo CD...
JABA 12/07/2015 22:20:01
#448718
E o que impediria um malfeitor copiar os arquivos instalados para um outro CD? Se os arquivos que foram instalados no HD ficarem amarrados ao CD para evitar cópias após a instalação, o usuário não iria conseguir usar o software sem pôr o CD no leitor.
FABAO 12/07/2015 22:33:53
#448719
Citação:

:
E o que impediria um malfeitor copiar os arquivos instalados para um outro CD? Se os arquivos que foram instalados no HD ficarem amarrados ao CD para evitar cópias após a instalação, o usuário não iria conseguir usar o software sem pôr o CD no leitor.




Sim claro, existe esse porém, mas alinho ao fato de ser muito trabalhoso fazer isso, por causa das DLLs e OCX e tal, uma vez que o sistema não é assim tão importante...

além do mais, posso dificultar colocando alguns arquivos acultos no CD, coisa que da pra driblar, mas gera mais trabalho...

de qualquer forma eu não tinha pensado nessa situação que vc disse, e ja me ajudou...

MESTRE 13/07/2015 07:42:30
#448733
Bom o que tive pensando a tempos é o mesmo que falaram acima..

Porém teria de ser liberação via Mac (por usuário) ou servidor (para todos os usuários)..

No caso se você utiliza .NET tenho uma rotina bem simples para pegar o IP e o servidor..

  Imports System.Net.Dns


Dim nome As String = Environment.MachineName
Dim user As String = Environment.UserName

Terminal.Caption = nome
Maquina.Caption = user.ToUpper

Private Sub GetIP
Try
Dim IPList As System.Net.IPHostEntry = System.Net.Dns.GetHostEntry(System.Net.Dns.GetHostName)
Dim IP As IPAddress
For Each IP In IPList.AddressList
If (IP.AddressFamily = Sockets.AddressFamily.InterNetwork) Then
labelIP.text = IP.ToString
End If
Next
Return [Ô][Ô]

Catch ex As Exception
MessageBox.Show(ex.ToString)
Finally
End Try

End Sub


Tudo isso me retorna, Nome do usuário Logado, IP do servidor e o terminal.. No caso eu faço uma segunda conexão com um banco Web e checo se o IP do servidor é autorizado ou não para fazer o acesso, se é o mesmo que o banco autorizado ele executa o acesso...
FABAO 14/07/2015 19:45:50
#448834
Citação:

:
Bom o que tive pensando a tempos é o mesmo que falaram acima..

Porém teria de ser liberação via Mac (por usuário) ou servidor (para todos os usuários)..

No caso se você utiliza .NET tenho uma rotina bem simples para pegar o IP e o servidor..

  Imports System.Net.Dns


Dim nome As String = Environment.MachineName
Dim user As String = Environment.UserName

Terminal.Caption = nome
Maquina.Caption = user.ToUpper

Private Sub GetIP
Try
Dim IPList As System.Net.IPHostEntry = System.Net.Dns.GetHostEntry(System.Net.Dns.GetHostName)
Dim IP As IPAddress
For Each IP In IPList.AddressList
If (IP.AddressFamily = Sockets.AddressFamily.InterNetwork) Then
labelIP.text = IP.ToString
End If
Next
Return [Ô][Ô]

Catch ex As Exception
MessageBox.Show(ex.ToString)
Finally
End Try

End Sub


Tudo isso me retorna, Nome do usuário Logado, IP do servidor e o terminal.. No caso eu faço uma segunda conexão com um banco Web e checo se o IP do servidor é autorizado ou não para fazer o acesso, se é o mesmo que o banco autorizado ele executa o acesso...




Bacana mestre, gostei...

Mas me diz uma coisa, como vc faz com as constantes mudanças de IP de alguns clientes com IP dinamico?

KURTGU 14/07/2015 20:19:59
#448837
Minha solucao e simples tenho um banco online somente com os cliente e as datas de validade de cada um primeiro acesso conecta pega a data de validade valida e marca como usado, pronto ele so pode instalar uma vez e quando acaba a recarga dele das mensalidades pagas o sistema bloqueia....
MESTRE 15/07/2015 09:31:02
#448857
Citação:

:
:

Bacana mestre, gostei...

Mas me diz uma coisa, como vc faz com as constantes mudanças de IP de alguns clientes com IP dinamico?



Cara na verdade eu pego pelo domínio, então por ele eu vou dando a liberação ou não haha.. nem pego por IP, gravo o IP para eu ter controle de quais maquinas estão acessando o sistema apenas..

O Jeito que o KURTGU falou também é bom.. mas por domínio da pra fazer também.. ou seja se algum .exe mesmo que for executado fora da empresa o domínio sendo diferente ele não roda..

Ai é bem simples e eficiente, vc cria outra tabela com os dominios permitidos, ai voce joga la o dominio, caso vencer ou o cara não pagar voce deleta o dominio.. é bom que dai eu tenho controle de qual terminal ta acessando o sistema, IP interno e o domínio..
PROFESSOR 15/07/2015 12:31:50
#448875
Em princípio, usar o serial da distribuição não é tão boa, pois como o algoritmo será o mesmo, quem venha a piratear a aplicação com base em engenharia reversa simplesmente replica o algoritmo para gerar novos seriais válidos.

Uma base de dados na Web tem suas vantagens, mas também apresenta o mesmo problema com relação á engenharia reversa, e nesse caso, com agravantes.

O que me parece mais convincente é mesmo manter um cadastro dos clientes com um campo GUID em um WebService e fazer com que a aplicação faça a autenticação do usuário/cliente apenas se conectar á Web.
Página 1 de 2 [13 registro(s)]
Tópico encerrado , respostas não são mais permitidas