2
2
3
3
import os
4
4
import binascii
5
- import time
6
5
import struct
7
- import itertools
8
6
import pytap2
9
7
import selectors
10
8
9
+
11
10
class MuxPacket (object ):
12
11
def __init__ (self , seq = 0 ):
13
12
self .seq = seq
@@ -16,7 +15,8 @@ def __init__(self, seq=0):
16
15
17
16
def get_packet (self ):
18
17
# put the final length in
19
- self .packet = self .packet [:8 ] + struct .pack ('<L' , len (self .packet )) + self .packet [8 + 4 :]
18
+ self .packet = self .packet [:8 ] + \
19
+ struct .pack ('<L' , len (self .packet )) + self .packet [8 + 4 :]
20
20
return self .packet
21
21
22
22
def append_tag (self , tag , data = b'' , extra = 0 ):
@@ -27,15 +27,17 @@ def append_tag(self, tag, data=b'', extra=0):
27
27
else :
28
28
while len (self .packet ) & 3 :
29
29
self .packet += b'\0 '
30
- self .packet = self .packet [:self .fwd_pointer ] + struct .pack ('<L' , len (self .packet )) + self .packet [self .fwd_pointer + 4 :]
30
+ self .packet = self .packet [:self .fwd_pointer ] + struct .pack (
31
+ '<L' , len (self .packet )) + self .packet [self .fwd_pointer + 4 :]
31
32
32
33
hdr_len = len (hdr ) + 8
33
- hdr += struct .pack ('<HHL' , hdr_len + len (data ), extra , 0 )
34
+ hdr += struct .pack ('<HHL' , hdr_len + len (data ), extra , 0 )
34
35
# that last field is the next-tag pointer
35
36
self .fwd_pointer = len (self .packet ) + len (hdr ) - 4
36
37
37
38
self .packet += hdr + data
38
39
40
+
39
41
class XMMMux (object ):
40
42
def package (self , packet_data ):
41
43
self .seq = (self .seq + 1 ) & 0xff
@@ -52,11 +54,10 @@ def __init__(self, path='/dev/xmm0/mux'):
52
54
53
55
self .seq = 0
54
56
55
- raw = binascii .unhexlify ('6000000000383AFFFE800000000000000000000000000001FE80000000000000D438C1FD077C00C38600248840005550000000000000000005010000000005DC03044040FFFFFFFFFFFFFFFF0000000020018004142021F50000000000000000' )
56
- pak = self .package (raw )
57
57
pkd = binascii .unhexlify ('414442480000010088000000700000006000000000383AFFFE800000000000000000000000000001FE80000000000000D438C1FD077C00C38600248840005550000000000000000005010000000005DC03044040FFFFFFFFFFFFFFFF0000000020018004142021F50000000000000000414454481800000000000000000000001000000060000000' )
58
58
p = MuxPacket (seq = 1 )
59
- p .append_tag (b'ADBH' , binascii .unhexlify ('6000000000383AFFFE800000000000000000000000000001FE80000000000000D438C1FD077C00C38600248840005550000000000000000005010000000005DC03044040FFFFFFFFFFFFFFFF0000000020018004142021F50000000000000000' ))
59
+ p .append_tag (b'ADBH' , binascii .unhexlify (
60
+ '6000000000383AFFFE800000000000000000000000000001FE80000000000000D438C1FD077C00C38600248840005550000000000000000005010000000005DC03044040FFFFFFFFFFFFFFFF0000000020018004142021F50000000000000000' ))
60
61
p .append_tag (b'ADTH' , struct .pack ('<LLL' , 0 , 0x10 , 0x60 ))
61
62
62
63
print (binascii .hexlify (p .get_packet ()))
@@ -76,7 +77,6 @@ def __init__(self, path='/dev/xmm0/mux'):
76
77
p .append_tag (b'CMDH' , struct .pack ('<LLLL' , 1 , 0 , 0 , 0 ))
77
78
os .write (self .fp , p .get_packet ())
78
79
79
-
80
80
while True :
81
81
events = sel .select ()
82
82
for key , mask in events :
@@ -99,7 +99,7 @@ def read_mux(self):
99
99
tail = tail [16 :]
100
100
while len (tail ) >= 8 :
101
101
offset , length = struct .unpack ('<LL' , tail [:8 ])
102
- puk = data [offset :offset + length ]
102
+ puk = data [offset :offset + length ]
103
103
# print('ai>', binascii.hexlify(puk))
104
104
self .tun .write (puk )
105
105
tail = tail [8 :]
0 commit comments