diff --git a/scapy/packet.py b/scapy/packet.py index e761d0d783534cbe1852ee44953bac5d3bf1c920..641cf4f4b234fb320a76d6b85a06bfe2ffb72e35 100644 --- a/scapy/packet.py +++ b/scapy/packet.py @@ -17,6 +17,15 @@ except ImportError: pass +class RawVal: + def __init__(self, val=""): + self.val = val + def __str__(self): + return str(self.val) + def __repr__(self): + return "<RawVal [%r]>" % self.val + + class Packet(BasePacket): __metaclass__ = Packet_metaclass name=None @@ -275,7 +284,11 @@ class Packet(BasePacket): def do_build(self): p="" for f in self.fields_desc: - p = f.addfield(self, p, self.getfieldval(f.name)) + val = self.getfieldval(f.name) + if isinstance(val, RawVal): + p += str(val) + else: + p = f.addfield(self, p, val) return p def post_build(self, pkt, pay):