diff options
Diffstat (limited to 'wpadebug')
24 files changed, 0 insertions, 2043 deletions
diff --git a/wpadebug/.gitignore b/wpadebug/.gitignore deleted file mode 100644 index baf2c7838a0d..000000000000 --- a/wpadebug/.gitignore +++ /dev/null @@ -1,4 +0,0 @@ -bin -gen -local.properties -proguard-project.txt diff --git a/wpadebug/AndroidManifest.xml b/wpadebug/AndroidManifest.xml deleted file mode 100644 index 0d8dec396dd6..000000000000 --- a/wpadebug/AndroidManifest.xml +++ /dev/null @@ -1,86 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<manifest xmlns:android="http://schemas.android.com/apk/res/android" - package="w1.fi.wpadebug" - android:versionCode="1" - android:versionName="1.0"> - <uses-sdk android:minSdkVersion="10" android:targetSdkVersion="17" /> - <uses-permission android:name="android.permission.NFC" /> - <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> - <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /> - <uses-permission android:name="android.permission.INTERNET" /> - <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> - <application android:label="wpadebug" android:usesCleartextTraffic="true"> - <activity android:name="w1.fi.wpadebug.MainActivity" - android:label="wpadebug"> - <intent-filter> - <action android:name="android.intent.action.MAIN" /> - <category android:name="android.intent.category.LAUNCHER" /> - </intent-filter> - </activity> - <activity android:name="w1.fi.wpadebug.DisplayMessageActivity" - android:label="Operation result" - android:parentActivityName="w1.fi.wpadebug.MainActivity"> - </activity> - <activity android:name="w1.fi.wpadebug.WpaNfcActivity" - android:label="wpa_supplicant NFC operation" - android:parentActivityName="w1.fi.wpadebug.MainActivity"> - <intent-filter> - <action android:name="android.nfc.action.NDEF_DISCOVERED"/> - <category android:name="android.intent.category.DEFAULT"/> - <data android:mimeType="application/vnd.wfa.wsc" /> - </intent-filter> - </activity> - <activity android:name="w1.fi.wpadebug.CommandListActivity" - android:label="Command list" - android:parentActivityName="w1.fi.wpadebug.MainActivity"> - </activity> - <activity android:name="w1.fi.wpadebug.WpaCommandListActivity" - android:label="WPA command list" - android:parentActivityName="w1.fi.wpadebug.MainActivity"> - </activity> - <activity android:name="w1.fi.wpadebug.WpaCredActivity" - android:label="Credentials" - android:parentActivityName="w1.fi.wpadebug.MainActivity"> - </activity> - <activity android:name="w1.fi.wpadebug.WpaCredEditActivity" - android:label="Credential" - android:parentActivityName="w1.fi.wpadebug.WpaCredActivity"> - </activity> - <activity android:name="w1.fi.wpadebug.QrCodeScannerActivity" - android:label="QR Code Reader" - android:parentActivityName="w1.fi.wpadebug.MainActivity"> - </activity> - <activity android:name="w1.fi.wpadebug.QrCodeDisplayActivity" - android:label="QR Code Display" - android:parentActivityName="w1.fi.wpadebug.MainActivity"> - </activity> - <activity - android:name="w1.fi.wpadebug.InputUri" - android:label="Input URI" - android:parentActivityName="w1.fi.wpadebug.MainActivity"> - </activity> - <activity - android:name="w1.fi.wpadebug.QrCodeReadActivity" - android:label="Start Scan" - android:parentActivityName="w1.fi.wpadebug.MainActivity"> - </activity> - <activity android:name="w1.fi.wpadebug.WpaWebViewActivity" - android:label="WebView" - android:launchMode="singleTop" - android:noHistory="true"> - <intent-filter> - <action android:name="android.intent.action.MAIN" /> - </intent-filter> - </activity> - <receiver android:name="w1.fi.wpadebug.WifiReceiver"> - <intent-filter> - <action android:name="android.net.wifi.STATE_CHANGE" /> - <action android:name="android.net.wifi.RSSI_CHANGED" /> - <action android:name="android.net.wifi.SCAN_RESULTS" /> - <action android:name="android.net.wifi.supplicant.CONNECTION_CHANGE" /> - <action android:name="android.net.wifi.supplicant.STATE_CHANGE" /> - <action android:name="android.net.wifi.WIFI_STATE_CHANGED" /> - </intent-filter> - </receiver> - </application> -</manifest> diff --git a/wpadebug/README b/wpadebug/README deleted file mode 100644 index f66f0c212dc9..000000000000 --- a/wpadebug/README +++ /dev/null @@ -1,78 +0,0 @@ -wpadebug - wpa_supplicant and Wi-Fi debugging app for Android -Copyright (c) 2013, Jouni Malinen <j@w1.fi> and contributors -All Rights Reserved. - -This program is licensed under the BSD license (the one with -advertisement clause removed). See the top level README for detailed -license text. - -If you are submitting changes to the project, please see CONTRIBUTIONS -file for more instructions. - - -NOTE! This Android app is for debugging and testing purposes only. It is -not supposed to be installed on a production use device and doing so may -result in complete loss of security protections on the device. - - - -Build ------ - -- Install Android SDK and build tools - -wpadebug depends on zxing core to launch QR code display/scanning. -To build zxing core: - -- mkdir hostap/wpadebug/libs # target for the jar file -- Install maven tool -- clone latest zxing code [git clone https://github.com/zxing/zxing.git] -- cd zxing/core -- run: mvn install -DskipTests -- copy target/core-*.*.*-SNAPSHOT.jar to hostap/wpadebug/libs - -To build wpadebug application: - -- update project target if desired; for example: - android list targets - android update project --target 1 --path $PWD -- run: ant debug - - -Installation (with adb over USB) ------------- - -adb install bin/wpadebug-debug.apk - -NOTE: Following steps enable any app on the system to get root access! -This is not suitable for any production use. This is needed for direct -wpa_supplicant access and some networking operating in general. You can -still use rest of the wpadebug app without doing this, but those -functions will not work unless this step part of installation is -done. It should be obvious that these steps require a rooted device. In -addition, if you do not understand what the following commands do, -please do not run them. - -adb root -adb remount -adb shell cp /system/bin/mksh /system/bin/mksh-su -adb shell chmod 6755 /system/bin/mksh-su - -Optionally, a text file with a set of command can be installed to allow -arbitrary shell commands to be executed. This text file need to be in -/data/local/wpadebug.cmds and use title@command format per line. For -example: -version@cat /proc/version - -Similarly, /data/local/wpadebug.wpacmds can be used to define additional -wpa_supplicant control interface commands. - - -Uninstallation --------------- - -adb root -adb remount -adb shell rm /system/bin/mksh-su - -adb uninstall w1.fi.wpadebug diff --git a/wpadebug/build.xml b/wpadebug/build.xml deleted file mode 100644 index 5301e69bcc7f..000000000000 --- a/wpadebug/build.xml +++ /dev/null @@ -1,17 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<project name="wpadebug" default="help"> - <property file="local.properties" /> - <property file="ant.properties" /> - <property environment="env" /> - <condition property="sdk.dir" value="${env.ANDROID_HOME}"> - <isset property="env.ANDROID_HOME" /> - </condition> - <loadproperties srcFile="project.properties" /> - <fail - message="sdk.dir is missing. Make sure to generate local.properties using 'android update project' or to inject it through the ANDROID_HOME environment variable." - unless="sdk.dir" - /> - <import file="custom_rules.xml" optional="true" /> - <!-- version-tag: 1 --> - <import file="${sdk.dir}/tools/ant/build.xml" /> -</project> diff --git a/wpadebug/project.properties b/wpadebug/project.properties deleted file mode 100644 index 36cc0ce32096..000000000000 --- a/wpadebug/project.properties +++ /dev/null @@ -1,2 +0,0 @@ -# Project target. -target=android-22 diff --git a/wpadebug/res/layout/cred_edit.xml b/wpadebug/res/layout/cred_edit.xml deleted file mode 100644 index 292b30abbffd..000000000000 --- a/wpadebug/res/layout/cred_edit.xml +++ /dev/null @@ -1,117 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:orientation="vertical" - > - <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:orientation="horizontal" - > - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:text="Username" - /> - <EditText android:id="@+id/cred_edit_username" - android:layout_weight="1" - android:layout_width="0dp" - android:layout_height="wrap_content" - android:singleLine="true" - android:lines="1" - /> - </LinearLayout> - <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:orientation="horizontal" - > - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:text="Realm" - /> - <EditText android:id="@+id/cred_edit_realm" - android:layout_weight="1" - android:layout_width="0dp" - android:layout_height="wrap_content" - android:singleLine="true" - android:lines="1" - /> - </LinearLayout> - <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:orientation="horizontal" - > - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:text="Password" - /> - <EditText android:id="@+id/cred_edit_password" - android:layout_weight="1" - android:layout_width="0dp" - android:layout_height="wrap_content" - android:singleLine="true" - android:lines="1" - android:inputType="textPassword" - /> - </LinearLayout> - <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:orientation="horizontal" - > - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:text="Domain" - /> - <EditText android:id="@+id/cred_edit_domain" - android:layout_weight="1" - android:layout_width="0dp" - android:layout_height="wrap_content" - android:singleLine="true" - android:lines="1" - /> - </LinearLayout> - <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:orientation="horizontal" - > - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:text="IMSI" - /> - <EditText android:id="@+id/cred_edit_imsi" - android:layout_weight="1" - android:layout_width="0dp" - android:layout_height="wrap_content" - android:singleLine="true" - android:lines="1" - android:hint="Used only with SIM/USIM testing" - /> - </LinearLayout> - <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:orientation="horizontal" - > - <Button - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:text="Save" - android:onClick="credSave" - /> - <Button - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:text="Cancel" - android:onClick="credCancel" - /> - </LinearLayout> -</LinearLayout> diff --git a/wpadebug/res/layout/input_uri.xml b/wpadebug/res/layout/input_uri.xml deleted file mode 100644 index ab391fbed72e..000000000000 --- a/wpadebug/res/layout/input_uri.xml +++ /dev/null @@ -1,26 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:app="http://schemas.android.com/apk/res-auto" - xmlns:tools="http://schemas.android.com/tools" - android:layout_width="match_parent" - android:layout_height="match_parent" - tools:context="w1.fi.wpadebug.InputUri"> - <LinearLayout - android:layout_width="match_parent" - android:gravity="center" - android:orientation="vertical" - android:layout_margin="30dp" - android:layout_height="wrap_content"> - - <EditText - android:id="@+id/edit_uri" - android:layout_width="match_parent" - android:layout_height="130dp" /> - - <Button - android:id="@+id/submit_uri" - android:layout_width="wrap_content" - android:text="Submit" - android:layout_height="wrap_content" /> - </LinearLayout> -</LinearLayout> diff --git a/wpadebug/res/layout/main.xml b/wpadebug/res/layout/main.xml deleted file mode 100644 index cbdbfb961980..000000000000 --- a/wpadebug/res/layout/main.xml +++ /dev/null @@ -1,160 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:orientation="vertical" - > - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:text="Framework commands" - /> - <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:orientation="horizontal" - > - <Button - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:text="WifiManager" - android:onClick="wifiManagerInfo" - /> - <Button - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:text="WifiInfo" - android:onClick="wifiInfo" - /> - <Button - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:text="Networks" - android:onClick="wifiConfiguredNetworks" - /> - </LinearLayout> - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:text="wpa_supplicant commands" - /> - <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:orientation="horizontal" - > - <Button - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:text="wpa_supplicant commands" - android:onClick="runWpaCommands" - /> - </LinearLayout> - <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:orientation="horizontal" - > - <Button - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:text="Credentials" - android:onClick="runWpaCredentials" - /> - </LinearLayout> - <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:orientation="horizontal" - > - <Button - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:text="log:info" - android:onClick="wpaLogLevelInfo" - /> - <Button - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:text="log:debug" - android:onClick="wpaLogLevelDebug" - /> - <Button - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:text="log:excessive" - android:onClick="wpaLogLevelExcessive" - /> - </LinearLayout> - <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:orientation="horizontal" - > - <EditText android:id="@+id/edit_cmd" - android:layout_weight="1" - android:layout_width="0dp" - android:layout_height="wrap_content" - android:hint="wpa_cli command" - /> - <Button - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:text="Run" - android:onClick="runWpaCliCmd" - /> - </LinearLayout> - <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:orientation="horizontal" - > - <Button - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:text="Shell commands" - android:onClick="runCommands" - /> - </LinearLayout> - <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:orientation="horizontal" - > - <Button - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:text="QR Scan" - android:onClick="runQrScan" - /> - <Button - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:text="QR Input" - android:onClick="runQrInput" - /> - <Button - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:text="QR Display" - android:onClick="runQrDisplay" - /> - </LinearLayout> - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:text="NFC commands" - /> - <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:orientation="horizontal" - > - <Button - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:text="WPS handover request" - android:onClick="nfcWpsHandoverRequest" - /> - </LinearLayout> -</LinearLayout> diff --git a/wpadebug/res/layout/qrcode.xml b/wpadebug/res/layout/qrcode.xml deleted file mode 100644 index 8cf50de374e1..000000000000 --- a/wpadebug/res/layout/qrcode.xml +++ /dev/null @@ -1,13 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" - android:orientation="vertical" - android:layout_width="match_parent" - android:layout_height="match_parent" - android:gravity="center_horizontal"> - <ImageView - android:id="@+id/qrCode" - android:layout_width="350dp" - android:layout_height="350dp" - android:layout_marginTop="20dp" - /> -</LinearLayout>
\ No newline at end of file diff --git a/wpadebug/res/raw/shell_commands.txt b/wpadebug/res/raw/shell_commands.txt deleted file mode 100644 index 9b45d652a065..000000000000 --- a/wpadebug/res/raw/shell_commands.txt +++ /dev/null @@ -1,2 +0,0 @@ -id@id -version@cat /proc/version diff --git a/wpadebug/res/raw/wpa_commands.txt b/wpadebug/res/raw/wpa_commands.txt deleted file mode 100644 index 3baa01c8bb5b..000000000000 --- a/wpadebug/res/raw/wpa_commands.txt +++ /dev/null @@ -1,9 +0,0 @@ -Status@STATUS -PMKSA cache@PMKSA -Networks@LIST_NETWORKS -Interworking connect@INTERWORKING_SELECT auto -Creds@LIST_CREDS -Scan results@SCAN_RESULTS -Flush@FLUSH -Disconnect@DISCONNECT -Reassociate@REASSOCIATE diff --git a/wpadebug/src/w1/fi/wpadebug/CommandListActivity.java b/wpadebug/src/w1/fi/wpadebug/CommandListActivity.java deleted file mode 100644 index 6d7ad4dd6678..000000000000 --- a/wpadebug/src/w1/fi/wpadebug/CommandListActivity.java +++ /dev/null @@ -1,130 +0,0 @@ -/* - * wpadebug - wpa_supplicant and Wi-Fi debugging app for Android - * Copyright (c) 2013, Jouni Malinen <j@w1.fi> - * - * This software may be distributed under the terms of the BSD license. - * See README for more details. - */ - -package w1.fi.wpadebug; - -import java.util.ArrayList; -import java.util.Scanner; -import java.io.FileReader; -import java.io.BufferedReader; -import java.io.InputStreamReader; -import java.io.InputStream; -import java.io.IOException; - -import android.app.ListActivity; -import android.content.Intent; -import android.os.Bundle; -import android.os.Parcelable; -import android.view.View; -import android.widget.ListView; -import android.widget.ArrayAdapter; -import android.widget.Toast; -import android.text.method.ScrollingMovementMethod; -import android.util.Log; - -class CmdList -{ - String title; - String command; - - public CmdList(String _title, String _command) - { - title = _title; - command = _command; - } - - @Override - public String toString() - { - return title; - } -} - -public class CommandListActivity extends ListActivity -{ - private static final String TAG = "wpadebug"; - private static final String cmdfile = "/data/local/wpadebug.cmds"; - - private void read_commands(ArrayList<CmdList> list, Scanner in) - { - in.useDelimiter("@"); - while (in.hasNext()) { - String title = in.next(); - String cmd = in.nextLine().substring(1); - list.add(new CmdList(title, cmd)); - } - in.close(); - } - - @Override - public void onCreate(Bundle savedInstanceState) - { - super.onCreate(savedInstanceState); - - ArrayList<CmdList> list = new ArrayList<CmdList>(); - - FileReader in; - try { - in = new FileReader(cmdfile); - read_commands(list, new Scanner(in)); - } catch (IOException e) { - Toast.makeText(this, "Could not read " + cmdfile, - Toast.LENGTH_SHORT).show(); - } - - InputStream inres; - try { - inres = getResources().openRawResource(R.raw.shell_commands); - read_commands(list, new Scanner(inres)); - } catch (android.content.res.Resources.NotFoundException e) { - Toast.makeText(this, "Could not read internal resource", - Toast.LENGTH_SHORT).show(); - } - - ArrayAdapter<CmdList> listAdapter; - listAdapter = new ArrayAdapter<CmdList>(this, android.R.layout.simple_list_item_1, list); - - setListAdapter(listAdapter); - } - - @Override - protected void onListItemClick(ListView l, View v, int position, long id) - { - CmdList item = (CmdList) getListAdapter().getItem(position); - Toast.makeText(this, "Running: " + item.command, - Toast.LENGTH_SHORT).show(); - String message = run(item.command); - if (message == null) - return; - Intent intent = new Intent(this, DisplayMessageActivity.class); - intent.putExtra(MainActivity.EXTRA_MESSAGE, message); - startActivity(intent); - } - - private String run(String cmd) - { - try { - Process proc = Runtime.getRuntime().exec(new String[]{"/system/bin/mksh-su", "-c", cmd}); - BufferedReader reader = new BufferedReader(new InputStreamReader(proc.getInputStream())); - StringBuffer output = new StringBuffer(); - int read; - char[] buffer = new char[1024]; - while ((read = reader.read(buffer)) > 0) - output.append(buffer, 0, read); - reader.close(); - proc.waitFor(); - return output.toString(); - } catch (IOException e) { - Toast.makeText(this, "Could not run command", - Toast.LENGTH_LONG).show(); - return null; - } catch (InterruptedException e) { - throw new RuntimeException(e); - } - } -} diff --git a/wpadebug/src/w1/fi/wpadebug/DisplayMessageActivity.java b/wpadebug/src/w1/fi/wpadebug/DisplayMessageActivity.java deleted file mode 100644 index 28ef85f39169..000000000000 --- a/wpadebug/src/w1/fi/wpadebug/DisplayMessageActivity.java +++ /dev/null @@ -1,49 +0,0 @@ -/* - * wpadebug - wpa_supplicant and Wi-Fi debugging app for Android - * Copyright (c) 2013, Jouni Malinen <j@w1.fi> - * - * This software may be distributed under the terms of the BSD license. - * See README for more details. - */ - -package w1.fi.wpadebug; - -import android.app.Activity; -import android.os.Bundle; -import android.os.Parcelable; -import android.view.MenuItem; -import android.content.Intent; -import android.widget.TextView; -import android.text.method.ScrollingMovementMethod; -import android.util.Log; - -public class DisplayMessageActivity extends Activity -{ - private static final String TAG = "wpadebug"; - - String byteArrayHex(byte[] a) { - StringBuilder sb = new StringBuilder(); - for (byte b: a) - sb.append(String.format("%02x", b)); - return sb.toString(); - } - - @Override - public void onCreate(Bundle savedInstanceState) - { - Log.d(TAG, "onCreate"); - super.onCreate(savedInstanceState); - - // Get the message from the intent - Intent intent = getIntent(); - String action = intent.getAction(); - Log.d(TAG, "onCreate: action=" + action); - - String message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE); - - TextView textView = new TextView(this); - textView.setText(message); - textView.setMovementMethod(new ScrollingMovementMethod()); - setContentView(textView); - } -} diff --git a/wpadebug/src/w1/fi/wpadebug/InputUri.java b/wpadebug/src/w1/fi/wpadebug/InputUri.java deleted file mode 100644 index ea1fa99d2a3e..000000000000 --- a/wpadebug/src/w1/fi/wpadebug/InputUri.java +++ /dev/null @@ -1,108 +0,0 @@ -/* - * wpadebug - wpa_supplicant and Wi-Fi debugging app for Android - * Copyright (c) 2018, The Linux Foundation - * - * This software may be distributed under the terms of the BSD license. - * See README for more details. - */ - -package w1.fi.wpadebug; - -import android.app.Activity; -import android.os.Bundle; -import android.text.Editable; -import android.text.TextWatcher; -import android.view.View; -import android.widget.Button; -import android.widget.EditText; -import android.util.Log; - -import java.io.File; -import java.io.FileOutputStream; -import java.io.IOException; -import java.io.OutputStreamWriter; - -public class InputUri extends Activity { - - private EditText mEditText; - private Button mSubmitButton; - private String mUriText; - private static final String FILE_NAME = "wpadebug_qrdata.txt"; - private static final String TAG = "wpadebug"; - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.input_uri); - mEditText = (EditText)findViewById(R.id.edit_uri); - mSubmitButton = (Button)findViewById(R.id.submit_uri); - - mEditText.addTextChangedListener(new TextWatcher() { - @Override - public void onTextChanged(CharSequence s, int start, int before, - int count) { - mUriText = mEditText.getText().toString(); - if (mUriText.startsWith("DPP:") && - mUriText.endsWith(";;")) { - writeToFile(mUriText); - finish(); - } - } - - @Override - public void beforeTextChanged(CharSequence s, int start, - int count, int after) { - } - - @Override - public void afterTextChanged(Editable s) { - } - }); - } - - @Override - protected void onResume() { - super.onResume(); - mSubmitButton.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - mUriText = mEditText.getText().toString(); - new Thread(new Runnable() { - @Override - public void run() { - writeToFile(mUriText); - - InputUri.this.runOnUiThread(new Runnable() { - @Override - public void run() { - finish(); - } - }); - } - }).start(); - - } - - }); - } - - public void writeToFile(String data) - { - File file = new File("/sdcard", FILE_NAME); - try - { - file.createNewFile(); - FileOutputStream fOut = new FileOutputStream(file); - OutputStreamWriter myOutWriter = new OutputStreamWriter(fOut); - myOutWriter.append(mUriText); - myOutWriter.close(); - - fOut.flush(); - fOut.close(); - } - catch (IOException e) - { - Log.e(TAG, "File write failed: " + e.toString()); - } - } -} diff --git a/wpadebug/src/w1/fi/wpadebug/MainActivity.java b/wpadebug/src/w1/fi/wpadebug/MainActivity.java deleted file mode 100644 index 4c37b481f1bf..000000000000 --- a/wpadebug/src/w1/fi/wpadebug/MainActivity.java +++ /dev/null @@ -1,209 +0,0 @@ -/* - * wpadebug - wpa_supplicant and Wi-Fi debugging app for Android - * Copyright (c) 2013, Jouni Malinen <j@w1.fi> - * - * This software may be distributed under the terms of the BSD license. - * See README for more details. - */ - -package w1.fi.wpadebug; - -import java.io.BufferedReader; -import java.io.InputStreamReader; -import java.io.IOException; - -import android.app.Activity; -import android.app.AlertDialog; -import android.os.Bundle; -import android.view.View; -import android.content.Intent; -import android.content.Context; -import android.content.DialogInterface; -import android.widget.EditText; -import android.widget.Toast; -import android.util.Log; -import android.net.wifi.WifiManager; -import android.net.wifi.WifiInfo; -import android.net.wifi.WifiConfiguration; -import android.nfc.NdefMessage; -import android.nfc.NdefRecord; -import android.nfc.NfcAdapter; - -public class MainActivity extends Activity -{ - public final static String EXTRA_MESSAGE = "w1.fi.wpadebug.MESSAGE"; - private static final String TAG = "wpadebug"; - - @Override - public void onCreate(Bundle savedInstanceState) - { - super.onCreate(savedInstanceState); - setContentView(R.layout.main); - } - - public void runCommands(View view) - { - Intent intent = new Intent(this, CommandListActivity.class); - startActivity(intent); - } - - public void runQrScan(View view) - { - Intent intent = new Intent(this, QrCodeScannerActivity.class); - startActivity(intent); - } - - public void runQrInput(View view) - { - Intent intent = new Intent(this, InputUri.class); - startActivity(intent); - } - - public void runQrDisplay(View view) - { - Intent intent = new Intent(this, QrCodeDisplayActivity.class); - startActivity(intent); - } - - public void runWpaCommands(View view) - { - Intent intent = new Intent(this, WpaCommandListActivity.class); - startActivity(intent); - } - - public void runWpaCredentials(View view) - { - Intent intent = new Intent(this, WpaCredActivity.class); - startActivity(intent); - } - - public void runWpaCliCmd(View view) - { - Intent intent = new Intent(this, DisplayMessageActivity.class); - EditText editText = (EditText) findViewById(R.id.edit_cmd); - String cmd = editText.getText().toString(); - if (cmd.trim().length() == 0) { - show_alert("wpa_cli command", "Invalid command"); - return; - } - wpaCmd(view, cmd); - } - - public void wpaLogLevelInfo(View view) - { - wpaCmd(view, "LOG_LEVEL INFO 1"); - } - - public void wpaLogLevelDebug(View view) - { - wpaCmd(view, "LOG_LEVEL DEBUG 1"); - } - - public void wpaLogLevelExcessive(View view) - { - wpaCmd(view, "LOG_LEVEL EXCESSIVE 1"); - } - - private void wpaCmd(View view, String cmd) - { - Intent intent = new Intent(this, DisplayMessageActivity.class); - String message = run("wpa_cli " + cmd); - if (message == null) - return; - intent.putExtra(EXTRA_MESSAGE, message); - startActivity(intent); - } - - private String run(String cmd) - { - try { - Log.d(TAG, "Running external process: " + cmd); - Process proc = Runtime.getRuntime().exec(new String[]{"/system/bin/mksh-su", "-c", cmd}); - BufferedReader reader = new BufferedReader(new InputStreamReader(proc.getInputStream())); - StringBuffer output = new StringBuffer(); - int read; - char[] buffer = new char[1024]; - while ((read = reader.read(buffer)) > 0) - output.append(buffer, 0, read); - reader.close(); - proc.waitFor(); - Log.d(TAG, "External process completed - exitValue " + - proc.exitValue()); - return output.toString(); - } catch (IOException e) { - show_alert("Could not run external program", - "Execution of an external program failed. " + - "Maybe mksh-su was not installed."); - return null; - } catch (InterruptedException e) { - throw new RuntimeException(e); - } - } - - private void show_alert(String title, String message) - { - AlertDialog.Builder alert = new AlertDialog.Builder(this); - alert.setTitle(title); - alert.setMessage(message); - alert.setPositiveButton("OK", new DialogInterface.OnClickListener() { - public void onClick(DialogInterface dialog, int id) - { - } - }); - alert.create().show(); - } - - public void wifiManagerInfo(View view) - { - Intent intent = new Intent(this, DisplayMessageActivity.class); - WifiManager manager = (WifiManager) getSystemService(Context.WIFI_SERVICE); - String message = "WifiState: " + manager.getWifiState() + "\n" + - "WifiEnabled: " + manager.isWifiEnabled() + "\n" + - "pingSupplicant: " + manager.pingSupplicant() + "\n" + - "DhcpInfo: " + manager.getDhcpInfo().toString() + "\n"; - intent.putExtra(EXTRA_MESSAGE, message); - startActivity(intent); - } - - public void wifiInfo(View view) - { - Intent intent = new Intent(this, DisplayMessageActivity.class); - WifiManager manager = (WifiManager) getSystemService(Context.WIFI_SERVICE); - WifiInfo wifi = manager.getConnectionInfo(); - String message = wifi.toString() + "\n" + wifi.getSupplicantState(); - intent.putExtra(EXTRA_MESSAGE, message); - startActivity(intent); - } - - public void wifiConfiguredNetworks(View view) - { - Intent intent = new Intent(this, DisplayMessageActivity.class); - WifiManager manager = (WifiManager) getSystemService(Context.WIFI_SERVICE); - StringBuilder sb = new StringBuilder(); - for (WifiConfiguration n: manager.getConfiguredNetworks()) - sb.append(n.toString() + "\n"); - intent.putExtra(EXTRA_MESSAGE, sb.toString()); - startActivity(intent); - } - - public void nfcWpsHandoverRequest(View view) - { - NfcAdapter nfc; - nfc = NfcAdapter.getDefaultAdapter(this); - if (nfc == null) { - Toast.makeText(this, "NFC is not available", - Toast.LENGTH_LONG).show(); - return; - } - - NdefMessage msg; - msg = new NdefMessage(new NdefRecord[] { - NdefRecord.createMime("application/vnd.wfa.wsc", - new byte[0]) - }); - - nfc.setNdefPushMessage(msg, this); - Toast.makeText(this, "NFC push message (WSC) configured", - Toast.LENGTH_LONG).show(); - } -} diff --git a/wpadebug/src/w1/fi/wpadebug/QrCodeDisplayActivity.java b/wpadebug/src/w1/fi/wpadebug/QrCodeDisplayActivity.java deleted file mode 100644 index 10c9c0144fe4..000000000000 --- a/wpadebug/src/w1/fi/wpadebug/QrCodeDisplayActivity.java +++ /dev/null @@ -1,109 +0,0 @@ -/* - * wpadebug - wpa_supplicant and Wi-Fi debugging app for Android - * Copyright (c) 2018, The Linux Foundation - * - * This software may be distributed under the terms of the BSD license. - * See README for more details. - */ - -package w1.fi.wpadebug; - -import android.app.Activity; -import android.graphics.Bitmap; -import android.os.Bundle; -import android.text.TextUtils; -import android.util.Log; -import android.widget.ImageView; - -import com.google.zxing.BarcodeFormat; -import com.google.zxing.MultiFormatWriter; -import com.google.zxing.WriterException; -import com.google.zxing.common.BitMatrix; - -import java.io.BufferedReader; -import java.io.File; -import java.io.FileInputStream; -import java.io.FileNotFoundException; -import java.io.IOException; -import java.io.InputStreamReader; - -public class QrCodeDisplayActivity extends Activity { - - private static final String TAG = "wpadebug"; - private static final String FILE_NAME = "wpadebug_qrdata.txt"; - private ImageView imageView; - - // Below set of configs are used for QR code display window - private final static int WHITE = 0xFFFFFFFF; - private final static int BLACK = 0xFF000000; - private final static int WIDTH = 400; - private final static int HEIGHT = 400; - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - // create imageview for this and attach to this activity. - setContentView(R.layout.qrcode); - imageView = (ImageView) findViewById(R.id.qrCode); - String str = readFromFile(FILE_NAME); - - //Encode and launch qrcode now - try { - Bitmap bitmap = (TextUtils.isEmpty(str)) ? null : encodeAsBitmap(str); - if (bitmap != null) { - imageView.setImageBitmap(bitmap); - } else { - Log.e(TAG, "Failed to generate bitmap for uri=" + str); - finish(); - } - } catch (WriterException e) { - e.printStackTrace(); - finish(); - } - } - - private Bitmap encodeAsBitmap(String str) throws WriterException { - BitMatrix result; - try { - result = new MultiFormatWriter().encode(str, BarcodeFormat.QR_CODE, WIDTH, HEIGHT, null); - } catch (IllegalArgumentException iae) { - // Unsupported format - return null; - } - - int width = result.getWidth(); - int height = result.getHeight(); - int[] pixels = new int[width * height]; - for (int y = 0; y < height; y++) { - int offset = y * width; - for (int x = 0; x < width; x++) { - pixels[offset + x] = result.get(x, y) ? BLACK : WHITE; - } - } - - Bitmap bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888); - bitmap.setPixels(pixels, 0, width, 0, 0, width, height); - return bitmap; - } - - private String readFromFile(String filePath) { - try { - FileInputStream fis = new FileInputStream(new File("/sdcard", filePath)); - BufferedReader br = new BufferedReader(new InputStreamReader(fis, "UTF-8")); - StringBuilder sb = new StringBuilder(); - String line; - while(( line = br.readLine()) != null ) { - sb.append( line ); - sb.append( '\n' ); - } - return sb.toString(); - } - catch (FileNotFoundException e) { - Log.e(TAG, "File not found: " + e.toString()); - } catch (IOException e) { - Log.e(TAG, "Can not read file: " + e.toString()); - } - - return null; - } -} diff --git a/wpadebug/src/w1/fi/wpadebug/QrCodeReadActivity.java b/wpadebug/src/w1/fi/wpadebug/QrCodeReadActivity.java deleted file mode 100644 index f21eccba8660..000000000000 --- a/wpadebug/src/w1/fi/wpadebug/QrCodeReadActivity.java +++ /dev/null @@ -1,40 +0,0 @@ -/* - * wpadebug - wpa_supplicant and Wi-Fi debugging app for Android - * Copyright (c) 2018, The Linux Foundation - * - * This software may be distributed under the terms of the BSD license. - * See README for more details. - */ - -package w1.fi.wpadebug; - -import android.app.Activity; -import android.util.Log; -import android.content.Intent; -import android.hardware.Camera; -import android.os.Bundle; - -public class QrCodeReadActivity extends Activity { - - private static final String TAG = "wpadebug"; - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - int numberOfCameras = Camera.getNumberOfCameras(); - - if (numberOfCameras > 0) { - Log.e(TAG, "Number of cameras found: " + numberOfCameras); - Intent QrCodeScanIntent = new Intent(QrCodeReadActivity.this, - QrCodeScannerActivity.class); - QrCodeReadActivity.this.startActivity(QrCodeScanIntent); - finish(); - } else { - Log.e(TAG, "No cameras found, input the QR Code"); - Intent QrCodeInputIntent = new Intent(QrCodeReadActivity.this, - InputUri.class); - QrCodeReadActivity.this.startActivity(QrCodeInputIntent); - finish(); - } - } -} diff --git a/wpadebug/src/w1/fi/wpadebug/QrCodeScannerActivity.java b/wpadebug/src/w1/fi/wpadebug/QrCodeScannerActivity.java deleted file mode 100644 index 4b3591c725dc..000000000000 --- a/wpadebug/src/w1/fi/wpadebug/QrCodeScannerActivity.java +++ /dev/null @@ -1,82 +0,0 @@ -/* - * wpadebug - wpa_supplicant and Wi-Fi debugging app for Android - * Copyright (c) 2018, The Linux Foundation - * - * This software may be distributed under the terms of the BSD license. - * See README for more details. - */ - -package w1.fi.wpadebug; - -import android.app.Activity; -import android.content.ActivityNotFoundException; -import android.content.Intent; -import android.os.Bundle; -import android.util.Log; -import android.widget.Toast; - -import java.io.File; -import java.io.FileOutputStream; -import java.io.IOException; -import java.io.OutputStreamWriter; - -public class QrCodeScannerActivity extends Activity { - - private static final String TAG = "wpadebug"; - private static final String RESULT = "SCAN_RESULT"; - private static final String FILE_NAME = "wpadebug_qrdata.txt"; - private static final String ACTION = "com.google.zxing.client.android.SCAN"; - - private static final int QRCODE = 1; - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - - Intent intent = new Intent(); - intent.setAction(ACTION); - intent.putExtra("SCAN_MODE", "QR_CODE_MODE"); - intent.putExtra("PROMPT_MESSAGE", - "Place a QR Code inside the viewfinder rectangle to scan it."); - try { - startActivityForResult(intent, QRCODE); - } catch (ActivityNotFoundException e) { - Log.e(TAG, "No QR code scanner found with name=" + ACTION); - Toast.makeText(QrCodeScannerActivity.this, "QR code scanner not found", Toast.LENGTH_SHORT).show(); - finish(); - } - } - - @Override - protected void onActivityResult(int requestCode, int resultCode, Intent data) { - Log.d(TAG, "onActivityResult: requestCode=" + requestCode + " resultCode=" + resultCode); - if (requestCode == QRCODE && resultCode == RESULT_OK) { - String contents = data.getStringExtra(RESULT); - writeToFile(contents); - Log.d(TAG, "onActivityResult: QRCODE RESULT_OK: " + contents); - finishActivity(requestCode); - finish(); - } - } - - public void writeToFile(String data) - { - File file = new File("/sdcard", FILE_NAME); - try - { - file.createNewFile(); - FileOutputStream fOut = new FileOutputStream(file); - OutputStreamWriter myOutWriter = new OutputStreamWriter(fOut); - myOutWriter.append(data); - - myOutWriter.close(); - - fOut.flush(); - fOut.close(); - } - catch (IOException e) - { - Log.e(TAG, "File write failed: " + e.toString()); - } - } -} diff --git a/wpadebug/src/w1/fi/wpadebug/WifiReceiver.java b/wpadebug/src/w1/fi/wpadebug/WifiReceiver.java deleted file mode 100644 index d69e05d69ebb..000000000000 --- a/wpadebug/src/w1/fi/wpadebug/WifiReceiver.java +++ /dev/null @@ -1,95 +0,0 @@ -/* - * wpadebug - wpa_supplicant and Wi-Fi debugging app for Android - * Copyright (c) 2013, Jouni Malinen <j@w1.fi> - * - * This software may be distributed under the terms of the BSD license. - * See README for more details. - */ - -package w1.fi.wpadebug; - -import android.content.BroadcastReceiver; -import android.content.Context; -import android.content.Intent; -import android.net.NetworkInfo; -import android.net.wifi.SupplicantState; -import android.net.wifi.WifiInfo; -import android.os.Bundle; -import android.util.Log; - -public class WifiReceiver extends BroadcastReceiver -{ - private static final String TAG = "wpadebug"; - - @Override - public void onReceive(Context c, Intent intent) - { - String act = intent.getAction(); - Log.d(TAG, "Received broadcast intent: action=" + act); - - Bundle bundles = intent.getExtras(); - if (bundles == null) - return; - - if (bundles.containsKey("bssid")) { - String val; - val = intent.getStringExtra("bssid"); - if (val != null) - Log.d(TAG, " bssid: " + val); - } - - if (bundles.containsKey("networkInfo")) { - NetworkInfo info; - info = (NetworkInfo) intent.getParcelableExtra("networkInfo"); - if (info != null) - Log.d(TAG, " networkInfo: " + info); - } - - if (bundles.containsKey("newRssi")) { - int val; - val = intent.getIntExtra("newRssi", -1); - Log.d(TAG, " newRssi: " + val); - } - - if (bundles.containsKey("newState")) { - SupplicantState state; - state = (SupplicantState) intent.getParcelableExtra("newState"); - if (state != null) - Log.d(TAG, " newState: " + state); - } - - if (bundles.containsKey("previous_wifi_state")) { - int wifi_state; - wifi_state = intent.getIntExtra("previous_wifi_state", -1); - if (wifi_state != -1) - Log.d(TAG, " previous_wifi_state: " + wifi_state); - } - - if (bundles.containsKey("connected")) { - boolean connected; - connected = intent.getBooleanExtra("connected", false); - Log.d(TAG, " connected: " + connected); - } - - if (bundles.containsKey("supplicantError")) { - int error; - error = intent.getIntExtra("supplicantError", -1); - if (error != -1) - Log.d(TAG, " supplicantError: " + error); - } - - if (bundles.containsKey("wifiInfo")) { - WifiInfo info; - info = (WifiInfo) intent.getParcelableExtra("wifiInfo"); - if (info != null) - Log.d(TAG, " wifiInfo: " + info); - } - - if (bundles.containsKey("wifi_state")) { - int wifi_state; - wifi_state = intent.getIntExtra("wifi_state", -1); - if (wifi_state != -1) - Log.d(TAG, " wifi_state: " + wifi_state); - } - } -} diff --git a/wpadebug/src/w1/fi/wpadebug/WpaCommandListActivity.java b/wpadebug/src/w1/fi/wpadebug/WpaCommandListActivity.java deleted file mode 100644 index e089179340ee..000000000000 --- a/wpadebug/src/w1/fi/wpadebug/WpaCommandListActivity.java +++ /dev/null @@ -1,112 +0,0 @@ -/* - * wpadebug - wpa_supplicant and Wi-Fi debugging app for Android - * Copyright (c) 2013, Jouni Malinen <j@w1.fi> - * - * This software may be distributed under the terms of the BSD license. - * See README for more details. - */ - -package w1.fi.wpadebug; - -import java.util.ArrayList; -import java.util.Scanner; -import java.io.FileReader; -import java.io.BufferedReader; -import java.io.InputStreamReader; -import java.io.InputStream; -import java.io.IOException; - -import android.app.ListActivity; -import android.content.Intent; -import android.os.Bundle; -import android.os.Parcelable; -import android.view.View; -import android.widget.ListView; -import android.widget.ArrayAdapter; -import android.widget.Toast; -import android.text.method.ScrollingMovementMethod; -import android.util.Log; - -public class WpaCommandListActivity extends ListActivity -{ - private static final String TAG = "wpadebug"; - private static final String cmdfile = "/data/local/wpadebug.wpacmds"; - - private void read_commands(ArrayList<CmdList> list, Scanner in) - { - in.useDelimiter("@"); - while (in.hasNext()) { - String title = in.next(); - String cmd = in.nextLine().substring(1); - list.add(new CmdList(title, cmd)); - } - in.close(); - } - - @Override - public void onCreate(Bundle savedInstanceState) - { - super.onCreate(savedInstanceState); - - ArrayList<CmdList> list = new ArrayList<CmdList>(); - - FileReader in; - try { - in = new FileReader(cmdfile); - read_commands(list, new Scanner(in)); - } catch (IOException e) { - Toast.makeText(this, "Could not read " + cmdfile, - Toast.LENGTH_SHORT).show(); - } - - InputStream inres; - try { - inres = getResources().openRawResource(R.raw.wpa_commands); - read_commands(list, new Scanner(inres)); - } catch (android.content.res.Resources.NotFoundException e) { - Toast.makeText(this, "Could not read internal resource", - Toast.LENGTH_SHORT).show(); - } - - ArrayAdapter<CmdList> listAdapter; - listAdapter = new ArrayAdapter<CmdList>(this, android.R.layout.simple_list_item_1, list); - - setListAdapter(listAdapter); - } - - @Override - protected void onListItemClick(ListView l, View v, int position, long id) - { - CmdList item = (CmdList) getListAdapter().getItem(position); - Toast.makeText(this, "Running: " + item.command, - Toast.LENGTH_SHORT).show(); - String message = run(item.command); - if (message == null) - return; - Intent intent = new Intent(this, DisplayMessageActivity.class); - intent.putExtra(MainActivity.EXTRA_MESSAGE, message); - startActivity(intent); - } - - private String run(String cmd) - { - try { - Process proc = Runtime.getRuntime().exec(new String[]{"/system/bin/mksh-su", "-c", "wpa_cli " + cmd}); - BufferedReader reader = new BufferedReader(new InputStreamReader(proc.getInputStream())); - StringBuffer output = new StringBuffer(); - int read; - char[] buffer = new char[1024]; - while ((read = reader.read(buffer)) > 0) - output.append(buffer, 0, read); - reader.close(); - proc.waitFor(); - return output.toString(); - } catch (IOException e) { - Toast.makeText(this, "Could not run command", - Toast.LENGTH_LONG).show(); - return null; - } catch (InterruptedException e) { - throw new RuntimeException(e); - } - } -} diff --git a/wpadebug/src/w1/fi/wpadebug/WpaCredActivity.java b/wpadebug/src/w1/fi/wpadebug/WpaCredActivity.java deleted file mode 100644 index 3902f0964d0a..000000000000 --- a/wpadebug/src/w1/fi/wpadebug/WpaCredActivity.java +++ /dev/null @@ -1,263 +0,0 @@ -/* - * wpadebug - wpa_supplicant and Wi-Fi debugging app for Android - * Copyright (c) 2013, Jouni Malinen <j@w1.fi> - * - * This software may be distributed under the terms of the BSD license. - * See README for more details. - */ - -package w1.fi.wpadebug; - -import java.util.ArrayList; -import java.util.ListIterator; -import java.io.BufferedReader; -import java.io.InputStreamReader; -import java.io.InputStream; -import java.io.IOException; - -import android.app.ListActivity; -import android.app.ActionBar; -import android.content.Intent; -import android.os.Bundle; -import android.view.View; -import android.view.Menu; -import android.view.MenuItem; -import android.widget.ListView; -import android.widget.ArrayAdapter; -import android.widget.Toast; -import android.widget.AdapterView.AdapterContextMenuInfo; - -class Credential -{ - int id; - String realm; - String username; - String domain; - String imsi; - - public Credential(String entry) - { - String fields[] = entry.split("\t"); - id = Integer.parseInt(fields[0]); - if (fields.length > 1) - realm = fields[1]; - else - realm = ""; - if (fields.length > 2) - username = fields[2]; - else - username = ""; - if (fields.length > 3 && fields[3].length() > 0) - domain = fields[3]; - else - domain = null; - if (fields.length > 4 && fields[4].length() > 0) - imsi = fields[4]; - else - imsi = null; - } - - public Credential(int _id, String _username, String _realm, String _domain, - String _imsi) - { - id = _id; - username = _username; - realm = _realm; - domain = _domain; - imsi = _imsi; - } - - - @Override - public String toString() - { - String res = id + " - " + username + "@" + realm; - if (domain != null) - res += " (domain=" + domain + ")"; - if (imsi != null) - res += " (imsi=" + imsi + ")"; - return res; - } -} - -public class WpaCredActivity extends ListActivity -{ - private static final String TAG = "wpadebug"; - static final int CRED_EDIT_REQ = 0; - private ArrayList<Credential> mList; - private ArrayAdapter<Credential> mListAdapter; - - @Override - public void onCreate(Bundle savedInstanceState) - { - super.onCreate(savedInstanceState); - - mList = new ArrayList<Credential>(); - - String res = run("LIST_CREDS"); - if (res == null) { - Toast.makeText(this, "Could not get credential list", - Toast.LENGTH_LONG).show(); - finish(); - return; - } - - String creds[] = res.split("\n"); - for (String cred: creds) { - if (Character.isDigit(cred.charAt(0))) - mList.add(new Credential(cred)); - } - - mListAdapter = new ArrayAdapter<Credential>(this, android.R.layout.simple_list_item_1, mList); - - setListAdapter(mListAdapter); - registerForContextMenu(getListView()); - - ActionBar abar = getActionBar(); - } - - @Override - public boolean onCreateOptionsMenu(Menu menu) - { - menu.add(0, 0, 0, "Add credential"); - return true; - } - - protected void onActivityResult(int requestCode, int resultCode, - Intent data) - { - if (requestCode == CRED_EDIT_REQ) { - if (resultCode != RESULT_OK) - return; - - String username = data.getStringExtra("username"); - - String realm = data.getStringExtra("realm"); - - String domain = data.getStringExtra("domain"); - if (domain != null && domain.length() == 0) - domain = null; - - String imsi = data.getStringExtra("imsi"); - if (imsi != null && imsi.length() == 0) - imsi = null; - - String password = data.getStringExtra("password"); - if (password != null && password.length() == 0) - password = null; - - String res = run("ADD_CRED"); - if (res == null || res.contains("FAIL")) { - Toast.makeText(this, "Failed to add credential", - Toast.LENGTH_LONG).show(); - return; - } - - int id = -1; - String lines[] = res.split("\n"); - for (String line: lines) { - if (Character.isDigit(line.charAt(0))) { - id = Integer.parseInt(line); - break; - } - } - - if (id < 0) { - Toast.makeText(this, "Failed to add credential (invalid id)", - Toast.LENGTH_LONG).show(); - return; - } - - if (!set_cred_quoted(id, "username", username) || - !set_cred_quoted(id, "realm", realm) || - (password != null && - !set_cred_quoted(id, "password", password)) || - (domain != null && !set_cred_quoted(id, "domain", domain)) || - (imsi != null && !set_cred_quoted(id, "imsi", imsi))) { - run("REMOVE_CRED " + id); - Toast.makeText(this, "Failed to set credential field", - Toast.LENGTH_LONG).show(); - return; - } - - mListAdapter.add(new Credential(id, username, realm, domain, imsi)); - } - } - - @Override - public boolean onOptionsItemSelected(MenuItem item) - { - if (item.getTitle().equals("Add credential")) { - startActivityForResult(new Intent(this, WpaCredEditActivity.class), - CRED_EDIT_REQ); - return true; - } - return false; - } - - public void onCreateContextMenu(android.view.ContextMenu menu, View v, - android.view.ContextMenu.ContextMenuInfo menuInfo) - { - menu.add(0, v.getId(), 0, "Delete"); - } - - @Override - public boolean onContextItemSelected(MenuItem item) - { - if (item.getTitle().equals("Delete")) { - AdapterContextMenuInfo info = - (AdapterContextMenuInfo) item.getMenuInfo(); - Credential cred = (Credential) getListAdapter().getItem(info.position); - String res = run("REMOVE_CRED " + cred.id); - if (res == null || !res.contains("OK")) { - Toast.makeText(this, "Failed to delete credential", - Toast.LENGTH_LONG).show(); - } else - mListAdapter.remove(cred); - return true; - } - return super.onContextItemSelected(item); - } - - @Override - protected void onListItemClick(ListView l, View v, int position, long id) - { - Credential item = (Credential) getListAdapter().getItem(position); - Toast.makeText(this, "Credential selected: " + item, - Toast.LENGTH_SHORT).show(); - } - - private String run(String cmd) - { - try { - Process proc = Runtime.getRuntime().exec(new String[]{"/system/bin/mksh-su", "-c", "wpa_cli " + cmd}); - BufferedReader reader = new BufferedReader(new InputStreamReader(proc.getInputStream())); - StringBuffer output = new StringBuffer(); - int read; - char[] buffer = new char[1024]; - while ((read = reader.read(buffer)) > 0) - output.append(buffer, 0, read); - reader.close(); - proc.waitFor(); - return output.toString(); - } catch (IOException e) { - Toast.makeText(this, "Could not run command", - Toast.LENGTH_LONG).show(); - return null; - } catch (InterruptedException e) { - throw new RuntimeException(e); - } - } - - private boolean set_cred(int id, String field, String value) - { - String res = run("SET_CRED " + id + " " + field + " " + value); - return res != null && res.contains("OK"); - } - - private boolean set_cred_quoted(int id, String field, String value) - { - String value2 = "'\"" + value + "\"'"; - return set_cred(id, field, value2); - } -} diff --git a/wpadebug/src/w1/fi/wpadebug/WpaCredEditActivity.java b/wpadebug/src/w1/fi/wpadebug/WpaCredEditActivity.java deleted file mode 100644 index 3f846c7b4e82..000000000000 --- a/wpadebug/src/w1/fi/wpadebug/WpaCredEditActivity.java +++ /dev/null @@ -1,55 +0,0 @@ -/* - * wpadebug - wpa_supplicant and Wi-Fi debugging app for Android - * Copyright (c) 2013, Jouni Malinen <j@w1.fi> - * - * This software may be distributed under the terms of the BSD license. - * See README for more details. - */ - -package w1.fi.wpadebug; - -import android.app.Activity; -import android.content.Intent; -import android.os.Bundle; -import android.view.View; -import android.widget.EditText; - -public class WpaCredEditActivity extends Activity -{ - @Override - public void onCreate(Bundle savedInstanceState) - { - super.onCreate(savedInstanceState); - setContentView(R.layout.cred_edit); - } - - public void credSave(View view) - { - Intent data = new Intent(); - EditText edit; - - edit = (EditText) findViewById(R.id.cred_edit_username); - data.putExtra("username", edit.getText().toString()); - - edit = (EditText) findViewById(R.id.cred_edit_realm); - data.putExtra("realm", edit.getText().toString()); - - edit = (EditText) findViewById(R.id.cred_edit_password); - data.putExtra("password", edit.getText().toString()); - - edit = (EditText) findViewById(R.id.cred_edit_domain); - data.putExtra("domain", edit.getText().toString()); - - edit = (EditText) findViewById(R.id.cred_edit_imsi); - data.putExtra("imsi", edit.getText().toString()); - - setResult(Activity.RESULT_OK, data); - finish(); - } - - public void credCancel(View view) - { - setResult(Activity.RESULT_CANCELED); - finish(); - } -} diff --git a/wpadebug/src/w1/fi/wpadebug/WpaNfcActivity.java b/wpadebug/src/w1/fi/wpadebug/WpaNfcActivity.java deleted file mode 100644 index 6a1601723b6a..000000000000 --- a/wpadebug/src/w1/fi/wpadebug/WpaNfcActivity.java +++ /dev/null @@ -1,131 +0,0 @@ -/* - * wpadebug - wpa_supplicant and Wi-Fi debugging app for Android - * Copyright (c) 2013, Jouni Malinen <j@w1.fi> - * - * This software may be distributed under the terms of the BSD license. - * See README for more details. - */ - -package w1.fi.wpadebug; - -import java.io.BufferedReader; -import java.io.InputStreamReader; -import java.io.IOException; - -import android.app.Activity; -import android.app.AlertDialog; -import android.os.Bundle; -import android.os.Parcelable; -import android.view.MenuItem; -import android.content.Intent; -import android.content.DialogInterface; -import android.widget.TextView; -import android.widget.Toast; -import android.text.method.ScrollingMovementMethod; -import android.util.Log; -import android.nfc.NdefMessage; -import android.nfc.NdefRecord; -import android.nfc.NfcAdapter; - -public class WpaNfcActivity extends Activity -{ - private static final String TAG = "wpadebug"; - - String byteArrayHex(byte[] a) { - StringBuilder sb = new StringBuilder(); - for (byte b: a) - sb.append(String.format("%02x", b)); - return sb.toString(); - } - - private void show_alert(String title, String message) - { - AlertDialog.Builder alert = new AlertDialog.Builder(this); - alert.setTitle(title); - alert.setMessage(message); - alert.setPositiveButton("OK", new DialogInterface.OnClickListener() { - public void onClick(DialogInterface dialog, int id) - { - finish(); - } - }); - alert.create().show(); - } - - private String wpaCmd(String cmd) - { - try { - Log.d(TAG, "Executing wpaCmd: " + cmd); - Process proc = Runtime.getRuntime().exec(new String[]{"/system/bin/mksh-su", "-c", "wpa_cli " + cmd}); - BufferedReader reader = new BufferedReader(new InputStreamReader(proc.getInputStream())); - StringBuffer output = new StringBuffer(); - int read; - char[] buffer = new char[1024]; - while ((read = reader.read(buffer)) > 0) - output.append(buffer, 0, read); - reader.close(); - proc.waitFor(); - Log.d(TAG, "External process completed - exitValue " + - proc.exitValue()); - return output.toString(); - } catch (IOException e) { - show_alert("Could not run external program", - "Execution of an external program failed. " + - "Maybe mksh-su was not installed."); - return null; - } catch (InterruptedException e) { - throw new RuntimeException(e); - } - } - - public boolean report_tag_read(byte[] payload) - { - String res = wpaCmd("WPS_NFC_TAG_READ " + byteArrayHex(payload)); - if (res == null) - return false; - if (!res.contains("OK")) { - Toast.makeText(this, "Failed to report WSC tag read to " + - "wpa_supplicant", Toast.LENGTH_LONG).show(); - } else { - Toast.makeText(this, "Reported WSC tag read to wpa_supplicant", - Toast.LENGTH_LONG).show(); - } - finish(); - return true; - } - - @Override - public void onCreate(Bundle savedInstanceState) - { - super.onCreate(savedInstanceState); - - Intent intent = getIntent(); - String action = intent.getAction(); - Log.d(TAG, "onCreate: action=" + action); - - if (NfcAdapter.ACTION_NDEF_DISCOVERED.equals(action)) { - Log.d(TAG, "NDEF discovered"); - Parcelable[] raw = intent.getParcelableArrayExtra(NfcAdapter.EXTRA_NDEF_MESSAGES); - if (raw != null) { - Log.d(TAG, "NDEF message count: " + raw.length); - NdefMessage[] msgs = new NdefMessage[raw.length]; - for (int i = 0; i < raw.length; i++) { - msgs[i] = (NdefMessage) raw[i]; - NdefRecord rec = msgs[i].getRecords()[0]; - Log.d(TAG, "MIME type: " + rec.toMimeType()); - byte[] a = rec.getPayload(); - Log.d(TAG, "NDEF record: " + byteArrayHex(a)); - if (rec.getTnf() == NdefRecord.TNF_MIME_MEDIA && - rec.toMimeType().equals("application/vnd/wfa.wsc")) { - Log.d(TAG, "WSC tag read"); - } - - if (!report_tag_read(a)) - return; - } - } - } - - finish(); - } -} diff --git a/wpadebug/src/w1/fi/wpadebug/WpaWebViewActivity.java b/wpadebug/src/w1/fi/wpadebug/WpaWebViewActivity.java deleted file mode 100644 index a7c54fc680c9..000000000000 --- a/wpadebug/src/w1/fi/wpadebug/WpaWebViewActivity.java +++ /dev/null @@ -1,146 +0,0 @@ -/* - * wpadebug - wpa_supplicant and Wi-Fi debugging app for Android - * Copyright (c) 2013, Jouni Malinen <j@w1.fi> - * - * This software may be distributed under the terms of the BSD license. - * See README for more details. - */ - -package w1.fi.wpadebug; - -import android.app.Activity; -import android.app.AlertDialog; -import android.content.DialogInterface; -import android.content.Intent; -import android.content.res.Configuration; -import android.net.http.SslError; -import android.os.Bundle; -import android.util.Log; -import android.view.Window; -import android.webkit.SslErrorHandler; -import android.webkit.WebChromeClient; -import android.webkit.WebView; -import android.webkit.WebViewClient; -import android.widget.Toast; - -public class WpaWebViewActivity extends Activity -{ - private static final String TAG = "wpadebug"; - private static final String EXTRA_MESSAGE = "w1.fi.wpadebug.URL"; - private WebView mWebView; - final Activity activity = this; - - @Override - public void onCreate(Bundle savedInstanceState) - { - Log.d(TAG, "WpaWebViewActivity::onCreate"); - super.onCreate(savedInstanceState); - - Intent intent = getIntent(); - String url = intent.getStringExtra(EXTRA_MESSAGE); - Log.d(TAG, "url=" + url); - if (url.equals("FINISH")) { - finish(); - return; - } - - mWebView = new WebView(this); - mWebView.getSettings().setJavaScriptEnabled(true); - mWebView.setWebViewClient(new WpaWebViewClient()); - - getWindow().requestFeature(Window.FEATURE_PROGRESS); - - mWebView.setWebChromeClient(new WebChromeClient() - { - public void onProgressChanged(WebView view, int progress) - { - Log.d(TAG, "progress=" + progress); - activity.setProgress(progress * 1000); - } - }); - - setContentView(mWebView); - - mWebView.loadUrl(url); - } - - @Override - public void onResume() - { - Log.d(TAG, "WpaWebViewActivity::onResume"); - super.onResume(); - } - - @Override - protected void onNewIntent(Intent intent) - { - Log.d(TAG, "WpaWebViewActivity::onNewIntent"); - super.onNewIntent(intent); - String url = intent.getStringExtra(EXTRA_MESSAGE); - Log.d(TAG, "url=" + url); - setIntent(intent); - if (url.equals("FINISH")) { - finish(); - return; - } - mWebView.loadUrl(url); - } - - private class WpaWebViewClient extends WebViewClient { - @Override - public boolean shouldOverrideUrlLoading(WebView view, String url) - { - Log.d(TAG, "shouldOverrideUrlLoading: url=" + url); - Intent intent = getIntent(); - intent.putExtra(EXTRA_MESSAGE, url); - - view.loadUrl(url); - return true; - } - - @Override - public void onPageFinished(WebView view, String url) - { - Log.d(TAG, "onPageFinished: url=" + url); - } - - public void onReceivedError(WebView view, int errorCode, - String description, String failingUrl) - { - Log.d(TAG, "Failed to load page: errorCode=" + - errorCode + " description=" + description + - " URL=" + failingUrl); - Toast.makeText(activity, "Failed to load page: " + - description + " (URL=" + failingUrl + ")", - Toast.LENGTH_LONG).show(); - } - - @Override - public void onReceivedSslError(WebView view, SslErrorHandler handler, - SslError error) - { - Log.d(TAG, "SSL error: " + error); - - final SslErrorHandler h = handler; - AlertDialog.Builder alert = new AlertDialog.Builder(activity); - alert.setTitle("SSL error - Continue?"); - alert.setMessage(error.toString()) - .setCancelable(false) - .setPositiveButton("Yes", new DialogInterface.OnClickListener() - { - public void onClick(DialogInterface dialog, int id) - { - h.proceed(); - } - }) - .setNegativeButton("No", new DialogInterface.OnClickListener() - { - public void onClick(DialogInterface dialog, int id) - { - h.cancel(); - } - }); - alert.show(); - } - } -} |
