Что хороший путь состоит в том, чтобы однозначно определить компьютер?

Вот пример

public static void main(String[] args) {
    System.out.println(add5(1));
}

public static int add5(int a) {
    return add5(a) + 5;
}

. StackOverflowError в основном - это когда вы пытаетесь что-то сделать, что, скорее всего, называет себя и продолжает бесконечность (или до тех пор, пока не даст StackOverflowError).

add5(a) будет вызывать себя, а затем снова называть себя и т. д.

52
задан Paul Lefebvre 23 March 2009 в 00:19
поделиться

6 ответов

Другое решение состоит в том, чтобы использовать технологию лицензирования с аппаратный ключ . Это - небольшое устройство, которое включает USB или другой порт I/O на хосте, и служит уникальным, физическим ключом для активации программного обеспечения.

решение для трети А состоит в том, чтобы обеспечить менеджер лицензий . Таким образом, когда программное обеспечение запускает, оно запрашивает сервер в сети (или на LAN клиента, или иначе получил доступ в Вашей компании через Интернет), который проверяет это, использование клиентом программного обеспечения законно. Это - хорошее решение для "параллельных лицензий", таким образом, клиенты могут установить Ваше программное обеспечение на многих хостах, но Вы лицензируете его для одновременного использования на ограниченном количестве хостов. Издатель FLEXnet является примером решения для управления лицензиями.

MAC-адрес сетевой платы является решением, я использовал прошлый раз, когда я работал на компанию, которая лицензировала программное обеспечение для работы определенного хоста.

Однако я хочу предложить осторожность: если Вы делаете этот тип лицензирования, необходимо ожидать, что это станет продолжающаяся административная тяжелая работа для отслеживания лицензий клиентов. Как только у Вас есть несколько сотен клиентов, Вы будете поражены тем, как часто Вы заставляете телефонные вызовы с запросами изменять ключи

, "Мы обновили наш сервер до гигабитного сетевого адаптера, и теперь лицензия не будет работать, потому что новый адаптер имеет другой MAC-адрес".

Или иначе клиенты может заменить их целую машину, и нуждаться в обновленной лицензии для выполнения программного обеспечения на новой машине. Мы получали эти вызовы практически каждый день в компании, на которую я работал.

также необходимо доверить клиента, чтобы прекратить использовать программное обеспечение на старом компьютере (или сетевой адаптер), если Вы даете им новый ключ. Если Вы не могли бы доверять им для повиновения лицензии во-первых, как можно положить, что они выбросят старый ключ?

, Если Вы не планируете, как Вы собираетесь поддерживать это административное действие, не лицензируйте свой продукт таким образом. Вы только причините беспокойство своим хорошим клиентам, которые сотрудничали бы так или иначе.

38
ответ дан Bill Karwin 7 November 2019 в 19:26
поделиться

Вы могли бы рассмотреть стороннюю утилиту лицензирования, которая более вероятно разберется в этом и также предоставит Вам (или Ваш клиент) с дополнительными опциями, требования должны изменить (и всегда делать не их?). Я упомянул бы некоторые определенные по имени, но я действительно не глубоко знаком их.

1
ответ дан Ðаn 7 November 2019 в 19:26
поделиться

Раньше был порядковый номер, отпечатанный в ЦП, насколько я видел хотя; эта информация (PSN, Порядковый номер Pentium) была удержана от использования. Информация может возможно все еще существовать, но по крайней мере в мире P3 она закончилась. Кроме того, я думаю, что очевидный выбор MAC-адреса на NIC для основного интерфейса, используемого для хоста, нужно рассмотреть как реальную возможность. Если Ваш клиент не ожидает, что интерфейсы Ethernet будут присутствовать на хостах, которым они продают.

1
ответ дан Suroot 7 November 2019 в 19:26
поделиться

Я буду играть защитника дьявола здесь и говорить Вам, что что-то вроде этого, вероятно, не лучшая вещь обсудить в "общественности".

