2017-02-15 101 views
0

首先,我想明确一点,我不是Visual Basic的“PRO”,也不是c#。但我的头脑里有几天这个问题。如何在表单加载之前进行HWID验证

“是否可以在表单加载之前验证HWID?它是如何工作的?”

因为我为当地的健身房创建了一个软件,我想实现一些安全性,而不仅仅是一个基本的“登录表单”。所以,它带给我这个问题...如果相同的值在列表中,我如何创建一个简单的方法从CPU获取HWID并从纯文本(可能使用md5散列编写)进行验证? 我一直在寻找一些解释如何做到这一点,以及如何在VB.NET和C#上实现它。

Private Sub frmprincipal_Load(sender As Object, e As EventArgs) Handles MyBase.Load 
    Dim janela As New frmLogin 
    janela.MdiParent = Me 
    janela.Show() 
    Label4.Text = "Faça login!" 
    tmrRelogio.Enabled = True 
    bttLogout.Enabled = False 
    bttLogout.Visible = False 
    Dim hwid As String = String.Empty 
    Dim mc As New ManagementClass("win32_processor") 
    Dim moc As ManagementObjectCollection = mc.GetInstances() 
    For Each mo As ManagementObject In moc 
     If hwid = "" Then 
      hwid = mo.Properties("processorID").Value.ToString() 
      Exit For 
     End If 
    Next 
    Dim request As System.Net.HttpWebRequest = System.Net.HttpWebRequest.Create("https://www.dropbox.com/s/zewro4zubg9qc1s/HWID.txt") 
    Dim response As System.Net.HttpWebResponse = request.GetResponse() 
    Dim sr As System.IO.StreamReader = New System.IO.StreamReader(response.GetResponseStream()) 
    Dim hwidcheck As String = sr.ReadToEnd 
    If hwidcheck.Contains(hwid) Then 
     MsgBox("This is the original copy!", "INFORTGEI", MessageBoxButtons.OK) 
     If DialogResult.OK = True Then 
      Close() 
     End If 
    Else 
     MsgBox("Contact the admin to activate the copy!", MessageBoxButtons.OK, "INFORTGEI") 
    End If 
End Sub 

任何建议?

在此先感谢。

+2

您的问题是(太)广泛。 a)你打算如何处理ID?那“安全”如何?它将如何取代用户登录? b)MD5散列不是加密,它是散列,c)MD5已过时。另外,请阅读[Ask]并参加[Tour] – Plutonix

+0

http://stackoverflow.com/questions/31746613/how-do-i-get-a-unique-identifier-for-a-device-within-windows- 10-通用检查答案有人解释如何获得HWID – Zerray

+0

我已阅读所有这些问题,并没有帮助我很好。首先,由于该程序仅用于单台公司计算机,因此这是我使用HWID的目的。其次,提高安全性是因为他们经常通过USB驱动器传递报告,如果有人获得了副本,他们可以轻松地进行调试并窃取,并且最终它不会替换登录表单,因为我仍然有登录表单,它只是一种为我的目的额外验证。你可以查看一些我试图解释我真正想要的代码。 –

回答

0

我找到了解决我的问题的方法。 这里是我的代码:

Dim hwid As String = String.Empty 
    Dim mc As New ManagementClass("win32_processor") 
    Dim moc As ManagementObjectCollection = mc.GetInstances() 
    For Each mo As ManagementObject In moc 
     If hwid = "" Then 
      hwid = mo.Properties("processorID").Value.ToString() 
      Exit For 
     End If 
    Next 
    Dim hash As List(Of String) = New List(Of String)(System.IO.File.ReadAllLines("..\HWID.txt")) 

    If Not hash.Contains(hwid) Then 
     MsgBox("Contact administrator to activate the hardware on the database.", MessageBoxButtons.OK, "INFORTGEI") 
     If DialogResult.OK = True Then 
      Close() 
     End If 
    Else 
     MsgBox("Activated sucessfully!", MessageBoxButtons.OK, "INFORTGEI") 
    End If 
相关问题