Страница 1 из 1

Чтение wpa_supplicant.conf

Добавлено: 24 апр 2014, 16:01
petrovichtim
Добрый день, дорогие товарищи!
Хочу прочитать файл wpa_supplicant.conf из папки /data/misc/wifi/
Если кто не знает, в нём сохраняются пароли от вайфая.
На устройстве файл есть.
Дал такие разрешения:

Код: Выделить всё

<uses-permission android:name="android.permission.ACCESS_SUPERUSER" />
<uses-permission android:name="android.permission.WRITE_INTERNAL_STORAGE" />
Но не могу никак прочитать файл, логкат пишет:
java.io.FileNotFoundException: /data/misc/wifi/wpa_supplicant.conf: open failed: EACCES (Permission denied)
Вот пример кода, как читаю:

Код: Выделить всё

public class MainActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		TextView textview = (TextView) findViewById(R.id.textView1);
		try {
			Process psProc = Runtime.getRuntime().exec("su");

			FileInputStream fin;
			fin = openFileInput("/data/misc/wifi/wpa_supplicant.conf");

			int c;
			String temp = "";
			while ((c = fin.read()) != -1) {
				temp += temp + Character.toString((char) c);
			}
			textview.setText(temp);

			fin.close();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}
Подскажите пожалуйста, что у меня не правильно в коде.

Re: Чтение wpa_supplicant.conf

Добавлено: 26 апр 2014, 15:11
altwin
у вас нет прав на чтение этого файла.

Re: Чтение wpa_supplicant.conf

Добавлено: 26 апр 2014, 15:21
petrovichtim
altwin писал(а):у вас нет прав на чтение этого файла.
Как получить?
Разве SuperUser не дает их ?

Код: Выделить всё

 Process psProc = Runtime.getRuntime().exec("su"); 

Re: Чтение wpa_supplicant.conf

Добавлено: 26 апр 2014, 16:36
altwin
petrovichtim писал(а):
altwin писал(а):у вас нет прав на чтение этого файла.
Как получить?
Разве SuperUser не дает их ?

Код: Выделить всё

 Process psProc = Runtime.getRuntime().exec("su"); 
В ошибке четко сказанно - "отказанно в доступе" и это либо значит, что это не root либо то, что да -не дает :) Попробуйте из терминала просмотреть этот файл руками выполнив вход. Если получается, то проблема в коде, иначе в другом месте. т.е. что то вроде -
cat /data/misc/wifi/wpa_supplicant.conf Ну и еще как варриант попробывать его скопировать на sd карту перед тем, как читать.

Re: Чтение wpa_supplicant.conf

Добавлено: 26 апр 2014, 16:48
altwin
Кстати вот это - fin.read(), работать поидее не должно. Вам нужно создать объект InputStreamReader, которому и передать свой FileInputStream. Далее создать BufferedReader, которому уже передать свой теперь уже InputStreamReader, и только потом с помощью StringBuilder().append() формировать строку... это как бы стандартный путь, а то что там у вас получится при такой попытке считать массив байт я честно никогда даже не пробывал проверять :)

Re: Чтение wpa_supplicant.conf

Добавлено: 28 апр 2014, 08:04
petrovichtim
altwin писал(а): fin.read()
Сюда код не доходит.
Файл в DDMS вижу, путь правильный.
Может кто уже решал задачу чтения файла настроек?
Поделитесь пожалуйста кодом.

Re: Чтение wpa_supplicant.conf

Добавлено: 28 апр 2014, 08:27
altwin
petrovichtim писал(а):
altwin писал(а): fin.read()
Сюда код не доходит.
Файл в DDMS вижу, путь правильный.
Может кто уже решал задачу чтения файла настроек?
Поделитесь пожалуйста кодом.
Вы через adb shell то пробывали его получить файл этот и вывести? выполните внутри shell >> ls -l /data/misc/wifi/wpa_supplicant.conf чтобы посмотреть права на файл.

Re: Чтение wpa_supplicant.conf

