2014-02-06 2 views
9

플랫폼에 독립적 인 각 컴퓨터마다 고유 한 값을 찾고 있습니다. 이는 등록되지 않은 시스템에서 로그인 할 수 없도록 계정에 시스템을 등록하기위한 것입니다. 쉽게 변경할 수 있기 때문에 MAC 주소를 사용하고 싶지 않습니다. 아마도 여러 하드웨어 구성 요소의 ID를 가져와 결합하여 시스템의 고유 한 ID를 얻는 지 궁금합니다. 그러나 Java를 사용하여 해당 구성 요소에서 ID를 얻는 방법을 알지 못했습니다. 나는 약간의 조사를했고 CPU 일련 번호를 검색하는 방법을 발견했다. 그러나 임시 시각적 인 기본 명령/스크립트/무엇이든을 실행하는 것처럼 이것은 윈도우에서만 작동 할 것이다. 모든 정보를 주셔서 감사합니다.플랫폼 독립적 인 고유 한 컴퓨터 ID java

+3

사용자 공간 응용 프로그램에 대해 모든 것을 쉽게 스푸핑 할 수 있습니다. 대부분의 상용 하드웨어는 고유 ID가 일종의 읽기 전용 메모리로 번지 지 않습니다. –

+2

토론을 참조하십시오 http://stackoverflow.com/questions/2004666/get-unique-machine-id – Leo

+1

응답 해 주셔서 감사합니다. 나는 아직도 어떻게해야 할 지 잘 모르겠습니다. – user1009569

답변

0

MAC 주소를 스푸핑 할 수 있다는 것이 맞습니다. 한 가지 방법으로 스푸핑 할 수있는 machineId가 없기 때문에 기계 별 ID는 일반적으로 나쁜 아이디어입니다. Java의 전체적인 요점은 하드웨어에서 추상화되기 때문에 Java에 대한 더 나쁜 생각입니다. 실제로 JVM과 네트워크 스택만으로 세부 사항을 알 수 있습니다.

그럼 내가 볼 수있는 유일한 두 가지 옵션이 있습니다.

먼저 호스트 이름, 현재 클래스 경로, 시스템 등록 정보 및 JVM 값의 조합으로 구성된 해시를 생성 해 볼 수 있습니다. 이 줄을 따라 System.getenv() 또는 System.getProperties()에서 가져 오는 값을 확인할 수 있습니다.

두 번째 방법은 고유 한 런타임 API를 사용하여 시스템 특정 값을 반환하는 것이지만 특정 클라이언트가 지원하려고하는 각 OS 유형에 대해 실행할 명령. 예 :

Runtime.getRuntime(). exec ("some_command_line_prog_that_returns_sys_info");