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):