Advertisement
Guest User

Untitled

a guest
Mar 17th, 2016
101
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.39 KB | None | 0 0
  1. import hashlib
  2. import hmac
  3. import socket
  4. import time
  5. import serial
  6. #import mysql.connector
  7.  
  8. from datetime import datetime
  9.  
  10. secretKey = 'j344rfdas'
  11.  
  12. ser = serial.Serial("COM9", 9600, timeout=1) ##ARDUINO
  13.  
  14. client_id = None
  15. event_id = None
  16. request = None
  17. hmaccc = None
  18. message = None
  19.  
  20. client_id = "s995-549g"
  21.  
  22. #Loome DB Ć¼henduse
  23. try:
  24. cnx = mysql.connector.connect(user='iot', password='userpar1',
  25. host='127.0.0.1',
  26. database='iot')
  27. print("SQL connected")
  28. except:
  29. print("SQL error")
  30.  
  31. origkey = None
  32. calculatedKey = None
  33. requ = None
  34. HOST = '193.40.232.159'
  35. PORT = 8888
  36.  
  37. def send_packet():
  38. exit()
  39.  
  40. def writelog():
  41. exit()
  42.  
  43. def calculate_hmac():
  44. exit()
  45.  
  46. def validate_request(req):
  47. print("Sisend on:", req, "\n")
  48.  
  49. originaal = origkey
  50. print ("Originaal vƵti on:", originaal)
  51. calculatedKey = bytes.decode( hashpacket(requ ))
  52. print("Arvutatud vƵti on:", calculatedKey)
  53.  
  54. if calculatedKey == originaal:
  55. return True
  56. else:
  57. return False
  58.  
  59.  
  60.  
  61. def create_hmac():
  62. exit()
  63.  
  64. def create_packet(klient_id, even_id, request):
  65. timest = (int(time.time()))
  66. packet = "{}.{}.{}.{}.{}".format(klient_id, even_id, timest, request, bytes.decode (hashpacket("{}.{}.{}.{}".format(klient_id, even_id, timest, request))))
  67. global requ
  68. requ = "{}.{}.{}.{}".format(klient_id, even_id, timest, request)
  69. return packet
  70.  
  71. def hashpacket(packet):
  72. bytes = str.encode(packet)
  73. key = str.encode(secretKey)
  74. print(key)
  75. print(bytes)
  76. hashedpacket = ( hmac.HMAC(key, bytes,hashlib.sha256))
  77. global origkey
  78. origkey = hashedpacket.hexdigest()
  79. return str.encode(hashedpacket.hexdigest())
  80.  
  81.  
  82.  
  83. serversocket = socket.socket(
  84. socket.AF_INET, socket.SOCK_STREAM)
  85. serversocket.bind((HOST, PORT))
  86. serversocket.listen(5)
  87.  
  88.  
  89. def log_packet(klient_id, even_id, s_timestamp,s_request ):
  90. try:
  91. print(klient_id, even_id, s_timestamp,s_request)
  92. query = "INSERT INTO `event`(`seade_id`, `date`, `event`, `value`) VALUES ('{}','{}','{}','{}')".format(klient_id, s_timestamp, even_id, s_request)
  93. #print (query)
  94.  
  95. cursor = cnx.cursor()
  96. cursor.execute(query)
  97. cnx.commit()
  98. cursor.close()
  99. print("DB done")
  100. return
  101. except:
  102. print("Midagi lƤks valest")
  103.  
  104. requestino = 1
  105.  
  106. def arvuta():
  107. global requestino
  108. try:
  109. data2 = bytes.decode(data)
  110. s_client_id, s_event_id, s_timestamp, s_request, s_key = data2.split(".")
  111. #print (s_client_id, s_event_id, s_timestamp, s_request, s_key)
  112. print ("\n Arvutame paketi ja vƵtme Ć¼le\n")
  113. pakett = "{}.{}.{}.{}".format(s_client_id, s_event_id, s_timestamp, s_request)
  114. print(pakett)
  115. hmac_calculated = bytes.decode( hashpacket(pakett))
  116. hmac_originaal = s_key
  117.  
  118. if hmac_calculated == hmac_originaal:
  119. print("Vastu vƵetud")
  120. log_packet(s_client_id, s_event_id, (datetime.fromtimestamp(int(s_timestamp))), s_request)
  121. else:
  122. print("packet invalid")
  123.  
  124. print ()
  125. requestino = int(s_event_id)
  126.  
  127. except ValueError:
  128. print("Midagi lƤks valest ", ValueError)
  129.  
  130. def arduino(): #### ARDUINO
  131. if requestino < 125:
  132. ser.write(bytes(b'1'))
  133. print "1"
  134. if requestino < 250 and requestino > 125:
  135. ser.write(bytes(b'2'))
  136. print "2"
  137. if requestino < 375 and requestino > 250:
  138. ser.write(bytes(b'3'))
  139. print "3"
  140. if requestino < 500 and requestino > 375:
  141. ser.write(bytes(b'4'))
  142. print "4"
  143. if requestino < 625 and requestino > 500:
  144. ser.write(bytes(b'5'))
  145. print "5"
  146. if requestino < 750 and requestino > 625:
  147. ser.write(bytes(b'6'))
  148. print "6"
  149. if requestino < 875 and requestino > 750:
  150. ser.write(bytes(b'7'))
  151. print "7"
  152. if requestino > 875:
  153. ser.write(bytes(b'8'))
  154. print "8"
  155.  
  156. while 1:
  157. (clientsocket, address) = serversocket.accept()
  158.  
  159. global data
  160. data = clientsocket.recv(10000000)
  161. # print(data)
  162.  
  163. clientsocket.sendall(b'Tanan')
  164. clientsocket.close()
  165. arvuta()
  166. print (requestino)
  167. arduino()
  168.  
  169. #break
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement