Рейтинг:
1
MadMyche
мне нужно создать подпись, используя комбинацию ipv4-адреса, mac-адреса, PC-Name, UserName
эта подпись будет уникальной для каждого ПК вне курса
есть ли какой-нибудь способ сделать это в c++ cli?
Несколько недостатков в мыслительном процессе:
1. IP-адрес уникален только в пределах сегмента локальной сети или подсети.
2. MAC-адрес может быть уникальным только для маршрутизатора и может быть изменен или подделан.
3. имя ПК может быть изменено
4. Имя пользователя может идентифицировать только пользователя, а не используемую машину.
я могу получить ipv4 адрес mac адрес имя пользователя имя ПК
но не могу придумать никакого способа сгенерировать уникальную подпись из всей этой информации, которая может однозначно идентифицировать ПК
Если вы удовлетворены тем, что ваши ущербные предпосылки сверху приемлемы, вы можете создать свой собственный
подпись с помощью
Hash
функция, такая как
дайджест сообщения люкс (MD2, MD4, MD5) или a
Безопасный Хэш-Алгоритм (SHA1 И АЛГОРИТМ SHA2)
Richard Deeming
Кроме того, 1a) IP-адрес может и будет меняться. :)
(Технически, публичные IP-адреса могут быть исправлены, если вы платите дополнительно. Внутренние IP-адреса могут быть исправлены, если вы не используете DHCP или настроили его на выдачу фиксированного адреса.)
Member 12899279
я думаю, что вы должны упомянуть латернтив, если вы думаете, что все вышеперечисленные вещи не могут быть уникальными и легко поддельными, а затем дать решение
я уже сказал что хочу сделать подпись включая все вышеперечисленные вещи которые каким то образом будут уникальны вот почему я не сказал просто ip4 или mac или pc name я сказал что буду использовать все это
я не смог найти cpu_id ПК с кодом c++, иначе это тоже было бы включено
Рейтинг:
0
Stefan_Lang
Имя пользователя вряд ли является частью идентификации ПК, а имя ПК - это просто имя-оно не имеет никаких гарантированных свойств, которые помогут вам идентифицировать конкретный ПК.
Что касается IPv4-адреса, то он не может быть уникальным, если он находится в локальной сети, по сравнению с адресами компьютеров в других локальных сетях. Более того, поскольку у нас закончились глобально уникальные IPv4-адреса, вы все равно не можете использовать их надежно.
Единственное, что вы можете использовать здесь, - это mac-адрес. Хотя его можно подделать, он гарантированно будет уникальным во всем мире. Поэтому вам необходимо преобразовать свой mac-адрес в IPV6. Я уверен, что вы можете найти информацию об этом в разных местах, например здесь: Преобразование из MAC в IPv6 - переполнение стека[^]
IPV6-адрес будет глобально уникальным, при условии, что mac-адрес является подлинным.
phil.o
Теперь mac - адрес можно легко подделать, поэтому его уникальность сильно скомпрометирована. Единственное, что в конечном итоге можно сказать, это то, что mac-адрес может быть предоставлен уникальным только в своем сегменте сети (если это не так, маршрутизатор начнет жаловаться).
Stefan_Lang
Вот почему я сказал: "при условии, что mac-адрес подлинный".
Если есть лучший способ идентифицировать конкретный компьютер, я об этом не знаю.
MadMyche
Ничего особенного на стороне сервера; но на стороне клиента есть методы, такие как те, которые используются для активации продукта Windows
Stefan_Lang
Существует множество (нелегальных) сайтов, предлагающих ключи продукта Windows 10. Не существует 100% безопасного метода.
Member 12899279
так что если я добавлю uuid вместе с mac-адресом, это все равно не сделает его уникальным?если да, то будьте добры сообщить решение также вместо того, чтобы просто сказать, что все упомянутые вещи не уникальны и не могут быть использованы коллективно для уникальной идентификации ПК
Stefan_Lang
Mac-адрес *раньше был* глобально уникальным, но, к сожалению, некоторые (или большинство?) сетевые карты предлагают способ его изменить. AFAIK эта функциональность была введена, чтобы помочь управлять локальными сетями, так что Mad Myche прав в том, что на них можно положиться только до уровня маршрутизатора вашей локальной сети.
В зависимости от ваших потребностей вы можете собрать информацию, связанную с оборудованием, которая не может быть легко изменена, например идентификатор материнской платы или процессора, и объединить эти значения в хэш. Но я не могу помочь с подробностями о том, как их получить.