Уникальный идентификатор компьютера
От: depressman  
Дата: 20.03.05 17:37
Оценка:
Вопрос вот какой: что можно использовать в качестве уникального идентификатора компьютера? В идеале — id материнки или процессора, но насколько я понимаю через Win32_Processor и тп их получится получить только в NT/2k/XP, что не есть гут, так как нужно что бы всё работало и на win9x. Можно было бы использовать mac-адрес сетевой карты, но не факт, что на компе она будет.
Какие будут предложения?
Использовать что-либо программное нежелательно, так как идентификация должна проходить и после переустановки ОС.
Re: Уникальный идентификатор компьютера
От: Vit1251 Россия  
Дата: 20.03.05 17:58
Оценка:
"depressman" <33263@users.rsdn.ru> сообщил/сообщила в новостях следующее: news:1081107@news.rsdn.ru...

> Вопрос вот какой: что можно использовать в качестве уникального идентификатора компьютера? В идеале — id материнки или процессора, но насколько я понимаю через Win32_Processor и тп их получится получить только в NT/2k/XP, что не есть гут, так как нужно что бы всё работало и на win9x. Можно было бы использовать mac-адрес сетевой карты, но не факт, что на компе она будет.

> Какие будут предложения?
> Использовать что-либо программное нежелательно, так как идентификация должна проходить и после переустановки ОС.

Попробуй серийник от винчестера! Хотя конечно и его можно поменять!
Posted via RSDN NNTP Server 1.9
Re: Уникальный идентификатор компьютера
От: MShura  
Дата: 20.03.05 18:08
Оценка:
Здравствуйте, depressman, Вы писали:

D>Вопрос вот какой: что можно использовать в качестве уникального идентификатора компьютера? В идеале — id материнки или процессора, но насколько я понимаю через Win32_Processor и тп их получится получить только в NT/2k/XP, что не есть гут, так как нужно что бы всё работало и на win9x. Можно было бы использовать mac-адрес сетевой карты, но не факт, что на компе она будет.

D>Какие будут предложения?
D>Использовать что-либо программное нежелательно, так как идентификация должна проходить и после переустановки ОС.

А что будешь делать, если WMI отключена? (например как у меня)
Закладываться на WMI нельзя.
Re: Уникальный идентификатор компьютера
От: MShura  
Дата: 20.03.05 18:16
Оценка:
Здравствуйте, depressman, Вы писали:

D>Вопрос вот какой: что можно использовать в качестве уникального идентификатора компьютера? В идеале — id материнки или процессора, но насколько я понимаю через Win32_Processor и тп их получится получить только в NT/2k/XP, что не есть гут, так как нужно что бы всё работало и на win9x. Можно было бы использовать mac-адрес сетевой карты, но не факт, что на компе она будет.

D>Какие будут предложения?
D>Использовать что-либо программное нежелательно, так как идентификация должна проходить и после переустановки ОС.

Получить, CPU ID можно в любой OS, главное чтобы CPU поддерживал соответствующую инструкцию.
Re[2]: Уникальный идентификатор компьютера
От: depressman  
Дата: 20.03.05 18:46
Оценка:
Здравствуйте, Vit1251, Вы писали:

V>Попробуй серийник от винчестера! Хотя конечно и его можно поменять!


Как? Через WMI не пойдёт... Хотя бы потому что опять Win32_DiskDrive требует NT/2k/XP. Если есть вариант по-другому напиши поподробнее плиз.
Re[2]: Уникальный идентификатор компьютера
От: depressman  
Дата: 20.03.05 18:55
Оценка:
Здравствуйте, MShura, Вы писали:

MS>Закладываться на WMI нельзя.


MS>Получить, CPU ID можно в любой OS, главное чтобы CPU поддерживал соответствующую инструкцию.


На счёт WMI я в принципе уже понял, что не получится. Так что согласен.

Насчет CPUID. Я о нем с самого начала думал, но у интела в доках написано, что серийник доступен только для Pentium III.
Для EAX = 3h:

ECX Bits 00-31 of 96 bit processor serial number. (Available in Pentium III
processor only; otherwise, the value in this register is reserved.)
EDX Bits 32-63 of 96 bit processor serial number. (Available in Pentium III
processor only; otherwise, the value in this register is reserved.)

