· 5 years ago · Jun 05, 2020, 07:42 PM
1Skip to content
2Search or jump to…
3
4Pull requests
5Issues
6Marketplace
7Explore
8
9@ExtasyHosting
10We are having a problem billing your account. Please enter a new payment method or check with your payment provider for details on why the transaction failed. You can downgrade to GitHub Free in your Billing settings.
11You can always contact support with any questions.
12ExtasyHosting
13/
14dune.cs
15Private
161
171
180
19 Code
20 Issues 0
21 Pull requests 0 Actions
22 Projects 0
23 Security 0
24 Insights
25 Settings
26dune.cs/Server/GNetwork.cpp
27@Molaron Molaron Added ntoskrnl.exe-upload
282427bab on 10 Aug 2019
29218 lines (186 sloc) 5.11 KB
30
31#include "include.h"
32
33GNetwork::GNetwork(unsigned short port)
34{
35 listener.listen(port);
36 listener.setBlocking(false);
37}
38
39GNetwork::~GNetwork()
40{
41}
42
43void GNetwork::Initialize()
44{
45 sf::TcpSocket * newSocket = nullptr;
46 while (1)
47 {
48 if (newSocket == nullptr)
49 {
50 newSocket = new sf::TcpSocket;
51 newSocket->setBlocking(false);
52 }
53
54 if (listener.accept(*newSocket) == sf::Socket::Done)
55 {
56
57 auto client = new Client(newSocket);
58 clients.push_back(client);
59
60 Log::Print(FOREGROUND_WHITE, -1, "[%s] New session accepted", client->GetIpAddress().c_str());
61
62 newSocket = nullptr;
63
64 //Create session key
65 client->sessionKey = Tools::GenerateRandomString(32);
66
67 //Allocate packet
68 NPSessionKey* msg = (NPSessionKey*)malloc(sizeof(NPSessionKey));
69 //Create/Initialize packet
70 msg->Initialize(client->sessionKey);
71 auto encrypted = Transfer::EncryptPacketAES(STATIC_KEY, msg, msg->length());
72 Transfer::SendMsg(client, encrypted, encrypted.length());
73 free(msg);
74 }
75 ServerThread();
76 }
77}
78
79sf::Socket::Status GNetwork::Receive(sf::TcpSocket* socket, char** result, size_t* outSize)
80{
81 sf::Packet packet;
82 sf::Socket::Status status = socket->receive(packet);
83
84 if (status == sf::Socket::Done)
85 {
86 char* received = (char*)malloc(packet.getDataSize());
87 memcpy((void*)received, packet.getData(), packet.getDataSize());
88 *result = received;
89 *outSize = packet.getDataSize();
90 }
91
92 return status;
93}
94
95NetworkPacket * GNetwork::DecryptPacketAES(std::string key, std::string data)
96{
97 auto decrypted = Cryptography::StringDecrypt(key, data);
98
99 auto packet = (NetworkPacket*)malloc(decrypted.length());
100 memcpy(packet, decrypted.c_str(), decrypted.length());
101
102 return packet;
103}
104
105void GNetwork::ServerThread()
106{
107 int type_client = 0;
108 int type_injector = 0;
109 int type_moderator = 0;
110
111 for (auto client = clients.begin(); client != clients.end();)
112 {
113 if ((*client)->type == CT_Client) type_client++;
114 if ((*client)->type == CT_StealthDriver) type_injector++;
115 if ((*client)->type == CT_ModeratorTool) type_moderator++;
116
117 char* data = NULL;
118 size_t size = NULL;
119 auto status = Receive((*client)->socket, &data, &size);
120
121 switch (status)
122 {
123 case sf::Socket::Done:
124 {
125 auto _packet = DecryptPacketAES((*client)->sessionKey, std::string(data, size));
126
127 switch (_packet->type)
128 {
129 case NAuthenticateRequest:
130 {
131 PacketHandler::AuthenticationRequest(this, (*client), _packet);
132 break;
133 }
134 case NCheckClientUpdateRequest:
135 {
136 PacketHandler::CheckClientUpdateRequest(this, (*client), _packet);
137 break;
138 }
139 case NGetGamesRequest:
140 {
141 PacketHandler::GetGamesRequest(this, (*client), _packet);
142 break;
143 }
144 case NDownloadBypassRequest:
145 {
146 PacketHandler::DownloadBypassRequest(this, (*client), _packet);
147 break;
148 }
149 case NDownloadCheatRequest:
150 {
151 PacketHandler::DownloadCheatRequest(this, (*client), _packet);
152 break;
153 }
154 case NGetCheatCompiledRequest:
155 {
156 PacketHandler::GetCheatCompiledRequest(this, (*client), _packet);
157 break;
158 }
159 case NAddLogMessageRequest:
160 {
161 PacketHandler::AddLogMessageRequest(this, (*client), _packet);
162 break;
163 }
164 case NDownloadDriverRequest:
165 {
166 PacketHandler::DownloadDriverRequest(this, (*client), _packet);
167 break;
168 }
169 case NUploadAFDRequest:
170 {
171 PacketHandler::UploadAFDRequest(this, (*client), _packet);
172 break;
173 }
174 case NDownloadRWXModuleRequest:
175 {
176 PacketHandler::DownloadRWXModuleRequest(this, (*client), _packet);
177 break;
178 }
179 case NVerifyTokenRequest:
180 {
181 PacketHandler::VerifyTokenRequest(this, (*client), _packet);
182 break;
183 }
184 case NAuthKeyRequest:
185 {
186 PacketHandler::AuthKeyRequest(this, (*client), _packet);
187 break;
188 }
189 case NDownloadEACDependencyInjectorRequest:
190 {
191 PacketHandler::DownloadEACDependencyInjectorRequest(this, (*client), _packet);
192 break;
193 }
194 case NUploadKernelRequest:
195 {
196 PacketHandler::UploadKernelRequest(this, (*client), _packet);
197 break;
198 }
199 }
200
201 free(_packet);
202
203 ++client;
204
205 break;
206 }
207
208
209 case sf::Socket::Disconnected:
210 {
211 if (MySQL::UserExists((*client)->uniqueHash))
212 {
213 if ((*client)->waitingForCompile)
214 {
215 Log::Print(FOREGROUND_WHITE, MySQL::UserGetForumID((*client)->uniqueHash), "[%s, %s] Client compiling aborted", (*client)->GetIpAddress().c_str(), (*client)->GetDiscord().c_str());
216 VMProtect::CancelCompile(*client);
217 }
218 Log::Print(FOREGROUND_WHITE, MySQL::UserGetForumID((*client)->uniqueHash), "[%s, %s] disconnected", (*client)->GetIpAddress().c_str(), (*client)->GetDiscord().c_str());
219 }
220 else
221 {
222 Log::Print(FOREGROUND_WHITE, MySQL::UserGetForumID((*client)->uniqueHash), "[%s] disconnected", (*client)->GetIpAddress().c_str());
223 }
224
225
226
227 client = clients.erase(client);
228
229 break;
230 }
231
232 default:
233 {
234 ++client;
235 }
236 }
237
238 //Free raw data
239 free(data);
240 }
241}
242
243//void GNetwork::SendMsg(Session::iterator client, PacketType type, const std::string &msg)
244//{
245// sf::Packet pack;
246// pack << type << msg;
247// client->first->send(pack);
248//}
249© 2020 GitHub, Inc.
250Terms
251Privacy
252Security
253Status
254Help
255Contact GitHub
256Pricing
257API
258Training
259Blog
260About