Добавлено: 28 апр 2014, 10:03
petrovichtim
Говорит сходи в лес
C:\Android\sdk\platform-tools>adb shell
$ ls -l /data/misc/wifi/wpa_supplicant.conf
ls -l /data/misc/wifi/wpa_supplicant.conf
/data/misc/wifi/wpa_supplicant.conf: Permission denied
А какие должны быть разрешения на этот файл и почему su не дает мне их?
Вот ответ другого устройства
C:\Android\sdk\platform-tools>adb shell
root@android:/ # ls -l /data/misc/wifi/wpa_supplicant.conf
ls -l /data/misc/wifi/wpa_supplicant.conf
-rw-rw---- system wifi 266 2014-04-28 10:16 wpa_supplicant.conf
root@android:/ #
Но на обоих одна ошибка

Re: Чтение wpa_supplicant.conf

Добавлено: 28 апр 2014, 10:07
altwin
petrovichtim писал(а):Говорит сходи в лес
C:\Android\sdk\platform-tools>adb shell
$ ls -l /data/misc/wifi/wpa_supplicant.conf
ls -l /data/misc/wifi/wpa_supplicant.conf
/data/misc/wifi/wpa_supplicant.conf: Permission denied
А какие должны быть разрешения на этот файл и почему su не дает мне их?
это зашифрованный файл и просто так доступа к нему быть и не должно, рут тут врятли поможет хотя бы потому, что файл создается не android -ом, скопируйте файл на sd карту и выведите содержимое cat -ом. В любом случае он вам нужен, только если вы делаете собственную прошивку и пытаетесь его скопировать, как то использовать содержимое вам всеравно не удастся, алгоритм шифрования ключей всеравно односторонний.

Re: Чтение wpa_supplicant.conf

Добавлено: 28 апр 2014, 10:19
altwin
Для того, чтобы прочитать файл созданный демоном, вы можете использовать только его в большинстве случаев, т.е. вам нужно использовать утилиту wpa_cli, что то вроде:
[syntax=bash]
>> wpa_cli get_network <id> ssid
>> wpa_cli get_network <id> psk
[/syntax]
Но для этого у вас должна быть подпись сертивиката с которой создавался apk, как это может работать в debug режиме с дефолтным ключем и может ли работать вообще я понятия не имею. Вы можете почитать как работает сам демон и что он там делает с конфигом тут: http://hostap.epitest.fi/wpa_supplicant/

P.S. но вообще это вопрос к производителю устройства, т.к. под рутом файл всеравно должен открываться. хотя бы потому, что рут не может получить permission denied. Можно попробывать убить демона или выключить службу, но поидее достаточно просто скопировать файл в другое место и он откроется.

Re: Чтение wpa_supplicant.conf

Добавлено: 20 май 2017, 16:55
NickName
altwin писал(а):
petrovichtim писал(а):Говорит сходи в лес
C:\Android\sdk\platform-tools>adb shell
$ ls -l /data/misc/wifi/wpa_supplicant.conf
ls -l /data/misc/wifi/wpa_supplicant.conf
/data/misc/wifi/wpa_supplicant.conf: Permission denied
А какие должны быть разрешения на этот файл и почему su не дает мне их?
это зашифрованный файл и просто так доступа к нему быть и не должно, рут тут врятли поможет хотя бы потому, что файл создается не android -ом, скопируйте файл на sd карту и выведите содержимое cat -ом. В любом случае он вам нужен, только если вы делаете собственную прошивку и пытаетесь его скопировать, как то использовать содержимое вам всеравно не удастся, алгоритм шифрования ключей всеравно односторонний.
Вы ошибаетесь)
Если телефон рутованый,тогда получить доступ к файлу можно,но перед этим файл надо скопировать ,и открыть с помощью файлового менеджера,и можно делать с файлом всё что угодно)
Правда в файле данные могут быть зашифрованы,придётся знать алгоритм шифрование файла.
P.S не вводите людей в заблуждения!