def sendDataSenze(self, sensors, data, recipient): global device global aesKeys response = 'DATA' driver = myDriver() cry = myCrypto(device) for sensor in sensors: #If temperature is requested if "tp" == sensor: response = '%s #tp %s' % (response, driver.readTp()) #If AES key is requested if "key" == sensor: aeskey = "" #Generate AES Key if cry.generateAES(driver.readTime()): aeskey = cry.key #Save AES key aesKeys[recipient] = aeskey #AES key is encrypted by the recipient public key rep = myCrypto(recipient) encKey = rep.encryptRSA(b64encode(aeskey)) response = '%s #key %s' % (response, encKey) #If photo is requested elif "photo" == sensor: cam = myCamDriver() cam.takePhoto() photo = cam.readPhotob64() print photo response = '%s #photo %s' % (response, photo) #If time is requested elif "time" == sensor: response = '%s #time %s' % (response, driver.readTime()) #If gps is requested elif "gps" == sensor: #if AES key is available, gps data will be encrypted gpsData = '%s' % (driver.readGPS()) if recipient in aesKeys: rep = myCrypto(recipient) rep.key = aesKeys[recipient] gpsData = rep.encrypt(gpsData) response = '%s #gps %s' % (response, gpsData) #If gpio is requested elif "gpio" in sensor: m = re.search(r'\d+$', sensor) pinnumber = int(m.group()) print pinnumber response = '%s #gpio%s %s' % (response, pinnumber, driver.readGPIO(port=pinnumber)) else: response = '%s #%s NULL' % (response, sensor) response = "%s @%s" % (response, recipient) self.sendDatagram(senze=response)
def sendDataSenze(self,sensors,data,recipient): global device global aesKeys response='DATA' driver=myDriver() cry=myCrypto(device) for sensor in sensors: #If temperature is requested if "tp" == sensor: response ='%s #tp %s' %(response,driver.readTp()) #If AES key is requested if "key" == sensor: aeskey="" #Generate AES Key if cry.generateAES(driver.readTime()): aeskey=cry.key #Save AES key aesKeys[recipient]=aeskey #AES key is encrypted by the recipient public key rep=myCrypto(recipient) encKey=rep.encryptRSA(b64encode(aeskey)) response ='%s #key %s' %(response,encKey) #If photo is requested elif "photo" == sensor: cam=myCamDriver() cam.takePhoto() photo=cam.readPhotob64() response ='%s #photo %s' %(response,photo) #If time is requested elif "time" == sensor: response ='%s #time %s' %(response,driver.readTime()) #If gps is requested elif "gps" == sensor: #if AES key is available, gps data will be encrypted gpsData='%s' %(driver.readGPS()) if recipient in aesKeys: rep=myCrypto(recipient) rep.key=aesKeys[recipient] gpsData=rep.encrypt(gpsData) response ='%s #gps %s' %(response,gpsData) #If gpio is requested elif "gpio" in sensor: m=re.search(r'\d+$',sensor) pinnumber=int(m.group()) print pinnumber response ='%s #gpio%s %s' %(response,pinnumber,driver.readGPIO(port=pinnumber)) else: response ='%s #%s NULL' %(response,sensor) response="%s @%s" %(response,recipient) senze=cry.signSENZE(response) print senze self.transport.write(senze)
def sendDataSenze(self,sensors,data,recipient): global device response='DATA' driver=myDriver() for sensor in sensors: #If temperature is requested if "tp" == sensor: response ='%s #tp %s' %(response,driver.readTp()) #If photo is requested elif "photo" == sensor: cam=myCamDriver() cam.takePhoto() photo=cam.readPhotob64() print photo response ='%s #photo %s' %(response,photo) #If time is requested elif "time" == sensor: response ='%s #time %s' %(response,driver.readTime()) #If gps is requested elif "gps" == sensor: response ='%s #gps %s' %(response,driver.readGPS()) #If gpio is requested elif "gpio" in sensor: m=re.search(r'\d+$',sensor) pinnumber=int(m.group()) print pinnumber response ='%s #gpio%s %s' %(response,pinnumber,driver.readGPIO(port=pinnumber)) else: response ='%s #%s NULL' %(response,sensor) cry=myCrypto(device) response="%s @%s" %(response,recipient) senze=cry.signSENZE(response) print senze self.transport.write(senze)
def handleDeviceResponse(self,senze): sender=senze.getSender() data=senze.getData() sensors=senze.getSensors() cmd=senze.getCmd() if cmd=="DATA": for sensor in sensors: print sensor+"=>"+data[sensor] if 'photo' in sensors: #try: cam=myCamDriver() cam.savePhoto(data['photo'],"p1.jpg") #cam.showPhoto("p1.jpg") #self.savePhoto(data['photo'],"p1.jpg") thread.start_new_thread(cam.showPhoto,("p1.jpg",)) #except: # print "Error: unable to show the photo" #cam.savePhoto(data['photo'],"p1.jpg") elif cmd=="SHARE": print "This should be implemented" elif cmd=="UNSHAR": print "This should be implemented" elif cmd=="GET": #If GET Senze was received. The device must handle it. reactor.callLater(1,self.sendDataSenze,sensors=sensors,data=data,recipient=sender) elif cmd=="PUT": reactor.callLater(1,self.handlePUTSenze,sensors=sensors,data=data,recipient=sender) else: print "Unknown command"
def handleDeviceResponse(self, senz): sender = senz.getSender() data = senz.getData() sensors = senz.getSensors() cmd = senz.getCmd() global buf, aesKeys if cmd == "DATA": for sensor in sensors: print sensor + "=>" + data[sensor] if sensor == 'photo': if data['photo'] == 'ON': buf = '' elif data['photo'] == 'OFF': cam = myCamDriver() cam.savePhoto(buf, "photo.jpg") #cam.showPhoto("photo.jpg") thread.start_new_thread(cam.showPhoto, ("photo.jpg", )) buf = '' else: buf = "%s%s" % (buf, data['photo']) #Received and saved the AES key elif sensor == 'key' and data['key'] != "": #Key need to be decrypted by using the private key cry = myCrypto(self.device) dec = cry.decryptRSA(data['key']) aesKeys[sender] = b64decode(dec) #Decrypt and show the gps data elif sensor == 'gps' and data['gps'] != "": gpsData = data['gps'] if sender in aesKeys: rep = myCrypto(sender) rep.key = aesKeys[sender] gpsData = rep.decrypt(gpsData) print "** GPS=>" + gpsData elif cmd == "SHARE": print "This should be implemented" elif cmd == "UNSHAR": print "This should be implemented" elif cmd == "GET": #If GET Senze was received. The device must handle it. reactor.callLater(1, self.sendDataSenze, sensors=sensors, data=data, recipient=sender) elif cmd == "PUT": reactor.callLater(1, self.handlePUTSenze, sensors=sensors, data=data, recipient=sender) else: print "Unknown command"
def handleDeviceResponse(self,senze): global device global aesKeys sender=senze.getSender() data=senze.getData() sensors=senze.getSensors() cmd=senze.getCmd() if cmd=="DATA": for sensor in sensors: if sensor in data.keys(): print sensor+"=>"+data[sensor] if 'photo' in sensors: #try: cam=myCamDriver() cam.savePhoto(data['photo'],"p1.jpg") #cam.showPhoto("p1.jpg") #self.savePhoto(data['photo'],"p1.jpg") thread.start_new_thread(cam.showPhoto,("p1.jpg",)) #except: # print "Error: unable to show the photo" #cam.savePhoto(data['photo'],"p1.jpg") #Received and saved the AES key elif 'key' in sensors and data['key']!="": #Key need to be decrypted by using the private key cry=myCrypto(device) dec=cry.decryptRSA(data['key']) aesKeys[sender]=b64decode(dec) #Decrypt and show the gps data elif 'gps' in sensors and data['gps']!="": gpsData=data['gps'] if sender in aesKeys: rep=myCrypto(sender) rep.key=aesKeys[sender] gpsData=rep.decrypt(gpsData) print "GPS=>"+gpsData elif cmd=="SHARE": print "This should be implemented" elif cmd=="UNSHAR": print "This should be implemented" elif cmd=="GET": #If GET Senze was received. The device must handle it. reactor.callLater(1,self.sendDataSenze,sensors=sensors,data=data,recipient=sender) elif cmd=="PUT": reactor.callLater(1,self.handlePUTSenze,sensors=sensors,data=data,recipient=sender) else: print "Unknown command"
def handleDeviceResponse(self, senze): sender = senze.getSender() data = senze.getData() sensors = senze.getSensors() cmd = senze.getCmd() if cmd == "DATA": for sensor in sensors: print sensor + "=>" + data[sensor] if 'photo' in sensors: #try: cam = myCamDriver() cam.savePhoto(data['photo'], "p1.jpg") #cam.showPhoto("p1.jpg") #self.savePhoto(data['photo'],"p1.jpg") thread.start_new_thread(cam.showPhoto, ("p1.jpg", )) #except: # print "Error: unable to show the photo" #cam.savePhoto(data['photo'],"p1.jpg") elif cmd == "SHARE": print "This should be implemented" elif cmd == "UNSHAR": print "This should be implemented" elif cmd == "GET": #If GET Senze was received. The device must handle it. reactor.callLater(1, self.sendDataSenze, sensors=sensors, data=data, recipient=sender) elif cmd == "PUT": reactor.callLater(1, self.handlePUTSenze, sensors=sensors, data=data, recipient=sender) else: print "Unknown command"
def send_photo(self,receiver,qtime,sender): print "Creeate photo senze" cam=myCamDriver() cam.takePhoto() photoString=cam.readPhoto() n=254 print len(photoString) parts = [photoString[i:i+n] for i in range(0, len(photoString), n)] for tmp in parts: senz ='DATA #photo %s' %(tmp) if qtime!="": senz = senz+" #time %s @%s ^%s" %(qtime,receiver, sender) else: senz = senz+" #time %s @%s ^%s" %(time.time(),receiver, sender) print senz signed_senz = sign_senz(senz) self.transport.write(signed_senz) senz ='DATA #photo ENDPHOTO' senz = senz+" #time %s @%s ^%s" %(qtime,receiver, sender) #print senz signed_senz = sign_senz(senz) self.transport.write(signed_senz)
def sendDataSenze(self, sensors, data, recipient): global device response = 'DATA' driver = myDriver() for sensor in sensors: #If temperature is requested if "tp" == sensor: response = '%s #tp %s' % (response, driver.readTp()) #If photo is requested elif "photo" == sensor: cam = myCamDriver() cam.takePhoto() photo = cam.readPhotob64() print photo response = '%s #photo %s' % (response, photo) #If time is requested elif "time" == sensor: response = '%s #time %s' % (response, driver.readTime()) #If gps is requested elif "gps" == sensor: response = '%s #gps %s' % (response, driver.readGPS()) #If gpio is requested elif "gpio" in sensor: m = re.search(r'\d+$', sensor) pinnumber = int(m.group()) print pinnumber response = '%s #gpio%s %s' % (response, pinnumber, driver.readGPIO(port=pinnumber)) else: response = '%s #%s NULL' % (response, sensor) cry = myCrypto(device) response = "%s @%s" % (response, recipient) senze = cry.signSENZE(response) print senze self.transport.write(senze)