شعرت بخيبة أمل بسبب عدم وجود واجهات برمجة التطبيقات الجيدة للشبكة في Android / Java، لذا قمت بتطوير مجموعة من أدوات الشبكات المفيدة لتطوير Android اليومي.
يجب أن يوفر javadoc جميع المعلومات اللازمة لفهم الطرق، ولكن إذا لم يكن الأمر كذلك فلا تتردد في إضافة مشكلة في github وسأجيب على أي أسئلة! :)
إذا كنت تحب ما أفعله باستخدام Android Network Tools ومشاريعي الأخرى، فيمكنك الآن دعم عملي مباشرة! بشرائك لي قهوة ☕، فإنك لا تغذي احتياجاتي من الكافيين فحسب، بل تساعدني في تخصيص المزيد من الوقت لتطوير وتحسين هذه المشاريع مفتوحة المصدر. كل قهوة لها أهميتها وتجلب المزيد من الابتكار إلى عالم الأمن السيبراني. شكرًا لك على دعمك – فهذا يعني العالم بالنسبة لي ولمجتمع المصادر المفتوحة!
تم نشر نموذج التطبيق على Google Play وF-Droid للسماح لك باختبار المكتبة بسرعة وسهولة. يتمتع! ويرجى إرسال تعليقات إلينا إذا كانت اختباراتك تؤدي إلى نتائج مختلفة.
لم يتم إصدار هذه المكتبة بعد في Maven Central، وحتى ذلك الحين يمكنك إضافتها كوحدة مكتبة أو استخدام JitPack.io
إضافة عنوان URL البعيد مخضرم
repositories {
maven {
url " https://jitpack.io "
}
}
ثم قم بإضافة تبعية المكتبة. تذكر التحقق من أحدث إصدار هنا
dependencies {
compile ' com.github.stealthcopter:AndroidNetworkTools:0.4.5.3 '
}
يتطلب إذن الإنترنت (من الواضح...)
< uses-permission android : name = " android.permission.INTERNET " />
ماسح ضوئي بسيط لمنفذ TCP / UDP يعتمد على جافا، سريع وسهل الاستخدام. افتراضيًا، سيحاول تخمين أفضل المهلة والخيوط لاستخدامها أثناء المسح اعتمادًا على ما إذا كان العنوان يشبه المضيف المحلي أو الشبكة المحلية أو البعيد. يمكنك تجاوز هذه الأمور بنفسك عن طريق استدعاء setNoThreads() وsetTimeoutMillis()
// Synchronously
ArrayList < Integer > openPorts = PortScan . onAddress ( "192.168.0.1" ). setMethodUDP (). setPort ( 21 ). doScan ();
// Asynchronously
PortScan . onAddress ( "192.168.0.1" ). setTimeOutMillis ( 1000 ). setPortsAll (). setMethodTCP (). doScan ( new PortScan . PortListener () {
@ Override
public void onResult ( int portNo , boolean open ) {
if ( open ) // Stub: found open port
}
@ Override
public void onFinished ( ArrayList < Integer > openPorts ) {
// Stub: Finished scanning
}
});
يبحث عن الأجهزة التي تستجيب لاختبار ping الموجودة على نفس الشبكة الفرعية مثل الجهاز الحالي. يمكنك ضبط مهلة اختبار الاتصال باستخدام setTimeOutMillis() [افتراضي 2500] وعدد المواضيع باستخدام setNoThreads() [افتراضي 255]
// Asynchronously
SubnetDevices.fromLocalAddress().findDevices(new SubnetDevices.OnSubnetDeviceFound() {
@Override
public void onDeviceFound(Device device) {
// Stub: Found subnet device
}
@Override
public void onFinished(ArrayList<Device> devicesFound) {
// Stub: Finished scanning
}
});
يستخدم ثنائي ping الأصلي إذا كان متاحًا على الجهاز (بعض الأجهزة تأتي بدونه) ويعود إلى طلب TCP على المنفذ 7 (طلب الصدى) إذا لم يكن كذلك.
// Synchronously
PingResult pingResult = Ping . onAddress ( "192.168.0.1" ). setTimeOutMillis ( 1000 ). doPing ();
// Asynchronously
Ping . onAddress ( "192.168.0.1" ). setTimeOutMillis ( 1000 ). setTimes ( 5 ). doPing ( new Ping . PingListener () {
@ Override
public void onResult ( PingResult pingResult ) {
...
}
});
ملحوظة: إذا كان علينا العودة إلى استخدام منفذ TCP 7 (بطريقة جافا) لاكتشاف الأجهزة، فسنجد أقل بكثير من استخدام منفذ ping الثنائي الأصلي. إذا كانت هذه مشكلة، فيمكنك التفكير في إضافة ثنائي ping إلى تطبيقك أو جهازك بحيث يكون متاحًا دائمًا.
ملاحظة: إذا كنت تريد أداة فحص منافذ أكثر تقدمًا، فيجب أن تفكر في تجميع nmap في مشروعك واستخدامه بدلاً من ذلك.
يرسل حزمة Wake-on-Lan إلى عنوان IP/MAC
String ipAddress = "192.168.0.1" ;
String macAddress = "01:23:45:67:89:ab" ;
WakeOnLan . sendWakeOnLan ( ipAddress , macAddress );
طرق مفيدة أخرى:
// Get a MAC Address from an IP address in the ARP Cache
String ipAddress = "192.168.0.1" ;
String macAddress = ARPInfo . getMacFromArpCache ( ipAddress );
إنه مشروع gradle قياسي.
أرحب بطلبات السحب والقضايا والتعليقات.
git checkout -b my-new-feature
)git commit -am 'Added some feature'
)git push origin my-new-feature
)