CHARGEN (CHARGEN)

Перейти к навигации Перейти к поиску

CHARGEN (Character Generator Protocol) — это служба стека протоколов TCP/IP, определённая в RFC 864 в 1983 году Джоном Постелом. Она предназначена для тестирования, измерения и отладки.

Узел сети может установить соединение с сервером, поддерживающим Character Generator Protocol с использованием TCP или UDP через порт 19. После открытия TCP-соединения, сервер начинает отправлять клиенту случайные символы и делает это непрерывно до закрытия соединения. В UDP-реализации протокола, сервер отправляет UDP-датаграмму, содержащую случайное (от 0 до 512) количество символов каждый раз, когда получает датаграмму от узла. Все полученные сервером данные игнорируются.

Реализации Inetd

[править | править код]

На большинстве UNIX-подобных операционных систем сервер CHARGEN встроен в демон-программу Inetd (или XInetd). Служба CHARGEN, как правило, по умолчанию недоступна. Она может быть подключена путём добавления следующих строк в файл /etc/inetd.conf и перезагрузкой конфигурации Inetd:

chargen   stream  tcp     nowait  root    internal
chargen   dgram   udp     wait    root    internal

Приложения

[править | править код]

Служба CHARGEN может быть использована как источник потока байтов для отладки кода, использующего TCP-сеть. Также, она может быть использована как источник трафика для измерения пропускной способности сети и тонкой настройки QoS, хотя эффективность такого использования сомнительна если включено аппаратное сжатие данных, так как вывод службы CHARGEN сжимается легко и эффективно. Из-за сжатия тесты пропускной способности могут сообщать размер данных после декомпрессии вместо реального размера переданных данных.

Пример сессии

[править | править код]

Типичная сессия службы CHARGEN выглядит примерно следующим образом: 1. Пользователь подключается к узлу, используя клиент Telnet. 2. Пользователь принимает поток байтов. Хотя в RFC 864 не описан определенный формат вывода, рекомендуемый формат вывода (по стандарту де-факто) — сдвигающиеся строки из 72 повторяющихся символов ASCII.

$ telnet localhost chargen
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefgh
"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghi
#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghij
$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijk
%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijkl
&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklm
'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmn
()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmno
)*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnop
*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopq
+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqr
,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrs
-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrst
./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstu
/0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuv
^]
telnet> quit
Connection closed.

Это продолжается до закрытия соединения TCP, как показано выше завершением сессии Telnet.

Злоупотребление

[править | править код]

Служба была злонамеренно использована, чтобы обрушить сервера MS DNS под управлением Microsoft Windows NT 4.0 путём передачи произвольных символов прямо в прослушивающий порт (telnet ntbox 19 | telnet ntbox 53) DNS-сервера.[1] Впрочем, атака была предположительно следствием неправильного управления буфером DNS-сервером Microsoft и не имеет прямого отношения к службе CHARGEN.

Примечания

[править | править код]
  1. Access Violation in Dns.exe Caused by Malicious Telnet Attack. Support.microsoft.com (1 ноября 2006). Дата обращения: 31 мая 2009. Архивировано из оригинала 3 июля 2012 года.