From 7c79ad9da07ac75a346e21c565f785be7661da94 Mon Sep 17 00:00:00 2001 From: Phil <phil@secdev.org> Date: Mon, 28 Jul 2008 16:13:00 +0200 Subject: [PATCH] Moved Dot11 specific fields to dot11.py --- scapy/fields.py | 33 --------------------------------- scapy/layers/dot11.py | 39 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 39 insertions(+), 33 deletions(-) diff --git a/scapy/fields.py b/scapy/fields.py index 2b289668..59d26c7d 100644 --- a/scapy/fields.py +++ b/scapy/fields.py @@ -181,39 +181,6 @@ class MACField(Field): return RandMAC() -class Dot11AddrMACField(MACField): - def is_applicable(self, pkt): - return 1 - def addfield(self, pkt, s, val): - if self.is_applicable(pkt): - return MACField.addfield(self, pkt, s, val) - else: - return s - def getfield(self, pkt, s): - if self.is_applicable(pkt): - return MACField.getfield(self, pkt, s) - else: - return s,None - -class Dot11Addr2MACField(Dot11AddrMACField): - def is_applicable(self, pkt): - if pkt.type == 1: - return pkt.subtype in [ 0xb, 0xa, 0xe, 0xf] # RTS, PS-Poll, CF-End, CF-End+CF-Ack - return 1 - -class Dot11Addr3MACField(Dot11AddrMACField): - def is_applicable(self, pkt): - if pkt.type in [0,2]: - return 1 - return 0 - -class Dot11Addr4MACField(Dot11AddrMACField): - def is_applicable(self, pkt): - if pkt.type == 2: - if pkt.FCfield & 0x3 == 0x3: # To-DS and From-DS are set - return 1 - return 0 - class IPField(Field): def __init__(self, name, default): Field.__init__(self, name, default, "4s") diff --git a/scapy/layers/dot11.py b/scapy/layers/dot11.py index 0159eac0..15d53665 100644 --- a/scapy/layers/dot11.py +++ b/scapy/layers/dot11.py @@ -5,6 +5,45 @@ from scapy.fields import * from scapy.plist import PacketList from scapy.layers.l2 import * +### Fields + +class Dot11AddrMACField(MACField): + def is_applicable(self, pkt): + return 1 + def addfield(self, pkt, s, val): + if self.is_applicable(pkt): + return MACField.addfield(self, pkt, s, val) + else: + return s + def getfield(self, pkt, s): + if self.is_applicable(pkt): + return MACField.getfield(self, pkt, s) + else: + return s,None + +class Dot11Addr2MACField(Dot11AddrMACField): + def is_applicable(self, pkt): + if pkt.type == 1: + return pkt.subtype in [ 0xb, 0xa, 0xe, 0xf] # RTS, PS-Poll, CF-End, CF-End+CF-Ack + return 1 + +class Dot11Addr3MACField(Dot11AddrMACField): + def is_applicable(self, pkt): + if pkt.type in [0,2]: + return 1 + return 0 + +class Dot11Addr4MACField(Dot11AddrMACField): + def is_applicable(self, pkt): + if pkt.type == 2: + if pkt.FCfield & 0x3 == 0x3: # To-DS and From-DS are set + return 1 + return 0 + + +### Layers + + class PrismHeader(Packet): """ iwpriv wlan0 monitor 3 """ name = "Prism header" -- GitLab