我想从字符串中编码一个powershell脚本,但我无法用UTF16-LE进行编码。
我用这个把它编码成base64字符串。
string encodedscript = "powershell -nop -enc " + Convert.ToBase64String(Encoding.UTF8.GetBytes(PowerShellScript));
但当我尝试使用UTF16-LE编码时,它不起作用,例如:
string encodedscript = "powershell -nop -enc " + Convert.ToBase64String(Encoding.UTF16-LE.GetBytes(PowerShellScript));
所以我的问题是如何使用c#对Powershell脚本进行编码,以便Powershell能够接受它。
我正在尝试用C#在这个网站上实现这样的目标:https://raikia.com/tool-powershell-encoder/
这是一个代码示例,powershell脚本PowerShellScript非常长。
以下是一些编码脚本示例:https://pastesite.org/view/raw/74b98937
脚本示例:https://pastesite.org/view/raw/b573f289
好的,感谢大家的帮助,我推出了这个批处理脚本,它将自己作为powershell脚本重新启动,仍然有效。但它一开始就显示出错误。我用&;cls
#^ &@@Echo Off && Cls && Powershell -exec bypass -nop -noni - < "%~f0" && exit /B
#POWERSHELL CODE GOES HERE!
您需要先编码到Unicode,然后再编码到Base64。
public class Powershell
{
public static string Command(string command)
{
var plainTextBytes = Encoding.Unicode.GetBytes(command);
var encodedCommand = Convert.ToBase64String(plainTextBytes);
return $"powershell.exe -EncodedCommand {encodedCommand}";
}
}