Ubuntu 14.04 usb wifi точка доступа. Анализ трафика Ipad и android устройств

Для отладки работы web части или api на мобильных устройствах часто требуется провести анализ трафика и запросов от устройств. Устройства часто не предоставляют инструментов удобных для отладки. Рассмотрим вариант анализ трафика с помощью usb wifi адаптера и tcpdump

Схема отладки достаточно простая. Трафик мобильно устройства нужно пустить через настольный ПК или ноутбук. Для этого нам потребуется подключение компьютера по eth и wifi адаптер способный работа в режиме AC или SoftAC.

Для работы я использую Ubuntu 14.04. На примере это ОС кратко покажу процесс. Процесс настройки в сети описан достаточно подробно. За основу взял рецепт с хабра Временное переключение WIFI в режим точки доступа

Для работы wifi в режиме точке доступа для ubuntu 14.04 потребовалось добавить команды

nmcli nm wifi off
rfkill unblock wlan

Без них выпадали ошибки:

wlan1: Unable to setup interface.
wlan1: Could not connect to kernel driver
ELOOP: remaining timeout: -1.883950 eloop_data=0x1c7bd70 user_data=0x1c7b0d0 handler=0x444eb0

Скрипт запуска выглядит так:

#!/bin/bash
nmcli nm wifi off
rfkill unblock wlan
# Start
# Configure IP address for WLAN
sudo ifconfig wlan1 192.168.150.1
# Start DHCP/DNS server
sudo service dnsmasq restart
# Enable routing
sudo sysctl net.ipv4.ip_forward=1
# Enable NAT
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
# Run access point daemon
sudo hostapd /etc/hostapd.conf

# Stop
# Disable NAT
sudo iptables -D POSTROUTING -t nat -o eth0 -j MASQUERADE
# Disable routing
sudo sysctl net.ipv4.ip_forward=0
# Disable DHCP/DNS server
sudo service dnsmasq stop
                       

Для анализа трафика можно воспользоваться tcpdump. Утилита очень мощная но требующая время на изучение.
Анализ GET запросов

sudo tcpdump -s 0 -A 'tcp[((tcp[12:1] & 0xf0) >> 2):4] = 0x47455420' -i wlan1

Анализ POST запросов
sudo tcpdump -s 0 -A 'tcp dst port 80 and (tcp[((tcp[12:1] & 0xf0) >> 2):4] = 0x504f5354)'
Рецепты для анализа HTTP трафика с помощью tcpdump

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

tcpdump -A -s 0 'tcp port 80 and (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)' -i wlan1 | grep -P '(GET|Host)'

Вам может понравиться