PDA

View Full Version : [Q] Làm cách nào để scan IP được ?



keepsmiling
29-09-2002, 00:36
Xin các bác hướng dẫn giùm Làm cách nào để scan IP được vậy?

Old Shark
30-09-2002, 10:11
Có vô khối chương trình IP scanner được viết sẵn trên Internet. Bạn chỉ cần search với từ khoá "IP scanner" thôi.
Còn nếu bạn muốn tự viết lấy chương trình, nguyên tắc rất đơn giản: đọc vào vùng (range) cần scan, đọc vào port cần scan, dùng một vòng lặp cho lần lượt mở kết nối đến các IP với port đã cho, IP nào có listen ở port đó thì báo cáo kết quả.

Nicky
30-09-2002, 15:35
Em muốn có Source cơ !!!
Bác nào biết các chương trình đó dùng kĩ thuật gì để Scan IP không ?

Old Shark
01-10-2002, 11:12
Bạn thử xem đoạn code Java sau:



------------------------Cut here---------------------
Class IPAddr
{
public
int a,b,c,d;
String IP;

public IPAddr()
{
a=b=c=d=1;
String IP = valueOf(a) + "." + valueOf(b) + "." + valueOf(c) + "." + valueOf(d);
}

public void setIP(int x, int y, int z, int t)
{
a=x;
b=y;
c=z;
d=t;
}

public String getIP ()
{
String temp = valueOf(a) + "." + valueOf(b) + "." + valueOf(c) + "." + valueOf(d);
return temp;
}
}

Class ScanIP (IPAddr IP1, IPAddr IP2, int port)
{
public static void main(String args[])
{
if (IP1.a >= IP2.a)
if (IP1.b >= IP2.b)
if (IP1.c >= IP2.c)
{
IPAddr temp;
for (int i=IP1.d; i<=IP2.d; i++)
{
temp.setIP(IP1.a, IP1.b, IP1.c, i);
try
{
Socket s=new Socket(temp.getIP(), port);
System.out.print("IP "+ temp.getIP() + " listenning");
s.close();
} catch (exception e) {}
}
}
else {
IPAddr temp;
for (int i=IP1.d; i<=255; i++)
{
temp.setIP(IP1.a, IP1.b, IP1.c, i);
try
{
Socket s=new Socket(temp.getIP(), port);
System.out.print("IP "+ temp.getIP() + " listenning");
s.close();
} catch (exception e) {}
}
for (int i=IP1.c+1;i<=IP2.c-1; i++)
for (int j=1; j<=255; j++)
{
IPAddr temp; temp.setIP(IP1.a, IP1.b, i, j);
try
{
Socket s=new Socket(temp.getIP(), port);
System.out.print("IP "+ temp.getIP() + " listenning");
s.close();
} catch (exception e) {}
}

for (int i=1; i<=IP2.d; i++)
{
temp.setIP(IP2.a, IP2.b, IP2.c, i);
try
{
Socket s=new Socket(temp.getIP(), port);
System.out.print("IP "+ temp.getIP() + " listenning");
s.close();
} catch (exception e) {}
}
}
}
}

------------------------Cut here---------------------


Lưu ý: Bạn xem ý tưởng thôi, viết vội quá nên chắc chắn là code này hổng chạy đâu ;)
Code này mới quét 2 nhóm số cuối trong địa chỉ IP, và IP1 phải nhỏ hơn IP2.

-----------------------------------------------------------------------------------

Cám ơn DWW đã chỉ dẫn.

danceswithwolves
01-10-2002, 18:02
bác dùng tag [ code ] code here [ /code ]...

Neo
01-10-2002, 18:47
Bác Old Shark lập trình cứng quá hen!

Nicky
01-10-2002, 19:51
Ối chào, em đọc vào mà cứ tưởng là đọc tiếng Campuchia chả hiểu gì cả? Bác biết cách mà viết bằng VB ấy...cho em học hỏi với.
Thx !!!

danceswithwolves
02-10-2002, 08:19
muốn có code VB chỉ có nước viết lại thôi chứ Java mà convert qua VB nỗi gì hở Nicky@ ?

Old Shark
02-10-2002, 15:14
Để mình thử viết lại bằng VB...

Nicky
02-10-2002, 16:36
Bác Old Shark nói ý tưởng cho em đi, để em về suy nghĩ thử coi.

Old Shark
03-10-2002, 01:07
Trời ơi mình đã nói rồi mà. Bạn cho vòng lặp lôi ra từng IP một, rồi dùng Winsock cho connect đến IP đó ở cổng cho trước. Nếu thành công thì báo lại rồi close connection. Bạn đọc một chút về Winsock là làm được liền à. Dễ lắm.

Nicky
03-10-2002, 16:25
Trùi ạ !!!
Chỉ có cách đó thôi sao ? Thế thì khác nào mò kim đáy bể ?
Any way, Thx so much !!!

Old Shark
03-10-2002, 23:58
Chứ bạn muốn làm sao nữa? Với tốc độ của máy tính, scan chẳng lâu lắc gì đâu.