Skip to content

Commit

Permalink
Version 0.19.0 (2023-03-16)
Browse files Browse the repository at this point in the history
- see change log
  • Loading branch information
DavidGeeraerts committed Mar 16, 2023
1 parent 65d944d commit bad6ae9
Show file tree
Hide file tree
Showing 9 changed files with 188 additions and 109 deletions.
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -6,3 +6,5 @@ ADDS_USER_QUERY.cmd
DSQUERY_Attributes_Sorted.txt
*.backup
*Test.cmd
*Dev*
*.old
130 changes: 92 additions & 38 deletions ADDS_Tool.cmd
Original file line number Diff line number Diff line change
Expand Up @@ -39,8 +39,8 @@
@Echo Off
@SETLOCAL enableextensions
SET $PROGRAM_NAME=Active_Directory_Domain_Services_Tool
SET $Version=0.18.0
SET $BUILD=2023-03-13 1145
SET $Version=0.19.0
SET $BUILD=2023-03-16 0715
Title %$PROGRAM_NAME%
Prompt ADT$G
color 8F
Expand All @@ -61,6 +61,7 @@ SET $CONFIG_FILE=ADDS_Tool.config
:: Defaults
:: uses user profile location for logs
SET "$LOGPATH=%APPDATA%\ADDS"
SET "$LOGPATH_ARCHIVE=%APPDATA%\ADDS"
SET $SESSION_LOG=ADDS_Tool_Active_Session.log
SET $SEARCH_SESSION_LOG=ADDS_Tool_Session_Search.log
SET $LAST_SEARCH_LOG=ADDS_Tool_Last_Search.log
Expand All @@ -79,9 +80,13 @@ SET $SUPPRESS_VERBOSE=0
:: {0 [No] , 1 [Yes]}
SET $SORTED=1

:: Keep all logs
:: Keep PID Session logs
:: {Yes, No}
SET $KPLOG=Yes
SET $KPLOG=No

:: Nuke logs
:: {Yes, No}
SET $NUKE=No

:: Keep Session Settings
:: {Yes, No}
Expand All @@ -100,6 +105,14 @@ SET $DEGUB_MODE=0
:: !!!! Everything below here is 'hard-coded' [DO NOT MODIFY] !!!!
::#############################################################################

echo Loading...

:::: Directory ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:CD
:: Launched from directory
SET "$PROGRAM_PATH=%~dp0"
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

