简体   繁体   中英

Do I have to write to the socket to have the server send me a response to read from to grab banner for certain services?

public class PortScan 
{

public String ip;

public PortScan(String ip)
{
    this.ip = ip;
}
public void setIP( String ip )
{
    this.ip = ip;   
}

public String getIP()
{
    return this.ip;
}
public void scan()
{
    int i = 1;
    String ip = this.getIP();
    while(i < 50000)
    {
    try
    {
        Socket sock = new Socket(ip, i);
        InputStream in = sock.getInputStream();
        OutputStream out = sock.getOutputStream();
        BufferedInputStream bins = new BufferedInputStream(in);
        BufferedReader bin = new BufferedReader(new InputStreamReader(bins));
        String response = bin.readLine();
        System.out.println(response);
        System.out.println(ip + ":" + i);
        sock.close();
    }
    catch( UnknownHostException e )
    {

        //System.out.println("No host found.");
    }
    catch(IOException e)
    {

        //System.out.println("Problem connection to host.");
    }
    i++;
    }
} 
public static void main(String[] args) 
{
    PortScan aPortScan = new PortScan("127.1.1.1");

    aPortScan.scan();
}
}

Console Output:

SSH-2.0-OpenSSH_6.0p1 Debian-4
127.1.1.1:22<
null
127.1.1.1:80

Yes, some services require interaction in order to output banners. For HTTP servers you have to send GET / HTTP/1.1 and then parse the response for the Server: line.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM