Есть ли способ заставить Android-устройство отвечать на ICMP-пинги, адресованные широковещательному адресу?

Я хотел бы программно заставить мое устройство отвечать на широковещательные пинги (т.е. пинговать 192.178.1.255) при подключении к сети Wi-Fi.

Есть ли способ сделать это? Может быть, прослушиватель, который будет пинговать, или флаг где-то установить?

Спасибо.


person Intrepidd    schedule 04.11.2012    source источник
comment
Уточните, пожалуйста, что за трансляция?   -  person Frank    schedule 04.11.2012
comment
Пинг, адресованный широковещательному адресу подсети, например 192.168.1.255 в сети 192.168.1.0.   -  person Intrepidd    schedule 04.11.2012
comment
Я думаю, стоит отметить, что ответ на пинги позволяет злоумышленникам узнать, что вы существуете, если они являются устройствами грубой силы.   -  person samdoj    schedule 08.08.2016


Ответы (3)


Есть ли способ сделать это?

Короче: Да. Но потребуются хорошие усилия для интеграции необходимых компонентов.

Основная проблема заключается в том, что вам нужно прослушивать сетевые пакеты ICMP. Такая функциональность недоступна из Java и потребует либо кода JNI, либо внешней программы. (Насколько мне известно, для этого также требуется рутированное устройство.)

Вам понадобится библиотека или программа, которая может обрабатывать сетевой трафик, например Jpcap (что потребует некоторых изменений для работы на Android) . Вы также можете установить и запустить экземпляр tcpdump в фоновом режиме и разобрать его вывод.

person acj    schedule 04.11.2012
comment
Лучший ответ, спасибо. Я, вероятно, буду использовать многоадресную рассылку, как указал @forgemo. - person Intrepidd; 04.11.2012

Приложение не может отправлять и получать эхо-запросы ICMP на Android. (Может быть, есть способ на рутированных устройствах)

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

person forgemo    schedule 04.11.2012

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

Что я сделал, так это загрузил проводник корневых файлов (я использовал Root Browser из JRummy Apps) и перешел в /proc/sys/net/ipv4 и отредактировал icmp_echo_ignore_all, чтобы он 1-строчный, 1-символьный файл, в котором написано просто 0 (когда я открыл файл, для него было установлено значение 1)

Никакой перезагрузки, ICMP-запросы начали работать после сохранения.

person Andy Pyne    schedule 20.09.2020