Keelog는 하드웨어 키로거 패밀리를 대중에 공개하기로 결정했습니다. 이 패밀리에는 풀 펌웨어 및 소프트웨어 소스 코드, 키로거 하드웨어 전기 회로도 및 문서가 포함되어 있습니다. 이 PS/2 키로거는 전 세계 수백 명의 사람들에 의해 조립되고 사용된 100% 운영 및 테스트된 장치입니다. 이 하드웨어 키로거의 작동 방식은 KeyGrabber PS/2와 유사합니다. 우리는 녹화된 키 입력 데이터를 검색하고 분석하기 위한 응용 프로그램 KeyGrab을 제공합니다. 그러나 이 DIY 하드웨어 키로거 프로젝트는 모든 결함이 있으며 있는 그대로 제공되며 어떠한 보증도 없음을 유의해주시기 바랍니다.

오픈 소스 DIY 하드웨어 키로거

시작하기 전에 이 목록을 확인하여 이 하드웨어 키로거 프로젝트를 수행하는 데 필요한 모든 도구와 기술을 갖추고 있는지 확인하십시오:

  • 일부 전자 하드웨어 경험
  • 납땜기
  • 마이크로컨트롤러 프로그래머(Atmel AT89CXX51 패밀리 지원)
오픈 소스 DIY 하드웨어 키로거 - 구성 요소

하드웨어 키로거 프로젝트에는 다음 구성 요소가 필요합니다:

  • Atmel AT89C2051 마이크로컨트롤러 (또는 AT89C1051, AT89C4051)
  • AT24C512 시리얼 EEPROM 칩 (또는 호환 가능)
  • 12 MHz 크리스탈
  • 커패시터 2 x 33p
  • 10 µF 콘덴서
  • 10 kΩ 저항
  • 작은 푸시 버튼
오픈 소스 DIY 하드웨어 키로거 - PS/2 케이블

마지막으로, 하드웨어 키로거의 케이싱이 필요합니다. PS/2 연장 케이블과 4인치의 열수축 튜브를 구입하는 것이 좋은 아이디어입니다. 이것들은 이미 제작된 키로거 주변에 열적으로 감을 수 있습니다.

먼저 키로거 마이크로컨트롤러 펌웨어를 프로그래밍하십시오. 프로그래머 소프트웨어를 시작하고 AT89C2051을 선택한 다음 바이너리 파일 또는 16진 버전으로 플래시를 쓸 수 있습니다. 또한 8051 컴파일러를 사용하여 소스 코드를 다시 컴파일할 수도 있습니다. 납땜은 아마도 프로젝트의 가장 어려운 부분일 것이며, 키포거 하드웨어는 가능한 한 작게 만들어져야 합니다. 아래의 키포거 하드웨어 도면은 구성 요소 간의 연결 방법을 보여줍니다.

오픈 소스 DIY 하드웨어 키로거 - 일부 전자 하드웨어 경험

마이크로컨트롤러와 EEPROM부터 시작하여 구성 요소를 더해주세요. 사용되지 않는 IC 핀은 제거할 수 있습니다. 푸시 버튼이 접근 가능한지 확인하세요. 콘덴서를 장착할 때 올바르게 바이어스가 설정되어 있는지 확인하세요.

오픈 소스 DIY 하드웨어 키로거 - 납땜

하드웨어 키로거를 가능한 한 소형으로 만들되 단락을 피하십시오. 장치가 완료된 후에는 제거하기 어려울 것입니다. 주요 구성 요소가 연결된 후 키로거 회로는 사진에 표시된 프로토 타입과 다소 비슷해야 합니다.

오픈 소스 DIY 하드웨어 키로거 - 커넥터

PS/2 커넥터를 키로거에 납땜하세요. PS/2 연장 케이블을 두 조각으로 잘라 각 부분을 따로 납땜하는 것이 좋은 아이디어입니다. 케이블의 한 부분에 히트 수축 튜브를 끼워 넣는 것을 잊지 마세요. 키보드와 컴퓨터 양쪽의 사용된 PS/2 핀 (CLK, DATA, VCC 및 GND)을 모두 연결하세요.

오픈 소스 DIY 하드웨어 키로거

하드웨어 키로거 주변에 열 절연 튜브를 끌기 전에 구성 요소 사이에 약간의 접착제나 수지를 넣어 장치를 더 견고하게 만드는 것이 좋습니다. 마지막으로 열 절연 튜브를 끌어서 인두된 구성 요소 주위를 감싸도록 가열하고, 버튼에 접근할 수 있도록 작은 구멍을 낸 후 잘라냅니다.

