From 3d9c3814a9eb3bd71f3d42e03cc88a762d6b289b Mon Sep 17 00:00:00 2001 From: Nathan Merrill Date: Thu, 17 May 2018 06:50:35 -0600 Subject: [PATCH] Added User-Agent to requests, fixed access to GV preferences, and fixed Intents being spoofed --- app/src/main/AndroidManifest.xml | 1 + .../behindthemath/xvoiceplus/XVoicePlus.java | 7 ++- .../xvoiceplus/gv/GoogleVoiceManager.java | 58 ++++++++++++------- .../hooks/GCMListenerServiceHook.java | 2 +- 4 files changed, 44 insertions(+), 24 deletions(-) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index f3de4c6..58c7db4 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -13,6 +13,7 @@ + retrieveMessages() throws Exception { // tokens! final String authToken = getAuthToken(); + try { + return Ion.with(mContext).load("https://www.google.com/voice/request/messages") + .userAgent("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.139 Safari/537.36") + .onHeaders(new GvHeadersCallback(mContext, authToken)) + .setHeader("Authorization", "GoogleLogin auth=" + authToken) + .as(Payload.class).get().conversations; - Payload payload = Ion.with(mContext).load("https://www.google.com/voice/request/messages") - .onHeaders(new GvHeadersCallback(mContext, authToken)) - .setHeader("Authorization", "GoogleLogin auth=" + authToken) - .as(Payload.class) - .get(); - - return payload.conversations; + } catch (Throwable e){ + Log.e(TAG, "Unable to retrieve messages: "+e.getMessage(), e); + throw e; + } } - + public static void invalidateToken(final Context context, final String account) { if (account == null) return; diff --git a/app/src/main/java/io/behindthemath/xvoiceplus/hooks/GCMListenerServiceHook.java b/app/src/main/java/io/behindthemath/xvoiceplus/hooks/GCMListenerServiceHook.java index 07fcf48..f897d48 100644 --- a/app/src/main/java/io/behindthemath/xvoiceplus/hooks/GCMListenerServiceHook.java +++ b/app/src/main/java/io/behindthemath/xvoiceplus/hooks/GCMListenerServiceHook.java @@ -101,7 +101,7 @@ private boolean verifyUserHash(final String userHash) { } final SharedPreferences gvSharedPrefs = new XSharedPreferences(LEGACY_GOOGLE_VOICE_PACKAGE); - final String registeredAccounts = gvSharedPrefs.getString("registered_accounts", null); + final String registeredAccounts = gvSharedPrefs.getString("accounts", null); if (registeredAccounts == null) { Log.e(TAG, "Error accessing registered_accounts from GV SharedPreferences"); return false;