python 实现手机端隐私键盘密码登录

from Comm.log import MyLogger
import time

class PressKeys:
    '''模拟手机键盘'''
    #0-9数字对应的手机code
    NUMBWER_code ={
        '0': 7,
        '1': 8,
        '2': 9,
        '3': 10,
        '4': 11,
        '5': 12,
        '6': 13,
        '7': 14,
        '8': 15,
        '9': 16
    }

    # 手机键对应手机code
    PHONE_code ={
        'KEYCODE_CALL': 5,  # 拨号键
        'KEYCODE_ENDCALL': 6,  # 挂机键
        'KEYCODE_HOME': 3,  # 按键Home
        'KEYCODE_MENU': 82,  # 菜单键
        'KEYCODE_BACK': 4,  # 返回键
        'KEYCODE_SEARCH': 84,  # 搜索键
        'KEYCODE_CAMERA': 27,  # 拍照建
        'KEYCODE_FOCUS': 80,  # 拍照对焦键
        'KEYCODE_POWER': 26,  # 电源键
        'KEYCODE_NOTIFICATION': 83,  # 通知键
        'KEYCODE_MUTE': 91,  # 话筒静音键
        'KEYCODE_VOLUME_MUTE': 164,  # 扬声器静音键
        'KEYCODE_VOLUME_UP': 24,  # 音量增加键
        'kEYCODE_VOLUME_DOWN': 25  # 音量减小键
    }

    #手机控制按键对应的手机code
    CONTROL_code = {
        'KEYCODE_ENTER': 66, # 回车键
        'KEYCODE_ESCAPE': 111, # ESC键
        'KEYCODE_DAPD_CENTER': 23, # 导航键 确定键
        'KEYCODE_DAPD_UP': 19, # 导航键 向上
        'KEYCODE_DAPD_DOWN': 20, # 导航键 向下
        'KEYCODE_DAPD_LEFT': 21, # 导航键 向左
        'KEYCODE_DAPD_RIGHT': 22, # 导航键 向右
        'KEYCODE_MOVE_HOME': 122, # 光标移动到开始键
        'KEYCODE_MOVE_END': 123, # 光标移动到末尾键
        'KEYCODE_PAGE_UP': 92, # 向上翻页键
        'KEYCODE_PAGE_DOWN': 93, # 向下翻页键
        'KEYCODE_DEL': 67, # 退格键
        'KEYCODE_FORWARD_DEL': 112, # 删除键
        'KEYCODE_INSERT': 124, # 插入键
        'KEYCODE_TAB': 61, # Tab键
        'KEYCODE_NUM_LOCK': 143, # 小键盘锁
        'KEYCODE_CAPS_LOCK': 115, # 大写锁定
        'KEYCODE_BREAK': 121, # Break/Pause键
        'KEYCODE_SCROLL_LOCK': 116, # 滚动锁定键
        'KEYCODE_ZOOM_IN': 168, # 放大键
        'KEYCODE_ZOOM_OUT': 169 # 缩小键

    }

    #组合键对应的手机code
    COMBI_code ={
        'KEYCODE_ALT_LEFT': 'ALT+LEFT',
        'KEYCODE_ALT_RIGHT': 'ALT+RIGHT',
        'KEYCODE_CTRL_LEFT': 'Control+Left',
        'KEYCODE_CTRL_RIGHT': 'Control+right',
        'KEYCODE_SHIFT_LEFT': 'Shift+Left',
        'KEYCODE_SHIFT_RIGHT': 'Shift+right'
    }

    #英文对应的手机code
    WORDS_code = {
        'A': 29,
        'B': 30,
        'C': 31,
        'D': 32,
        'E': 33,
        'F': 34,
        'G': 35,
        'H': 36,
        'I': 37,
        'J': 38,
        'K': 39,
        'L': 40,
        'M': 41,
        'N': 42,
        'O': 43,
        'P': 44,
        'Q': 45,
        'R': 46,
        'S': 47,
        'T': 48,
        'U': 49,
        'V': 50,
        'W': 51,
        'X': 52,
        'Y': 53,
        'Z': 54

    }

class PressPhoneKeys:
    '''
    用unicode处理密码输入框不能通过sendkey发送的密码
    '''
    #处理输入的字符
    def __init__(self,password,driver=None):
        self.driver = driver
        self.password = password
        self.pre = PressKeys()
        self.log = MyLogger("PressPhoneKeys.main")

    def parse_password(self):
        self.log.info("开始解析密码为数字")
        password_list = list(self.password)
        for i in password_list:
            if ord(i) >= 65 and ord(i) <= 90:
                self.log.info("点击大写输入")
                self.driver.press_keycode(self.pre.WORDS_code[i],64)

            elif ord(i) >= 97 and ord(i) <= 122:
                self.log.info("点击小写输入")
                self.driver.press_keycode(self.pre.WORDS_code[i.upper()])
            elif ord(i) >= 48 and ord(i) <= 57:
                self.log.info("点击数字输入")
                self.driver.press_keycode(self.pre.NUMBWER_code[i])





class PressPassword:
    '''
    处理密码输入框不能通过sendkey发送的问题、
    '''
    dicts = {'0': 7, '1': 8, '2': 9, '3': 10, '4': 11, '5': 12, '6': 13, '7': 14, '8': 15, '9': 16,
             'a': 29, 'b': 30, 'c': 31, 'd': 32, 'e': 33, 'f': 34, 'g': 35, 'h': 36, 'i': 37, 'j': 38, 'k': 39, 'l': 40,
             'm': 41, 'n': 42, 'o': 43, 'p': 44, 'q': 45, 'r': 46, 's': 47, 't': 48, 'u': 49, 'v': 50, 'w': 51, 'x': 52,
             'y': 53, 'z': 54,
             ',': 55, '.': 56, '`': 68, '[': 71, ']': 72, '\\': 73, ';': 74, "'": 75,
             '*': 17, '#': 18, '-': 69, '=': 70, '/': 76, '@': 77, '+': 81, '(': 162, ')': 163
             }


    def __init__(self,password,driver):
        self.driver = driver
        self.password = password


    def press_passwod(self):
        '''
        input password
        '''
        for i in self.password:
            if self.dicts.get(i):
                self.driver.press_keycode(self.dicts[i])
            else:
                self.driver.press_keycode(self.dicts[i.lower()], 64)
            time.sleep(0.01)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值