Как работает протокол Apple «DVD или CD Sharing»? - PullRequest
5 голосов
/ 19 февраля 2011

Mac имеют «DVD или CD Sharing» сервис для удаленного доступа к оптическим приводам.(Apple также предоставляет программное обеспечение Windows, которое реализует только половину общего доступа, без чтения.) Я хочу использовать сервис из Linux для чтения оптического диска на Mac.Но я не могу найти никакого программного обеспечения или даже много информации о протоколе.Я решил документировать то, что нашел здесь, и посмотреть, что другие могут выяснить.

Мой друг включил «Общий доступ к DVD или CD» на своем Mac.Я могу видеть сервис через zeroconf (используя Avahi).В частности:

Service Type: _odisk._tcp
Address: <hostname>.local/192.168.1.115:49152

В поисках «_odisk._tcp» я нашел упоминание в «Справочнике по Mac Hacker's».Вы можете найти его на страницах 69 и 70. У меня нет книги, поэтому я использовал предварительный просмотр Amazon .Здесь показаны некоторые примеры протокола на основе HTTP.

Однако я не могу сделать успешный запрос.В первый раз, когда я попытался «ПОЛУЧИТЬ /» на порту, указанном zeroconf, я получил «401 Unauthorized».Я попросил моего друга отключить охрану.Затем «GET /» возвратил «404 Not Found».Я попробовал путь из первого списка в книге, «GET / ods-ask-status? AskID = 2», и получил «406 Not Acceptable».Так что я знаю, что я на что-то.Тем не менее, я не могу пройти 406. Я вводил HTTP-запросы напрямую (с помощью nc) и пробовал точно так же, как в трассировке в книге (только смена хоста), а также вводил все виды Accept: и Accept- *: заголовки.Поскольку трассировку в предварительном просмотре Amazon сложно прочитать, я попробовал другие интерпретации.Неудачно.(Если у кого-то есть книга, возможно, они могут напечатать список.)

Нет другой документации по протоколу, которую я могу найти.На этом этапе мне нужно просто взять два компьютера, использующих общий доступ к DVD или CD, и прослушать их, но сейчас мне будет сложно настроить их.Так что я предлагаю проблему здесь.Может быть, вы можете стать известным, написав реализацию этого протокола с открытым исходным кодом.; -)

1 Ответ

3 голосов
/ 02 июня 2013

Существует серверная реализация, доступная на github, которая, кажется, выполняет серверную часть работы: https://github.com/dgwynne/ODSServer

Протокол, кажется, основан на запросах диапазона HTTP для доступа к образу диска;однако, похоже, что для работы требуется специальный User-Agent: заголовки (yuck!)

...