pretty pretty stuffs (cd + ls align)

This commit is contained in:
Gr1mmie 2022-01-01 01:48:50 -05:00
parent 4e02eda1b1
commit e0c0395024
6 changed files with 124 additions and 13 deletions

View File

@ -18,7 +18,7 @@ namespace Client.Utils.TaskUtils
{
if (opts is null) { throw new AtlasException($"[*] Usage: Cd [Path]\n"); }
if (!(opts.Length == 2)) { throw new AtlasException($"[*] Usage: Cd [Path]\n"); }
if (opts.Length > 2) { throw new AtlasException($"[*] Usage: Cd [Path]\n"); }
if(CurrentImplant is null) { throw new AtlasException("[-] No connected implant"); }
newDir = opts[1];

View File

@ -17,7 +17,7 @@ namespace Client.Utils.TaskUtils.AdminUtils
{
if (opts is null) { throw new AtlasException($"[*] Usage: Ls [Path]\n"); }
if (!(opts.Length == 2)) { throw new AtlasException($"[*] Usage: Ls [Path]\n"); }
if (opts.Length > 2) { throw new AtlasException($"[*] Usage: Ls [Path]\n"); }
if (CurrentImplant is null) { throw new AtlasException("[-] No connected implant"); }
path = opts[1];

View File

@ -21,6 +21,12 @@ namespace Implant.Tasks.Execute
path = Environment.GetFolderPath(Environment.SpecialFolder.UserProfile);
}
if (path == ".."){
string[] dirArr = Directory.GetCurrentDirectory().ToString().Split('\\');
Array.Resize(ref dirArr, dirArr.Length - 1);
path = string.Join("\\", dirArr);
}
Directory.SetCurrentDirectory(path);
return $"[*] Path set to {Directory.GetCurrentDirectory()}";

View File

@ -3,15 +3,23 @@ using System.Text;
using Implant.Models;
using static Implant.Utils.Extensions;
namespace Implant.Tasks.Execute
{
class Ls : ImplantCommands
{
private string targetPath { get; set; }
private string targetPath { get; set; }
private int fileNameLen { get; set; }
private int fileSizeLen { get; set; }
private int dirNameLen { get; set; }
public override string Name => "Ls";
public override string Execute(ImplantTask task)
{
targetPath = task.Args;
StringBuilder _out = new StringBuilder();
@ -20,19 +28,64 @@ namespace Implant.Tasks.Execute
targetPath = Directory.GetCurrentDirectory();
}
var dirs = Directory.GetDirectories(targetPath);
foreach(var dir in dirs){
var dirData = new DirectoryInfo(dir);
_out.AppendLine($"{dirData.Name}");
var files = Directory.GetFiles(targetPath);
dirNameLen = lsParse.getMaxDirLen(dirs);
fileNameLen = lsParse.getMaxFileLen(files);
if (dirNameLen < fileNameLen) {
_out.AppendLine($"{"Name".Align(fileNameLen)} {"Length".Align(fileNameLen + 5)}");
_out.AppendLine($"{"----".Align(fileNameLen)} {"------".Align(fileNameLen + 5)}");
} else {
_out.AppendLine($"{"Name".Align(dirNameLen)} {"Length".Align(dirNameLen + 5)}");
_out.AppendLine($"{"----".Align(dirNameLen)} {"------".Align(dirNameLen + 5)}");
}
foreach (var dir in dirs){
var dirData = new DirectoryInfo(dir);
_out.AppendLine($"{dirData.Name.Align(dirNameLen)}");
}
var files = Directory.GetFiles(targetPath);
foreach (var file in files) {
var fileData = new FileInfo(file);
_out.AppendLine($"{fileData.Name} {fileData.Length}");
if (dirNameLen < fileNameLen){ _out.AppendLine($"{fileData.Name.Align(fileNameLen)} {fileData.Length.Align(fileSizeLen + 5)}"); }
else{ _out.AppendLine($"{fileData.Name.Align(dirNameLen)} {fileData.Length.Align(dirNameLen + 5)}"); }
}
return _out.ToString();
}
}
public sealed class lsParse
{
public static int getMaxDirLen(string[] dirs) {
int maxDirNameLen = 0;
foreach (var dir in dirs) {
var dirData = new DirectoryInfo(dir);
if (dirData.Name.Length > maxDirNameLen) {
maxDirNameLen = dir.Length;
}
}
return maxDirNameLen + 5;
}
public static int getMaxFileLen(string[] files) {
int maxfileNameLen = 0;
foreach (var file in files) {
var fileData = new FileInfo(file);
if(fileData.Name.Length > maxfileNameLen){
maxfileNameLen = fileData.Name.Length;
}
}
return maxfileNameLen;
}
}
}

View File

@ -3,10 +3,16 @@ using System.Diagnostics;
using Implant.Models;
using static Implant.Utils.Extensions;
namespace Implant.Tasks.Execute
{
class Ps : ImplantCommands
{
private int procIDLen { get; set; }
private int procNameLen { get; set; }
private int procSessionIDLen { get; set; }
public override string Name => "Ps";
public override string Execute(ImplantTask task)
@ -14,16 +20,58 @@ namespace Implant.Tasks.Execute
StringBuilder _out = new StringBuilder();
_out.AppendLine($"{"PID", -15} {"ProcName", -35} {"SessionId",-45}");
_out.AppendLine($"{"---", -15} {"--------", -35} {"---------",-45}");
var procs = Process.GetProcesses();
foreach(var proc in procs){
_out.AppendLine($"{proc.Id, -15} {proc.ProcessName, -35} {proc.SessionId, -45}");
procIDLen = psParse.getMaxProcIDLen(procs);
procNameLen = psParse.getMaxProcNameLen(procs) + procIDLen;
procSessionIDLen = psParse.getMaxProcSessionIDLen(procs) + procNameLen;
_out.AppendLine($"{"PID".Align(procIDLen)} {"ProcName".Align(procNameLen)} {"SessionId".Align(procSessionIDLen)}");
_out.AppendLine($"{"---".Align(procIDLen)} {"--------".Align(procNameLen)} {"---------".Align(procSessionIDLen)}");
foreach (var proc in procs){
_out.AppendLine($"{proc.Id.Align(procIDLen)} {proc.ProcessName.Align(procNameLen)} {proc.SessionId.Align(procSessionIDLen)}");
}
return _out.ToString();
}
}
public sealed class psParse
{
public static int getMaxProcIDLen(Process[] procs) {
var maxProcIDLen = 0;
foreach (var proc in procs) {
if (proc.Id.ToString().Length > maxProcIDLen) {
maxProcIDLen = proc.Id.ToString().Length;
}
}
return maxProcIDLen;
}
public static int getMaxProcNameLen(Process[] procs) {
int maxProcNameLen = 0;
foreach (var proc in procs) {
if (proc.ProcessName.Length > maxProcNameLen) {
maxProcNameLen = proc.ProcessName.Length;
}
}
return maxProcNameLen;
}
public static int getMaxProcSessionIDLen(Process[] procs){
int maxProcSessionIDLen = 0;
foreach (var proc in procs) {
if (proc.SessionId.ToString().Length > maxProcSessionIDLen) {
maxProcSessionIDLen = proc.SessionId.ToString().Length;
}
}
return maxProcSessionIDLen;
}
}
}

View File

@ -20,5 +20,9 @@ namespace Implant.Utils
using (var stream = new MemoryStream(data)) { return (T) serializer.ReadObject(stream); }
}
public static string Align(this object T , int lenth) {
return T.ToString().PadRight(lenth);
}
}
}