1

Я пытаюсь создать в Kali Linux точку доступа "злой двойник" для себя с VirtualBo. Я пытаюсь подключить свой iPhone и перенаправить его на поддельную страницу "Условия обслуживания". Вот что я делаю до сих пор

$apt=eth0
$wifi=wlan0
#when monitor mode is enabled, the enviroment varible will adapt the name wlan0mon


sudo sysctl -w net.ipv4.ip_forward=1
sudo systemctl start apache2
sudo ifconfig $wifi down
sudo ifconfig $wifi mode monitor
sudo ifconfig $wifi up
sudo airmon-ng check
sudo airmon-ng start $wifi

выйдите и снова откройте терминал для $ wifi, чтобы адаптировать имя wlan0mon

sudo airodump-ng $wifi

sudo airbase-ng -a $gatewayBSSID -e $gatewayESSID -c $ch $wifi

sudo cp /etc/dhcp/dhcpd.et.conf /etc/dhcp/dhcpd.conf
#et.conf is the non-original.
sudo ifconfig at0 up
sudo ifconfig at0 192.168.2.1 netmask 255.255.255.0
sudo dhcpd -cf /etc/dhcp/dhcpd.conf -pf /var/run/dhcpd.pid at0
sudo service isc-dhcp-server restart

sudo iptables --table nat --append POSTROUTING --out-interface $atp -j MASQUERADE

Теперь вот где я застреваю. Вывод моей команды iptables:

Плохой аргумент `МАСКАРАД '

Я не могу представить почему. Я выполнил все требования. MASQUERADE - это реальный аргумент, но его просто не признают. Больше информации нет, поэтому мне не с чем работать. Я также очень мало знаю о правилах пересылки iptable. Я пытался, но я потратил 2 часа, пытаясь распутать структуру TCP/IP, и теперь я знаю столько же, сколько и при запуске, а это очень мало. Как я могу дополнительно диагностировать причину этой проблемы?

1 ответ1

2

В сообщении об ошибке упоминается MASQUERADE но корень вашей проблемы - $atp . Есть опечатка. Ваша команда

sudo iptables --table nat --append POSTROUTING --out-interface $atp -j MASQUERADE

действительно

sudo iptables --table nat --append POSTROUTING --out-interface -j MASQUERADE

потому что вы определяете $apt=eth0 но затем используете $atp (не $apt , опечатка!) который разрешает пустую строку без кавычек и исчезает.

В сущности, в качестве имени интерфейса берется -j , поэтому MASQUERADE отображается как отдельный аргумент и ведет себя не так, как обычно -j MASQUERADE .

Если вы следовали рекомендациям по заключению в кавычки переменных, --out-interface "$atp" мог бы привести к тому, что Empty interface is likely to be undesired что привлекло бы ваше внимание к аргументу "$atp" где настоящая проблема. Пустая строка в кавычках генерирует для команды пустой аргумент (в данном случае iptables здесь стоит отложить sudo ), поэтому, если пустая строка неожиданная, команда может реагировать соответствующим образом, и это хорошо.

Пустая строка без кавычек просто исчезает. Это "сдвигает" следующие аргументы. Ваш iptables никогда не знал, что есть что-то между --out-interface и -j . Парсер командной строки обманут, и команда может пожаловаться только на другой аргумент, например, MASQUERADE в вашем случае. Альтернатива хуже: в общем, если эти "сдвинутые" аргументы создают правильное продолжение, команда будет работать с массивом опций, которые вы никогда не намеревались передать. Это может быть плохо; с sudo это может быть очень плохо.

Урок: процитируйте свои переменные.

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