하드웨어 키로거는 키보드와 컴퓨터 사이에 꽂히면 키 데이터 기록을 시작합니다. 키로거는 컴퓨터 작동에 완전히 투명하며 레코드 모드의 소프트웨어에서 감지할 수 없습니다. 키보드에서 보낸 모든 키 데이터는 64 kB 하드웨어 비휘발성 EEPROM 메모리에 기록됩니다. 레코드 모드는 컴퓨터에 설치된 운영 체제와 완전히 독립적입니다.

오픈 소스 DIY 하드웨어 키로거 - 설치 1

컴퓨터에서 PS/2 커넥터를 찾으세요.

오픈 소스 DIY 하드웨어 키로거 - 설치 2

키보드를 연결 해제하세요.

오픈 소스 DIY 하드웨어 키로거 - 설치 3

키보드 대신 하드웨어 키로거를 연결하십시오.

오픈 소스 DIY 하드웨어 키로거 - 설치 4

키보드를 키로거에 연결하세요. 컴퓨터 전원을 켜면 데이터 기록이 시작됩니다.

하드웨어 키로거가 키 데이터를 기록한 후 Windows 9X/Me/XP/2000을 실행하는 모든 PC에서 검색할 수 있습니다. 하드웨어 키로거는 키보드 키 스트로크를 시뮬레이션하여 이 작업을 수행합니다. 전송된 키 스트로크 데이터는 KeyGrab 애플리케이션에 의해 획득됩니다. 이 데이터가 컴퓨터로 전송되면 처리 및 분석이 가능합니다. 데이터 다운로드를 시작하려면 지침을 따르십시오.

오픈 소스 DIY 하드웨어 키로거 - 녹음 모드 1

KeyGrab 애플리케이션을 실행하세요.

오픈 소스 DIY 하드웨어 키로거 - 녹음 모드 2

키보드 대신 하드웨어 키로거를 연결하십시오. 키보드를 연결하지 마십시오.

오픈 소스 DIY 하드웨어 키로거 - 녹음 모드 3

KeyGrab 타이틀 바를 클릭하여 활성 애플리케이션으로 만듭니다.

오픈 소스 DIY 하드웨어 키로거 - 녹음 모드 4

데이터 다운로드를 시작하려면 하드웨어 키로거의 버튼을 누르세요. 전송 중에 활성 애플리케이션을 변경하지 마세요. 전송을 완료하려면 버튼을 다시 누르세요. 원하는 키 입력 데이터가 PC에 다운로드된 후에 이 작업을 수행하십시오.

오픈 소스 DIY 하드웨어 키로거 - 녹음 모드 5

하드웨어 키로거를 연결 해제하고 PS/2 키보드를 다시 연결하십시오.

KeyGrab 주 테이블로 키스트로크 데이터를 다운로드할 때, 녹음 중에 기록된 키 데이터를 표시하기 위해 자동으로 전처리됩니다. 데이터는 내림차순으로 전송되어 최근에 누른 키를 먼저 표시합니다. 오래 전에 발생한 키스트로크는 나중에 전송됩니다. 테이블을 수동으로 분석하거나 일부 검색 옵션을 사용할 수 있습니다.

오픈 소스 DIY 하드웨어 키로거 - 데이터 분석

1 - 키보드 이벤트에서 사용하는 키로거 하드웨어 메모리의 위치 (16진수 형식).
2 - 캡처된 및 기록된 키 입력.
3 - 발생한 이벤트 - 키를 누르거나 놓음.
4 - PS/2 버스의 키 스트로크 스캔 코드 (16진수 형식).
5 - 녹음 중에 기록된 마지막 메모리 위치 (16진수 형식).
6 - 키로거 하드웨어 메모리 크기(킬로비트).

사용자에게 흥미로운 유일한 열은 키(2)와 동작(3)입니다. 이 열은 눌린 키와 해제된 키를 코드화합니다. 녹화 중에 키 스트로크 기록을 보려면 막대를 스크롤하세요. 키포거 데이터는 역순으로 전송됩니다(최근 키포거 데이터 먼저).

Windows 9X/ME/2000/XP용 DIY 하드웨어 키로거 데이터 검색 및 분석 애플리케이션:
KeyGrab.zip (0.7MB)

AT89C2051 마이크로컨트롤러의 전체 소스 코드:
소스 코드 - diy.asm

