from time import sleep import gpiozero as GP from signal import pause import base64 import sys from Cryptodome.PublicKey import RSA from Cryptodome.Cipher import PKCS1_OAEP import urllib2 import traceback if len(sys.argv) < 2: print "No id" exit(1) id = int(sys.argv[1]) l = GP.LED(18) b = GP.Button(16) l.source = b status = False private_key = RSA.import_key(open("private.pem").read()) rsa = PKCS1_OAEP.new(private_key); while True: now_pressed = b.is_pressed if now_pressed == status: if now_pressed: b.wait_for_release(5) else: b.wait_for_press(5) now_pressed = b.is_pressed if now_pressed != status: status = now_pressed print "status now: " + str(status) try: response = urllib2.urlopen("https://www.mhack.io/bathroom/status-update.php?door_id=" + str(id) + "&status=" + ("1" if status else "0")) enc_verify = base64.b64decode(response.read()) verify = rsa.decrypt(enc_verify) print " verifying with: " + verify response = urllib2.urlopen("https://www.mhack.io/bathroom/verify-status.php?door_id=" + str(id) + "&verify=" + verify) print " returned: " + response.read() except Exception as e: print str(e) traceback.print_tb(sys.exc_info()[2]) sleep(1)