dan@OTHERSHOE ~
$ mkisofs.exe -JR backup/ | ssh dan@10.0.1.11 \
> “cat > /tmp/burn.iso && \
> cdrecord dev=0,1,0 speed=8 /tmp/
> burn.iso && \
> rm /tmp/burn.iso”
dan@10.0.1.11’s password:
Total translation table size: 0
Total rockridge attributes bytes: 2829
Total directory bytes: 0
Path table size(bytes): 10
Max brk space used 9000
3066 extents written (5 Mb)
scsidev: ‘0,1,0’
scsibus: 0 target: 1 lun: 0
Cdrecord 1.10 (i386-unknown-freebsd4.3) Copyright (C) 1995-
2001 Jorg
Schilling
Using libscg version ‘schily-0.5’
Device type : Removable CD-ROM
Version : 2
Response Format: 2
Capabilities : SYNC
Vendor_info : ‘YAMAHA ’
Identifikation : ‘CRW2100S ’
Revision : ‘1.0H’
Device seems to be: Generic mmc CD-RW.
Using generic SCSI-3/mmc CD-R driver (mmc_cdr).
Driver flags : SWABAUDIO
Starting to write CD/DVD at speed 8 in write mode for single
session.
Last chance to quit, starting real write in 8 seconds.
Акустический канал: передача аудиоданных с помощью протоколов TCP и SSH
Иногда приходится что-то делать только потому, что это действительно круто. Хотя копирование файлов со всех сторон полезно, но это не обязательно интересно. Интересно подключиться к стереосистеме читателя, которая соединена с выходом приложения Winamp, выполняющейся на машине с установленной операционной системой FreeBSD в его лаборатории / офисе / жилой комнате. Вот это действительно интересно! Как это может работать? В составе приложения Winamp есть подключаемый модуль (плагин) под названием SHOUTcast DSP, который предназначен для передачи потока выходных данных проигрывателя к работающей в онлайновом режиме радиостанции для перераспределения его среди других проигрывателей. В свою очередь, проигрыватели инкапсулируют поступающие к ним от приложения Winamp данные, преобразуя их в сжатый поток данных формата MP3 с фиксированной скоростью передачи битов. При этом проигрыватели находятся в готовности отослать преобразованные данные на радиосервер. Автору известна универсальная программа инкапсуляции звука приложения Winamp, но по этому поводу у него есть идея получше.
1. Поскольку предпринимается попытка передать поток аудиоданных в формате MP3 из UNIX-окружения непосредственно на динамики персонального компьютера, то потребуется соответствующее программное обеспечение с функциями проигрывателя. Это либо программа mpg123, либо программа madplay. Программа mpg123 де-факто является стандартом проигрывателя аудиоданных в формате MP3 для операционной системы UNIX, хотя у нее есть определенные погрешности в качестве звучания. Программа madplay – гораздо более высококачественный проигрыватель, но, по крайней мере при работе в операционной системе FreeBSD, время от времени она работает нестабильно. Программу mpg123 можно найти по адресу www.mpg123.de, а madplay – загрузить с сайта www.mars.org/home/rob/proj/mpeg/.
2. Стоит задача не только получить поступающий откуда-то поток аудиоданных в формате MP3. Следует хотя бы чуть-чуть реализовать функциональные возможности радиостанции. Не волнуйтесь, нет необходимости в повторной реализации полных протоколов их работы. Необходимо только сымитировать доступ к их паролю, что бы ни скрывалось за ним. Как правило, это означает отправку «OK» в момент подключения, после чего пользователь начнет получать поток данных в формате MP3. Так, вместо
mpg123 –# play mp3’s being piped in
используем
sh -c ‘echo OK; exec mpg123 -’# first say OK, then play MP3s being piped in
3. Выберите порт для shoutcast и увеличьте его на 1. Через выбранный таким образом порт пользователь ссылается на источник, откуда он пожелал прослушать поток аудиоданных. Таким образом, выбранный порт – это не порт, через который проигрыватель читателя будет передавать поток аудиоданных. Подключаемый модуль shoutcast через порт 8000 обслуживает передачу данных пользователем, но получает музыку через порт 8001. Это немного необычно, но позволяет упростить многие вещи. Добавьте выражение Port+1 к /etc/services в качестве сервиса «shout» так, как это показано ниже:
su-2.05a# grep shout /etc/servicesshout 8001/tcp
(В дальнейшем изложение будет вестись исходя из предположения, что пользователь выбрал порт 8000.) 4. Теперь, после выбора порта для прослушивания и «демона», который знает, что ему делать, можно объединить их в файле inetd.conf и на самом деле проигрывать все, что поступает в ваш адрес:
shout stream tcp nowait root /bin/sh sh -c ‘echo OK; exec mpg123 -’
Почти всегда плохо, если в приложении, подключающем что-либо к сети, рядом с директорией «root» можно увидеть «sh» (гарантируется, что использование возможностей MP3-проигрывателя на всю катушку приведет к переполнению буфера), но в любом случае надо сделать все необходимое для получения доступа к звуковому устройству. Этого можно добиться путем смягчения ограничений на работу звукового устройства при помощи ввода chmod 0666 /dev/dspили chmod 0666 / dev/dsp0и выполнении программы mpg123 без каких-либо специальных разрешений, исключая право на создание помех:
Читать дальше
Конец ознакомительного отрывка
Купить книгу