diff --git a/.travis.yml b/.travis.yml index 61bbf4086ba913898d0bcf4d0f0755c17b2b1b1a..f72e7873891ba1d8de40296efe35d2cf7ee73964 100644 --- a/.travis.yml +++ b/.travis.yml @@ -77,3 +77,4 @@ addons: build_command_prepend: "./gradlew clean" build_command: "./gradlew build" branch_pattern: development + build_script_url: https://spideroak.com/share/IFEU2U2JINCA/GitHub/home/SecUpwN/SpiderOak/MISC/external/travisci_build_coverity_scan.sh diff --git a/CHANGELOG.md b/CHANGELOG.md index ce884f4d4c9cd13c2aa7071d054b814ab58706be..95b7e4915f80ec10b4cfe1a34d7d9cc4f22ef80c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,116 @@ # CHANGELOG of 'AIMSICD' ---------------------- +#### [05.07.2015 - WIP-Release v0.1.31-alpha-build-00](https://github.com/SecUpwN/Android-IMSI-Catcher-Detector/releases/tag/v0.1.31-alpha-b00) + +* Removed: Commented out unused imports and re-ordered variable declarations +* Updated: Shortened badge of `Development Status` in `README` for better display +* Added: More clarifying code co´mments in `CellTracker.java` + +#### 05.07.2015 - WIP-Internal v0.1.30-alpha-build-16 + +* Fixed: Cleanup of timestamp code in `MiscUtils.java` +* Fixed: AIMSICD Status-Icons are now shown correctly in colored style on Android 5+ + + +--- + +#### 04.07.2015 - WIP-Internal v0.1.30-alpha-build-14 + +* Added: New Log items for MCC and MNC parameters when downloading OCID for debugging +* Fixed: Reformatted 23 char limitation of Log TAG with our standard TAG, mTAG + "text" +* Fixed: Corrected MiscUtils TAGs and nulls in CellTracker and improved some formatting +* Fixed: Silenced even more XPrivacy logcat spam in DebugLogs + +--- + +#### 03.07.2015 - WIP-Internal v0.1.30-alpha-build-13 + +* Fixed: Comments in `RequestTask.java` have been fixed to reflect code changes +* Fixed: Silenced some spammy XPrivacy items using: `XPrivacy/XRuntime:S Xposed:S` + +--- + +#### 03.07.2015 - WIP-Internal v0.1.30-alpha-build-12 + +* Added: Weblate translations badge added to our `README` for people to see progress +* Fixed: AIMSICD should now start again properly on previously complaining devices + +--- + +#### 03.07.2015 - WIP-Internal v0.1.30-alpha-build-11 + +* Updated: `CREDITS` now reflect the latest awesome additions by our new developers +* Fixed: Small string fixes and translation improvements to move our new [Weblate](https://hosted.weblate.org/projects/aimsicd/strings/). + +--- + +#### 03.07.2015 - WIP-Internal v0.1.30-alpha-build-10 + +* Fixed: Now truncating measured and used Lat/Lon GPS coordinates in `LocationTracker` + +--- + +#### 27.06.2015 - WIP-Internal v0.1.30-alpha-build-09 + +* Changed: Timeout value in `RequestTask.java` has been increased to 80 seconds +* Fixed: Repaired OCIDCSV parsing which obviously temporarily broke during development + +--- + +#### 27.06.2015 - WIP-Internal v0.1.30-alpha-build-08 + +* Added: Buildozer Buildnumber to has been added to About View for development builds + +--- + +#### 26.06.2015 - WIP-Internal v0.1.30-alpha-build-07 + +* Changed: mTAG has been changed as requested to `SamsungMulticlientRilExecutor` +* Added: Small warning within code to not remove commented out stuff without prior asking + +--- + +#### 25.06.2015 - WIP-Internal v0.1.30-alpha-build-06 + +* Updated: Log calls updated to common TAGs, added doublepoints and removed whitespaces + +--- + +#### 25.06.2015 - WIP-Internal v0.1.30-alpha-build-05 + +* Changed: Customized build script in `.travis.yml` to override CoverityScan limits +* Changed: Made toast property static and non-final, splitting toast creation for `msgShort` +* Removed: Commented out `LeakCanary` until this libray has reived some code improvemens +* Fixed: Toasts are now displayed in the ccorrect position and duration to really read them + +--- + +#### 24.06.2015 - WIP-Internal v0.1.30-alpha-build-04 + +* Added: Toasts are now being cancelled on new toast to prevent overapping of toasts + +--- + +#### 24.06.2015 - WIP-Internal v0.1.30-alpha-build-03 + +* Fixed: Info box toasts are now shown longer by adding a new singleton toaster + +--- + +#### 23.06.2015 - WIP-Internal v0.1.30-alpha-build-02 + +* Changed: Context property changed to `appContext` in `DrawerMenuAdapter.java` +* Removed: Purged `this` prefix of `appContext` as it is not needed anymore + +--- + +#### 23.06.2015 - WIP-Internal v0.1.30-alpha-build-01 + +* Changed: Help toast has been changed to long toast in `DrawerMenuAdapter.java` + +--- + #### [21.06.2015 - WIP-Release v0.1.30-alpha-build-00](https://github.com/SecUpwN/Android-IMSI-Catcher-Detector/releases/tag/v0.1.30-alpha-b00) * Updated: Refactored OpenCellId activity for better code quality and error handling diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 0c1270fe6bd639e3aaec83b2eaa42797cddd2482..f9d8982643e24645bf35e14faaa6001c488485a8 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -23,11 +23,9 @@ Feel invited to develop with us using these steps: Let our app start up in your native language! -* Copy file [translatable_strings.xml](https://github.com/SecUpwN/Android-IMSI-Catcher-Detector/raw/development/app/src/main/res/values/translatable_strings.xml) into your values-[code](https://en.wikipedia.org/wiki/ISO_639-1) folder. -* Example: `app/src/main/res/values-de/translatable_strings.xml` -* Translate the xml-file with an Editor, Android Studio or IntelliJ IDEA. -6. Increase the build number `*-alpha-bXX` in `android:versionName`. -7. Test your changes and submit a [pull request](https://help.github.com/articles/using-pull-requests/) when we shall add it. +* See [our translations](https://hosted.weblate.org/projects/aimsicd/strings/) and login via [GitHub](https://hosted.weblate.org/accounts/login/github/?next=/projects/aimsicd/strings/) or [others](https://hosted.weblate.org/accounts/login/?next=/projects/aimsicd/strings/) to add yours. +* When translating, keep small device screens in mind. Shorten it. +* Translations will be pulled into our GitHub automatically. Enjoy! --- diff --git a/README.md b/README.md index e0cc78a8bc014d5c23b0516a6d70a42655de2e70..ae1930cef74de263771960cb267a38061bbc75d1 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ ### Android IMSI-Catcher Detector -[](https://travis-ci.org/SecUpwN/Android-IMSI-Catcher-Detector) [](https://github.com/SecUpwN/Android-IMSI-Catcher-Detector/wiki/Development-Status) [](https://scan.coverity.com/projects/3346) +[](https://travis-ci.org/SecUpwN/Android-IMSI-Catcher-Detector) [](https://github.com/SecUpwN/Android-IMSI-Catcher-Detector/wiki/Development-Status) [](https://scan.coverity.com/projects/3346) [](https://hosted.weblate.org/projects/aimsicd/strings/) [](https://www.bountysource.com/teams/android-imsi-catcher-detector/issues?utm_source=Android%20IMSI-Catcher%20Detector&utm_medium=shield&utm_campaign=bounties_received) -- diff --git a/app/build.gradle b/app/build.gradle index 7fdda084ca43e9661cacd383e229bfe7adadf5e1..7e67085668742a14533b14345bc9062296a6d96d 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -56,9 +56,15 @@ android { } catch (MissingPropertyException e) { buildConfigField 'String', 'OPEN_CELLID_API_KEY', '"NA"' } + try { + buildConfigField 'String', 'BUILDOZER_BUILDNUMBER', '\"' + System.getenv("BUILDOZER_BUILDNUMBER") + '\"' + } catch (MissingPropertyException e) { + buildConfigField 'String', 'BUILDOZER_BUILDNUMBER', '"NA"' + } } release { buildConfigField 'String', 'OPEN_CELLID_API_KEY', '"NA"' + buildConfigField 'String', 'BUILDOZER_BUILDNUMBER', '"NA"' minifyEnabled true proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt' } @@ -125,6 +131,7 @@ android { } dependencies { + // DO NOT REMOVE BELOW COMMENTED-OUT CODE BEFORE ASKING! //compile 'com.github.amlcurran.showcaseview:library:5.0.0' //compile 'com.android.support:appcompat-v7:22.1.1' //https://github.com/lp0/slf4j-android @@ -140,6 +147,6 @@ dependencies { compile 'com.nineoldandroids:library:2.4.0' compile 'org.apache.commons:commons-lang3:3.3.2' compile 'com.google.code.gson:gson:2.2.4' - debugCompile 'com.squareup.leakcanary:leakcanary-android:1.3.1' - releaseCompile 'com.squareup.leakcanary:leakcanary-android-no-op:1.3.1' -} + //debugCompile 'com.squareup.leakcanary:leakcanary-android:1.3.1' + //releaseCompile 'com.squareup.leakcanary:leakcanary-android-no-op:1.3.1' +} \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 4f5a1f007cb257f8ab8d11c886119f0fa951dfa9..65dfea919a32cdc27c9a013712d1a38aa51be316 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.SecUpwN.AIMSICD" - android:versionCode="30" - android:versionName="0.1.30-alpha-b00"> + android:versionCode="31" + android:versionName="0.1.31-alpha-b00"> <!-- If we ever wanna make this a system app, we can add the following 2 lines above: coreApp="true" @@ -204,4 +204,4 @@ </activity> </application> -</manifest> +</manifest> \ No newline at end of file diff --git a/app/src/main/assets/CREDITS b/app/src/main/assets/CREDITS index 11489811b50c82a8dab289d888c1c46394d63dea..cde095e5c0d9fe18cabc83ad59b7f00451e81fda 100644 --- a/app/src/main/assets/CREDITS +++ b/app/src/main/assets/CREDITS @@ -221,4 +221,10 @@ for OCID improvements and code fixes.\n \n Willem van Engen\n https://github.com/wvengen\n -for improving database imports. \ No newline at end of file +for improving database imports.\n +\n +Daniel Jäger\n +https://github.com/DJaeger\n +for your unbelievable endurance\n +and all the lovely coding. THANK YOU!\n +\n \ No newline at end of file diff --git a/app/src/main/java/com/SecUpwN/AIMSICD/AppAIMSICD.java b/app/src/main/java/com/SecUpwN/AIMSICD/AppAIMSICD.java index f1227352a4f54c7dd75f1ba0722c362af3263df7..294c7815816758b161530c90c6bfc35eb4e2738e 100644 --- a/app/src/main/java/com/SecUpwN/AIMSICD/AppAIMSICD.java +++ b/app/src/main/java/com/SecUpwN/AIMSICD/AppAIMSICD.java @@ -14,13 +14,15 @@ import android.util.SparseArray; import com.SecUpwN.AIMSICD.constants.TinyDbKeys; import com.SecUpwN.AIMSICD.utils.BaseAsyncTask; import com.SecUpwN.AIMSICD.utils.TinyDB; -import com.squareup.leakcanary.LeakCanary; +// DO NOT REMOVE BELOW COMMENTED-OUT CODE BEFORE ASKING! +//import com.squareup.leakcanary.LeakCanary; import java.util.ArrayList; import java.util.List; public class AppAIMSICD extends Application { - final static String TAG = "AppAIMSICD"; + final static String TAG = "AIMSICD"; + final static String mTAG = "AppAIMSICD"; /** * Maps between an activity class name and the list of currently running @@ -35,7 +37,8 @@ public class AppAIMSICD extends Application { @Override public void onCreate() { super.onCreate(); - LeakCanary.install(this); + // DO NOT REMOVE BELOW COMMENTED-OUT CODE BEFORE ASKING! + //LeakCanary.install(this); TinyDB.getInstance().init(getApplicationContext()); TinyDB.getInstance().putBoolean(TinyDbKeys.FINISHED_LOAD_IN_MAP, true); } @@ -49,7 +52,7 @@ public class AppAIMSICD extends Application { if (lTask.equals(pTask)) { tasks.remove(lTask); if (BuildConfig.DEBUG) { - Log.v(TAG, "BaseTask removed:" + pTask.toString()); + Log.v(TAG, mTAG + ": BaseTask removed:" + pTask.toString()); } break; } @@ -66,7 +69,7 @@ public class AppAIMSICD extends Application { return; } if (BuildConfig.DEBUG) { - Log.d(TAG, "BaseTask addTask activity:" + activity.getClass().getCanonicalName()); + Log.d(TAG, mTAG + ": BaseTask addTask activity:" + activity.getClass().getCanonicalName()); } int key = activity.getClass().getCanonicalName().hashCode(); List<BaseAsyncTask<?, ?, ?>> tasks = mActivityTaskMap.get(key); @@ -75,7 +78,7 @@ public class AppAIMSICD extends Application { mActivityTaskMap.put(key, tasks); } if (BuildConfig.DEBUG) { - Log.v(TAG, "BaseTask added:" + pTask.toString()); + Log.v(TAG, mTAG + ": BaseTask added:" + pTask.toString()); } tasks.add(pTask); } @@ -85,7 +88,7 @@ public class AppAIMSICD extends Application { return; } if (BuildConfig.DEBUG) { - Log.d(TAG, "BaseTask detach:" + activity.getClass().getCanonicalName()); + Log.d(TAG, mTAG + ": BaseTask detach:" + activity.getClass().getCanonicalName()); } List<BaseAsyncTask<?, ?, ?>> tasks = mActivityTaskMap.get(activity.getClass().getCanonicalName().hashCode()); @@ -101,7 +104,7 @@ public class AppAIMSICD extends Application { return; } if (BuildConfig.DEBUG) { - Log.d(TAG, "BaseTask attach:" + activity.getClass().getCanonicalName()); + Log.d(TAG, mTAG + ": BaseTask attach:" + activity.getClass().getCanonicalName()); } List<BaseAsyncTask<?, ?, ?>> tasks = mActivityTaskMap.get(activity.getClass().getCanonicalName().hashCode()); if (tasks != null) { @@ -110,5 +113,4 @@ public class AppAIMSICD extends Application { } } } -} - +} \ No newline at end of file diff --git a/app/src/main/java/com/SecUpwN/AIMSICD/activities/BaseActivity.java b/app/src/main/java/com/SecUpwN/AIMSICD/activities/BaseActivity.java index 04524a0fbee4463e8359d03e5b4b1a1f10d2c4f6..f37a778162a284e0b80651cf48eab97b0fe717cb 100644 --- a/app/src/main/java/com/SecUpwN/AIMSICD/activities/BaseActivity.java +++ b/app/src/main/java/com/SecUpwN/AIMSICD/activities/BaseActivity.java @@ -25,7 +25,9 @@ import com.SecUpwN.AIMSICD.utils.Status; * @author Tor Henning Ueland */ public class BaseActivity extends FragmentActivity { - private static String TAG = "BaseActivity"; + private static final String TAG = "AIMSICD"; + private static final String mTAG = "BaseActivity"; + /** * Triggered when GUI is opened @@ -33,7 +35,7 @@ public class BaseActivity extends FragmentActivity { @Override protected void onResume() { super.onResume(); - Log.d(TAG, "StatusWatcher starting watching"); + Log.d(TAG, mTAG + ": StatusWatcher starting watching"); LocalBroadcastManager.getInstance(this).registerReceiver(mMessageReceiver, new IntentFilter("StatusChange")); updateIcon(this); @@ -45,7 +47,7 @@ public class BaseActivity extends FragmentActivity { private BroadcastReceiver mMessageReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { - Log.d(TAG, "StatusWatcher received status change to " + Status.getStatus().name()+", updating icon"); + Log.d(TAG, mTAG + ": StatusWatcher received status change to " + Status.getStatus().name()+", updating icon"); updateIcon(context); } }; @@ -69,7 +71,7 @@ public class BaseActivity extends FragmentActivity { @Override protected void onPause() { super.onPause(); - Log.d(TAG, "StatusWatcher stopped watching"); + Log.d(TAG, mTAG + ": StatusWatcher stopped watching"); LocalBroadcastManager.getInstance(this).unregisterReceiver(mMessageReceiver); } } diff --git a/app/src/main/java/com/SecUpwN/AIMSICD/activities/DebugLogs.java b/app/src/main/java/com/SecUpwN/AIMSICD/activities/DebugLogs.java index 8d20a81ed1cb8591ef9f39833e11a5c58a57d0d6..d742cb4aa97f41f5edbec2c8ae15b9923a57cc5d 100644 --- a/app/src/main/java/com/SecUpwN/AIMSICD/activities/DebugLogs.java +++ b/app/src/main/java/com/SecUpwN/AIMSICD/activities/DebugLogs.java @@ -46,6 +46,8 @@ import java.io.InputStreamReader; * but never implemented here. We need to add the buffer selector button * to the top bar, next to email icon button. ** * + * TODO: [ ] We should add an XPrivacy button (or automatic) to add XPrivacy filters when used. + * * ChangeLog: * * 2015-01-27 E:V:A Added "getprop|sort" info to log. @@ -53,11 +55,16 @@ import java.io.InputStreamReader; * 2015-02-11 E:V:A Increased to 500 lines and removed "-d" and * incl. radio log, but not working. Permission problem? * 2015-02-24 E:V:A Silent some spam logs on HTC devices. + * 2015-07-03 E:V:A Silent some spam logs from the XPosed framework * */ public class DebugLogs extends BaseActivity { + + private static final String TAG = "AIMSICD"; + private static final String mTAG = "DebugLogs"; + private LogUpdaterThread logUpdater = null; private boolean updateLogs = true; private boolean isRadioLogs = true; // Including this, should be a toggle. @@ -95,7 +102,7 @@ public class DebugLogs extends BaseActivity { clearLogs(); //Log.d("DebugLogs", "Logcat clearing disabled!"); } catch (Exception e) { - Log.e("AIMSICD", "DebugLogs: Error clearing logs", e); + Log.e(TAG, mTAG + ": Error clearing logs", e); } } }); @@ -158,7 +165,7 @@ public class DebugLogs extends BaseActivity { logUpdater = new LogUpdaterThread(); logUpdater.start(); } catch (Exception e) { - Log.e("AIMSICD", "DebugLogs: Error starting log updater thread", e); + Log.e(TAG, mTAG + ": Error starting log updater thread", e); } btnStop.setText(getString(R.string.btn_stop_logs)); } @@ -211,7 +218,7 @@ public class DebugLogs extends BaseActivity { intent.putExtra(Intent.EXTRA_TEXT, log); startActivity(Intent.createChooser(intent, "Send Error Log")); } catch (IOException e) { - Log.e("AIMSICD", "DebugLogs: Error reading logs", e); + Log.e(TAG, mTAG + ": Error reading logs", e); } } }.start(); @@ -241,6 +248,8 @@ public class DebugLogs extends BaseActivity { * 4) Need to silent some Qualcomm GPS: " LocSvc_eng:S LocSvc_adapter:S LocSvc_afw:S" * 5) "-d" is not necessary when using "-t". * 6) Need to silent some spammy HTC's: "QC-QMI:S AudioPolicyManager:S" + * 7) Need to silent some spammy XPrivacy items: "XPrivacy/XRuntime:S Xposed:S" + * 8) Need to silent even more XPrivacy items: "XPrivacy/XTelephonyManager:S XPrivacy/XLocationManager:S XPrivacy/XPackageManager:S" * */ private String getLogs() throws IOException { @@ -249,7 +258,9 @@ public class DebugLogs extends BaseActivity { (isRadioLogs ? " -b radio RILQ:S" : "") + " AbsListView:S PackageInfo:S" + " LocSvc_eng:S LocSvc_adapter:S LocSvc_afw:S" + - " QC-QMI:S AudioPolicyManager:S" + " *:D" + " QC-QMI:S AudioPolicyManager:S" + + " XPrivacy/XRuntime:S Xposed:S" + + " XPrivacy/XTelephonyManager:S XPrivacy/XLocationManager:S XPrivacy/XPackageManager:S" + " *:D" ); } @@ -296,7 +307,7 @@ public class DebugLogs extends BaseActivity { try { Runtime.getRuntime().exec("logcat -c -b main -b system -b radio -b events"); } catch (Exception e) { - Log.e("AIMSICD", "DebugLogs: Error clearing logs", e); + Log.e(TAG, mTAG + ": Error clearing logs", e); } runOnUiThread(new Runnable() { @@ -335,7 +346,7 @@ public class DebugLogs extends BaseActivity { }); } } catch (Exception e) { - Log.e("AIMSICD", "DebugLogs: Error updating logs", e); + Log.e(TAG, mTAG + ": Error updating logs", e); } try { Thread.sleep(1000); } catch (Exception e) {} } diff --git a/app/src/main/java/com/SecUpwN/AIMSICD/activities/PrefActivity.java b/app/src/main/java/com/SecUpwN/AIMSICD/activities/PrefActivity.java index 485a718c938316158f8e3c9039d0522622536695..fec4c70214770456ade4564af9cbab751421613d 100644 --- a/app/src/main/java/com/SecUpwN/AIMSICD/activities/PrefActivity.java +++ b/app/src/main/java/com/SecUpwN/AIMSICD/activities/PrefActivity.java @@ -33,4 +33,4 @@ public class PrefActivity extends BaseActivity { fragmentTransaction.replace(android.R.id.content, settingsFragment); fragmentTransaction.commit(); } -} +} \ No newline at end of file diff --git a/app/src/main/java/com/SecUpwN/AIMSICD/adapters/AIMSICDDbAdapter.java b/app/src/main/java/com/SecUpwN/AIMSICD/adapters/AIMSICDDbAdapter.java index 1e77e09cc050914bd291895698d5c4748f9fbab0..3b12b6904621dc50a0cd2f9bbf63a7052ad4a67d 100644 --- a/app/src/main/java/com/SecUpwN/AIMSICD/adapters/AIMSICDDbAdapter.java +++ b/app/src/main/java/com/SecUpwN/AIMSICD/adapters/AIMSICDDbAdapter.java @@ -1417,7 +1417,7 @@ public class AIMSICDDbAdapter { // Make sure it has a location index. Separate connection to avoid locking issues. // TODO this can take a while the first time, provide UI feedback SQLiteDatabase ladb = SQLiteDatabase.openDatabase(LACELLS_DB_NAME, null, 0); - String LACELLS_TABLE_CREATE = "CREATE TABLE " + + String LACELLS_TABLE_CREATE = "CREATE TABLE IF NOT EXISTS " + LACELLS_TABLE + " (" + COLUMN_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " + "Lac INTEGER, CellID INTEGER, " + diff --git a/app/src/main/java/com/SecUpwN/AIMSICD/adapters/DrawerMenuAdapter.java b/app/src/main/java/com/SecUpwN/AIMSICD/adapters/DrawerMenuAdapter.java index b100eace4d6d16adb5e029144cdd0d96bd4b9096..975088304b54ea12945afe9e5bcd8ce560537eb2 100644 --- a/app/src/main/java/com/SecUpwN/AIMSICD/adapters/DrawerMenuAdapter.java +++ b/app/src/main/java/com/SecUpwN/AIMSICD/adapters/DrawerMenuAdapter.java @@ -15,13 +15,13 @@ import android.view.animation.AnimationUtils; import android.widget.ArrayAdapter; import android.widget.ImageView; import android.widget.TextView; -import android.widget.Toast; import com.SecUpwN.AIMSICD.R; import com.SecUpwN.AIMSICD.constants.DrawerMenu; import com.SecUpwN.AIMSICD.drawer.DrawerMenuItem; import com.SecUpwN.AIMSICD.drawer.DrawerMenuSection; import com.SecUpwN.AIMSICD.drawer.NavDrawerItem; +import com.SecUpwN.AIMSICD.utils.Helpers; import java.util.List; @@ -29,16 +29,16 @@ public class DrawerMenuAdapter extends ArrayAdapter<NavDrawerItem> { private final LayoutInflater inflater; private final View.OnClickListener mInfoButtonListener; - private final Toast mToast; private final Animation mBounceHelpButtonAnimation; - + private static Context appContext; + @SuppressLint("ShowToast") public DrawerMenuAdapter(Context context, int textViewResourceId, List<NavDrawerItem> objects ) { super(context, textViewResourceId, objects); inflater = LayoutInflater.from(context); + appContext = context.getApplicationContext(); - mToast = Toast.makeText(context.getApplicationContext(), "", Toast.LENGTH_LONG); mInfoButtonListener = new View.OnClickListener() { @Override public void onClick(View pView) { @@ -47,12 +47,11 @@ public class DrawerMenuAdapter extends ArrayAdapter<NavDrawerItem> { showHelpToast((Integer) pView.getTag()); } }; - mBounceHelpButtonAnimation = AnimationUtils.loadAnimation(context.getApplicationContext(), R.anim.action_button_help); + mBounceHelpButtonAnimation = AnimationUtils.loadAnimation(appContext, R.anim.action_button_help); } private void showHelpToast(Integer pToastValueId) { - mToast.setText(getContext().getString(pToastValueId)); - mToast.show(); + Helpers.msgLong(appContext, appContext.getString(pToastValueId)); } @Override diff --git a/app/src/main/java/com/SecUpwN/AIMSICD/fragments/AboutFragment.java b/app/src/main/java/com/SecUpwN/AIMSICD/fragments/AboutFragment.java index 83dff41c71dc8acd4704c1b4ecd249030efc4338..76b0e25fe1349870462edf828adbde4c229ea802 100644 --- a/app/src/main/java/com/SecUpwN/AIMSICD/fragments/AboutFragment.java +++ b/app/src/main/java/com/SecUpwN/AIMSICD/fragments/AboutFragment.java @@ -20,6 +20,7 @@ import android.widget.Button; import android.widget.TextView; import com.SecUpwN.AIMSICD.R; +import com.SecUpwN.AIMSICD.BuildConfig; import com.SecUpwN.AIMSICD.activities.CreditsRollActivity; import com.SecUpwN.AIMSICD.utils.MiscUtils; @@ -33,6 +34,7 @@ public class AboutFragment extends Fragment { View v = inflater.inflate(R.layout.about_fragment, container, false); String version; + String BUILDOZER_BUILDNUMBER; btncredits = (Button) v.findViewById(R.id.aimsicd_credits_link); PackageManager manager = mContext.getPackageManager(); @@ -44,12 +46,24 @@ public class AboutFragment extends Fragment { //Woops something went wrong?? version = ""; } + + BUILDOZER_BUILDNUMBER = BuildConfig.BUILDOZER_BUILDNUMBER; + if (BUILDOZER_BUILDNUMBER == null) { + BUILDOZER_BUILDNUMBER = "NA"; // avoid null buildnumber + } TextView versionNumber; + TextView BuildozerView; if (v != null) { versionNumber = (TextView) v.findViewById(R.id.aimsicd_version); versionNumber.setText(getString(R.string.app_version) + version); + if(BUILDOZER_BUILDNUMBER != "NA") { + BuildozerView = (TextView) v.findViewById(R.id.buildozer_buildnumber); + BuildozerView.setText(getString(R.string.buildozer_buildnumber) + BUILDOZER_BUILDNUMBER); + BuildozerView.setVisibility(View.VISIBLE); + } + //Status icons link View tv = v.findViewById(R.id.aimsicd_status_icons); //setLink(tv, R.string.status_icons_link); @@ -183,4 +197,4 @@ public class AboutFragment extends Fragment { } -} +} \ No newline at end of file diff --git a/app/src/main/java/com/SecUpwN/AIMSICD/fragments/PrefFragment.java b/app/src/main/java/com/SecUpwN/AIMSICD/fragments/PrefFragment.java index 3b738db29cc6c68622c6918af59f34da7c71c7d4..872b05054fe7a86b2b374a42f0302482161be132 100644 --- a/app/src/main/java/com/SecUpwN/AIMSICD/fragments/PrefFragment.java +++ b/app/src/main/java/com/SecUpwN/AIMSICD/fragments/PrefFragment.java @@ -18,4 +18,4 @@ public class PrefFragment extends PreferenceFragment { addPreferencesFromResource(R.xml.preferences); } -} +} \ No newline at end of file diff --git a/app/src/main/java/com/SecUpwN/AIMSICD/rilexecutor/RilExecutor.java b/app/src/main/java/com/SecUpwN/AIMSICD/rilexecutor/RilExecutor.java index 5bca9c8dc2f642ccf682cd6b18e3e8623af185f1..116be4955cd0033f2636b10f54f53b920fb9c689 100644 --- a/app/src/main/java/com/SecUpwN/AIMSICD/rilexecutor/RilExecutor.java +++ b/app/src/main/java/com/SecUpwN/AIMSICD/rilexecutor/RilExecutor.java @@ -27,7 +27,9 @@ import java.util.Queue; * Class to handle Ril and Samsung MultiRil implementation. Used by the Aimsicd Service. */ public class RilExecutor { - public static final String TAG = "MultiRil"; + protected static final String TAG = "AIMSICD"; + protected static final String mTAG = "RilExecutor"; + public boolean mMultiRilCompatible; /* @@ -76,7 +78,7 @@ public class RilExecutor { mRilExecutorDetectResult = mRequestExecutor.detect(); if (!mRilExecutorDetectResult.available) { mMultiRilCompatible = false; - Log.e(TAG, "Samsung Multiclient RIL not available: " + mRilExecutorDetectResult.error); + Log.e(TAG, mTAG + ": Samsung Multiclient RIL not available: " + mRilExecutorDetectResult.error); mRequestExecutor = null; } else { mRequestExecutor.start(); @@ -142,7 +144,7 @@ public class RilExecutor { subtype, keySeqence).sendToTarget(); if (!mRequestCondvar.block(timeout)) { - Log.e(TAG, "request timeout"); + Log.e(TAG, mTAG + ": request timeout"); return Collections.emptyList(); } else { synchronized (mLastResponseLock) { @@ -248,15 +250,15 @@ public class RilExecutor { try { RawResult result = (RawResult) msg.obj; if (result == null) { - Log.e(TAG, "result is null"); + Log.e(TAG, mTAG + ": result is null"); break; } if (result.exception != null) { - Log.e(TAG, "", result.exception); + Log.e(TAG, mTAG + ": ", result.exception); break; } if (result.result == null) { - Log.v(TAG, "No need to refresh."); + Log.v(TAG, mTAG + ": No need to refresh."); break; } if (lastKeyStep.captureResponse) { @@ -286,4 +288,4 @@ public class RilExecutor { return true; } } -} +} \ No newline at end of file diff --git a/app/src/main/java/com/SecUpwN/AIMSICD/rilexecutor/SamsungMulticlientRilExecutor.java b/app/src/main/java/com/SecUpwN/AIMSICD/rilexecutor/SamsungMulticlientRilExecutor.java index 2987d9bf8d177f395e2958750af769fe348c5c5a..68c83378501046b28266c75caf281fd6231833ff 100644 --- a/app/src/main/java/com/SecUpwN/AIMSICD/rilexecutor/SamsungMulticlientRilExecutor.java +++ b/app/src/main/java/com/SecUpwN/AIMSICD/rilexecutor/SamsungMulticlientRilExecutor.java @@ -57,8 +57,9 @@ public class SamsungMulticlientRilExecutor implements OemRilExecutor { // private static final boolean DBG = BuildConfig.DEBUG; private static final boolean DBG = false; - // TODO: EVA: We should add AIMSICD to this TAG - private static final String TAG = SamsungMulticlientRilExecutor.class.getSimpleName(); + private static final String TAG = "AIMSICD"; + private static final String mTAG = "SamsungMulticlientRilExecutor"; + private volatile LocalSocketThread mThread; public SamsungMulticlientRilExecutor() { @@ -104,7 +105,7 @@ public class SamsungMulticlientRilExecutor implements OemRilExecutor { @Override public synchronized void start() { if (mThread != null) { - Log.e(TAG, "OEM raw request executor thread is running"); + Log.e(TAG, mTAG + ": OEM raw request executor thread is running"); return; } mThread = new LocalSocketThread(MULTICLIENT_SOCKET); @@ -114,7 +115,7 @@ public class SamsungMulticlientRilExecutor implements OemRilExecutor { @Override public synchronized void stop() { if (mThread == null) { - Log.e(TAG, "OEM raw request executor thread is not running"); + Log.e(TAG, mTAG + ": OEM raw request executor thread is not running"); return; } mThread.cancel(); @@ -124,26 +125,26 @@ public class SamsungMulticlientRilExecutor implements OemRilExecutor { @Override public synchronized void invokeOemRilRequestRaw(byte[] data, Message response) { if (mThread == null) { - Log.e(TAG, "OEM raw request executor thread is not running"); + Log.e(TAG, mTAG + ": OEM raw request executor thread is not running"); return; } try { mThread.invokeOemRilRequestRaw(data, response); } catch (IOException ioe) { - Log.e(TAG, "invokeOemRilRequestRaw() error", ioe); + Log.e(TAG, mTAG + ": invokeOemRilRequestRaw() error", ioe); } } @Override public synchronized void invokeOemRilRequestStrings(String[] strings, Message response) { if (mThread == null) { - Log.e(TAG, "OEM raw request executor thread is not running"); + Log.e(TAG, mTAG + ": OEM raw request executor thread is not running"); return; } try { mThread.invokeOemRilRequestStrings(strings, response); } catch (IOException ioe) { - Log.e(TAG, "invokeOemRilRequestStrings() error", ioe); + Log.e(TAG, mTAG + ": invokeOemRilRequestStrings() error", ioe); } } @@ -168,7 +169,7 @@ public class SamsungMulticlientRilExecutor implements OemRilExecutor { public void cancel() { if (DBG) { - Log.v(TAG, "SamsungMulticlientRil cancel()"); + Log.v(TAG, mTAG + ": SamsungMulticlientRil cancel()"); } synchronized (this) { mCancelRequested.set(true); @@ -181,12 +182,12 @@ public class SamsungMulticlientRilExecutor implements OemRilExecutor { throws IOException { int token; if (mMessages.size() > MAX_MESSAGES) { - Log.e(TAG, "message queue is full"); + Log.e(TAG, mTAG + ": message queue is full"); return; } if (mOutputStream == null) { - Log.e(TAG, "Local write() error: not connected"); + Log.e(TAG, mTAG + ": Local write() error: not connected"); return; } @@ -213,12 +214,12 @@ public class SamsungMulticlientRilExecutor implements OemRilExecutor { throws IOException { int token; if (mMessages.size() > MAX_MESSAGES) { - Log.e(TAG, "message queue is full"); + Log.e(TAG, mTAG + ": message queue is full"); return; } if (mOutputStream == null) { - Log.e(TAG, "Local write() error: not connected"); + Log.e(TAG, mTAG + ": Local write() error: not connected"); return; } @@ -272,7 +273,7 @@ public class SamsungMulticlientRilExecutor implements OemRilExecutor { public synchronized void disconnect() { if (DBG) { - Log.v(TAG, "Local disconnect()"); + Log.v(TAG, mTAG + ": Local disconnect()"); } if (mSocket == null) { @@ -282,31 +283,31 @@ public class SamsungMulticlientRilExecutor implements OemRilExecutor { try { mSocket.shutdownInput(); } catch (IOException e) { - Log.e(TAG, "Local shutdownInput() of mSocket failed", e); + Log.e(TAG, mTAG + ": Local shutdownInput() of mSocket failed", e); } try { mSocket.shutdownOutput(); } catch (IOException e) { - Log.e(TAG, "Local shutdownOutput() of mSocket failed", e); + Log.e(TAG, mTAG + ": Local shutdownOutput() of mSocket failed", e); } try { mInputStream.close(); } catch (IOException e) { - Log.e(TAG, "Local close() of mInputStream failed", e); + Log.e(TAG, mTAG + ": Local close() of mInputStream failed", e); } try { mOutputStream.close(); } catch (IOException e) { - Log.e(TAG, "Local close() of mOutputStream failed", e); + Log.e(TAG, mTAG + ": Local close() of mOutputStream failed", e); } try { mSocket.close(); } catch (IOException e) { - Log.e(TAG, "Local close() of mSocket failed", e); + Log.e(TAG, mTAG + ": Local close() of mSocket failed", e); } mSocket = null; @@ -320,7 +321,7 @@ public class SamsungMulticlientRilExecutor implements OemRilExecutor { int endpos = 0; final byte buf[] = new byte[4096]; - Log.i(TAG, "BEGIN LocalSocketThread-Socket"); + Log.i(TAG, mTAG + ": BEGIN LocalSocketThread-Socket"); setName("MultiClientThread"); mSocket = new LocalSocket(); @@ -329,7 +330,7 @@ public class SamsungMulticlientRilExecutor implements OemRilExecutor { mInputStream = mSocket.getInputStream(); mOutputStream = mSocket.getOutputStream(); } catch (IOException e) { - Log.e(TAG, "Connect error", e); + Log.e(TAG, mTAG + ": Connect error", e); return; } @@ -338,7 +339,7 @@ public class SamsungMulticlientRilExecutor implements OemRilExecutor { rcvd = mInputStream.read(buf, endpos, buf.length - endpos); if (rcvd < 0) { if (DBG) { - Log.v(TAG, "EOF reached"); + Log.v(TAG, mTAG + ": EOF reached"); } break; } @@ -349,7 +350,7 @@ public class SamsungMulticlientRilExecutor implements OemRilExecutor { int msgLen = (buf[0] << 24) | (buf[1] << 16) | (buf[2] << 8) | (buf[3] & 0xff); if (msgLen + 4 > buf.length) { - Log.e(TAG, "message to big. Length: " + msgLen); + Log.e(TAG, mTAG + ": message to big. Length: " + msgLen); endpos = 0; continue; } @@ -390,13 +391,13 @@ public class SamsungMulticlientRilExecutor implements OemRilExecutor { responseType = p.readInt(); switch (responseType) { case RESPONSE_UNSOLICITED: - Log.v(TAG, "Unsolicited response "); + Log.v(TAG, mTAG + ": Unsolicited response "); break; case RESPONSE_SOLICITED: processSolicited(p); break; default: - Log.v(TAG, "Invalid response type: " + responseType); + Log.v(TAG, mTAG + ": Invalid response type: " + responseType); break; } } finally { @@ -430,7 +431,7 @@ public class SamsungMulticlientRilExecutor implements OemRilExecutor { } if (token == null) { - Log.e(TAG, "token is null", errorEx); + Log.e(TAG, mTAG + ": token is null", errorEx); } else { synchronized (this) { Message m = mMessages.remove(token); @@ -448,7 +449,7 @@ public class SamsungMulticlientRilExecutor implements OemRilExecutor { m.sendToTarget(); } } else { - Log.i(TAG, "Message with token " + token + " not found"); + Log.i(TAG, mTAG + ": Message with token " + token + " not found"); } } } @@ -466,4 +467,4 @@ public class SamsungMulticlientRilExecutor implements OemRilExecutor { } } -} +} \ No newline at end of file diff --git a/app/src/main/java/com/SecUpwN/AIMSICD/service/CellTracker.java b/app/src/main/java/com/SecUpwN/AIMSICD/service/CellTracker.java index 9e187d67a413be065305e7fc153713ad85bce3a2..290ae2c0f6b66c4482e047e89b9fd73710e752f8 100644 --- a/app/src/main/java/com/SecUpwN/AIMSICD/service/CellTracker.java +++ b/app/src/main/java/com/SecUpwN/AIMSICD/service/CellTracker.java @@ -14,10 +14,11 @@ import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.content.SharedPreferences; +import android.graphics.Bitmap; +import android.graphics.BitmapFactory; import android.location.Location; import android.os.Build; import android.os.Bundle; -import android.os.Handler; import android.os.SystemClock; import android.support.v4.app.NotificationCompat; import android.telephony.CellInfo; @@ -45,13 +46,9 @@ import com.SecUpwN.AIMSICD.utils.OCIDResponse; import com.SecUpwN.AIMSICD.utils.Status; import com.SecUpwN.AIMSICD.utils.TinyDB; -import org.apache.http.HttpResponse; -import org.apache.http.StatusLine; import org.apache.http.client.methods.HttpGet; import org.apache.http.impl.client.DefaultHttpClient; -import java.io.ByteArrayOutputStream; -import java.io.InputStream; import java.util.ArrayList; import java.util.List; import java.util.concurrent.LinkedBlockingQueue; @@ -95,7 +92,14 @@ public class CellTracker implements SharedPreferences.OnSharedPreferenceChangeLi private final String mTAG = "CellTracker"; public static String OCID_API_KEY = null; // see getOcidKey() + public static int PHONE_TYPE; // + public static long REFRESH_RATE; // [s] The DeviceInfo refresh rate (arrays.xml) + public static int LAST_DB_BACKUP_VERSION; // + public static final String SILENT_SMS = "SILENT_SMS_DETECTED"; + + private boolean CELL_TABLE_CLEANSED; // private final int NOTIFICATION_ID = 1; // ? + private final Device mDevice = new Device(); private static TelephonyManager tm; private final SignalStrengthTracker signalStrengthTracker; @@ -105,12 +109,6 @@ public class CellTracker implements SharedPreferences.OnSharedPreferenceChangeLi //TinyDB tinydb = new TinyDB(context); private TinyDB tinydb; - public static int PHONE_TYPE; // - public static long REFRESH_RATE; // [s] The DeviceInfo refresh rate (arrays.xml) - public static int LAST_DB_BACKUP_VERSION; // - public static final String SILENT_SMS = "SILENT_SMS_DETECTED"; - private boolean CELL_TABLE_CLEANSED; - private final Device mDevice = new Device(); /* * Tracking and Alert Declarations @@ -253,13 +251,13 @@ public class CellTracker implements SharedPreferences.OnSharedPreferenceChangeLi public void setCellTracking(boolean track) { if (track) { tm.listen(mCellSignalListener, - PhoneStateListener.LISTEN_CELL_LOCATION | // gpsd_lat/lon ? + PhoneStateListener.LISTEN_CELL_LOCATION | // gpsd_lat/lon ? PhoneStateListener.LISTEN_SIGNAL_STRENGTHS | // rx_signal PhoneStateListener.LISTEN_DATA_ACTIVITY | // No,In,Ou,IO,Do - PhoneStateListener.LISTEN_DATA_CONNECTION_STATE | // Di,Ct,Cd,Su - PhoneStateListener.LISTEN_CELL_INFO - // PhoneStateListener.LISTEN_CALL_STATE ? - // PhoneStateListener.LISTEN_SERVICE_STATE ? + PhoneStateListener.LISTEN_DATA_CONNECTION_STATE | // Di,Ct,Cd,Su + PhoneStateListener.LISTEN_CELL_INFO // !? (Need API 17) + // PhoneStateListener.LISTEN_CALL_STATE // idle,ringing,offhook + // PhoneStateListener.LISTEN_SERVICE_STATE // emergency_only,in_service,out_of_service,power_off ); mTrackingCell = true; Helpers.msgShort(context, context.getString(R.string.tracking_cell_information)); @@ -372,7 +370,7 @@ public class CellTracker implements SharedPreferences.OnSharedPreferenceChangeLi // a new API key within 24 hours of the last request. (See GH issue #267) // Make toast message: "Only one new API key request per 24 hours. Please try again later." - Helpers.msgLong(context, context.getString(R.string.only_one_api_per_day)); + Helpers.msgLong(context, context.getString(R.string.only_one_key_per_day)); String responseFromServer = result.getResponseFromServer(); Log.d("AIMSICD", "CellTracker: OCID Reached 24hr API key limit: " + responseFromServer); return responseFromServer; @@ -380,12 +378,16 @@ public class CellTracker implements SharedPreferences.OnSharedPreferenceChangeLi // TODO add code here or elsewhere to check for NO network exceptions... // See: https://github.com/SecUpwN/Android-IMSI-Catcher-Detector/issues/293 - httpclient = null; - httpGet = null; - result = null; + + // TODO: Remove commented out stuff if app works without these NULLs + // See: https://github.com/SecUpwN/Android-IMSI-Catcher-Detector/pull/526 + // PR: 4a68d00 + //httpclient = null; + //httpGet = null; + //result = null; Log.d("AIMSICD", "CellTracker: OCID Returned " + result.getStatusCode() + " " + result.getReasonPhrase()); -// throw new Exception("OCID Returned " + status.getStatusCode() + " " + status.getReasonPhrase()); + //throw new Exception("OCID Returned " + status.getStatusCode() + " " + status.getReasonPhrase()); return null; } } @@ -447,6 +449,7 @@ public class CellTracker implements SharedPreferences.OnSharedPreferenceChangeLi neighboringCellInfo = cellInfoList; } catch (InterruptedException e) { // Maybe a more valuable message here? + //Log.d(TAG, mTAG + ": unknown NC info exception: " + e); // How about this??? // normal } } @@ -463,8 +466,7 @@ public class CellTracker implements SharedPreferences.OnSharedPreferenceChangeLi // Add NC list to ?? cellinfo ?? ---> DBi_measure:nc_list for (NeighboringCellInfo neighbourCell : neighboringCellInfo) { - Log.i(TAG, - mTAG + ": neighbouringCellInfo -" + + Log.i(TAG, mTAG + ": neighbouringCellInfo -" + " LAC:" + neighbourCell.getLac() + " CID:" + neighbourCell.getCid() + " PSC:" + neighbourCell.getPsc() + @@ -488,7 +490,7 @@ public class CellTracker implements SharedPreferences.OnSharedPreferenceChangeLi */ public void checkForNeighbourCount(CellLocation location){ - Log.i(mTAG,"in checkForNeighbourCount"); + Log.i(TAG, mTAG + ": checkForNeighbourCount()"); /** * Description: This snippet sets a global variable (SharedPreference) to indicate @@ -549,7 +551,7 @@ public class CellTracker implements SharedPreferences.OnSharedPreferenceChangeLi } - /** Update: from banjaxbanjo + /** * I removed the timer that activated this code and now the code will be run when * the cell changes so it will detect faster rather than using a timer that might * miss an imsi catcher, also says cpu rather than refreshing every x seconds. @@ -597,7 +599,8 @@ public class CellTracker implements SharedPreferences.OnSharedPreferenceChangeLi * Are there any reasons why not using a listener? * * ChangeLog: - * 2015-03-03 E:V:A Changed getProp() to use TinyDB (SharedPreferences) + * 2015-03-03 E:V:A Changed getProp() to use TinyDB (SharedPreferences) + * 2015-0x-xx banjaxbanjo Update: ??? (hey dude what did you do?) * */ public void compareLac(CellLocation location){ @@ -622,7 +625,7 @@ public class CellTracker implements SharedPreferences.OnSharedPreferenceChangeLi // Check if CellID (CID) is in DBe_import (OpenCell) database (issue #91) if ( tinydb.getBoolean("ocid_downloaded") ) { if (!dbHelper.openCellExists(mMonitorCell.getCID())) { - Log.i(mTAG, "ALERT: Connected to unknown CID not in DBe_import: " + mMonitorCell.getCID()); + Log.i(TAG, "ALERT: Connected to unknown CID not in DBe_import: " + mMonitorCell.getCID()); // Code Place-holder: TODO: Add to EventLog table!! @@ -684,16 +687,16 @@ public class CellTracker implements SharedPreferences.OnSharedPreferenceChangeLi * */ private void loadPreferences() { - boolean trackFemtoPref = prefs.getBoolean( context.getString(R.string.pref_femto_detection_key), false); - boolean trackCellPref = prefs.getBoolean( context.getString(R.string.pref_enable_cell_key), true); - boolean monitorCellPref = prefs.getBoolean( context.getString(R.string.pref_enable_cell_monitoring_key), true); + boolean trackFemtoPref = prefs.getBoolean(context.getString(R.string.pref_femto_detection_key), false); + boolean trackCellPref = prefs.getBoolean(context.getString(R.string.pref_enable_cell_key), true); + boolean monitorCellPref = prefs.getBoolean(context.getString(R.string.pref_enable_cell_monitoring_key), true); - LAST_DB_BACKUP_VERSION = prefs.getInt( context.getString(R.string.pref_last_database_backup_version), 1); - CELL_TABLE_CLEANSED = prefs.getBoolean( context.getString(R.string.pref_cell_table_cleansed), false); + LAST_DB_BACKUP_VERSION = prefs.getInt(context.getString(R.string.pref_last_database_backup_version), 1); + CELL_TABLE_CLEANSED = prefs.getBoolean(context.getString(R.string.pref_cell_table_cleansed), false); - String refreshRate = prefs.getString( context.getString(R.string.pref_refresh_key), "1"); + String refreshRate = prefs.getString(context.getString(R.string.pref_refresh_key), "1"); // Default to Automatic ("1") - if (refreshRate.isEmpty()) { refreshRate = "1"; } + if (refreshRate.isEmpty()) { refreshRate = "1"; } // Set default to: 1 second int rate = Integer.parseInt(refreshRate); long t; @@ -702,7 +705,7 @@ public class CellTracker implements SharedPreferences.OnSharedPreferenceChangeLi t = 15L; // Automatic refresh rate is 15 seconds break; default: - t = (rate * 1L); + t = ((long) rate); // Default is 1 sec (from above) break; } @@ -749,22 +752,22 @@ public class CellTracker implements SharedPreferences.OnSharedPreferenceChangeLi public void onCellLocationChanged(CellLocation location) { checkForNeighbourCount(location); compareLac(location); - refreshDevice();//refresh data on cell change + refreshDevice(); //refresh data on cell change mDevice.setNetID(tm); // ?? mDevice.getNetworkTypeName(); // RAT?? switch (mDevice.getPhoneID()) { - case TelephonyManager.PHONE_TYPE_NONE: // Maybe bad! - case TelephonyManager.PHONE_TYPE_SIP: // Maybe bad! + case TelephonyManager.PHONE_TYPE_NONE: + case TelephonyManager.PHONE_TYPE_SIP: case TelephonyManager.PHONE_TYPE_GSM: GsmCellLocation gsmCellLocation = (GsmCellLocation) location; if (gsmCellLocation != null) { mDevice.setCellInfo( - gsmCellLocation.toString() + // ?? + gsmCellLocation.toString() + // ?? mDevice.getDataActivityTypeShort() + "|" + // No,In,Ou,IO,Do mDevice.getDataStateShort() + "|" + // Di,Ct,Cd,Su - mDevice.getNetworkTypeName() + "|" // TODO: Is "|" a typo? + mDevice.getNetworkTypeName() + "|" // HSPA,LTE etc ); mDevice.mCell.setLAC(gsmCellLocation.getLac()); // LAC mDevice.mCell.setCID(gsmCellLocation.getCid()); // CID @@ -778,7 +781,7 @@ public class CellTracker implements SharedPreferences.OnSharedPreferenceChangeLi CdmaCellLocation cdmaCellLocation = (CdmaCellLocation) location; if (cdmaCellLocation != null) { mDevice.setCellInfo( - cdmaCellLocation.toString() + // ?? + cdmaCellLocation.toString() + // ?? mDevice.getDataActivityTypeShort() + "|" + // No,In,Ou,IO,Do mDevice.getDataStateShort() + "|" + // Di,Ct,Cd,Su mDevice.getNetworkTypeName() + "|" // TODO: Is "|" a typo? @@ -930,8 +933,8 @@ public class CellTracker implements SharedPreferences.OnSharedPreferenceChangeLi if (cellLocation != null) { switch (mDevice.getPhoneID()) { - case TelephonyManager.PHONE_TYPE_NONE: // Maybe bad! - case TelephonyManager.PHONE_TYPE_SIP: // Maybe bad! + case TelephonyManager.PHONE_TYPE_NONE: + case TelephonyManager.PHONE_TYPE_SIP: case TelephonyManager.PHONE_TYPE_GSM: GsmCellLocation gsmCellLocation = (GsmCellLocation) cellLocation; mDevice.mCell.setCID(gsmCellLocation.getCid()); // CID @@ -944,7 +947,7 @@ public class CellTracker implements SharedPreferences.OnSharedPreferenceChangeLi mDevice.mCell.setCID(cdmaCellLocation.getBaseStationId()); // BSID ?? mDevice.mCell.setLAC(cdmaCellLocation.getNetworkId()); // NID mDevice.mCell.setSID(cdmaCellLocation.getSystemId()); // SID - mDevice.mCell.setMNC(cdmaCellLocation.getSystemId()); // <== BUG!?? // MNC + mDevice.mCell.setMNC(cdmaCellLocation.getSystemId()); // MNC <== BUG!?? } } } @@ -1109,7 +1112,7 @@ public class CellTracker implements SharedPreferences.OnSharedPreferenceChangeLi case ALARM: // ORANGE, RED or BLACK ? tickerText = context.getResources().getString(R.string.app_name_short) + " - " + context.getString(R.string.alert_threat_detected); // Hmm, this is vague! if (mFemtoDetected) { - contentText = context.getString(R.string.aletr_femtocell_connection_detected); + contentText = context.getString(R.string.alert_femtocell_connection_detected); } else if (mTypeZeroSmsDetected) { contentText = context.getString(R.string.alert_silent_sms_detected); } @@ -1127,9 +1130,13 @@ public class CellTracker implements SharedPreferences.OnSharedPreferenceChangeLi PendingIntent contentIntent = PendingIntent.getActivity( context, NOTIFICATION_ID, notificationIntent, PendingIntent.FLAG_CANCEL_CURRENT); String iconType = prefs.getString(context.getString(R.string.pref_ui_icons_key), "SENSE").toUpperCase(); + int iconResId = Icon.getIcon(Icon.Type.valueOf(iconType)); + Bitmap largeIcon = BitmapFactory.decodeResource(context.getResources(), iconResId); Notification mBuilder = new NotificationCompat.Builder(context) - .setSmallIcon(Icon.getIcon(Icon.Type.valueOf(iconType))) + //.setSmallIcon(Icon.getIcon(Icon.Type.valueOf(iconType))) + .setSmallIcon(iconResId) + .setLargeIcon(largeIcon) .setTicker(tickerText) .setContentTitle(context.getResources().getString(R.string.main_app_name)) .setContentText(contentText) @@ -1309,13 +1316,13 @@ public class CellTracker implements SharedPreferences.OnSharedPreferenceChangeLi @Override public void onCellInfoChanged(List<CellInfo> cellInfo) { handle(); - Log.i(mTAG,"Cell info change"); + Log.i(TAG, mTAG + ": Cell info change"); } @Override public void onCellLocationChanged(CellLocation location) { handle(); - Log.i(mTAG,"Cell info change"); + Log.i(TAG, mTAG +": Cell info change"); } }; diff --git a/app/src/main/java/com/SecUpwN/AIMSICD/service/LocationTracker.java b/app/src/main/java/com/SecUpwN/AIMSICD/service/LocationTracker.java index 0783c9636da3ca905e56da74b2729437441ba72c..1ef1a2437256056f9a38979184214a56ba4b2b2b 100644 --- a/app/src/main/java/com/SecUpwN/AIMSICD/service/LocationTracker.java +++ b/app/src/main/java/com/SecUpwN/AIMSICD/service/LocationTracker.java @@ -19,6 +19,7 @@ import com.SecUpwN.AIMSICD.R; import com.SecUpwN.AIMSICD.adapters.AIMSICDDbAdapter; import com.SecUpwN.AIMSICD.utils.Cell; import com.SecUpwN.AIMSICD.utils.GeoLocation; +import com.SecUpwN.AIMSICD.utils.TruncatedLocation; /** * Class to handle GPS location tracking @@ -100,12 +101,14 @@ public class LocationTracker { GeoLocation loc = null; Location location = lm.getLastKnownLocation(LocationManager.GPS_PROVIDER); if (location != null && (location.getLatitude() != 0.0 && location.getLongitude() != 0.0)) { - loc = GeoLocation.fromDegrees(location.getLatitude(), location.getLongitude()); + TruncatedLocation TruncatedLocation = new TruncatedLocation(location); + loc = GeoLocation.fromDegrees(TruncatedLocation.getLatitude(), TruncatedLocation.getLongitude()); } else { location = lm.getLastKnownLocation(LocationManager.NETWORK_PROVIDER); if (location != null && (location.getLatitude() != 0.0 && location.getLongitude() != 0.0)) { - loc = GeoLocation.fromDegrees(location.getLatitude(), location.getLongitude()); + TruncatedLocation TruncatedLocation = new TruncatedLocation(location); + loc = GeoLocation.fromDegrees(TruncatedLocation.getLatitude(), TruncatedLocation.getLongitude()); } else { String coords = prefs.getString(context.getString(R.string.data_last_lat_lon), null); if (coords != null) { diff --git a/app/src/main/java/com/SecUpwN/AIMSICD/service/SignalStrengthTracker.java b/app/src/main/java/com/SecUpwN/AIMSICD/service/SignalStrengthTracker.java index eac6c2d281fbd9262f828cc7c6532dfdd6ecd4a0..bde85ef151e7470fd916979657e5b1222ef0be74 100644 --- a/app/src/main/java/com/SecUpwN/AIMSICD/service/SignalStrengthTracker.java +++ b/app/src/main/java/com/SecUpwN/AIMSICD/service/SignalStrengthTracker.java @@ -26,16 +26,26 @@ import java.util.HashMap; * * https://cloud.githubusercontent.com/assets/2507905/4428863/c85c8366-45d4-11e4-89da-c650cdb56caf.jpg * + * Issues: + * + * [ ] + * + * ChangeLog + * + * 20150703 E:V:A Changed log TAG to use only TAG for Log.i() and mTAG for Log.d/e/v() + * * @author Tor Henning Ueland */ public class SignalStrengthTracker { - //FIXME The logging tag can be at most 23 characters, was 29 (AIMSICD_SignalStrengthTracker) - public static final String TAG = "AIMSICD_SignalStrength"; + + private static final String TAG = "AIMSICD"; + private static final String mTAG = "SignalStrengthTracker"; + private static int sleepTimeBetweenSignalRegistration = 60; // [seconds] - private static int minimumIdleTime = 30; // [seconds] - private static int maximumNumberOfDaysSaved = 60; // [days] = 2 months - private static int mysteriousSignalDifference = 10; // [dBm] or [ASU]? - private static int sleepTimeBetweenCleanup = 3600; // Once per hour + private static int minimumIdleTime = 30; // [seconds] + private static int maximumNumberOfDaysSaved = 60; // [days] = 2 months + private static int mysteriousSignalDifference = 10; // [dBm] or [ASU]? + private static int sleepTimeBetweenCleanup = 3600; // Once per hour private Long lastRegistrationTime; //Timestamp for last registration to DB private Long lastCleanupTime; //Timestamp for last cleanup of DB private HashMap<Integer, Integer> averageSignalCache = new HashMap<>(); @@ -62,8 +72,8 @@ public class SignalStrengthTracker { long now = System.currentTimeMillis(); if(deviceIsMoving()) { - Log.i(TAG, "Ignored signal strength sample for CID: " + cellID + - " as the device is currently moving around, will not accept anything for another " + + Log.i(TAG, "Ignoring signal strength for CID: " + cellID + + " since device is moving around, waiting for " + ((minimumIdleTime*1000) - (now - lastMovementDetected)) + " ms."); return; } @@ -113,7 +123,7 @@ public class SignalStrengthTracker { //If moving, return false if(deviceIsMoving()) { Log.i(TAG, "Cannot check signal strength for CID: " + cellID + - " as the device is currently moving around."); + " since device is moving around."); return false; } @@ -122,13 +132,13 @@ public class SignalStrengthTracker { //Cached? if(averageSignalCache.get(cellID) != null) { storedAvg = averageSignalCache.get(cellID); - Log.d(TAG, "Cached average SS for CID: " + cellID + " is: " + storedAvg); + Log.d(TAG, mTAG + ": Cached average SS for CID: " + cellID + " is: " + storedAvg); } else { //Not cached, check DB mDbHelper.open(); storedAvg = mDbHelper.getAverageSignalStrength(cellID); averageSignalCache.put(cellID, storedAvg); - Log.d(TAG, "Average SS in DB for CID: " + cellID + " is: " + storedAvg); + Log.d(TAG, mTAG + ": Average SS in DB for CID: " + cellID + " is: " + storedAvg); mDbHelper.close(); } diff --git a/app/src/main/java/com/SecUpwN/AIMSICD/utils/Helpers.java b/app/src/main/java/com/SecUpwN/AIMSICD/utils/Helpers.java index 1c0f2fbe3e113ce36e149e8b869ddc869edf1eb1..b090173a279be84c9d6a1fcd4505ff9c6d8948c3 100644 --- a/app/src/main/java/com/SecUpwN/AIMSICD/utils/Helpers.java +++ b/app/src/main/java/com/SecUpwN/AIMSICD/utils/Helpers.java @@ -33,6 +33,7 @@ import android.widget.Toast; import com.SecUpwN.AIMSICD.R; import com.SecUpwN.AIMSICD.activities.MapViewerOsmDroid; import com.SecUpwN.AIMSICD.service.CellTracker; +import com.SecUpwN.AIMSICD.utils.Toaster; import java.io.BufferedReader; import java.io.File; @@ -83,63 +84,53 @@ import java.util.List; private static final String mTAG = "Helpers"; private static final int CHARS_PER_LINE = 34; - private static final int SHORT_TOAST_DURATION = 2000; - private static final long TOAST_DURATION_MILLS = 6000;//change if need longer - /** - * Long toast message - * TOAST_DURATION_MILLS controls the duration - * currently set to 6 seconds - * @param context Application Context - * @param msg Message to send - */ - public static void msgLong(final Context context, final String msg) { - if (context != null && msg != null) { - final Toast t = Toast.makeText(context, msg, Toast.LENGTH_SHORT); - t.setGravity(Gravity.TOP | Gravity.CENTER_HORIZONTAL, 0, 0); - - new CountDownTimer(Math.max(TOAST_DURATION_MILLS - SHORT_TOAST_DURATION, 1000), 1000) { - @Override - public void onFinish() { - t.show(); - } - - @Override - public void onTick(long millisUntilFinished) { - t.show(); - } - }.start(); - } - + /** + * Description: Long toast message + * + * Notes: + * + * This is only a proxy method to the Toaster class. + * It also takes care of using the Toaster's Singleton. + * + * @param context Application Context + * @param msg Message to send + */ + public static void msgLong(Context context, String msg) { + if (context != null && msg != null) { + Toaster.getInstance().msgLong(context, msg); + } } - - /** - * Short toast message - * (Predefined in AOS to 2000 ms = 2 sec) - * - * @param context Application Context - * @param msg Message to send - */ - public static void msgShort(final Context context, final String msg) { + /** + * Description: Short toast message + * + * Notes: + * + * This is only a proxy method to the Toaster class. + * It also takes care of using the Toaster's Singleton. + * + * @param context Application Context + * @param msg Message to send + */ + public static void msgShort(Context context, String msg) { if (context != null && msg != null) { - new Handler(context.getMainLooper()).post(new Runnable() { - @Override - public void run() { - Toast.makeText(context, msg.trim(), Toast.LENGTH_SHORT).show(); - } - }); + Toaster.getInstance().msgShort(context, msg); } } - - /** - * Long toast message - * - * @param context Application Context - * @param msg Message to send - */ + /** + * Description: Long toast message + * + * Notes: + * + * This is only a proxy method to the Toaster class. + * It also takes care of using the Toaster's Singleton. + * + * @param context Application Context + * @param msg Message to send + */ public static void sendMsg(Context context, String msg) { if (context != null && msg != null) { - msgLong(context, msg); + Toaster.getInstance().msgLong(context, msg); } } @@ -276,12 +267,15 @@ import java.util.List; .append(CellTracker.OCID_API_KEY).append("&BBOX=") .append(boundParameter); + Log.i(TAG, mTAG + ":OCID MCC is set to: " + cell.getMCC()); if (cell.getMCC() != Integer.MAX_VALUE) { sb.append("&mcc=").append(cell.getMCC()); } + Log.i(TAG, mTAG + ":OCID MNC is set to: " + cell.getMNC()); if (cell.getMNC() != Integer.MAX_VALUE) { sb.append("&mnc=").append(cell.getMNC()); } + //Log.i(TAG, mTAG + ":OCID LAC is set to: " + cell.getLAC()); // We need DBe_import filtering, if we wanna keep these lines commented out... //if (cell.getLAC() != Integer.MAX_VALUE) { // sb.append("&lac=").append(cell.getLAC()); @@ -614,5 +608,4 @@ import java.util.List; .setIcon(R.drawable.ic_action_delete_database).create(); lAlertDialog.show(); } -} - +} \ No newline at end of file diff --git a/app/src/main/java/com/SecUpwN/AIMSICD/utils/MiscUtils.java b/app/src/main/java/com/SecUpwN/AIMSICD/utils/MiscUtils.java index 6cb1ce304426e4e892be286d8e55fa2f5c76961d..d450f950773bbed0e857d3a4d6fc312b8a2dd5cc 100644 --- a/app/src/main/java/com/SecUpwN/AIMSICD/utils/MiscUtils.java +++ b/app/src/main/java/com/SecUpwN/AIMSICD/utils/MiscUtils.java @@ -11,6 +11,8 @@ import android.app.PendingIntent; import android.content.ContentValues; import android.content.Context; import android.content.Intent; +import android.graphics.Bitmap; +import android.graphics.BitmapFactory; import android.support.v4.app.NotificationCompat; import android.util.Log; import com.SecUpwN.AIMSICD.AIMSICD; @@ -31,12 +33,21 @@ import java.util.Date; import java.util.Locale; /** - * Created by Paul Kinsella on 04/03/15. + * Description: TODO + * + * + * ChangeLog: + * + * banjaxbanjo 20150304 First PR + * E:V:A 20150704 Changed TAGs and fixed some formatting * */ public class MiscUtils { + private static final String TAG = "AIMSICD"; + private static final String mTAG = "MiscUtils"; + public static String setAssetsString(Context context){ BufferedReader reader = null; StringBuilder buildassets = new StringBuilder(); @@ -73,8 +84,7 @@ public class MiscUtils { public static String getCurrentTimeStamp(){ Date now = new Date(); - String timestamp = new SimpleDateFormat("yyyyMMddHHmmss", Locale.getDefault()).format(now); - return timestamp; + return new SimpleDateFormat("yyyyMMddHHmmss", Locale.getDefault()).format(now); } /* @@ -93,9 +103,11 @@ public class MiscUtils { PendingIntent contentIntent = PendingIntent.getActivity( context, NOTIFICATION_ID, notificationIntent, PendingIntent.FLAG_CANCEL_CURRENT); + Bitmap largeIcon = BitmapFactory.decodeResource(context.getResources(), drawable_id); Notification mBuilder = new NotificationCompat.Builder(context) .setSmallIcon(drawable_id) + .setLargeIcon(largeIcon) .setTicker(tickertext) .setContentTitle(context.getResources().getString(R.string.main_app_name)) .setContentText(contentText) @@ -111,13 +123,13 @@ public class MiscUtils { /* Coder:banjaxbanjo + All new database detection strings will be added here so we don't need to keep updating db every time we find a new string. to add a new string in det_strings.json see example below: - {"detection_string":"incoming msg. Mti 0 ProtocolID 0 DCS 0x04 class -1", - "detection_type":"WAPPUSH"} + {"detection_string":"incoming msg. Mti 0 ProtocolID 0 DCS 0x04 class -1", "detection_type":"WAPPUSH"} */ public static void refreshDetectionDbStrings(Context con){ @@ -132,7 +144,8 @@ public class MiscUtils { json_file.append(rline); rline = reader.readLine(); } - Log.i("refreshDetectionDbStrings", json_file.toString()); + // Hmm I hope this doesn't affect the detection + Log.i(TAG, mTAG + ": refreshDetectionDbStrings: " + json_file.toString()); } catch (Exception ee){ ee.printStackTrace(); }finally { @@ -160,11 +173,11 @@ public class MiscUtils { JSONObject current_json_object = json_array_node.getJSONObject(i); ContentValues store_new_det_string = new ContentValues(); store_new_det_string.put(SmsDetectionDbHelper.SILENT_SMS_STRING_COLUMN, - current_json_object.optString("detection_string").toString()); + current_json_object.optString("detection_string")); // removed .toString() store_new_det_string.put(SmsDetectionDbHelper.SILENT_SMS_TYPE_COLUMN, - current_json_object.optString("detection_type").toString()); + current_json_object.optString("detection_type")); if(dbaccess.insertNewDetectionString(store_new_det_string)){ - Log.i("refreshDetectionDbStrings",">>>String added success"); + Log.i(TAG, mTAG + ": refreshDetectionDbStrings: New string added!"); } @@ -172,28 +185,27 @@ public class MiscUtils { dbaccess.close(); } catch (JSONException e) { dbaccess.close(); - Log.e("refreshDetectionDbStrings",">>> Error parsing JsonFile "+e.toString()); + Log.e(TAG, mTAG + ": refreshDetectionDbStrings: "+ "Error parsing JsonFile " + e.toString()); e.printStackTrace(); } } /* - Returns a timestamp in this format 20150617223311 - this is used to detect if the sms was already picked up + * Description: Converts logcat timstamp to SQL friendly timstamps + * We use this to determine if an sms has already been found + * + * Converts a timstamp in this format: 06-17 22:06:05.988 D/dalvikvm(24747): + * Returns a timestamp in this format: 20150617223311 */ public static String logcatTimeStampParser(String line){ - //06-17 22:06:05.988 D/dalvikvm(24747): <-- example of timestamp String[] buffer = line.split(" "); line = String.valueOf(Calendar.getInstance().get(Calendar.YEAR))+buffer[0]+buffer[1]; - // -->we dont need the last 4 digits in timestamp .988 - // | way to accurate but easily change if needed - String timestamp = line.substring(0,line.length()-4)// <-| - .replace(":","") - .replace(".","") - .replace("-",""); - - return timestamp; + // We don't need the last 4 digits in timestamp ".988" or it is too accurate. + return line.substring(0,line.length()-4) // <-| + .replace(":", "") + .replace(".", "") + .replace("-", ""); } } diff --git a/app/src/main/java/com/SecUpwN/AIMSICD/utils/OCIDCSV.java b/app/src/main/java/com/SecUpwN/AIMSICD/utils/OCIDCSV.java index a41fa04cb4d5538b20e43c12fa293932006a1927..d5ad07af09f9c27ba18dfd41ffbc6f05335dd6b2 100644 --- a/app/src/main/java/com/SecUpwN/AIMSICD/utils/OCIDCSV.java +++ b/app/src/main/java/com/SecUpwN/AIMSICD/utils/OCIDCSV.java @@ -1,7 +1,6 @@ package com.SecUpwN.AIMSICD.utils; import java.util.ArrayList; -import java.util.List; /** * Created by Marvin Arnold on 9/06/15. @@ -24,11 +23,11 @@ public class OCIDCSV extends ArrayList<OCIDCSV.OCIDCSVLine> { } public double getGPSLat() { - return truncateDouble(this.ocidCell[0], 5); + return TruncatedLocation.truncateDouble(this.ocidCell[0], 5); } public double getGPSLon() { - return truncateDouble(this.ocidCell[1], 5); + return TruncatedLocation.truncateDouble(this.ocidCell[1], 5); } public int getMCC() { @@ -75,13 +74,5 @@ public class OCIDCSV extends ArrayList<OCIDCSV.OCIDCSVLine> { return String.valueOf(this.ocidCell[10]); } - public double truncateDouble(String d, int numDecimal) { - return truncateDouble(Double.parseDouble(d), numDecimal); - } - - public double truncateDouble(double d, int numDecimal) { - String s = String.format("%." + Integer.toString(numDecimal) +"f", d); - return Double.parseDouble(s); - } } } diff --git a/app/src/main/java/com/SecUpwN/AIMSICD/utils/RequestTask.java b/app/src/main/java/com/SecUpwN/AIMSICD/utils/RequestTask.java index 5d7c3b7f0e988ee44330911f7dbc38c324f7339a..388a90a74b97c88b4e248d09c50d8a1e36c6204d 100644 --- a/app/src/main/java/com/SecUpwN/AIMSICD/utils/RequestTask.java +++ b/app/src/main/java/com/SecUpwN/AIMSICD/utils/RequestTask.java @@ -96,8 +96,8 @@ public class RequestTask extends BaseAsyncTask<String, Integer, String> { //Calling from the menu more extensive(more difficult for sever), // we have to give more time for the server response - public static final int REQUEST_TIMEOUT_MAPS = 40000; // [ms] 40 s Calling from map - public static final int REQUEST_TIMEOUT_MENU = 40000; // [ms] 40 s Calling from menu + public static final int REQUEST_TIMEOUT_MAPS = 80000; // [ms] 80 s Calling from map + public static final int REQUEST_TIMEOUT_MENU = 80000; // [ms] 80 s Calling from menu public static final char DBE_DOWNLOAD_REQUEST = 1; // OCID download request from "APPLICATION" drawer title public static final char DBE_DOWNLOAD_REQUEST_FROM_MAP = 2; // OCID download request from "Antenna Map Viewer" @@ -436,4 +436,4 @@ public class RequestTask extends BaseAsyncTask<String, Integer, String> { public static String getOCDBDownloadFilePath(Context context) { return getOCDBDownloadDirectoryPath(context) + OCDB_File_Name; } -} \ No newline at end of file +} diff --git a/app/src/main/java/com/SecUpwN/AIMSICD/utils/Toaster.java b/app/src/main/java/com/SecUpwN/AIMSICD/utils/Toaster.java new file mode 100644 index 0000000000000000000000000000000000000000..b09488a5814c890394792d63b6c55af8a41dadc3 --- /dev/null +++ b/app/src/main/java/com/SecUpwN/AIMSICD/utils/Toaster.java @@ -0,0 +1,87 @@ +/* Android IMSI-Catcher Detector | (c) AIMSICD Privacy Project + * ----------------------------------------------------------- + * LICENSE: http://git.io/vki47 | TERMS: http://git.io/vki4o + * ----------------------------------------------------------- + */ +package com.SecUpwN.AIMSICD.utils; + +import android.content.Context; +import android.os.CountDownTimer; +import android.os.Handler; + +import android.view.Gravity; +import android.widget.Toast; + +public class Toaster { + + private static final int SHORT_TOAST_DURATION = 2000; + private static final long TOAST_DURATION_MILLS = 6000; //change if need longer + private static Toast toast; + + // Private constructor. Prevents instantiation from other classes. + private Toaster() { } + + /** + * Initializes singleton. + * + * ToasterHolder is loaded on the first execution of Toaster.getInstance() + * or the first access to ToasterHolder.INSTANCE, not before. + */ + private static class ToasterHolder { + private static final Toaster INSTANCE = new Toaster(); + } + + public static Toaster getInstance() { + return ToasterHolder.INSTANCE; + } + + /** + * Long toast message + * TOAST_DURATION_MILLS controls the duration + * currently set to 6 seconds + * @param context Application Context + * @param msg Message to send + */ + public static void msgLong(final Context context, final String msg) { + if (context != null && msg != null) { + if (toast!=null){ + toast.cancel(); + } + + toast = Toast.makeText(context, msg, Toast.LENGTH_SHORT); + + new CountDownTimer(Math.max(TOAST_DURATION_MILLS - SHORT_TOAST_DURATION, 1000), 1000) { + @Override + public void onFinish() { + toast.show(); + } + + @Override + public void onTick(long millisUntilFinished) { + toast.show(); + } + }.start(); + } + } + /** + * Short toast message + * (Predefined in AOS to 2000 ms = 2 sec) + * + * @param context Application Context + * @param msg Message to send + */ + public static void msgShort(final Context context, final String msg) { + if (context != null && msg != null) { + if (toast!=null){ + toast.cancel(); + } + new Handler(context.getMainLooper()).post(new Runnable() { + @Override + public void run() { + toast = Toast.makeText(context, msg.trim(), Toast.LENGTH_SHORT); + toast.show(); + } + }); + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/SecUpwN/AIMSICD/utils/TruncatedLocation.java b/app/src/main/java/com/SecUpwN/AIMSICD/utils/TruncatedLocation.java new file mode 100644 index 0000000000000000000000000000000000000000..46545fc81c80820d179169da54396a3c3f2af9c5 --- /dev/null +++ b/app/src/main/java/com/SecUpwN/AIMSICD/utils/TruncatedLocation.java @@ -0,0 +1,43 @@ +package com.SecUpwN.AIMSICD.utils; + +import android.location.Location; +import java.text.NumberFormat; +import java.text.ParseException; + +/** + * Created by Marvin Arnold on 1/07/15. + */ +public class TruncatedLocation extends Location { + + public TruncatedLocation(Location l) { + super(l); + } + + @Override + public double getLatitude() { + return truncateDouble(super.getLatitude(), 5); + } + + @Override + public double getLongitude() { + return truncateDouble(super.getLongitude(), 5); + } + + public static double truncateDouble(String d, int numDecimal) { + return truncateDouble(Double.parseDouble(d), numDecimal); + } + + public static double truncateDouble(double d, int numDecimal) { + double td = 0; + NumberFormat format = NumberFormat.getInstance(); + + String s = String.format("%." + Integer.toString(numDecimal) +"f", d); + try { + Number number = format.parse(s); + td = number.doubleValue(); + } catch (ParseException e) { + e.printStackTrace(); + } + return td; + } +} diff --git a/app/src/main/res/layout/about_fragment.xml b/app/src/main/res/layout/about_fragment.xml index 90d8b7cf0cbef5a18ad4b5131072068852c943da..7f9c432ff335f4d3cb78c32f0a2216f68c74e9db 100644 --- a/app/src/main/res/layout/about_fragment.xml +++ b/app/src/main/res/layout/about_fragment.xml @@ -32,6 +32,16 @@ android:textColor="@color/red_text" android:textSize="16sp"/> + <TextView + android:id="@+id/buildozer_buildnumber" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:gravity="center_horizontal" + android:text="@string/buildozer_buildnumber" + android:textColor="@color/red_text" + android:textSize="16sp" + android:visibility="gone"/> + <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" @@ -252,4 +262,4 @@ android:textSize="14sp" /> </LinearLayout> </LinearLayout> -</ScrollView> +</ScrollView> \ No newline at end of file diff --git a/app/src/main/res/values-de/translatable_strings.xml b/app/src/main/res/values-de/translatable_strings.xml index 55b09c95d00350adc40a89b5ef1af8db5dbf5777..d906629624af8352e4147be4a6838b48fa87a180 100644 --- a/app/src/main/res/values-de/translatable_strings.xml +++ b/app/src/main/res/values-de/translatable_strings.xml @@ -228,7 +228,7 @@ <string name="stopped_monitoring_cell_information">Beobachtung der Funkzelldaten angehalten.</string> <string name="tracking_cell_information">Funkzelldaten werden aufzeichnet.</string> <string name="stopped_tracking_cell_information">Aufzeichnung der Funkzelldaten angehalten.</string> - <string name="only_one_api_per_day">Anfrage für neuen API-Schlüssel nur einmal aller 24 Stunden möglich!\nBitte später erneut versuchen.</string> + <string name="only_one_key_per_day">Anfrage für neuen API-Schlüssel nur einmal aller 24 Stunden möglich!\nBitte später erneut versuchen.</string> <string name="cell_id_doesnt_exist_in_db">Zell-ID nicht existent in OCID-Datenbank!</string> <string name="hostile_service_area_changing_lac_detected">Feindliche Betriebsaktion: LAC-Änderung erkannt!</string> <string name="femtocell_detection_active">Femtozellenerkennung aktiv.</string> @@ -238,7 +238,7 @@ <string name="status_idle">Status: Ruhend.</string> <string name="status_good">Status: Gut. Keine Gefahren erkannt.</string> <string name="alert_threat_detected">ALARM: Eine Gefahr wurde erkannt!</string> - <string name="aletr_femtocell_connection_detected">ALARM: Verbinding mit Femtozelle erkannt!</string> + <string name="alert_femtocell_connection_detected">ALARM: Verbinding mit Femtozelle erkannt!</string> <string name="alert_silent_sms_detected">ALARM: Stille SMS (Type-0) erkannt!</string> <string name="femtocell_only_on_cdma_devices">AIMSICD kann Verbindungen mit Femtozellen derzeit nur auf CDMA-Geräten erkennen.</string> <string name="service_state_changed">Betriebsstatus verändert!</string> diff --git a/app/src/main/res/values-fr/translatable_strings.xml b/app/src/main/res/values-fr/translatable_strings.xml index 888121dc2487c08cbed68f92d85afac43d313bef..4385b4f5f138a3a97fbc7afdd9eb54540c4c0ff3 100755 --- a/app/src/main/res/values-fr/translatable_strings.xml +++ b/app/src/main/res/values-fr/translatable_strings.xml @@ -3,7 +3,6 @@ <!-- Drawer --> <string name="tracking">Tracking</string> - <string name="device_info">Détails Téléphone/Carte SIM</string> <string name="map_view">Carte des Antennes Relai</string> <string name="db_viewer">Visionneuse de la Base de Donnée</string> @@ -28,20 +27,16 @@ <!-- MENU --> <string name="toggle_attack_detection">Démarrer/arrêter la détection des attaques</string> <string name="toggle_cell_tracking">Commencer à localiser les cellules</string> - <string name="backup_database">Sauvegarder la Base de Donnée</string> <string name="clear_database">Effacer/Réinitialiser la Base De Donnée</string> <string name="clear_database_question">Toutes les données seront effacés.\nÊtes vous sur?</string> - <string name="restore_database">Restaurer la Base de Données</string> <string name="preferences">Préférences</string> <string name="press_once_again_to_exit">Appuyez une seconde fois pour quitter.</string> <string name="cell_lookup">Détails sur la/les cellule(s) actuelles</string> <string name="send_logs">Debugging</string> - <string name="no_network_connection_title">Aucune Connexion Internet</string> - <string name="no_network_connection_message">Impossible de télécharger les données OpenCellID sans une - connexion internet !</string> + <string name="no_network_connection_message">Impossible de télécharger les données OpenCellID sans une connexion internet!</string> <!-- MAP VIEWER --> <string name="get_opencellid">Télécharger les BTS depuis OpenCellID</string> @@ -202,7 +197,6 @@ <string name="detail_info_high">Actions Hostiles de la part d\'un service détecté: Un IMSI-Catcher ou une fausse BTS est actuellement en train de traquer ses utilisateurs. Le scan à lieu ici et maintenant. Vous devriez quitter cette place, particulièrement s’il y a des troubles politiques. Enlevez votre batterie ou détruisez votre téléphone!</string> <string name="detail_info_danger">Tracking Détecté : une fausse BTS ou IMSI-Catcher est actuellement en train de VOUS tracer et empêche votre téléphone de se connecter à votre opérateur avec un chiffrement normal. Si vous êtes en danger, détruisez votre téléphone(ou vendez le)+votre carte SIM et déclarez cette dernière volée.</string> <string name="detail_info_run">Manipulation: Quelqu\'un essaye de contrôler à distance votre téléphone. Détruisez votre téléphone(ou vendez le) et obtenez en un nouveau depuis un autre emplacement géographique!</string> - <string name="open_cell_id_button_cancel">Annuler</string> <string name="open_cell_id_button_ok">OK</string> @@ -234,7 +228,7 @@ <string name="stopped_monitoring_cell_information">Arrêt du monitoring des Cellules.</string> <string name="tracking_cell_information">Tracking des Cellules.</string> <string name="stopped_tracking_cell_information">Arrêt du tracking des Cellules.</string> - <string name="only_one_api_per_day">Une seule demande de clé d\'API est possible par 24h!\nEssayez plus tard.</string> + <string name="only_one_key_per_day">Une seule demande de clé d\'API est possible par 24h!\nEssayez plus tard.</string> <string name="cell_id_doesnt_exist_in_db">L\'ID de la cellule n\'existe pas dans la base de donnée!</string> <string name="hostile_service_area_changing_lac_detected">Zone Hostile : Changement de LAC Détecté!</string> <string name="femtocell_detection_active">Détection des FemtoCellules Activé.</string> @@ -244,11 +238,10 @@ <string name="status_idle">Statut: Inactif.</string> <string name="status_good">Statut: Bon. Aucune Menace Détectée.</string> <string name="alert_threat_detected">ALERTE : menace Détectée!</string> - <string name="aletr_femtocell_connection_detected">ALERTE: FemtoCellule Détectée!</string> + <string name="alert_femtocell_connection_detected">ALERTE: FemtoCellule Détectée!</string> <string name="alert_silent_sms_detected">ALERTE: SMS Silencieux (Type-0) Détecté!</string> <string name="alert_silent_wap_sms_detected">ALERTE: SMS Wap Push Détecté!</string> - <string name="alert_silent_voice_sms_detected">ALERTE: SMS de contrôle de messagerie vocale (MWI) Détecté!</string> -+ + <string name="alert_silent_voice_sms_detected">ALERTE: SMS de contrôle de messagerie vocale (MWI) Détecté!</string> <string name="femtocell_only_on_cdma_devices">AIMSICD ne peut détecter les connexions FemtoCellules que sur les appareils CDMA.</string> <string name="service_state_changed">État du service changé !</string> <string name="stopped_tracking_femtocell">: Arrêt du tracking des FemtoCellules.</string> @@ -274,7 +267,7 @@ <string name="refreshing_display">Rafraîchissement de l\'écran</string> <string name="unable_to_acquire_root_access">Impossible d\'obtenir l\'accès ROOT.\nL\'injection de commandes AT à besoin d\'un accès terminal en tant que ROOT.\nVéréfiez que votre téléphone est rooté et réessayez.</string> <string name="unable_to_detect_busybox">Busybox non trouvé.\nL\'injection de commandes AT a besoin de Busybox pour fonctionner correctement.\nVéréfiez que votre appareil possède Busybox et ressayez.</string> - <string name="unknown_error_trying_to_acquire_serial_device">Une erreur inconnue est survenu lors de l\'accès au périphérique Série.\nVéréfiez les logs et postez les erreurs sur Github ou sur\nXDA (les liens vers ces 2 sites web se trouvent dans la section\n"À propos" de cette application.</string> + <string name="unknown_error_trying_to_acquire_serial_device">Une erreur inconnue est survenu lors de l\'accès au périphérique Série.\nVéréfiez les logs et postez les erreurs sur Github.</string> <string name="getting_ocid_api_key">Obtention d\'une clé de l\'API d\'OpenCellID…</string> <string name="unable_to_create_map">Impossible de créer la carte!</string> <string name="describe_the_problem_you_had">ATTENTION! Veuillez décrire le problème que vous avez (en anglais !), avant de nous envoyer ces logs. PAS D\'AIDE SANS DESCRIPTION PRÉCISE!\n</string> @@ -308,9 +301,9 @@ <string name="typezero_title">ATTENTION!</string> <string name="typezero_header">SMS Type-0 Détecté</string> <string name="typezero_data">SMS silencieux (Type-0) Détecté!\n\nDétails: Voir la Base de Données.\n\nSi vous voulez que ce SMS soit analysé par nos développeurs, envoyez les logs à travers le menu de Débugging.</string> - <string name="typevoice_title">ATTENTION!</string> - <string name="typevoice_header">SMS MWI Détecté</string> - <string name="typevoice_data">SMS de contrôle de la messagerie vocale (MWI) Détecté!\n\nDétails: Voir la Base de Données.\n\nSi vous voulez que ce SMS soit analysé par nos développeurs, envoyez les logs à travers le menu de Débugging.</string> + <string name="typevoice_title">ATTENTION!</string> + <string name="typevoice_header">SMS MWI Détecté</string> + <string name="typevoice_data">SMS de contrôle de la messagerie vocale (MWI) Détecté!\n\nDétails: Voir la Base de Données.\n\nSi vous voulez que ce SMS soit analysé par nos développeurs, envoyez les logs à travers le menu de Débugging.</string> <string name="typewap_header">SMS Wap Push Détecté</string> <string name="typewap_data">Message SMS Wap Push Détecté!\n\nDétails: Voir la Base de Données.\n\nSi vous voulez que ce SMS soit analysé par nos développeurs, envoyez les logs à travers le menu de Débugging.</string> @@ -319,7 +312,7 @@ <string name="help_main_current_threat_level">Niveau de menace AIMSICD, cellules aux alentours, méthode de chiffrement utilisé.</string> <string name="help_main_phone_sim_details">Détail du fournisseur de la carte SIM, IMEI, TMSI.</string> <string name="help_main_acd">Affiche une comparaison détaillée des cellules connectées, avec les données (si il y en a)trouvées par OpenCellID, et surligne les différences.</string> - <string name="help_main_database_viewer">Voir les différentes Tables de la Base de Données.</string> + <string name="help_main_database_viewer">Voir les différentes Tables de la Base de Données.</string> <string name="help_main_antenna_map_view">Carte des antennes à proximité.</string> <string name="help_main_at_command_interface">Interface permettant d\'envoyer des commandes AT au Baseband (nécessite le ROOT).</string> @@ -393,4 +386,4 @@ <item>@string/timeout_spinner_10_min</item> </string-array> -</resources> +</resources> \ No newline at end of file diff --git a/app/src/main/res/values-pl/translatable_strings.xml b/app/src/main/res/values-pl/translatable_strings.xml index bf2e5d425a2352a229656e9e7dc33cb03bd0ec64..a3bd56af885f6a497948480ba8ce5f1f1d3326b6 100644 --- a/app/src/main/res/values-pl/translatable_strings.xml +++ b/app/src/main/res/values-pl/translatable_strings.xml @@ -1,263 +1,362 @@ <?xml version="1.0" encoding="utf-8"?> <resources> - - <string name="about_aimsicd">O aplikacji</string> - <string name="about_changelog">Lista zmian</string> - <string name="about_credits">Twórcy</string> - <string name="about_disclaimer">Ostrzeżenie</string> - <string name="about_github">AIMSICD na Githubie</string> - <string name="about_contribute">CONTRIBUTE</string> - <string name="about_license">Licencja</string> - <string name="app_version">Wersja: </string> - <string name="btn_clear_logs">Wyczyść</string> - <string name="btn_copy_to_clipboard">Kopiuj</string> - <string name="at_command_title">Interface komend AT</string> + + <!-- Drawer --> + <string name="tracking">Åšledzenie</string> + <string name="device_info">Szczegóły telefonu/SIM</string> + <string name="map_view">Widok mapy</string> + <string name="db_viewer">PodglÄ…d bazy danych</string> + <string name="quit">WyjÅ›cie</string> + <string name="text_ok">OK</string> + <string name="text_cancel">Anuluj</string> + <string name="text_agree">Zgadzam siÄ™</string> + <string name="text_disagree">Nie zgadzam siÄ™</string> + + <!-- DISCLAIMER --> + <string name="disclaimer_title">DISCLAIMER</string> + <string name="disclaimer">By using AIMSICD you have understood and agree that AIMSICD is an experimental + and informative Android application that can fail to detect surveillance and + tracking for many reasons. You also understand that it can be circumvented or + defeated by other means, not yet understood to the developers. Thus you also + agree and understand that the developers and companies related to this free + product, can in no way be held responsible for any results or outcome, + depending on the use of this application. + </string> + + + <!-- MENU --> + <string name="toggle_attack_detection">Wykrywanie przełącz Atak</string> + <string name="toggle_cell_tracking">Przełącz Åšledzenie komórki</string> <string name="backup_database">Kopia zapasowa bazy danych</string> - <string name="about_releases">Wydania</string> - <string name="about_wiki">Dokumentacja (WIKI)</string> - <string name="aimsicd_about_info3">Projekt na Android pozwalajÄ…cy wykrywać faÅ‚szywe stacje bazowe (IMSI-catchery)</string> - <string name="btn_start_logs">Rozpocznij</string> - <string name="btn_stop_logs">ZakoÅ„cz</string> - <string name="button_refresh">OdÅ›wież</string> - <string name="cell_id_label">CID:</string> - <string name="cell_info_title">Informacje o komórce</string> - <string name="cell_lookup">Wszystkie informacje o obecnej komórce</string> - <string name="ciphering_indicator_title">Wskaźnik szyfrowania</string> <string name="clear_database">Wyczyść bazÄ™ danych</string> - - <!-- Need to translate --> <string name="clear_database_question">All data will be deleted.\nAre you sure?</string> - <string name="command_hint">Wpisz komendÄ™ AT tutaj</string> - <string name="data_activity">Aktywność bazy danych</string> - <string name="data_status">Status danych</string> - <string name="database_export_successful">Eksport powiódÅ‚ siÄ™</string> - <string name="db_viewer">PodglÄ…d bazy danych</string> - <string name="device_imei">IMEI:</string> - <string name="device_info">Szczegóły telefonu/SIM</string> - <string name="device_info_title">Informacje o urzÄ…dzeniu</string> - <string name="device_type">Rodzaj telefonu</string> - <string name="device_version">Wersja RIL:</string> - <string name="disclaimer">Rozumiem, że AIMSICD jest aplikacjÄ… eksperymentalnÄ…</string> - <string name="execute_at">Wykonaj</string> - <string name="get_opencellid">Pobierz dane lokalnej stacji</string> - <string name="mcc_label">MCC:</string> - <string name="mnc_label">MNC:</string> - <string name="neighbouring_cells_num_title">Razem:</string> - <string name="neighbouring_cells_title">SÄ…siednie komórki</string> - <string name="network_cellid">CID:</string> - <string name="network_lac">LAC:</string> - <string name="network_sysid">ID systemu:</string> - <string name="network_type">Typ:</string> - <string name="pc_label">PC:</string> - <string name="pref_autostart_title">Uruchamiaj automatycznie</string> - <string name="pref_autostart_summ">Uruchamiaj po włączeniu systemu </string> - <string name="pref_refresh_automatic">Automatycznie</string> - <string name="pref_ui_icons_title">Ikony stanu</string> + <string name="restore_database">Odzyskaj bazÄ™ danych</string> <string name="preferences">Ustawienia</string> - <string name="quit">WyjÅ›cie</string> - <string name="response_label">Odpowiedź:</string> - <string name="samples_label">Próbki:</string> + <string name="press_once_again_to_exit">WciÅ›nij ponownie by wyjść.</string> + <string name="cell_lookup">Wszystkie informacje o obecnej komórce</string> <string name="send_logs">Debugging</string> - <string name="text_agree">Zgadzam siÄ™</string> - <string name="text_cancel">Anuluj</string> - <string name="text_disagree">Nie zgadzam siÄ™</string> - <string name="text_ok">OK</string> - <string name="timeout_spinner_10_min">10 min</string> - <string name="timeout_spinner_10_sec">10 sec</string> - <string name="timeout_spinner_20_sec">20 sec</string> - <string name="timeout_spinner_2_sec">2 sec</string> - <string name="timeout_spinner_30_sec">30 sec</string> - <string name="timeout_spinner_5_sec">5 sec</string> - <string name="timeout_spinner_title">Time out:</string> - <string name="timeout_spinner_prompt">Wybierz czas oczekiwania na odpowiedź</string> - <string name="ui_icon_flat">PÅ‚askie</string> - <string name="title_debug_logs">Logi</string> - <string name="title_ocid_key">Klucz API OpenCellID</string> - <string name="network_roaming">Roaming:</string> - <string name="network_psc">PCS:</string> - <string name="network_netid">ID sieci:</string> - <string name="network_name">Nazwa dostawcy:</string> - <string name="network_lte_timing_advance">TA (LTE):</string> - <string name="network_info">Informacje o sieci</string> - <string name="network_code">Kod dostawcy:</string> - <string name="network_baseid">ID stacji bazowej:</string> - <string name="msg_copied_to_clipboard">Skopiowano logi do schowka</string> - <string name="map_view">Widok mapy</string> <string name="no_network_connection_title">Brak połączenia z Internetem</string> - <string name="ocid_api_error">Błąd pobierania klucza:</string> - <string name="ocid_api_success">Zapisano nowy klucz</string> - <string name="open_cell_id_label">Dane OpenCellID</string> + <string name="no_network_connection_message">Nie da siÄ™ pobrać danych z OpenCellID bez połączenia Internetowego. ProszÄ™ włączyć połączenie danych!</string> + + <!-- MAP VIEWER --> + <string name="get_opencellid">Pobierz dane lokalnej stacji</string> + + <!-- LAYOUT --> + <string name="device_info_title">Informacje o urzÄ…dzeniu</string> + <string name="sim_info_title">Informacje o SIM</string> + <string name="network_info">Informacje o sieci</string> + <string name="cell_info_title">Informacje o komórce</string> + <string name="neighbouring_cells_title">SÄ…siednie komórki</string> + <string name="ciphering_indicator_title">Wskaźnik szyfrowania</string> + <string name="neighbouring_cells_num_title">Razem:</string> <string name="sim_country">Kraj:</string> <string name="sim_operator_id">ID operatora:</string> - <string name="sim_info_title">Informacje o SIM</string> - <string name="sim_imsi">IMSI:</string> <string name="sim_operator_name">Nazwa operatora:</string> + <string name="sim_imsi">IMSI:</string> <string name="sim_serial">Numer seryjny:</string> - <string name="message_request_api_key">Wybierz OK by pobrać klucz API z OpenCellID.org. Pozwoli Ci to na pobranie danych i wyÅ›wietlanie ich na mapie, oraz na wysyÅ‚anie zebranych danych. JeÅ›li nie wyÅ›lesz żadanych danych w ciÄ…gu 20dni, Twój klucz może zostać zdezaktywowany.</string> + <string name="device_type">Rodzaj telefonu:</string> + <string name="device_imei">IMEI:</string> + <string name="device_version">Wersja RIL:</string> + <string name="network_name">Nazwa dostawcy:</string> + <string name="network_code">Kod dostawcy:</string> + <string name="network_type">Typ:</string> + <string name="network_lac">LAC:</string> + <string name="network_cellid">CID:</string> + <string name="data_activity">Aktywność bazy danych:</string> + <string name="data_status">Status danych:</string> + <string name="network_roaming">Roaming:</string> + <string name="network_lte_timing_advance">TA (LTE):</string> + <string name="button_refresh">OdÅ›wież</string> + <string name="drawer_open">Otwórz menu</string> + <string name="drawer_close">Zamknij menu</string> + <string name="network_psc">PSC:</string> + + <!-- Upload BTS to OpenCellID --> + <string name="upload_bts">WyÅ›lij dane o lokalnych komórkach</string> + + <!-- ABOUT LAYOUT --> + <string name="about_aimsicd">O AIMSICD</string> + <string name="app_version">Wersja: </string> + <string name="aimsicd_about_info3">Projekt na Android pozwalajÄ…cy wykrywać faÅ‚szywe stacje bazowe (IMSI-catchery) w sieci GSM/UMTS.</string> + <string name="about_github">AIMSICD na Githubie</string> + <string name="about_wiki">Dokumentacja (WIKI)</string> + <string name="about_contribute">PRZYCZYNIAJÄ„</string> + <string name="about_disclaimer">ZASTRZEÅ»ENIE</string> + <string name="about_releases">WYDANIA</string> + <string name="about_changelog">LISTA ZMIAN</string> + <string name="about_license">LICENCJA</string> + <string name="about_credits">TWÓRCY</string> + <string name="about_desc_icon_idle">Idle / Loading.</string> + <string name="about_desc_icon_active_tracking_near">Active tracking close to you!</string> + <string name="about_desc_icon_ok">Wszystko OK.</string> + <string name="about_desc_icon_tracked_down">JesteÅ› Å›ledzony!</string> + <string name="about_desc_icon_insecure_area">Insecure Service Area. Leave it!</string> + <string name="about_desc_icon_run">RUN! Handset manipulated!</string> + <string name="about_desc_icon_title">Kliknij na ikonÄ™ by uzyskać wiÄ™cej informacji:</string> + + + <!-- CDMA LAYOUT --> + <string name="network_netid">ID sieci:</string> + <string name="network_sysid">ID systemu:</string> + <string name="network_baseid">ID stacji bazowej:</string> + + <!-- LOCATION HELPER --> <string name="location_error_title">Serwis lokalizacji wyłączony</string> - <string name="lng_label">Wys.:</string> - <string name="lat_label">Szer.:</string> - <string name="lac_label">LAC:</string> <string name="location_error_message">Nie można Å›ledzić komórek bez włączonego GPSu. Włączyć teraz?</string> - <string name="no_network_connection_message">Nie da siÄ™ pobrać danych z OpenCellID bez połączenia Internetowego. ProszÄ™ włączyć połączenie danych.</string> - <string name="pref_enable_cell_monitoring_title">Monitorowanie komórek</string> + + <!-- PREFERENCES --> + <string name="pref_system_title">Ustawienia systemu</string> + <string name="pref_autostart_title">Uruchamiaj automatycznie</string> + <string name="pref_autostart_summ">Uruchamiaj po włączeniu systemu</string> + <string name="pref_persistservice_title">DziaÅ‚aj w tyle</string> + <string name="pref_persistservice_summ">Serwis bÄ™dzie uruchomiony w tle po wyjÅ›ciu z aplikacji</string> + <string name="pref_protection_title">Ustawienia ochrony</string> <string name="pref_enable_cell_title">Åšledzenie komórek</string> <string name="pref_enable_cell_summ">Włącz automatyczne Å›ledzenie komórek</string> - <string name="pref_enable_cell_monitoring_summ">Włącz automatyczne monitorowanie komórek</string> - <string name="pref_femto_action_title">Ochrona Femtocell</string> <string name="pref_femto_title">Wykrywanie Femtocell</string> - <string name="pref_map_title">Ustawienia widoku mapy</string> - <string name="pref_map_type_summ">WyÅ›wietl mapÄ™ w różnych stylach</string> - <string name="pref_map_type_title">Rodzaj mapy</string> + <string name="pref_femto_summ">(obecnie TYLKO dla telefonów z CDMA)</string> + <string name="pref_femto_action_title">Ochrona Femtocell</string> + <string name="pref_femto_action_summ">WÅ‚acz tryb samolotowy po wykryciu Femtocell</string> + <string name="pref_ui_title">Ustawienia interfacu</string> + <string name="pref_ui_icons_title">Ikony stanu</string> + <string name="pref_ui_icons_summ">Wybór ikony</string> + <string name="pref_refresh_title">CzÄ™stotliwość odÅ›wieżania</string> + <string name="pref_refresh_summ">Kontroluj czÄ™stotliwość odÅ›wieżania danych\nBieżący wybór: %s</string> + <string name="pref_ocid_title">Ustawienia OpenCellID</string> + <string name="pref_ocid_key_title">Klucz API OpenCellID</string> <string name="pref_ocid_key_summ">Wpisz swój klucz API do OpenCellID</string> + <string name="pref_enable_cell_monitoring_title">Monitorowanie komórek</string> + <string name="pref_enable_cell_monitoring_summ">Włącz automatyczne monitorowanie komórek</string> + <string name="pref_request_ocid_key">Request OCID API Key</string> <string name="pref_ocid_requestkey_summary">Pobierz nowy klucz API dla danych OpenCellID</string> - <string name="pref_ocid_key_title">Klucz API OpenCellID</string> - <string name="pref_protection_title">Ustawienia ochrony</string> - <string name="pref_refresh_title">CzÄ™stotliwość odÅ›wieżania</string> - <string name="pref_request_ocid_key">Pobierz nowy klucz</string> - <string name="pref_system_title">Ustawienia systemu</string> - <string name="pref_ui_icons_summ">Wybór ikony</string> - <string name="pref_ui_title">Ustawienia interfacu</string> - <string name="press_once_again_to_exit">WciÅ›nij ponownie by wyjść</string> - <string name="restore_database">Odzyskaj bazÄ™ danych.</string> - <string name="serial_device_prompt">Wybierz numer seryjny urzÄ…dzenia</string> - <string name="sms_title">Przechwycono SilentSMS</string> - <string name="sms_message">Przechwycono SilentSMS!\n\nWiÄ™cej infromacji w widoku bazy danych!</string> + + <!-- MAP PREFERENCES --> + <string name="pref_map_title">Ustawienia widoku mapy</string> + <string name="pref_map_type_title">Rodzaj mapy</string> + <string name="pref_map_type_summ">WyÅ›wietl mapÄ™ w różnych stylach</string> + + <!-- MAP INFOWINDOW --> + <string name="cell_id_label">CID: </string> + <string name="lac_label">LAC: </string> + <string name="mcc_label">MCC: </string> + <string name="mnc_label">MNC: </string> + <string name="pc_label">PC: </string> + <string name="samples_label">Próbki: </string> + <string name="open_cell_id_label">Dane OpenCellID</string> + <string name="lat_label">Szer.: </string> + <string name="lng_label">Wys.: </string> + + <!-- Database Viewer --> <string name="table_names_prompt">Wybierz tabelÄ™</string> - <string name="table_contains_no_data">Brak danych do wyÅ›wietlenia</string> - <string name="upload_bts">WyÅ›lij dane o lokalnych komórkach</string> + <string-array name="table_names"> + <item>@string/unique_bts_data</item> + <item>@string/bts_measurements</item> + <item>@string/imported_ocid_data</item> + <item>@string/default_mmc_locations</item> + <item>@string/silent_sms</item> + <item>@string/measured_signal_strengths</item> + <item>@string/eventlog</item> + </string-array> + <string name="database_export_successful">Eksport powiódÅ‚ siÄ™</string> + + <!-- AT Command Interface --> + <string name="at_command_title">Interface komend AT</string> + <string name="response_label">Odpowiedź:</string> + <string name="execute_at">Wykonaj</string> <string name="serial_device_title">Obecny numer seryjny urzÄ…dznia:</string> - <string name="pref_refresh_summ">Kontroluj czÄ™stotliwość odÅ›wieżania danych\nBieżący wybór: %s</string> - <string name="tracking">Åšledzenie</string> - <string name="disclaimer_title">Uwagi</string> - <string name="main">Główne</string> - <string name="pref_ocid_title">Ustawienia OpenCellID</string> - <string name="pref_persistservice_summ">Serwis bÄ™dzie uruchomiony w tle po wyjÅ›ciu z aplikacji</string> - <string name="pref_persistservice_title">DziaÅ‚aj w tyle</string> + <string name="serial_device_prompt">Wybierz numer seryjny urzÄ…dzenia</string> <string name="serial_device_spinner_title">Wykryte urzÄ…dzenia:</string> - <string name="settings">Ustawienia</string> - <string name="pref_femto_summ">(obecnie TYLKO dla telefonów z CDMA)</string> - <string name="pref_femto_action_summ">WÅ‚acz tryb samolotowy po wykryciu Femtocell</string> - <string name="title_activity_about_pop_up">Szczegółowe wyjaÅ›nienie</string> - <string name="drawer_close">Zamknij menu</string> - <string name="drawer_open">Otwórz menu</string> + <string name="timeout_spinner_title">Timeout:</string> + <string name="timeout_spinner_prompt">Wybierz czas oczekiwania na odpowiedź</string> + <string name="command_hint">Wpisz komendÄ™ AT tutaj.</string> + + <!-- SILENT SMS FRAGMENT --> + <string name="sms_title">Przechwycono SilentSMS</string> + <string name="sms_message">Przechwycono SilentSMS!\n\nWiÄ™cej infromacji w widoku bazy danych.</string> + <string name="table_contains_no_data">Brak danych do wyÅ›wietlenia.</string> + + <!-- Request OpenCellID Key --> + <string name="title_ocid_key">Klucz API OpenCellID</string> + <string name="message_request_api_key">Wybierz OK by pobrać klucz API z OpenCellID.org. Pozwoli Ci to na pobranie danych i wyÅ›wietlanie ich na mapie, oraz na wysyÅ‚anie zebranych danych. JeÅ›li nie wyÅ›lesz żadanych danych w ciÄ…gu 20dni, Twój klucz może zostać zdezaktywowany.</string> + <string name="ocid_api_error">Błąd pobierania klucza: </string> + <string name="ocid_api_success">Zapisano nowy klucz</string> + + <!-- Debug logs --> + <string name="title_debug_logs">Logi</string> + <string name="btn_clear_logs">Wyczyść</string> + <string name="btn_copy_to_clipboard">Kopiuj</string> + <string name="msg_copied_to_clipboard">Skopiowano logi do schowka</string> + <string name="btn_stop_logs">ZakoÅ„cz</string> + <string name="btn_start_logs">Rozpocznij</string> + + <!-- Detailed Info Strings --> + <string name="title_activity_about_pop_up">SZCZEGÓÅOWY OPIS</string> <string name="detail_info_idle">Aplikacja jest bezczynna. Włącz Å›ledzenie w menu.</string> <string name="detail_info_normal">Nie wykryto żadnych zagrożeÅ„.</string> - <string name="detail_info_run">Wykryto manipulacjÄ™: ktoÅ› próbuje zdalnie manipulować Twoim telefonem. Zniszcz lub sprzedaj telefon!</string> <string name="detail_info_medium">Ta okolica nie jest bezpieczna: wykryto co najmniej jednÄ… nieznanÄ… stacjÄ™ bazowÄ… lub używane jest szyfrowanie sÅ‚absze niż A5/3. Wszystkie wiadomoÅ›ci i rozmowy w tym rejonie mogÄ… być przechwycone.</string> - <string name="detail_info_danger">Wykryto Å›ledzenie: W pobliżu jest aktywny FBTS lub IMSIC, uniemożliwiajÄ…c bezpieczne, szyfrowane połączenie z dostawcÄ… sieci. PozbÄ…dź siÄ™ swojego telefou, zniszcz kartÄ™ SIM i zgÅ‚oÅ› jÄ… jako zagubionÄ…!</string> <string name="detail_info_high">Wykryto wrogÄ… aktywność: IMIC lub FBTS aktywnie Å›ledzi użytkowników! Wyjmij bateriÄ™ z telefoni i unikaj tego miejsca!</string> - <string name="monitoring_cell_information">Monitorowanie informacji komórek</string> - <string name="stopped_monitoring_cell_information">Wstrzymano monitorowanie komórek</string> - <string name="tracking_cell_information">Åšledzenie informacji komórek</string> - <string name="stopped_tracking_cell_information">Wstrzymano Å›ledzenie komórek</string> - <string name="only_one_api_per_day">Możesz pobrać tylko jeden klucz OCID na dobÄ™.\nSpróbuj później</string> - <string name="cell_monitoring_active">Monitoring komórek aktywny</string> + <string name="detail_info_danger">Wykryto Å›ledzenie: W pobliżu jest aktywny FBTS lub IMSIC, uniemożliwiajÄ…c bezpieczne, szyfrowane połączenie z dostawcÄ… sieci. PozbÄ…dź siÄ™ swojego telefou, zniszcz kartÄ™ SIM i zgÅ‚oÅ› jÄ… jako zagubionÄ…!</string> + <string name="detail_info_run">Wykryto manipulacjÄ™: ktoÅ› próbuje zdalnie manipulować Twoim telefonem. Zniszcz lub sprzedaj telefon!</string> + <string name="open_cell_id_button_cancel">Anuluj</string> + <string name="open_cell_id_button_ok">OK</string> + + <!-- UI Icon Preferences --> + <string name="ui_icon_flat">PÅ‚askie</string> + <string name="ui_icon_sense">Sense</string> + <string name="ui_icon_white">BiaÅ‚e</string> + <string name="map_type_terrain">Teren</string> + <string name="map_type_normal">Zwyczajna</string> + <string name="pref_refresh_manual">RÄ™cznie</string> + <string name="pref_refresh_automatic">Automatycznie</string> + <string name="pref_refresh_2s">2 sek</string> + <string name="pref_refresh_5s">5 sek</string> + <string name="pref_refresh_10s">10 sek</string> + <string name="pref_refresh_25s">25 sek</string> + <string name="pref_refresh_45s">45 sek</string> + <string name="pref_refresh_1_min">1 min</string> + <string name="pref_refresh_5_min">5 min</string> + <string name="timeout_spinner_2_sec">2 sek</string> + <string name="timeout_spinner_5_sec">5 sek</string> + <string name="timeout_spinner_10_sec">10 sek</string> + <string name="timeout_spinner_20_sec">20 sek</string> + <string name="timeout_spinner_30_sec">30 sek</string> + <string name="timeout_spinner_10_min">10 min</string> + <string name="main">Główne</string> + <string name="settings">Ustawienia</string> + <string name="application">Aplikacja</string> + <string name="monitoring_cell_information">Monitorowanie informacji komórek.</string> + <string name="stopped_monitoring_cell_information">Wstrzymano monitorowanie komórek.</string> + <string name="tracking_cell_information">Åšledzenie informacji komórek.</string> + <string name="stopped_tracking_cell_information">Wstrzymano Å›ledzenie komórek.</string> + <string name="only_one_key_per_day">Możesz pobrać tylko jeden klucz OCID na dobÄ™.\nSpróbuj później.</string> + <string name="cell_id_doesnt_exist_in_db">ID komórki nie istnieje w bazie danych OCID!</string> + <string name="hostile_service_area_changing_lac_detected">Niezabezpieczona okolica: LAC zostaÅ‚ zmieniony!</string> + <string name="femtocell_detection_active">Wykrywanie FemtoCell aktywne.</string> + <string name="cell_tracking_active">Åšledzenie komórek aktywne.</string> + <string name="cell_monitoring_active">Monitoring komórek aktywny.</string> <string name="phone_type">Rodzaj telefonu</string> <string name="status_idle">OczekujÄ™…</string> <string name="status_good">Brak zagrożeÅ„. Wszystko OK.</string> <string name="alert_threat_detected">UWAGA: Wykryto zagrożenie!</string> - <string name="aletr_femtocell_connection_detected">UWAGA: Wykryto połączenie FemtoCell!</string> + <string name="alert_femtocell_connection_detected">UWAGA: Wykryto połączenie FemtoCell!</string> <string name="alert_silent_sms_detected">UWAGA: Wykryto SilentSMS (Type-0)!</string> - <string name="femtocell_only_on_cdma_devices">Aplikacja potrafi wykrywać FemtoCell tylko przez połączenie CDMA</string> - <string name="service_state_changed">Zmieniony zostaÅ‚ stan usÅ‚ugi</string> - <string name="stopped_tracking_femtocell">Wstrzymano Å›ledzenie połączeÅ„ FemtoCell</string> + <string name="alert_silent_voice_sms_detected">ALERT: Silent Voice SMS detected!</string> + <string name="alert_silent_wap_sms_detected">ALERT: Wap Push SMS detected!</string> + <string name="femtocell_only_on_cdma_devices">Aplikacja potrafi wykrywać FemtoCell tylko przez połączenie CDMA.</string> + <string name="service_state_changed">Zmieniony zostaÅ‚ stan usÅ‚ugi!</string> + <string name="stopped_tracking_femtocell">: Wstrzymano Å›ledzenie połączeÅ„ FemtoCell.</string> <string name="alert_femtocell_tracking_detected">UWAGA! Wykryto Å›ledzenie FemtoCell!</string> - <string name="femtocell_detection_active">Wykrywanie FemtoCell aktywne</string> - <string name="cell_tracking_active">Åšledzenie komórek aktywne</string> - <string name="cell_id_doesnt_exist_in_db">ID komórki nie istnieje w bazie danych OCID</string> - <string name="application">Aplikacja</string> - <string name="hostile_service_area_changing_lac_detected">Niezabezpieczona okolica: LAC zostaÅ‚ zmieniony</string> <string name="refreshing_every">OdÅ›wieżanie co</string> - <string name="refreshing_now">OdÅ›wieżam</string> - <string name="seconds">sekund</string> + <string name="refreshing_now">OdÅ›wieżam…</string> + <string name="seconds">sekund.</string> + <string name="contacting_opencellid_for_data">ÅÄ…czenie z OpenCellID by uzyskać potrzebne dane…\nMoże to potrwać nawet minutÄ™.</string> <string name="unable_to_determine_last_location">Nie udalo siÄ™ okreÅ›lić Twojej ostatniej lokalizacji. Włącz lokalizacjÄ™ w ustawieniach telefonu.</string> - <string name="no_tracked_locations_found">Brak zapisanych lokalizacji do pokazania</string> - <string name="contacting_opencellid_for_data">ÅÄ…czenie z OpenCellID by uzyskać potrzebne dane.\nTo może zająć chwilÄ™…</string> - - <string name="toggle_attack_detection">Wykrywanie przełącz Atak</string> - <string name="toggle_cell_tracking">Przełącz Åšledzenie komórki</string> + <string name="no_tracked_locations_found">Brak zapisanych lokalizacji do pokazania.</string> + <string name="no_data_for_publishing">Brak nowych danych do wysÅ‚ania.</string> <string name="download_error">Błąd pobierania:</string> - <string name="error_backing_up_data">Błąd tworzenia kopii zapasowej.</string> - <string name="error_restoring_database">Błąd przywracania bazy danych.</string> - <string name="status">Status:</string> - <string name="run">UCIEKAJ!</string> + <string name="opencellid_data_successfully_received">Poprawnie odebrano dane.</string> + <string name="error_retrieving_opencellid_data">Błąd uzyskiwania danych z OpenCellID.\nSprawdź swoje połączenie internetowe!</string> + <string name="opencellid_data_successfully_received_markers_updated">Poprawnie odebrano dane. Punkty na mapie zostaÅ‚y zaktualizowane.</string> + <string name="uploaded_bts_data_successfully">Dane do OpenCellID zostaÅ‚y przesÅ‚ane.</string> + <string name="error_uploading_bts_data">Błąd wysyÅ‚ania danych do OpenCellID!</string> <string name="restore_database_completed">Odzyskano bazÄ™ danych.</string> + <string name="error_restoring_database">Błąd przywracania bazy danych.</string> + <string name="database_backup_successfully_saved_to">Kopia zapasowa zapisana do:</string> + <string name="error_backing_up_data">Błąd tworzenia kopii zapasowej.</string> + <string name="no_opencellid_key_detected">Brak klucza API OpenCellID. Musisz najpierw wpisać lub pobrać swój klucz.</string> <string name="refreshing_display">OdÅ›wieżanie ekranu</string> + <string name="unable_to_acquire_root_access">Nie udaÅ‚o siÄ™ usyskać praw ROOTa. Interface komend AT wymaga praw ROOTa. Sprawdź swoje urzÄ…dzenie i spróbuj ponownie.</string> + <string name="unable_to_detect_busybox">Nie udaÅ‚o siÄ™ odnaleźć BusyBox na Twoim urzÄ…dzeniu. Interface komend AT wymaga BusyBoxa! Sprawdź swoje urzÄ…dzenie i spróbuj ponownie.</string> + <string name="unknown_error_trying_to_acquire_serial_device">WystÄ…piÅ‚ nieznany bÅ‚ad przy próbie uzyskania Serial Device. Prosimy o sprawdzenie logów i przesÅ‚anie ich do nas na Github. Link do Githuba znajedziesz w sekcji \'O aplikacji\'.</string> + <string name="unknown_error_initialising_at_command_injector">AWystÄ…piÅ‚ nieznany błąd przy uruchamianiu inteface komend AT. Prosimy o sprawdzenie logów i przesÅ‚anie ich do nas na Github. Link do Githuba znajedziesz w sekcji \'O aplikacji\'.</string> + <string name="getting_ocid_api_key">Pobieranie klucza OpenCellID…</string> + <string name="unable_to_create_map">Nie powiodÅ‚o siÄ™ tworzenie mapy!</string> + <string name="describe_the_problem_you_had">W celu uzyskania pomocy opisz swój problem. Problemy bez opisu sÄ… automatycznie ignorowane!\n</string> + <string name="status">Status:</string> + <string name="idle">OCZEKUJE</string> <string name="normal">ZWYCZAJNY</string> - <string name="no_opencellid_key_detected">Brak klucza API OpenCellID. Musisz najpierw wpisać lub pobrać swój klucz.</string> - <string name="no_data_for_publishing">Brak nowych danych do wysÅ‚ania.</string> - <string name="idle">Oczekuje</string> - <string name="high">Wysoki</string> - <string name="help_settings_restore_db">Wczytaj bazÄ™ danych z karty</string> - <string name="help_settings_reset_db">Wyczyść wszystkie tabele bazy danych</string> - <string name="getting_ocid_api_key">Pobieranie klucza OpenCellID</string> - <string name="help_app_about">O nas i kogo wspieramy</string> - <string name="help_app_add_get_ocid_api_key">Uzyskaj klucz API do OpenCellID by pobierać i wysyÅ‚ać dane.</string> - <string name="help_main_acd">Pokaż szczegółowe porównanie obecnie połączonych komórek używajÄ…c danych z OpenCellID. PodÅ›wietla różnice.</string> - <string name="help_main_antenna_map_view">Mapa pokazujÄ…ca pobliskie nadajniki.</string> - <string name="help_main_at_command_interface">Interface komend AT pozwalajÄ…cy wysyÅ‚ać komendy AT do BS.</string> + <string name="medium">ÅšREDNIE</string> + <string name="high">WYSOKI</string> + <string name="danger">ZAGROÅ»ENIE</string> + <string name="run">UCIEKAJ!</string> + + <!-- Advanced User Settings: SMS Detection Strings --> + <string name="adv_user_info">This menu is for advanced users only!\n\nPlease do not insert random strings because it will cause detection to go out of control.\n\nTo add a string choose the SMS type from the dropdown menu, type your detection string and press insert.\n\nTo delete from database long press on list view.</string> + + <!-- Advanced User Settings: Delete Detected SMS --> + <string name="adv_user_sms_info">This menu is for advanced users only!\nTo delete a detected SMS long press it in listview.</string> + <string name="title_activity_advanced_user">Delete Detected SMS</string> + + <string name="adv_user_pref_header">Advanced User Settings</string> + <string name="adv_user_pref_launch">Detection Strings</string> + <string name="adv_user_pref_sms_launch">Delete SMS</string> + <string name="adv_user_pref_summary">Insert and delete detection strings</string> + <string name="adv_user_pref_sms_summary">Delete Detected SMS</string> + + <!-- Advanced User Settings: Enable SMS Detection --> + <string name="adv_user_root_title">Enable SMS Detection</string> + <string name="adv_user_root_sum">Root is required to enable SMS detection</string> + + <!-- Detected SMS string for custom popup --> + <string name="detection_strings">Detection Strings</string> + <string name="typezero_title">ATTENTION!</string> + <string name="typezero_header">Type0 SMS Detected</string> + <string name="typezero_data">Silent SMS Message detected!\n\nDetails: See Database Viewer.\n\nIf you want this data to be analysed by our developers, send the logfiles through the Debugging menu.</string> + <string name="typevoice_title">ATTENTION!</string> + <string name="typevoice_header">Silent Voice Detected</string> + <string name="typevoice_data">Silent Voice SMS Message detected!\n\nDetails: See Database Viewer.\n\nIf you want this data to be analysed by our developers, send the logfiles through the Debugging menu.</string> + <string name="typewap_header">Wap Push Detected</string> + <string name="typewap_data">Wap Push SMS Message has been detected!\n\nDetails are available through the Database Viewer.\n\nIf you want this data to be analysed by our devs, enter the Debugging menu and send the logfiles via E-Mail.</string> + + + <!-- Section Main--> <string name="help_main_current_threat_level">Statystyki AIMSICD, pobliskich komórek i metod szyfrowania.</string> - <string name="help_main_database_viewer">Pokaż tablele baz danych.</string> <string name="help_main_phone_sim_details">Szczegóły SIM, IMEI, TMSI.</string> + <string name="help_main_acd">Pokaż szczegółowe porównanie obecnie połączonych komórek używajÄ…c danych z OpenCellID. PodÅ›wietla różnice.</string> + <string name="help_main_database_viewer">Pokaż tablele baz danych.</string> + <string name="help_main_antenna_map_view">Mapa pokazujÄ…ca pobliskie nadajniki.</string> + <string name="help_main_at_command_interface">Interface komend AT pozwalajÄ…cy wysyÅ‚ać komendy AT do BS (wymaga ROOT).</string> + + <!-- Section Tracking--> + <string name="help_tracking_toggle_attack_detection">Rozpoczyna/zatrzymuje wykrywanie ataku i zbieranie danych do lokalnej bazy danych.</string> + <string name="help_tracking_toggle_cell_tracking">Zacznij Å›ledzić komórki do wyÅ›wietlania na antenie Map Viewer i ewentualnie później przesÅ‚ać do OCID.</string> + + <!-- Section Settings--> + <string name="help_settings_preferences">Ustawienia AIMSICD, czas odÅ›wieżania i zachowanie serwisów.</string> <string name="help_settings_backup_db">Utwórz kopiÄ™ zapasowÄ… bazy danych na karcie SD.</string> + <string name="help_settings_restore_db">Wczytaj bazÄ™ danych z karty.</string> + <string name="help_settings_reset_db">Wyczyść wszystkie tabele bazy danych.</string> <string name="help_settings_export_db_to_csv">Eksport z bazy danych do plików CSV.</string> <string name="help_settings_import_db_from_csv">Importuj do bazy danych z plików CSV.</string> - <string name="help_settings_preferences">Ustawienia AIMSICD, czas odÅ›wieżania i zachowanie serwisów.</string> - <string name="help_tracking_toggle_cell_tracking">Zacznij Å›ledzić komórki do wyÅ›wietlania na antenie Map Viewer i ewentualnie później przesÅ‚ać do OCID.</string> - <string name="help_tracking_toggle_attack_detection">Rozpoczyna/zatrzymuje wykrywanie ataku i zbieranie danych do lokalnej bazy danych.</string> - <string name="danger">ZAGROÅ»ENIE</string> - <string name="database_backup_successfully_saved_to">Kopia zapasowa zapisana do:</string> - <string name="describe_the_problem_you_had">W celu uzyskania pomocy opisz swój problem. Problemy bez opisu sÄ… automatycznie ignorowane.</string> - <string name="error_retrieving_opencellid_data">Błąd uzyskiwania danych z OpenCellID.\nSprawdź swoje połączenie internetowe.</string> - <string name="error_uploading_bts_data">Błąd wysyÅ‚ania danych do OpenCellID.</string> - <string name="medium">ÅšREDNIE</string> - <string name="opencellid_data_successfully_received">Poprawnie odebrano dane.</string> - <string name="opencellid_data_successfully_received_markers_updated">Poprawnie odebrano dane. Punkty na mapie zostaÅ‚y zaktualizowane.</string> - <string name="unable_to_create_map">Nie powiodÅ‚o siÄ™ tworzenie mapy.</string> - <string name="unable_to_acquire_root_access">Nie udaÅ‚o siÄ™ usyskać praw ROOTa. Interface komend AT wymaga praw ROOTa. Sprawdź swoje urzÄ…dzenie i spróbuj ponownie.</string> - <string name="unable_to_detect_busybox">Nie udaÅ‚o siÄ™ odnaleźć BusyBox na Twoim urzÄ…dzeniu. Interface komend AT wymaga BusyBoxa! Sprawdź swoje urzÄ…dzenie i spróbuj ponownie.</string> - <string name="unknown_error_initialising_at_command_injector">WystÄ…piÅ‚ nieznany błąd przy uruchamianiu inteface komend AT. Prosimy o sprawdzenie logów i przesÅ‚anie ich do nas na Github. Link do Githuba znajedziesz w sekcji \'O aplikacji\'.</string> - <string name="unknown_error_trying_to_acquire_serial_device">WystÄ…piÅ‚ nieznany bÅ‚ad przy próbie uzyskania Serial Device. Prosimy o sprawdzenie logów i przesÅ‚anie ich do nas na Github. Link do Githuba znajedziesz w sekcji \'O aplikacji\'.</string> - <string name="uploaded_bts_data_successfully">Dane do OpenCellID zostaÅ‚y przesÅ‚ane.</string> - <string name="unable_to_restore_backup_from_previous_database_version">Nie udaÅ‚o siÄ™ odzyskać kopii z poprzedniej wersji bazy danych.</string> - <string name="waiting_for_location">Oczekiwanie na lokalizacjÄ™…</string> - <string name="default_mmc_locations">DomyÅ›lne lokalizacje MMC</string> - <string name="bts_measurements">Pomiary BTS</string> - <string name="eventlog">Logi zdarzeÅ„</string> - <string name="imported_ocid_data">Importowane dane OpenCellID</string> - <string name="measured_signal_strengths">Pomiary siÅ‚y sygnałów</string> - <string name="unique_bts_data">Unikalne dane BTS</string> - <string name="ui_icon_white">BiaÅ‚e</string> - <string name="ui_icon_sense">Sense</string> - <string name="silent_sms">Silent SMS</string> - <string name="pref_refresh_manual">RÄ™cznie</string> - <string name="pref_refresh_45s">45 sek</string> - <string name="pref_refresh_2s">2 sek</string> - <string name="pref_refresh_25s">25 sek</string> - <string name="pref_refresh_1_min">1 min</string> - <string name="pref_refresh_10s">10 sek</string> - <string name="pref_refresh_5_min">5 min</string> - <string name="pref_refresh_5s">5 sek</string> - <string name="map_type_normal">Zwyczajna</string> - <string name="map_type_terrain">Teren</string> - <string name="open_cell_id_button_cancel">Anuluj</string> - <string name="open_cell_id_button_ok">OK</string> - <string name="about_desc_icon_idle">DziaÅ‚anie aplikacji zostaÅ‚o wstrzymane.</string> - <string name="about_desc_icon_active_tracking_near">Wykryto Å›ledzenie: w pobliżu aktywny jest FBTS lub IMSIC!</string> - <string name="about_desc_icon_ok">Wszystko OK.</string> - <string name="about_desc_icon_tracked_down">JesteÅ› Å›ledzony!</string> - <string name="about_desc_icon_insecure_area">Ta okolica nie jest bezpieczna. PowinieneÅ› siÄ™ oddalić!</string> - <string name="about_desc_icon_run">Wykryto manipulacjÄ™: ktoÅ› próbuje zdalnie manipulować Twoim telefonem.</string> - <string name="about_desc_icon_title">Kliknij na ikonÄ™ by uzyskać wiÄ™cej informacji.</string> + <!-- Section Application--> + <string name="help_app_add_get_ocid_api_key">Uzyskaj klucz API do OpenCellID by pobierać i wysyÅ‚ać dane…</string> + <string name="help_app_about">O nas i kogo wspieramy.</string> <string name="help_app_download_local_bst">Pobierz bazÄ™ danych OCID.</string> <string name="help_app_upload_local_bst">WyÅ›lij dane o lokalnych BTS do OCID.</string> <string name="help_app_debugging">Wczytaj i wyÅ›lij logi.</string> <string name="help_app_quit">ZakoÅ„cz dziaÅ‚anie aplikacji.</string> + <string name="waiting_for_location">Oczekiwanie na lokalizacjÄ™…</string> + <string name="unable_to_restore_backup_from_previous_database_version">Nie udaÅ‚o siÄ™ odzyskać kopii z poprzedniej wersji bazy danych!</string> + <string name="unique_bts_data">Unikalne dane BTS</string> + <string name="bts_measurements">Pomiary BTS</string> + <string name="imported_ocid_data">Importowane dane OpenCellID</string> + <string name="default_mmc_locations">DomyÅ›lne lokalizacje MMC</string> + <string name="silent_sms">Silent SMS</string> + <string name="eventlog">Logi zdarzeÅ„</string> + <string name="measured_signal_strengths">Pomiary siÅ‚y sygnałów</string> + <string name="at_command_response_looking">*** Wykrywanie urzÄ…dzeÅ„ AT…\n</string> - <string name="at_command_response_found">Wykryto: </string>"" - <string name="at_command_response_setup_complete">*** Konfiguracja zakoÅ„czona ***\n</string>"" + <string name="at_command_response_found">Wykryto: </string> + <string name="at_command_response_setup_complete">*** Konfiguracja zakoÅ„czona ***\n</string> + + <string name="currently_connected_bts">Currently connected BTS</string> + <string name="well_known_encrypted_bts">Well known encrypted BTS</string> + <string name="unknown_or_insecure_bts">Unknown or insecure BTS</string> + <string name="new_or_recently_added_bts">New or recently added BTS</string> + + <string name="invalid_key_try_later">Invalid OpenCellId key, try again later.</string> + <string name="getting_ocid_key">Getting OpenCellId API Key...</string> <string-array name="pref_ui_icons_entries"> <item>@string/ui_icon_flat</item> diff --git a/app/src/main/res/values-ru/translatable_strings.xml b/app/src/main/res/values-ru/translatable_strings.xml index fab0fa1ed4228e56b0931b927344b6e756cb362f..7b05aadf6a8bd28723e9cc4e8eb7648208404d15 100644 --- a/app/src/main/res/values-ru/translatable_strings.xml +++ b/app/src/main/res/values-ru/translatable_strings.xml @@ -238,7 +238,7 @@ <string name="stopped_monitoring_cell_information">Мониторинг Ñотовой информации оÑтановлен.</string> <string name="tracking_cell_information">ОтÑÐ»ÐµÐ¶Ð¸Ð²Ð°Ð½Ð¸Ñ Ð´Ð°Ð½Ð½Ñ‹Ñ… Ñотового.</string> <string name="stopped_tracking_cell_information">ОтÑÐ»ÐµÐ¶Ð¸Ð²Ð°Ð½Ð¸Ñ Ð´Ð°Ð½Ð½Ñ‹Ñ… Ñотового оÑтановлена.</string> - <string name="only_one_api_per_day">Только один Ð·Ð°Ð¿Ñ€Ð¾Ñ Ð½Ð¾Ð²Ð¾Ð³Ð¾ ключа API за 24 чаÑа!\nПожалуйÑта, повторите попытку позже.</string> + <string name="only_one_key_per_day">Только один Ð·Ð°Ð¿Ñ€Ð¾Ñ Ð½Ð¾Ð²Ð¾Ð³Ð¾ ключа API за 24 чаÑа!\nПожалуйÑта, повторите попытку позже.</string> <string name="cell_id_doesnt_exist_in_db">ID Ñоты не ÑущеÑтвует в базе данных OCID!</string> <string name="hostile_service_area_changing_lac_detected">Ð’Ñ€Ð°Ð¶Ð´ÐµÐ±Ð½Ð°Ñ Ð·Ð¾Ð½Ð° обÑлуживаниÑ: Изменение LAC обнаружено!</string> <string name="femtocell_detection_active">Обнаружение фемтоÑот активно.</string> @@ -248,7 +248,7 @@ <string name="status_idle">СтатуÑ: Ðеработающий.</string> <string name="status_good">СтатуÑ: Хорошо. Угроз не обнаружено.</string> <string name="alert_threat_detected">ТРЕВОГÐ: Обнаружены некоторые угрозы!</string> - <string name="aletr_femtocell_connection_detected">ТРЕВОГÐ: Обнаружено Ñоединение Ñ Ñ„ÐµÐ¼Ñ‚Ð¾Ñотой!</string> + <string name="alert_femtocell_connection_detected">ТРЕВОГÐ: Обнаружено Ñоединение Ñ Ñ„ÐµÐ¼Ñ‚Ð¾Ñотой!</string> <string name="alert_silent_sms_detected">ТРЕВОГÐ: обнаруженный беÑÑˆÑƒÐ¼Ð½Ð°Ñ SMS (Type-0)!</string> <string name="femtocell_only_on_cdma_devices">AIMSICD может определÑть Ñоединение Ñ Ñ„ÐµÐ¼Ñ‚Ð¾Ñотой только на CDMA уÑтройÑтвах.</string> <string name="service_state_changed">Ð¡Ñ‚Ð°Ñ‚ÑƒÑ ÑервиÑа изменен!</string> @@ -276,7 +276,7 @@ <string name="unable_to_acquire_root_access">Ðевозможно получить ROOT доÑтуп на вашем уÑтройÑтве.\nÐ”Ð»Ñ Ð¸Ð½ÑŠÐµÐºÑ†Ð¸Ð¹ AT-команд в терминал требуетÑÑ ROOT доÑтуп.\nПожалуйÑта, проверьте наличие ROOT прав на вашем уÑтройÑтве и попробуйте еще раз</string> <string name="unable_to_detect_busybox">Ðевозможно обнаружить Busybox на вашем уÑтройÑтве.\nÐ”Ð»Ñ Ð¸Ð½ÑŠÐµÐºÑ†Ð¸Ð¹ AT-команд в терминал требуютÑÑ ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÐµÐ½Ñ‚Ñ‹ Busybox Ð´Ð»Ñ Ð¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ð¾Ð³Ð¾ функционированиÑ.\nПожалуйÑта, проверьте, что Busybox уÑтановлен на ваше уÑтройÑтво и попробуйте Ñнова</string> <string name="unknown_error_trying_to_acquire_serial_device">Произошла неизвеÑÑ‚Ð½Ð°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ° при попытке доÑÑ‚Ð¸Ð¶ÐµÐ½Ð¸Ñ Serial Device.\nПожалуйÑта, проверьте LogCat на возможные ошибки и отправьте их на Github.</string> - <string name="unknown_error_initialising_at_command_injector">An unknown error has occurred trying to initialise the AT Command Injector.\nPlease check your logcat for any errors and post them to Github or\nXDA, links to both of these locations can be found within the\nAbout section of the application.</string> + <string name="unknown_error_initialising_at_command_injector">An unknown error has occurred trying to initialise the AT Command Injector.\nPlease check your logcat for any errors and post them on our Github.</string> <string name="getting_ocid_api_key">Получение ключа API OpenCellID…</string> <string name="unable_to_create_map">Ðевозможно Ñоздать карту!</string> <string name="describe_the_problem_you_had">Ð’ÐИМÐÐИЕ! ПожалуйÑта, опишите проблему, ÐºÐ¾Ñ‚Ð¾Ñ€Ð°Ñ Ñƒ Ð²Ð°Ñ Ð±Ñ‹Ð»Ð°, прежде, чем отправить нам Ñти журналы. ÐЕТ ПОМОЩИ БЕЗ ОПИСÐÐИЯ!\n</string> diff --git a/app/src/main/res/values/translatable_strings.xml b/app/src/main/res/values/translatable_strings.xml index 76769a25fbcde6b1e9102c2619edede1f718d87e..c98b0cebf316ea70c32e75adea0aaa713f484197 100644 --- a/app/src/main/res/values/translatable_strings.xml +++ b/app/src/main/res/values/translatable_strings.xml @@ -3,7 +3,6 @@ <!-- Drawer --> <string name="tracking">Tracking</string> - <string name="device_info">Phone/SIM Details</string> <string name="map_view">Antenna Map Viewer</string> <string name="db_viewer">Database Viewer</string> @@ -28,20 +27,16 @@ <!-- MENU --> <string name="toggle_attack_detection">Toggle Attack Detection</string> <string name="toggle_cell_tracking">Toggle Cell Tracking</string> - <string name="backup_database">Backup Database</string> <string name="clear_database">Clear/Reset Database</string> <string name="clear_database_question">All data will be deleted.\nAre you sure?</string> - <string name="restore_database">Restore Database</string> <string name="preferences">Preferences</string> <string name="press_once_again_to_exit">Press again to exit.</string> <string name="cell_lookup">All Current Cell Details</string> <string name="send_logs">Debugging</string> - <string name="no_network_connection_title">No Internet Connection</string> - <string name="no_network_connection_message">Unable to download OpenCellID data without Internet - connectivity, please enable data connection!</string> + <string name="no_network_connection_message">Unable to download OpenCellID data without Internet connectivity, please enable data connection!</string> <!-- MAP VIEWER --> <string name="get_opencellid">Download BTS Data</string> @@ -202,7 +197,6 @@ <string name="detail_info_high">Hostile Service Actions Detected: An IMSI-Catcher (IMSIC) or fake BTS (FBTS) is actively tracking users. Active scanning takes place in this area. You should avoid this place, especially if there are political unrest. Take out your battery or kill your phone!</string> <string name="detail_info_danger">Hostile Tracking Detected: An FBTS or IMSIC is actively tracking YOU and preventing your phone from connecting through your normal encrypted mobile provider. If you\'re in danger or repercussions, destroy your phone + SIM and report it as recently stolen.</string> <string name="detail_info_run">Hostile Manipulation: Someone is trying to remotely manipulate your handset. Destroy (or sell) your phone and get a new one somewhere far away (don\'t carry your old phone to the changing place)! Use a new (anonymous) SIM card, change calling behavior and warn your friends by talking to them in real life, NOT by calling them!</string> - <string name="open_cell_id_button_cancel">Cancel</string> <string name="open_cell_id_button_ok">OK</string> @@ -234,7 +228,7 @@ <string name="stopped_monitoring_cell_information">Stopped monitoring Cell Information.</string> <string name="tracking_cell_information">Tracking Cell Information.</string> <string name="stopped_tracking_cell_information">Stopped tracking Cell Information.</string> - <string name="only_one_api_per_day">Only one new API key request per 24 hours!\nPlease try again later.</string> + <string name="only_one_key_per_day">Only one new API key request per 24 hours!\nPlease try again later.</string> <string name="cell_id_doesnt_exist_in_db">Cell ID does not exist in OCID Database!</string> <string name="hostile_service_area_changing_lac_detected">Hostile Service Area: Changing LAC Detected!</string> <string name="femtocell_detection_active">FemtoCell Detection Active.</string> @@ -244,7 +238,7 @@ <string name="status_idle">Status: Idle.</string> <string name="status_good">Status: Good. No Threats Detected.</string> <string name="alert_threat_detected">ALERT: Some Threat Detected!</string> - <string name="aletr_femtocell_connection_detected">ALERT: FemtoCell Connection Detected!</string> + <string name="alert_femtocell_connection_detected">ALERT: FemtoCell Connection Detected!</string> <string name="alert_silent_sms_detected">ALERT: Silent SMS (Type-0) detected!</string> <string name="alert_silent_voice_sms_detected">ALERT: Silent Voice SMS detected!</string> <string name="alert_silent_wap_sms_detected">ALERT: Wap Push SMS detected!</string> @@ -273,8 +267,8 @@ <string name="refreshing_display">Refreshing display</string> <string name="unable_to_acquire_root_access">Unable to acquire ROOT access on your device.\nAT Command Injection requires ROOT Terminal access.\nPlease check your device is ROOTED and try again.</string> <string name="unable_to_detect_busybox">Unable to detect Busybox on your device.\nAT Command Injection requires Busybox components to function correctly.\nPlease check your device has Busybox installed and try again.</string> - <string name="unknown_error_trying_to_acquire_serial_device">An unknown error has occurred trying to acquire the Serial Device.\nPlease check your logcat for any errors and post them to Github\nor XDA, links to both of these locations can be found within the\nAbout section of the application.</string> - <string name="unknown_error_initialising_at_command_injector">An unknown error has occurred trying to initialise the AT Command Injector.\nPlease check your logcat for any errors and post them to Github or\nXDA, links to both of these locations can be found within the\nAbout section of the application.</string> + <string name="unknown_error_trying_to_acquire_serial_device">An unknown error has occurred trying to acquire the Serial Device.\nPlease check your logcat for any errors and post them on our Github.</string> + <string name="unknown_error_initialising_at_command_injector">An unknown error has occurred trying to initialise the AT Command Injector.\nPlease check your logcat for any errors and post them on our Github.</string> <string name="getting_ocid_api_key">Getting OpenCellID API key…</string> <string name="unable_to_create_map">Unable to create map!</string> <string name="describe_the_problem_you_had">ATTENTION! Please describe the problem you had, before sending us these logs. NO HELP WITHOUT DESCRIPTIONS!\n</string> @@ -311,7 +305,6 @@ <string name="typevoice_title">ATTENTION!</string> <string name="typevoice_header">Silent Voice Detected</string> <string name="typevoice_data">Silent Voice SMS Message detected!\n\nDetails: See Database Viewer.\n\nIf you want this data to be analysed by our developers, send the logfiles through the Debugging menu.</string> - <string name="typewap_header">Wap Push Detected</string> <string name="typewap_data">Wap Push SMS Message has been detected!\n\nDetails are available through the Database Viewer.\n\nIf you want this data to be analysed by our devs, enter the Debugging menu and send the logfiles via E-Mail.</string> diff --git a/app/src/main/res/values/untranslatable_strings.xml b/app/src/main/res/values/untranslatable_strings.xml index 7a9642b6e402021bfec6af4598c0f5516763cb40..77dfcc539b07e83e8b80f06401d25054de118e15 100644 --- a/app/src/main/res/values/untranslatable_strings.xml +++ b/app/src/main/res/values/untranslatable_strings.xml @@ -8,6 +8,7 @@ <string name="aimsicd_about_info" translatable="false">Android IMSI-Catcher Detector (AIMSICD)</string> + <string name="buildozer_buildnumber" translatable="false">Buildozer Build: </string> <string name="aimsicd_wiki_link" translatable="false">https://github.com/SecUpwN/Android-IMSI-Catcher-Detector/wiki</string> <string name="aimsicd_contribute_link" translatable="false">https://github.com/SecUpwN/Android-IMSI-Catcher-Detector/blob/HEAD/CONTRIBUTING.md</string> <string name="disclaimer_link" translatable="false">https://github.com/SecUpwN/Android-IMSI-Catcher-Detector/blob/HEAD/DISCLAIMER</string> @@ -72,4 +73,4 @@ <item>@string/FLASH</item> <item>@string/WAPPUSH</item> </string-array> -</resources> +</resources> \ No newline at end of file