Jednoznacza identyfikacja systemu przez aplikację

Zaczęty przez Rysiu, 31 Październik 2011, 16:57

Rysiu

MAm pewnien problem.

Piszę program i zastanawiam się w jaki sposób BOINC weryfikuje danego hosta. Za pierwszym razem gdy zainstalujemy managera doda on nowego hosta do bazy BOINC. O ile się nie molę gdy odinstalujemy managera i po jakimś czasie jeszcze raz jego zainstalujemy to też przypisze zweryfikuje nam hosta jako tego już kiedyś dodanego.

W przypadku reinstalacji systemu, pomimo, że maszyna fizycznie będzie ta sama to BOINC doda do systemu innego hosta.

Manager BOINC wyciąga jakiś ID systemu, na którym jest uruchomiony?

Troll81

zapewne tworzy biorąc pod uwagę że każdy host ma ID w boinc który nijak ma się do innych numerków....

Rysiu

Ten ID z BOINC tutaj nic do gadania nie ma.

W Linuxie np. mamy polecenie hostid. Zwraca ono 32-bitową liczbę będącą unkalnym identyfikatorem hosta (wiadomo, że i tak może tarfić się, że kilka osób będzie miało takie samo).

Jeżeli się nie mylę ID z BOINC to zwykły klucz PK AI z tabeli hostów. Chodzi mi tutaj o samą procedurę unikalnej identyfikacji hosta dzięki czemu mamy zawsze pewność, że jest to host o ID X, a nie ID Y.


Rysiu

Z tego co widzę GUID to losowy string w jakimś tam standardzie.

Chodzi mi jednak o to, że w systemowi musi być jakiś taki string przypisany. Możemy wygenerować losowo własnego stringa, zapisać jago do jakiegoś pliku na dysku, a potem tylko porównywać tego stringa z umieszczonym w bazie i identyfikować hosta. Problem pojawia się w momencie gdy program nie będzie miał uprawnień do zapisu pliku w określonej lokalizacji (zakładamy, że może być on uruchomiony wszędzie) lub użytkownik sam skasuje/zmodyfikuje plik ze stringiem.

G

jest jeszcze BIOS. W jednym przypadku, gdzie do bios'a można było wprowadzić indywidualną nazwę kompa - reinstalka systemu nie przerwała ciągłości naliczania punktów Einsteina dla tej fizycznej maszyny. W pozostałych przypadkach mimo takiej samej nazwy usera nadawany jest nowy identyfikator.

Rysiu

Heh. Szukam rozwiązania możliwie najbardziej uniwersalnego.

Wariantem jaki najszybciej wpada mi do głowy jest wygenerowanie hasha (MD5) ze stringa [login] + [nazwa hosta] + [czas] i umieszczenie go w tym samym katalogu co znajduje się aplikacja.

Potem mając w bazie danych tego samego hasha możemy identyfikować hosta. Gdy plik z hashem zniknie to system dodaje nowego hosta i tyle.

Agbar

BOINC między innymi wykorzystuje hostname, czyli nazwę sieciową komputera. Dlatego lista hostów na stronie każdego projektu ma opcję "Połącz hosty z taką samą nazwą". Zero magii.