Ejemplo n.º 1
0
    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)
Ejemplo n.º 2
0
    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)
Ejemplo n.º 3
0
 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)
Ejemplo n.º 4
0
    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"
Ejemplo n.º 5
0
    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"
Ejemplo n.º 6
0
    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"
Ejemplo n.º 7
0
    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"
Ejemplo n.º 8
0
    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"
Ejemplo n.º 9
0
    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)
Ejemplo n.º 10
0
    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)