# -*- coding: latin-1 -*- #imports import hashlib,urllib,urllib2, BeautifulSoup,re #constantes login="Menara" #changez le login... passe="Menara" #le mot de passe... url = "http://192.168.1.1" #et l'url du routeur... def get_next_form(lines, page,mimic_button_field,action_line): page="\n".join(lines) soup2= BeautifulSoup.BeautifulSoup(page) formulaire2 = soup2.find("form",{'name':"form_contents"}) dico={} for input in formulaire2.findAll("input",{"name":re.compile("")}): dico[input['name']] = input['value'] action_form=lines[action_line].split('"')[1] dico["mimic_button_field"] = mimic_button_field dico2 = urllib.urlencode(dict([k, v.encode('utf-8')] for k, v in dico.items())) f = urllib2.urlopen(url + action_form, dico2) return f.readlines() #recup de pages formulaire page_content = urllib.urlopen(url).read() soup=BeautifulSoup.BeautifulSoup(page_content) form= soup.find("form",{"name":"form_contents"}) #parsage formulaire, en dur a cause du passage oblige vers un hash md5 dico={} for input in form.findAll("input",{"name":re.compile("")}): dico[input['name']] = input['value'] password_input_name=soup.find("input",{"name":re.compile("password_")})["name"] #paresseux... action_form=form["action"] # destination... dico["md5_pass"]=hashlib.md5(passe+dico["auth_key"]).hexdigest() # kung fu! dico[password_input_name]=passe dico["user_name"]=login encoded_form=urllib.urlencode(dico) f = urllib2.urlopen(url + action_form, encoded_form) lines = f.readlines() lines = get_next_form(lines = lines,page="\n".join(lines),mimic_button_field="sidebar: lb_sidebar_basic_main..",action_line = 29 ) lines = get_next_form(lines = lines,page="\n".join(lines),mimic_button_field="sidebar: lb_sidebar_basic_erase_reboot..",action_line = 29 ) get_next_form(lines = lines,page="\n".join(lines),mimic_button_field="submit_button_reboot: ..",action_line = 23 ) print "felicitation, vous etes deconnecte"