Keelog는 하드웨어 키로거 패밀리를 대중에 공개하기로 결정했습니다. 이 패밀리에는 풀 펌웨어 및 소프트웨어 소스 코드, 키로거 하드웨어 전기 회로도 및 문서가 포함되어 있습니다. 이 PS/2 키로거는 전 세계 수백 명의 사람들에 의해 조립되고 사용된 100% 운영 및 테스트된 장치입니다. 이 하드웨어 키로거의 작동 방식은 KeyGrabber PS/2와 유사합니다. 우리는 녹화된 키 입력 데이터를 검색하고 분석하기 위한 응용 프로그램 KeyGrab을 제공합니다. 그러나 이 DIY 하드웨어 키로거 프로젝트는 모든 결함이 있으며 있는 그대로 제공되며 어떠한 보증도 없음을 유의해주시기 바랍니다.
시작하기 전에 이 목록을 확인하여 이 하드웨어 키로거 프로젝트를 수행하는 데 필요한 모든 도구와 기술을 갖추고 있는지 확인하십시오:
하드웨어 키로거 프로젝트에는 다음 구성 요소가 필요합니다:
마지막으로, 하드웨어 키로거의 케이싱이 필요합니다. PS/2 연장 케이블과 4인치의 열수축 튜브를 구입하는 것이 좋은 아이디어입니다. 이것들은 이미 제작된 키로거 주변에 열적으로 감을 수 있습니다.
마이크로컨트롤러와 EEPROM부터 시작하여 구성 요소를 더해주세요. 사용되지 않는 IC 핀은 제거할 수 있습니다. 푸시 버튼이 접근 가능한지 확인하세요. 콘덴서를 장착할 때 올바르게 바이어스가 설정되어 있는지 확인하세요.
하드웨어 키로거를 가능한 한 소형으로 만들되 단락을 피하십시오. 장치가 완료된 후에는 제거하기 어려울 것입니다. 주요 구성 요소가 연결된 후 키로거 회로는 사진에 표시된 프로토 타입과 다소 비슷해야 합니다.
PS/2 커넥터를 키로거에 납땜하세요. PS/2 연장 케이블을 두 조각으로 잘라 각 부분을 따로 납땜하는 것이 좋은 아이디어입니다. 케이블의 한 부분에 히트 수축 튜브를 끼워 넣는 것을 잊지 마세요. 키보드와 컴퓨터 양쪽의 사용된 PS/2 핀 (CLK, DATA, VCC 및 GND)을 모두 연결하세요.
하드웨어 키로거 주변에 열 절연 튜브를 끌기 전에 구성 요소 사이에 약간의 접착제나 수지를 넣어 장치를 더 견고하게 만드는 것이 좋습니다. 마지막으로 열 절연 튜브를 끌어서 인두된 구성 요소 주위를 감싸도록 가열하고, 버튼에 접근할 수 있도록 작은 구멍을 낸 후 잘라냅니다.
하드웨어 키로거는 키보드와 컴퓨터 사이에 꽂히면 키 데이터 기록을 시작합니다. 키로거는 컴퓨터 작동에 완전히 투명하며 레코드 모드의 소프트웨어에서 감지할 수 없습니다. 키보드에서 보낸 모든 키 데이터는 64 kB 하드웨어 비휘발성 EEPROM 메모리에 기록됩니다. 레코드 모드는 컴퓨터에 설치된 운영 체제와 완전히 독립적입니다.
컴퓨터에서 PS/2 커넥터를 찾으세요.
키보드를 연결 해제하세요.
키보드 대신 하드웨어 키로거를 연결하십시오.
키보드를 키로거에 연결하세요. 컴퓨터 전원을 켜면 데이터 기록이 시작됩니다.
하드웨어 키로거가 키 데이터를 기록한 후 Windows 9X/Me/XP/2000을 실행하는 모든 PC에서 검색할 수 있습니다. 하드웨어 키로거는 키보드 키 스트로크를 시뮬레이션하여 이 작업을 수행합니다. 전송된 키 스트로크 데이터는 KeyGrab 애플리케이션에 의해 획득됩니다. 이 데이터가 컴퓨터로 전송되면 처리 및 분석이 가능합니다. 데이터 다운로드를 시작하려면 지침을 따르십시오.
KeyGrab 애플리케이션을 실행하세요.
키보드 대신 하드웨어 키로거를 연결하십시오. 키보드를 연결하지 마십시오.
KeyGrab 타이틀 바를 클릭하여 활성 애플리케이션으로 만듭니다.
데이터 다운로드를 시작하려면 하드웨어 키로거의 버튼을 누르세요. 전송 중에 활성 애플리케이션을 변경하지 마세요. 전송을 완료하려면 버튼을 다시 누르세요. 원하는 키 입력 데이터가 PC에 다운로드된 후에 이 작업을 수행하십시오.
하드웨어 키로거를 연결 해제하고 PS/2 키보드를 다시 연결하십시오.
KeyGrab 주 테이블로 키스트로크 데이터를 다운로드할 때, 녹음 중에 기록된 키 데이터를 표시하기 위해 자동으로 전처리됩니다. 데이터는 내림차순으로 전송되어 최근에 누른 키를 먼저 표시합니다. 오래 전에 발생한 키스트로크는 나중에 전송됩니다. 테이블을 수동으로 분석하거나 일부 검색 옵션을 사용할 수 있습니다.
사용자에게 흥미로운 유일한 열은 키(2)와 동작(3)입니다. 이 열은 눌린 키와 해제된 키를 코드화합니다. 녹화 중에 키 스트로크 기록을 보려면 막대를 스크롤하세요. 키포거 데이터는 역순으로 전송됩니다(최근 키포거 데이터 먼저).
Windows 9X/ME/2000/XP용 DIY 하드웨어 키로거 데이터 검색 및 분석 애플리케이션:
KeyGrab.zip (0.7MB)
AT89C2051 마이크로컨트롤러의 전체 소스 코드:
소스 코드 - diy.asm
사전 컴파일된 AT89C2051 하드웨어 키로거 펌웨어도 사용할 수 있습니다:
BIN 파일 - diy.bin, HEX 파일 - diy.hex
하드웨어 키로거를 사용할 때 발생할 수 있는 문제를 피하기 위해 이 섹션을 읽는 것을 권장합니다.
만약 PS/2 키보드 케이블을 자르면 내부에 6개의 전선이 있을 것입니다. 이 중 4개만 의미가 있습니다. 이 중 2개는 전원 라인입니다: 컴퓨터 전원 공급으로부터의 접지(GND) 및 +5 볼트(VCC). 나머지 2개의 전선은 비동기 전송 라인입니다: 데이터 라인(DATA)과 클럭 라인(CLK). 이 라인들이 오른쪽 그림에 나와 있는 DIN(a) 및 miniDIN(b) 커넥터 핀에 해당하는지 확인할 수 있습니다. 전송은 양방향이지만 키보드가 우세합니다. 키보드는 눌린 키에 대한 정보를 보냅니다. 데이터 청크는 시작 비트로 시작되는 1바이트만으로 구성되며, 패리티 및 스톱 비트로 끝납니다. 키보드는 데이터 라인에 연속적인 비트를 넣고 클럭 라인에 음의 임펄스로 클록을 걸어줍니다. 클록 주파수는 10...30 kHz입니다. 컴퓨터가 키보드로 정보를 보내려는 경우에는, PC가 잠시 동안 클럭 라인을 낮추고 키보드가 임펄스를 생성하기 시작할 때까지 기다립니다. 이 임펄스가 시작되면, 키보드는 자신의 문자를 데이터 라인에 클록합니다. 아래 그림에서 키보드에서 호스트(a) 및 호스트에서 키보드(b) 전송의 상태 다이어그램을 볼 수 있습니다. 이 프로토콜에는 물론 전송 중단, 문자 반복 등과 같은 몇 가지 예외 사항이 있습니다. 그러나 이러한 경우는 매우 드물습니다.
키보드 라인을 통해 실제로 전송되는 것은 무엇인가요? 부팅 시에는 키보드와 컴퓨터가 초기화 데이터를 보내며 정상 작동 중에는 키보드만 데이터를 보냅니다. 이는 발생한 모든 이벤트에 대한 데이터입니다. 이벤트란 키를 누르거나 놓는 것을 의미합니다. 표준 키를 누르면 해당하는 '스캔 코드'가 전송됩니다. 각 키는 정확히 하나의 스캔 코드를 가지며, 이는 스캔 코드 지도를 생성합니다. 키를 놓으면 먼저 특별한 240 (F0 hex) 바이트가 전송되고, 그 후에 키의 스캔 코드가 전송됩니다. 따라서 표준 키 입력은 라인을 통해 3개의 문자가 전송됩니다. 키를 잠시 누르고 있으면 해당 키의 스캔 코드가 설정된 반복 지연과 함께 계속 생성됩니다. 마침내 키를 놓으면 240 (F0 hex) 문자가 전송되고, 그 후에 스캔 코드가 전송됩니다. 일반 PC 키보드에는 홈, 엔드, 화살표 등과 같은 특수 키가 있어서 이 프로토콜이 여전히 좋은 프로토콜이 될 수 있습니다. 특수 키를 누르면 바이트 224 (E0 16진수)가 생성되고, 그 뒤에 스캔 코드가 이어집니다. 특수 키를 놓으면 시퀀스 224, 240 (E0, F0)가 발생하고, 그 뒤에 스캔 코드가 이어집니다. 일반 키와 특수 키는 모든 국가 키보드 레이아웃에서 공통적이며 스캔 코드 지도에 관련이 있습니다. 더 복잡한 이야기를 하자면, Print Screen과 Pause와 같은 두 가지 슈퍼 특수 키가 존재하며, 이러한 키를 누를 때는 여러 스캔 코드 시퀀스가 전송됩니다. 키보드 인터페이서에게는 이러한 키가 존재하지 않는 것이 가장 좋습니다.
마이크로컨트롤러는 항상 DATA 및 CLK 라인을 모니터링하여 모든 데이터를 획득합니다. 데이터는 라인을 따라 내려가는 동안 비휘발성 EEPROM 메모리에 기록됩니다. 이를 통해 사용자는 향후 키보드의 모든 이벤트에 대해 알 수 있습니다. 사용자가 녹음이 끝났다고 판단하고 버튼을 누르면 하드웨어 키로거는 재생 모드로 전환됩니다. 키보드는 분리되어 있어야 하며, 그렇지 않으면 데이터 흐름을 해석합니다. 키로거는 내부 하드웨어 메모리에서 키 데이터를 시뮬레이션하기 시작합니다. KeyGrab 애플리케이션이 활성화되어 있어야 하며, 키로거 하드웨어로부터의 데이터 흐름을 처리해야 합니다. 일반 키는 메모리에 쓰여진 것처럼 시뮬레이션되고, 특수 키는 2바이트 16진 코드를 사용하여 전송됩니다.