def hid_scancode_to_key_event(scancode, modifiers):
    """Convert a single scancode + modifier list to a vSphere vim KeyEvent instance suitible for transmission."""

    # bitwise shift left 16, boolean or with 7
    event = vim.UsbScanCodeSpecKeyEvent()
    event.usbHidCode = (scancode << 16) | 7

    if modifiers:
        event.modifiers = vim.UsbScanCodeSpecModifierType()
        if KEY_MOD_LSHIFT in modifiers:
            event.modifiers.leftShift = True
        if KEY_MOD_LCTRL in modifiers:
            event.modifiers.leftControl = True
        if KEY_MOD_LMETA in modifiers:
            event.modifiers.leftGui = True
        if KEY_MOD_LALT in modifiers:
            event.modifiers.leftAlt = True
        if KEY_MOD_RSHIFT in modifiers:
            event.modifiers.rightShift = True
        if KEY_MOD_RCTRL in modifiers:
            event.modifiers.rightControl = True
        if KEY_MOD_RMETA in modifiers:
            event.modifiers.rightGui = True
        if KEY_MOD_RALT in modifiers:
            event.modifiers.rightAlt = True
    return event
Beispiel #2
0
    def autorization(self, vm_name, lang):
        connect = SmartConnectNoSSL(host='192.168.13.138', user='******', pwd='')
        content = connect.content
        container = content.viewManager.CreateContainerView(
            content.rootFolder, [vim.VirtualMachine], True)
        vm_list = container.view
        for i in vm_list:
            if i.name == vm_name:
                vm = i
        if lang == 'RU':
            langchange = ['0xe1']
            keyevent1 = vim.UsbScanCodeSpecKeyEvent()
            hidCodeHexToInt1 = int(langchange[0], 16)
            hidCodeValue1 = (hidCodeHexToInt1 << 16) | 7
            keyevent1.usbHidCode = hidCodeValue1
            keyevent1.modifiers = vim.UsbScanCodeSpecModifierType()
            #keyevent1.modifiers.leftControl = True
            keyevent1.modifiers.leftAlt = True
            sp1 = vim.UsbScanCodeSpec()
            eventlist1 = [keyevent1]
            sp1.keyEvents = eventlist1
            r1 = vm.PutUsbScanCodes(sp1)

        passw = [
            '0x13', '0x04', '0x16', '0x16', '0x1a', '0x12', '0x15', '0x07',
            '0x1e', '0x28'
        ]
        for item in passw:
            keyevent2 = vim.UsbScanCodeSpecKeyEvent()
            hidCodeHexToInt2 = int(item, 16)
            hidCodeValue2 = (hidCodeHexToInt2 << 16) | 7
            keyevent2.usbHidCode = hidCodeValue2
            keyevent2.modifiers = vim.UsbScanCodeSpecModifierType()
            if passw.index(item) == 0 or passw.index(item) == 8:
                keyevent2.modifiers.leftShift = True
                sp2 = vim.UsbScanCodeSpec()
                sp2.keyEvents = [keyevent2]
                r2 = vm.PutUsbScanCodes(sp2)
                keyevent2.modifiers.leftShift = False
            else:
                sp2 = vim.UsbScanCodeSpec()
                sp2.keyEvents = [keyevent2]
                r2 = vm.PutUsbScanCodes(sp2)
Beispiel #3
0
def Keystroke(vm, CHAR2HIDinfo, args):
    tmp = vim.UsbScanCodeSpecKeyEvent()
    m = vim.UsbScanCodeSpecModifierType()
    if "KEY_LEFTSHIFT" in CHAR2HIDinfo[1]:
        m.leftShift = True
    if "KEY_RIGHTALT" in CHAR2HIDinfo[1]:
        m.rightAlt = True
    if "CTRL" in CHAR2HIDinfo[1]:
        m.leftControl = True
    if "ALT" in CHAR2HIDinfo[1]:
        m.leftAlt = True
    tmp.modifiers = m
    tmp.usbHidCode = HID2HEX(CHAR2HIDinfo[0])
    sp = vim.UsbScanCodeSpec()
    sp.keyEvents = [tmp]
    vm.PutUsbScanCodes(sp)
    if args.debug:
        print("Send : Keystroke: { code: %s, modifiers: %s } on VM : %s" % (
            CHAR2HIDinfo[0], CHAR2HIDinfo[1], vm.name))
Beispiel #4
0
def key_stroke(virtual_machine, hid, debug=False):
    '''Sent KEYSTROKE to VIRTUAL MACHINE'''
    code, modifiers = hid
    tmp = vim.UsbScanCodeSpecKeyEvent()
    modifier = vim.UsbScanCodeSpecModifierType()
    if "KEY_LEFTSHIFT" in modifiers:
        modifier.leftShift = True
    if "KEY_RIGHTALT" in modifiers:
        modifier.rightAlt = True
    if "CTRL" in modifiers:
        modifier.leftControl = True
    if "ALT" in modifiers:
        modifier.leftAlt = True
    tmp.modifiers = modifier
    tmp.usbHidCode = hid_to_hex(code)
    inject_hid = vim.UsbScanCodeSpec()
    inject_hid.keyEvents = [tmp]
    virtual_machine.PutUsbScanCodes(inject_hid)
    if debug:
        print("Send : Keystroke: { code: %s, modifiers: %s } on VM : %s" %
              (code, modifiers, virtual_machine.name))
Beispiel #5
0
    def get_key_event(self, hid_code, modifiers):
        key_event = vim.UsbScanCodeSpecKeyEvent()
        key_modifier = vim.UsbScanCodeSpecModifierType()
        key_modifier.leftAlt = False
        key_modifier.leftControl = False
        key_modifier.leftGui = False
        key_modifier.leftShift = False
        key_modifier.rightAlt = False
        key_modifier.rightControl = False
        key_modifier.rightGui = False
        key_modifier.rightShift = False
        # rightShift, rightControl, rightAlt, leftGui, rightGui are not used
        if "LEFTSHIFT" in modifiers:
            key_modifier.leftShift = True
        if "CTRL" in modifiers:
            key_modifier.leftControl = True
        if "ALT" in modifiers:
            key_modifier.leftAlt = True
        key_event.modifiers = key_modifier
        key_event.usbHidCode = self.hid_to_hex(hid_code)

        return key_event
Beispiel #6
0
        if char == key:
            key, modifiers = values[0]
            return code, modifiers

def CHAR2HID(char, args):
    for key, code, values in HIDCode:
        for key, modifiers in values:
            if char == key:
                return code, modifiers

def HID2HEX(hid):
    return (int(hid, 16) << 16 | 0007)

def Keystroke(vm, (code, modifiers), args):
    tmp = vim.UsbScanCodeSpecKeyEvent()
    m = vim.UsbScanCodeSpecModifierType()
    if "KEY_LEFTSHIFT" in modifiers:
        m.leftShift = True
    if "KEY_RIGHTALT" in modifiers:
        m.rightAlt = True
    if "CTRL" in modifiers:
        m.leftControl = True
    if "ALT" in modifiers:
        m.leftAlt = True
    tmp.modifiers = m
    tmp.usbHidCode = HID2HEX(code)
    sp = vim.UsbScanCodeSpec()
    sp.keyEvents = [tmp]
    vm.PutUsbScanCodes(sp)
    if args.debug:
        print("Send : Keystroke: { code: %s, modifiers: %s } on VM : %s" % (code, modifiers, vm.name))