Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import hashlib
- import hmac
- import socket
- import time
- import serial
- #import mysql.connector
- from datetime import datetime
- secretKey = 'j344rfdas'
- ser = serial.Serial("COM9", 9600, timeout=1) ##ARDUINO
- client_id = None
- event_id = None
- request = None
- hmaccc = None
- message = None
- client_id = "s995-549g"
- #Loome DB Ć¼henduse
- try:
- cnx = mysql.connector.connect(user='iot', password='userpar1',
- host='127.0.0.1',
- database='iot')
- print("SQL connected")
- except:
- print("SQL error")
- origkey = None
- calculatedKey = None
- requ = None
- HOST = '193.40.232.159'
- PORT = 8888
- def send_packet():
- exit()
- def writelog():
- exit()
- def calculate_hmac():
- exit()
- def validate_request(req):
- print("Sisend on:", req, "\n")
- originaal = origkey
- print ("Originaal vƵti on:", originaal)
- calculatedKey = bytes.decode( hashpacket(requ ))
- print("Arvutatud vƵti on:", calculatedKey)
- if calculatedKey == originaal:
- return True
- else:
- return False
- def create_hmac():
- exit()
- def create_packet(klient_id, even_id, request):
- timest = (int(time.time()))
- packet = "{}.{}.{}.{}.{}".format(klient_id, even_id, timest, request, bytes.decode (hashpacket("{}.{}.{}.{}".format(klient_id, even_id, timest, request))))
- global requ
- requ = "{}.{}.{}.{}".format(klient_id, even_id, timest, request)
- return packet
- def hashpacket(packet):
- bytes = str.encode(packet)
- key = str.encode(secretKey)
- print(key)
- print(bytes)
- hashedpacket = ( hmac.HMAC(key, bytes,hashlib.sha256))
- global origkey
- origkey = hashedpacket.hexdigest()
- return str.encode(hashedpacket.hexdigest())
- serversocket = socket.socket(
- socket.AF_INET, socket.SOCK_STREAM)
- serversocket.bind((HOST, PORT))
- serversocket.listen(5)
- def log_packet(klient_id, even_id, s_timestamp,s_request ):
- try:
- print(klient_id, even_id, s_timestamp,s_request)
- query = "INSERT INTO `event`(`seade_id`, `date`, `event`, `value`) VALUES ('{}','{}','{}','{}')".format(klient_id, s_timestamp, even_id, s_request)
- #print (query)
- cursor = cnx.cursor()
- cursor.execute(query)
- cnx.commit()
- cursor.close()
- print("DB done")
- return
- except:
- print("Midagi lƤks valest")
- requestino = 1
- def arvuta():
- global requestino
- try:
- data2 = bytes.decode(data)
- s_client_id, s_event_id, s_timestamp, s_request, s_key = data2.split(".")
- #print (s_client_id, s_event_id, s_timestamp, s_request, s_key)
- print ("\n Arvutame paketi ja vƵtme Ć¼le\n")
- pakett = "{}.{}.{}.{}".format(s_client_id, s_event_id, s_timestamp, s_request)
- print(pakett)
- hmac_calculated = bytes.decode( hashpacket(pakett))
- hmac_originaal = s_key
- if hmac_calculated == hmac_originaal:
- print("Vastu vƵetud")
- log_packet(s_client_id, s_event_id, (datetime.fromtimestamp(int(s_timestamp))), s_request)
- else:
- print("packet invalid")
- print ()
- requestino = int(s_event_id)
- except ValueError:
- print("Midagi lƤks valest ", ValueError)
- def arduino(): #### ARDUINO
- if requestino < 125:
- ser.write(bytes(b'1'))
- print "1"
- if requestino < 250 and requestino > 125:
- ser.write(bytes(b'2'))
- print "2"
- if requestino < 375 and requestino > 250:
- ser.write(bytes(b'3'))
- print "3"
- if requestino < 500 and requestino > 375:
- ser.write(bytes(b'4'))
- print "4"
- if requestino < 625 and requestino > 500:
- ser.write(bytes(b'5'))
- print "5"
- if requestino < 750 and requestino > 625:
- ser.write(bytes(b'6'))
- print "6"
- if requestino < 875 and requestino > 750:
- ser.write(bytes(b'7'))
- print "7"
- if requestino > 875:
- ser.write(bytes(b'8'))
- print "8"
- while 1:
- (clientsocket, address) = serversocket.accept()
- global data
- data = clientsocket.recv(10000000)
- # print(data)
- clientsocket.sendall(b'Tanan')
- clientsocket.close()
- arvuta()
- print (requestino)
- arduino()
- #break
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement