我正在创建一个使用android studio嗅探来自wifi网络(用于大学的项目)的所有数据包的应用。该应用程序应首先通过启用bcmon在设备中启用监视模式,然后运行airodump。嗅探数据包,停止airodump并禁用bcmon,这将禁用监视模式。然后该应用将在列表中显示数据包。

我创建了2个fab按钮,一个是绿色,另一个是红色。当我按下绿色按钮时,应启用bcmon并运行airodumb,而红色按钮应停止airodump并禁用bcmon。

问题是当我按下绿色按钮时,表明已启用bcmon等,但wifi并未关闭。当我按下红色按钮时,它将关闭wifi几秒钟,然后停止airodump并禁用bcmon,然后再次打开wifi。哪有错

这是我的代码行,可在后台线程上启用bcmon:

Shell.SU.run(new String("/data/data/com.nadya.sniffingwifi/tools/enable_bcmon"));


这就是从mainActivity调用它的方式:

new backgroundThread().setContext(v1.getContext()).execute(new String[]{"enable_bcmon"});
Toast.makeText(v1.getContext(), "Monitor Mode Enabled", Toast.LENGTH_SHORT).show();


有人知道为什么会这样吗?

最佳答案

您是否尝试过使用像这样的shell脚本(具有正确的路径设置)?

#! /system/bin/sh
export LD_LIBRARY_PATH=/data/data/com.bcmon.bcmon/files/libs
export LD_PRELOAD=/data/data/com.bcmon.bcmon/files/libs/libfake_driver.so
/data/data/com.bcmon.bcmon/files/tools/enable_bcmon

10-05 21:33