一个综合的网络探测工具,可以端口扫描、域名解析、获取html文件,源码贴在这,请大家指点

killme2008 2003-12-09 05:34:02
有兴趣的看看
/*IP探测器1.0
*Denny Soft
*killme6115@sina.com
*Scanner1.java
*/
import java.net.*;
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
import java.io.*;
public class Scanner1 extends JFrame
{
GetLocal Gl=new GetLocal();
GetHtml Gh=new GetHtml();
Explore ep=new Explore();
DNS d=new DNS();
Help help=new Help();
JTabbedPane tab=new JTabbedPane();

Scanner1()
{
super("Denny Scanner1.0");
Container cp=getContentPane();
cp.add(tab);
tab.addTab("本机探测",Gl);
tab.addTab("获取Html文件",Gh);

tab.addTab("端口扫描",ep);
tab.addTab("域名解析",d);
tab.addTab("关于",help);
}

public static void main(String args[])
{
Scanner1 frame=new Scanner1();
Toolkit tk=frame.getToolkit();
int w=tk.getScreenSize().width;
int h=tk.getScreenSize().height;
frame.setSize(400,390);
frame.setLocation(w/3,h/3);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}



class GetLocal extends JPanel
{
private JTextField txt1=new JTextField(10),
txt2=new JTextField(10);
private JLabel b1=new JLabel("本机IP地址:"),
b2=new JLabel("本机计算机名:");
private JButton bt=new JButton("<html><font size=3 color=blue>Get"),
clear=new JButton("<html><font size=3 color=blue>Clear");
private JPanel p1=new JPanel(),
p2=new JPanel();
private InetAddress address;
GetLocal()
{
setLayout(new GridLayout(3,2));
add(p1);
add(p2);
p1.setLayout(new GridLayout(2,2));
p1.setSize(300,30);
p2.setLayout(new FlowLayout());
p2.setSize(300,10);
p1.add(b1);
p1.add(txt1);
p1.add(b2);
p1.add(txt2);
p2.add(clear);
p2.add(bt);
bt.addActionListener(new Get());
clear.addActionListener(new Clear());
try
{

address=InetAddress.getLocalHost();
}
catch(Exception e)
{
JOptionPane.showMessageDialog(null,new JButton("无法获取本机地址"),
"Error Message.",JOptionPane.ERROR_MESSAGE);
}
}
class Get implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
txt1.setText(address.getHostAddress());
txt2.setText(address.getHostName());
}
}
class Clear implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
txt1.setText("");
txt2.setText("");
}
}
}
class GetHtml extends JPanel
{
private JLabel url=new JLabel("URL"),
html=new JLabel("HTML");
private JTextField txt=new JTextField(10);
private JPanel p1=new JPanel(),
p2=new JPanel();
private JTextArea ta=new JTextArea(10,15);
private JScrollPane sb=new JScrollPane(ta);
private JButton bt1=new JButton("Save"),
bt2=new JButton("Get"),
bt3=new JButton("Clear");
private URL u;
private URLConnection uc;

GetHtml()
{
p1.setLayout(new GridLayout(2,2));
p1.add(url);
p1.add(txt);
p1.add(bt1);
p1.add(bt2);
p1.add(html);
p1.add(bt3);
p2.add(sb);
add(p1);
add(p2);
bt1.addActionListener(new save1());
bt2.addActionListener(new Gethtml());
bt3.addActionListener(new Clear());
}
class Gethtml implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
int c;
try
{
u=new URL("http://"+txt.getText());
uc=u.openConnection();
InputStream input=uc.getInputStream();
String s=null;
while (((c = input.read()) != -1))
{
ta.append(String.valueOf((char) c));
}
;

}
catch(Exception e1)
{
JOptionPane.showMessageDialog(null,new JButton("无法获取HTML文件"),
"Error Message.",JOptionPane.ERROR_MESSAGE);
}

}
}
class Clear implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
txt.setText("");
ta.setText("");
}
}
class save1 implements ActionListener
{
public void actionPerformed(ActionEvent e)
{

JFileChooser c = new JFileChooser();
int rVal = c.showSaveDialog(null);
if(rVal == JFileChooser.APPROVE_OPTION)
{
try
{
BufferedWriter out=new BufferedWriter(new FileWriter(c.getCurrentDirectory()+
"\\"+ c.getSelectedFile().getName()));
String s=ta.getText();
out.write(s);
out.close();
}
catch(Exception e1)
{
JOptionPane.showMessageDialog(null,new JButton("保存文件失败"),
"Error Message.",JOptionPane.ERROR_MESSAGE);

}

}
}
}

}
...全文
112 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
killme2008 2003-12-09
  • 打赏
  • 举报
