1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
import time
import sys
import win32pipe
import win32file
import pywintypes
import ctypes
 
 
class Head(ctypes.Structure):
    _fields_ = [("z", ctypes.c_int),
                ("v0", ctypes.c_ubyte),("v1", ctypes.c_ubyte),("c0", ctypes.c_ubyte),("c1", ctypes.c_ubyte),
                ("t", ctypes.c_ulonglong),
                ("r",ctypes.c_int),
                ("y0",ctypes.c_ubyte),
                ("y1",ctypes.c_ubyte),("n",ctypes.c_ubyte),("d",ctypes.c_ubyte),
                ("h",ctypes.c_ushort),("w",ctypes.c_ushort),
                ("l",ctypes.c_int)]
    
class Y2(ctypes.Union):
    _fields_= [("h1", ctypes.c_ushort),
               ("t2", ctypes.c_ubyte * 2)]
    
class Y4(ctypes.Union):
    _fields_= [("i1", ctypes.c_int),
               ("f1", ctypes.c_float),
               ("t4", ctypes.c_ubyte * 4)]
        
class Y8(ctypes.Union):
    _fields_= [("n1", ctypes.c_ulonglong),
               ("d1", ctypes.c_double),
               ("t8", ctypes.c_ubyte * 8)]
 
class Yhd(ctypes.Structure):
    _fields_ = [("yHd",ctypes.c_ubyte * 32)]
 
def int_to_bytes1(self, x):
    return x.to_bytes(1'big')
 
def int_to_bytes2(self, x):
    return x.to_bytes(2'big')
    
def int_to_bytes4(self, x):
    return x.to_bytes(4'big')
    
def int_to_bytes8(self, x):
    return x.to_bytes(8'big')    
 
def int_from_bytes(self, xbytes):
    return int.from_bytes(xbytes, 'big')
        
    
def yHd_head(head):
    y2 = Y2() ; y4 = Y4() ; y8 = Y8() ; yHd = Yhd() ; y42 = Y4() ;
    
    y4.i1 = head.z
    yHd.yHd[0= y4.t4[0] ; yHd.yHd[1= y4.t4[1] ; yHd.yHd[2= y4.t4[2] ; yHd.yHd[3= y4.t4[3]
    
    yHd.yHd[4= head.v0 ; yHd.yHd[5= head.v1 ; yHd.yHd[6= head.c0 ; yHd.yHd[7= head.c1
 
    y8.n1 = head.t
    yHd.yHd[8= y8.t8[0] ; yHd.yHd[9= y8.t8[1] ; yHd.yHd[10= y8.t8[2] ; yHd.yHd[11= y8.t8[3] ;
    yHd.yHd[12= y8.t8[4] ; yHd.yHd[13= y8.t8[5] ; yHd.yHd[14= y8.t8[6] ; yHd.yHd[15= y8.t8[7] ;
    
    
    y4.i1 = head.r
    
    yHd.yHd[16= y4.t4[0] ; yHd.yHd[17= y4.t4[1] ; yHd.yHd[18= y4.t4[2] ; yHd.yHd[19= y4.t4[3] ;
    yHd.yHd[20= head.y0 ; yHd.yHd[21= head.y1 ; yHd.yHd[22= head.n ; yHd.yHd[23= head.d ;
 
    y2.h1 = head.h
    yHd.yHd[24= y2.t2[0] ; yHd.yHd[25= y2.t2[1
    
    y2.h1 = 0
    
    y2.h1 = head.w
    yHd.yHd[26= y2.t2[0] ; yHd.yHd[27= y2.t2[1
 
    
    y42.i1 = head.l
    yHd.yHd[28= y42.t4[0] ; yHd.yHd[29= y42.t4[1] ; yHd.yHd[30= y42.t4[2] ; yHd.yHd[31= y42.t4[3]
 
    return yHd
 
def head_yHd(yHd):
    head = Head() ; y2 = Y2() ; y4 = Y4() ; y8 = Y8() ; y42 = Y4() ;
    
    y4.t4[0= yHd.yHd[0] ; y4.t4[1= yHd.yHd[1] ; y4.t4[2= yHd.yHd[2] ; y4.t4[3= yHd.yHd[3] ;
    head.z = y4.i1
    
    head.v0 = yHd.yHd[4] ; head.v1 = yHd.yHd[5] ;  head.c0 = yHd.yHd[6] ; head.c1 = yHd.yHd[7] ;
    
    
    y8.t8[0= yHd.yHd[8] ; y8.t8[1= yHd.yHd[9] ; y8.t8[2= yHd.yHd[10] ; y8.t8[3= yHd.yHd[11] ;
    y8.t8[4= yHd.yHd[12] ; y8.t8[5= yHd.yHd[13] ; y8.t8[6= yHd.yHd[14] ; y8.t8[7= yHd.yHd[15] ;
    
    head.t = y8.n1
    
    y4.t4[0= yHd.yHd[16] ; y4.t4[1= yHd.yHd[17] ; y4.t4[2= yHd.yHd[18] ; y4.t4[3= yHd.yHd[19] ;
    head.r = y4.i1
    
    head.y0 = yHd.yHd[20] ; head.y1 = yHd.yHd[21] ; head.n = yHd.yHd[22] ; head.d = yHd.yHd[23] ;     
    
    y2.t2[0= yHd.yHd[24] ; y2.t2[1= yHd.yHd[25] ;
    head.h = y2.h1
    
    y2.t2[0= yHd.yHd[26] ; y2.t2[1= yHd.yHd[27] ;
    head.w = y2.h1
    
    y42.t4[0= yHd.yHd[28] ; y42.t4[1= yHd.yHd[29] ; y42.t4[2= yHd.yHd[30] ; y42.t4[3= yHd.yHd[31] ; 
    head.l = y42.i1
    
    return head
 
def headEnc_s(string):
    head = Head()
    head.v0 = ctypes.c_ubyte(1) ; head.v1 = ctypes.c_ubyte(0) ; head.c0 = ctypes.c_ubyte(3) ; head_c1 = ctypes.c_ubyte(0)
    head.t = ctypes.c_ulonglong(0) ; head.r = ctypes.c_int(0) ;
    head.y0 = ctypes.c_ubyte(1) ; head.y1 = ctypes.c_ubyte(0) ;
    head.n = ctypes.c_ubyte(0) ; head.d = ctypes.c_ubyte(1) ;
    head.h = ctypes.c_ushort(1) ; head.w = ctypes.c_ushort(len(string)) ; head.l = ctypes.c_int(head.h * head.w * head.d)
    head.z = ctypes.c_int(head.l + 32)
    
    return head
 
def yHdr_s(string):
    head = headEnc_s(string)
    yHdr_To_send = bytes(head) + string.encode()
    return yHdr_To_send
 
cs


+ Recent posts