36
36
Using the website: https://msdn.microsoft.com/en-us/library/cc226801.aspx
37
37
"""
38
38
39
- import uuid
40
-
41
- from scapy .compat import plain_str
42
39
from scapy .config import conf
43
40
from scapy .fields import Field , ByteField , ShortField , LEShortField , \
44
41
IntField , LEIntField , LongField , LELongField , StrField , StrLenField , \
45
42
StrFixedLenField , BitEnumField , ByteEnumField , ShortEnumField , \
46
43
LEShortEnumField , IntEnumField , LEIntEnumField , FieldLenField , \
47
44
LEFieldLenField , PacketField , PacketListField , PacketLenField , \
48
- ConditionalField , FlagsField
45
+ ConditionalField , FlagsField , UUIDField
49
46
from scapy .packet import Packet
50
47
51
48
# Defined values
@@ -271,58 +268,6 @@ def extract_padding(self, p):
271
268
return b"" , p
272
269
273
270
274
- class PUUID (Field ):
275
- __slots__ = ["endianType" ]
276
-
277
- def __init__ (self , name , default , endianType ):
278
- _repr = {0 : 'bigEndian' , 1 : 'littleEndian' }
279
- Field .__init__ (self , name , default , "16s" )
280
- self .endianType = _repr [endianType ]
281
-
282
- def h2i (self , pkt , x ):
283
- """ Description: transform a string uuid in uuid type object """
284
- self .default = uuid .UUID (plain_str (x or "" ))
285
- return self .default
286
-
287
- def i2h (self , pkt , x ):
288
- """ Description: transform a type uuid object in string uuid """
289
- x = str (self .default )
290
- return x
291
-
292
- def m2i (self , pkt , x ):
293
- """ Description: transform a byte string uuid in uuid type object """
294
- if self .endianType == 'bigEndian' :
295
- self .default = uuid .UUID (bytes = x )
296
- elif self .endianType == 'littleEndian' :
297
- self .default = uuid .UUID (bytes_le = x )
298
- return self .default
299
-
300
- def i2m (self , pkt , x ):
301
- """ Description: transform a uuid type object in a byte string """
302
- if self .endianType == 'bigEndian' :
303
- x = self .default .bytes
304
- elif self .endianType == 'littleEndian' :
305
- x = self .default .bytes_le
306
- return x
307
-
308
- def i2repr (self , pkt , x ):
309
- return str (self .default )
310
-
311
- def getfield (self , pkt , s ):
312
- """ Extract an internal value from a string """
313
- self .default = self .m2i (pkt , s [:self .sz ])
314
- return s [self .sz :], self .default
315
-
316
- def addfield (self , pkt , s , val ):
317
- """ Add an internal value to a string """
318
- return s + self .i2m (pkt , val )
319
-
320
- def any2i (self , pkt , x ):
321
- """ Try to understand the most input values possible and make an
322
- internal value from them """
323
- return self .h2i (pkt , x )
324
-
325
-
326
271
class LenStringPacket (Packet ):
327
272
name = "len string packet"
328
273
fields_desc = [
@@ -358,7 +303,8 @@ def extract_padding(self, p):
358
303
class SyntaxId (Packet ):
359
304
name = "syntax Id"
360
305
fields_desc = [
361
- PUUID ('interfaceUUID' , str ('0001' * 8 ), 0 ),
306
+ UUIDField ('interfaceUUID' , str ('0001' * 8 ),
307
+ uuid_fmt = UUIDField .FORMAT_BE ),
362
308
ShortField ('versionMajor' , 0 ),
363
309
ShortField ('versionMinor' , 0 ),
364
310
]
@@ -370,7 +316,8 @@ def extract_padding(self, p):
370
316
class SyntaxIdLE (Packet ):
371
317
name = "syntax Id"
372
318
fields_desc = [
373
- PUUID ('interfaceUUID' , str ('0001' * 8 ), 1 ),
319
+ UUIDField ('interfaceUUID' , str ('0001' * 8 ),
320
+ uuid_fmt = UUIDField .FORMAT_LE ),
374
321
LEShortField ('versionMajor' , 0 ),
375
322
LEShortField ('versionMinor' , 0 ),
376
323
]
@@ -471,7 +418,7 @@ class STDOBJREF(Packet):
471
418
LEIntField ('cPublicRefs' , 0 ),
472
419
LELongField ('OXID' , 0 ),
473
420
LELongField ('OID' , 0 ),
474
- PacketField ('IPID' , None , PUUID ),
421
+ PacketField ('IPID' , None , UUIDField ),
475
422
]
476
423
477
424
@@ -524,7 +471,7 @@ class OBJREF_HANDLER(Packet):
524
471
name = "objetref stanDard"
525
472
fields_desc = [
526
473
PacketField ('std' , None , STDOBJREF ),
527
- PUUID ('clsid' , str ('0001' * 8 ), 0 ),
474
+ UUIDField ('clsid' , str ('0001' * 8 ), uuid_fmt = UUIDField . FORMAT_BE ),
528
475
PacketField ('saResAddr' , None , DualStringArray ),
529
476
]
530
477
@@ -533,15 +480,15 @@ class OBJREF_HANDLERLE(Packet):
533
480
name = "objetref stanDard"
534
481
fields_desc = [
535
482
PacketField ('std' , None , STDOBJREF ),
536
- PUUID ('clsid' , str ('0001' * 8 ), 1 ),
483
+ UUIDField ('clsid' , str ('0001' * 8 ), uuid_fmt = UUIDField . FORMAT_LE ),
537
484
PacketField ('saResAddr' , None , DualStringArrayLE ),
538
485
]
539
486
540
487
541
488
class OBJREF_CUSTOM (Packet ):
542
489
name = "objetref stanDard"
543
490
fields_desc = [
544
- PUUID ('clsid' , str ('0001' * 8 ), 0 ),
491
+ UUIDField ('clsid' , str ('0001' * 8 ), uuid_fmt = UUIDField . FORMAT_BE ),
545
492
IntField ('cbExtension' , 0 ),
546
493
IntField ('reserved' , 0 ),
547
494
]
@@ -550,7 +497,7 @@ class OBJREF_CUSTOM(Packet):
550
497
class OBJREF_CUSTOMLE (Packet ):
551
498
name = "objetref stanDard"
552
499
fields_desc = [
553
- PUUID ('clsid' , str ('0001' * 8 ), 1 ),
500
+ UUIDField ('clsid' , str ('0001' * 8 ), uuid_fmt = UUIDField . FORMAT_LE ),
554
501
LEIntField ('cbExtension' , 0 ),
555
502
LEIntField ('reserved' , 0 ),
556
503
]
@@ -946,7 +893,7 @@ class RequestSubDataLE(Packet):
946
893
LEShortField ('versionMinor' , 0 ),
947
894
LEIntField ('flags' , 0 ),
948
895
LEIntField ('reserved' , 0 ),
949
- PUUID ('subUuid' , str ('0001' * 8 ), 1 ),
896
+ UUIDField ('subUuid' , str ('0001' * 8 ), uuid_fmt = UUIDField . FORMAT_LE ),
950
897
StrField ('subdata' , '' ),
951
898
]
952
899
@@ -960,7 +907,7 @@ class OpcDaRequest(Packet):
960
907
IntField ('allocHint' , 0 ),
961
908
ShortField ('contextId' , 0 ),
962
909
ShortField ('opNum' , 0 ),
963
- PUUID ('uuid' , str ('0001' * 8 ), 0 ),
910
+ UUIDField ('uuid' , str ('0001' * 8 ), uuid_fmt = UUIDField . FORMAT_BE ),
964
911
PacketLenField ('subData' , None , RequestSubData ,
965
912
length_from = lambda pkt :pkt .allocHint ),
966
913
PacketField ('authentication' , None , AuthentificationProtocol ),
@@ -976,7 +923,7 @@ class OpcDaRequestLE(Packet):
976
923
LEIntField ('allocHint' , 0 ),
977
924
LEShortField ('contextId' , 0 ),
978
925
LEShortField ('opNum' , 0 ),
979
- PUUID ('uuid' , str ('0001' * 8 ), 1 ),
926
+ UUIDField ('uuid' , str ('0001' * 8 ), uuid_fmt = UUIDField . FORMAT_LE ),
980
927
PacketLenField ('subData' , None , RequestSubDataLE ,
981
928
length_from = lambda pkt :pkt .allocHint ),
982
929
PacketField ('authentication' , None , AuthentificationProtocol ),
0 commit comments