diff --git a/pi/generate-keys.sh b/pi/generate-keys.sh new file mode 100644 index 0000000..81d0f2f --- /dev/null +++ b/pi/generate-keys.sh @@ -0,0 +1,4 @@ +#! /usr/bin/env + +openssl rsa -out private.pem 1024 +openssl rsa -in private.pem -pubout -out public.pem -outform PEM diff --git a/pi/generate-keys.sh b/pi/generate-keys.sh new file mode 100644 index 0000000..81d0f2f --- /dev/null +++ b/pi/generate-keys.sh @@ -0,0 +1,4 @@ +#! /usr/bin/env + +openssl rsa -out private.pem 1024 +openssl rsa -in private.pem -pubout -out public.pem -outform PEM diff --git a/pi/monitor.py b/pi/monitor.py new file mode 100644 index 0000000..d234973 --- /dev/null +++ b/pi/monitor.py @@ -0,0 +1,56 @@ +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 + +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/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/verify-status.php?door_id=" + str(id) + "&verify=" + verify) + print " returned: " + response.read() + except e: + print str(e) + + sleep(1) diff --git a/pi/generate-keys.sh b/pi/generate-keys.sh new file mode 100644 index 0000000..81d0f2f --- /dev/null +++ b/pi/generate-keys.sh @@ -0,0 +1,4 @@ +#! /usr/bin/env + +openssl rsa -out private.pem 1024 +openssl rsa -in private.pem -pubout -out public.pem -outform PEM diff --git a/pi/monitor.py b/pi/monitor.py new file mode 100644 index 0000000..d234973 --- /dev/null +++ b/pi/monitor.py @@ -0,0 +1,56 @@ +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 + +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/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/verify-status.php?door_id=" + str(id) + "&verify=" + verify) + print " returned: " + response.read() + except e: + print str(e) + + sleep(1) diff --git a/pi/wpa_supplicant.conf b/pi/wpa_supplicant.conf new file mode 100644 index 0000000..9182eda --- /dev/null +++ b/pi/wpa_supplicant.conf @@ -0,0 +1,8 @@ +country=CA +ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev +update_config=1 + +network={ + ssid="SHAW-0B7860" + psk="25115B095807" +} \ No newline at end of file