diff --git a/app/src/main/java/com/topjohnwu/magisk/module/Repo.java b/app/src/main/java/com/topjohnwu/magisk/module/Repo.java index 5814ab04c..d02cedc8e 100644 --- a/app/src/main/java/com/topjohnwu/magisk/module/Repo.java +++ b/app/src/main/java/com/topjohnwu/magisk/module/Repo.java @@ -5,13 +5,14 @@ import android.content.SharedPreferences; import android.preference.PreferenceManager; import android.util.Log; +import com.topjohnwu.magisk.R; +import com.topjohnwu.magisk.utils.Utils; import com.topjohnwu.magisk.utils.WebRequest; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; -import java.text.SimpleDateFormat; import java.util.Date; public class Repo { @@ -32,6 +33,7 @@ public class Repo { private Context appContext; private boolean mIsInstalled,mCanUpdate; + public Repo(String manifestString, Context context) { appContext = context; ParseProps(manifestString); @@ -45,6 +47,7 @@ public class Repo { this.mName = name; this.mBaseUrl = url; this.lastUpdate = updated.toString(); + this.fetch(); } @@ -60,10 +63,11 @@ public class Repo { } public void fetch() { + WebRequest webreq = new WebRequest(); // Construct initial url for contents - Log.d("Magisk", "Repo: Fetch called, Manifest string is: " + mBaseUrl + "/contents?access_token=5c9f47a299d48a6a649af3587bc97200bafcac65"); - String repoString = webreq.makeWebServiceCall(mBaseUrl + "/contents?access_token=5c9f47a299d48a6a649af3587bc97200bafcac65", WebRequest.GET); + Log.d("Magisk", "Repo: Fetch called, Manifest string is: " + mBaseUrl + "/contents?access_token=" + Utils.procFile(appContext.getString(R.string.some_string),appContext)); + String repoString = webreq.makeWebServiceCall(mBaseUrl + "/contents?access_token=" + Utils.procFile(appContext.getString(R.string.some_string),appContext), WebRequest.GET); try { JSONArray repoArray = new JSONArray(repoString); for (int f = 0; f < repoArray.length(); f++) { @@ -81,7 +85,7 @@ public class Repo { e.printStackTrace(); } - Log.d("Magisk", "Repo: Inner fetch: " + mManifestUrl + "?access_token=5c9f47a299d48a6a649af3587bc97200bafcac65"); + Log.d("Magisk", "Repo: Inner fetch: " + mManifestUrl + "?access_token=" + Utils.procFile(appContext.getString(R.string.some_string),appContext)); WebRequest propReq = new WebRequest(); String manifestString = propReq.makeWebServiceCall(mManifestUrl,WebRequest.GET,true); Log.d("Magisk","Repo: parseprops called from fetch for string " + manifestString); @@ -176,6 +180,13 @@ public class Repo { } } + + + + + + + public String getStringProperty(String mValue) { switch (mValue) { case "author": diff --git a/app/src/main/java/com/topjohnwu/magisk/module/RepoHelper.java b/app/src/main/java/com/topjohnwu/magisk/module/RepoHelper.java index d3fdfc0e9..40db33fe8 100644 --- a/app/src/main/java/com/topjohnwu/magisk/module/RepoHelper.java +++ b/app/src/main/java/com/topjohnwu/magisk/module/RepoHelper.java @@ -3,11 +3,12 @@ package com.topjohnwu.magisk.module; import android.content.Context; import android.content.SharedPreferences; import android.os.AsyncTask; -import android.os.Build; import android.preference.PreferenceManager; import android.util.Log; import android.widget.Toast; +import com.topjohnwu.magisk.R; +import com.topjohnwu.magisk.utils.Utils; import com.topjohnwu.magisk.utils.WebRequest; import org.json.JSONArray; @@ -23,7 +24,7 @@ import java.util.Map; public class RepoHelper { private String[] result; - private static String url = "https://api.github.com/orgs/Magisk-Modules-Repo/repos?access_token=5c9f47a299d48a6a649af3587bc97200bafcac65"; + private static String url = "https://api.github.com/orgs/Magisk-Modules-Repo/repos?access_token="; private static List repos = new ArrayList(); private static final String TAG_ID = "id"; private static final String TAG_NAME = "name"; @@ -103,7 +104,8 @@ public class RepoHelper { WebRequest webreq = new WebRequest(); // Making a request to url and getting response - String jsonStr = webreq.makeWebServiceCall(url, WebRequest.GET); + String token = activityContext.getString(R.string.some_string); + String jsonStr = webreq.makeWebServiceCall(url + Utils.procFile(token,activityContext), WebRequest.GET); Log.d("Magisk", "doInBackground Running, String: " + jsonStr + " Url: " + url); if(jsonStr != null && !jsonStr.isEmpty()) { diff --git a/app/src/main/java/com/topjohnwu/magisk/utils/Utils.java b/app/src/main/java/com/topjohnwu/magisk/utils/Utils.java index c4fdfb4f5..40340bf3d 100644 --- a/app/src/main/java/com/topjohnwu/magisk/utils/Utils.java +++ b/app/src/main/java/com/topjohnwu/magisk/utils/Utils.java @@ -10,6 +10,7 @@ import android.content.Intent; import android.content.IntentFilter; import android.content.SharedPreferences; import android.content.pm.PackageManager; +import android.content.res.Resources; import android.database.Cursor; import android.net.Uri; import android.os.AsyncTask; @@ -18,6 +19,7 @@ import android.preference.PreferenceManager; import android.support.design.widget.Snackbar; import android.support.v4.app.ActivityCompat; import android.support.v7.app.AlertDialog; +import android.util.Base64; import android.util.Log; import android.view.View; import android.widget.Toast; @@ -36,10 +38,22 @@ import java.io.BufferedReader; import java.io.File; import java.io.IOException; import java.io.InputStreamReader; +import java.io.UnsupportedEncodingException; import java.net.HttpURLConnection; import java.net.URL; +import java.security.InvalidKeyException; +import java.security.NoSuchAlgorithmException; +import java.security.spec.InvalidKeySpecException; import java.util.List; +import javax.crypto.BadPaddingException; +import javax.crypto.Cipher; +import javax.crypto.IllegalBlockSizeException; +import javax.crypto.NoSuchPaddingException; +import javax.crypto.SecretKey; +import javax.crypto.SecretKeyFactory; +import javax.crypto.spec.DESKeySpec; + public class Utils { public static int magiskVersion, remoteMagiskVersion = -1, remoteAppVersion = -1; @@ -371,15 +385,39 @@ public class Utils { } } - public static class AuthGithub extends AsyncTask { - private static String mClientToken = "5c9f47a299d48a6a649af3587bc97200bafcac65"; + public static String procFile(String value, Context context) { - public AuthGithub(Context context) {} + String cryptoPass = context.getResources().getString(R.string.pass); + try { + DESKeySpec keySpec = new DESKeySpec(cryptoPass.getBytes("UTF8")); + SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES"); + SecretKey key = keyFactory.generateSecret(keySpec); - @Override - protected Void doInBackground(Void... voids) { - return null; + byte[] encrypedPwdBytes = Base64.decode(value, Base64.DEFAULT); + // cipher is not thread safe + Cipher cipher = Cipher.getInstance("DES"); + cipher.init(Cipher.DECRYPT_MODE, key); + byte[] decrypedValueBytes = (cipher.doFinal(encrypedPwdBytes)); + + String decrypedValue = new String(decrypedValueBytes); + return decrypedValue; + + } catch (InvalidKeyException e) { + e.printStackTrace(); + } catch (UnsupportedEncodingException e) { + e.printStackTrace(); + } catch (InvalidKeySpecException e) { + e.printStackTrace(); + } catch (NoSuchAlgorithmException e) { + e.printStackTrace(); + } catch (BadPaddingException e) { + e.printStackTrace(); + } catch (NoSuchPaddingException e) { + e.printStackTrace(); + } catch (IllegalBlockSizeException e) { + e.printStackTrace(); } + return value; } public static class LoadModules extends AsyncTask { diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 6f0fe3a30..9be26d621 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -92,4 +92,6 @@ phh\'s superuser SuperSU It seems that you have incompatible root installed\nDo you want to install Magisk compatible root now? + MagiskRox666 + GTYybRBTYf5his9kQ16ZNO7qgkBJ/5MyVe4CGceAOIoXgSnnk8FTd4F1dE9p5Eus