def StoreMBR(self, responses): """This method stores the MBR.""" if not responses.success: msg = "Could not retrieve MBR: %s" % responses.status self.Log(msg) raise flow.FlowError(msg) response = responses.First() self.state.buffers.append(response.data) self.state.bytes_downloaded += len(response.data) if self.state.bytes_downloaded >= self.args.length: mbr_data = "".join(self.state.buffers) self.state.buffers = None mbr = aff4.FACTORY.Create( self.client_id.Add("mbr"), aff4_grr.VFSFile, mode="w", token=self.token) mbr.write(mbr_data) mbr.Close() self.Log("Successfully stored the MBR (%d bytes)." % len(mbr_data)) self.SendReply(rdfvalue.RDFBytes(mbr_data))
def Done(self, responses): response = responses.First() if not responses.success: raise flow.FlowError("Execute Python hack failed: %s" % responses.status) if response: result = utils.SmartStr(response.return_val) # Send reply with full data, but only log the first 200 bytes. str_result = result[0:200] if len(result) >= 200: str_result += "...[truncated]" self.Log("Result: %s" % str_result) self.SendReply(rdfvalue.RDFBytes(utils.SmartStr(response.return_val)))
def StoreMBR(self, responses): """This method stores the MBR.""" if not responses.success: msg = "Could not retrieve MBR: %s" % responses.status self.Log(msg) raise flow.FlowError(msg) response = responses.First() mbr = aff4.FACTORY.Create( self.client_id.Add("mbr"), aff4_grr.VFSFile, mode="w", token=self.token) mbr.write(response.data) mbr.Close() self.Log("Successfully stored the MBR (%d bytes)." % len(response.data)) self.SendReply(rdfvalue.RDFBytes(response.data))
def GenerateSample(self, number=0): return rdfvalue.RDFBytes("\x00hello%s\x01" % number)