diff --git a/.gitignore b/.gitignore index 22a4ae4..90a2043 100644 --- a/.gitignore +++ b/.gitignore @@ -1,8 +1,36 @@ -.gradle -/local.properties -/.idea/workspace.xml -/.idea/libraries -.DS_Store -/build -/captures -/app/build +# Gradle files +.gradle/ +build/ + +# Local configuration file (sdk path, etc) +local.properties + +# Log/OS Files +*.log + +# Android Studio generated files and folders +captures/ +.externalNativeBuild/ +.cxx/ +*.apk +output.json + +# IntelliJ +*.iml +.idea/ +misc.xml +deploymentTargetDropDown.xml +render.experimental.xml + +# Keystore files +*.jks +*.keystore + +# Google Services (e.g. APIs or Firebase) +google-services.json + +# Android Profiling +*.hprof +obj/ +libs/ +jniLibs/ diff --git a/.idea/compiler.xml b/.idea/compiler.xml deleted file mode 100644 index 96cc43e..0000000 --- a/.idea/compiler.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/.idea/gradle.xml b/.idea/gradle.xml deleted file mode 100644 index 0833b17..0000000 --- a/.idea/gradle.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml deleted file mode 100644 index 1a3eaff..0000000 --- a/.idea/misc.xml +++ /dev/null @@ -1,46 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml index 146fd35..76d2193 100644 --- a/.idea/modules.xml +++ b/.idea/modules.xml @@ -3,7 +3,10 @@ - + + + + \ No newline at end of file diff --git a/.idea/runConfigurations.xml b/.idea/runConfigurations.xml deleted file mode 100644 index 7f68460..0000000 --- a/.idea/runConfigurations.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml index 6564d52..94a25f7 100644 --- a/.idea/vcs.xml +++ b/.idea/vcs.xml @@ -1,6 +1,6 @@ - + \ No newline at end of file diff --git a/Diva.iml b/Diva.iml index 4abea91..af7a2bf 100644 --- a/Diva.iml +++ b/Diva.iml @@ -1,19 +1,12 @@ - - - - - - - + + - + \ No newline at end of file diff --git a/README.md b/README.md index 8f731a9..b55f642 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,9 @@ +# Attention + +I've update the project to the a newer Android SDK version since it seems that the author is not willing to maintain it anymore. Besides I have kept the original README file as much as possible where ever it has a useful information. + +
+ # DIVA Android --- ## What is DIVA? @@ -30,8 +36,8 @@ I tried to put as much vulnerabilities as possible in a short period of time. I 9. Access Control Issues – Part 1 10. Access Control Issues – Part 2 11. Access Control Issues – Part 3 -12. Hardcoding Issues – Part 2 -13. Input Validation Issues – Part 3 +12. Hardcoding Issues – Part 2 **(Not fixed for the new Android SDK)** +13. Input Validation Issues – Part 3 **(Not fixed for the new Android SDK)** ## Can I contribute? Yes, you can help by sending us the details of vulnerabilities that we can implement in future versions of Diva. Please send an email to info [at] payatu.com with subject “DIVA Contribution”. @@ -65,17 +71,7 @@ We would love to hear from you about your experience with Diva. Please send us a ## Author Aseem Jakhar - -## About Payatu -Payatu is a boutique security testing company with specialization in: -* IoT Security -* Mobile Security -* Cloud security -* Web Security - -We also organize two International Security Conferences -* nullcon International Security Conference - http://nullcon.net -* hardwear.io Hardware Security Conference - http://hardwear.io - **Website:** http://payatu.com **Email:** info (at) payatu dot com + + diff --git a/app/build.gradle b/app/build.gradle index 0a95252..43deaa7 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -1,13 +1,14 @@ apply plugin: 'com.android.application' android { - compileSdkVersion 23 - buildToolsVersion "23.0.2" + namespace 'jakhar.aseem.diva' + compileSdk 35 + defaultConfig { applicationId "jakhar.aseem.diva" - minSdkVersion 15 - targetSdkVersion 23 + minSdk 21 + targetSdk 35 versionCode 1 versionName "1.0" } @@ -17,16 +18,31 @@ android { proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } + compileOptions { + sourceCompatibility JavaVersion.VERSION_11 + targetCompatibility JavaVersion.VERSION_11 + } sourceSets { main { + resources { + srcDirs = ['src/main/jni'] + } jni.srcDirs = [] } } + externalNativeBuild { + cmake { + version "3.22.1" + } + } + ndkVersion '27.1.12297006' } dependencies { - compile fileTree(dir: 'libs', include: ['*.jar']) - testCompile 'junit:junit:4.12' - compile 'com.android.support:appcompat-v7:23.1.0' - compile 'com.android.support:design:23.1.0' + implementation fileTree(dir: 'libs', include: ['*.jar']) + implementation 'androidx.appcompat:appcompat:1.7.0' + implementation 'com.google.android.material:material:1.12.0' + testImplementation 'junit:junit:4.13.2' + androidTestImplementation 'androidx.test.ext:junit:1.1.5' + androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.1' } diff --git a/app/src/androidTest/java/jakhar/aseem/diva/ApplicationTest.java b/app/src/androidTest/java/jakhar/aseem/diva/ApplicationTest.java deleted file mode 100644 index d704618..0000000 --- a/app/src/androidTest/java/jakhar/aseem/diva/ApplicationTest.java +++ /dev/null @@ -1,13 +0,0 @@ -package jakhar.aseem.diva; - -import android.app.Application; -import android.test.ApplicationTestCase; - -/** - * Testing Fundamentals - */ -public class ApplicationTest extends ApplicationTestCase { - public ApplicationTest() { - super(Application.class); - } -} \ No newline at end of file diff --git a/app/src/androidTest/java/jakhar/aseem/diva/ExampleInstrumentedTest.java b/app/src/androidTest/java/jakhar/aseem/diva/ExampleInstrumentedTest.java new file mode 100644 index 0000000..765dc15 --- /dev/null +++ b/app/src/androidTest/java/jakhar/aseem/diva/ExampleInstrumentedTest.java @@ -0,0 +1,26 @@ +package jakhar.aseem.diva; + +import android.content.Context; + +import androidx.test.platform.app.InstrumentationRegistry; +import androidx.test.ext.junit.runners.AndroidJUnit4; + +import org.junit.Test; +import org.junit.runner.RunWith; + +import static org.junit.Assert.*; + +/** + * Instrumented test, which will execute on an Android device. + * + * @see Testing documentation + */ +@RunWith(AndroidJUnit4.class) +public class ExampleInstrumentedTest { + @Test + public void useAppContext() { + // Context of the app under test. + Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext(); + assertEquals("jakhar.aseem.diva", appContext.getPackageName()); + } +} \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index b3d7e83..a526e7a 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -1,6 +1,6 @@ + xmlns:tools="http://schemas.android.com/tools"> @@ -15,7 +15,8 @@ + android:theme="@style/AppTheme.NoActionBar" + android:exported="true"> @@ -60,7 +61,8 @@ + android:label="@string/apic_label" + android:exported="true"> @@ -73,7 +75,8 @@ + android:label="@string/apic2_label" + android:exported="true"> diff --git a/app/src/main/java/jakhar/aseem/diva/APICreds2Activity.java b/app/src/main/java/jakhar/aseem/diva/APICreds2Activity.java index baaad21..d594ced 100644 --- a/app/src/main/java/jakhar/aseem/diva/APICreds2Activity.java +++ b/app/src/main/java/jakhar/aseem/diva/APICreds2Activity.java @@ -32,9 +32,8 @@ package jakhar.aseem.diva; import android.content.Intent; -import android.os.Environment; -import android.support.v7.app.AppCompatActivity; import android.os.Bundle; +import androidx.appcompat.app.AppCompatActivity; import android.view.View; import android.widget.Button; import android.widget.EditText; diff --git a/app/src/main/java/jakhar/aseem/diva/APICredsActivity.java b/app/src/main/java/jakhar/aseem/diva/APICredsActivity.java index e25cff2..46eae3c 100644 --- a/app/src/main/java/jakhar/aseem/diva/APICredsActivity.java +++ b/app/src/main/java/jakhar/aseem/diva/APICredsActivity.java @@ -31,8 +31,8 @@ */ package jakhar.aseem.diva; -import android.support.v7.app.AppCompatActivity; import android.os.Bundle; +import androidx.appcompat.app.AppCompatActivity; import android.widget.TextView; public class APICredsActivity extends AppCompatActivity { diff --git a/app/src/main/java/jakhar/aseem/diva/AccessControl1Activity.java b/app/src/main/java/jakhar/aseem/diva/AccessControl1Activity.java index d699b47..f126901 100644 --- a/app/src/main/java/jakhar/aseem/diva/AccessControl1Activity.java +++ b/app/src/main/java/jakhar/aseem/diva/AccessControl1Activity.java @@ -32,8 +32,8 @@ package jakhar.aseem.diva; import android.content.Intent; -import android.support.v7.app.AppCompatActivity; import android.os.Bundle; +import androidx.appcompat.app.AppCompatActivity; import android.util.Log; import android.view.View; import android.widget.Toast; diff --git a/app/src/main/java/jakhar/aseem/diva/AccessControl2Activity.java b/app/src/main/java/jakhar/aseem/diva/AccessControl2Activity.java index 10cd6d5..d9c2326 100644 --- a/app/src/main/java/jakhar/aseem/diva/AccessControl2Activity.java +++ b/app/src/main/java/jakhar/aseem/diva/AccessControl2Activity.java @@ -32,8 +32,8 @@ package jakhar.aseem.diva; import android.content.Intent; -import android.support.v7.app.AppCompatActivity; import android.os.Bundle; +import androidx.appcompat.app.AppCompatActivity; import android.util.Log; import android.view.View; import android.widget.RadioButton; diff --git a/app/src/main/java/jakhar/aseem/diva/AccessControl3Activity.java b/app/src/main/java/jakhar/aseem/diva/AccessControl3Activity.java index 1dd179c..a9de556 100644 --- a/app/src/main/java/jakhar/aseem/diva/AccessControl3Activity.java +++ b/app/src/main/java/jakhar/aseem/diva/AccessControl3Activity.java @@ -34,8 +34,8 @@ import android.content.Intent; import android.content.SharedPreferences; import android.preference.PreferenceManager; -import android.support.v7.app.AppCompatActivity; import android.os.Bundle; +import androidx.appcompat.app.AppCompatActivity; import android.view.View; import android.widget.Button; import android.widget.EditText; diff --git a/app/src/main/java/jakhar/aseem/diva/AccessControl3NotesActivity.java b/app/src/main/java/jakhar/aseem/diva/AccessControl3NotesActivity.java index 9fc8002..da2bfa3 100644 --- a/app/src/main/java/jakhar/aseem/diva/AccessControl3NotesActivity.java +++ b/app/src/main/java/jakhar/aseem/diva/AccessControl3NotesActivity.java @@ -31,18 +31,16 @@ */ package jakhar.aseem.diva; -import android.content.ContentResolver; import android.content.SharedPreferences; import android.database.Cursor; -import android.preference.PreferenceManager; -import android.support.v7.app.AppCompatActivity; import android.os.Bundle; +import android.preference.PreferenceManager; +import androidx.appcompat.app.AppCompatActivity; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.ListView; import android.widget.SimpleCursorAdapter; -import android.widget.TextView; import android.widget.Toast; public class AccessControl3NotesActivity extends AppCompatActivity { diff --git a/app/src/main/java/jakhar/aseem/diva/Hardcode2Activity.java b/app/src/main/java/jakhar/aseem/diva/Hardcode2Activity.java index 5a170a4..81bd03f 100644 --- a/app/src/main/java/jakhar/aseem/diva/Hardcode2Activity.java +++ b/app/src/main/java/jakhar/aseem/diva/Hardcode2Activity.java @@ -31,8 +31,8 @@ */ package jakhar.aseem.diva; -import android.support.v7.app.AppCompatActivity; import android.os.Bundle; +import androidx.appcompat.app.AppCompatActivity; import android.view.View; import android.widget.EditText; import android.widget.Toast; diff --git a/app/src/main/java/jakhar/aseem/diva/HardcodeActivity.java b/app/src/main/java/jakhar/aseem/diva/HardcodeActivity.java index 3f9fc4b..c7ed1ed 100644 --- a/app/src/main/java/jakhar/aseem/diva/HardcodeActivity.java +++ b/app/src/main/java/jakhar/aseem/diva/HardcodeActivity.java @@ -31,8 +31,8 @@ */ package jakhar.aseem.diva; -import android.support.v7.app.AppCompatActivity; import android.os.Bundle; +import androidx.appcompat.app.AppCompatActivity; import android.view.View; import android.widget.EditText; import android.widget.Toast; diff --git a/app/src/main/java/jakhar/aseem/diva/InputValidation2URISchemeActivity.java b/app/src/main/java/jakhar/aseem/diva/InputValidation2URISchemeActivity.java index a1db925..dee46de 100644 --- a/app/src/main/java/jakhar/aseem/diva/InputValidation2URISchemeActivity.java +++ b/app/src/main/java/jakhar/aseem/diva/InputValidation2URISchemeActivity.java @@ -31,8 +31,8 @@ */ package jakhar.aseem.diva; -import android.support.v7.app.AppCompatActivity; import android.os.Bundle; +import androidx.appcompat.app.AppCompatActivity; import android.view.View; import android.webkit.WebSettings; import android.webkit.WebView; diff --git a/app/src/main/java/jakhar/aseem/diva/InputValidation3Activity.java b/app/src/main/java/jakhar/aseem/diva/InputValidation3Activity.java index f4e8421..0e631b6 100644 --- a/app/src/main/java/jakhar/aseem/diva/InputValidation3Activity.java +++ b/app/src/main/java/jakhar/aseem/diva/InputValidation3Activity.java @@ -31,8 +31,8 @@ */ package jakhar.aseem.diva; -import android.support.v7.app.AppCompatActivity; import android.os.Bundle; +import androidx.appcompat.app.AppCompatActivity; import android.view.View; import android.widget.EditText; import android.widget.Toast; diff --git a/app/src/main/java/jakhar/aseem/diva/InsecureDataStorage1Activity.java b/app/src/main/java/jakhar/aseem/diva/InsecureDataStorage1Activity.java index c91e78e..18041a0 100644 --- a/app/src/main/java/jakhar/aseem/diva/InsecureDataStorage1Activity.java +++ b/app/src/main/java/jakhar/aseem/diva/InsecureDataStorage1Activity.java @@ -33,8 +33,8 @@ import android.content.SharedPreferences; import android.preference.PreferenceManager; -import android.support.v7.app.AppCompatActivity; import android.os.Bundle; +import androidx.appcompat.app.AppCompatActivity; import android.view.View; import android.widget.EditText; import android.widget.Toast; diff --git a/app/src/main/java/jakhar/aseem/diva/InsecureDataStorage2Activity.java b/app/src/main/java/jakhar/aseem/diva/InsecureDataStorage2Activity.java index 4adf6d1..053d457 100644 --- a/app/src/main/java/jakhar/aseem/diva/InsecureDataStorage2Activity.java +++ b/app/src/main/java/jakhar/aseem/diva/InsecureDataStorage2Activity.java @@ -31,17 +31,14 @@ */ package jakhar.aseem.diva; -import android.content.Context; import android.database.sqlite.SQLiteDatabase; -import android.os.Environment; -import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.util.Log; import android.view.View; import android.widget.EditText; import android.widget.Toast; -import java.io.File; +import androidx.appcompat.app.AppCompatActivity; public class InsecureDataStorage2Activity extends AppCompatActivity { diff --git a/app/src/main/java/jakhar/aseem/diva/InsecureDataStorage3Activity.java b/app/src/main/java/jakhar/aseem/diva/InsecureDataStorage3Activity.java index 92f40a1..03378f7 100644 --- a/app/src/main/java/jakhar/aseem/diva/InsecureDataStorage3Activity.java +++ b/app/src/main/java/jakhar/aseem/diva/InsecureDataStorage3Activity.java @@ -31,16 +31,14 @@ */ package jakhar.aseem.diva; -import android.os.Environment; -import android.support.v7.app.AppCompatActivity; import android.os.Bundle; +import androidx.appcompat.app.AppCompatActivity; import android.util.Log; import android.view.View; import android.widget.EditText; import android.widget.Toast; import java.io.File; -import java.io.FileOutputStream; import java.io.FileWriter; public class InsecureDataStorage3Activity extends AppCompatActivity { diff --git a/app/src/main/java/jakhar/aseem/diva/InsecureDataStorage4Activity.java b/app/src/main/java/jakhar/aseem/diva/InsecureDataStorage4Activity.java index 31446da..64351a3 100644 --- a/app/src/main/java/jakhar/aseem/diva/InsecureDataStorage4Activity.java +++ b/app/src/main/java/jakhar/aseem/diva/InsecureDataStorage4Activity.java @@ -32,8 +32,8 @@ package jakhar.aseem.diva; import android.os.Environment; -import android.support.v7.app.AppCompatActivity; import android.os.Bundle; +import androidx.appcompat.app.AppCompatActivity; import android.util.Log; import android.view.View; import android.widget.EditText; diff --git a/app/src/main/java/jakhar/aseem/diva/LogActivity.java b/app/src/main/java/jakhar/aseem/diva/LogActivity.java index 26e1173..ce55106 100644 --- a/app/src/main/java/jakhar/aseem/diva/LogActivity.java +++ b/app/src/main/java/jakhar/aseem/diva/LogActivity.java @@ -31,8 +31,8 @@ */ package jakhar.aseem.diva; -import android.support.v7.app.AppCompatActivity; import android.os.Bundle; +import androidx.appcompat.app.AppCompatActivity; import android.util.Log; import android.view.View; import android.widget.EditText; diff --git a/app/src/main/java/jakhar/aseem/diva/MainActivity.java b/app/src/main/java/jakhar/aseem/diva/MainActivity.java index 4feea22..d3cddc6 100644 --- a/app/src/main/java/jakhar/aseem/diva/MainActivity.java +++ b/app/src/main/java/jakhar/aseem/diva/MainActivity.java @@ -33,13 +33,12 @@ import android.content.Intent; import android.os.Bundle; -import android.support.design.widget.FloatingActionButton; -import android.support.design.widget.Snackbar; -import android.support.v7.app.AppCompatActivity; -import android.support.v7.widget.Toolbar; -import android.view.View; +import androidx.appcompat.app.AppCompatActivity; +import androidx.appcompat.widget.Toolbar; + import android.view.Menu; import android.view.MenuItem; +import android.view.View; public class MainActivity extends AppCompatActivity { diff --git a/app/src/main/java/jakhar/aseem/diva/SQLInjectionActivity.java b/app/src/main/java/jakhar/aseem/diva/SQLInjectionActivity.java index b17132e..5fee4a0 100644 --- a/app/src/main/java/jakhar/aseem/diva/SQLInjectionActivity.java +++ b/app/src/main/java/jakhar/aseem/diva/SQLInjectionActivity.java @@ -33,8 +33,8 @@ import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; -import android.support.v7.app.AppCompatActivity; import android.os.Bundle; +import androidx.appcompat.app.AppCompatActivity; import android.util.Log; import android.view.View; import android.widget.EditText; diff --git a/app/src/main/jni/Makefile b/app/src/main/jni/Makefile index 910fe43..2b43506 100644 --- a/app/src/main/jni/Makefile +++ b/app/src/main/jni/Makefile @@ -34,6 +34,7 @@ all: ndk-build rm -rf ../jniLibs/* + mkdir -p ../jniLibs cp -r ../libs/* ../jniLibs/ clean: ndk-build clean diff --git a/app/src/main/res/layout/activity_access_control1.xml b/app/src/main/res/layout/activity_access_control1.xml index 03ff9dd..d1fd0df 100644 --- a/app/src/main/res/layout/activity_access_control1.xml +++ b/app/src/main/res/layout/activity_access_control1.xml @@ -1,7 +1,9 @@ + android:maxLength="4" + android:gravity="center_horizontal" />