Similar documents
% ldapsearch -H ldaps://pub-ldap.itc.nagoya-u.ac.jp:1025 \ -b o=ldap-test "(objectclass=*)" -H ldapspubldap.itc.nagoya-u.ac.jp1025 -H ldap://pub-ldap.

K227 Java 2

8 if switch for while do while 2

やさしいJavaプログラミング -Great Ideas for Java Programming サンプルPDF

新・明解Java入門

Java (9) 1 Lesson Java System.out.println() 1 Java API 1 Java Java 1

Microsoft Word - keisankigairon.ch doc

ALG ppt

untitled

Java updated

(Microsoft PowerPoint - \223\306\217KJAVA\221\346\202R\224\ ppt)

~モバイルを知る~ 日常生活とモバイルコンピューティング

TopLink å SampleClient.java... 5 Ò readallsample() querysample() cachesample() Ç..

簡単なHTMLファイルを作ろう

~モバイルを知る~ 日常生活とモバイルコンピューティング

Java プログラミング Ⅰ 7 回目 switch 文と論理演算子 今日の講義講義で学ぶ内容 switch 文 論理演算子 条件演算子 条件判断文 3 switch 文 switch 文 式が case のラベルと一致する場所から直後の break; まで処理しますどれにも一致致しない場合 def

Java プログラミング Ⅰ 3 回目変 数 今日の講義講義で学ぶ内容 変数とは 変数の使い方 キーボード入力の仕方 変 数 変 数 一時的に値を記憶させておく機能 変数は 型 ( データ型 ) と識別子をもちます 2 型 ( データ型 ) 変数に記憶する値の種類変数の型は 記憶できる値の種類と範囲

10/ / /30 3. ( ) 11/ 6 4. UNIX + C socket 11/13 5. ( ) C 11/20 6. http, CGI Perl 11/27 7. ( ) Perl 12/ 4 8. Windows Winsock 12/11 9. JAV

