
У меня есть скрипт bash linux:
echo -e '\x55\x55\xaa\xaa\x00\x00\x00\x00\x00\x00\x00\x50' | netcat -w 2 192.168.10.187 8000
Теперь я пытаюсь преобразовать его в PowerShell, но не уверен, каков синтаксис echo для этой строки символов.
Когда я просто делаю:
echo '\x55\x55\xaa\xaa\x00\x00\x00\x00\x00\x00\x00\x50' | & .\nc -w 2 192.168.10.187 8000
Я не получаю никакого результата, но я не уверен, передается ли вообще строка символов nc
или это неправильная строка символов.
решение1
Для проверки байтов используйте командлет Format-Hex.
PS > $bytes = [Byte[]] (0x55,0x55,0xaa,0xaa,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x50)
PS > $bytes | Format-Hex
Path:
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
00000000 55 55 AA AA 00 00 00 00 00 00 00 50 UUªª.......P
решение2
Похоже, что это невозможно сделать с помощью Powershell из-за ограничений вывода, поэтому я написал небольшое приложение на C#:
using (var stdout = Console.OpenStandardOutput())
{
var buffer = new Byte[]
{
0x55,
0x55,
0xaa,
0xaa,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x50
};
stdout.Write(buffer, 0, buffer.Length);
}