사전 컴파일된 AT89C2051 하드웨어 키로거 펌웨어도 사용할 수 있습니다:
BIN 파일 - diy.bin, HEX 파일 - diy.hex

오픈 소스 DIY 하드웨어 키로거 - KeyGrab

하드웨어 키로거를 사용할 때 발생할 수 있는 문제를 피하기 위해 이 섹션을 읽는 것을 권장합니다.

법적 책임

  1. 국가마다 키보드 데이터 기록에 대한 다른 법률이 있습니다. 법을 모르는 것은 그것을 따르지 않을 권리를 주지 않습니다. 저희의 이용약관을 읽어주세요.
  2. 이 하드웨어 키로거의 사용으로 인한 어떠한 손해나 피해에 대해 책임지지 않습니다.
  3. 이 장치를 사용하여 허가받지 않은 데이터, 특히 비밀번호, 은행 데이터, 기밀 통신 등을 가로채는 것은 범죄로 인정되는 경우가 대부분입니다.

키 데이터 로깅

  1. 하드웨어 키로거에는 64 kB의 비휘발성 EEPROM 메모리가 있습니다. 이 메모리가 가득 차면 쓰기가 다시 첫 번째 메모리 위치부터 시작됩니다. 가장 오래된 데이터가 손실됩니다.
  2. 메모리의 처음 128바이트는 마지막 메모리 액세스 주소 저장과 같은 구성 데이터를 위해 예약되어 있습니다. 마지막 메모리 액세스 주소는 대략 10초마다 업데이트됩니다.
  3. 필요하지 않을 때 하드웨어 키로거를 연결된 채로 레코드 모드로 두지 마십시오. 이렇게 하면 메모리가 사용되어 예전에 중요한 데이터가 덮어씌워질 수 있습니다.

키 데이터 전송

  1. 키스트로크 데이터를 검색하려면 적어도 100 MHz 펜티엄 클래스 컴퓨터와 Windows 9X/Me/XP/2000이 설치되어 있어야 합니다.
  2. 하드웨어 키로거는 키보드를 시뮬레이션하여 데이터를 컴퓨터로 전송합니다. 실제 키보드는 전송 중에 연결을 끊어야 합니다.
  3. 활성 애플리케이션은 KeyGrab이어야 합니다. 그렇지 않은 경우 Windows 또는 다른 애플리케이션이 하드웨어 키로거에서 오는 시뮬레이션된 키 스트로크를 해석하기 시작합니다.
  4. 키 스트로크 데이터는 역순으로 검색됩니다. 이는 최근 데이터를 먼저 제공하기 위한 것입니다. 매우 오래된 키보드 데이터를 얻으려면 잠시 기다려야 합니다. 전체 전송 프로세스는 최대 20분까지 소요될 수 있습니다.
  5. 전송은 버튼을 다시 눌러 수동으로 종료해야 합니다. 키 입력 데이터가 중복되기 시작할 때 이 작업을 수행하십시오.

PS/2 키보드 작동

  1. PS/2 키보드는 생각보다 조금 더 복잡합니다. 하드웨어 키로거가 기록한 원시 데이터를 분석하여 이를 알 수 있습니다. PC 키보드는 키를 누를 때마다 한 문자를 생성합니다. 키를 놓을 때는 앞에 240 (F0 16진수) 문자가 있는 문자가 다시 생성됩니다. 224 (E0 16진수) 문자를 사용하는 확장 키도 있습니다. 이에 대해 더 자세히 알아보려면 짧은 PS/2 키보드 프로토콜을 참조하십시오.
  2. 하드웨어 키로거에는 64 kB의 메모리가 있지만, 이는 64 천 개의 키 입력을 기억할 수 있다는 것을 의미하지는 않습니다. 한 개의 키 누름-해제 시퀀스는 표준 키에 3바이트, 확장 키에 5바이트가 필요합니다. 로깅은 상용 버전에서 최적화되었습니다.

배경

오픈 소스 DIY 하드웨어 키로거 - PS/2 신호 라인

