Мне нужно вычислить идентификатор машины для компьютеров под управлением MacOS , но я не знаю, где получить информацию - например, серийные номера жестких дисков и т. Д. основное требование для моего конкретное приложение заключается в том, что пользователь не должен иметь возможность подделать его . Прежде чем вы начнете смеяться, я знаю, что это надумано, но, по крайней мере, по крайней мере , метод спуфинга должен требовать перезагрузки.
Лучшим решением будет решение на C / C ++ , но я возьму Objective-C, если другого выхода нет. Лучшее решение не требует привилегий root .
Любые идеи? Спасибо.
3 ответа
Предложение Эрика о system_profiler
(и лежащем в его основе, но недокументированном SystemProfiler.framework) - ваша лучшая надежда. Ваше основное требование невозможно, и любое решение без поддержки оборудования будет довольно быстро взломано. Но вы можете создать разумный уровень обфускации, используя system_profiler
и / или SystemProfiler.framework.
Я не уверен, что вам нужно здесь, но эти сообщения могут быть полезны:
- a> (это было связано с сетевой аутентификацией, что похоже на вашу проблему)
- Obfuscating Cocoa (это было больше связано с защитой от копирования, которая может не быть вашей проблемой)
Я повторю здесь то, что я сказал в первом сообщении: невозможно, точка, невозможно надежно гарантировать, что только ваш клиент может разговаривать с вашим сервером. Если это ваше основное требование, это не решаемая проблема. Я расширю это, сказав, что невозможно построить вашу программу так, чтобы люди не могли снимать с вас проверку, поэтому, если целью является лицензирование, это также не является полностью решаемой проблемой. Во втором посте выше обсуждается, как думать об этой проблеме с деловой, а не с инженерной точки зрения.
РЕДАКТИРОВАТЬ: Что касается вашего запроса на перезагрузку, помните, что Mac OS X имеет расширения ядра. Загрузив расширение ядра, всегда можно изменить то, как система видит себя во время выполнения без перезагрузки. В принципе, это был бы руткит Mac, который в принципе не сложнее руткита Linux. Вам необходимо тщательно продумать, кто ваш злоумышленник, но если среди ваших злоумышленников есть хакеры ядра Mac (что не является незначительной группой), то даже требование перезагрузки не является правдоподобным. Это не значит, что спуфинг не может раздражать большинство пользователей. Просто это всегда возможно для достаточно компетентного злоумышленника. Это верно для всех современных ОС; про Mac здесь нет ничего особенного.
Инструмент / usr / sbin / system_profiler может предоставить вам список серийных номеров для различных аппаратных компонентов. Вы можете использовать эти значения в качестве текста для генерации хэша md5 или чего-то подобного.
Как насчет получения MAC-идентификатора сетевой карты, подключенной к компьютеру с помощью ifconfig
?
Похожие вопросы
Связанные вопросы
Новые вопросы
c++
C ++ - это язык программирования общего назначения. Первоначально он был разработан как расширение C и имеет аналогичный синтаксис, но теперь это совершенно другой язык. Используйте этот тег для вопросов о коде (который должен быть) скомпилирован с помощью компилятора C ++. Используйте тег для конкретной версии для вопросов, связанных с конкретной версией стандарта [C ++ 11], [C ++ 14], [C ++ 17], [C ++ 20] или [C ++ 23] и т. Д. .