Это был бы идеальный вариант... но никто не гарантирует, что на машине будет пень 3. Скорее всего вероятность больше, что там будет как раз не пень 3, а какой-нибудь селерон...
Re[3]: Уникальный идентификатор компьютера
От: MShura  
Дата: 20.03.05 21:11
Оценка:
Здравствуйте, depressman, Вы писали:

D>Здравствуйте, Vit1251, Вы писали:


V>>Попробуй серийник от винчестера! Хотя конечно и его можно поменять!


D>Как? Через WMI не пойдёт... Хотя бы потому что опять Win32_DiskDrive требует NT/2k/XP. Если есть вариант по-другому напиши поподробнее плиз.


Ищем в сорсах мою утилитку, показывающую температуру диска,
В структуре IDENTIFY_DATA есть поле

UCHAR  SerialNumber[20];                // 14  10-19

Это и есть серийный номер винта.
Работает под Win9x/NT/2K/XP
Опять же, S.M.A.R.T. поддерживают только нестарые IDE винчестеры.
Так что если у юзера, меньше пня и старый винт, по пусть никакой привязки не будет....
Re[4]: Уникальный идентификатор компьютера
От: depressman  
Дата: 20.03.05 23:00
Оценка:
Здравствуйте, MShura, Вы писали:

MS>Ищем в сорсах мою утилитку, показывающую температуру диска,

MS>В структуре IDENTIFY_DATA есть поле

MS>
MS>UCHAR  SerialNumber[20];                // 14  10-19
MS>

MS>Это и есть серийный номер винта.
MS>Работает под Win9x/NT/2K/XP
MS>Опять же, S.M.A.R.T. поддерживают только нестарые IDE винчестеры.
MS>Так что если у юзера, меньше пня и старый винт, по пусть никакой привязки не будет....

Сэнкс. Хотя хотелось бы конечно ид проца или материнки, но такую возможность тоже учтём.
Re[3]: Уникальный идентификатор компьютера
От: Alter_ Украина http://alter.org.ua
Дата: 21.03.05 08:43
Оценка:
Здравствуйте, depressman, Вы писали:

D>Здравствуйте, MShura, Вы писали:


MS>>Закладываться на WMI нельзя.


MS>>Получить, CPU ID можно в любой OS, главное чтобы CPU поддерживал соответствующую инструкцию.


D>На счёт WMI я в принципе уже понял, что не получится. Так что согласен.


D>Насчет CPUID. Я о нем с самого начала думал, но у интела в доках написано, что серийник доступен только для Pentium III.

D>Для EAX = 3h:
D>

D>ECX Bits 00-31 of 96 bit processor serial number. (Available in Pentium III
D>processor only; otherwise, the value in this register is reserved.)
D>EDX Bits 32-63 of 96 bit processor serial number. (Available in Pentium III
D>processor only; otherwise, the value in this register is reserved.)

D>Это был бы идеальный вариант... но никто не гарантирует, что на машине будет пень 3. Скорее всего вероятность больше, что там будет как раз не пень 3, а какой-нибудь селерон...

CPUID есть во всех Pentium'ах и в самых последних версиях i486.
Я это на wasm.ru совсем недавно видел с примером использования.

Тут еще стоит учесть, что бывают multiprocessor machines. Нужно пользоваться SetThreadAffinityMask().
--
Alter, http://alter.org.ua
Re: Уникальный идентификатор компьютера
От: Аноним  
Дата: 21.03.05 14:36
Оценка:
Здравствуйте, depressman, Вы писали:

D>Вопрос вот какой: что можно использовать в качестве уникального идентификатора компьютера? В идеале — id материнки или процессора, но насколько я понимаю через Win32_Processor и тп их получится получить только в NT/2k/XP, что не есть гут, так как нужно что бы всё работало и на win9x. Можно было бы использовать mac-адрес сетевой карты, но не факт, что на компе она будет.

D>Какие будут предложения?
D>Использовать что-либо программное нежелательно, так как идентификация должна проходить и после переустановки ОС.

1) Серийник винта/Vendor info HDD/CDROM, серийники лог. дисков.
2) МАС-адрес сетевухи.
3) Характеристики проца (CPUID+возможно серийник), но учти что его можно в биосе запретить, и что тогда ...
4) хеш с ROM BIOS.
5) кол-во и тип девайсов в PCI-Space
6) размер оперативки/наличие FDD/оличество HDD, CD-ROM

