如何使用C#将powershell脚本编码为base64 UTF16-LE字符串



我想从字符串中编码一个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}";
}
}

相关内容

  • 没有找到相关文章

最新更新