Вопрос вот какой: что можно использовать в качестве уникального идентификатора компьютера? В идеале — id материнки или процессора, но насколько я понимаю через Win32_Processor и тп их получится получить только в NT/2k/XP, что не есть гут, так как нужно что бы всё работало и на win9x. Можно было бы использовать mac-адрес сетевой карты, но не факт, что на компе она будет.
Какие будут предложения?
Использовать что-либо программное нежелательно, так как идентификация должна проходить и после переустановки ОС.
"depressman" <33263@users.rsdn.ru> сообщил/сообщила в новостях следующее: news:1081107@news.rsdn.ru...
> Вопрос вот какой: что можно использовать в качестве уникального идентификатора компьютера? В идеале — id материнки или процессора, но насколько я понимаю через Win32_Processor и тп их получится получить только в NT/2k/XP, что не есть гут, так как нужно что бы всё работало и на win9x. Можно было бы использовать mac-адрес сетевой карты, но не факт, что на компе она будет. > Какие будут предложения? > Использовать что-либо программное нежелательно, так как идентификация должна проходить и после переустановки ОС.
Попробуй серийник от винчестера! Хотя конечно и его можно поменять!
Здравствуйте, depressman, Вы писали:
D>Вопрос вот какой: что можно использовать в качестве уникального идентификатора компьютера? В идеале — id материнки или процессора, но насколько я понимаю через Win32_Processor и тп их получится получить только в NT/2k/XP, что не есть гут, так как нужно что бы всё работало и на win9x. Можно было бы использовать mac-адрес сетевой карты, но не факт, что на компе она будет. D>Какие будут предложения? D>Использовать что-либо программное нежелательно, так как идентификация должна проходить и после переустановки ОС.
А что будешь делать, если WMI отключена? (например как у меня)
Закладываться на WMI нельзя.
Здравствуйте, depressman, Вы писали:
D>Вопрос вот какой: что можно использовать в качестве уникального идентификатора компьютера? В идеале — id материнки или процессора, но насколько я понимаю через Win32_Processor и тп их получится получить только в NT/2k/XP, что не есть гут, так как нужно что бы всё работало и на win9x. Можно было бы использовать mac-адрес сетевой карты, но не факт, что на компе она будет. D>Какие будут предложения? D>Использовать что-либо программное нежелательно, так как идентификация должна проходить и после переустановки ОС.
Получить, CPU ID можно в любой OS, главное чтобы CPU поддерживал соответствующую инструкцию.
Здравствуйте, 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, а какой-нибудь селерон...
Здравствуйте, 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 винчестеры.
Так что если у юзера, меньше пня и старый винт, по пусть никакой привязки не будет....
Здравствуйте, 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>Так что если у юзера, меньше пня и старый винт, по пусть никакой привязки не будет....
Сэнкс. Хотя хотелось бы конечно ид проца или материнки, но такую возможность тоже учтём.
Здравствуйте, 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().
Здравствуйте, 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
При разработке защиты на комп( а задача скорее всего такова),
желательно вычислять побольше параметров и допускать изменение одного(небольшой апгрейд).
А>1) Серийник винта/Vendor info HDD/CDROM, серийники лог. дисков. А>2) МАС-адрес сетевухи. А>3) Характеристики проца (CPUID+возможно серийник), но учти что его можно в биосе запретить, и что тогда ... А>4) хеш с ROM BIOS. А>5) кол-во и тип девайсов в PCI-Space А>6) размер оперативки/наличие FDD/оличество HDD, CD-ROM
А>При разработке защиты на комп( а задача скорее всего такова), А>желательно вычислять побольше параметров и допускать изменение одного(небольшой апгрейд).
> CPUID есть во всех Pentium'ах и в самых последних версиях i486. >
Как я понял выше говорится не о наличии самой команды, а о серийном номере процессора, возвращаемого ей!!!
Posted via RSDN NNTP Server 1.9
Не бойся выглядеть глупо, от этого ты выглядишь ещё глупей!!!
Здравствуйте, 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... Можно поподробнее? Заранее сэнкс.
"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
Здравствуйте, 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.
Здравствуйте, Аноним, Вы писали:
А>Здравствуйте, depressman, Вы писали:
D>>Из остальных вариантов интересен BIOS. Как его определять из винды? А>Раз уж мы в низкоуровневом, то все можно сделать в kernel-driver. А>[asm]
... А>)
А из User-mode (то есть не из драйвера) у меня получилось только способом: сгенерить маленький COM файл, что под ДОСом читает память по адресу F000:0-FFFF:F и пишет в временный файл, потом даные с временного файла забираются, и он и СОМ стираются. Если кто знает другие способы, расскажите, так как танцевал с бубном неделю и ничего другого не получилось.
Здравствуйте, h0rnet, Вы писали:
H>Здравствуйте, Аноним, Вы писали:
А>>Здравствуйте, depressman, Вы писали:
D>>>Из остальных вариантов интересен BIOS. Как его определять из винды? А>>Раз уж мы в низкоуровневом, то все можно сделать в kernel-driver. А>>[asm] H>... А>>)
H>А из User-mode (то есть не из драйвера) у меня получилось только способом: сгенерить маленький COM файл, что под ДОСом читает память по адресу F000:0-FFFF:F и пишет в временный файл, потом даные с временного файла забираются, и он и СОМ стираются. Если кто знает другие способы, расскажите, так как танцевал с бубном неделю и ничего другого не получилось.
Здравствуйте, 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>Так что если у юзера, меньше пня и старый винт, по пусть никакой привязки не будет....
Нельзя ли поточнее ссылку? Бьюсь об стену с этим серийником уже неделю.