Python无法通过TCP/IP连接转发HID数据

2024-04-25 05:13:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我对python有点陌生,在这方面我很难接受。任何帮助都将不胜感激

当多个用户同时登录时,我尝试在用户帐户之间共享HID设备数据。 下面的Python脚本应该在127.0.0.1上启动一个TCP/Server,收集HID设备数据,然后将其发送到TCP连接。我有另一个python脚本监听127.0.0.1并打印接收到的数据

下面的脚本正确地收集并打印HID数据,但无法通过TCP连接发送。如果我运行一个单独的脚本,只创建TCP连接并编写纯文本,使用与下面相同的方法;听力程序正确地接收到它。可能是我忽略了一些小事情,我倾向于过度思考

import sys
import socket

hid = { 4: 'a', 5: 'b', 6: 'c', 7: 'd', 8: 'e', 9: 'f', 10: 'g', 11: 'h', 12: 'i', 13: 'j', 14: 'k', 15: 'l', 16: 'm', 17: 'n', 18: 'o', 19: 'p', 20: 'q', 21: 'r', 22: 's', 23: 't', 24: 'u', 25: 'v', 26: 'w', 27: 'x', 28: 'y', 29: 'z', 30: '1', 31: '2', 32: '3', 33: '4', 34: '5', 35: '6', 36: '7', 37: '8', 38: '9', 39: '0', 44: ' ', 45: '-', 46: '=', 47: '[', 48: ']', 49: '\\', 51: ';' , 52: '\'', 53: '~', 54: ',', 55: '.', 56: '/'  }
hid2 = { 4: 'A', 5: 'B', 6: 'C', 7: 'D', 8: 'E', 9: 'F', 10: 'G', 11: 'H', 12: 'I', 13: 'J', 14: 'K', 15: 'L', 16: 'M', 17: 'N', 18: 'O', 19: 'P', 20: 'Q', 21: 'R', 22: 'S', 23: 'T', 24: 'U', 25: 'V', 26: 'W', 27: 'X', 28: 'Y', 29: 'Z', 30: '!', 31: '@', 32: '#', 33: '$', 34: '%', 35: '^', 36: '&', 37: '*', 38: '(', 39: ')', 44: ' ', 45: '_', 46: '+', 47: '{', 48: '}', 49: '|', 51: ':' , 52: '"', 53: '~', 54: '<', 55: '>', 56: '?'  }
fp = open('/dev/hidraw0', 'rb')

ss = ""
shift = False
done = False

TCP_IP = '127.0.0.1'
TCP_PORT = 44004
BUFFER_SIZE = 1024

while not done:
    buffer = fp.read(8)
    for c in buffer:
        if ord(c) > 0:
            if int(ord(c)) == 40:
                done = True
                break;
            if shift:
                if int(ord(c)) == 2:
                    shift = True
                else:
                    ss += hid2[ int(ord(c)) ]
                    shift = False
            else:
                if int(ord(c)) == 2 :
                    shift = True
                else:
                    ss += hid[ int(ord(c)) ]

print(ss)
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.connect((TCP_IP, TCP_PORT))
sock.send(ss)
sock.close()

用这个脚本发送的数据被监听程序正确地拾取

import socket
import sys

obj= sys.argv[1]

TCP_IP = '127.0.0.1'
TCP_PORT = 44004
BUFFER_SIZE = 1024

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((TCP_IP, TCP_PORT))
s.send(obj)
s.close()


Tags: 数据importip脚本ifshiftportsys