回复
class Explore extends JPanel
{
private JLabel lb1=new JLabel("请输入IP或者域名"),
lb2=new JLabel("From"),
lb3=new JLabel("to");
private JButton bt=new JButton("Start");
private JCheckBox cb=new JCheckBox("扫描常规端口(21,25,53,80,110,139,1433,3389)");
private JPanel p1=new JPanel(),
p2=new JPanel(),
p3=new JPanel();
private JTextField txt1=new JTextField(10),
txt2=new JTextField(10),
txt3=new JTextField(10);
private JTextArea ta=new JTextArea(10,20);
private InetAddress add;
private Socket socket;
public Explore()
{
p1.add(lb1,BorderLayout.WEST);
p1.add(txt1);
add(p1);
p2.add(lb2);
p2.add(txt2);
p2.add(lb3);
p2.add(txt3);
add(p2);
p3.add(cb);
p3.add(bt);
add(p3);
ta.setLineWrap(true);
add(ta);
bt.addActionListener(new scanner());

}

class scanner implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
if(txt1.getText()==null)
{
txt1.setText("localhost");
}
if(cb.isSelected())
{
int a[]={21,25,53,80,110,139,1433,3389};
for(int i=0;i<a.length;i++)
{
try{
socket=new Socket(txt1.getText(),a[i]);
ta.append("This Host exits "+"port:"+a[i]+"\n");
}
catch(UnknownHostException e1)
{
JOptionPane.showMessageDialog(null,new JButton("你所探测的主机无效!"),
"Error Message.",JOptionPane.ERROR_MESSAGE);
}
catch(IOException e2)
{
System.out.println("Server is not found");
}
}
JOptionPane.showMessageDialog(null,new JButton("扫描完毕!"),
"Error Message.",JOptionPane.ERROR_MESSAGE);
try
{
socket.close();
}
catch(IOException e3)
{
}

}
else
{
int begin=Integer.parseInt(txt2.getText());
int end=Integer.parseInt(txt3.getText());
for(int i=begin;i<=end;i++)
{
try
{
socket=new Socket(txt1.getText(),i);
ta.setText("This Host exits "+"port:"+i+" exits");
}
catch(UnknownHostException e1)
{
JOptionPane.showMessageDialog(null,new JButton("你所探测的主机无效!"),
"Error Message.",JOptionPane.ERROR_MESSAGE);
}
catch(IOException e2)
{
System.out.println("Server is not found");
}
}
JOptionPane.showMessageDialog(null,new JButton("扫描完毕!"),
"Error Message.",JOptionPane.ERROR_MESSAGE);
try
{
socket.close();
}
catch(IOException e3)
{
}

}
}



}

}
class DNS extends JPanel
{
private JTextField txt1=new JTextField(10),
txt2=new JTextField(10);
private JLabel b1=new JLabel("域名"),
b2=new JLabel("IP地址");
private JButton bt=new JButton("<html><font size=3 color=blue>Go!"),
clear=new JButton("<html><font size=3 color=blue>Clear");
private JPanel p1=new JPanel(),
p2=new JPanel();
private InetAddress address;
DNS()
{
setLayout(new GridLayout(3,2));
add(p1);
add(p2);
p1.setLayout(new GridLayout(2,2));
p1.setSize(300,30);
p2.setLayout(new FlowLayout());
p2.setSize(300,10);
p1.add(b1);
p1.add(txt1);
p1.add(b2);
p1.add(txt2);
p2.add(clear);
p2.add(bt);
bt.addActionListener(new Get());
clear.addActionListener(new Clear());

}
class Get implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
try
{

if(txt1.getText()!=null)
address=InetAddress.getByName(txt1.getText());
else
address=InetAddress.getLocalHost();
}
catch(Exception e1)
{
JOptionPane.showMessageDialog(null,new JButton("无法获得IP"),
"Error Message.",JOptionPane.ERROR_MESSAGE);
}
txt2.setText(address.getHostAddress());
txt1.setText(address.getHostName());
}
}
class Clear implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
txt1.setText("");
txt2.setText("");
}
}
}
class Help extends JPanel
{
private JPanel p1=new JPanel();
private JPanel p2=new JPanel();
private JButton b1=new JButton("<html><head></head><body><font size=6 color=red>欢迎使用Denny Scanner1.0</body></html>");
private JButton b2=new JButton("<html><head></head><body><font size=4 color=blue>    这只是我在学java.net包所做的一个小练习."+
"做的不好,<br>没有采用多线程,所以有时候反应很慢,特别是端口扫描<br>的时候"+
"建议大家最好选择常用端口扫描,有任何问题或<br>者建议请发Email到killme6115@sina.com");
Help()
{
// setLayout(new BorderLayout());
p1.add(b1);
p2.add(b2);
add(p1);
add(p2);
}
}




62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