View Full Version : پیدا کردن Ip کامپیوترها
Ebrahimkh
سه شنبه 31 تیر 1393, 16:04 عصر
سلام...
ما در جاوا با چه روشی می تونیم لیست ip های یک شبکه رو پیدا کنیم.../
مثلا من الان تو خونه یه شبکه pan برا خودم با 3 تا کامپیوتر راه اندازی کردم
حالا می خوام با یه برنامه ip اون دو کامپیوتر رو هم در برنامم ببینم
بازم ممنون
محمد فدوی
سه شنبه 31 تیر 1393, 19:16 عصر
من روشی رو نمیدونم برای این کار... و حدس هم میزنم نشه این کار رو با جاوا انجام داد (چون خیلی وابسته به پلتفرمه)
اگه روشی پیدا کردی که همینجا بگو همه استفاده کنیم. اما اگه نبود به نظرم اینکار رو مثلا توی اوبونتو (و اکثر عرضه های دیگه) میتونی با nmap (http://www.namhuy.net/32/how-to-install-nmap-into-ubuntu.html) انجام بدی. معادل ویندوزیش رو دوستان بگن!
Ebrahimkh
سه شنبه 31 تیر 1393, 23:36 عصر
سلام محمد جان داداش با این روش تست کردم یه جورایی جوابم رو داد ولی بازم بدرد بخور نیست
امیدوارم دوستان جواب بهتری به بنده بدهند
public class Test {
public static void main(String[] args) {
try {
Process p=Runtime.getRuntime().exec("arp -a");
BufferedReader br=new BufferedReader(new InputStreamReader(p.getInputStream()));
String s;
while((s=br.readLine())!=null)
{
System.out.println(s);
}
} catch (Exception e) {
}}}
ahmad.mo74
چهارشنبه 01 مرداد 1393, 00:55 صبح
سلام، کار سختی نیست...تو جاوا هیچی نشد نداره :)
میتونیم از ping استفاده، به این صورت که به تمامی رنج ipهای یک شبکه ping میزنیم...اگر ping داشت یعنی اون ip در حال استفاده است و برعکس...
حالا برای ping زدن من 2 راه بلدم یکی با استفاده از InetAddress و اون یکی هم با استفاده از دستورات cmd
private boolean pingSucceed(String ip) {
int timeout = 10000;
try {
return InetAddress.getByName(ip).isReachable(timeout);
} catch (IOException e) {
e.printStackTrace();
}
return false;
}
private boolean pingSucceed(String ip) {
try {
List<String> command = new ArrayList<>();
command.add("ping");
command.add(ip);
ProcessBuilder pb = new ProcessBuilder(command);
Process process = pb.start();
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(process.getInputStream()));
String s;
StringBuilder result = new StringBuilder();
while ((s = bufferedReader.readLine()) != null) {
result.append(s).append('\n');
if (s.contains("unreachable")) {
break;
}
}
process.waitFor();
return result.length() > 0 && !String.valueOf(result).contains("unreachable");
} catch (IOException | InterruptedException e) {
e.printStackTrace();
}
return false;
}
Ebrahimkh
چهارشنبه 01 مرداد 1393, 01:35 صبح
مرسی داداش ولی ممکنه یکم در مورد این قسمت توضیح دهید
int timeout = 10000;
براچی هزار ؟؟؟؟
++++++++++++++++++++++++++++
در کل اینجا منظورتان میلی ثانیه هستش درسته ؟؟؟
+++++++++++++++++++++++++++++++
----------------------------------------
در کل یه راهی میخوام که بتونم با ران کردن برنامه در شبکه لیست ip هایی که تو شبکه مورد نظر هست رو برام پیدا کنه
حالا برنامه من از کجا بدونه که چه ip هایی تو ای شبکه هست یا نیست که بخواد ازش پینگ بگیره ؟؟؟
بازم ممنون بخاطر راهنماییتون
ahmad.mo74
چهارشنبه 01 مرداد 1393, 01:55 صبح
خواهش میکنم...بله اون millisecond هست و تعیین میکنه که چقدر برای Ping منتظر بمونه و همون 10 ثانیه کافیه (برای اطمینان چون ممکنه نت کند باشه و ping طولانی بشه) ...
شما اول باید ip شبکه رو داشته باشی مثلا 10.128.1.4 حالا باید از 10.128.1.1 تا 10.128.1.254 رو ping بزنی اگر ping داشت یعنی کسی به این ip وصل شده و دوباره از 10.128.2.1 تا 10.128.2.254 و...
البته اینجوری خیلی برنامه کند میشه که باید multi thread بشه مثلا از ExecutorService استفاده کن یا...
برای پیدا کردن ip ایی که بهش وصلی:
public String getMyIP() {
String result = null;
Enumeration<NetworkInterface> interfaces = null;
try {
interfaces = NetworkInterface.getNetworkInterfaces();
} catch (SocketException e) {
e.printStackTrace();
}
if (interfaces != null) {
while (interfaces.hasMoreElements()) {
NetworkInterface i = interfaces.nextElement();
Enumeration<InetAddress> addresses = i.getInetAddresses();
while (addresses.hasMoreElements() && (result == null || result.isEmpty())) {
InetAddress address = addresses.nextElement();
if (!address.isLoopbackAddress() && address.isSiteLocalAddress()) {
result = address.getHostAddress();
}
}
}
}
return result;
}
محمد فدوی
چهارشنبه 01 مرداد 1393, 09:59 صبح
کدی که ahmad.mo74 عزیز گذاشتن به نوعی تست کردن هستش که به درد Sniff کردن شبکه میخوره! و فکر نکنم نیت Ebrahimkh این باشه!
پیدا کردن IPهای تخصیص یافته توی شبکه (و احیانا MACهاشون) یه کار روتین هست و با پروتکل ARP (http://en.wikipedia.org/wiki/Address_Resolution_Protocol) انجام میشه. نمیدونم شاید روش مستقیمی برای اینکار توی جاوا هم باشه... ولی من حدس میزنم نباشه!
برای درخواست ARP از Broadcast شبکتون توی سیستم های گنو/لینوکس همونطور که گفتی میتونی از arp با پرچم a- استفاده کنی (اگر nmap رو نصب کنی امکانات بیشتری هم داری):
# arp -a
خروجی یه چیزی مثل این خواهد بود:
? (192.168.1.50) at 00:11:22:33:44:55 [ether] on wlan0
? (192.168.1.54) at 01:11:22:33:44:55 [ether] on eth0
معادل ویندوزی این دستور هم همین هستش. ولی خروجیش رو نمیدونم چون رو سیستم ویندوز ندارم!
اگر امکانات فراتری مثل Scan کردن و ... رو هم نیاز داری پیشنهاد میکنم خودت دستی این کار رو نکنی (خیلی دردسر داری تا بهترین و سریع کد ممکن رو تولید کنی!) از nmap (http://nmap.org/) استفاده کن. توی ویندوز هم میتونی نصبش کنی (تو سایت خودش توضیح داده...) توی اکثر توزیع های لینوکسی هم (اوبونتو، فدورا و OpenSUSE رو مطمینم!) میتونی از توی مخازن خود اون توزیع نصبش کنی.
برای انجام Requestهای ARP و RARP (http://en.wikipedia.org/wiki/Reverse_Address_Resolution_Protocol) هم میتونی ازش استفاده کنی. اینجا (http://nmap.org/book/nping-man-arp-mode.html) رو ببین.
بهرحال فکر نکنم راه بهتری باشه...
ahmad.mo74
پنج شنبه 02 مرداد 1393, 00:45 صبح
سلام، من امروز یکم بیکار بودم این برنامه رو براتون نوشتم، ایشالا که کارتونو را بندازه :) ... حالا باز خواستین خودتونم میتونین کاملترش بکنین...
IPScanner (https://www.dropbox.com/s/jbxpi5427dl87wo/IPScanner.zip) با jdk 8u11
Ebrahimkh
پنج شنبه 02 مرداد 1393, 14:47 عصر
سلام احمد جان
دست گلت درد نکنه
چقد ظاهر گرافیکیش قشنگ بود
این رو با چه look&feel نوشتی
ahmad.mo74
پنج شنبه 02 مرداد 1393, 16:10 عصر
سلام، خواهش میکنم...با همون Nimbus نوشتم
Ebrahimkh
پنج شنبه 02 مرداد 1393, 16:16 عصر
خیلی عالی بود واقعا کار گرفیکیت حرف نداره
برا دکمه ها مثل اینکه دو وضعیت رنگی انتخاب کردی مثلا دکمه run اولش سبز روشنه وقتی روش کلیک می کنیم
تغییر رنگ میده ممکنه یکم در مورد این روش توضیح بدی گه با چه روشی این کار رو انجام دادی
سپاسگذارم
ahmad.mo74
پنج شنبه 02 مرداد 1393, 16:22 عصر
کار خاصی نکردم والا :) فقط زمانی که run زده میشه setEnabled رو false میکنم. در ضمن سورس برنامه هم هست میتونین کاملترش بکنین
Ebrahimkh
پنج شنبه 02 مرداد 1393, 16:30 عصر
آره دیدمش دارم بررسیش می کنم
راستی این کادرهایی که باز میشن رو با چه نوع فرمی طراحی کردی مثل Toast اندرویدن
آخرین سوالم بود :قلب:
ahmad.mo74
پنج شنبه 02 مرداد 1393, 16:38 عصر
فقط یه جاش سوتی داده بودم درستش کردم( زمان ping رو درست نمینوشت)، لینکم آپدیت کردم...
کدوم کادرا؟ notification ؟ اونام هم همون JPanel توشه فقط undecorated کردم که هم قشنگتر بشه هم بشه opacity شو تغییر داد واسه محو شدن و...
خواهش میکنم شما 100 تا بپرس ما در خدمتیم :قلب:
ahmad.mo74
پنج شنبه 02 مرداد 1393, 16:41 عصر
البته برنامه های از این قشنگ ترم نوشتم :))
Ebrahimkh
پنج شنبه 02 مرداد 1393, 17:10 عصر
احمد جان داداش برا اسنیف کردن پکتها تو شبکه تا حالا برنامه نوشتی...
من می خوام یه برنامه بنویسم که پکتها رو اسنیف کنه ولی نمیدونم چی بنویسم :لبخند:
-----------------------------
یه توانایی دیگه که می خوام به برنامم بدم اینه که هر پکتی که وارد سیستمم میشه نشون بده که مربوط به کدوم ip میشه
---------------------
قربونت داداش
ahmad.mo74
پنج شنبه 02 مرداد 1393, 17:18 عصر
خیلی تو این زمینه ها کد نزدم... این لینکارو یه نگاه بنداز:
http://stackoverflow.com/questions/590510/java-tcp-socket-sniffing (http://stackoverflow.com/questions/590510/java-tcp-socket-sniffing)
http://stackoverflow.com/questions/3798733/how-do-i-programatically-collect-packets-from-passively-sniffing
از wireshark خودمم استفاده کردم خوبه
ahmad.mo74
جمعه 03 مرداد 1393, 01:11 صبح
برنامه رو ردیفش کردم که رو os لینوکسی هم کار کنه :لبخند: اینم لینک IPScanner (https://www.dropbox.com/s/jbxpi5427dl87wo/IPScanner.zip)
121522121523
Ebrahimkh
جمعه 03 مرداد 1393, 11:46 صبح
مرسی احمد جان داداش عالی بود
داداش اگه ممکنه یه سری هم به این تاپیک بزن
http://barnamenevis.org/showthread.php?462141-%D9%84%D9%88%DA%AF%DB%8C%D9%86-%DA%A9%D8%B1%D8%AF%D9%86-%D8%A8%D9%87-%D8%B3%D8%A7%DB%8C%D8%AA-****-%D8%A7%D8%B1%D8%AA%D8%A8%D8%A7%D8%B7-%D8%A8%D8%A7-%D9%BE%D8%A7%DB%8C%DA%AF%D8%A7%D9%87-%D8%AF%D8%A7%D8%AF%D9%87-%D8%AF%D8%B1-%D8%B4%D8%A8%DA%A9%D9%87
پسر کارت حرف نداره
ahmad.mo74
چهارشنبه 22 مرداد 1393, 17:17 عصر
سلام، ببخشید دوباره پست رو فعال میکنم، یکی دو روز بیکار بودم گفتم حیفه یکم رو این برنامه کار کنم...خلاصه برنامه خوبی شده اگر دوست داشتید استفاده کنید :)
IpScanner (https://www.dropbox.com/s/jbxpi5427dl87wo/IPScanner.zip)
Ebrahimkh
پنج شنبه 23 مرداد 1393, 15:09 عصر
مرسی احمد جان
dasssnj
پنج شنبه 23 مرداد 1393, 19:21 عصر
سلام، ببخشید دوباره پست رو فعال میکنم، یکی دو روز بیکار بودم گفتم حیفه یکم رو این برنامه کار کنم...خلاصه برنامه خوبی شده اگر دوست داشتید استفاده کنید :)
IpScanner (https://www.dropbox.com/s/jbxpi5427dl87wo/IPScanner.zip)
سلام
من یه ساله جاوا را برای اندروید یاد گرفتم و با swing هم خوب کنار میامم ولی نمی دونم چرا برنامه هام اون طور که می خوام نمیشه.
شما جاوا را از چه طریقی و در چه مدت یاد گرفتید؟
ahmad.mo74
پنج شنبه 23 مرداد 1393, 19:55 عصر
سلام، من پارسال خودم کم کم شروع کردم برای JEE هم یه مدت رفتم مجتمع فنی دیگه از اون به بعد هم توی کار یه چیزایی یاد میگیرم... در ضمن port scan هم به برنامه اضافه کردم که دیگه تکمیل بشه
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.