網銀安全控件問題
阿新 • • 發佈:2017-12-02
long dwr ces pri mouse def mman code 通過
網銀的密碼輸入控件是通過直接讀鍵盤設備IO獲取的輸入。需要使用驅動級的鍵盤模擬輸入技術才能輸進去。
一個是WinIO,肯定能實現,我已測試過,WinIO怎麽用可以百度一下,有很多資料。
另外一個是虛擬鍵盤驅動,網上有個DD虛擬鍵盤http://www.ddxoft.com/,就是這樣實現的,這個DD虛擬鍵盤分免費版和收費版,免費版有廣告,會改IE主頁,(而且不知道有沒有後門),收費版的使用費為500元一臺電腦一年。
也可以自行用WDK開發一個虛擬鍵盤驅動
- python模擬按鍵輸入(輸入的是狀態碼)
# _*_ coding:UTF-8 _*_ import win32api import win32con
- python模擬IO鍵盤輸入(有錯誤待調試)
-
rabird.winio下載地址:https://pypi.python.org/pypi/rabird.winio
import rabird.winio import time import atexit # KeyBoard Commands # Command port KBC_KEY_CMD = 0x64 # Data port KBC_KEY_DATA = 0x60 __winio = None def __get_winio(): global __winio if __winio is None: __winio = rabird.winio.WinIO() def __clear_winio(): global __winio __winio = None atexit.register(__clear_winio) return __winio def wait_for_buffer_empty(): ‘‘‘ Wait keyboard buffer empty ‘‘‘ winio = __get_winio() dwRegVal = 0x02 while (dwRegVal & 0x02): dwRegVal = winio.get_port_byte(KBC_KEY_CMD) def key_down(scancode): winio = __get_winio() wait_for_buffer_empty() winio.set_port_byte(KBC_KEY_CMD, 0xd2) wait_for_buffer_empty() winio.set_port_byte(KBC_KEY_DATA, scancode) def key_up(scancode): winio = __get_winio() wait_for_buffer_empty() winio.set_port_byte( KBC_KEY_CMD, 0xd2) wait_for_buffer_empty() winio.set_port_byte( KBC_KEY_DATA, scancode | 0x80) def key_press(scancode, press_time = 0.2): key_down( scancode ) time.sleep( press_time ) key_up( scancode ) # Press ‘A‘ key # Scancodes references : https://www.win.tue.nl/~aeb/linux/kbd/scancodes-1.html key_press(0x1E)
網銀安全控件問題