通过Java检查域名年龄

时间:2013-03-02 01:08:04

标签: java dns

我正在为大学项目制作一个简单的网络钓鱼扫描工具。我的一种检测方法包括检查电子邮件中的DNS是否有效,我还想检查他们的年龄。这是我如何检查它们是否存在的示例代码:

import javax.naming.NamingException;
import javax.naming.directory.Attribute;
import javax.naming.directory.Attributes;
import javax.naming.directory.DirContext;
import javax.naming.directory.InitialDirContext;
import java.util.Hashtable;

public class DNSExample {
    static int doLookup( String hostName ) throws NamingException {
        Hashtable env = new Hashtable();
        env.put("java.naming.factory.initial",
                "com.sun.jndi.dns.DnsContextFactory");
        DirContext ictx = new InitialDirContext( env );
        Attributes attrs =
                ictx.getAttributes( hostName, new String[] { "MX" });
        Attribute attr = attrs.get( "MX" );
        if( attr == null ) return( 0 );
        return( attr.size() );
    }

    public static void main( String args[] ) {

        String [] array = {"google.com","dsad33114sssaxzx.com"} ;
        for( int i = 0; i < array.length; i++ ) {
            try {
                System.out.println( array[i] + " has " +
                        doLookup( array[i] ) + " mail servers" );
            }
            catch( Exception e ) {
                System.out.println(array[i] + " : " + e.getMessage());
            }
        }
    }
}
  

我如何修改上述代码以包含年龄检查   对于存在的服务器?

2 个答案:

答案 0 :(得分:1)

根据您的描述和评论,您似乎正在尝试收集whois信息。

  1. http://commons.apache.org/proper/commons-net/
  2. 下载API
  3. 更改下面的nameToQuery并运行它。
  4. 公共课WhoisIt {

    public static final String WHOIS_SERVER = "whois.internic.net";
    public static final int WHOIS_PORT = 43;
    
    public static void main(String[] args) throws Exception {
    
        String nameToQuery = "avajava.com";
    
        WhoisClient whoisClient = new WhoisClient();
        whoisClient.connect(WHOIS_SERVER, WHOIS_PORT);
        String results = whoisClient.query(nameToQuery);
    
        System.out.println(results);
    }
    }
    
    祝你好运

答案 1 :(得分:1)

我认为你选择的问题在一般情况下无法解决......使用当前的互联网标准:

  1. 无法从DNS本身获取所需信息。
  2. 在某些情况下,可以从WHOIS获取有关DNS注册的信息。但是,WHOIS服务器返回的信息不是标准化的:
    • 没有标准信息模型。
    • 没有标准格式。
    • 无法保证信息的准确性。
    • 甚至不清楚“服务器的年龄”是否可用。 (例如,APNIC的WHOIS提供的最接近的是DNS记录的最后修改时间戳。并且这不是服务器时代的良好代理。)
  3. 有一套RFC定义名为CRISP的内容,但据我所知,该标准的目的是让注册商向注册商交换信息。 (我找不到任何基于CRISP的面向公众的服务。)
  4. 还有一个名为WEIRDS的IETF工作组,我认为该工作组旨在为WHOIS定义一个支持Web的替代品。 (不要将WEIRDS与IETF WEIRD WG混淆!)但这是最近形成的,现在对结果做出任何预测还为时过早。 (或者NIC需要多长时间才能实现WG出来的任何规范。)

  5. 总结:你在这个空间中实现真正有效的东西的机会目前很低。您可能希望实现的最佳目标可能是基于屏幕抓取一个或两个WHOIS服务。

    这可能会在几年内发生变化,但这对您当前的项目没有任何帮助。