Установите прямую одноранговую связь Wi-Fi между ноутбуками.

TL;DR доступен внизу

Я пытался найти способ заставить два ноутбука (оба под управлением Ubuntu) передавать основные сообщения туда и обратно без необходимости их подключения через беспроводную сеть, либо через точку доступа или ad-hoc. Я хочу еще раз повторить здесь, что создание сетей ad-hoc не то, что я ищу, я видел здесь много похожих вопросов с этим ответом.

Я думаю, что я спрашиваю: как мне этого добиться? Все, что мне действительно нужно, это чтобы один компьютер мог отправить пакет, а затем другой мог бы его забрать через какой-нибудь анализатор пакетов.

В настоящее время: у меня есть оба ноутбука в режиме мониторинга (через интерфейс mon0, созданный из airmon-ng от aircrack-ng), чтобы они могли обнюхивать близлежащий трафик (с помощью Wireshark, tcpdump, образца кода libpcap от tcpcump.org, открытия необработанного сокета и просто распечатав все пакеты.Я пробовал каждый только потому, что думал, что можно сделать что-то по-другому/что-то упустить). У меня также есть очень простая программа, которая состоит в открытии необработанного сокета для отправки созданных кадров Ethernet в эфир, но я не могу заставить свои две машины видеть пакеты друг друга. Сниффер, работающий на каждой машине, может видеть только пакеты, исходящие от этой машины (в дополнение к близлежащим маякам/трафику управления от Wi-Fi в этом районе).

Некоторые вещи, на которые следует обратить внимание, которые могут быть важны:

- пакеты, которые я отправляю, отображаются в Wireshark (только на отправляющей машине) как искаженные пакеты 802.11 (вероятно, потому, что я пока просто заполняю их ненужными данными). У меня сложилось впечатление, что мой другой ноутбук также увидит их как искаженные пакеты, но ничего не получает.

- сокеты, которые я использую, взяты из вызова сокета (PF_PACKET, SOCK_RAW, ETH_P_ALL). Необработанные сокеты — это то, о чем я только недавно узнал, поэтому я мог неправильно понять, как они работают, но у меня сложилось впечатление, что я могу создать пакет уровня 2 вручную и отправить прямо по проводу / воздуху.

Если вам интересно, почему я хочу сделать что-то подобное, это отчасти любопытство, отчасти исследование проекта, над которым я работаю. Я хочу упростить/автоматизировать процесс настройки сети ad-hoc, и здесь я пытаюсь сделать небольшой обмен ноутбуками, чтобы выяснить особенности сети ad-hoc, которую они собираются создать, и затем создайте / присоединитесь к этой сети автоматически, вместо того, чтобы один человек явно настраивал сеть ИЛИ чтобы оба человека заранее определяли имя и т. д. сети, и оба компьютера постоянно пытались подключиться к этому конкретному.

Меня больше интересует, правильно ли я выполняю этот процесс, а не работает ли мой код или нет, если кто-то думает, что я публикую свой (очень простой, взятый из другого поста в Stack Overflow) необработанный код сокета, поможет, Я могу.

Изменить: я более чем счастлив опубликовать полный набор кода с инструкциями, если я смогу заставить это работать. Я не смог найти много полезной информации по этой теме в Интернете, и я хотел бы разместить ее для будущих людей, пытающихся сделать то же самое.

TL;DR Я хочу отправить пакет с одного ноутбука и забрать его на другом через какой-то анализатор пакетов. Сеть Wi-Fi или специальная сеть не задействованы. Что-то похожее на подделку кадра маяка точки доступа (или аналогичного) с целью отправки небольших объемов данных.

Редактировать 2: После некоторых размышлений, возможно, я ищу какое-то сырое использование 802.11? Имея прямой контроль над Wi-Fi радио? Возможно ли такое?


