# -*- 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"