2013-03-02 123 views
1

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

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()); 
      } 
     } 
    } 
} 

我怎么会需要修改上面的代码包括 年龄存在服务器支票?

+0

您是否想过通过WHOIS获取此信息?如果是这样,不同的WHOIS服务器在输出格式上出现了不一致的情况,所以你最终会得到很多不同的模式来解析。 – Celada 2013-03-02 01:24:36

+0

从我读过的一些文章中,我建议使用WHOIS。我想知道是否有一个我可以通过java使用的中央源。理想情况下,它不会太麻烦,因为它只是应用程序的一个小特征。 – Giannis 2013-03-02 01:25:49

+0

没有中央资源。每个不同的域名注册管理机构都拥有自己的WHOIS服务器,大多数(所有?)域名注册机构也都运行他们自己的WHOIS服务器。最糟糕的是,一些域名注册管理机构可能根本就没有运营一个。而且,正如我所说的,他们的输出格式大多完全不同。 – Celada 2013-03-02 01:37:40

回答

1

我想你已经选择了不能在一般情况下,使用当前一代的互联网标准来解决......一个问题:

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

摘要:你的实现在这个空间里的东西,真正的作品是目前低的机会。可能您希望获得的最好结果是基于屏幕抓取一个或两个WHOIS服务。

这可能在几年内改变,但这是没有帮助的当前项目。

1

它似乎根据您说明和以上的意见,您正试图收集whois信息。从http://commons.apache.org/proper/commons-net/

  • 变化低于nameToQuery和

    1. 下载API的运行它。

    公共类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); 
    } 
    } 
    

    好运

  • +0

    尝试从http://commons.apache.org/proper/commons-net/download_net.cgi下载并找不到文件从主镜像和其他镜像返回...虽然我得到了3.1版本的副本,但现在应该做的。 – Giannis 2013-03-02 02:07:18

    +0

    尝试版本commons-net-3.2-bin.zip,http://apache.mirrors.lucidnetworks.net//commons/net/binaries/commons-net-3.2-bin.zip – 2013-03-02 02:08:07