pretty pretty stuffs (cd + ls align)
This commit is contained in:
parent
4e02eda1b1
commit
e0c0395024
|
@ -18,7 +18,7 @@ namespace Client.Utils.TaskUtils
|
||||||
{
|
{
|
||||||
|
|
||||||
if (opts is null) { throw new AtlasException($"[*] Usage: Cd [Path]\n"); }
|
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"); }
|
if(CurrentImplant is null) { throw new AtlasException("[-] No connected implant"); }
|
||||||
|
|
||||||
newDir = opts[1];
|
newDir = opts[1];
|
||||||
|
|
|
@ -17,7 +17,7 @@ namespace Client.Utils.TaskUtils.AdminUtils
|
||||||
{
|
{
|
||||||
|
|
||||||
if (opts is null) { throw new AtlasException($"[*] Usage: Ls [Path]\n"); }
|
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"); }
|
if (CurrentImplant is null) { throw new AtlasException("[-] No connected implant"); }
|
||||||
|
|
||||||
path = opts[1];
|
path = opts[1];
|
||||||
|
|
|
@ -21,6 +21,12 @@ namespace Implant.Tasks.Execute
|
||||||
path = Environment.GetFolderPath(Environment.SpecialFolder.UserProfile);
|
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);
|
Directory.SetCurrentDirectory(path);
|
||||||
|
|
||||||
return $"[*] Path set to {Directory.GetCurrentDirectory()}";
|
return $"[*] Path set to {Directory.GetCurrentDirectory()}";
|
||||||
|
|
|
@ -3,15 +3,23 @@ using System.Text;
|
||||||
|
|
||||||
using Implant.Models;
|
using Implant.Models;
|
||||||
|
|
||||||
|
using static Implant.Utils.Extensions;
|
||||||
|
|
||||||
namespace Implant.Tasks.Execute
|
namespace Implant.Tasks.Execute
|
||||||
{
|
{
|
||||||
class Ls : ImplantCommands
|
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 Name => "Ls";
|
||||||
|
|
||||||
public override string Execute(ImplantTask task)
|
public override string Execute(ImplantTask task)
|
||||||
{
|
{
|
||||||
|
|
||||||
targetPath = task.Args;
|
targetPath = task.Args;
|
||||||
|
|
||||||
StringBuilder _out = new StringBuilder();
|
StringBuilder _out = new StringBuilder();
|
||||||
|
@ -20,19 +28,64 @@ namespace Implant.Tasks.Execute
|
||||||
targetPath = Directory.GetCurrentDirectory();
|
targetPath = Directory.GetCurrentDirectory();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
var dirs = Directory.GetDirectories(targetPath);
|
var dirs = Directory.GetDirectories(targetPath);
|
||||||
foreach(var dir in dirs){
|
var files = Directory.GetFiles(targetPath);
|
||||||
var dirData = new DirectoryInfo(dir);
|
|
||||||
_out.AppendLine($"{dirData.Name}");
|
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) {
|
foreach (var file in files) {
|
||||||
var fileData = new FileInfo(file);
|
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();
|
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;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,10 +3,16 @@ using System.Diagnostics;
|
||||||
|
|
||||||
using Implant.Models;
|
using Implant.Models;
|
||||||
|
|
||||||
|
using static Implant.Utils.Extensions;
|
||||||
|
|
||||||
namespace Implant.Tasks.Execute
|
namespace Implant.Tasks.Execute
|
||||||
{
|
{
|
||||||
class Ps : ImplantCommands
|
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 Name => "Ps";
|
||||||
|
|
||||||
public override string Execute(ImplantTask task)
|
public override string Execute(ImplantTask task)
|
||||||
|
@ -14,16 +20,58 @@ namespace Implant.Tasks.Execute
|
||||||
|
|
||||||
StringBuilder _out = new StringBuilder();
|
StringBuilder _out = new StringBuilder();
|
||||||
|
|
||||||
_out.AppendLine($"{"PID", -15} {"ProcName", -35} {"SessionId",-45}");
|
|
||||||
_out.AppendLine($"{"---", -15} {"--------", -35} {"---------",-45}");
|
|
||||||
|
|
||||||
var procs = Process.GetProcesses();
|
var procs = Process.GetProcesses();
|
||||||
|
|
||||||
foreach(var proc in procs){
|
procIDLen = psParse.getMaxProcIDLen(procs);
|
||||||
_out.AppendLine($"{proc.Id, -15} {proc.ProcessName, -35} {proc.SessionId, -45}");
|
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();
|
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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -20,5 +20,9 @@ namespace Implant.Utils
|
||||||
|
|
||||||
using (var stream = new MemoryStream(data)) { return (T) serializer.ReadObject(stream); }
|
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);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue