Введение

Стандартная утилита Unix

talk — это программа для текстового чата в Unix, изначально предназначенная для обмена сообщениями только между пользователями, вошедшими в систему на одном многопользовательском компьютере, но впоследствии расширенная для общения с пользователями на других системах. Несмотря на то, что её во многом вытеснили IRC и другие современные системы, она по-прежнему входит в состав большинства Unix-подобных систем, включая Linux, BSD и macOS.

История

Подобные возможности существовали в более ранних системах, таких как Multics, CTSS, PLATO и NLS. Ранние версии программы talk не разделяли текст, вводимый разными пользователями. Таким образом, если пользователи печатали одновременно, символы от каждого из них перемешивались. Поскольку в то время использовались медленные телетайпные клавиатуры (максимум 11 символов в секунду), пользователи часто не могли дождаться, пока другой закончит. Считалось хорошим тоном, если пользователь, долго печатавший, останавливался при возникновении перемешивания, чтобы увидеть ответ прерванного собеседника. Это сопоставимо с тем, как прерывают длинную речь при личном общении. Более современные версии используют curses для разделения терминала на отдельные области для каждого пользователя, что позволяет избежать перемешивания текста. В 1983 году новая версия talk была представлена как команда Unix в составе 4.2BSD и поддерживала электронные беседы между пользователями на разных машинах. Последующими разработками talk стали ntalk, ytalk Бритта Йенна и utalk Роджера Эспела Ллима. ytalk был первым из них, который позволял общаться более чем двум пользователям, и был частично разработан для обеспечения связи между пользователями на компьютерах с разной порядком байтов. utalk использует специальный протокол поверх UDP (вместо TCP, используемого остальными), который более эффективен и позволяет редактировать весь экран. Все эти программы разделяют интерфейс на различные секции для каждого участника. Интерфейсы не отображали порядок, в котором сообщения, введенные разными участниками, будут собраны в лог разговора. Кроме того, все три программы работали в режиме реального времени, передавая каждый символ по мере его ввода. Это создавало ощущение более живого обсуждения, чем в современных клиентах мгновенных сообщений или IRC. Пользователи, привыкшие к другим формам мгновенного обмена текстовыми сообщениями, иногда попадали в неловкие ситуации, набирая что-то и решая отменить отправку, не подозревая, что другие участники разговора видели каждое нажатие клавиши в реальном времени. Аналогичная программа существует в системах VMS под названием phone.

Безопасность

Популярная программа под названием "flash", которая отправляла некорректные данные через протокол talk, часто использовалась шутниками в начале 1990-х годов для искажения вывода терминала у ничего не подозревающих пользователей. Она делала это, включая команды терминала в поле, предназначенное для отображения имени запрашивающего. Когда жертва получала запрос talk, имя отправителя отображалось на её экране, что приводило к выполнению этих команд и делало экран нечитаемым до перезагрузки терминала. Более поздние версии talk блокировали подобные попытки и предупреждали пользователя о произошедшем. Впоследствии выяснилось, что, отправляя различные команды терминала, можно даже заставить пользователя выполнить произвольные команды. Поскольку исправить все программы, выводящие непроверенные данные в терминал, оказалось невозможно, современные эмуляторы терминалов были переписаны для защиты от этой атаки, хотя некоторые из них всё ещё могут быть уязвимы.