1

大学のプロジェクト用に簡単なフィッシング スキャナー ツールを作成しています。私の検出方法の 1 つは、電子メール内の 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());
            }
        }
    }
}

存在するサーバーの年齢のチェックを含めるには、上記のコードをどのように変更する必要がありますか?

4

2 に答える 2

1

上記の説明とコメントに基づいて、whois 情報を収集しようとしているようです。

  1. http://commons.apache.org/proper/commons-net/から API をダウンロードします。
  2. 以下の nameToQuery を変更して実行します。

パブリック クラス 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);
}
}

幸運を

于 2013-03-02T01:48:23.843 に答える
1

一般的なケースでは解決できない問題を選択したと思います...現在の世代のインターネット標準を使用して:

  1. 必要な情報は、DNS 自体から取得することはできません。
  2. 場合によっては、DNS 登録に関する情報を WHOIS から取得できます。ただし、WHOIS サーバーから返される情報は標準化されていません。
    • 標準情報モデルはありません。
    • 標準フォーマットはありません。
    • 情報の正確性について保証するものではありません。
    • 「サーバーの時代」が利用可能になるかどうかさえ明らかではありません。(たとえば、APNIC の WHOIS が提供する最も近いものは、DNS レコードの最終変更タイムスタンプです。これは、サーバーの経過時間の適切な代理ではありません。)
  3. CRISPと呼ばれるものを定義する一連の RFC がありますが、私が理解できる限り、その標準の目的は、レジストラ間で情報を交換することです。(CRISP に基づく公開サービスは見つかりませんでした。)
  4. WEIRDSと呼ばれる IETF ワーキング グループもあります。これは、WHOIS の Web 対応の代替を定義することを目的としていると思います。(WEIRDS を IETF WEIRD WG と混同しないでください!) しかし、それはごく最近に結成されたものであり、結果を予測するには時期尚早です。(または、NIC が WG から発表された仕様を実装するのにかかる時間。)

要約: この分野で実際に機能するものを実装できる可能性は、現在のところ低いです。おそらく、1 つまたは 2 つの WHOIS サービスのスクリーン スクレイピングに基づいたものを実現することが期待できます。

これは数年後に変更される可能性がありますが、現在のプロジェクトには何の役にも立ちません。

于 2013-03-02T02:07:00.770 に答える