aboutsummaryrefslogtreecommitdiff
path: root/client/src
diff options
context:
space:
mode:
authorauth12 <[email protected]>2020-07-19 11:57:04 -0700
committerGitHub <[email protected]>2020-07-19 11:57:04 -0700
commit1bae439a35a3aadca6772716aaeea8c8a0991114 (patch)
treef8eab7a7bae237ad697feecfae26b17bab91b16e /client/src
parentMore placeholders and general plan. (diff)
parentMerge branch 'master' into windows (diff)
downloadloader-1bae439a35a3aadca6772716aaeea8c8a0991114.tar.xz
loader-1bae439a35a3aadca6772716aaeea8c8a0991114.zip
Merge pull request #1 from auth12/windows
Windows
Diffstat (limited to 'client/src')
-rw-r--r--client/src/client/client.cpp25
-rw-r--r--client/src/client/client.h17
-rw-r--r--client/src/include.h20
-rw-r--r--client/src/main.cpp2
-rw-r--r--client/src/shellcode/shellcode.h2
-rw-r--r--client/src/util/io.h4
6 files changed, 40 insertions, 30 deletions
diff --git a/client/src/client/client.cpp b/client/src/client/client.cpp
index 43ee6c7..8e71e81 100644
--- a/client/src/client/client.cpp
+++ b/client/src/client/client.cpp
@@ -2,23 +2,30 @@
#include "client.h"
void tcp::client::start(const std::string_view server_ip, const uint16_t port) {
- SSL_library_init();
+ wolfSSL_library_init();
- m_ssl_ctx = SSL_CTX_new(TLS_client_method());
+ m_ssl_ctx = wolfSSL_CTX_new(wolfTLS_client_method());
- int ret = SSL_CTX_load_verify_locations(m_ssl_ctx, "ssl/rootCA.crt", nullptr);
+ int ret = wolfSSL_CTX_load_verify_locations(m_ssl_ctx, "ssl/rootCA.crt", nullptr);
if (ret != 1) {
io::logger->error("failed to load ca.");
return;
}
- SSL_CTX_set_verify(m_ssl_ctx, SSL_VERIFY_PEER, 0);
+ wolfSSL_CTX_set_verify(m_ssl_ctx, SSL_VERIFY_PEER, 0);
+
+ WSADATA data;
+ ret = WSAStartup(MAKEWORD(2, 2), &data);
+ if (ret != 0) {
+ io::logger->error("failed to initialize WSA.");
+ return;
+ }
m_socket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if (m_socket == -1) {
io::logger->error("failed to create socket.");
return;
}
-
+
sockaddr_in server_addr;
server_addr.sin_family = AF_INET;
@@ -32,13 +39,13 @@ void tcp::client::start(const std::string_view server_ip, const uint16_t port) {
return;
}
- m_server_ssl = SSL_new(m_ssl_ctx);
- SSL_set_fd(m_server_ssl, m_socket);
+ m_server_ssl = wolfSSL_new(m_ssl_ctx);
+ wolfSSL_set_fd(m_server_ssl, m_socket);
- ret = SSL_connect(m_server_ssl);
+ ret = wolfSSL_connect(m_server_ssl);
if (ret != 1) {
- ret = SSL_get_error(m_server_ssl, ret);
+ ret = wolfSSL_get_error(m_server_ssl, ret);
io::logger->error("secure connection failed, code {}", ret);
return;
}
diff --git a/client/src/client/client.h b/client/src/client/client.h
index bdd7cf5..3a888fb 100644
--- a/client/src/client/client.h
+++ b/client/src/client/client.h
@@ -1,4 +1,7 @@
#pragma once
+
+#include <wolfssl/ssl.h>
+
#include "../util/io.h"
#include "../util/events.h"
#include "../injection/mapper.h"
@@ -28,8 +31,8 @@ class client {
int m_socket;
std::atomic<bool> m_active;
- SSL* m_server_ssl;
- SSL_CTX* m_ssl_ctx;
+ WOLFSSL* m_server_ssl;
+ WOLFSSL_CTX* m_ssl_ctx;
public:
int state;
@@ -50,11 +53,11 @@ class client {
}
int write(const void* data, size_t size) {
- return SSL_write(m_server_ssl, data, size);
+ return wolfSSL_write(m_server_ssl, data, size);
}
int read(void* data, size_t size) {
- return SSL_read(m_server_ssl, data, size);
+ return wolfSSL_read(m_server_ssl, data, size);
}
int read_stream(std::vector<char>& out);
@@ -77,9 +80,9 @@ class client {
operator bool() const { return m_active; }
void shutdown() {
- close(m_socket);
- SSL_shutdown(m_server_ssl);
- SSL_free(m_server_ssl);
+ closesocket(m_socket);
+ wolfSSL_shutdown(m_server_ssl);
+ wolfSSL_free(m_server_ssl);
m_active = false;
}
diff --git a/client/src/include.h b/client/src/include.h
index fe46e5a..a810eed 100644
--- a/client/src/include.h
+++ b/client/src/include.h
@@ -1,6 +1,12 @@
#pragma once
+
+#include <windows.h>
#include <stdio.h>
+#include <winsock2.h>
+#include <ws2tcpip.h>
+#include <iphlpapi.h>
+
#include <algorithm>
#include <array>
#include <chrono>
@@ -26,16 +32,4 @@
#include <future>
#include <any>
-#include <arpa/inet.h>
-#include <netdb.h>
-#include <netinet/in.h>
-#include <sys/socket.h>
-#include <sys/types.h>
-#include <unistd.h>
-
-#include <spdlog/fmt/fmt.h>
-#include <spdlog/spdlog.h>
-#include <spdlog/sinks/basic_file_sink.h>
-#include <spdlog/sinks/stdout_color_sinks.h>
-
-#include <openssl/ssl.h> \ No newline at end of file
+#include <spdlog/fmt/fmt.h> \ No newline at end of file
diff --git a/client/src/main.cpp b/client/src/main.cpp
index 4413a44..f67ecf1 100644
--- a/client/src/main.cpp
+++ b/client/src/main.cpp
@@ -113,4 +113,6 @@ int main(int argc, char* argv[]) {
break;
}
}
+
+ std::cin.get();
}
diff --git a/client/src/shellcode/shellcode.h b/client/src/shellcode/shellcode.h
index 5f0e135..4a87dca 100644
--- a/client/src/shellcode/shellcode.h
+++ b/client/src/shellcode/shellcode.h
@@ -1,6 +1,6 @@
#pragma once
-#include <asmjit/src/asmjit/asmjit.h>
+#include <asmjit/asmjit.h>
using namespace asmjit;
diff --git a/client/src/util/io.h b/client/src/util/io.h
index 8eae321..b1a09f9 100644
--- a/client/src/util/io.h
+++ b/client/src/util/io.h
@@ -1,5 +1,9 @@
#pragma once
+#include <spdlog/spdlog.h>
+#include <spdlog/sinks/basic_file_sink.h>
+#include <spdlog/sinks/stdout_color_sinks.h>
+
namespace io {
extern std::shared_ptr<spdlog::logger> logger;