X-Git-Url: http://git.rot13.org/?p=goodfet;a=blobdiff_plain;f=client%2FGoodFETCCSPI.py;h=5ea56be3a1f8dfbb958606a7d88b8295db6a1ed7;hp=5ffeb9deaae27033952b8003b097676e5384574a;hb=fd9430b330def6518620ac0ec190405d186c7505;hpb=fc395768eb33962fe7f8e8e6d575117ddfb6265b diff --git a/client/GoodFETCCSPI.py b/client/GoodFETCCSPI.py index 5ffeb9d..5ea56be 100644 --- a/client/GoodFETCCSPI.py +++ b/client/GoodFETCCSPI.py @@ -132,6 +132,11 @@ class GoodFETCCSPI(GoodFET): fsctrl=self.peek(0x18); mhz=2048+(fsctrl&0x3ff) return mhz*1000000; + def RF_setchan(self,channel): + if channel < 11 and channel > 26: + print "Only 802.15.4 channels 11 to 26 are currently supported."; + else: + self.RF_setfreq( ( (channel-11)*5 + 2405 ) * 1000000 ); def RF_getsmac(self): """Return the source MAC address.""" return 0xdeadbeef; @@ -236,9 +241,10 @@ class GoodFETCCSPI(GoodFET): def RF_promiscuity(self,promiscuous=1): mdmctrl0=self.peek(0x11); - #print "mdmctrl0 was %04x" % mdmctrl0; - mdmctrl0=mdmctrl0&(~0x800); - #print "mdmctrl0 is now %04x" % mdmctrl0; + if promiscuous>0: + mdmctrl0=mdmctrl0&(~0x800); + else: + mdmctrl0=mdmctrl0|0x800; self.poke(0x11,mdmctrl0); return; @@ -266,3 +272,22 @@ class GoodFETCCSPI(GoodFET): choice=choices[len]; self.poke(0x03,choice); self.maclen=len; + def printpacket(self,packet): + s=""; + i=0; + for foo in packet: + s="%s %02x" % (s,ord(foo)); + print "#%s" % s; + def printdissect(self,packet): + try: + from scapy.all import Dot15d4 + except ImportError: + print "To use packet disection, Scapy must be installed and have the Dot15d4 extension present." + print "try: hg clone http://hg.secdev.org/scapy-com"; + print " sudo ./setup.py install"; + self.printpacket(packet); + try: + scapyd = Dot15d4(packet[1:]); + scapyd.show(); + except: + pass;