Exemple #1
0
    def store_funky(self, data):
        global num_funky
        num_funky += 1

        # store funky input for further analysis 
        funky_folder = self.config.argument_values['work_dir'] + "/funky/"
        atomic_write(funky_folder + "input_%02d_%05d" % (self.slave_id, num_funky), data)
Exemple #2
0
 def __set_agent_and_driver(self):
     driver_bin = read_binary_file(self.config.argument_values['driver'])
     bin = p32(len(driver_bin)) + driver_bin
     agent_bin = read_binary_file(self.config.argument_values['agent'])
     bin += p32(len(agent_bin)) + agent_bin
     assert (len(bin) <= self.agent_size)
     atomic_write(self.binary_filename, bin)
Exemple #3
0
 def set_payload(self, payload, write=True):
     self.set_payload_len(len(payload), write=False)
     # IoControlCode
     payload = p32(self.node_struct["info"]["IoControlCode"]) + payload
     atomic_write(
         QueueNode.__get_payload_filename(self.get_exit_reason(),
                                          self.get_id()), payload)
Exemple #4
0
 def write_result(self, file):
     global METHODS_NUM, methods
     output = ""
     for i in range(METHODS_NUM):
         if (self.methods[i] > 0):
             output += methods[i] + ":\t" + str(self.methods[i]) + "\n"
     atomic_write(file, output)
Exemple #5
0
    def maybe_write_stats(self):
        cur_time = time.time()
        if cur_time - self.write_last < self.write_thres:
            return

        self.write_last = cur_time
        self.data["run_time"] = cur_time - self.data["start_time"]
        self.data[
            "execs/sec"] = self.data["total_execs"] / self.data["run_time"]
        atomic_write(self.filename, msgpack.packb(self.data,
                                                  use_bin_type=True))
Exemple #6
0
 def check_funkyness_and_store_trace(self, data):
     global num_funky
     exec_res = self.q.send_payload()
     hash = exec_res.hash()
     trace1 = read_binary_file(self.config.argument_values['work_dir'] + "/pt_trace_dump_%d" % self.slave_id)
     exec_res = self.q.send_payload()
     if (hash != exec_res.hash()):
         print_warning("Validation identified funky bits, dumping!")
         num_funky += 1
         trace_folder = self.config.argument_values['work_dir'] + "/traces/funky_%d_%d" % (num_funky, self.slave_id);
         os.makedirs(trace_folder)
         atomic_write(trace_folder + "/input", data)
         atomic_write(trace_folder + "/trace_a", trace1)
         trace2 = read_binary_file(self.config.argument_values["work_dir"] + "/pt_trace_dump_%d" % self.slave_id)
         atomic_write(trace_folder + "/trace_b", trace2)
     return exec_res
Exemple #7
0
 def __set_agent(self):
     max_size = (128 << 20)
     agent_bin = self.config.argument_values['agent']
     bin = read_binary_file(agent_bin)
     assert (len(bin) <= max_size)
     atomic_write(self.binary_filename, bin)
Exemple #8
0
 def write_statistics(self):
     atomic_write(self.stats_file,
                  msgpack.packb(self.data, use_bin_type=True))
Exemple #9
0
 def __save_payload_sequence(self, sequence):
     atomic_write(self.__get_filename() + ".seq", lz4.block.compress(json.dumps(sequence)))
Exemple #10
0
 def write_bitmap(self, bitmap):
     atomic_write(self.__get_bitmap_filename(), lz4.frame.compress(bitmap))
Exemple #11
0
 def __set_binary(self, filename, binaryfile, max_size):
     bin = read_binary_file(binaryfile)
     assert (len(bin) <= max_size)
     atomic_write(filename, bin)
Exemple #12
0
 def save_to_file(self, label):
     workdir = FuzzerConfiguration().argument_values['work_dir']
     filename = "/corpus/%s/payload_%05d" % (label, Program.PayloadCount)
     atomic_write(workdir + filename, self.serialize())
     Program.PayloadCount += 1
Exemple #13
0
 def write_metadata(self):
     return atomic_write(
         self.__get_metadata_filename(self.get_id()),
         msgpack.packb(self.program_struct, use_bin_type=True))
Exemple #14
0
 def write_statistics(self):
     self.data["duration"] = time.time() - self.data["start_time"]
     self.data["execs/sec"] = (
         self.data["executions"] +
         self.data["executions_redqueen"]) / self.data["duration"]
     atomic_write(self.filename, msgpack.packb(self.data))
Exemple #15
0
 def write_statistics(self):
     atomic_write(self.filename, msgpack.packb(self.data))
Exemple #16
0
 def set_payload(self, payload, write=True):
     self.set_payload_len(len(payload), write=False)
     atomic_write(
         QueueNode.__get_payload_filename(self.get_exit_reason(),
                                          self.get_id()), payload)
Exemple #17
0
 def __save_payload(self, payload):
     atomic_write(self.__get_filename(), payload)
Exemple #18
0
 def write_metadata(self):
     return atomic_write(QueueNode.__get_metadata_filename(self.get_id()),
                         msgpack.packb(self.node_struct, use_bin_type=True))
Exemple #19
0
 def set_bitmap(self, bitmap):
     atomic_write(self.__get_bitmap_filename(), zlib.compress(bitmap))