프로젝트해요/머신러닝_키보드입력패턴_분석

#1. 키로거 개발

yenas0 2024. 3. 6. 06:30
반응형

먼저 사용자의 키보드 입력을 받으려면 키로거를 제작했다.

 

 

 

개발환경은 아무거나 해도 상관없었겠지만 파이썬에 pynput 라이브러리가 사용하기 편할거 같기도 했고 후에 머신러닝 코드 짜는것까지 고려해서 파이썬 환경에서 개발하기로 했다.

 

 

from pynput.keyboard import Key, Listener
import logging

log_dir = r'C:\Users\user\Desktop'

logging.basicConfig(filename=log_dir + "\\keyboard.txt", level=logging.DEBUG, format='["%(asctime)s", %(message)s]')

def on_press(key):
    logging.info('"{0}"'.format(key))

with Listener(on_press=on_press) as listener:
    listener.join()

 

*악용하지 않지 말 것

(혹시 몰라 코드 안올리고 싶었으나 이 정도는 구글링하면 나오는 내용이라 올려두겠다..)

 

 

파이썬으로 하면 저렇게 간단하게 코드가 짜진다. 키보드를 입력하고 나면

이런식으로 무슨 키를 눌렀는지가 시간과 함께 기록되어 메모장에 작성된다. 

txt 위치는 log_dir을 수정해서 지정하면 된다. 콘솔창에 출력하고 싶으면 print 추가해서 수정하면 된다.

 

 

 

 

 

아무튼 잘 나오는 걸 확인했으니 피처수를 늘리는 과정을 해야된다.

 

 

키를 그냥 누르는 걸로는 당연히 사용자의 입력을 구별해 낼 수 없다. 키보드는 단순히 누르는 행위로 동작되는 거라 키보드 자체만으로 패턴이 나오길 원한다면 좀 더 세밀화 할 필요가 있다.

 

 

이렇게 세가지의 latency를 가지고 하였다.

 

 

 

 

이부분은 논문을 많이 참고한거..

https://www.dbpia.co.kr/journal/articleDetail?nodeId=NODE11605189

 

사용자의 손가락별 Stroke 특성을 이용한 PC 기반 사용자 지속적 인증 방법 및 시스템 | DBpia

이형동, 남기효, 이희웅, 정문권 | 한국차세대컴퓨팅학회 논문지 | 2023.4

www.dbpia.co.kr

위에 논문 설명이 아주 굳임!

 

 

 

아무튼 피처를 3가지를 가지고 하기 위해서 키로거 코드를 좀 더 수정을 해서 key up과 down 시간이 측정되도록 수정하였다.

 

이런식으로 뜬다. 눌리는 시간과 떼는 시간을 각각 기록했다. duration 값으로 latency를 계산하면 된다.

 

이부분은 데이터 베이스에 연결하면서 변수를 추가해서 계산할 예정이다.

반응형