:::: Default Program Variables ::::::::::::::::::::::::::::::::::::::::::::::::
:: Program Variables
:: Defaults
Expand Down Expand Up @@ -147,6 +160,10 @@ FOR /F "tokens=2 delims=^=" %%V IN ('FINDSTR /BC:"$CONFIG_SCHEMA_VERSION" "%~dp0
FOR /F "tokens=2 delims=^=" %%V IN ('FINDSTR /BC:"$LOGPATH" "%~dp0\%$CONFIG_FILE%"') DO SET "$CONFIG_LOGPATH=%%V"
IF DEFINED $CONFIG_LOGPATH SET "$LOGPATH=%$CONFIG_LOGPATH%"
FOR /F %%R IN ('ECHO %$LOGPATH%') DO SET $LOGPATH=%%R
:: Archive Logs
FOR /F "tokens=2 delims=^=" %%V IN ('FINDSTR /BC:"$LOGPATH_ARCHIVE" "%~dp0\%$CONFIG_FILE%"') DO SET "$CONFIG_LOGPATH_ARCHIVE=%%V"
IF DEFINED $CONFIG_LOGPATH_ARCHIVE SET "$LOGPATH_ARCHIVE=%$CONFIG_LOGPATH%"
FOR /F %%R IN ('ECHO %$LOGPATH_ARCHIVE%') DO SET $LOGPATH_ARCHIVE=%%R
:: Session log
FOR /F "tokens=2 delims=^=" %%V IN ('FINDSTR /BC:"$SESSION_LOG" "%~dp0\%$CONFIG_FILE%"') DO SET "$CONFIG_SESSION_LOG=%%V"
IF DEFINED $CONFIG_SESSION_LOG SET "$SESSION_LOG=%$CONFIG_SESSION_LOG%"
Expand Down Expand Up @@ -186,21 +203,23 @@ FOR /F "tokens=2 delims=^=" %%V IN ('FINDSTR /BC:"$SORTED" "%~dp0\%$CONFIG_FILE%
IF DEFINED $CONFIG_SORTED SET "$SORTED=%$CONFIG_SORTED%"
FOR /F "tokens=2 delims=^=" %%V IN ('FINDSTR /BC:"$KPLOG" "%~dp0\%$CONFIG_FILE%"') DO SET "$CONFIG_KPLOG=%%V"
IF DEFINED $CONFIG_KPLOG SET "$KPLOG=%$CONFIG_KPLOG%"
FOR /F "tokens=2 delims=^=" %%V IN ('FINDSTR /BC:"$NUKE" "%~dp0\%$CONFIG_FILE%"') DO SET "$CONFIG_NUKE=%%V"
IF DEFINED $CONFIG_NUKE SET "$NUKE=%$CONFIG_NUKE%"

REM variable name to Friendly name
IF %$SORTED% EQU 1 (SET $SORTED_N=Yes) ELSE (SET $SORTED_N=No)
IF %$SUPPRESS_VERBOSE% EQU 0 (SET $SUPPRESS_VERBOSE_N=No) ELSE (SET $SUPPRESS_VERBOSE_N=Yes)

:skipCF

:::: Original Logging Path ::::::::::::::::::::::::::::::::::::::::::::::::::::
:BLPath
SET $BASE_LOGPATH=%$LOGPATH%
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

:::: Directory ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:CD
:: Launched from directory
SET "$PROGRAM_PATH=%~dp0"
:: Setup logging
:::: Temporary Cache ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:TCache
IF NOT EXIST "%$LOGPATH%\cache" MD "%$LOGPATH%\cache"
cd /D "%$LOGPATH%"
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

:::: PID ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
Expand All @@ -211,12 +230,28 @@ IF %$SUPPRESS_VERBOSE% EQU 0 (SET $SUPPRESS_VERBOSE_N=No) ELSE (SET $SUPPRESS_VE
SET /P $PID= < "%$LogPath%\cache\var_$PID.txt"
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

:::: PID Session Logging ::::::::::::::::::::::::::::::::::::::::::::::::::::::
:PIDL
IF NOT EXIST "%$LOGPATH%\%$PID%" MD "%$LOGPATH%\%$PID%"
IF NOT EXIST "%$LOGPATH%\%$PID%\cache" MD "%$LOGPATH%\%$PID%\cache"
MOVE /Y "%$LogPath%\cache\var_$PID.txt" "%$LOGPATH%\%$PID%\cache"
RD /S /Q "%$LogPath%\cache" 2> nul
SET "$LOGPATH=%$LOGPATH%\%$PID%"
cd /D "%$BASE_LOGPATH%"
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

:::: Logging Variables ::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: mostly for debugging
echo %$LogPath%> "%$LOGPATH%\cache\var_$LOGPATH.txt"
echo %$BASE_LOGPATH%> "%$LOGPATH%\cache\var_$BASE_LOGPATH.txt"
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

:::: fISO8601 :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:fISO8601
:: Function to ensure ISO 8601 Date format yyyy-mmm-dd
:: Easiest way to get ISO date
@powershell Get-Date -format "yyyy-MM-dd" > "%$LogPath%\cache\var_ISO8601_Date.txt"
SET /P $ISO_DATE= < "%$LogPath%\cache\var_ISO8601_Date.txt"
@powershell Get-Date -format "yyyy-MM-dd" > "%$LogPath%\cache\var_$ISO8601_Date.txt"
SET /P $ISO_DATE= < "%$LogPath%\cache\var_$ISO8601_Date.txt"
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

:::: UTC ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
Expand Down Expand Up @@ -384,6 +419,7 @@ GoTo end
ECHO %$PROGRAM_NAME%
echo Version: %$Version%
IF %$DEGUB_MODE% EQU 1 Echo Build: %$BUILD%
Echo PID: %$PID%
echo.
echo %DATE% %TIME%
ECHO.
Expand All @@ -402,7 +438,8 @@ GoTo end
Echo ------------------------
Echo Log File Path: %$LogPath%
Echo Log File Name: %$SESSION_LOG%
Echo Keep Log at End: %$kpLog%
Echo Keep PID Session Logs: %$kpLog%
Echo Nuke logs: %$NUKE%
Echo.
Echo Current Domain settings:
Echo ------------------------
Expand Down Expand Up @@ -3865,7 +3902,8 @@ GoTo skipSSS
Echo ------------------------
Echo Log File Path: %$LogPath%
Echo Log File Name: %$SESSION_LOG%
Echo Keep Log at End: %$kpLog%
Echo Keep PID Session Log: %$kpLog%
Echo Nuke logging: %$NUKE%
Echo.
Echo Instructions
Echo ------------------------
Expand All @@ -3876,6 +3914,7 @@ GoTo skipSSS
echo %$LOGPATH%> "%$LOGPATH%\cache\var_$LOGPATH.txt"
echo %$SESSION_LOG%> "%$LOGPATH%\cache\var_$SESSION_LOG.txt"
echo %$kpLog%> "%$LOGPATH%\cache\var_$kpLog.txt"
echo %$NUKE%> "%$LOGPATH%\cache\var_$NUKE.txt"
SET /p $LOGPATH=Log Path:
echo.
Echo ^("Yes" or "No"^)
Expand All @@ -3885,6 +3924,15 @@ GoTo skipSSS
IF /I NOT "%$kpLog%"=="Yes" SET /A $CHECK_KPLOG+=1
IF /I NOT "%$kpLog%"=="No" SET /A $CHECK_KPLOG+=1
IF %$CHECK_KPLOG% EQU 2 SET /P $kpLog= < "%$LOGPATH%\cache\var_$kpLog.txt"
echo.
Echo ^("Yes" or "No"^)
SET /P $NUKE=Nuke Logs:
echo %$NUKE% | FIND /I "Y" && SET $$NUKE=Yes
echo %$NUKE% | FIND /I "N" && SET $$NUKE=No
IF /I NOT "%$NUKE%"=="Yes" SET /A $CHECK_NUKE+=1
IF /I NOT "%$NUKE%"=="No" SET /A $CHECK_NUKE+=1
IF %$CHECK_NUKE% EQU 2 SET /P $NUKE= < "%$LOGPATH%\cache\var_$NUKE.txt"

:: ERROR CHECKING
IF NOT EXIST %$LogPath% mkdir %$LogPath% || Echo Log path not valid and/or file name not valid. Back to default!
IF NOT EXIST %$LogPath% SET /P $LogPath= < "%$LOGPATH%\cache\var_$LOGPATH.txt"
Expand Down Expand Up @@ -4537,36 +4585,42 @@ GoTo Search
:end
IF EXIST "%$LOGPATH%\%$SESSION_LOG%" Echo End Session %DATE% %TIME%. >> "%$LOGPATH%\%$SESSION_LOG%"
IF EXIST "%$LOGPATH%\%$SESSION_LOG%" Echo. >> "%$LOGPATH%\%$SESSION_LOG%"
IF EXIST "%$LogPath%\cache\var_$PID.txt" del /q "%$LogPath%\cache\var_$PID.txt"
:: [FUTURE FEATURE]
:: Save Session Settings
:: IF /I NOT "%$SAVE_SETTINGS%"=="Yes" GoTo skipSSS
:: IF NOT EXIST "%$LOGPATH%\Settings" mkdir "%$LOGPATH%\Settings"
:: :skipSSS

:: Close any open files
taskkill /F /FI "WINDOWTITLE eq ADDS*" 1> nul 2> nul

:: Archive session
Type "%$LOGPATH%\%$SESSION_LOG%" >> "%$LOGPATH_ARCHIVE%\%$ARCHIVE_LOG%"
Type "%$LOGPATH%\%$SEARCH_SESSION_LOG%" >> "%$LOGPATH_ARCHIVE%\%$ARCHIVE_SEARCH_LOG%"

:: Check for debug mode
IF %$DEGUB_MODE% EQU 1 GoTo skipCL
:: Last Search files
IF EXIST "%$LOGPATH%\%$LAST_SEARCH_LOG%" Del /q "%$LOGPATH%\%$LAST_SEARCH_LOG%"
IF EXIST "%$LOGPATH%\cache\var_Last_Search_N_DN.txt" Del /q "%$LOGPATH%\cache\var_Last_Search_N_DN.txt"
IF EXIST "%$LOGPATH%\cache" RD /S /Q "%$LOGPATH%\cache"
:skipCL
:: Archive session
Type "%$LOGPATH%\%$SESSION_LOG%" >> "%$LOGPATH%\%$ARCHIVE_LOG%"
Del /q "%$LOGPATH%\%$SESSION_LOG%"
Type "%$LOGPATH%\%$SEARCH_SESSION_LOG%" >> "%$LOGPATH%\%$ARCHIVE_SEARCH_LOG%"
Del /q "%$LOGPATH%\%$SEARCH_SESSION_LOG%"
IF %$DEGUB_MODE% EQU 1 GoTo skipLC
:: Keep logs check
IF /I %$KPLOG%==Yes IF EXIST "%$LOGPATH%\ReadMe.txt" Del /q "%$LOGPATH%\ReadMe.txt"

:: Check for Nuke mode
IF /I %$NUKE%==Yes RD /S /Q "%$BASE_LOGPATH%"
IF /I %$NUKE%==Yes GoTo skipLC

:: PID Session Logs
IF /I %$KPLOG%==Yes GoTo skipLC
:: Delete all logs
:: Close any open files
taskkill /F /FI "WINDOWTITLE eq ADDS*"
IF EXIST "%$LOGPATH%" RD /S /Q "%$LOGPATH%"
echo %DATE% %TIME% > "%$LOGPATH%\ReadMe.txt"
echo Directory was nuked! >> "%$LOGPATH%\ReadMe.txt"
:: Keep logs check
Del /q "%$BASE_LOGPATH%\ADDS_PID_Sessions.txt" 2> nul
:: Cleanup PID sessions
RD /S /Q "%$LOGPATH%" 2> nul
echo %DATE% %TIME% >> "%$BASE_LOGPATH%\ADDS_PID_Sessions.txt"
echo Directory {%$LOGPATH%} was deleted! >> "%$BASE_LOGPATH%\ADDS_PID_Sessions.txt"
:: skip point PID session cleanup
:skipLC
:: Skip point for debug
:skipCL



:: [FUTURE FEATURE]
:: Save Session Settings
:: IF /I NOT "%$SAVE_SETTINGS%"=="Yes" GoTo skipSSS
:: IF NOT EXIST "%$LOGPATH%\Settings" mkdir "%$LOGPATH%\Settings"
:: :skipSSS
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

:::: Credits ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
Expand Down
10 changes: 7 additions & 3 deletions ADDS_Tool.config
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
#### Configuration File ####

# Schema version for the configuration file
$CONFIG_SCHEMA_VERSION=1.0.0
$CONFIG_SCHEMA_VERSION=1.2.0


###############################################################################
Expand All @@ -13,6 +13,7 @@ $CONFIG_SCHEMA_VERSION=1.0.0
# Logging
## $LOGPATH can include windows variable
$LOGPATH=%APPDATA%\ADDS
$LOGPATH_ARCHIVE=%APPDATA%\ADDS
$SESSION_LOG=ADDS_Tool_Active_Session.log
$SEARCH_SESSION_LOG=ADDS_Tool_Session_Search.log
$LAST_SEARCH_LOG=ADDS_Tool_Last_Search.log
Expand Down Expand Up @@ -52,10 +53,13 @@ $SUPPRESS_VERBOSE=0
# {0 [No] , 1 [Yes]}
$SORTED=1

# Keep all logs
# Keep PID Session logs
# {Yes, No}
$KPLOG=Yes
$KPLOG=No

# Nuke logs
# {Yes, No}
$NUKE=No



Expand Down
18 changes: 16 additions & 2 deletions ChangeLog.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,13 +19,27 @@

---

## Version 0.18.0 Build: 2023-03-13
## Version 0.19.0 Build: 2023-03-16
### Added
- Number of group members for Group search
- Ability to run multiple instances of the tool. Uses PID for log speration.
- Config for archive log path
- Nuke logs; ghost mode
- config for session logs, keep?
- Nuke log configuration setting in menu; on the fly change

### Changed
- Config file schema
- Main menu HUD
- ISO file varaible in cache uses $ISO8601
- How ":End" handles closing the session.

---


## Version 0.18.0 Build: 2023-03-13
### Added
- Number of group members for Group search

## Version 0.17.0 Build: 2021-12-07
### Fixed
- Custom OU setting for AD Base
Expand Down
7 changes: 5 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
- [Description](#Description)
- [Features](#features)
- [Dependencies](#Dependencies)
- [Changelog](#Changelog)
- [Changelog](#Documents)
- [License](#License)


Expand Down Expand Up @@ -49,6 +49,8 @@ I like the windows command shell. It does most of what's needed. When the shell

## Features

- :new: feature: ability to run multiple instances of the tool. This is useful when doing queries that take a long time, e.g. query every computer object in the directory.

What's Working

*Currently only searching is working.*
Expand Down Expand Up @@ -78,7 +80,8 @@ Default for logging is pathed to: `%APPDATA%\ADDS`

`ADDS_Tool_Search_Archive.log` --archive log for all searches


- There's the ability to keep session logs
- There's the ability to nuke all logs --ghost mode.


## Parameters
Expand Down
2 changes: 1 addition & 1 deletion SHA256.txt
Original file line number Diff line number Diff line change
@@ -1 +1 @@
eb1626021394f4524caf651d0eaae5becaf3617a3985a2dd53e50137e5079164
64f2bcc6ca47056668d2a466cf06ca9410db9a681870bf52d555c820b621a7d2
File renamed without changes.
4 changes: 3 additions & 1 deletion docs/ADDS_Tool_ToDo.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,15 @@

## Priority Ordered

- [ ] Config file

- [ ] Timeout control
- [ ] AD Recon
- [ ] Dark Mode / Light Mode

### Done

- [X] Ability to run multiple instances (using PID seperation)
- [X] Config file
- [X] Suppress Verbose output parameter
- [X] include UTC
- [X] Include ISO8601
Expand Down
Loading

0 comments on commit bad6ae9

Please sign in to comment.