Updated directory structure.
This commit is contained in:
@@ -4,5 +4,5 @@
|
|||||||
--opt:size
|
--opt:size
|
||||||
--passL:"-s" # Strip symbols, such as sensitive function names
|
--passL:"-s" # Strip symbols, such as sensitive function names
|
||||||
-d:CONFIGURATION="PLACEHOLDERAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPLACEHOLDER"
|
-d:CONFIGURATION="PLACEHOLDERAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPLACEHOLDER"
|
||||||
-d:MODULES="255"
|
-d:MODULES="127"
|
||||||
-o:"/mnt/c/Users/jakob/Documents/Projects/conquest/bin/monarch.x64.exe"
|
-o:"/mnt/c/Users/jakob/Documents/Projects/conquest/bin/monarch.x64.exe"
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
import std/paths
|
import std/paths
|
||||||
import strutils, sequtils, times, tables
|
import strutils, sequtils, times, tables
|
||||||
import ../common/[types, sequence, crypto, utils, serialize]
|
import ../../common/[types, sequence, crypto, utils, serialize]
|
||||||
|
|
||||||
proc parseInput*(input: string): seq[string] =
|
proc parseInput*(input: string): seq[string] =
|
||||||
var i = 0
|
var i = 0
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
import whisky
|
import whisky
|
||||||
import times, tables, json, base64
|
import times, tables, json, base64
|
||||||
import ../common/[types, utils, serialize, event]
|
import ../../common/[types, utils, serialize, event]
|
||||||
export sendHeartbeat, recvEvent
|
export sendHeartbeat, recvEvent
|
||||||
|
|
||||||
#[
|
#[
|
||||||
@@ -3,8 +3,9 @@ import tables, strutils, strformat, json, parsetoml, base64, os # native_dialogs
|
|||||||
import ./utils/[appImGui, globals]
|
import ./utils/[appImGui, globals]
|
||||||
import ./views/[dockspace, sessions, listeners, eventlog, console]
|
import ./views/[dockspace, sessions, listeners, eventlog, console]
|
||||||
import ./views/modals/generatePayload
|
import ./views/modals/generatePayload
|
||||||
|
import ./views/loot/[downloads, screenshots]
|
||||||
import ../common/[types, utils, crypto]
|
import ../common/[types, utils, crypto]
|
||||||
import ./websocket
|
import ./core/websocket
|
||||||
|
|
||||||
import sugar
|
import sugar
|
||||||
|
|
||||||
@@ -19,6 +20,8 @@ proc main(ip: string = "localhost", port: int = 37573) =
|
|||||||
showSessionsTable = true
|
showSessionsTable = true
|
||||||
showListeners = true
|
showListeners = true
|
||||||
showEventlog = true
|
showEventlog = true
|
||||||
|
showDownloads = false
|
||||||
|
showScreenshots = false
|
||||||
consoles: Table[string, ConsoleComponent]
|
consoles: Table[string, ConsoleComponent]
|
||||||
|
|
||||||
var
|
var
|
||||||
@@ -30,6 +33,8 @@ proc main(ip: string = "localhost", port: int = 37573) =
|
|||||||
views["Sessions [Table View]"] = addr showSessionsTable
|
views["Sessions [Table View]"] = addr showSessionsTable
|
||||||
views["Listeners"] = addr showListeners
|
views["Listeners"] = addr showListeners
|
||||||
views["Eventlog"] = addr showEventlog
|
views["Eventlog"] = addr showEventlog
|
||||||
|
views["Loot::Downloads"] = addr showDownloads
|
||||||
|
views["Loot::Screenshots"] = addr showScreenshots
|
||||||
|
|
||||||
# Create components
|
# Create components
|
||||||
var
|
var
|
||||||
@@ -37,6 +42,8 @@ proc main(ip: string = "localhost", port: int = 37573) =
|
|||||||
sessionsTable = SessionsTable("Sessions [Table View]", addr consoles)
|
sessionsTable = SessionsTable("Sessions [Table View]", addr consoles)
|
||||||
listenersTable = ListenersTable("Listeners")
|
listenersTable = ListenersTable("Listeners")
|
||||||
eventlog = Eventlog("Eventlog")
|
eventlog = Eventlog("Eventlog")
|
||||||
|
lootDownloads = LootDownloads("Downloads")
|
||||||
|
lootScreenshots = LootScreenshots("Screenshots")
|
||||||
|
|
||||||
let io = igGetIO()
|
let io = igGetIO()
|
||||||
|
|
||||||
@@ -151,6 +158,8 @@ proc main(ip: string = "localhost", port: int = 37573) =
|
|||||||
if showSessionsTable: sessionsTable.draw(addr showSessionsTable)
|
if showSessionsTable: sessionsTable.draw(addr showSessionsTable)
|
||||||
if showListeners: listenersTable.draw(addr showListeners, connection)
|
if showListeners: listenersTable.draw(addr showListeners, connection)
|
||||||
if showEventlog: eventlog.draw(addr showEventlog)
|
if showEventlog: eventlog.draw(addr showEventlog)
|
||||||
|
if showDownloads: lootDownloads.draw(addr showDownloads)
|
||||||
|
if showScreenshots: lootScreenshots.draw(addr showScreenshots)
|
||||||
|
|
||||||
# Show console windows
|
# Show console windows
|
||||||
var newConsoleTable: Table[string, ConsoleComponent]
|
var newConsoleTable: Table[string, ConsoleComponent]
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ import imguin/[cimgui, glfw_opengl, simple]
|
|||||||
import ../utils/[appImGui, colors]
|
import ../utils/[appImGui, colors]
|
||||||
import ../../common/[types, utils]
|
import ../../common/[types, utils]
|
||||||
import ../../modules/manager
|
import ../../modules/manager
|
||||||
import ../[task, websocket]
|
import ../core/[task, websocket]
|
||||||
|
|
||||||
const MAX_INPUT_LENGTH = 512
|
const MAX_INPUT_LENGTH = 512
|
||||||
type
|
type
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import tables
|
import tables, strutils
|
||||||
import imguin/[cimgui, glfw_opengl, simple]
|
import imguin/[cimgui, glfw_opengl, simple]
|
||||||
import ../utils/appImGui
|
import ../utils/appImGui
|
||||||
|
|
||||||
@@ -56,6 +56,8 @@ proc draw*(component: DockspaceComponent, showComponent: ptr bool, views: Table[
|
|||||||
igDockBuilderDockWindow("Sessions [Table View]", dockTopLeft[])
|
igDockBuilderDockWindow("Sessions [Table View]", dockTopLeft[])
|
||||||
igDockBuilderDockWindow("Listeners", dockBottom[])
|
igDockBuilderDockWindow("Listeners", dockBottom[])
|
||||||
igDockBuilderDockWindow("Eventlog", dockTopRight[])
|
igDockBuilderDockWindow("Eventlog", dockTopRight[])
|
||||||
|
igDockBuilderDockWindow("Downloads", dockBottom[])
|
||||||
|
igDockBuilderDockWindow("Screenshots", dockBottom[])
|
||||||
igDockBuilderDockWindow("Dear ImGui Demo", dockTopRight[])
|
igDockBuilderDockWindow("Dear ImGui Demo", dockTopRight[])
|
||||||
|
|
||||||
igDockBuilderFinish(dockspaceId)
|
igDockBuilderFinish(dockspaceId)
|
||||||
@@ -74,8 +76,18 @@ proc draw*(component: DockspaceComponent, showComponent: ptr bool, views: Table[
|
|||||||
if igBeginMenu("Views", true):
|
if igBeginMenu("Views", true):
|
||||||
# Create a menu item to toggle each of the main views of the application
|
# Create a menu item to toggle each of the main views of the application
|
||||||
for view, showView in views:
|
for view, showView in views:
|
||||||
|
if not view.contains("::"):
|
||||||
if igMenuItem(view, nil, showView[], showView != nil):
|
if igMenuItem(view, nil, showView[], showView != nil):
|
||||||
showView[] = not showView[]
|
showView[] = not showView[]
|
||||||
|
|
||||||
|
if igBeginMenu("Loot", true):
|
||||||
|
for view, showView in views:
|
||||||
|
if view.startsWith("Loot"):
|
||||||
|
let item = view.split("::", 1)[1].strip()
|
||||||
|
if igMenuItem(item, nil, showView[], showView != nil):
|
||||||
|
showView[] = not showView[]
|
||||||
|
igEndMenu()
|
||||||
|
|
||||||
igEndMenu()
|
igEndMenu()
|
||||||
|
|
||||||
igEndMenuBar()
|
igEndMenuBar()
|
||||||
@@ -4,7 +4,7 @@ import imguin/[cimgui, glfw_opengl, simple]
|
|||||||
import ../utils/appImGui
|
import ../utils/appImGui
|
||||||
import ../../common/[types, utils]
|
import ../../common/[types, utils]
|
||||||
import ./modals/[startListener, generatePayload]
|
import ./modals/[startListener, generatePayload]
|
||||||
import ../websocket
|
import ../core/websocket
|
||||||
|
|
||||||
type
|
type
|
||||||
ListenersTableComponent* = ref object of RootObj
|
ListenersTableComponent* = ref object of RootObj
|
||||||
|
|||||||
19
src/client/views/loot/downloads.nim
Normal file
19
src/client/views/loot/downloads.nim
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
import strformat, strutils, times
|
||||||
|
import imguin/[cimgui, glfw_opengl, simple]
|
||||||
|
import ../../utils/[appImGui, colors]
|
||||||
|
import ../../../common/types
|
||||||
|
|
||||||
|
type
|
||||||
|
LootDownloadsComponent* = ref object of RootObj
|
||||||
|
title: string
|
||||||
|
|
||||||
|
|
||||||
|
proc LootDownloads*(title: string): LootDownloadsComponent =
|
||||||
|
result = new LootDownloadsComponent
|
||||||
|
result.title = title
|
||||||
|
|
||||||
|
proc draw*(component: LootDownloadsComponent, showComponent: ptr bool) =
|
||||||
|
igBegin(component.title, showComponent, 0)
|
||||||
|
defer: igEnd()
|
||||||
|
|
||||||
|
igText("asd")
|
||||||
19
src/client/views/loot/screenshots.nim
Normal file
19
src/client/views/loot/screenshots.nim
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
import strformat, strutils, times
|
||||||
|
import imguin/[cimgui, glfw_opengl, simple]
|
||||||
|
import ../../utils/[appImGui, colors]
|
||||||
|
import ../../../common/types
|
||||||
|
|
||||||
|
type
|
||||||
|
LootScreenshotsComponent* = ref object of RootObj
|
||||||
|
title: string
|
||||||
|
|
||||||
|
|
||||||
|
proc LootScreenshots*(title: string): LootScreenshotsComponent =
|
||||||
|
result = new LootScreenshotsComponent
|
||||||
|
result.title = title
|
||||||
|
|
||||||
|
proc draw*(component: LootScreenshotsComponent, showComponent: ptr bool) =
|
||||||
|
igBegin(component.title, showComponent, 0)
|
||||||
|
defer: igEnd()
|
||||||
|
|
||||||
|
igText("asd")
|
||||||
@@ -64,8 +64,8 @@ proc draw*(component: SessionsTableComponent, showComponent: ptr bool) =
|
|||||||
|
|
||||||
igTableSetupColumn("AgentID", ImGuiTableColumnFlags_NoReorder.int32 or ImGuiTableColumnFlags_NoHide.int32, 0.0f, 0)
|
igTableSetupColumn("AgentID", ImGuiTableColumnFlags_NoReorder.int32 or ImGuiTableColumnFlags_NoHide.int32, 0.0f, 0)
|
||||||
igTableSetupColumn("ListenerID", ImGuiTableColumnFlags_DefaultHide.int32, 0.0f, 0)
|
igTableSetupColumn("ListenerID", ImGuiTableColumnFlags_DefaultHide.int32, 0.0f, 0)
|
||||||
igTableSetupColumn("Internal", ImGuiTableColumnFlags_None.int32, 0.0f, 0)
|
igTableSetupColumn("IP (Internal)", ImGuiTableColumnFlags_None.int32, 0.0f, 0)
|
||||||
igTableSetupColumn("External", ImGuiTableColumnFlags_DefaultHide.int32, 0.0f, 0)
|
igTableSetupColumn("IP (External)", ImGuiTableColumnFlags_DefaultHide.int32, 0.0f, 0)
|
||||||
igTableSetupColumn("Username", ImGuiTableColumnFlags_None.int32, 0.0f, 0)
|
igTableSetupColumn("Username", ImGuiTableColumnFlags_None.int32, 0.0f, 0)
|
||||||
igTableSetupColumn("Hostname", ImGuiTableColumnFlags_None.int32, 0.0f, 0)
|
igTableSetupColumn("Hostname", ImGuiTableColumnFlags_None.int32, 0.0f, 0)
|
||||||
igTableSetupColumn("Domain", ImGuiTableColumnFlags_None.int32, 0.0f, 0)
|
igTableSetupColumn("Domain", ImGuiTableColumnFlags_None.int32, 0.0f, 0)
|
||||||
|
|||||||
@@ -2,9 +2,7 @@ import terminal, strformat, strutils, sequtils, tables, system, std/[dirs, paths
|
|||||||
|
|
||||||
import ../globals
|
import ../globals
|
||||||
import ../db/database
|
import ../db/database
|
||||||
import ../protocol/packer
|
import ../core/[packer, logger, websocket]
|
||||||
import ../core/logger
|
|
||||||
import ../websocket
|
|
||||||
import ../../common/[types, utils, serialize]
|
import ../../common/[types, utils, serialize]
|
||||||
|
|
||||||
#[
|
#[
|
||||||
|
|||||||
@@ -3,9 +3,8 @@ import strutils, base64
|
|||||||
|
|
||||||
import ./handlers
|
import ./handlers
|
||||||
import ../globals
|
import ../globals
|
||||||
import ../core/logger
|
import ../core/[logger, websocket]
|
||||||
import ../../common/[types, utils, serialize, profile]
|
import ../../common/[types, utils, serialize, profile]
|
||||||
import ../websocket
|
|
||||||
|
|
||||||
# Not Found
|
# Not Found
|
||||||
proc error404*(request: Request) =
|
proc error404*(request: Request) =
|
||||||
|
|||||||
@@ -1,10 +1,9 @@
|
|||||||
import terminal, strformat, strutils, sequtils, tables, system, osproc, streams, parsetoml
|
import terminal, strformat, strutils, sequtils, tables, system, osproc, streams, parsetoml
|
||||||
|
|
||||||
import ../globals
|
import ../globals
|
||||||
import ../core/logger
|
import ../core/[logger, websocket]
|
||||||
import ../db/database
|
import ../db/database
|
||||||
import ../../common/[types, utils, serialize, crypto]
|
import ../../common/[types, utils, serialize, crypto]
|
||||||
import ../websocket
|
|
||||||
|
|
||||||
const PLACEHOLDER = "PLACEHOLDER"
|
const PLACEHOLDER = "PLACEHOLDER"
|
||||||
|
|
||||||
|
|||||||
@@ -4,9 +4,8 @@ import parsetoml
|
|||||||
|
|
||||||
import ../api/routes
|
import ../api/routes
|
||||||
import ../db/database
|
import ../db/database
|
||||||
import ../core/logger
|
import ../core/[logger, websocket]
|
||||||
import ../../common/[types, profile]
|
import ../../common/[types, profile]
|
||||||
import ../websocket
|
|
||||||
|
|
||||||
proc serve(listener: Listener) {.thread.} =
|
proc serve(listener: Listener) {.thread.} =
|
||||||
try:
|
try:
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import times, json, base64, parsetoml, strformat
|
import times, json, base64, parsetoml, strformat
|
||||||
import ../common/[types, utils, event]
|
import ./logger
|
||||||
import ./core/logger
|
import ../../common/[types, utils, event]
|
||||||
export sendHeartbeat, recvEvent
|
export sendHeartbeat, recvEvent
|
||||||
|
|
||||||
proc `%`*(agent: Agent): JsonNode =
|
proc `%`*(agent: Agent): JsonNode =
|
||||||
@@ -1,12 +1,11 @@
|
|||||||
|
import mummy, mummy/routers
|
||||||
import terminal, parsetoml, json, math, base64, times
|
import terminal, parsetoml, json, math, base64, times
|
||||||
import strutils, strformat, system, tables
|
import strutils, strformat, system, tables
|
||||||
|
|
||||||
import ./core/[listener, logger, builder]
|
|
||||||
import ./globals
|
import ./globals
|
||||||
import ./db/database
|
import ./db/database
|
||||||
|
import ./core/[listener, logger, builder, websocket]
|
||||||
import ../common/[types, crypto, utils, profile, event]
|
import ../common/[types, crypto, utils, profile, event]
|
||||||
import ./websocket
|
|
||||||
import mummy, mummy/routers
|
|
||||||
|
|
||||||
proc header() =
|
proc header() =
|
||||||
echo ""
|
echo ""
|
||||||
|
|||||||
Reference in New Issue
Block a user