만약 PS/2 키보드 케이블을 자르면 내부에 6개의 전선이 있을 것입니다. 이 중 4개만 의미가 있습니다. 이 중 2개는 전원 라인입니다: 컴퓨터 전원 공급으로부터의 접지(GND) 및 +5 볼트(VCC). 나머지 2개의 전선은 비동기 전송 라인입니다: 데이터 라인(DATA)과 클럭 라인(CLK). 이 라인들이 오른쪽 그림에 나와 있는 DIN(a) 및 miniDIN(b) 커넥터 핀에 해당하는지 확인할 수 있습니다. 전송은 양방향이지만 키보드가 우세합니다. 키보드는 눌린 키에 대한 정보를 보냅니다. 데이터 청크는 시작 비트로 시작되는 1바이트만으로 구성되며, 패리티 및 스톱 비트로 끝납니다. 키보드는 데이터 라인에 연속적인 비트를 넣고 클럭 라인에 음의 임펄스로 클록을 걸어줍니다. 클록 주파수는 10...30 kHz입니다. 컴퓨터가 키보드로 정보를 보내려는 경우에는, PC가 잠시 동안 클럭 라인을 낮추고 키보드가 임펄스를 생성하기 시작할 때까지 기다립니다. 이 임펄스가 시작되면, 키보드는 자신의 문자를 데이터 라인에 클록합니다. 아래 그림에서 키보드에서 호스트(a) 및 호스트에서 키보드(b) 전송의 상태 다이어그램을 볼 수 있습니다. 이 프로토콜에는 물론 전송 중단, 문자 반복 등과 같은 몇 가지 예외 사항이 있습니다. 그러나 이러한 경우는 매우 드물습니다.

오픈 소스 DIY 하드웨어 키로거 - 파형

버스 데이터

키보드 라인을 통해 실제로 전송되는 것은 무엇인가요? 부팅 시에는 키보드와 컴퓨터가 초기화 데이터를 보내며 정상 작동 중에는 키보드만 데이터를 보냅니다. 이는 발생한 모든 이벤트에 대한 데이터입니다. 이벤트란 키를 누르거나 놓는 것을 의미합니다. 표준 키를 누르면 해당하는 '스캔 코드'가 전송됩니다. 각 키는 정확히 하나의 스캔 코드를 가지며, 이는 스캔 코드 지도를 생성합니다. 키를 놓으면 먼저 특별한 240 (F0 hex) 바이트가 전송되고, 그 후에 키의 스캔 코드가 전송됩니다. 따라서 표준 키 입력은 라인을 통해 3개의 문자가 전송됩니다. 키를 잠시 누르고 있으면 해당 키의 스캔 코드가 설정된 반복 지연과 함께 계속 생성됩니다. 마침내 키를 놓으면 240 (F0 hex) 문자가 전송되고, 그 후에 스캔 코드가 전송됩니다. 일반 PC 키보드에는 홈, 엔드, 화살표 등과 같은 특수 키가 있어서 이 프로토콜이 여전히 좋은 프로토콜이 될 수 있습니다. 특수 키를 누르면 바이트 224 (E0 16진수)가 생성되고, 그 뒤에 스캔 코드가 이어집니다. 특수 키를 놓으면 시퀀스 224, 240 (E0, F0)가 발생하고, 그 뒤에 스캔 코드가 이어집니다. 일반 키와 특수 키는 모든 국가 키보드 레이아웃에서 공통적이며 스캔 코드 지도에 관련이 있습니다. 더 복잡한 이야기를 하자면, Print Screen과 Pause와 같은 두 가지 슈퍼 특수 키가 존재하며, 이러한 키를 누를 때는 여러 스캔 코드 시퀀스가 전송됩니다. 키보드 인터페이서에게는 이러한 키가 존재하지 않는 것이 가장 좋습니다.

데이터 로깅

마이크로컨트롤러는 항상 DATA 및 CLK 라인을 모니터링하여 모든 데이터를 획득합니다. 데이터는 라인을 따라 내려가는 동안 비휘발성 EEPROM 메모리에 기록됩니다. 이를 통해 사용자는 향후 키보드의 모든 이벤트에 대해 알 수 있습니다. 사용자가 녹음이 끝났다고 판단하고 버튼을 누르면 하드웨어 키로거는 재생 모드로 전환됩니다. 키보드는 분리되어 있어야 하며, 그렇지 않으면 데이터 흐름을 해석합니다. 키로거는 내부 하드웨어 메모리에서 키 데이터를 시뮬레이션하기 시작합니다. KeyGrab 애플리케이션이 활성화되어 있어야 하며, 키로거 하드웨어로부터의 데이터 흐름을 처리해야 합니다. 일반 키는 메모리에 쓰여진 것처럼 시뮬레이션되고, 특수 키는 2바이트 16진 코드를 사용하여 전송됩니다.