При разработке защиты на комп( а задача скорее всего такова),
желательно вычислять побольше параметров и допускать изменение одного(небольшой апгрейд).
Re[2]: Уникальный идентификатор компьютера
От: h0rnet Украина  
Дата: 21.03.05 14:41
Оценка:
А>1) Серийник винта/Vendor info HDD/CDROM, серийники лог. дисков.
А>2) МАС-адрес сетевухи.
А>3) Характеристики проца (CPUID+возможно серийник), но учти что его можно в биосе запретить, и что тогда ...
А>4) хеш с ROM BIOS.
А>5) кол-во и тип девайсов в PCI-Space
А>6) размер оперативки/наличие FDD/оличество HDD, CD-ROM

А>При разработке защиты на комп( а задача скорее всего такова),

А>желательно вычислять побольше параметров и допускать изменение одного(небольшой апгрейд).

Забыл войти — это писал я.
Re[4]: Уникальный идентификатор компьютера
От: Stanky  
Дата: 21.03.05 14:43
Оценка:
> CPUID есть во всех Pentium'ах и в самых последних версиях i486.
>
Как я понял выше говорится не о наличии самой команды, а о серийном номере процессора, возвращаемого ей!!!
Posted via RSDN NNTP Server 1.9
Не бойся выглядеть глупо, от этого ты выглядишь ещё глупей!!!
Re[5]: Уникальный идентификатор компьютера
От: depressman  
Дата: 21.03.05 21:46
Оценка:
Здравствуйте, Stanky, Вы писали:

S>Как я понял выше говорится не о наличии самой команды, а о серийном номере процессора, возвращаемого ей!!!


Именно это я и имел ввиду. С тем, что CPUID доступна никто не спорит Но вот насколько я понимаю серийник она вернёт только на Pentium III...
Re[3]: Уникальный идентификатор компьютера
От: depressman  
Дата: 21.03.05 22:19
Оценка:
Здравствуйте, h0rnet, Вы писали:

А>>1) Серийник винта/Vendor info HDD/CDROM, серийники лог. дисков.

А>>2) МАС-адрес сетевухи.
А>>3) Характеристики проца (CPUID+возможно серийник), но учти что его можно в биосе запретить, и что тогда ...
А>>4) хеш с ROM BIOS.
А>>5) кол-во и тип девайсов в PCI-Space
А>>6) размер оперативки/наличие FDD/оличество HDD, CD-ROM

А>>При разработке защиты на комп( а задача скорее всего такова),

А>>желательно вычислять побольше параметров и допускать изменение одного(небольшой апгрейд).

H>Забыл войти — это писал я.


Задача пока не в защите (хотя это в перспективе предполагается), а в идентификации для ведения логов. Пока я болше склоняюсь к mac-адресу, так как вероятность того что на компе будет сетевуха очень велика. Кроме того, возможно буду использовать серийник винта ну и кое что из остального перечисленного как дополнительный контроль...
Из остальных вариантов интересен BIOS. Как его определять из винды? Через WMI нежелательно — опять же проблемы с win9x... Можно поподробнее? Заранее сэнкс.
Re[3]: Уникальный идентификатор компьютера
От: Vit1251 Россия  
Дата: 22.03.05 03:41
Оценка:
"depressman" <33263@users.rsdn.ru> сообщил/сообщила в новостях следующее: news:1081161@news.rsdn.ru...

> Здравствуйте, Vit1251, Вы писали:

>>Попробуй серийник от винчестера! Хотя конечно и его можно поменять!
> Как? Через WMI не пойдёт... Хотя бы потому что опять Win32_DiskDrive требует NT/2k/XP. Если есть вариант по-другому напиши поподробнее плиз.
DOS чернойпелиной экран заполнил чистый DOS Открывай любой HEX редактор и меняй,
потом программульку нужно для записи чтения нужного куска диска...
Posted via RSDN NNTP Server 1.9
Re[4]: Уникальный идентификатор компьютера
От: Аноним  
Дата: 22.03.05 09:04
Оценка:
Здравствуйте, depressman, Вы писали:

D>Из остальных вариантов интересен BIOS. Как его определять из винды?

