Elitepvpers HWID System

02/19/2011 18:49 Shkal#16
Wofür das ganze mit der DLL?

Die WinAPI bietet doch von Haus aus die Möglichkeiten HardwareIDs zu erzeugen.
[Only registered and activated users can see links. Click Here To Register...]

_WinAPI_UniqueHardwareID()
08/06/2011 16:17 KDeluxe#17
Da es manchmal Abweichungen der HWIDs des Scripts und der .dll gab habe ich die _MD5() Funktion entsprechend angepasst. Beide HWIDs sollten nun gleich sein.
12/22/2011 15:14 Tamin123456#18
Wo gebe ich meine HWID ein ?
12/22/2011 15:21 omer36#19
[Only registered and activated users can see links. Click Here To Register...]
ganz unten
01/14/2012 15:56 KDeluxe#20
Ich habe die UDF um eine Funktion erweitert: _GetHWIDData()

Diese Funktion gibt die Benutzerdaten in einem Array zurück. Falls ihr die HWID zu einem früheren Zeitpunkt generiert habt, könnt ihr diese als optionalen Parameter angeben. Andernfalls wird sie neu generiert.

Code:
$Array[0] = userid
$Array[1] = username
$Array[2] = joindate
$Array[3] = posts
$Array[4] = thanks
$Array[5] = usergroup
02/24/2012 22:28 KDeluxe#21
Ich hab ein paar Änderungen an der _GetHWIDData() Funktion vorgenommen. Falls es neue Einträge geben sollte (z. B. <usergroupX> um alle Benutzergruppen), oder sich die Anordnung ändern, hat die Funktion damit keine Probleme.

Code:
$Array[0][0] = Number of information returned
$Array[0][1] = Hardware ID
$Array[1][0] = 1st info
$Array[1][1] = 1st info value
$Array[2][0] = 2nd info
$Array[2][1] = 2nd info value
...
$Array[n][0] = nth info
$Array[n][1] = nth info value
03/22/2012 10:50 Lumi#22
Ich hab schon viele Leute gesehen, die ein HWID System haben, wo die Leute erst mit dem HWID Code freigeschaltet werden muss, damit er Zugang zu eine Datei hat o.ä.
Könnte ich fragen wie das Funktioniert ? :D
03/22/2012 12:45 KDeluxe#23
Code:
#include <EPVP_HWID.au3>

GUICreate("Test", 200, 200) ;GUI erstellen
$B_Exit = GUICtrlCreateButton("Beenden", 0, 0, 200, 200)

$Data = _GetHWIDData()
If IsArray($Data) Then
	;evtl. Thanks, Beiträge oder sonstiges überprüfen
	;If BedingungErfuellt Then
	GUISetState() ;GUI anzeigen
	;Else Fehlermeldung + Exit

	;...
	Do
		$Msg = GUIGetMsg()
		Sleep(25)
	Until $Msg == -3 Or $Msg == $B_Exit
Else
	MsgBox(48, "Fehler", "Du hast keine HWID angegeben!")
EndIf
Ich würde es allgemein nicht so machen, da es so einfach wäre den Check zu entfernen. Da das mit AutoIt allgemein sehr einfach ist, ist es auch wieder egal.
05/06/2012 14:44 Achat#24
Hallo KDeluxe!
Ich habe mir mal erlaubt, dein Script zu verbessern, ich hoffe das ist ok ;)
Und zwar habe ich Inetread mit Funktionen aus der WinHttp.au3 ersetz - es ist jetzt ca. 10x schneller im Laden der HWID-Daten

Code:
#include-once
#include <Winhttp.au3>
;=================================================================================================
; Function:			_GetHWIDData($HWID = 0)
; Description:		Checks the HWID and returns an array containing the user related informations
; Return Value(s):	On Success - Returns an array containing the user related informations.
;					On Failure - Returns false
;					@Error - 1 = Failed to get the HWID.
;							 2 = Failed to connect to the internet.
;							 3 = Failed to categorize the information.
; Author(s):		KillerDeluxe
; Modified :                 Achat
; Remark(s): 		The array returned is made up as follows:
;					$Array[0] = userid
;					$Array[1] = username
;					$Array[2] = joindate
;					$Array[3] = posts
;					$Array[4] = thanks
;					$Array[5] = usergroup
;=================================================================================================
Func _GetHWIDData($HWID = 0)
	Local $ReturnData[6], $URL = "api/hwid.php?hash="

	If $HWID == 0 Then
		$HWID = _GetHWID()
		If @error Then Return SetError(1, "", False)
	EndIf
