[tor-commits] [orbot/master] add new Root utility for checking if root is possible
n8fr8 at torproject.org
n8fr8 at torproject.org
Fri Aug 23 20:59:49 UTC 2013
commit cea338dab26ad4df684f0eb5c7789ea8363a95cf
Author: Nathan Freitas <nathan at freitas.net>
Date: Tue Aug 20 13:26:04 2013 -0400
add new Root utility for checking if root is possible
---
src/org/torproject/android/service/Root.java | 107 ++++++++++++++++++++++++++
1 file changed, 107 insertions(+)
diff --git a/src/org/torproject/android/service/Root.java b/src/org/torproject/android/service/Root.java
new file mode 100644
index 0000000..d41b48c
--- /dev/null
+++ b/src/org/torproject/android/service/Root.java
@@ -0,0 +1,107 @@
+package org.torproject.android.service;
+
+import java.io.BufferedReader;
+import java.io.BufferedWriter;
+import java.io.File;
+import java.io.InputStreamReader;
+import java.io.OutputStreamWriter;
+import java.util.ArrayList;
+
+import org.torproject.android.service.ExecShell.SHELL_CMD;
+
+import android.util.Log;
+
+/**
+ * @author Kevin Kowalewski
+ *
+ */
+public class Root {
+
+ private static String LOG_TAG = Root.class.getName();
+
+ public boolean isDeviceRooted() {
+ if (checkRootMethod1()){return true;}
+ if (checkRootMethod2()){return true;}
+ if (checkRootMethod3()){return true;}
+ return false;
+ }
+
+ public boolean checkRootMethod1(){
+ String buildTags = android.os.Build.TAGS;
+
+ if (buildTags != null && buildTags.contains("test-keys")) {
+ return true;
+ }
+ return false;
+ }
+
+ public boolean checkRootMethod2(){
+ try {
+ File file = new File("/system/app/Superuser.apk");
+ if (file.exists()) {
+ return true;
+ }
+ } catch (Exception e) { }
+
+ return false;
+ }
+
+ public boolean checkRootMethod3() {
+ if (new ExecShell().executeCommand(SHELL_CMD.check_su_binary) != null){
+ return true;
+ }else{
+ return false;
+ }
+ }
+}
+
+
+/**
+ * @author Kevin Kowalewski
+ *
+ */
+class ExecShell {
+
+ private static String LOG_TAG = ExecShell.class.getName();
+
+ public static enum SHELL_CMD {
+ check_su_binary(new String[] {"/system/xbin/which","su"}),
+ ;
+
+ String[] command;
+
+ SHELL_CMD(String[] command){
+ this.command = command;
+ }
+ }
+
+ public ArrayList<String> executeCommand(SHELL_CMD shellCmd){
+ String line = null;
+ ArrayList<String> fullResponse = new ArrayList<String>();
+ Process localProcess = null;
+
+ try {
+ localProcess = Runtime.getRuntime().exec(shellCmd.command);
+ } catch (Exception e) {
+ return null;
+ //e.printStackTrace();
+ }
+
+ BufferedWriter out = new BufferedWriter(new OutputStreamWriter(localProcess.getOutputStream()));
+ BufferedReader in = new BufferedReader(new InputStreamReader(localProcess.getInputStream()));
+
+ try {
+ while ((line = in.readLine()) != null) {
+ Log.d(LOG_TAG, "--> Line received: " + line);
+ fullResponse.add(line);
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+
+ Log.d(LOG_TAG, "--> Full response was: " + fullResponse);
+
+ return fullResponse;
+ }
+
+}
\ No newline at end of file
More information about the tor-commits
mailing list