Executing command using Paramiko SSH returns hex-encoded output
Question:
I try to write script to connect by SSH to Windows but answer is strange.
Here is my script:
import paramiko
import codecs
host = '*******'
user = '*****'
psw = '****'
port = 22
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(hostname=host, port=port, username=user, password=psw)
stdin, stdout, stderr = ssh.exec_command('help')
stdin.close()
print(stdout.read() + stderr.read())
result = stdout.read().splitlines()
ssh.close()
The answer looks like this:
b'x84xabxef xafxaexabxe3xe7xa5xadxa8xef xe1xa2xa5xa4xa5xadxa8xa9 xaexa1 xaexafxe0xa5xa4xa5xabxa5xadxadxaexa9 xaaxaexacxa0xadxa4xa5 xadxa0xa1xa5xe0xa8xe2xa5 HELP <xa8xacxef xaaxaexacxa0xadxa4xeb>rnASSOC x82xebxa2xaexa4 xabxa8xa1xae xa8xa7xacxa5xadxa5xadxa8xa5 xe1xaexafxaexe1xe2xa0xa2xabxa5xadxa8xa9 xafxae xe0xa0xe1xe8xa8xe0xa5xadxa8xefxac xa8xacxa5xad xe4xa0xa9xabxaexa2.rnATTRIB x8exe2xaexa1xe0xa0xa6xa5xadxa8xa5 xa8 xa8xa7xacxa5xadxa5xadxa8xa5 xa0xe2xe0xa8xa1xe3xe2xaexa2 xe4xa0xa9xabxaexa2.rnBREAK x82xaaxabxeexe7xa5xadxa8xa5 xa8 xa2xebxaaxabxeexe7xa5xadxa8xa5 xe0xa5xa6xa8xacxa0 xaexa1xe0xa0xa1xaexe2xaaxa8 xaaxaexacxa1xa8xadxa0xe6xa8xa8 xaaxabxa0xa2xa8xe8 CTRL+C.rnBCDEDIT x87xa0xa4xa0xa5xe2 xe1xa2xaexa9xe1xe2xa2xa0 xa2 xa1xa0xa7xa5 xa4xa0xadxadxebxe5 xa7xa0xa3xe0xe3xa7xaaxa8 xa4xabxef xe3xafxe0xa0xa2xabxa5xadxa8xef xadxa0xe7xa0xabxecxadxaexa9rn xa7xa0xa3xe0xe3xa7xaaxaexa9.rnCACLS x8exe2xaexa1xe0xa0xa6xa5xadxa8xa5 xa8 xe0xa5xa4xa0xaaxe2xa8xe0xaexa2xa0xadxa8xa5 xe1xafxa8xe1xaaxaexa2 xe3xafxe0xa0xa2xabxa5xadxa8xef xa4xaexe1xe2xe3xafxaexac (ACL)rn xaa xe4xa0xa9xabxa0xac.rnCALL
Where is my mistake?
Answers:
That seems to be CP866 encoding of Cyrillic.
b = b'x84xabxef xafxaexabxe3xe7xa5xadxa8xef ...';
t = b.decode("CP866")
print(t)
Yields:
Для получения сведений об определенной команде наберите HELP <имя команды>
ASSOC Вывод либо изменение сопоставлений по расширениям имен файлов.
ATTRIB Отображение и изменение атрибутов файлов.
BREAK Включение и выключение режима обработки комбинации клавиш CTRL+C.
BCDEDIT Задает свойства в базе данных загрузки для управления начальной
загрузкой.
CACLS Отображение и редактирование списков управления доступом (ACL)
к файлам.
...
I try to write script to connect by SSH to Windows but answer is strange.
Here is my script:
import paramiko
import codecs
host = '*******'
user = '*****'
psw = '****'
port = 22
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(hostname=host, port=port, username=user, password=psw)
stdin, stdout, stderr = ssh.exec_command('help')
stdin.close()
print(stdout.read() + stderr.read())
result = stdout.read().splitlines()
ssh.close()
The answer looks like this:
b'x84xabxef xafxaexabxe3xe7xa5xadxa8xef xe1xa2xa5xa4xa5xadxa8xa9 xaexa1 xaexafxe0xa5xa4xa5xabxa5xadxadxaexa9 xaaxaexacxa0xadxa4xa5 xadxa0xa1xa5xe0xa8xe2xa5 HELP <xa8xacxef xaaxaexacxa0xadxa4xeb>rnASSOC x82xebxa2xaexa4 xabxa8xa1xae xa8xa7xacxa5xadxa5xadxa8xa5 xe1xaexafxaexe1xe2xa0xa2xabxa5xadxa8xa9 xafxae xe0xa0xe1xe8xa8xe0xa5xadxa8xefxac xa8xacxa5xad xe4xa0xa9xabxaexa2.rnATTRIB x8exe2xaexa1xe0xa0xa6xa5xadxa8xa5 xa8 xa8xa7xacxa5xadxa5xadxa8xa5 xa0xe2xe0xa8xa1xe3xe2xaexa2 xe4xa0xa9xabxaexa2.rnBREAK x82xaaxabxeexe7xa5xadxa8xa5 xa8 xa2xebxaaxabxeexe7xa5xadxa8xa5 xe0xa5xa6xa8xacxa0 xaexa1xe0xa0xa1xaexe2xaaxa8 xaaxaexacxa1xa8xadxa0xe6xa8xa8 xaaxabxa0xa2xa8xe8 CTRL+C.rnBCDEDIT x87xa0xa4xa0xa5xe2 xe1xa2xaexa9xe1xe2xa2xa0 xa2 xa1xa0xa7xa5 xa4xa0xadxadxebxe5 xa7xa0xa3xe0xe3xa7xaaxa8 xa4xabxef xe3xafxe0xa0xa2xabxa5xadxa8xef xadxa0xe7xa0xabxecxadxaexa9rn xa7xa0xa3xe0xe3xa7xaaxaexa9.rnCACLS x8exe2xaexa1xe0xa0xa6xa5xadxa8xa5 xa8 xe0xa5xa4xa0xaaxe2xa8xe0xaexa2xa0xadxa8xa5 xe1xafxa8xe1xaaxaexa2 xe3xafxe0xa0xa2xabxa5xadxa8xef xa4xaexe1xe2xe3xafxaexac (ACL)rn xaa xe4xa0xa9xabxa0xac.rnCALL
Where is my mistake?
That seems to be CP866 encoding of Cyrillic.
b = b'x84xabxef xafxaexabxe3xe7xa5xadxa8xef ...';
t = b.decode("CP866")
print(t)
Yields:
Для получения сведений об определенной команде наберите HELP <имя команды>
ASSOC Вывод либо изменение сопоставлений по расширениям имен файлов.
ATTRIB Отображение и изменение атрибутов файлов.
BREAK Включение и выключение режима обработки комбинации клавиш CTRL+C.
BCDEDIT Задает свойства в базе данных загрузки для управления начальной
загрузкой.
CACLS Отображение и редактирование списков управления доступом (ACL)
к файлам.
...