LCL: prefer MappedVirtKeyboard to VirtKeyboard
Signed-off-by: Pierre Mazière <pierre.maziere@gmail.com>
This commit is contained in:
parent
48ef2a5969
commit
9bcb448b99
1 changed files with 38 additions and 39 deletions
|
|
@ -22,10 +22,44 @@ from datetime import date
|
||||||
from weboob.capabilities.bank import Operation
|
from weboob.capabilities.bank import Operation
|
||||||
from weboob.capabilities.bank import Account
|
from weboob.capabilities.bank import Account
|
||||||
from weboob.tools.browser import BasePage, BrowserUnavailable
|
from weboob.tools.browser import BasePage, BrowserUnavailable
|
||||||
from weboob.tools.captcha.virtkeyboard import VirtKeyboard, VirtKeyboardError
|
from weboob.tools.captcha.virtkeyboard import MappedVirtKeyboard, VirtKeyboardError
|
||||||
from logging import error
|
from logging import error
|
||||||
import tempfile
|
import tempfile
|
||||||
|
|
||||||
|
class LCLVirtKeyboard(MappedVirtKeyboard):
|
||||||
|
symbols={'0':'9da2724133f2221482013151735f033c',
|
||||||
|
'1':'873ab0087447610841ae1332221be37b',
|
||||||
|
'2':'93ce6c330393ff5980949d7b6c800f77',
|
||||||
|
'3':'b2d70c69693784e1bf1f0973d81223c0',
|
||||||
|
'4':'498c8f5d885611938f94f1c746c32978',
|
||||||
|
'5':'359bcd60a9b8565917a7bf34522052c3',
|
||||||
|
'6':'aba912172f21f78cd6da437cfc4cdbd0',
|
||||||
|
'7':'f710190d6b947869879ec02d8e851dfa',
|
||||||
|
'8':'b42cc25e1539a15f767aa7a641f3bfec',
|
||||||
|
'9':'cc60e5894a9d8e12ee0c2c104c1d5490'
|
||||||
|
}
|
||||||
|
|
||||||
|
url="/UWBI/UWBIAccueil?DEST=GENERATION_CLAVIER"
|
||||||
|
|
||||||
|
def __init__(self,browser,document,color):
|
||||||
|
img=document.find("//img[@id='idImageClavier']")
|
||||||
|
MappedVirtKeyboard.__init__(self,browser.openurl(self.url),document,img,color)
|
||||||
|
if browser.responses_dirname is None:
|
||||||
|
browser.responses_dirname = \
|
||||||
|
tempfile.mkdtemp(prefix='weboob_session_')
|
||||||
|
self.check_symbols(self.symbols,browser.responses_dirname)
|
||||||
|
|
||||||
|
def get_symbol_code(self,md5sum):
|
||||||
|
code=MappedVirtKeyboard.get_symbol_code(self,md5sum)
|
||||||
|
return code[-5:-3]
|
||||||
|
|
||||||
|
def get_string_code(self,string):
|
||||||
|
code=''
|
||||||
|
for c in string:
|
||||||
|
code+=self.get_symbol_code(self.symbols[c])
|
||||||
|
return code
|
||||||
|
|
||||||
|
|
||||||
class LoginPage(BasePage):
|
class LoginPage(BasePage):
|
||||||
def myXOR(self,value,seed):
|
def myXOR(self,value,seed):
|
||||||
s=''
|
s=''
|
||||||
|
|
@ -34,49 +68,14 @@ class LoginPage(BasePage):
|
||||||
return s
|
return s
|
||||||
|
|
||||||
def login(self, agency, login, passwd):
|
def login(self, agency, login, passwd):
|
||||||
symbols={'0':'9da2724133f2221482013151735f033c',
|
|
||||||
'1':'873ab0087447610841ae1332221be37b',
|
|
||||||
'2':'93ce6c330393ff5980949d7b6c800f77',
|
|
||||||
'3':'b2d70c69693784e1bf1f0973d81223c0',
|
|
||||||
'4':'498c8f5d885611938f94f1c746c32978',
|
|
||||||
'5':'359bcd60a9b8565917a7bf34522052c3',
|
|
||||||
'6':'aba912172f21f78cd6da437cfc4cdbd0',
|
|
||||||
'7':'f710190d6b947869879ec02d8e851dfa',
|
|
||||||
'8':'b42cc25e1539a15f767aa7a641f3bfec',
|
|
||||||
'9':'cc60e5894a9d8e12ee0c2c104c1d5490'
|
|
||||||
}
|
|
||||||
|
|
||||||
map=self.document.find("//map[@id='claviermap']")
|
|
||||||
|
|
||||||
coords={}
|
|
||||||
for area in map.getiterator("area"):
|
|
||||||
code=area.attrib.get("onclick")[-5:-3]
|
|
||||||
area_coords=[]
|
|
||||||
for coord in area.attrib.get("coords").split(','):
|
|
||||||
area_coords.append(int(coord))
|
|
||||||
coords[code]=tuple(area_coords)
|
|
||||||
try:
|
try:
|
||||||
vk=VirtKeyboard(self.browser.openurl("/UWBI/UWBIAccueil?DEST=GENERATION_CLAVIER"),
|
vk=LCLVirtKeyboard(self.browser,self.document,(255,255,255,255))
|
||||||
coords,(255,255,255,255))
|
|
||||||
except VirtKeyboardError,err:
|
except VirtKeyboardError,err:
|
||||||
error("Error: %s"%err)
|
error("Error: %s"%err)
|
||||||
return False
|
return False
|
||||||
|
|
||||||
for s in symbols.keys():
|
password=vk.get_string_code(passwd)
|
||||||
try:
|
|
||||||
vk.get_symbol_code(symbols[s])
|
|
||||||
except VirtKeyboardError:
|
|
||||||
if self.browser.responses_dirname is None:
|
|
||||||
self.browser.responses_dirname = \
|
|
||||||
tempfile.mkdtemp(prefix='weboob_session_')
|
|
||||||
vk.generate_MD5(self.browser.responses_dirname)
|
|
||||||
error("Error: Symbol '%s' not found; all symbol hashes are available in %s" \
|
|
||||||
% (s,self.browser.responses_dirname))
|
|
||||||
return False
|
|
||||||
|
|
||||||
password=''
|
|
||||||
for c in passwd:
|
|
||||||
password+=vk.get_symbol_code(symbols[c])
|
|
||||||
seed=-1
|
seed=-1
|
||||||
str="var aleatoire = "
|
str="var aleatoire = "
|
||||||
for script in self.document.findall("/head/script"):
|
for script in self.document.findall("/head/script"):
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue