Russian Qt Forum

Qt => Дополнительные компоненты => Тема начата: nn1317 от Сентябрь 13, 2009, 23:44



Название: вычисление некоторого ~уникального id компа
Отправлено: nn1317 от Сентябрь 13, 2009, 23:44
Доброй ночи)
Понадобилось в проекте (я лишь винтик в большой системе lol) для онлайн игры сделать чтобы у каждого компа был некоторый уникальный id. То что это жутко неудобно я знаю сам, но свыше сказали что надо.
Итак, давайте подумаем, на какие данные о железе мы можем опираться при создании такой метки по крайней мере под Win. На Lin как я понимаю много проще, если есть возможность читать /proc/* :)
По моему мнению:
1. Процессор: частота, название
2. Материнка: фирма, модель (а если не стоят драйвера, то что тогда?), чипсет
3. Оперативка: объем, в идеале производитель+модель
4. Номер винчестера (а если SSSD как на нетбуках? - есть ли у него номер?)
5. Теоретически, можно юзать MAC-адрес(приложение то сетевое!) - но уж больно легко он меняется:)

Хотелось бы услышать мысли об этом списке и о том как можно взять всю эту инфу о системе в Qt (и можно ли вообще, или нужно WinAPI юзать?) если есть немного кода - поделитесь, буду очень признателен)


Название: Re: вычисление некоторого ~уникального id компа
Отправлено: spectre71 от Сентябрь 14, 2009, 10:56
Доброй ночи)
Понадобилось в проекте (я лишь винтик в большой системе lol) для онлайн игры сделать чтобы у каждого компа был некоторый уникальный id. То что это жутко неудобно я знаю сам, но свыше сказали что надо.
Итак, давайте подумаем, на какие данные о железе мы можем опираться при создании такой метки по крайней мере под Win. На Lin как я понимаю много проще, если есть возможность читать /proc/* :)
По моему мнению:
1. Процессор: частота, название
2. Материнка: фирма, модель (а если не стоят драйвера, то что тогда?), чипсет
3. Оперативка: объем, в идеале производитель+модель
4. Номер винчестера (а если SSSD как на нетбуках? - есть ли у него номер?)
5. Теоретически, можно юзать MAC-адрес(приложение то сетевое!) - но уж больно легко он меняется:)

Хотелось бы услышать мысли об этом списке и о том как можно взять всю эту инфу о системе в Qt (и можно ли вообще, или нужно WinAPI юзать?) если есть немного кода - поделитесь, буду очень признателен)

Либо "Материнка", либо "Винт"(на котором стоит система), все остальное точно не годиться, поскольку может меняться без переустановки системы и соответственно совта. Насколько помню у "Материнка" и "Винта" должны быть уникальные ID, которые можно использовать, но могу и ошибаться.



Название: Re: вычисление некоторого ~уникального id компа
Отправлено: ecspertiza от Сентябрь 14, 2009, 11:10
Занимался я подобной темой, под виндой тебе нужно использовать WMI под линуксом я использовал dmidecoder вроде,
кроссплатформенно это реализовать нельзя, тебе нужно брать версию( или номер) биоса точно непомню, параметры винта брать нельзя ибо юзверь сменил винт и всё Id уже другой.


Название: Re: вычисление некоторого ~уникального id компа
Отправлено: nn1317 от Сентябрь 14, 2009, 11:16
Да, я вспомнил этот кошмар с WMI еще со времен когда был на WInAPI)))
Положим номер материнки. Если не стоят драйвера на нее, этот номер можно будет прочитать?
И будут ли у меня права на это, если пользователь не администратор компа?)

>параметры винта брать нельзя ибо юзверь сменил винт и всё Id уже другой.
много как бы чего нельзя брать из моего списка, но я же говорю - затея сама по себе тупиковая, но раз надо...;)


Название: Re: вычисление некоторого ~уникального id компа
Отправлено: ecspertiza от Сентябрь 14, 2009, 11:16
Щас глянул исходники вот что я брал от BIOS

BIOSVersion
ReleaseDate
SerialNumber
SMBIOSMajorVersion
SMBIOSMinorVersion

вот вобщем и всё, ID уже будет по любому уникален. И не нужно заморачиваться насчёт процессора и т.д.

Ну мы тоже запускаем софт с такой фичей, без админских прав вроде работает.

Как видишь в данном случае номер мамки тебе и ненужен. А стало быть и заморачиваться ненужно.


Название: Re: вычисление некоторого ~уникального id компа
Отправлено: spectre71 от Сентябрь 14, 2009, 12:04
Щас глянул исходники вот что я брал от BIOS

BIOSVersion
ReleaseDate
SerialNumber
SMBIOSMajorVersion
SMBIOSMinorVersion

вот вобщем и всё, ID уже будет по любому уникален. И не нужно заморачиваться насчёт процессора и т.д.

Ну мы тоже запускаем софт с такой фичей, без админских прав вроде работает.

Как видишь в данном случае номер мамки тебе и ненужен. А стало быть и заморачиваться ненужно.

1) Нет смысла брать в состав ключа те или иные значения версий, поскольку
- они не являются уникальными
- а при наличии уникального ID, он уже достаточен и  значения версий просто мусор.

2) Если можно взять уникальный ID Материнки или HDD(на котором стоит система), то не надо заморачиваться , поскольку юзвер при ее смене однозначно должен переставить ПО, за исключением некоторых случаев(например копирование Ghost-ом и подобное, а при смене материнки еще и замена дров после копирования), на что можно смело забить и документировать в своей проге(что это запрещено или следует заново пройти регистрацию)



Название: Re: вычисление некоторого ~уникального id компа
Отправлено: st0nx от Сентябрь 14, 2009, 12:21
ID процессора уникален.  ;)
Материнка и оперативка отпадает сразу. На счет жесткого не слышал.


Название: Re: вычисление некоторого ~уникального id компа
Отправлено: spectre71 от Сентябрь 14, 2009, 12:36
ID процессора уникален.  ;)
Материнка и оперативка отпадает сразу. На счет жесткого не слышал.
Процессор, память, сетевуха итд отпадают сразу!!! Поскольку при их смене нет необходимости переинсталлировать ПО!!!
Только материнка или диск(обязательно тот на котором система). Именно у них нужно искать уникальный ID


Название: Re: вычисление некоторого ~уникального id компа
Отправлено: ecspertiza от Сентябрь 14, 2009, 12:43

1) Нет смысла брать в состав ключа те или иные значения версий, поскольку
- они не являются уникальными
- а при наличии уникального ID, он уже достаточен и  значения версий просто мусор.
[/quote]

Тогда вполне хватит

ReleaseDate
SerialNumber

Но к харду я бы привязываться нестал бы.


Название: Re: вычисление некоторого ~уникального id компа
Отправлено: ufna от Сентябрь 14, 2009, 12:50
Как пользователь, скажу - ненавижу привязки к оборудованию :))) Я в игрушки онлайновские играю с разных компов, чаще всего когда в гости к брату приезжаю. И чего делать?
Ересь это вообще в своем проявлении. Привязка к логину должна быть, как у всех и делается.

А если по сабжу - имхо, только биос или материнка. Иначе юзер будет вас ненавидеть :)))


Название: Re: вычисление некоторого ~уникального id компа
Отправлено: spectre71 от Сентябрь 14, 2009, 13:18
Тогда вполне хватит
ReleaseDate
SerialNumber
ReleaseDate - не имеет смысла(не уникальна), я об этом только-что писал


Название: Re: вычисление некоторого ~уникального id компа
Отправлено: spectre71 от Сентябрь 14, 2009, 13:22
Как пользователь, скажу - ненавижу привязки к оборудованию :))) Я в игрушки онлайновские играю с разных компов, чаще всего когда в гости к брату приезжаю. И чего делать?
Ересь это вообще в своем проявлении. Привязка к логину должна быть, как у всех и делается.

А если по сабжу - имхо, только биос или материнка. Иначе юзер будет вас ненавидеть :)))
Задачи бывают разные, естественно что если возможно, лучше не делать привязки к железу!
А биос - часть материнки, так что можно использовать любой уникальный ID который можно програмно получить с незаменяемых микросхем материнской платы.


Название: Re: вычисление некоторого ~уникального id компа
Отправлено: kuzulis от Сентябрь 14, 2009, 13:36
Цитировать
А биос - часть материнки, так что можно использовать любой уникальный ID который можно програмно получить с незаменяемых микросхем материнской платы.
А можно перепрошить же!!!

Хотя можно это использовать в связке с sn процессора :) + sn видяхи + sn оперативы , чтобы уж точно не обманули!


Название: Re: вычисление некоторого ~уникального id компа
Отправлено: spectre71 от Сентябрь 14, 2009, 13:44
Цитировать
А биос - часть материнки, так что можно использовать любой уникальный ID который можно програмно получить с незаменяемых микросхем материнской платы.
А можно перепрошить же!!!

Хотя можно это использовать в связке с sn процессора :) + sn видяхи + sn оперативы , чтобы уж точно не обманули!
Препрошить уникальный серийный номер? :)
Когда вы научитесь читать  с начала, по поводу процессора, видяхи итд уже говорилось


Название: Re: вычисление некоторого ~уникального id компа
Отправлено: SABROG от Сентябрь 14, 2009, 14:21
А привязка к железу нужна, чтобы если пользователя забанили, то он не смог бы перерегистрироваться сменив IP адрес или воспользовавшись прокси? Или чтобы отловить пользователей, которые с одного компа заводят много игровых аккаунтов?


Название: Re: вычисление некоторого ~уникального id компа
Отправлено: nn1317 от Сентябрь 14, 2009, 16:12
2SABROG: первый вариант)

спасибо всем за ответы)
может кто нить выложить Wbemidl.h и wbemuuid.lib?)


Название: Re: вычисление некоторого ~уникального id компа
Отправлено: Alp от Сентябрь 18, 2009, 23:29
А почему бы не взять за основу MAC-адрес сетевухи? Если проект онлайновый вряд ли окажется, что нет сетевой карты ;-) А МАС-и вроде как должны быть уникальными (пока кто-нибудь не полезет его руками менять, но это нечастая операция).


Название: Re: вычисление некоторого ~уникального id компа
Отправлено: spectre71 от Сентябрь 27, 2009, 09:14
А почему бы не взять за основу MAC-адрес сетевухи? Если проект онлайновый вряд ли окажется, что нет сетевой карты ;-) А МАС-и вроде как должны быть уникальными (пока кто-нибудь не полезет его руками менять, но это нечастая операция).
Потому что надо внимательнее читать тему, уже отвечали! А именно, поменял я сетевуху, вполне "законная" операция, и что - мне теперь переставлять или перерегистрировать прогрогу, - бред.


Название: Re: вычисление некоторого ~уникального id компа
Отправлено: Igors от Сентябрь 27, 2009, 11:17
Потому что надо внимательнее читать тему, уже отвечали! А именно, поменял я сетевуху, вполне "законная" операция, и что - мне теперь переставлять или перерегистрировать прогрогу, - бред.
Да, все привязки к железу будут иметь такую отрицательную сторону. Просто и хорошо привязаться к computer_name - и сделать и поддерживать легко. Но тогда надо убедить начальство, а это может быть невозможно  :)


Название: Re: вычисление некоторого ~уникального id компа
Отправлено: yesrus от Октябрь 10, 2009, 23:48
Как из qt в винде можно получить серийный номер материнки\биоса ?


Название: Re: вычисление некоторого ~уникального id компа
Отправлено: pastor от Октябрь 11, 2009, 11:21
Как из qt в винде можно получить серийный номер материнки\биоса ?

Средствами Qt никак, юзай WinAPI