From b000e62b52f79db592d8445fcee31792de338626 Mon Sep 17 00:00:00 2001 From: Jonas Fredriksson Date: Wed, 24 Apr 2019 16:22:15 +0200 Subject: [PATCH 01/16] Scroll text view to bottom on append Disable buttons while running Ping timeout text --- .../networktools/MainActivity.java | 64 ++++++++++++++++++- app/src/main/res/layout/content_main.xml | 1 + app/src/main/res/values/strings.xml | 3 +- 3 files changed, 65 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/com/stealthcotper/networktools/MainActivity.java b/app/src/main/java/com/stealthcotper/networktools/MainActivity.java index 234edb8..b3c33d1 100644 --- a/app/src/main/java/com/stealthcotper/networktools/MainActivity.java +++ b/app/src/main/java/com/stealthcotper/networktools/MainActivity.java @@ -10,7 +10,9 @@ import android.view.MenuInflater; import android.view.MenuItem; import android.view.View; +import android.widget.Button; import android.widget.EditText; +import android.widget.ScrollView; import android.widget.TextView; import com.stealthcopter.networktools.ARPInfo; @@ -25,12 +27,18 @@ import java.io.IOException; import java.net.InetAddress; +import java.net.UnknownHostException; import java.util.ArrayList; public class MainActivity extends AppCompatActivity { private TextView resultText; private EditText editIpAddress; + private ScrollView scrollView; + private Button pingButton; + private Button wolButton; + private Button portScanButton; + private Button subnetDevicesButton; @Override protected void onCreate(Bundle savedInstanceState) { @@ -41,6 +49,11 @@ protected void onCreate(Bundle savedInstanceState) { resultText = findViewById(R.id.resultText); editIpAddress = findViewById(R.id.editIpAddress); + scrollView = findViewById(R.id.scrollView1); + pingButton = findViewById(R.id.pingButton); + wolButton = findViewById(R.id.wolButton); + portScanButton = findViewById(R.id.portScanButton); + subnetDevicesButton = findViewById(R.id.subnetDevicesButton); InetAddress ipAddress = IPTools.getLocalIPv4Address(); if (ipAddress != null){ @@ -118,6 +131,23 @@ private void appendResultsText(final String text) { @Override public void run() { resultText.append(text + "\n"); + scrollView.post(new Runnable() { + @Override + public void run() { + scrollView.fullScroll(View.FOCUS_DOWN); + } + }); + } + }); + } + + private void setEnabled(final View view, final boolean enabled) { + runOnUiThread(new Runnable() { + @Override + public void run() { + if (view != null) { + view.setEnabled(enabled); + } } }); } @@ -130,8 +160,19 @@ private void doPing() throws Exception { return; } + setEnabled(pingButton, false); + // Perform a single synchronous ping - PingResult pingResult = Ping.onAddress(ipAddress).setTimeOutMillis(1000).doPing(); + PingResult pingResult = null; + try { + pingResult = Ping.onAddress(ipAddress).setTimeOutMillis(1000).doPing(); + } catch (UnknownHostException e) { + e.printStackTrace(); + appendResultsText(e.getMessage()); + setEnabled(pingButton, true); + return; + } + appendResultsText("Pinging Address: " + pingResult.getAddress().getHostAddress()); appendResultsText("HostName: " + pingResult.getAddress().getHostName()); @@ -142,7 +183,11 @@ private void doPing() throws Exception { Ping.onAddress(ipAddress).setTimeOutMillis(1000).setTimes(5).doPing(new Ping.PingListener() { @Override public void onResult(PingResult pingResult) { - appendResultsText(String.format("%.2f ms", pingResult.getTimeTaken())); + if (pingResult.isReachable) { + appendResultsText(String.format("%.2f ms", pingResult.getTimeTaken())); + } else { + appendResultsText(getString(R.string.timeout)); + } } @Override @@ -151,11 +196,13 @@ public void onFinished(PingStats pingStats) { pingStats.getNoPings(), pingStats.getPacketsLost())); appendResultsText(String.format("Min/Avg/Max Time: %.2f/%.2f/%.2f ms", pingStats.getMinTimeTaken(), pingStats.getAverageTimeTaken(), pingStats.getMaxTimeTaken())); + setEnabled(pingButton, true); } @Override public void onError(Exception e) { // TODO: STUB METHOD + setEnabled(pingButton, true); } }); @@ -169,6 +216,8 @@ private void doWakeOnLan() throws IllegalArgumentException { return; } + setEnabled(wolButton, false); + appendResultsText("IP address: " + ipAddress); // Get mac address from IP (using arp cache) @@ -176,6 +225,7 @@ private void doWakeOnLan() throws IllegalArgumentException { if (macAddress == null) { appendResultsText("Could not fromIPAddress MAC address, cannot send WOL packet without it."); + setEnabled(wolButton, true); return; } @@ -187,7 +237,10 @@ private void doWakeOnLan() throws IllegalArgumentException { WakeOnLan.sendWakeOnLan(ipAddress, macAddress); appendResultsText("WOL Packet sent"); } catch (IOException e) { + appendResultsText(e.getMessage()); e.printStackTrace(); + } finally { + setEnabled(wolButton, true); } } @@ -196,9 +249,12 @@ private void doPortScan() throws Exception { if (TextUtils.isEmpty(ipAddress)) { appendResultsText("Invalid Ip Address"); + setEnabled(portScanButton, true); return; } + setEnabled(portScanButton, false); + // Perform synchronous port scan appendResultsText("PortScanning IP: " + ipAddress); ArrayList openPorts = PortScan.onAddress(ipAddress).setPort(21).setMethodTCP().doScan(); @@ -216,6 +272,7 @@ public void onResult(int portNo, boolean open) { public void onFinished(ArrayList openPorts) { appendResultsText("Open Ports: " + openPorts.size()); appendResultsText("Time Taken: " + ((System.currentTimeMillis() - startTimeMillis)/1000.0f)); + setEnabled(portScanButton, true); } }); @@ -226,6 +283,8 @@ public void onFinished(ArrayList openPorts) { private void findSubnetDevices() { + setEnabled(subnetDevicesButton, false); + final long startTimeMillis = System.currentTimeMillis(); SubnetDevices subnetDevices = SubnetDevices.fromLocalAddress().findDevices(new SubnetDevices.OnSubnetDeviceFound() { @@ -239,6 +298,7 @@ public void onFinished(ArrayList devicesFound) { float timeTaken = (System.currentTimeMillis() - startTimeMillis)/1000.0f; appendResultsText("Devices Found: " + devicesFound.size()); appendResultsText("Finished "+timeTaken+" s"); + setEnabled(subnetDevicesButton, true); } }); diff --git a/app/src/main/res/layout/content_main.xml b/app/src/main/res/layout/content_main.xml index b0f2b76..ff6675e 100644 --- a/app/src/main/res/layout/content_main.xml +++ b/app/src/main/res/layout/content_main.xml @@ -84,6 +84,7 @@ Port Scan Github https://github.com/stealthcopter/AndroidNetworkTools - Subnet Devices + Subnet Devices + ** Timeout ** From 1149262c972c6ad76800552cab04b60b994fc8f5 Mon Sep 17 00:00:00 2001 From: mat Date: Sun, 3 Nov 2019 11:33:18 +0000 Subject: [PATCH 02/16] Fixed bug in native ping (added proc.destroy) Bumped version to 0.4.4 #PLAY_BETA --- app/build.gradle | 4 ++-- .../networktools/ANTApplication.java | 23 +++++++++---------- build.gradle | 13 ++++++----- gradle/wrapper/gradle-wrapper.properties | 4 ++-- .../networktools/ping/PingNative.java | 1 + 5 files changed, 23 insertions(+), 22 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 11a38af..c0a6174 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -32,8 +32,8 @@ android { applicationId "com.stealthcotper.networktools" minSdkVersion minSdkVer targetSdkVersion targetSdkVer - versionName appVersionName - versionCode appVersionCode + versionName "0.4.4" + versionCode 18 archivesBaseName = "AndroidNetworkTools" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" } diff --git a/app/src/main/java/com/stealthcotper/networktools/ANTApplication.java b/app/src/main/java/com/stealthcotper/networktools/ANTApplication.java index 1e3c649..0dc91c5 100644 --- a/app/src/main/java/com/stealthcotper/networktools/ANTApplication.java +++ b/app/src/main/java/com/stealthcotper/networktools/ANTApplication.java @@ -1,7 +1,6 @@ package com.stealthcotper.networktools; import android.app.Application; -import android.os.StrictMode; public class ANTApplication extends Application { @@ -16,17 +15,17 @@ private void initStrictMode() { // Let's be super strict so that we can discover bugs during testing - StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder() - .detectAll() - .penaltyLog() - .penaltyDeath() - .build()); - - StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder() - .detectAll() - .penaltyLog() - .penaltyDeath() - .build()); +// StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder() +// .detectAll() +// .penaltyLog() +//// .penaltyDeath() +// .build()); +// +// StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder() +// .detectAll() +// .penaltyLog() +//// .penaltyDeath() +// .build()); } } diff --git a/build.gradle b/build.gradle index 32148d8..a36d72c 100644 --- a/build.gradle +++ b/build.gradle @@ -6,7 +6,7 @@ buildscript { jcenter() } dependencies { - classpath 'com.android.tools.build:gradle:3.1.4' + classpath 'com.android.tools.build:gradle:3.5.1' // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files } @@ -24,12 +24,13 @@ task clean(type: Delete) { } subprojects { - ext.compileSdkVer = 27 - ext.buildToolsVer = "27.0.3" + ext.compileSdkVer = 29 + ext.buildToolsVer = "29.0.1" ext.minSdkVer = 14 - ext.targetSdkVer = 27 + ext.targetSdkVer = 29 ext.supportLibVer = "27.1.1" - ext.appVersionName = "0.4.3" - ext.appVersionCode = 17 + // When updating these, remember to update the vars in app/build.gradle (for FDroid comptability) + ext.appVersionName = "0.4.4" + ext.appVersionCode = 18 } diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index b5dcd6b..1433f15 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ -#Tue May 01 19:31:51 BST 2018 +#Sun Nov 03 10:39:47 GMT 2019 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-4.4-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-5.4.1-all.zip diff --git a/library/src/main/java/com/stealthcopter/networktools/ping/PingNative.java b/library/src/main/java/com/stealthcopter/networktools/ping/PingNative.java index decba72..0b91255 100644 --- a/library/src/main/java/com/stealthcopter/networktools/ping/PingNative.java +++ b/library/src/main/java/com/stealthcopter/networktools/ping/PingNative.java @@ -67,6 +67,7 @@ public static PingResult ping(InetAddress host, PingOptions pingOptions) throws break; } pingResult.error = pingError; + proc.destroy(); return pingResult; } From 55b44be9bed9db82e0d87eecab42fda04a53af34 Mon Sep 17 00:00:00 2001 From: Matthew Rollings <1211162+stealthcopter@users.noreply.github.com> Date: Sun, 3 Nov 2019 13:20:38 +0000 Subject: [PATCH 03/16] Fix ci intergration (#61) * Updated circleCI to api29 --- .circleci/config.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index c259ddc..83a5adc 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -2,7 +2,7 @@ version: 2 jobs: build: docker: - - image: circleci/android:api-25-alpha + - image: circleci/android:api-29 environment: GRADLE_OPTS: '-Dorg.gradle.jvmargs="-Xmx2048m -XX:+HeapDumpOnOutOfMemoryError"' steps: @@ -15,7 +15,7 @@ jobs: name: Copy Environment Vars command: scripts/cp-env-to-properties.sh - # Decrypt any secret files / keys + # Decrypt any secret files / keys - run: name: Decrypt secret files command: scripts/decrypt-secrets.sh From 8cfa9c9a76b4f51cacd89eda59742f59d08e4770 Mon Sep 17 00:00:00 2001 From: mat Date: Thu, 7 Nov 2019 14:07:14 +0000 Subject: [PATCH 04/16] Added fastlane structure for F-Droid inclusion #PLAY_BETA --- app/build.gradle | 7 +++++-- build.gradle | 4 ++-- .../metadata/android/en-GB/changelogs/19.txt | 1 + .../metadata/android/en-GB/full_description.txt | 11 +++++++++++ fastlane/metadata/android/en-GB/images/icon.png | Bin 0 -> 15862 bytes .../android/en-GB/images/phoneScreenshots/1.png | Bin 0 -> 69494 bytes .../android/en-GB/images/phoneScreenshots/2.png | Bin 0 -> 69018 bytes .../android/en-GB/short_description.txt | 1 + fastlane/metadata/android/en-GB/title.txt | 1 + 9 files changed, 21 insertions(+), 4 deletions(-) create mode 100644 fastlane/metadata/android/en-GB/changelogs/19.txt create mode 100644 fastlane/metadata/android/en-GB/full_description.txt create mode 100644 fastlane/metadata/android/en-GB/images/icon.png create mode 100644 fastlane/metadata/android/en-GB/images/phoneScreenshots/1.png create mode 100644 fastlane/metadata/android/en-GB/images/phoneScreenshots/2.png create mode 100644 fastlane/metadata/android/en-GB/short_description.txt create mode 100644 fastlane/metadata/android/en-GB/title.txt diff --git a/app/build.gradle b/app/build.gradle index c0a6174..b88df84 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -32,8 +32,11 @@ android { applicationId "com.stealthcotper.networktools" minSdkVersion minSdkVer targetSdkVersion targetSdkVer - versionName "0.4.4" - versionCode 18 + + // When updating these, remember to update the vars in the root build.gradle + versionName "0.4.5" + versionCode 19 + archivesBaseName = "AndroidNetworkTools" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" } diff --git a/build.gradle b/build.gradle index a36d72c..56a4a02 100644 --- a/build.gradle +++ b/build.gradle @@ -31,6 +31,6 @@ subprojects { ext.supportLibVer = "27.1.1" // When updating these, remember to update the vars in app/build.gradle (for FDroid comptability) - ext.appVersionName = "0.4.4" - ext.appVersionCode = 18 + ext.appVersionName = "0.4.5" + ext.appVersionCode = 19 } diff --git a/fastlane/metadata/android/en-GB/changelogs/19.txt b/fastlane/metadata/android/en-GB/changelogs/19.txt new file mode 100644 index 0000000..78a039b --- /dev/null +++ b/fastlane/metadata/android/en-GB/changelogs/19.txt @@ -0,0 +1 @@ +* Added fastlane structure for F-Droid inclusion diff --git a/fastlane/metadata/android/en-GB/full_description.txt b/fastlane/metadata/android/en-GB/full_description.txt new file mode 100644 index 0000000..08ea232 --- /dev/null +++ b/fastlane/metadata/android/en-GB/full_description.txt @@ -0,0 +1,11 @@ +This is a sample application from the open source project Android Network Tools. If you are looking for a more complete network scanning tool, please see my other app Portdroid. + +It demonstrates the following features of the library: + +• Pinging +• Port Scanning +• Finding devices on your network +• Wake-on-lan + +The project is hosted on github. Bug reports, feature requests and contributions are all welcome: +https://github.com/stealthcopter/AndroidNetworkTools diff --git a/fastlane/metadata/android/en-GB/images/icon.png b/fastlane/metadata/android/en-GB/images/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..1ed5e98be9be8b94e00a117cb293f48436233745 GIT binary patch literal 15862 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 literal 0 HcmV?d00001 diff --git a/fastlane/metadata/android/en-GB/images/phoneScreenshots/2.png b/fastlane/metadata/android/en-GB/images/phoneScreenshots/2.png new file mode 100644 index 0000000000000000000000000000000000000000..8fc16f61140830aa5db2388fa32c46684cd6bf36 GIT binary patch literal 69018 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
u-dQDXo1|;6ndt_eNERnASaZF-0+BfA5}T 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 Date: Fri, 8 Nov 2019 13:22:43 +0000 Subject: [PATCH 05/16] Replaced en-GB with en-US for simplicity --- .../android/{en-GB => en-US}/changelogs/19.txt | 0 .../android/{en-GB => en-US}/full_description.txt | 0 .../android/{en-GB => en-US}/images/icon.png | Bin .../{en-GB => en-US}/images/phoneScreenshots/1.png | Bin .../{en-GB => en-US}/images/phoneScreenshots/2.png | Bin .../android/{en-GB => en-US}/short_description.txt | 0 .../metadata/android/{en-GB => en-US}/title.txt | 0 scripts/github-release.sh | 2 +- 8 files changed, 1 insertion(+), 1 deletion(-) rename fastlane/metadata/android/{en-GB => en-US}/changelogs/19.txt (100%) rename fastlane/metadata/android/{en-GB => en-US}/full_description.txt (100%) rename fastlane/metadata/android/{en-GB => en-US}/images/icon.png (100%) rename fastlane/metadata/android/{en-GB => en-US}/images/phoneScreenshots/1.png (100%) rename fastlane/metadata/android/{en-GB => en-US}/images/phoneScreenshots/2.png (100%) rename fastlane/metadata/android/{en-GB => en-US}/short_description.txt (100%) rename fastlane/metadata/android/{en-GB => en-US}/title.txt (100%) diff --git a/fastlane/metadata/android/en-GB/changelogs/19.txt b/fastlane/metadata/android/en-US/changelogs/19.txt similarity index 100% rename from fastlane/metadata/android/en-GB/changelogs/19.txt rename to fastlane/metadata/android/en-US/changelogs/19.txt diff --git a/fastlane/metadata/android/en-GB/full_description.txt b/fastlane/metadata/android/en-US/full_description.txt similarity index 100% rename from fastlane/metadata/android/en-GB/full_description.txt rename to fastlane/metadata/android/en-US/full_description.txt diff --git a/fastlane/metadata/android/en-GB/images/icon.png b/fastlane/metadata/android/en-US/images/icon.png similarity index 100% rename from fastlane/metadata/android/en-GB/images/icon.png rename to fastlane/metadata/android/en-US/images/icon.png diff --git a/fastlane/metadata/android/en-GB/images/phoneScreenshots/1.png b/fastlane/metadata/android/en-US/images/phoneScreenshots/1.png similarity index 100% rename from fastlane/metadata/android/en-GB/images/phoneScreenshots/1.png rename to fastlane/metadata/android/en-US/images/phoneScreenshots/1.png diff --git a/fastlane/metadata/android/en-GB/images/phoneScreenshots/2.png b/fastlane/metadata/android/en-US/images/phoneScreenshots/2.png similarity index 100% rename from fastlane/metadata/android/en-GB/images/phoneScreenshots/2.png rename to fastlane/metadata/android/en-US/images/phoneScreenshots/2.png diff --git a/fastlane/metadata/android/en-GB/short_description.txt b/fastlane/metadata/android/en-US/short_description.txt similarity index 100% rename from fastlane/metadata/android/en-GB/short_description.txt rename to fastlane/metadata/android/en-US/short_description.txt diff --git a/fastlane/metadata/android/en-GB/title.txt b/fastlane/metadata/android/en-US/title.txt similarity index 100% rename from fastlane/metadata/android/en-GB/title.txt rename to fastlane/metadata/android/en-US/title.txt diff --git a/scripts/github-release.sh b/scripts/github-release.sh index e1ec1f5..2d24f84 100755 --- a/scripts/github-release.sh +++ b/scripts/github-release.sh @@ -9,9 +9,9 @@ if [[ ! -d "$DIR" ]]; then DIR="$PWD"; fi GITHUB_RELEASE_NAME="Android Network Tools Library" GITHUB_RELEASE_MODULE="library" +GITHUB_RELEASE_TOKEN=$ANDROID_NETWORK_TOOLS_GITHUB_RELEASE_TOKEN GITHUB_RELEASE_DESC="This release was automatically generated by the CI server" GITHUB_RELEASE_URL="https://api.github.com/repos/stealthcopter/AndroidNetworkTools/releases" -GITHUB_RELEASE_TOKEN=$ANDROID_NETWORK_TOOLS_GITHUB_RELEASE_TOKEN GITHUB_UPLOAD_URL="https://uploads.github.com/repos/stealthcopter/AndroidNetworkTools/releases/" function create_github_release { From 7cb2a5a842290bb44ef96941a4e9cd9f181d245b Mon Sep 17 00:00:00 2001 From: mat Date: Sat, 9 Nov 2019 12:26:57 +0000 Subject: [PATCH 06/16] Bumped version number for tagging #PLAY_BETA --- app/build.gradle | 4 ++-- build.gradle | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index b88df84..997d362 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -34,8 +34,8 @@ android { targetSdkVersion targetSdkVer // When updating these, remember to update the vars in the root build.gradle - versionName "0.4.5" - versionCode 19 + versionName "0.4.5.2" + versionCode 20 archivesBaseName = "AndroidNetworkTools" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" diff --git a/build.gradle b/build.gradle index 56a4a02..d2277a9 100644 --- a/build.gradle +++ b/build.gradle @@ -31,6 +31,6 @@ subprojects { ext.supportLibVer = "27.1.1" // When updating these, remember to update the vars in app/build.gradle (for FDroid comptability) - ext.appVersionName = "0.4.5" - ext.appVersionCode = 19 + ext.appVersionName = "0.4.5.2" + ext.appVersionCode = 20 } From c342c9fd475b0f3ef95d464069dbbe2fbf8171be Mon Sep 17 00:00:00 2001 From: Matthew Rollings <1211162+stealthcopter@users.noreply.github.com> Date: Sun, 1 Mar 2020 12:25:21 +0000 Subject: [PATCH 07/16] Added improvement for Android 10 devices where /proc/net was restricted (#66) This uses `ip sleigh show` to list ip/mac pairs --- build.gradle | 2 +- .../stealthcopter/networktools/ARPInfo.java | 78 +++++++++++++------ 2 files changed, 56 insertions(+), 24 deletions(-) diff --git a/build.gradle b/build.gradle index d2277a9..a98aff4 100644 --- a/build.gradle +++ b/build.gradle @@ -6,7 +6,7 @@ buildscript { jcenter() } dependencies { - classpath 'com.android.tools.build:gradle:3.5.1' + classpath 'com.android.tools.build:gradle:3.5.3' // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files } diff --git a/library/src/main/java/com/stealthcopter/networktools/ARPInfo.java b/library/src/main/java/com/stealthcopter/networktools/ARPInfo.java index 2c07a99..f9ddb0b 100644 --- a/library/src/main/java/com/stealthcopter/networktools/ARPInfo.java +++ b/library/src/main/java/com/stealthcopter/networktools/ARPInfo.java @@ -3,9 +3,11 @@ import java.io.BufferedReader; import java.io.FileReader; import java.io.IOException; +import java.io.InputStreamReader; import java.util.ArrayList; import java.util.HashMap; + /** * Created by mat on 09/12/15. * @@ -15,6 +17,9 @@ * IP address HW type Flags HW address Mask Device * 192.168.18.11 0x1 0x2 00:04:20:06:55:1a * eth0 * 192.168.18.36 0x1 0x2 00:22:43:ab:2a:5b * eth0 + * + * Also looks at the output from `ip sleigh show` command + * */ public class ARPInfo { @@ -24,8 +29,7 @@ private ARPInfo() { /** - * Try to extract a hardware MAC address from a given IP address using the - * ARP cache (/proc/net/arp). + * Try to extract a hardware MAC address from a given IP address * * @param ip - IP address to search for * @return the MAC from the ARP cache or null in format "01:23:45:67:89:ab" @@ -35,24 +39,13 @@ public static String getMACFromIPAddress(String ip) { return null; } - for (String line : getLinesInARPCache()) { - String[] splitted = line.split(" +"); - if (splitted.length >= 4 && ip.equals(splitted[0])) { - String mac = splitted[3]; - if (mac.matches("..:..:..:..:..:..")) { - return mac; - } else { - return null; - } - } - } - return null; + HashMap cache = getAllIPAndMACAddressesInARPCache(); + return cache.get(ip); } /** - * Try to extract a IP address from the given MAC address using the - * ARP cache (/proc/net/arp). + * Try to extract a IP address from the given MAC address * * @param macAddress in format "01:23:45:67:89:ab" to search for * @return the IP address found or null in format "192.168.0.1" @@ -66,15 +59,16 @@ public static String getIPAddressFromMAC(String macAddress) { throw new IllegalArgumentException("Invalid MAC Address"); } - for (String line : getLinesInARPCache()) { - String[] splitted = line.split(" +"); - if (splitted.length >= 4 && macAddress.equals(splitted[3])) { - return splitted[0]; + HashMap cache = getAllIPAndMACAddressesInARPCache(); + for (String ip : cache.keySet()) { + if (cache.get(ip).equalsIgnoreCase(macAddress)) { + return ip; } } return null; } + /** * Returns all the ip addresses currently in the ARP cache (/proc/net/arp). * @@ -95,19 +89,24 @@ public static ArrayList getAllMACAddressesInARPCache() { /** - * Returns all the IP/MAC address pairs currently in the ARP cache (/proc/net/arp). + * Returns all the IP/MAC address pairs currently in the following places + * + * 1. ARP cache (/proc/net/arp). + * 2. `ip neigh show` command * * @return list of IP/MAC address pairs found */ public static HashMap getAllIPAndMACAddressesInARPCache() { - HashMap macList = new HashMap<>(); + HashMap macList = getAllIPandMACAddressesFromIPSleigh(); for (String line : getLinesInARPCache()) { String[] splitted = line.split(" +"); if (splitted.length >= 4) { // Ignore values with invalid MAC addresses if (splitted[3].matches("..:..:..:..:..:..") && !splitted[3].equals("00:00:00:00:00:00")) { - macList.put(splitted[0], splitted[3]); + if (!macList.containsKey(splitted[0])) { + macList.put(splitted[0], splitted[3]); + } } } } @@ -142,4 +141,37 @@ private static ArrayList getLinesInARPCache() { return lines; } + + /** + * Get the IP / MAC address pairs from `ip sleigh show` command + * + * @return hashmap of ips and mac addresses + */ + private static HashMap getAllIPandMACAddressesFromIPSleigh() { + HashMap macList = new HashMap<>(); + + try { + Runtime runtime = Runtime.getRuntime(); + Process proc = runtime.exec("ip neigh show"); + proc.waitFor(); + int exit = proc.exitValue(); + + InputStreamReader reader = new InputStreamReader(proc.getInputStream()); + BufferedReader buffer = new BufferedReader(reader); + String line; + while ((line = buffer.readLine()) != null) { + String[] splits = line.split(" "); + if (splits.length < 4) { + continue; + } + macList.put(splits[0], splits[4]); + } + + } catch (IOException | InterruptedException e) { + e.printStackTrace(); + } + + return macList; + } + } From 25fceef8b313516130e3c99f6a9cd40a54540f69 Mon Sep 17 00:00:00 2001 From: Poussinou Date: Fri, 3 Apr 2020 15:59:18 +0200 Subject: [PATCH 08/16] Update readme.md (#68) @Poussinou cheers for that! --- readme.md | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/readme.md b/readme.md index ea01ea5..7f88cc4 100644 --- a/readme.md +++ b/readme.md @@ -17,9 +17,14 @@ The javadoc should provide all information needed to understand the methods, but ### Sample app -The sample app is published on Google play to allow you to quickly and easier test the library. Enjoy! And please do feedback to us if your tests produce different results. +The sample app is published on Google Play & F-Droid to allow you to quickly and easier test the library. Enjoy! And please do feedback to us if your tests produce different results. -Get it on Google Play +[Get it on F-Droid](https://f-droid.org/packages/com.stealthcotper.networktools/) +[Get it on Google Play](https://play.google.com/store/apps/details?id=com.stealthcotper.networktools) ## Usage @@ -140,7 +145,6 @@ Other useful methods: It's a standard gradle project. - # Contributing I welcome pull requests, issues and feedback. @@ -150,4 +154,3 @@ I welcome pull requests, issues and feedback. - Commit your changes (git commit -am 'Added some feature') - Push to the branch (git push origin my-new-feature) - Create new Pull Request - From 6cf4f5b69444d26b1bc156e4c3d33f1330eb8e70 Mon Sep 17 00:00:00 2001 From: Matthew Rollings <1211162+stealthcopter@users.noreply.github.com> Date: Wed, 15 Apr 2020 10:03:13 +0100 Subject: [PATCH 09/16] Feature/ip sleigh addtition (#71) * Added improvement for Android 10 devices where /proc/net was restricted This uses `ip sleigh show` to list ip/mac pairs * Release 0.4.5.3 Co-authored-by: mat --- app/build.gradle | 4 ++-- build.gradle | 5 +++-- readme.md | 2 +- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 997d362..feb4408 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -34,8 +34,8 @@ android { targetSdkVersion targetSdkVer // When updating these, remember to update the vars in the root build.gradle - versionName "0.4.5.2" - versionCode 20 + versionName "0.4.5.3" + versionCode 21 archivesBaseName = "AndroidNetworkTools" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" diff --git a/build.gradle b/build.gradle index a98aff4..efa8e7a 100644 --- a/build.gradle +++ b/build.gradle @@ -31,6 +31,7 @@ subprojects { ext.supportLibVer = "27.1.1" // When updating these, remember to update the vars in app/build.gradle (for FDroid comptability) - ext.appVersionName = "0.4.5.2" - ext.appVersionCode = 20 + // Remember to update readme, and lets keep these version numbers in line with the github releases + ext.appVersionName = "0.4.5.3" + ext.appVersionCode = 21 } diff --git a/readme.md b/readme.md index 7f88cc4..f916e9f 100644 --- a/readme.md +++ b/readme.md @@ -46,7 +46,7 @@ then add a library dependency. **Remember** to check for latest release [here](h ```groovy dependencies { - compile 'com.github.stealthcopter:AndroidNetworkTools:0.4.0' + compile 'com.github.stealthcopter:AndroidNetworkTools:0.4.5.3' } ``` From 6873a81cd6033f06815c7f1ed76b2c3cd01b0dcf Mon Sep 17 00:00:00 2001 From: Atrate Date: Mon, 22 Jun 2020 10:38:52 +0200 Subject: [PATCH 10/16] Make app movable to SD card (#72) Signed-off-by: Atrate --- app/src/main/AndroidManifest.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index dc42b68..bbbe649 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -1,6 +1,7 @@ From 6c71de2404515db4797d98e34feb17dc8daa64b1 Mon Sep 17 00:00:00 2001 From: Leo Fernandes Date: Fri, 14 Aug 2020 05:39:54 -0300 Subject: [PATCH 11/16] Removed duplicate test code (#74) Looks good, cheers @leofernandesmo --- .../networktools/IPToolsTest.java | 66 +++++++++---------- 1 file changed, 30 insertions(+), 36 deletions(-) diff --git a/library/src/test/java/com/stealthcopter/networktools/IPToolsTest.java b/library/src/test/java/com/stealthcopter/networktools/IPToolsTest.java index 438693c..5200065 100644 --- a/library/src/test/java/com/stealthcopter/networktools/IPToolsTest.java +++ b/library/src/test/java/com/stealthcopter/networktools/IPToolsTest.java @@ -1,5 +1,6 @@ package com.stealthcopter.networktools; +import static org.hamcrest.CoreMatchers.is; import org.junit.Ignore; import org.junit.Test; @@ -7,9 +8,7 @@ import java.net.UnknownHostException; import java.util.List; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertTrue; +import static org.junit.Assert.*; /** * Created by matthew on 03/11/17. @@ -36,48 +35,25 @@ String[] getIPv6AddressesHexCompresed() { @Test public void testIsIPv4Address() { + assertIPv4Address(getIPv4Addresses(), true); + assertIPv4Address(getIPv6Addresses(), false); + assertIPv4Address(getInvalidIpAddresses(), false); + } - for (String address : getIPv4Addresses()) { - assertTrue(IPTools.isIPv4Address(address)); - } - for (String address : getIPv6Addresses()) { - assertFalse(IPTools.isIPv4Address(address)); - } - - for (String address : getInvalidIpAddresses()) { - assertFalse(IPTools.isIPv4Address(address)); - } - } @Test public void testIsIPv6Address() { - for (String address : getIPv4Addresses()) { - assertFalse(IPTools.isIPv6Address(address)); - } - - for (String address : getIPv6Addresses()) { - assertTrue(IPTools.isIPv6Address(address)); - } - - for (String address : getInvalidIpAddresses()) { - assertFalse(IPTools.isIPv6Address(address)); - } + assertIPv6Address(getIPv4Addresses(), false); + assertIPv6Address(getIPv6Addresses(), true); + assertIPv6Address(getInvalidIpAddresses(), false); } @Test public void testIsIPv6AddressesStandard() { - for (String address : getIPv4Addresses()) { - assertFalse(IPTools.isIPv6StdAddress(address)); - } - - for (String address : getIPv6Addresses()) { - assertTrue(IPTools.isIPv6StdAddress(address)); - } - - for (String address : getInvalidIpAddresses()) { - assertFalse(IPTools.isIPv6StdAddress(address)); - } + assertIPv6StdAddress(getIPv4Addresses(), false); + assertIPv6StdAddress(getIPv6Addresses(), true); + assertIPv6StdAddress(getInvalidIpAddresses(), false); } @Test @@ -123,4 +99,22 @@ public void testLocalAddressesNetwork() throws UnknownHostException { assertFalse(IPTools.isIpAddressLocalNetwork(InetAddress.getByName("8.8.8.8"))); } + private void assertIPv4Address(String[] ips, boolean isIPv4Address) { + for (String address : ips) { + assertThat(IPTools.isIPv4Address(address), is(isIPv4Address)); + } + } + + private void assertIPv6Address(String[] ips, boolean isIPv6Address) { + for (String address : ips) { + assertThat(IPTools.isIPv6Address(address), is(isIPv6Address)); + } + } + + private void assertIPv6StdAddress(String[] ips, boolean isIPv6StdAddress) { + for (String address : ips) { + assertThat(IPTools.isIPv6StdAddress(address), is(isIPv6StdAddress)); + } + } + } From ce765d294b63897e65407d84b77c1ea8aa7cefe6 Mon Sep 17 00:00:00 2001 From: Matthew Rollings <1211162+stealthcopter@users.noreply.github.com> Date: Sat, 30 Jan 2021 15:21:40 +0000 Subject: [PATCH 12/16] Update readme.md --- readme.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/readme.md b/readme.md index f916e9f..44cee5d 100644 --- a/readme.md +++ b/readme.md @@ -1,3 +1,5 @@ +> :warning: **Not under active development**: I am no longer actively developing this project as I have other priorities. However, I will still review and accept pull requests with bug fixes and enhancements. + # Android Network Tools ![image](./app/src/main/res/mipmap-xhdpi/ic_launcher.png) [![Android Arsenal](https://img.shields.io/badge/Android%20Arsenal-AndroidNetworkTools-green.svg?style=true)](https://android-arsenal.com/details/1/3112) From 89b2c44341d5c86a176094859d9e9e9a08617b31 Mon Sep 17 00:00:00 2001 From: mat Date: Mon, 8 Mar 2021 22:51:14 +0000 Subject: [PATCH 13/16] Fixed subnet devices returning out of scope IPs and removed pointless comments --- build.gradle | 2 +- .../java/com/stealthcopter/networktools/ARPInfo.java | 2 -- .../java/com/stealthcopter/networktools/IPTools.java | 3 --- .../java/com/stealthcopter/networktools/Ping.java | 3 --- .../com/stealthcopter/networktools/PortScan.java | 3 --- .../stealthcopter/networktools/SubnetDevices.java | 12 +++++++----- .../com/stealthcopter/networktools/WakeOnLan.java | 1 - .../stealthcopter/networktools/ping/PingNative.java | 3 --- .../stealthcopter/networktools/ping/PingResult.java | 3 --- .../stealthcopter/networktools/ping/PingStats.java | 3 --- .../stealthcopter/networktools/ping/PingTools.java | 3 --- .../networktools/portscanning/PortScanTCP.java | 3 --- .../networktools/portscanning/PortScanUDP.java | 3 --- 13 files changed, 8 insertions(+), 36 deletions(-) diff --git a/build.gradle b/build.gradle index d2277a9..1f5b877 100644 --- a/build.gradle +++ b/build.gradle @@ -30,7 +30,7 @@ subprojects { ext.targetSdkVer = 29 ext.supportLibVer = "27.1.1" - // When updating these, remember to update the vars in app/build.gradle (for FDroid comptability) + // When updating these, remember to update the vars in app/build.gradle (for FDroid compatibility) ext.appVersionName = "0.4.5.2" ext.appVersionCode = 20 } diff --git a/library/src/main/java/com/stealthcopter/networktools/ARPInfo.java b/library/src/main/java/com/stealthcopter/networktools/ARPInfo.java index 2c07a99..e696e15 100644 --- a/library/src/main/java/com/stealthcopter/networktools/ARPInfo.java +++ b/library/src/main/java/com/stealthcopter/networktools/ARPInfo.java @@ -7,8 +7,6 @@ import java.util.HashMap; /** - * Created by mat on 09/12/15. - * * Looks at the file at /proc/net/arp to fromIPAddress ip/mac addresses from the cache * We assume that the file has this structure: * diff --git a/library/src/main/java/com/stealthcopter/networktools/IPTools.java b/library/src/main/java/com/stealthcopter/networktools/IPTools.java index 57c7149..26695ec 100644 --- a/library/src/main/java/com/stealthcopter/networktools/IPTools.java +++ b/library/src/main/java/com/stealthcopter/networktools/IPTools.java @@ -8,9 +8,6 @@ import java.util.Enumeration; import java.util.regex.Pattern; -/** - * Created by mat on 14/12/15. - */ public class IPTools { /** diff --git a/library/src/main/java/com/stealthcopter/networktools/Ping.java b/library/src/main/java/com/stealthcopter/networktools/Ping.java index 304c54e..6c16c2e 100644 --- a/library/src/main/java/com/stealthcopter/networktools/Ping.java +++ b/library/src/main/java/com/stealthcopter/networktools/Ping.java @@ -8,9 +8,6 @@ import java.net.InetAddress; import java.net.UnknownHostException; -/** - * Created by mat on 09/12/15. - */ public class Ping { // Only try ping using the java method diff --git a/library/src/main/java/com/stealthcopter/networktools/PortScan.java b/library/src/main/java/com/stealthcopter/networktools/PortScan.java index ef81675..73d6be2 100644 --- a/library/src/main/java/com/stealthcopter/networktools/PortScan.java +++ b/library/src/main/java/com/stealthcopter/networktools/PortScan.java @@ -11,9 +11,6 @@ import java.util.concurrent.Executors; import java.util.concurrent.TimeUnit; -/** - * Created by mat on 14/12/15. - */ public class PortScan { private static final int TIMEOUT_LOCALHOST = 25; diff --git a/library/src/main/java/com/stealthcopter/networktools/SubnetDevices.java b/library/src/main/java/com/stealthcopter/networktools/SubnetDevices.java index f3de717..aa12a4f 100644 --- a/library/src/main/java/com/stealthcopter/networktools/SubnetDevices.java +++ b/library/src/main/java/com/stealthcopter/networktools/SubnetDevices.java @@ -12,9 +12,6 @@ import java.util.concurrent.Executors; import java.util.concurrent.TimeUnit; -/** - * Created by mat on 03/11/17. - */ public class SubnetDevices { private int noThreads = 100; @@ -71,15 +68,20 @@ public static SubnetDevices fromIPAddress(final String ipAddress) { throw new IllegalArgumentException("Invalid IP Address"); } + String segment = ipAddress.substring(0, ipAddress.lastIndexOf(".") + 1); + SubnetDevices subnetDevice = new SubnetDevices(); subnetDevice.addresses = new ArrayList<>(); // Get addresses from ARP Info first as they are likely to be reachable - subnetDevice.addresses.addAll(ARPInfo.getAllIPAddressesInARPCache()); + for(String ip : ARPInfo.getAllIPAddressesInARPCache()) { + if (ip.startsWith(segment)) { + subnetDevice.addresses.add(ip); + } + } // Add all missing addresses in subnet - String segment = ipAddress.substring(0, ipAddress.lastIndexOf(".") + 1); for (int j = 0; j < 255; j++) { if (!subnetDevice.addresses.contains(segment + j)) { subnetDevice.addresses.add(segment + j); diff --git a/library/src/main/java/com/stealthcopter/networktools/WakeOnLan.java b/library/src/main/java/com/stealthcopter/networktools/WakeOnLan.java index 53adb5f..92dc4d5 100644 --- a/library/src/main/java/com/stealthcopter/networktools/WakeOnLan.java +++ b/library/src/main/java/com/stealthcopter/networktools/WakeOnLan.java @@ -6,7 +6,6 @@ import java.net.InetAddress; /** - * Created by mat on 09/12/15. * * Tested this and it wakes my computer up :) * diff --git a/library/src/main/java/com/stealthcopter/networktools/ping/PingNative.java b/library/src/main/java/com/stealthcopter/networktools/ping/PingNative.java index 0b91255..c9163fd 100644 --- a/library/src/main/java/com/stealthcopter/networktools/ping/PingNative.java +++ b/library/src/main/java/com/stealthcopter/networktools/ping/PingNative.java @@ -7,9 +7,6 @@ import java.io.InputStreamReader; import java.net.InetAddress; -/** - * Created by mat on 09/12/15. - */ public class PingNative { // This class is not to be instantiated diff --git a/library/src/main/java/com/stealthcopter/networktools/ping/PingResult.java b/library/src/main/java/com/stealthcopter/networktools/ping/PingResult.java index ba9cd1e..673e7a2 100644 --- a/library/src/main/java/com/stealthcopter/networktools/ping/PingResult.java +++ b/library/src/main/java/com/stealthcopter/networktools/ping/PingResult.java @@ -2,9 +2,6 @@ import java.net.InetAddress; -/** - * Created by mat on 09/12/15. - */ public class PingResult { public final InetAddress ia; public boolean isReachable; diff --git a/library/src/main/java/com/stealthcopter/networktools/ping/PingStats.java b/library/src/main/java/com/stealthcopter/networktools/ping/PingStats.java index c487390..e6d0978 100644 --- a/library/src/main/java/com/stealthcopter/networktools/ping/PingStats.java +++ b/library/src/main/java/com/stealthcopter/networktools/ping/PingStats.java @@ -2,9 +2,6 @@ import java.net.InetAddress; -/** - * Created by mat on 09/12/15. - */ public class PingStats { private final InetAddress ia; private final long noPings; diff --git a/library/src/main/java/com/stealthcopter/networktools/ping/PingTools.java b/library/src/main/java/com/stealthcopter/networktools/ping/PingTools.java index 68d79a2..4aeb800 100644 --- a/library/src/main/java/com/stealthcopter/networktools/ping/PingTools.java +++ b/library/src/main/java/com/stealthcopter/networktools/ping/PingTools.java @@ -3,9 +3,6 @@ import java.io.IOException; import java.net.InetAddress; -/** - * Created by mat on 09/12/15. - */ public class PingTools { // This class is not to be instantiated diff --git a/library/src/main/java/com/stealthcopter/networktools/portscanning/PortScanTCP.java b/library/src/main/java/com/stealthcopter/networktools/portscanning/PortScanTCP.java index 34050b8..f487c5c 100644 --- a/library/src/main/java/com/stealthcopter/networktools/portscanning/PortScanTCP.java +++ b/library/src/main/java/com/stealthcopter/networktools/portscanning/PortScanTCP.java @@ -5,9 +5,6 @@ import java.net.InetSocketAddress; import java.net.Socket; -/** - * Created by mat on 13/12/15. - */ public class PortScanTCP { // This class is not to be instantiated diff --git a/library/src/main/java/com/stealthcopter/networktools/portscanning/PortScanUDP.java b/library/src/main/java/com/stealthcopter/networktools/portscanning/PortScanUDP.java index fd58e56..1236832 100644 --- a/library/src/main/java/com/stealthcopter/networktools/portscanning/PortScanUDP.java +++ b/library/src/main/java/com/stealthcopter/networktools/portscanning/PortScanUDP.java @@ -5,9 +5,6 @@ import java.net.InetAddress; import java.net.SocketTimeoutException; -/** - * Created by mat on 13/12/15. - */ public class PortScanUDP { // This class is not to be instantiated From 5ec485ca28aa48227c5dfd72a9e3e89090ffcc99 Mon Sep 17 00:00:00 2001 From: mat Date: Mon, 8 Mar 2021 23:02:59 +0000 Subject: [PATCH 14/16] Added method to disable /proc/net/arp browsing --- .../com/stealthcopter/networktools/ARPInfo.java | 2 +- .../stealthcopter/networktools/SubnetDevices.java | 15 +++++++++++++-- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/library/src/main/java/com/stealthcopter/networktools/ARPInfo.java b/library/src/main/java/com/stealthcopter/networktools/ARPInfo.java index 74c7561..827610b 100644 --- a/library/src/main/java/com/stealthcopter/networktools/ARPInfo.java +++ b/library/src/main/java/com/stealthcopter/networktools/ARPInfo.java @@ -145,7 +145,7 @@ private static ArrayList getLinesInARPCache() { * * @return hashmap of ips and mac addresses */ - private static HashMap getAllIPandMACAddressesFromIPSleigh() { + public static HashMap getAllIPandMACAddressesFromIPSleigh() { HashMap macList = new HashMap<>(); try { diff --git a/library/src/main/java/com/stealthcopter/networktools/SubnetDevices.java b/library/src/main/java/com/stealthcopter/networktools/SubnetDevices.java index aa12a4f..471d0bb 100644 --- a/library/src/main/java/com/stealthcopter/networktools/SubnetDevices.java +++ b/library/src/main/java/com/stealthcopter/networktools/SubnetDevices.java @@ -20,6 +20,8 @@ public class SubnetDevices { private OnSubnetDeviceFound listener; private int timeOutMillis = 2500; private boolean cancelled = false; + + private boolean disableProcNetMethod = false; private HashMap ipMacHashMap = null; // This class is not to be instantiated @@ -139,6 +141,15 @@ public SubnetDevices setTimeOutMillis(int timeOutMillis) throws IllegalArgumentE return this; } + /** + * + * @param disable if set to true we will not attempt to read from /proc/net/arp + * directly. This avoids any Android 10 permissions logs appearing. + */ + public void setDisableProcNetMethod(boolean disable) { + this.disableProcNetMethod = disableProcNetMethod; + } + /** * Cancel a running scan */ @@ -165,7 +176,7 @@ public void run() { // Load mac addresses into cache var (to avoid hammering the /proc/net/arp file when // lots of devices are found on the network. - ipMacHashMap = ARPInfo.getAllIPAndMACAddressesInARPCache(); + ipMacHashMap = disableProcNetMethod ? ARPInfo.getAllIPandMACAddressesFromIPSleigh() : ARPInfo.getAllIPAndMACAddressesInARPCache(); ExecutorService executor = Executors.newFixedThreadPool(noThreads); @@ -187,7 +198,7 @@ public void run() { // Loop over devices found and add in the MAC addresses if missing. // We do this after scanning for all devices as /proc/net/arp may add info // because of the scan. - ipMacHashMap = ARPInfo.getAllIPAndMACAddressesInARPCache(); + ipMacHashMap = disableProcNetMethod ? ARPInfo.getAllIPandMACAddressesFromIPSleigh() : ARPInfo.getAllIPAndMACAddressesInARPCache(); for (Device device : devicesFound) { if (device.mac == null && ipMacHashMap.containsKey(device.ip)) { device.mac = ipMacHashMap.get(device.ip); From 9666c9db4de95cfc19f0775e867823a1447ded8b Mon Sep 17 00:00:00 2001 From: mat Date: Tue, 9 Mar 2021 20:48:24 +0000 Subject: [PATCH 15/16] Check if arp file is readable before attempting read to avoid logging a security exception --- .../main/java/com/stealthcopter/networktools/ARPInfo.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/library/src/main/java/com/stealthcopter/networktools/ARPInfo.java b/library/src/main/java/com/stealthcopter/networktools/ARPInfo.java index 827610b..e9a2ca6 100644 --- a/library/src/main/java/com/stealthcopter/networktools/ARPInfo.java +++ b/library/src/main/java/com/stealthcopter/networktools/ARPInfo.java @@ -1,6 +1,7 @@ package com.stealthcopter.networktools; import java.io.BufferedReader; +import java.io.File; import java.io.FileReader; import java.io.IOException; import java.io.InputStreamReader; @@ -118,6 +119,12 @@ public static HashMap getAllIPAndMACAddressesInARPCache() { */ private static ArrayList getLinesInARPCache() { ArrayList lines = new ArrayList<>(); + + // If we cant read the file just return empty list + if (!new File("/proc/net/arp").canRead()){ + return lines; + } + BufferedReader br = null; try { br = new BufferedReader(new FileReader("/proc/net/arp")); From 34fed7a6fb8c130237d2ed65f165504d05964309 Mon Sep 17 00:00:00 2001 From: mat Date: Mon, 5 Feb 2024 16:27:59 +0000 Subject: [PATCH 16/16] Added extra catch for NPE --- .../java/com/stealthcopter/networktools/ping/PingTools.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/library/src/main/java/com/stealthcopter/networktools/ping/PingTools.java b/library/src/main/java/com/stealthcopter/networktools/ping/PingTools.java index 4aeb800..98ccc78 100644 --- a/library/src/main/java/com/stealthcopter/networktools/ping/PingTools.java +++ b/library/src/main/java/com/stealthcopter/networktools/ping/PingTools.java @@ -75,6 +75,9 @@ public static PingResult doJavaPing(InetAddress ia, PingOptions pingOptions) { } catch (IOException e) { pingResult.isReachable = false; pingResult.error = "IOException: " + e.getMessage(); + } catch (NullPointerException e) { + pingResult.isReachable = false; + pingResult.error = "NullPointerException: " + e.getMessage(); } return pingResult; }