Вы можете использовать мою программу tun2socks для части "TCP catching ". Эта программа создает виртуальный сетевой интерфейс TUN, который перенаправляет все исходящие соединения TCP через прокси-сервер SOCKS. Если вы добавите правило маршрутизации (правило ip) для пересылки соединения Ipad в интерфейс TUN tun2socks, tun2socks перешлет его на ваш прокси-сервер SOCKS5. Должно быть намного проще выполнять атаку MITM в / в качестве SOCKS-прокси.
Обратите внимание, что этот подход похож на правило перенаправления iptables с вашей точки зрения, но вам не нужно делать ничего особенного, чтобы выяснить реальное назначение соединения - оно будет присутствовать в заголовках протокола SOCKS5.
ОБНОВЛЕНИЕ: получение пакетов с Ipad в интерфейс TUN на самом деле сложнее, чем кажется. Я предполагаю, что у вашего маршрутизатора есть мостовой интерфейс br0
который соединяет wlan0
(где находится Ipad) и eth0
(где находится Tivo). Обратите внимание, что я не очень знаком с DD-WRT, поэтому имена могут отличаться (проверьте с помощью brctl show
).
Теперь проблема в том, что пакеты от Ipad (wlan0
) до Tivo (eth0
) не маршрутизируются, а соединяются (то же самое, что и коммутатор). Это означает, что даже если вы добавите IP-правила, они не будут иметь значения, потому что эти пакеты не будут проходить через маршрутизатор, по крайней мере, логически. Чтобы решить эту проблему, вы должны перенаправить пакеты с Ipad, как если бы они были направлены непосредственно на MAC-адрес br0
а не на MAC-адрес Tivo, который находится в eth0
; это заставит ядро обрабатывать их как входящие IP-пакеты, надеясь, что они будут маршрутизироваться в соответствии с правилами ip и таблицей маршрутизации. Наконец, команда:
ebtables -t nat -A PREROUTING -i wlan0 -p ipv4 --ip-source <ip_of_ipad> --ip-destination <ip_of_tivo> --ip-protocol TCP -j dnat --to-destination <mac_of_br0>
Это добавляет правило ebtables, которое будет перенаправлять совпадающие пакеты, полученные на wlan0
непосредственно на br0
. Возможно, вам придется добавить больше условий здесь, если это ловит слишком много. Обратите внимание, что dnat
не означает обычный (IP) NAT - в ebtables NAT означает изменение MAC-адреса кадров, а не IP-адреса.
Вы можете получить скомпилированную версию tun2socks для DD-WRT здесь ; надеюсь, это будет работать на вашем устройстве.