#region Speed improvements by Achat (www.elitepvpers.com)
$hSession=_WinHttpOpen()
$hConnect=_WinHttpConnect($hSession,'www.elitepvpers.com')
$Source=_WinHttpSimpleRequest($hConnect,'GET',$URL&$HWID)
_WinHttpCloseHandle($hConnect)
_WinHttpCloseHandle($hSession)
#endregion
	If @error Then Return SetError(2, "", False)

	$Info = StringRegExp($Source, "<.*?>(.*?)</.*?>", 3)
	If @error Then Return SetError(3, "", False)

	For $i = 0 To 5
		$ReturnData[$i] = $Info[$i]
	Next

	Return $ReturnData
EndFunc
MfG
05/06/2012 14:49 Freddy​#25
Quote:
Originally Posted by Achat View Post
Hallo KDeluxe!
Ich habe mir mal erlaubt, dein Script zu verbessern, ich hoffe das ist ok ;)
Und zwar habe ich Inetread mit Funktionen aus der WinHttp.au3 ersetz - es ist jetzt ca. 10x schneller im Laden der HWID-Daten

Code:
#include-once
#include <Winhttp.au3>
;=================================================================================================
; Function:			_GetHWIDData($HWID = 0)
; Description:		Checks the HWID and returns an array containing the user related informations
; Return Value(s):	On Success - Returns an array containing the user related informations.
;					On Failure - Returns false
;					@Error - 1 = Failed to get the HWID.
;							 2 = Failed to connect to the internet.
;							 3 = Failed to categorize the information.
; Author(s):		KillerDeluxe
; Modified :                 Achat
; Remark(s): 		The array returned is made up as follows:
;					$Array[0] = userid
;					$Array[1] = username
;					$Array[2] = joindate
;					$Array[3] = posts
;					$Array[4] = thanks
;					$Array[5] = usergroup
;=================================================================================================
Func _GetHWIDData($HWID = 0)
	Local $ReturnData[6], $URL = "api/hwid.php?hash="

	If $HWID == 0 Then
		$HWID = _GetHWID()
		If @error Then Return SetError(1, "", False)
	EndIf
#region Speed improvements by Achat (www.elitepvpers.com)
$hSession=_WinHttpOpen()
$hConnect=_WinHttpConnect($hSession,'www.elitepvpers.com')
$Source=_WinHttpSimpleRequest($hConnect,'GET',$URL&$HWID)
_WinHttpCloseHandle($hConnect)
_WinHttpCloseHandle($hSession)
#endregion
	If @error Then Return SetError(2, "", False)

	$Info = StringRegExp($Source, "<.*?>(.*?)</.*?>", 3)
	If @error Then Return SetError(3, "", False)

	For $i = 0 To 5
		$ReturnData[$i] = $Info[$i]
	Next

	Return $ReturnData
EndFunc
MfG
Niemals. So wie KD es macht ist um längen besser
05/06/2012 14:57 Achat#26
Aber mit WinHttp lädt es schneller als mit Inetread.
05/06/2012 15:52 Freddy​#27
Quote:
Originally Posted by Achat View Post
Aber mit WinHttp lädt es schneller als mit Inetread.
Der Code der gelesen wird ist 8 Zeilen lang da ist das scheiß egal
05/06/2012 17:26 Achat#28
Quote:
Originally Posted by Freddy​ View Post
Der Code der gelesen wird ist 8 Zeilen lang da ist das scheiß egal
jetzt frag mal bei 100 HWIDs die Infos ab - dann hast du mit WinHttp schon einen sehr großen Geschwindigkeitsvorteil ;)
Man sollte Programme immer so schreiben, dass sie Ressourcen sparen und schnell sind.

MfG
05/06/2012 17:34 Freddy​#29
Quote:
Originally Posted by Achat View Post
jetzt frag mal bei 100 HWIDs die Infos ab - dann hast du mit WinHttp schon einen sehr großen Geschwindigkeitsvorteil ;)
Man sollte Programme immer so schreiben, dass sie Ressourcen sparen und schnell sind.

MfG
Die Computer haben doch keine 100 HWIDs
05/11/2012 19:22 KDeluxe#30
Bei grob überschlagen 250 Byte gibt es kaum eine Differenzen. Wirklich viel bringt die Änderung nicht, jedenfalls nicht die 10fache Geschwindigkeit.
Ich habe gezielt möglichst viele AutoIt Funktionen benutzt um keine Abhängigkeiten von anderen UDFs zu schaffen. Deshalb habe ich auch eine "eigene" MD5 UDF geschrieben und nicht die aus der Crypt.au3 verwendet. Außerdem möchte ich den Code so simpel wie möglich halten, damit ihn auch Anfänger (halbwegs) nachvollziehen können.