Раз уж мы в низкоуровневом, то все можно сделать в kernel-driver.
;==================================================================================================
; read HW info proc 1 (BIOS date)
;==================================================================================================
loc_547B4:
                 pusha
                 call    raise_irql

; выдрано без изменений - здесь формирование физического адреса
                 mov     eax, 0B3B6BF64h
                 ror     eax, 16h
                 xor     eax, 0FD2576h
                 rol     eax, 7
                 xor     eax, 542398h

                 push    0
                 push    10h
                 push    0
                 push    eax
                 call    [MmMapIoSpace]

                 mov     esi, [dword_5BB30] ; 8-байтовый буффер
                 push    dword [eax]
                 push    dword [eax+4]
                 pop     dword [esi+4]
                 pop     dword [esi]
; запомним на будущее, хотя можно сразу и освободить
                 mov     [dword_5B842], eax
                 call    restore_irql
                 popa
                 retn

Re[4]: Уникальный идентификатор компьютера
От: h0rnet Украина  
Дата: 22.03.05 11:05
Оценка:
Здравствуйте, Vit1251, Вы писали:

V>"depressman" <33263@users.rsdn.ru> сообщил/сообщила в новостях следующее: news:1081161@news.rsdn.ru...


>> Здравствуйте, Vit1251, Вы писали:

>>>Попробуй серийник от винчестера! Хотя конечно и его можно поменять!
>> Как? Через WMI не пойдёт... Хотя бы потому что опять Win32_DiskDrive требует NT/2k/XP. Если есть вариант по-другому напиши поподробнее плиз.
V>DOS чернойпелиной экран заполнил чистый DOS Открывай любой HEX редактор и меняй,
V>потом программульку нужно для записи чтения нужного куска диска...

Совсем не обязательно DOS, точнее никак не подойдет.
Конечно, под 9х и NT функции будут разными, но точно без WMI.
Под 9х, кажется напрямую ATAPI комманду послать можно, а под NT — DeviceIOControl.
Re[5]: Уникальный идентификатор компьютера
От: h0rnet Украина  
Дата: 22.03.05 11:09
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Здравствуйте, depressman, Вы писали:


D>>Из остальных вариантов интересен BIOS. Как его определять из винды?

А>Раз уж мы в низкоуровневом, то все можно сделать в kernel-driver.
А>[asm]
...
А>)

А из User-mode (то есть не из драйвера) у меня получилось только способом: сгенерить маленький COM файл, что под ДОСом читает память по адресу F000:0-FFFF:F и пишет в временный файл, потом даные с временного файла забираются, и он и СОМ стираются. Если кто знает другие способы, расскажите, так как танцевал с бубном неделю и ничего другого не получилось.
Re[6]: Уникальный идентификатор компьютера
От: MShura  
Дата: 22.03.05 13:17
Оценка:
Здравствуйте, h0rnet, Вы писали:

H>Здравствуйте, Аноним, Вы писали:


А>>Здравствуйте, depressman, Вы писали:


D>>>Из остальных вариантов интересен BIOS. Как его определять из винды?

А>>Раз уж мы в низкоуровневом, то все можно сделать в kernel-driver.
А>>[asm]
H>...
А>>)

H>А из User-mode (то есть не из драйвера) у меня получилось только способом: сгенерить маленький COM файл, что под ДОСом читает память по адресу F000:0-FFFF:F и пишет в временный файл, потом даные с временного файла забираются, и он и СОМ стираются. Если кто знает другие способы, расскажите, так как танцевал с бубном неделю и ничего другого не получилось.


Зайди сюда
http://www.internals.com/
и выкачай WinIO.
Re[4]: Уникальный идентификатор компьютера
От: Аноним  
Дата: 09.02.06 10:18
Оценка:
Здравствуйте, MShura, Вы писали:

MS>Ищем в сорсах мою утилитку, показывающую температуру диска,

MS>В структуре IDENTIFY_DATA есть поле

MS>
MS>UCHAR  SerialNumber[20];                // 14  10-19
MS>

MS>Это и есть серийный номер винта.
MS>Работает под Win9x/NT/2K/XP
MS>Опять же, S.M.A.R.T. поддерживают только нестарые IDE винчестеры.
MS>Так что если у юзера, меньше пня и старый винт, по пусть никакой привязки не будет....

Нельзя ли поточнее ссылку? Бьюсь об стену с этим серийником уже неделю.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.