USB 카드 리더기를 사용하여 NFC 카드를 읽는 방법

USB 카드 리더기를 사용하여 NFC 카드를 읽는 방법

Linaro/Debian 운영 체제에서 USB 카드 리더를 통해 일부 NFC 카드를 읽어야 합니다.
USB 카드 리더에는 HID 프로필이 있습니다.
13.56MHz 카드가 제시되면 키패드가 코드를 반환합니다.

장치에 명령을 보내는 방법에 대해 읽었지만 (가상) 키보드이므로 명령을 보낼 수 없습니다. 어떤 장치에 명령을 보내야 합니까?
카드의 메모리를 덤프하는 방법은 무엇입니까?

감사해요

답변1

Marcus Müller의 답변에 대한 의견에서 독자가 Elatec TWN4 Multitech 2라고 말씀하셨습니다.

Elatec DevKit의 문서에 따르면 다양한 인터페이스를 지원하는 다양한 펌웨어 패키지가 있으며, 현재 리더기가 다른 펌웨어 패키지에 비해 매우 제한된 기능만 제공하는 USB 키보드 인터페이스 펌웨어를 사용하여 프로그래밍된 것으로 보입니다.

다양한 유형의 인터페이스를 활성화하려면 (안타깝게도 Windows 앱인 Elatec AppBlaster를 사용하여) 카드 리더에 다양한 펌웨어를 설치해야 합니다.

내가 올바르게 이해했다면 독자의 현재 펌웨어는 또는 입니다 TWN4_CK*.bix. TWN4_NK*.bix여기서 K는 USB 키보드 인터페이스를 나타냅니다.

대신, 가상 COM 포트 인터페이스(Linux에서와 같이)를 제공하는 하나 이상의 펌웨어 버전 TWN4_CC*.bix또는 Linux PCSClite에서 지원되는 USB CCID 호환 스마트 카드 판독기 인터페이스를 제공하는 하나 이상의 펌웨어 버전이 필요할 수 있습니다. + 대부분의 USB 스마트 카드 리더와 마찬가지로 libccid입니다(libccid 버전 1.4.28 이상이 필요함).TWN4_NC*.bix/dev/ttyACMxTWN4_CP*.bixTWN4_NP*.bix

선호하는 프로그래밍 인터페이스 유형에 따라 펌웨어를 선택해야 할 수도 있습니다. 가상 COM 포트 인터페이스는 테스트하기 가장 쉽지만 더 광범위한 애플리케이션을 개발하려는 경우 CCID 호환 인터페이스가 현명한 선택일 수 있습니다.

DevKit에는 다양한 리더와 애플리케이션을 위한 다양한 펌웨어 변형이 포함되어 있습니다. Elatec 카드 리더는 펌웨어에 일부 애플리케이션 코드 공간도 있으므로 임베디드 시스템의 일부로 사용되는 경우 애플리케이션별 펌웨어를 가질 수 있습니다.


NFC 카드의 메모리를 버리는 중... NFC 카드의 종류에 따라 다릅니다.

단순한 메모리 카드라면 카드 메모리를 버리는 일은 쉬울 것이다. 그러나 암호화 키나 기타 비밀을 보관하도록 설계된 스마트 카드인 경우 카드는 암호화 키를 읽을 수 없도록 설계되었을 가능성이 높습니다. 대신 데이터를 암호화/해독하려는 내용과 함께 카드에 명령을 보내기만 하면 됩니다. 카드 프로세서는 실제 키를 공개하지 않고 작업을 수행합니다.

이러한 스마트 카드의 프로세서는 카드 판독기를 통해 엄격하게 제한된 API를 제공하는 하드 코딩된 프로그램을 실행합니다. 적절하게 설계되고 초기화된 스마트 카드는 내부 메모리에서 비밀을 덤프할 수 있는 방법이 전혀 없습니다.

답변2

USB HID를 통해 NFC 카드와 통신하기 위한 표준화된 프로필이 없다고 생각합니다. (나에게는 이해가 되지 않습니다. NFC는 실제로 키보드보다 직렬 링크에 가깝습니다.) 이는 일부 특정 카드 유형에 따라 다릅니다. FIDO U2F가 마음에 듭니다. U2F-over-USB-HID 사양이 있습니다.

따라서 제가 아는 한, 사용 중인 특정 리더 장치에 100% 의존합니다. 운 좋게도 해당 분야의 주요 플레이어는 일반적으로 최소한 Windows 드라이버 API 문서와 심지어 낮은 수준의 USB 설명도 게시합니다(예:HID 풀 키).

관련 정보