Skip to content

Instantly share code, notes, and snippets.

@td00
Last active March 3, 2019 01:08
Show Gist options
  • Save td00/1e9a4c34173228c7b9bd9ea97a6853cd to your computer and use it in GitHub Desktop.
Save td00/1e9a4c34173228c7b9bd9ea97a6853cd to your computer and use it in GitHub Desktop.
wifionice
import urllib.request
import subprocess
import psutil
import time
import socket
class BahnWifi:
def __init__(self):
self.loginUrl = 'http://www.wifionice.de/?login'
self.logoutUrl = 'http://www.wifionice.de/?logout'
self.headers ={
'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.47 Safari/537.36',
'Referer' : 'http://www.wifionice.de/',
'Connection' : 'keep-alive',
'Accept-Encoding' : 'gzip, deflate, sdch'
}
def request(self, url):
req = urllib.request.Request(
url,
data=None,
headers=self.headers
)
fp = urllib.request.urlopen(req)
data = fp.read()
fp.close()
def login(self):
self.changeMac()
self.request(self.loginUrl)
if self.networkconnectionEstablished == False:
print("Login fehlgeschlagen")
self.login()
else:
print("Login erfolgreich")
def logout(self):
self.request(self.logoutUrl)
print("Logout abgeschlossen")
def changeMac(self):
interfaces = self.getInterfaces()
for interface in interfaces:
subprocess.call('sudo macchanger -a ' +interface, shell=True)
def getInterfaces(self):
realInterfaces = []
interfaces = str(subprocess.check_output('ls /sys/class/net', shell=True))
interfaces = interfaces.split("'")[1].split('\\n')
for interface in interfaces:
if len(interface) > 0 and interface != 'lo' and interface.find('vmnet') == -1:
realInterfaces.append(interface)
return realInterfaces
def getNetworkusage(self):
networkusage = 0.0
interfaces = self.getInterfaces()
for interface in interfaces:
networkusage = networkusage + float(str(psutil.net_io_counters(pernic=True)[interface]).split("=")[1].split(",")[0])
networkusage = networkusage + float(str(psutil.net_io_counters(pernic=True)[interface]).split("=")[2].split(",")[0])
print("Networkusage: " + str(networkusage))
return networkusage
def networkconnectionEstablished(self, host="8.8.8.8", port=53, timeout=3):
try:
socket.setdefaulttimeout(timeout)
socket.socket(socket.AF_INET, socket.SOCK_STREAM).connect((host, port))
return True
except Exception as ex:
print(ex)
return False
def run(self):
networkusageBegin = self.getNetworkusage()
self.login()
while True:
if networkusageBegin + (199 * 1000 * 1000) <= self.getNetworkusage():
self.logout()
networkusageBegin = self.getNetworkusage()
self.login()
print("Sleep")
time.sleep(5)
bahnwifi = BahnWifi()
print("Networkconnecion established: " + str(bahnwifi.networkconnectionEstablished()))
bahnwifi.run()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment