+ def generalFuzz(self,freq, Fuzzes, period, writesPerFuzz):
+ #print "Fuzzing on standard ID: %d" %standardId
+ self.client.serInit()
+ self.spitSetup(freq)
+ packet = [0,0,0x00,0x00,0x08,0,0,0,0,0,0,0,0] #empty template
+
+ #get folder information (based on today's date)
+ now = datetime.datetime.now()
+ datestr = now.strftime("%Y%m%d")
+ path = self.DATA_LOCATION+"InjectedData/"+datestr+"_GenerationFuzzedPackets.csv"
+ filename = path
+ outfile = open(filename,'a');
+ dataWriter = csv.writer(outfile,delimiter=',');
+ #dataWriter.writerow(['# Time Error Bytes 1-13']);
+ #dataWriter.writerow(['#' + description])
+
+ fuzzNumber = 0; #: counts the number of packets we have generated
+ while( fuzzNumber < Fuzzes):
+ id_new = random.randint(0,4095)
+ #print id_new
+ #### split SID into different regs
+ SIDhigh = (id_new >> 3) & 0xFF; # get SID bits 10:3, rotate them to bits 7:0
+ SIDlow = (id_new & 0x07) << 5; # get SID bits 2:0, rotate them to bits 7:5
+ packet[0] = SIDhigh
+ packet[1] = SIDlow
+
+ #generate a fuzzed packet
+ for i in range(0,8): # for each data byte, fuzz it
+ idx = "db%d"%i
+ limits = dbLimits[idx]
+ value = random.randint(limits[0],limits[1]) #generate pseudo-random integer value
+ packet[i+5] = value
+ print packet
+ #put a rough time stamp on the data and get all the data bytes
+ row = [time.time(), id_new,8]
+ msg = "Injecting: "
+ for i in range(5,13):
+ row.append(packet[i])
+ msg += " %d"%packet[i]
+ #print msg
+ dataWriter.writerow(row)
+ self.client.txpacket(packet)
+ time.sleep(period/1000)
+
+ #inject the packet the given number of times.
+ for i in range(1,writesPerFuzz):
+ self.client.MCPrts(TXB0=True)
+ time.sleep(period/1000)
+ fuzzNumber += 1
+ print "Fuzzing Complete"
+ outfile.close()