![]() |
Eindeutige Identifikation eines PCs
Hallo zusammen,
wie ihr vllt schon mitbekommen habt programmiere ich ein MMOG in Delphi. Jetzt bin ich gerade dran Cheater bzw. Multiuser zu unterbinden und würde jetzt wissen welche Möglichkeiten ich da so habe. Also ich könnte die IP überprüfen, was aber da es ein Spiel ist oftmals ne "lokale" IP aus einem Schulnetzwerk sein kann. Das heisst ich brauch etwas anderes was ich mit Delphi auslesen kann was einen PC möglichst eindeutig identifiziert, völlig unabhängig wo auf der Welt sich der befindet, hinter wievielen Routern er steckt, ob "lokale" oder "globale" IP oder sonstwas. Habt ihr irgendwelche Ideen? MfG :angel: |
Re: Eindeutige Identifikation eines PCs
Die MAC-Adresse der Netzwerkkarte sollte (normalerweise) weltweit eindeutig sein.
|
Re: Eindeutige Identifikation eines PCs
Nimm die MAC, die sollte weltweit einmalig sein (kann aber gefaket werden). Alternativ kannst du jeden PC eine GUID erzeugen lassen und nimmst diese als Basis für deinen Vergleich.
|
Re: Eindeutige Identifikation eines PCs
Bekomm ich die MAC so ohne weiteres? Und vorallem.. hat wirklich jeder PC der auf irgendeine Weise aufs Internet zugreift eine Netzwerkkarte/MAC?
|
Re: Eindeutige Identifikation eines PCs
Zitat:
Zitat:
|
Re: Eindeutige Identifikation eines PCs
Zitat:
Wenn jemand ein Modem hat wirds kritisch, ansonsten: ja. Greetz alcaeus |
Re: Eindeutige Identifikation eines PCs
Zitat:
Was für eindeutigen Identifikationsmerkmale gibt es denn sonst noch? |
Re: Eindeutige Identifikation eines PCs
Geht es nicht über die CPU ID oder die Seriennummer der CPU?
Grüße Klaus |
Re: Eindeutige Identifikation eines PCs
Lies die Seriennummer von Windows aus (den Product Key), solange alles ein legales Betriebssystem haben solltest du eine eindeutige Nummer bekommen. :D
|
Re: Eindeutige Identifikation eines PCs
Zitat:
|
Re: Eindeutige Identifikation eines PCs
Code:
Number of installed CPUs: 1
Name of CPU vendor: AuthenticAMD Market Name of CPU: AMD Athlon(TM) XP1600+ Brand of CPU: 0 Signature of CPU: 00000000000000000000011001100010 Feature set of CPU: 00000011100000111111100111111111 Serial number of CPU: 000006620383F9FF00000000 Measured CPU Speed: 1398 MHz Calculated CPU Id: 2171-0759-9D6A-41F4 The following information has been extracted from the CPU signature: CPU Model: 6 CPU Model/Extended: 0 CPU Stepping Number: 2 Type of CPU: 0 Overdrive: FALSE CPU Family: 6 CPU Family/Extended: 0 List of CPU features (extracted from the CPU feature set): Bit 0: Floating Point Unit Bit 1: V86 Mode Extensions Bit 2: Debug Extensions - I/O breakpoints supported Bit 3: Page Size Extensions (4 MB pages supported) Bit 4: Time Stamp Counter and RDTSC instruction are available Bit 5: Model Specific Registers Bit 6: Physical Address Extensions (36-bit address, 2MB pages) Bit 7: Machine Check Exception supported Bit 8: Compare Exchange Eight Byte instruction available Bit 11: Fast system calls Bit 12: Memory Type Range Registers Bit 13: Page Global Enable Bit 14: Machine Check Architecture Bit 15: Conditional MOVe instructions Bit 16: Page Attribute Table Bit 17: 36 bit Page Size Extensions Bit 23: MultiMedia Extensions Bit 24: FXSAVE and FXRSTOR instructions Bit 25: SSE instructions Wie man sieht geht da auch was bei AMD - das Programm ist von hier ![]() Grüße Klaus |
Re: Eindeutige Identifikation eines PCs
Du wirst doch bestimmt auch Benutzerkonto besitzen, oder? Wenn ja, wo ist das Problem. Du merkst doch, wenn bereits einer angemeldet ist ... Dann verbietest du einfach eine zweite gleichzeitige Anmeldung oder trennst die Verbindung zum ersten ...
Achja. Und vergiss es einen PC eindeutig zu identifizieren. Was machst, wenn derjenige mal CPU tauscht bzw. ein anderes Indentifizierungsmerkmal ... P.S: Viel erfolg bei deinem Projekt. |
Re: Eindeutige Identifikation eines PCs
Zitat:
|
Re: Eindeutige Identifikation eines PCs
wie olli schon vorgeschlagen hat: lass beim ersten programmstart eine guid erzeugen. wenn sich mehrere accounts mit derselben guid einloggen, hast du deinen multi schon enttarnt...
|
Re: Eindeutige Identifikation eines PCs
also ich würd dann aber erst mal noch auf "multi-verhalten" prüfen. Sprich, dass er von einem Acc nur res zum hauptacc schiebt etc.
Denn es können ja auch mal zwei personen an einem pc spielen... |
Re: Eindeutige Identifikation eines PCs
Zitat:
|
Re: Eindeutige Identifikation eines PCs
Zitat:
|
Re: Eindeutige Identifikation eines PCs
Falsch verstanden^^
...please delete :wall: |
Re: Eindeutige Identifikation eines PCs
Auch auf Linux sollte es eine Variante wie GUIDs geben ...
|
Re: Eindeutige Identifikation eines PCs
Falsch verstanden^^
...please delete :wall: |
Re: Eindeutige Identifikation eines PCs
Zitat:
Hauptproblem wird aber hier sein: bei fast allen BIOSen ist dieses Feature disabled (bzw. das BIOS disabled es in der CPU) |
Re: Eindeutige Identifikation eines PCs
hab keinen PIV, aber das mit dem im BIOS abschalten ist klar. Nur wollte Klaus ja sagen, dass AMDs das haben und das ist aber nicht so.
|
Re: Eindeutige Identifikation eines PCs
Zitat:
![]() ![]() |
Re: Eindeutige Identifikation eines PCs
Ich les grad die ganze Zeit "Linux"
Ich progge en Client in Delphi, da iss nich viel mit Linux oder? Der Client kommuniziert dann mit PHP-Skripten auf dem Server. Funzt alles wunderbar. Nur weis ich eben nich wie ich den PC identifizieren soll.. 1.IP werd ich auf jedenfall mal schicken 2.MAC falls vorhanden schick ich auch 3.hmm.. ma schaun.. Benutzernamen vielleicht? 4.Wo ihrs grad vom Bios habt.. kann man davon nich irgendwie ne version oder sowas auslesen? 5.noch en Vorschlag? Auf jedenfall werd ich die gesammelten Daten dann Analysieren und wenn etwas "verdächtiges" auftritt gleich mal bei den Benutzern nachhaken :zwinker: naja.. noch ne Menge Arbeit.. wenn sich des ma lohnt zu zeigen werd ich das Projekt mal hier in der Projektesparte vorstellen :-D Auf jedenfall mal ein großes Danke für die Vorschläge und wenn ihr noch weitere habt einfach noch posten.. ich bin ja fast jeden Tag hier :dp: |
Re: Eindeutige Identifikation eines PCs
Falsch verstanden^^
...please delete :wall: |
Re: Eindeutige Identifikation eines PCs
Zitat:
|
Re: Eindeutige Identifikation eines PCs
Zitat:
|
Re: Eindeutige Identifikation eines PCs
ok jetzt ist es klar^^
Hier noch ein Tip gegen Bots (Server PHP MYSQL) Und zwar lasse ich beim Formularaufruf (ist ne PHP-Datei) zum einen zwei Zufallszahlen generieren. Zum anderen lasse ich eine Textdatei erstellen, die $randomzahl1.txt heißt und in die lasse ich $randomzahl2 schreiben. Das Formular wird ausgefüllt und abgeschickt (mit beiden Random-Zahlen). Das aktiviert das schreiben-Script. Dieses öffnet die Textdatei. Liest die Zahl dort drin und vergleicht diese mit der übergebenen Variable $random2. Natürlich wird dann nur der DB geschrieben, wenn die Zahl, die aus dem Formular kommt mit der Zahl in der Textdatei übereinstimmt. Seriennummer einer Partition ermitteln Autoren: Keine Autoren angegeben Folgende Funktion gibt die Seriennummer einer Partition zurück. Ihr muss als Parameter der entsprechende Laufwerksbuchstabe übergeben werden:
Delphi-Quellcode:
Es handelt sich dabei nur um eine Nummer, die bei der Formatierung erzeugt wird.
function GetSerialNumber(const ADrive: Char): Integer;
var SerialNum: DWORD; Dummy: DWord; Buffer: array[0..255] of Char; begin Result := 0; if GetVolumeInformation(PChar(ADrive+':\'), Buffer, SizeOf(Buffer), @SerialNum, Dummy, Dummy, nil, 0) then Result:=SerialNum else RaiseLastOSError; end; RaiseLastOSError ist erst ab Delphi 6 verfügbar. Programmierer, die mit älteren Versionen arbeiten müssen an dieser Stelle RaiseLastWin32Error verwenden. Aufgerufen werden kann die Funktion beispielsweise so:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin Label1.Caption := IntToHex(GetSerialNumber('C'), 8); end;Der Rückgabewert wird als 8-stellige Hex-Zahl interpretiert. |
Re: Eindeutige Identifikation eines PCs
Eine interessante möglichkeit wäre auch ein Zeitwert im ms oder ns bereich von der windowsinstallation oder game installtion, der sollte eigentlich auch einmalig sein.
|
Re: Eindeutige Identifikation eines PCs
Zitat:
Aber der zeitpunkt der Windowsinstallation klingt nicht schlecht.. aber was ist bei Images, in der Schule hat das unser Lehrer so gemacht, das er Windows auf einem Rechner installiert hat und auf die anderen dann nurnoch ein Image gezogen hat. Da dürfte die Zeit doch immer die selbe sein oder? |
Re: Eindeutige Identifikation eines PCs
Moin Martin,
Zitat:
Wenn sich jetzt zwei (oder mehr) Personen einen Rechner teilen... |
Re: Eindeutige Identifikation eines PCs
Zitat:
Und ich werde das genauso regeln wie in den meisten anderen Spielen auch, ich werde das ersteinmal mitansehen was die zwei Accounts machen und wenn ich merke das alle Ressourcen vom einen in den anderen Account verschifft werden, wird der der die ganzen Ressourcen bekommt erst verwarnt und bei einem Wiederholen gelöscht. Das wird natürlich auch in den AGBs stehen damit sich am Ende keiner beschwert er hätte das nicht gewusst oder so. |
Re: Eindeutige Identifikation eines PCs
Moin Martin,
wenn ich Dich richtig verstehe dürfen also verschiedene Personen nicht am gleichen Rechner spielen, selbst wenn sie sich einen eigenen Account zugelegt haben. Daraus folgt für mich: Es müsste jeder, der spielen will auch einen eigenen Rechner haben. Dazu bitte ich Dich einmal folgendes zu überlegen: Wie viele Familien können sich das leisten? BTW: Bei welchem Programm soll das denn sein, wie von Dir angegeben? |
Re: Eindeutige Identifikation eines PCs
Das ist bei mehreren Browsergames so also spontan fallen mir ein:
Memania.de und Kapiland.de aber ich hab auch von anderen gehört das die meisten sich die IP merken um zu verhindern das man mehrere Accounts hat. BTW.. haben nicht Festplatten auch eindeutige Seriennummern die man auslesen kann? |
Re: Eindeutige Identifikation eines PCs
Zitat:
Erzeuge doch einfach beim ersten Programmstart eine GUID, die IST eindeutig (heisst ja auch global UNIQUE identifier). Dann kannst du dir dieses ganze seltsame Zeug was schon an Datenspionage grenzt sparen! |
Re: Eindeutige Identifikation eines PCs
mmhh.. bei den Jedis gibts die "TJvComputerInfoEx" da iss au was mit GUID drin.. iss die das schon? also muss ich dann nurnoch die auslesen?
Un iss diese GUID Rechnerspezifisch oder ändert die sich bei nem Userwechsel? Iss die immer gleich auf einem PC? Also auch nach nem Neustart? |
Re: Eindeutige Identifikation eines PCs
Eine GUID ist nicht rechnerspezifisch. Es ist einfach eine nach bestimmten Kriterien erzeugte Nummer, die weltweit eindeutig ist. Sie hat rein garnichts mit dem System des Benutzers oder ähnlichem zutun, davon ist sie völlig unabhängig.
Für Webservices brauchst du z.B. auch eine GUID. wenn du in Delphi Strg + Umschalt + G drückst, wird dir eine erzeugt. Ergo kann sie nicht rechnerspezifisch sein, da du beliebig viele davon erzeugen kannst. Nichtsdestotrotz ist sie eindeutig. Es gibt also auch nicht "DIE" GUID eines Rechners, die man irgendwo auslesen könnte. Du musst dir für deine Anwendung schon selber eine erzeugen... einmal beim Programmstart eben, ab dann ist jede Kopie deines Programmes sozusagen eindeutig identifizierbar. ![]() ![]() |
Re: Eindeutige Identifikation eines PCs
Öhm... eine GUID wird einfach erzeugt, wie eine zufallszahl. Und zwar eine Zufallszahl aus sehr vielen möglichen. Also ist es absolut möglich, dass zufällig (:zwinker:) mal eine gleiche GUID rauskommt... zwar nicht wahrscheinlich, aber möglich. Also im Zweifelsfalle, wenn der Server sagt, "die guid ist bereits registriert", ne neue machen.
|
Re: Eindeutige Identifikation eines PCs
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:18 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz