반응형
# 뷰어 프로그램 UI구축
class viewer(QtWidgets.QWidget):
def __init__(self):
super().__init__()
self.tb = QtWidgets.QTextBrowser(self)
self.setAcceptDrops(True)
layout = QtWidgets.QGridLayout()
layout.addWidget(self.tb)
self.setLayout(layout)
# 드래그 한 무언가가 올라왔을때 작동
# 무언가에 주소값이 없다면 거절
def dragEnterEvent(self, e):
if e.mimeData().urls() == []:
e.ignore()
else:
e.accept()
# 드래그한 무언가가 놓아졌을때(드래그이벤트가 거절되지 않아야 작동한다)
#
def dropEvent(self, e):
self.keylogview(e.mimeData().text()[8:])
self.tb.setText(self.key)
# 데이터에 주소가 있으나 올바르지 않다면 빈 리스트 []를 리턴
def _open(self,f:str):
try:
with open(f,'rb') as mydata:
data = pickle.load(mydata)
except:
data = []
return data
# 빈 리스트를 받아왔다면 잘못된 입력이라고 출력.
# 정상적인 리스트 데이터라면 아래의 표시방법에 따라 출력
# (title에 창이름과 프로세스 이름이 있는 win_title을 넣어주고
# 직전 타이틀과 비교하여 같은곳인지 판단.
# 동일한곳이 아니라면 새로 바뀐곳의 title을 출력하고 첫 입력시간 출력
def keylogview(self,f):
key_str = ''
title = None
if self._open(f) == []:
key_str = '잘못된 입력입니다.'
else :
for i in self._open(f):
if i.event_type == 'down':
try:
if title == None:
title = i.win_title
key_str += i.win_title + '\n' + '({}년 {}월 {}일 - {}시{}분{}초)\n'.format(*list(time.localtime(i.time))[:6])
elif title != i.win_title:
title = i.win_title
key_str += '\n\n' + i.win_title + '\n' + '({}년 {}월 {}일 - {}시{}분{}초)\n'.format(*list(time.localtime(i.time))[:6])
if len(i.name) == 1:
key_str += i.name
else:
key_str += ' [' + i.name + '] '
except:
continue
self.key = key_str
반응형
'Python > Python_Project | 키로거 및 뷰어' 카테고리의 다른 글
키로그, 뷰어 프로그램 전체 코드 공유 (0) | 2020.05.20 |
---|---|
keyboard라이브러리 수정 (0) | 2020.05.20 |
활성화된 창이름,프로세스 이름 얻어오기 (0) | 2020.05.20 |
디버그 - 기록된 키입력 데이터 확인 (0) | 2020.05.20 |
키 기록부분 구현 및 자동저장 - 쓰레드 생성 (0) | 2020.05.20 |
댓글