summaryrefslogtreecommitdiffstats
path: root/scripts/external_libs/dpkt-1.8.6/dpkt/stun.py
diff options
context:
space:
mode:
authorDan Klein <danklei@csi-kiwi-03.cisco.com>2015-09-20 15:53:42 +0300
committerDan Klein <danklei@csi-kiwi-03.cisco.com>2015-09-20 15:53:42 +0300
commit28fef018f75b5a54ac69ac7c919127bf47f5b61f (patch)
treec21c2af8dfe7c05bee170e96fc923458b8894be6 /scripts/external_libs/dpkt-1.8.6/dpkt/stun.py
parenta78680a896f65dd6733d27d99e9cd8440eb185e9 (diff)
parent56dbd342eb97fc087611157ce8e965088b7f9bf8 (diff)
Pushed Stateless progress (along with Packet Builder module)
Diffstat (limited to 'scripts/external_libs/dpkt-1.8.6/dpkt/stun.py')
-rw-r--r--scripts/external_libs/dpkt-1.8.6/dpkt/stun.py45
1 files changed, 45 insertions, 0 deletions
diff --git a/scripts/external_libs/dpkt-1.8.6/dpkt/stun.py b/scripts/external_libs/dpkt-1.8.6/dpkt/stun.py
new file mode 100644
index 00000000..5706f0ef
--- /dev/null
+++ b/scripts/external_libs/dpkt-1.8.6/dpkt/stun.py
@@ -0,0 +1,45 @@
+# $Id: stun.py 47 2008-05-27 02:10:00Z jon.oberheide $
+
+"""Simple Traversal of UDP through NAT."""
+
+import struct
+import dpkt
+
+# STUN - RFC 3489
+# http://tools.ietf.org/html/rfc3489
+# Each packet has a 20 byte header followed by 0 or more attribute TLVs.
+
+# Message Types
+BINDING_REQUEST = 0x0001
+BINDING_RESPONSE = 0x0101
+BINDING_ERROR_RESPONSE = 0x0111
+SHARED_SECRET_REQUEST = 0x0002
+SHARED_SECRET_RESPONSE = 0x0102
+SHARED_SECRET_ERROR_RESPONSE = 0x0112
+
+# Message Attributes
+MAPPED_ADDRESS = 0x0001
+RESPONSE_ADDRESS = 0x0002
+CHANGE_REQUEST = 0x0003
+SOURCE_ADDRESS = 0x0004
+CHANGED_ADDRESS = 0x0005
+USERNAME = 0x0006
+PASSWORD = 0x0007
+MESSAGE_INTEGRITY = 0x0008
+ERROR_CODE = 0x0009
+UNKNOWN_ATTRIBUTES = 0x000a
+REFLECTED_FROM = 0x000b
+
+class STUN(dpkt.Packet):
+ __hdr__ = (
+ ('type', 'H', 0),
+ ('len', 'H', 0),
+ ('xid', '16s', 0)
+ )
+
+def tlv(buf):
+ n = 4
+ t, l = struct.unpack('>HH', buf[:n])
+ v = buf[n:n+l]
+ buf = buf[n+l:]
+ return (t,l,v, buf)