2013-03-02 121 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