저장 매체와 어떻게든 연결되어 있는 라이센스 시스템을 발견했습니다. 파일 시스템의 UUID를 기반으로 하는 것은 매우 간단하지만 나는 이것이 사실이라고 생각하지 않습니다(아래 참조). 이 동작의 일반적인 예는 다음과 같습니다.
- 부팅할 때마다 ID 파일이 생성됩니다.
- 시스템은 라이센스에 대한 키 파일을 확인합니다. 키가 ID와 일치하면 모두 좋습니다.
- 키가 없거나 키가 ID와 일치하지 않으면(예: 다른 시스템에서 복사한 경우) 라이선스가 유효하지 않습니다.
나는 다음과 같은 행동을 관찰했습니다.
- CF 카드를 완전히 지우고 다시 설치하면 동일한 ID 파일이 생성되므로 새 키 파일이 필요하지 않습니다.
- 다른 CF에서 동일한 키를 사용하면 새 ID 파일의 내용과 일치하지 않으므로 작동하지 않습니다.
이로 인해 CF 카드의 고유 ID를 어떻게든 얻을 수 있는 방법이 있다는 결론을 내릴 수 있었습니다. 리눅스에서 이것을 어떻게 달성할 수 있나요?
추신:나는 이와 같은 시스템이 어떻게 CF 카드의 고유 ID를 구축할 수 있는지 일반적인 측면에서 더 궁금하기 때문에 의도적으로 제품 자체에 대한 세부 정보를 생략했습니다.
답변1
카드에는 읽기 전용 방식으로 등록된 많은 정보가 있습니다.
기사내부 SD 카드 정보 읽기이런 말이 있습니다:
내부 SD 카드 정보
SD 카드에 대한 정보는 내부 카드 레지스트리에 인코딩됩니다. 이들 중 하나는카드 식별(CID)카드 일련 번호(PSN), 제조업체 ID 번호(MID) 및 제조 날짜(MDT)를 포함하여 SD 카드를 고유하게 식별하는 정보가 포함된 16바이트 코드를 등록합니다. CID 레지스터는 카드 제작 시 설정되며, 설정 후에는 변경할 수 없습니다. (SD 카드 사양에 따라 정보는 한 번만 기록되지만, 카드가 사양을 따르지 않는 경우 이 정보가 변경될 수 있습니다!)
SD 카드에서 CID를 읽는 방법
CID를 읽는 한 가지 방법은 SD 카드 슬롯이 있는 노트북을 사용하는 것입니다. 노트북의 카드 리더는 일반적으로 PCI 버스(또는 IDE 버스)를 통해 직접 연결됩니다. 카드 정보를 검색하는 명령이 가로채서 카드 리더가 이해할 수 없기 때문에 USB 카드 리더를 통해서는 작동하지 않습니다. 카드 슬롯이 내장된 모든 컴퓨터가 작동하는 것은 아니며 일부 내부 카드 리더는 USB 버스를 통해 연결됩니다.
적절한 하드웨어가 있다고 가정하면 카드 정보를 얻는 데 사용할 수 있는 여러 가지 방법이 있습니다. Linux에서는 내부 SD 카드 정보를 읽는 것이 간단합니다. 카드를 삽입하고 아래를 살펴보세요
/sys/block/mmcblk0/device/
. (이 위치는 기기에 따라 다를 수 있습니다.) CID 레지스터와 그 안에 있는 정보를 포함하여 사용 가능한 여러 속성을 볼 수 있습니다.
답변2
다른 사람들이 언급했듯이 CF 카드가 지워진 방식과 관련이 있을 수 있지만 소프트웨어가 카드의 펌웨어를 기반으로 CF 카드를 식별할 가능성이 더 높습니다.
이 정보 캡은 일반적으로 "udevinfo"를 사용하여 읽습니다. 예를 들어 CF 카드가 /dev/sdb udevinfo -a -p $(udevinfo -q path -n /dev/sdb)인 경우 여기에는 다음을 수행할 수 있는 충분한 정보가 포함될 가능성이 높습니다. 카드를 고유하게 식별합니다.
메모: 데비안 기반 배포판에서는 udevadm info
다음을 대체합니다 udevinfo
.
udevadm info -a -p $( udevadm info -q path -n /dev/sdb )