Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/python
- import re,hashlib,requests,sys,time,threading
- class FritzBoxApi(object):
- def __init__(self, hhost, ppw, sSSID):
- global host,pw,SSID,url,headers,sid, pause
- host = hhost
- pw = ppw
- SSID = sSSID
- url = 'http://'+host
- headers = {
- 'Host': host,
- 'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:38.0) Gecko/20100101 Firefox/38.0',
- 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
- 'Accept-Language': 'de,en-US;q=0.7,en;q=0.3',
- 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
- 'Referer': '',
- 'Connection': 'keep-alive',
- 'Pragma': 'no-cache',
- 'Cache-Control': 'no-cache',
- }
- def getsid(self):
- try:
- self.pause = 1
- r = requests.get(url + "/login_sid.lua")
- challengereg = re.search(r'<Challenge>(.*)</\Challenge>', r.text, re.M|re.I).group(1)
- challengestr = challengereg+"-"+pw
- responsehash = hashlib.md5(challengestr.encode('utf-16le')).hexdigest()
- response = challengereg+"-"+responsehash
- data = {'response' : response,'page': '','username' : ''}
- rp = requests.post(url+'/login_sid.lua',headers=headers, data=data)
- sid = re.search(r'<SID>(.*)</SID>', rp.text, re.M|re.I).group(1)
- self.sid = sid
- t = threading.Timer(555.0, self.getsid)
- t.start()
- self.pause = 0
- return(sid)
- except Exception as e:
- print(str(e))
- def pause(self):
- return(self.pause)
- def status(self):
- r = requests.get(url + "/wlan/wlan_settings.lua?sid="+self.sid)
- if 'name="active" checked> <label for="uiView_Active">WLAN-Funknetz aktiv' in r.text:
- return("W-Lan an!")
- elif 'name="active" > <label for="uiView_Active">WLAN-Funknetz aktiv' in r.text:
- return("W-Lan aus!")
- else:
- return("Fehler")
- def wlan(self,inputvar):
- headers['Referer'] = url+'/wlan/wlan_settings.lua?sid='+self.sid
- if inputvar == 1:
- data = 'active=on&SSID='+SSID+'&hidden_ssid=on&sid='+self.sid+'&print=&validate=apply&xhr=1'
- data2 = 'active=on&SSID='+SSID+'&hidden_ssid=on&sid='+self.sid+'&apply='
- else:
- data = 'sid='+self.sid+'&print=&validate=apply&xhr=1'
- data2 = 'sid='+self.sid+'&apply='
- requests.post(url+'/wlan/wlan_settings.lua?sid='+self.sid, headers=headers, data=data)
- requests.post(url+'/wlan/wlan_settings.lua?sid='+self.sid, headers=headers, data=data2)
- def internetfilter(self,inputvar):
- headers['Referer'] = url+'/internet/kids_profileedit.lua?sid='+self.sid+'&edit=filtprof1&back_to_page='
- if inputvar == 1:
- data = 'sid='+self.sid+'&back_to_page=%2Finternet%2Fkids_profilelist.lua&edit=filtprof1&time=never&bpjm=on&netappschosen=&choosenetapps=choose&validate=apply&xhr=1'
- data2 = 'sid='+self.sid+'&back_to_page=%2Finternet%2Fkids_profilelist.lua&edit=filtprof1&time=never&bpjm=on&netappschosen=&choosenetapps=choose&apply=&timer_complete=1'
- else:
- data = 'sid='+self.sid+'&back_to_page=%2Finternet%2Fkids_profilelist.lua&edit=filtprof1&time=unlimited&bpjm=on&netappschosen=&choosenetapps=choose&validate=apply&xhr=1'
- data2 = 'sid='+self.sid+'&back_to_page=%2Finternet%2Fkids_profilelist.lua&edit=filtprof1&time=unlimited&bpjm=on&netappschosen=&choosenetapps=choose&apply=&timer_complete=0'
- requests.post(url+'/internet/kids_profileedit.lua', headers=headers, data=data)
- requests.post(url+'/internet/kids_profileedit.lua', headers=headers, data=data2)
- def useron(self):
- r = requests.get(url + "/net/network_user_devices.lua?sid="+self.sid)
- userreg = re.findall(r'(?m)\["name"\]\s=\s"([^"]+?)",[^[]+?\["online"\]\s=\s"1",', r.text)
- return(userreg)
- def ip(self):
- headers['Referer'] = url+'/home/home.lua?sid='+self.sid
- r = requests.get(url + "/internet/inetstat_monitor.lua?sid="+self.sid, headers=headers)
- try:
- ip = re.search(r'IP-Adresse: (.*)</span>', r.text).group(1)
- except:
- return(-1)
- return(ip)
- def reconnect(self):
- previp = self.ip()
- headers['Referer'] = url+'/internet/inetstat_monitor.lua?'+self.sid
- requests.get(url+'/internet/inetstat_monitor.lua?sid='+self.sid+'&useajax=1&action=disconnect&xhr=1&t1437227338176=nocache', headers=headers)
- time.sleep(5)
- newip = self.ip()
- if previp != newip:
- return('Successfull reconnect!')
- else:
- return('Reconnect failed!')
- def ctime(self):
- return(time.strftime("%H:%M:%S", time.localtime()))
- if __name__ == '__main__':
- time.sleep(1)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement