У меня дома используется беспроводной маршрутизатор, один ноутбук с Linux и подключенный к нему Android. Допустим, у linux есть ip 10.5.5.1, mac AA:AA:AA:AA:AA:AA:AA, а у Android 10.5.5.2, mac AA:AA:AA:AA:AA:AA:AB.

Пакеты, отправляемые на мой андроид, тоже должны доходить до Linux, tcpdump просто игнорирует их, я думаю.

Есть ли способ, которым я могу использовать tcpdump на моем Linux, чтобы получить пакеты, отправленные на мой Android? Tcpdump просто захватывает пакеты, которые проходят через канальный и сетевой уровень?

Благодарю.

2 ответа2

1

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

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

чтобы достичь своей цели, вам нужно перевести коммутатор в беспорядочный режим на порт, подключенный к вашей машине Linux, чтобы весь трафик на коммутаторе был виден вашему процессу tcpdump.

В большинстве случаев лучший способ сделать это - купить коммутатор, поддерживающий зеркалирование портов, и настроить его на отправку всего трафика на второй сервер в вашей Linux-системе.

если вы хотите использовать эту опцию, ознакомьтесь с этими инструкциями для подготовки вашей сети к SNORT http://www.symantec.com/connect/articles/complete-snort-based-ids-architecture-part-one.

обратите внимание, что если вы можете изолировать один протокол, который вы хотите отслеживать, вы можете установить для него прокси-сервер на своем компьютере с Linux, настроить устройство Android на его использование, а затем перехватить трафик по мере его передачи, поскольку теперь он проходит через ваш ящик Linux.

не уверен насчет последней части вашего вопроса. все пакеты используют сетевой и канальный уровень, и TCPdump может регистрировать протоколы l2, такие как ARP, и протоколы не-IP на уровне l3 (ICMP), так что да и нет, я полагаю?

0

Если вы подключаете (или можете подключить) свой ноутбук и устройство Android по беспроводной сети к точке доступа Wi-Fi, и если вы используете только WEP или не используете защиту на точке доступа Wi-Fi, то ваш ноутбук, вероятно, сможет видеть и декодировать весь трафик на / с вашего устройства Android.

Возможно, вам придется ограничить вашу точку доступа более старыми схемами модуляции 802.11, которые легче получить надежно (например, отключив 802.11n, чтобы он просто выполнял 802.11g), и / или поместите свой ноутбук так, чтобы он находился "между" точкой доступа и Android-устройство.

Технически возможно отслеживать трафик Wi-Fi устройства Android, даже если вы используете шифрование WPA-PSK или WPA2-PSK, но это сложнее, потому что вам нужно захватить первые несколько пакетов, когда устройство Android подключается или присоединяется к сети. Отключение шифрования решает эту проблему, как и переключение на старый добрый WEP, потому что каждый в данной сети WEP постоянно использует один и тот же ключ.

И да, tcpdump увидит эти пакеты, потому что по умолчанию он работает в случайном режиме, если вы не добавите аргумент -p чтобы отключить его. tcpdump не способен расшифровывать WEP (или WPA или WPA2), поэтому вам придется использовать Wireshark (или Wireshark "tshark", если вам действительно нравятся инструменты командной строки), чтобы сделать это.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .