def writeRequest(self,packet): io.info("Write Request : handle = "+hex(packet.handle)+" / value = "+packet.value.hex()) (success,code) = self.server.writeRequest(packet.handle,packet.value) if success: self.emitter.sendp(ble.BLEWriteResponse()) else: self.emitter.sendp(ble.BLEErrorResponse(request=0x12,ecode=code,handle=packet.handle))
def readBlobRequest(self,packet): io.info("Read Blob Request : handle = "+hex(packet.handle) + " / offset = "+str(packet.offset)) (success,response) = self.server.readBlob(packet.handle,packet.offset) if success: self.emitter.sendp(ble.BLEReadBlobResponse(value=response)) else: self.emitter.sendp(ble.BLEErrorResponse(request=0x0a, ecode=response,handle=packet.handle))
def readByGroupTypeRequest(self,packet): io.info("Read By Group Type Request : startHandle = "+hex(packet.startHandle)+ " / endHandle = "+hex(packet.endHandle)+" / uuid = "+hex(packet.uuid)) (success,response) = self.server.readByGroupType(packet.startHandle, packet.endHandle, packet.uuid) if success: io.displayPacket(ble.BLEReadByGroupTypeResponse(attributes=response)) self.emitter.sendp(ble.BLEReadByGroupTypeResponse(attributes=response)) else: self.emitter.sendp(ble.BLEErrorResponse(request=0x10,ecode=response,handle=packet.startHandle))
def findInformationRequest(self,packet): io.info("Find Information Request : startHandle = "+hex(packet.startHandle)+ " / endHandle = "+hex(packet.endHandle)) (success,response) = self.server.findInformation(packet.startHandle,packet.endHandle) if success: io.displayPacket(ble.BLEFindInformationResponse(attributes=response)) self.emitter.sendp(ble.BLEFindInformationResponse(attributes=response)) else: self.emitter.sendp(ble.BLEErrorResponse(request=0x04,ecode=response,handle=packet.startHandle))
def errorResponse(self, packet): if self.getStage() == BLEMitmStage.ACTIVE_MITM: io.info("Error Response (from slave) : request = " + hex(packet.request) + " / handle = " + hex(packet.handle) + " / ecode = " + hex(packet.ecode)) io.info("Redirecting to master ...") self.a2mEmitter.sendp( ble.BLEErrorResponse(request=packet.request, handle=packet.handle, ecode=packet.ecode))