Думаю для идентификации юзера использовать hostname+username+CPUID.
Проблема в том что если EAX=1 то значение EBX меняется само время от времени.
Я использую CPUID c EAX=0,1,2.
Скажите при каких режимах какие регистры можно использовать чтоб идентифицировать проц?
Здравствуйте, watchmaker, Вы писали:
W>Так всего-то нужно только страницу до раздела References домотать и увидеть в документации почему так происходит. Нарпимер, для intel и для amd.
В первом документе 69 страниц, во втором 38.
Я думал, чтоб получить ответ на свой вопрос мне не нужно будет читать все эти мегабайты текстов
Здравствуйте, Tasheehoo, Вы писали:
T>В первом документе 69 страниц, во втором 38. T>Я думал, чтоб получить ответ на свой вопрос мне не нужно будет читать все эти мегабайты текстов
Верно. Всё подряд читать и не нужно — это же справочник, а не книга
Здравствуйте, watchmaker, Вы писали:
W>Верно. Всё подряд читать и не нужно — это же справочник, а не книга
Ладно. В первом документе про EAX=1 говорится следующее:
EBX Bits 7-0: Brand Index
Bits 15-8: CLFLUSH line size. (Value returned * 8 = cache line size)
Valid only if CLFSH feature flag is set
Bits 23-16: Count of logical processors.
Valid only if Hyper-Threading Technology flag is set
Bits 31-24: Processor local APIC physical ID
Valid for Pentium 4 and subsequent processors
Я понимаю что тут написано но я не понимаю какие в моем случии биты меняются и почему.
Но мой основной вопрос: какие регистры можно использовать и быть увереным что они на одной машине и одном проце не будут меняться.
Здравствуйте, Tasheehoo, Вы писали:
T>Думаю для идентификации юзера использовать hostname+username+CPUID.
Я б не стал.
Hostname может меняться юзером. Кроме того, за венду не скажу, а в юнихе оно может зависеть от IP-адреса (а он можеть меняться, если подключение к сети не постоянное).
CPUID — штука вообще странная. Непонятно, какие в отношении его есть гарантии уникальности, неизменности и т.п. Более того, на всех виртуальных машинах в пределах одной физической CPUID, скорее всего, будет одинаковым.
Остается лишь username, но этого как-то мало.
Я бы посмотрел в сторону Volume Serial Number того диска, на который установлена система.
T> Bits 31-24: Processor local APIC physical ID
T> Valid for Pentium 4 and subsequent processors
T>
T> какие в моем случии биты меняются и почему.
Ну например APIC ID легко может меняться на многопроцессорных машинах — просто из-за того, что cpuid исполняется на разных процессорах.
T>Но мой основной вопрос: какие регистры можно использовать и быть увереным что они на одной машине и одном проце не будут меняться.
Если со стопроцентной уверенностью, то пожалуй никакие. Процессоры и виртуализация позволяют в большей или меньшей степени менять и подделывать ответы cpuid.
Здравствуйте, Pzz, Вы писали:
Pzz>CPUID — штука вообще странная. Непонятно, какие в отношении его есть гарантии уникальности, неизменности и т.п.
Это я и пытаюсь узнать.
Здравствуйте, watchmaker, Вы писали:
W>Если со стопроцентной уверенностью, то пожалуй никакие. Процессоры и виртуализация позволяют в большей или меньшей степени менять и подделывать ответы cpuid.
100% не нужно.
Значит я понял что использовать EBX при EAX=1 — нельзя. Хорошо. Остальные регистры для EAX=0,1,2 можно?
Здравствуйте, Tasheehoo, Вы писали:
Pzz>>CPUID — штука вообще странная. Непонятно, какие в отношении его есть гарантии уникальности, неизменности и т.п. T>Это я и пытаюсь узнать.
Вам этого никто не скажет, потому что есть очень много моделей CPU. А что будет с будущими процессорами, вообще неизвестно.
Здравствуйте, Pzz, Вы писали:
Pzz>Вам этого никто не скажет, потому что есть очень много моделей CPU. А что будет с будущими процессорами, вообще неизвестно.
Грусть.
Буду использовать hostname+username+CPUID(EAX=0)+MAC+hdd_system_drive_volume_ID. Думаю не плохо получится...