55 7 Java C Java TCP/IP TCP/IP TCP TCP_RO.java import java.net.*; import java.io.*; public class TCP_RO { public static void main(string[] a

3 Java 3.1 Hello World! Hello World public class HelloWorld { public static void main(string[] args) { System.out.println("Hello World");

明解Javaによるアルゴリズムとデータ構造

Javaセキュアコーディングセミナー東京 第3回 入出力(File, Stream)と例外時の動作 演習解説

明解Javaによるアルゴリズムとデータ構造

untitled

問題1 以下に示すプログラムは、次の処理をするプログラムである

Java プログラミング Ⅰ 3 回目変数 変数 変 数 一時的に値を記憶させておく機能型 ( データ型 ) と識別子をもつ 2 型 ( データ型 ) 変数の種類型に応じて記憶できる値の種類や範囲が決まる 型 値の種類 値の範囲 boolean 真偽値 true / false char 2バイト文

~モバイルを知る~ 日常生活とモバイルコンピューティング

新・明解Javaで学ぶアルゴリズムとデータ構造

r1.dvi

IE6 2 BMI chapter1 Java 6 chapter2 Java 7 chapter3 for if 8 chapter4 : BMI 9 chapter5 Java GUI 10 chapter6 11 chapter7 BMI 12 chap

講 義 内 容 ( 前 回 ) 提 出 課 題 の 解 答 例 PHPの 応 用 PHPからMySQLへのアクセス(レコードの 新 規 登 録 ) 2

LogisticaTRUCKServer-Ⅱ距離計算サーバ/Active-Xコントロール/クライアント 概略   

アルゴリズムとデータ構造1

Dec , IS p. 1/60

Javaセキュアコーディングセミナー東京 第4回 メソッドとセキュリティ 演習解説


SCA BB Service Configuration API を使用したプログラミング

Exam : 1z1-809-JPN Title : Java SE 8 Programmer II Vendor : Oracle Version : DEMO Get Latest & Valid 1z1-809-JPN Exam's Question and Answers 1 from Ac

I java A

2. HTML csh AWK AWK 1., 2., 3. 2 HTML HTML HyperText Markup Language WWW WWW (.html

コンピュータサイエンス 4. ウェブプログラミング

12.1 インターネットアドレス インターネットアドレス インターネットアドレス 32 ビットの長さを持つインターネットに接続されたマシンを識別するのに使う インターネットアドレスは ピリオドで区切られたトークンの並びで表現されることもある インターネットアドレス

Java演習(4) -- 変数と型 --

JavaプログラミングⅠ

Java プログラミング Ⅰ 7 回目 switch 文と論理演算子 条件判断文 3 switch 文 switch 文式が case の値と一致した場合 そこから直後の break; までを処理し どれにも一致しない場合 default; から直後の break; までを処理する 但し 式や値 1

¥Í¥Ã¥È¥ï¡¼¥¯¥×¥í¥°¥é¥ß¥ó¥°ÆÃÏÀ

: : : TSTank 2

class IntCell { private int value ; int getvalue() {return value; private IntCell next; IntCell next() {return next; IntCell(int value) {this.value =

226

ALG2012-A.ppt

明解Java入門編

r02.dvi

ohp02.dvi

Java演習(2) -- 簡単なプログラム --

Java (7) Lesson = (1) 1 m 3 /s m 2 5 m 2 4 m 2 1 m 3 m 1 m 0.5 m 3 /ms 0.3 m 3 /ms 0.6 m 3 /ms 1 1 3

解きながら学ぶJava入門編

コーディング基準.PDF

講 義 内 容 前 回 の 提 出 課 題 の 解 答 例 復 習 データを 送 信 するための HTML (フォーム) PHPによるフォームデータの 処 理 2

Vector Vector Vector Vector() Vector(int n) n Vector(int n,int delta) n delta

!!!!!

oop1

class IntCell { private int value ; int getvalue() {return value; private IntCell next; IntCell next() {return next; IntCell(int value) {this.value =

Java Java Java Java Java 4 p * *** ***** *** * Unix p a,b,c,d 100,200,250,500 a*b = a*b+c = a*b+c*d = (a+b)*(c+d) = 225

: 1/15( ): HTML web page (2) 1/18( ): (1) 1/25( ): (2) 1

目 次 Java GUI 3 1 概要 クラス構成 ソースコード例 課題...7 i

untitled

JavaScriptプログラミング入門


tkk0408nari

Microsoft PowerPoint ppt

Javaセキュアコーディングセミナー2013東京第1回 演習の解説

2.2 Java C main Java main 2 C 6 C Java 3 C Java ( ) G101Hello.java G101Hello main G101Hello.java /* G101Hello */ class G101Hello { /* main */ public s

Q&A集

情報処理Ⅰ

Java講座

2

Prog2_9th

break 文 switch ブロック内の実行中の処理を強制的に終了し ブロックから抜けます switch(i) 強制終了 ソースコード例ソースファイル名 :Sample7_1.java // 入力値の判定 import java.io.*; class Sample7_1 public stati

新・明解Javaで学ぶアルゴリズムとデータ構造

ex01.dvi

方程式を解いてみよう! C++ から PHP + JavaScriptへ

オブジェクト指向プログラミング・同演習 5月21日演習課題

10/8 Finder,, 1 1. Finder MAC OS X 2. ( ) MAC OS X Java ( ) 3. MAC OS X Java ( ) / 10

JAVA 11.4 PrintWriter 11.5

JavaプログラミングⅠ

Thread

データ構造とアルゴリズム論

Java学習教材

untitled

コンピュータサイエンス 1. ウェブの基本

(1) <html>,,,,, <> ( ) (/ ) (2) <!DOCTYPE html> HTML5 (3) <html> HTML (4) <html lang= ja > html (ja) (5) JavaScript CSS (6) <meta charset= shift jis >

Web Servlet/JSP JSP

Programming-C-9.key

PHP_ch06.indd

I HTML HashMap (i) (ii) :.java import java.net.*; import java.io.*; import java.util.hashmap; public class SimpleStopWatch { public static voi

オブジェクト脳のつくり方

6 p.1 6 Java GUI GUI paintcomponent GUI mouseclicked, keypressed, actionperformed mouseclicked paintcomponent thread, 1 GUI 6.0.2, mutlithread C


JavaプログラミングⅠ

Transcription:

/ / % % ldapsearch -x -w ps00001 -h pub-ldap.itc.nagoya-u.ac.jp -p 1024 -b o=ldap-test -D cn=ldapstaff,ou=staff,o=ldap-test "(objectclass=*)" "(objectclass=*)" objectclass * * objectclass "(objectclass=*)" o=ldap-test " * *? " cn=ldapstaff,_ou=staff,o=ldap-test "-w / man ldapsearch

/ % ldapsearch -x -h pub-ldap.itc.nagoya-u.ac.jp -p 1024 -b o=ldap-test "(objectclass=*)" =

import javax.naming.*; import javax.naming.directory.*; import java.util.hashtable; import java.util.enumeration; public class ldapsearch { public static void main(string[] args) { if (args.length!= 6 ){ System.out.println("usage: ldapsearch host port BaseDN BindDN BindPW filter"); System.exit(0); String host = args[0]; String port = args[1]; String BaseDN = args[2]; String BindDN = args[3]; String BindPW = args[4]; String Filter = args[5];

// Hashtable env = new Hashtable(); env.put(context.initial_context_factory, "com.sun.jndi.ldap.ldapctxfactory"); env.put(context.provider_url, "ldap://" + host + ":" + port ); env.put(javax.naming.context.security_authentication, "simple"); env.put(javax.naming.context.security_principal, BindDN ); env.put(javax.naming.context.security_credentials, BindPW); try { DirContext ctx = new InitialDirContext(env); // // SearchControls cons = new SearchControls(); cons.setsearchscope(searchcontrols.subtree_scope); NamingEnumeration res = ctx.search( BaseDN, Filter, cons); // // while (res.hasmore()) { SearchResult Entry = (SearchResult)res.next(); System.out.println("dn: " + Entry.getName() + "," + BaseDN); // dn // Attributes Attrs = Entry.getAttributes(); if (Attrs == null) break; // NamingEnumeration EnumAttrs = Attrs.getAll(); while (EnumAttrs.hasMore()) { Attribute anattr = (Attribute)EnumAttrs.next(); Enumeration Vals = anattr.getall(); // while (Vals.hasMoreElements()) { System.out.println(anAttr.getID() + ": " // + Vals.nextElement()); // System.out.println(); ctx.close(); catch (NamingException e) { System.out.println("JNDI Error: "+ e.tostring());

/ % javac ldapsearch.java % java ldapsearch pub-ldap.itc.nagoya-u.ac.jp 1024 o=ldap-test cn=ldapstaff,ou=staff,o=ldap-test ps00001 "cn=*" % setenv CVSROOT :pserver:anonymous@cvs.openldap.org:/repo/openldap % cvs login Logging in to :pserver:anonymous@cvs.openldap.org:2401/repo/openldap CVS password: OpenLDAP % cvs -z3 checkout -P jldap % cvs logout

import com.novell.ldap.ldapattribute; import com.novell.ldap.ldapattributeset; import com.novell.ldap.ldapconnection; import com.novell.ldap.ldapentry; import com.novell.ldap.ldapexception; import com.novell.ldap.ldapsearchresults; import com.novell.ldap.util.base64; import java.util.enumeration; import java.util.iterator; import java.io.unsupportedencodingexception; public class ldapsearch { public static void main(string[] args) { if (args.length!= 6 ){ System.out.println("usage: ldapsearch host port BaseDN BindDN BindPW filter"); System.exit(0); String host = args[0]; int port = Integer.parseInt(args[1]); String BaseDN = args[2]; String BindDN = args[3]; String BindPW = args[4]; String Filter = args[5]; LDAPConnection ld = new LDAPConnection(); try { ld.connect(host, port); // LDAP ld.bind(ldapconnection.ldap_v3, BindDN, BindPW.getBytes("UTF8")); // LDAPSearchResults searchresults = ld.search(basedn, LDAPConnection.SCOPE_SUB, Filter, null, false); // while (searchresults.hasmore()) {

LDAPEntry Entry = null; try { Entry = searchresults.next(); catch(ldapexception e) { System.out.println("Error: " + e.tostring()); continue; System.out.println("dn: " + Entry.getDN()); // dn LDAPAttributeSet attrset = Entry.getAttributeSet(); // Iterator allattr = attrset.iterator(); while(allattr.hasnext()) { LDAPAttribute attr = (LDAPAttribute)allAttr.next(); // String attrname = attr.getname(); // Enumeration allvalues = attr.getstringvalues(); // if( allvalues!= null) { while(allvalues.hasmoreelements()) { String Value = (String) allvalues.nextelement(); // if (Base64.isLDIFSafe(Value)) { System.out.println(attrName + ": " + Value); // Base64 else { Value = Base64.encode(Value.getBytes()); System.out.println(attrName + ": " + Value); System.out.println(""); ld.disconnect(); catch( LDAPException e ) { System.out.println( "Error: " + e.tostring() ); catch( UnsupportedEncodingException e ) { System.out.println( "Error: " + e.tostring() );

System.exit(0); <html> <head> <meta http-equiv="content-type" content="text/html; charset=euc-jp"> <title>php </title> </head>

<body bgcolor=#a0ffff> <h3> LDAPpub-ldap.itc.nagoya-u.ac.jp 1024 <br> <dl> <dt> <br> <dd> Base DN <dd> Bind DN <dd> Bind DN <dd> </dl> <hr> <form action="ldapsearch.php" method="post"> BaseDN: <input type="text" name="basedn">( : o=ldap-test)</div><br> BindDN: <input type="text" name="binddn">( : cn=dptstaff,ou=staff,o=ldap-test)</div><br> BindPW: <input type="text" name="bindpw">( : ps00002)</div><br> Filter: <input type="text" name="filter">( : cn=*)</div><br> <br> <input type="submit" name="submit" value=" "> </form> </h2> <hr> <a href=/>top Page</a> </body> <?php print "<html>"; print "<head>"; print "<meta http-equiv= "Content-Type " content= "text/html; charset=utf-8 ">"; print "<title> </title>"; print "</head>"; print "<body bgcolor=#a0a0ff>"; / / / / $host = "pub-ldap.itc.nagoya-u.ac.jp"; $port = 1024; $basedn = $_POST['BaseDN']; $binddn = $_POST['BindDN'];

$bindpw = $_POST['BindPW']; $filter = $_POST['Filter']; print "<h2>"; print "<center>search Results</center><br>"; print "<h4>"; print "LDAP Server: ".$host."<br>"; print "Port: ".$port."<br>"; print "Base DN: ".$basedn."<br>"; print "Bind DN: ".$binddn."<br>"; print "Password: ".$bindpw."<br>";

print "Filter: ".$filter."<br>"; print "<hr>"; $ld = ldap_connect($host, $port); print "ldap link: ".$ld."<br>"; ldap_set_option($ld, LDAP_OPT_PROTOCOL_VERSION, 3); $bi = ldap_bind($ld, $binddn, $bindpw); if($bi==false){ print "<font color=green><blink>invalid credentials</blink><blink></font><br><hr>"; print "<a href=ldapsearch.html>back to Search page</a>"; exit(0); print "Bind OK"; if($bindpw==""){ print "<font color=green><blink> (Anonymous Bind)</blink><blink></font>"; else{ print "(Bind by dn: ".$binddn.")"; print "<br>"; $res = ldap_search($ld, $basedn, $filter); if($res==false){ print "<font color=green><blink>invalid Base DN</blink></font><br><hr>"; print "<a href=ldapsearch.html>back to Search page</a>"; exit(0); print "Search ID: ".$res."<br>"; $num = ldap_count_entries($ld, $res); print "Number of entries: ".$num."<br>"; print "<hr>"; for ($entry = ldap_first_entry($ld, $res); $entry; $entry = ldap_next_entry($ld, $entry)) { $dn = ldap_get_dn($ld, $entry); echo "dn: ".$dn."<br>"; for ($attr = ldap_first_attribute($ld, $entry, $ber); $attr;

$attr = ldap_next_attribute($ld, $entry, $ber)) { $values = ldap_get_values($ld, $entry, $attr); for ($i = 0; $values[$i]; $i++) { echo $attr.": ".$values[$i]."<br>"; echo "<br>"; ldap_unbind($ld); echo "<hr>"; print "<a href=ldapsearch.html>back to Search page</a>";?>

import com.novell.ldap.ldapattribute; import com.novell.ldap.ldapattributeset; import com.novell.ldap.ldapconnection; import com.novell.ldap.ldapentry; import com.novell.ldap.ldapexception; import com.novell.ldap.ldapsearchresults; import com.novell.ldap.util.base64; import com.novell.ldap.ldapextendedoperation; import com.novell.ldap.ldapextendedresponse; import java.io.unsupportedencodingexception; import java.security.messagedigest; import java.security.nosuchalgorithmexception; import java.util.*; public class auth { public static void main( String[] args ) { if (args.length!= 5 ){ System.out.println("usage: auth BaseDN BindDN BindPW TargetCN TargetPW"); System.exit(0); String host = "pub-ldap.itc.nagoya-u.ac.jp"; int port = 1024; String BaseDN = args[0]; String BindDN = args[1]; String BindPW = args[2]; String TargetCN = args[3]; String TargetPW = args[4]; LDAPConnection ld = new LDAPConnection(); try {

ld.connect(host, port); //connect to the server ld.bind(ldapconnection.ldap_v3, BindDN, BindPW.getBytes("UTF8")); LDAPSearchResults searchresults = ld.search(basedn, LDAPConnection.SCOPE_SUB, TargetCN, null, false); while (searchresults.hasmore()) { LDAPEntry nextentry = null; try { nextentry = searchresults.next(); catch(ldapexception e) { System.out.println("Error: " + e.tostring()); continue; System.out.println("dn: " + nextentry.getdn()); LDAPAttributeSet attributeset = nextentry.getattributeset(); Iterator allattributes = attributeset.iterator(); LDAPAttribute fullnameroman = attributeset.getattribute("fullnameroman"); LDAPAttribute userpassword = attributeset.getattribute("userpassword"); String PasswordInLDAP = userpassword.getstringvalue(); PasswordInLDAP = PasswordInLDAP.substring(6, 46); byte[] decodedpassword = Base64.decode(PasswordInLDAP); byte[] salt = new byte[8]; System.arraycopy(decodedPassword, 20, salt, 0, 8); byte[] TargetPWbin = new byte[targetpw.length() + salt.length]; System.arraycopy(TargetPW.getBytes(), 0, TargetPWbin, 0, TargetPW.length()); System.arraycopy(salt, 0, TargetPWbin, TargetPW.length(), salt.length); try { MessageDigest md=messagedigest.getinstance("sha"); md.update(targetpwbin); byte[] encyptedpassword = md.digest(); byte[] PWandSalt = new byte[encyptedpassword.length + salt.length]; System.arraycopy(encyptedPassword, 0, PWandSalt, 0, encyptedpassword.length); System.arraycopy(salt, 0, PWandSalt, encyptedpassword.length, salt.length); String PasswordToCheck = Base64.encode(PWandSalt);

/ if (PasswordInLDAP.equals(PasswordToCheck)) { System.out.println("Password for " + fullnameroman.getstringvalue() + " is valid."); else { System.out.println("Password for " + fullnameroman.getstringvalue() + " is invalid."); System.out.println("{SSHA" + PasswordInLDAP + " [LDAP]"); System.out.println("{SSHA" + PasswordToCheck + " [USER]"); catch (NoSuchAlgorithmException e) { e.printstacktrace(); ld.disconnect(); catch (LDAPException e) { System.out.println( "Error: " + e. tostring() ); catch (UnsupportedEncodingException e) { System.out.println("Error: " + e.tostring()); System.exit(0); % java auth o=ldap-test cn=ldapstaff,ou=staff,o=ldap-test ps00001 cn=e00001 pe00001 dn: cn=e00001,ou=edo,o=ldap-test Password for Tokugawa Ieyasu is valid. {SSHAKyTPouHDohrf6NSxhT3z8F7dsyDSTwlhJSfRfg== [LDAP]

/ {SSHAKyTPouHDohrf6NSxhT3z8F7dsyDSTwlhJSfRfg== [USER] % java auth o=ldap-test cn=ldapstaff,ou=staff,o=ldap-test ps00001 cn=e=00001 pe00002 dn: cn=e00001,ou=edo,o=ldap-test Password for Tokugawa Ieyasu is invalid. {SSHAKyTPouHDohrf6NSxhT3z8F7dsyDSTwlhJSfRfg== [LDAP] {SSHAkqncQYkBKTs5FznmmSfIoaA05V/STwlhJSfRfg== [USER]