person Kaz    schedule 20.03.2012    source источник
comment
Могу я посоветовать вам сузить этот вопрос? На данный момент это немного сложно (ИМХО), и то, что вы на самом деле спрашиваете, несколько скрыто. Тебе не нужно ничего с этим делать, но я чувствую, что это может помочь.   -  person Bart    schedule 21.03.2012
comment
Да, мой пост какой-то толстый. Я добавил резюме в конец, надеюсь, так понятнее?   -  person Kaz    schedule 21.03.2012
comment
@Kaz - ищу какое-то сырое использование 802.11, очевидно, что это «возможно», но я не знаю состояния аппаратных интерфейсов Linux WiFi. Мои единственные знания основаны на использовании SD-карты H&D Wifi на обучающем курсе. Нам предоставили закрытый исходный код для загрузки на карту, и мы могли только говорить с ним :-( Я предполагаю, что у кого-то есть более открытый подход. Можете ли вы поменять ноутбуки, если это необходимо?   -  person gbulmer    schedule 21.03.2012


Ответы (2)


Я обнаружил, что могу отправлять пакеты через интерфейс режима монитора, если у меня есть правильный 802.11 с заголовками радиоперехвата. Я думаю, что проблема, с которой я изначально столкнулся (неспособность обнюхать пакеты), заключалась в том, что они были искажены и, следовательно, фактически не отправлялись.

Мне удалось добиться этого, адаптировав пример кода, найденный здесь, любезно предоставленный кем-то по имени Эван Джонс, за исключением того, что мне не нужно было использовать карту на базе Atheros или драйверы Madwifi, все отлично работало с интерфейсом mon0, созданным с помощью aircrack-ng.

person Kaz    schedule 23.03.2012

Я уверен, что Apple Mac делает это. Apple называет это «бонжур». Для этого вполне может существовать подходящая спецификация IETF. Это Статья о Bonjour, это Википедия на открытом компоненте bonjour, который может помочь вам двигаться дальше.

person gbulmer    schedule 20.03.2012
comment
Хм. Это очень интересно, но из этих двух статей кажется, что устройства уже каким-то образом должны быть объединены в сеть. Я пытаюсь выяснить, как сделать необработанное, бессетевое общение. Последний, хотя и полезный протокол, также требует устройства, которое выступает в качестве прокси для других устройств, и мне нужно было бы решить этот аспект моей проблемы без сети, прежде чем я мог бы начать использовать прокси-устройства в уравнении. - person Kaz; 21.03.2012
comment
Раньше было так, что два Мака могли начать «разговаривать» в «самолете». Я проверил в то время (3 с лишним года назад, поэтому прошу прощения, если ошибаюсь), и я считаю, что третье сетевое устройство не требовалось. - person gbulmer; 21.03.2012
comment
О, низы - интересно, он полагается на IPv6? Я знаю, что другие беспроводные сети, такие как 6loWPAN, используют некоторые изящные улучшения «ping» IPv6 для поддержки маршрутизации — я постараюсь выяснить это. Извините за потраченное время - person gbulmer; 21.03.2012
comment
Вовсе нет, я думаю, что я действительно взгляну на это позже. Сейчас я как бы нахожусь в сетевой фазе всех своих интересов в программировании, и я, вероятно, могу использовать Bonjour для некоторых интересных сетевых вещей. Спасибо! - person Kaz; 21.03.2012
comment
@Kaz - Если вы можете использовать IPv6, стоит взглянуть на улучшения для ping. Contiki Wireless networking широко использует его для построения маршрутизации ячеистой сети. Так что, если вы можете подключить IP-адреса прямо сейчас, в Contiki могут быть некоторые идеи/идеи/решения. Пожалуйста, "пингуйте", если что-то получится, это интересная проблема. - person gbulmer; 21.03.2012
comment
Вау, проект, над которым я сейчас работаю, напрямую основан на Интернете вещей. Это может быть то, что мне нужно. Я взгляну. - person Kaz; 21.03.2012
comment
@Kaz - поговорим о совпадении - сегодня я разговаривал с человеком, который был экспертом в «Интернете вещей», и он тоже не слышал о Contiki. Я думаю, им нужно поработать над своим маркетингом. Это довольно хорошая книга, которая называется Соединение смарт-объектов с IP У них есть виртуальный образ VMWare, который вы можете установить и запустить на бесплатной VMWare, так что начать работу очень просто, - person gbulmer; 21.03.2012