После этих слов посмотрите на то, что другие, возможно, сделали и возможно изменяют к лучшему (или возьмите часть), это. MAC-адрес, как Вы сказали, должен возможно хорошо использовать. Я услышал, что Windows и другие программы используют информацию о жестком диске (порядковый номер) - согласно этот сайт , Windows Activation проверяет 10 различных объектов и превращает их в уникальный ключ.

10
ответ дан Nicholas H 7 November 2019 в 19:26
поделиться

Я просто использовал бы MAC-адрес для генерации ключа запроса, затем потребовал бы, чтобы пользователи зарегистрировались в клиенте. У Вашего клиента будет специальное приложение, которое берет тот ключ запроса и производит ключ активации, который пользователь может тогда использовать для активации программного обеспечения. После того, как активированный, работы программного обеспечения, просто работы - никакой иногда вызов по телефону домой для проверки и такого.

Это - то, если это было реальное требование. Моя первая задача состояла бы в том, чтобы попытаться убедить клиент, что это было плохой идеей.

причина состоит в том, что эти схемы практически никогда не препятствуют тому, чтобы Ваш код был взломан. Они действительно однако делают жизни Ваших подлинных клиентов тяжелее. Мне трудно думать о любой другой промышленности, которая старается изо всех сил раздражать ее подлинных клиентов из-за схем, которые никогда не достигают их целей (кроме правительственного сервиса, конечно:-).

, Если бы Вы должны , делают это, я просто сделал бы маркерное усилие выполнить договорное обязательство (не говорите Вашему клиенту это однако). Беря MAC-адрес (или случайное число, если, $DEITY запрещают, компьютер, не имел сетевой платы) как ключ запроса и использование программы ко всего XOR это со строкой ASCII для получения ключа активации, походит на осуществимый подход. Я также сохранил бы оба ключа, так как Вы не хотите, чтобы программное обеспечение деактивировалось, если они просто изменяют свою сетевую плату (или даже материнская плата) - они все еще видят, что как тот же компьютер и не будет счастливо, если программное обеспечение прекратит работать.

попытка Вашего кода быть взломанным независимо (если программа не является мусором, который я уверен, не имеет место) - этот метод даст Вашим подлинным клиентам путь для перемещения их программного обеспечения к другой машине, если компания Вашего клиента станет безразличной так или иначе (поддержка отбрасываний, обанкротился, и так далее).

основная проблема с [1 114] весь схемы, которые полагаются на уникальность небольшого количества аппаратных средств, состоят в том, что клиент может принять решение изменить тот бит аппаратных средств:

  • двоение их дискового содержания к более крупному жесткому диску заставляет порядковые номера HD измениться.
  • порядковые номера ЦП использования означают обновлять до последней Intel bigmutha, ЦП уничтожают Ваше программное обеспечение.
  • использование MAC-адреса означает, что они не могут изменить свой NIC.

Они могут все быть зафиксированы при помощи тех значений, чтобы создать ключ во время установки и только проверить по тому ключу, не измененному значению шесть месяцев вниз дорожка. Это означает, что необходимо сохранить запрос и значения активации, но обновления не потребуют, чтобы пользователи прошли процесс повторной активации их программного обеспечения. Верьте мне, они будут презирать Вас за то, что Вы имели необходимость сделать это.

5
ответ дан paxdiablo 7 November 2019 в 19:26
поделиться

Нет никакого верного способа однозначно определить компьютер, если Вы предполагаете, что компьютер создается со многими частями, которые могут быть заменены в конечном счете.

Некоторые аппаратные части - MAC-адрес, дисковый порядковый номер жесткого диска, даже последовательная материнская плата, и т.д. - являются несколькими хорошими источниками "уникальности", но как можно знать, решает ли клиент обновить часть, лицензия зависит от... быть подготовленной к некоторой поддержке клиентов. Также для учета то, что некоторые части могут имитироваться (MAC, являющийся одним из них).

проверка лицензий онлайн должна иначе пойти - можно ли управлять всем на стороне сервера и даже определить ли собственные правила для нее (сколько лицензий на клиент/установку, параллелизм, и т.д.), но большая вещь отметить - то, что происходит, когда соединение не может быть установлено?

4
ответ дан J.C. Inacio 7 November 2019 в 19:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: