2016-11-29 5 views
0

Имейте tcl ожидать подключения к telnetd и хотите отправить telnet BREAK. Там, где telnetd должен быть информирован о переходе в командный режим. Таким образом, IAC (255) должен быть отправлен. После этого BRK (243) необходимо отправить. Я подтвердил это с помощью соединения putty-> telnetd. Шпатлевка может отправить «BREAK». Сетевой трафик показывает, что ожидается 255/243, используя ожидание отправки одного байта

Когда я отправляю ICA (255)/BRK (243) с tcl ожидаем, что я вижу в сетевом трафике эти три байта (255/255/243).

Я узнал, когда я отправляю i.e. 254 Я вижу один байт Когда я отправляю 255. Это два байта. Я ожидаю, что 255, который равен -1 или ff, имеет специальную функцию ожидания.

Как я могу достичь всего 255 на проводе?

fconfigure $channel -translation exp_send -i $channel -- [binary format H4 FFF3]

Это посылает «и далее и далее f3» в Telnetd

Как отмечают в Быстродействие, да, язык должен быть принят во внимание. Так что я добавить fconfigure не иметь ни

Вот мой код: package require Expect spawn telnet localhost fconfigure $spawn_id -translation binary exp_send "[binary format H4 FFf3]" after 2000

Когда я смотрю на провод с tcpdump -X -i localhost port 23 я вижу FFFFF3.

11:26:10.358187 IP localhost.44802 > localhost.telnet: Flags [P.], seq 129:132, ack 148, win 342, options [nop,nop,TS val 1826173122 ecr 1826168178], length 3 0x0000: 4510 0037 835b 4000 4006 b953 7f00 0001 E..7.[@[email protected] 0x0010: 7f00 0001 af02 0017 b004 9eec f815 49e3 ..............I. 0x0020: 8018 0156 fe2b 0000 0101 080a 6cd9 30c2 ...V.+......l.0. 0x0030: 6cd9 1d72 ffff f3

Я смотрю в телнет трассированием и посмотреть: 203 27482 12:37:28 read(0, "\377\363", 8192) = 2 204 27482 12:37:28 select(4, [0 3], [3], [3], {0, 0}) = 1 (out [3], left {0, 0}) 205 27482 12:37:28 sendto(3, "\377\377\363", 3, 0, NULL, 0) = 3 fff3 принимается ожидать, и далее и далее f3, посылают к Telnetd.

+0

Я бы ожидал, что 'exp_send -i $ channel -" \ xff \ xf3 "' будет правильным, если правильная канальная кодировка ... –

ответ

0

Я был совершенно не прав с моими стриттами. Поскольку я использую «telnet», порожденный в ожидании, я должен отправить «CTRL» «» отправить brk \ r ».

И все в порядке.