Initial import of anticapum. - anticapum - Handle Università Politecnica delle Marche captive portal (HTM) hg clone https://bitbucket.org/iamleot/anticapum (DIR) Log (DIR) Files (DIR) Refs (DIR) README --- (DIR) changeset 8592f71cf80b2ff69f646dfe36ccf87f9c2ae3ed (HTM) Author: Leonardo Taccari <iamleot@gmail.com> Date: Mon, 1 Jan 2018 01:00:00 Initial import of anticapum. Diffstat: anticapum.py | 45 +++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 45 insertions(+), 0 deletions(-) --- diff -r 000000000000 -r 8592f71cf80b anticapum.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/anticapum.py Mon Jan 01 01:00:00 2018 +0100 @@ -0,0 +1,45 @@ +#!/usr/pkg/bin/python3.6 + +import getpass +import ssl +from netrc import netrc +from urllib import parse, request + + +ANTICAPUM_URI = 'https://captive.dii.univpm.it/login.php' +ANTICAPUM_NETRC_MACHINE = 'captive.univpm.it' +ANTICAPUM_SLEEP = 310 + + +def credential(): + """Return username and password tuple using .netrc file or prompting the + user interactively if no netrc entry is present. + """ + try: + (username, _, password) = netrc().authenticators(ANTICAPUM_NETRC_MACHINE) + except: + username = input('username: ') + password = getpass.getpass('password: ') + + return username, password + + +def login(username, password): + """Login to the captive portal using provided username and password + """ + auth = parse.urlencode({ 'username': username, 'password': password }) + auth = auth.encode('utf-8') + sc = ssl.SSLContext() + sc.verify_mode = ssl.CERT_NONE + with request.urlopen(ANTICAPUM_URI, data=auth, context=sc) as f: + pass + + +if __name__ == '__main__': + import time + + username, password = credential() + + while True: + login(username, password) + time.sleep(ANTICAPUM_SLEEP)