updated some new experiment methods. you can now fuzz on all ids randomly as well...
[goodfet] / client / GoodFETMCPCAN.py
index c740003..304b747 100644 (file)
@@ -292,46 +292,54 @@ class GoodFETMCPCAN(GoodFETSPI):
     
     
     ## This code could be drastica
-    def packet2parsedstr(self,data):
+    def packet2parsed(self,data):
         dp1 = ord(data[0])
         dp2 = ord(data[1])
         dp5 = ord(data[4])
         
-        #converts the CAN message to a string
-        msg="";
-        
-        
-        
+        packet = {}
         #get the ide bit. allows us to check to see if we have an extended
         #frame
-        ide = (dp2 & 0x0f)>>3
+        packet['ide'] = (dp2 & 0x0f)>>3
         #we have an extended frame
-        if( ide != 0):
+        if( packet['ide'] != 0):
             #get lower nibble, last 2 bits
             eId = dp2 & 0x03
             eId = eId<<8 | ord(data[2])
             eId = eId<<8 | ord(data[3])
             rtr = dp5>>6 & 0x01
-            eIDmsg = " eID: %06d" %(eId)
-            rtrmsg = " rtr: %d" % (rtr)
+            packet['eID'] = " eID: %06d" %(eId)
+            packet['rtr'] = " rtr: %d" % (rtr)
     
         else:
-            rtr = dp2>>4 & 0x01
-            eIDmsg = ""
-            rtrmsg = " rtr: %d"%(rtr)
+            packet['rtr'] = dp2>>4 & 0x01
+            
         
         # Create the standard ID. from the message
-        sID = dp1<<3 | dp2>>5
-        length = dp5 & 0x0f
+        packet['sID'] = dp1<<3 | dp2>>5
+        packet['length'] = dp5 & 0x0f
         
         #generate the data section
-        dbmsg = ""
-        for i in range(0,length):
-            dbmsg += data[idx]   
-        
-        msg = "sID: %04d" + eIDmsg + rtrmsg + ("length: %d"%(length)) + dbmsg 
+        for i in range(0,packet['length']):
+            idx = 5 + i
+            dbidx = 'db%d'%i
+            packet[dbidx] = ord(data[idx])
+        return packet
     
-        return msg
+    def packet2parsedstr(self,data):
+        packet = self.packet2parsed(data)
+        msg = "sID: %04d" %packet['sId']
+        if( packetParsed.get('eID')):
+            msg += " eID: %d" %packetParsed.get('eID')
+        msg += " rtr: %d"%packetParsed['rtr']
+        length = packetParsed['length']
+        msg += " length: %d"%length
+        msg += " data:"
+        for i in range(0,length):
+            dbidx = 'db%d'%i
+            msg +=" %03d"% ord(packetParsed[dbidx])
+        #msg = self.client.packet2parsedstr(packet)
+        print msg
         
         
     def peek8(self,adr):
@@ -376,4 +384,4 @@ class GoodFETMCPCAN(GoodFETSPI):
 # TXRTSCTRL = x0D
 
 
-    
\ No newline at end of file
+