68user's page 掲示板

Prev< No. 4041〜4080> Next  [最新発言に戻る] [過去ログ一覧]
No. 4041 # waka 2004/11/09 (火) 01:01:14
はじめまして、こんばんは.

http://x68000.q-e-d.net/~68user/net/c-http-1.html
http://x68000.q-e-d.net/~68user/net/c-http-2.html 関連で、
URL の解釈について、
http://www-cms.phys.s.u-tokyo.ac.jp/~naoki/CIPINTRO/CCGI/pbrowser.html
のような記事を見つけました.
正規表現でも見かけられるやりかたでできるのだなぁと目が覚めました.

質問でもなんでもないのですが、お邪魔しましたm(_ _)m

No. 4042 # 68user 2004/11/09 (火) 01:42:56
>>4040 やまさん
Java の実行環境がないので検証できませんが、普通にブラウザでアクセスし、
ethereal などでパケットダンプしましょう。さらに自作プログラムのやりとりも
同様にパケットダンプして見比べてみましょう。

>>4041 waka
http://www.din.or.jp/~ohzaki/perl.htm#httpURL というのもあります。

scanf 系で %[..] として文字集合が使えるのは初めて知りました。

No. 4043 # クライアント 2004/11/09 (火) 18:21:04
FTPクライアントで分割ダウンロードする場合、
どんなプログラムになるのでしょうか?
HTTPクライアントで分割アップロードする場合、
どんなプログラムになるのでしょうか?
教えて頂けませんか?

No. 4044 # 68user 2004/11/09 (火) 19:45:26
>>4043 クライアント
> FTPクライアントで分割ダウンロードする場合、
> どんなプログラムになるのでしょうか?
REST を使います。

> HTTPクライアントで分割アップロードする場合、
> どんなプログラムになるのでしょうか?
分割アップロードが PUT を指すのか POST を指すのか知りませんが、
規格としては分割アップロードなるものは規定されていないと思います。

サーバ側の CGI なり Servlet なりで引数を解釈するようなつくりに
すれば、なんだって可能です。

No. 4045 # やまさん [E-mail] 2004/11/09 (火) 20:34:29
68userさんご教授ありがとうございます。言われたとおりにパケットダンプしてソースを
書き直したところ、今度はcookieが無効であると言う画面がでました。
書き直したソースは以下の通りです。
import java.net.*;
import java.io.*;

public class post {
    public static void main(String[] args) {
        try {
            int start = 0;
            PrintWriter pw = new PrintWriter
                        (new BufferedWriter(new FileWriter("post.html")));

            // URLクラスのインスタンスを生成
            URL helloURL =
                        new URL("http://login.yahoo.co.jp/config/login");

            // 接続します
            URLConnection con = helloURL.openConnection();
            // 出力を行うように設定します


            con.setDoOutput(true);
            con.setDoInput(true);

            con.setRequestProperty("Accept","image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-powerpoint, application/vnd.ms-excel, application/msword, */*");
            con.setRequestProperty("Accept-Language", "ja");
            con.setRequestProperty("Content-Type","application/x-www-form-urlencoded");
            con.setRequestProperty("Accept-Encoding", "gzip, deflate");
            con.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)");
            con.setRequestProperty("Host","login.yahoo.co.jp");
            con.setRequestProperty("Content-Length","145");
            con.setRequestProperty("Connection","Keep-Alive");
            con.setRequestProperty("Cache-Control","no-cache");






            // 出力ストリームを取得
            PrintWriter out = new PrintWriter(con.getOutputStream());

            out.print(".tries=1&.done=http%3A%2F%2Fpage7.auctions.yahoo.co.jp%2Fjp%2Fauction%2Fg25311966%3F&.src=auc&lg=jp&.intl=jp&login=formulaatsushi&passwd=formula3");

            out.close();



            // 入力ストリームを取得
            BufferedReader in = new BufferedReader(
                                                                new InputStreamReader(
                                                                con.getInputStream(),"JISAutoDetect"));

            // 一行ずつ読み込みます
            String line;
            while ((line = in.readLine()) != null) {
                // 表示します
                pw.println(line);


            }


            // 入力ストリームを閉じます
            in.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
etherealのログ
POST /config/login HTTP/1.1
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-powerpoint, application/vnd.ms-excel, application/msword, */*
Accept-Language: ja
Content-Type: application/x-www-form-urlencoded
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)
Host: login.yahoo.co.jp
Content-Length: 145
Connection: Keep-Alive
Cache-Control: no-cache

HTTP/1.1 302 Found
Date: Tue, 09 Nov 2004 10:41:26 GMT
P3P: policyref="http://privacy.yahoo.co.jp/w3c/p3p.xml", CP="CAO DSP COR CUR ADM DEV TAI PSA PSD IVAi IVDi CONi TELo OTPi OUR DELi SAMi OTRi UNRi PUBi IND PHY ONL UNI PUR FIN COM NAV INT DEM CNT STA POL HEA PRE GOV"
Location: http://login.yahoo.co.jp/config/verify?.done=http%3a//page7.auctions.yahoo.co.jp/jp/auction/g25311966%3f&.src=auc
Cache-Control: private
Pragma: no-cache
Expires: Thu, 05 Jan 1995 22:00:00 GMT
Connection: close
Transfer-Encoding: chunked
Content-Type: text/html; charset=euc-jp
Set-Cookie: B=0jed4t90p17mm&b=2; expires=Thu, 15 Apr 2010 20:00:00 GMT; path=/; domain=.yahoo.co.jp
Set-Cookie: F=a=2AxMxi8sve2gE8jFN9rJ0gWrAAvZQREqLtzb2_UZvSzjM5JqtaIqse_xaCta&b=pEuj; expires=Thu, 15 Apr 2010 20:00:00 GMT; path=/; domain=.yahoo.co.jp
Set-Cookie: Y=v=1&n=2q7rnefmn4krh&l=5ehckb00jiki78/o&p=m2avvjp403000400&r=bk&lg=jp&intl=jp&np=1; path=/; domain=.yahoo.co.jp
Set-Cookie: T=z=W7JkBBWBfkBBIROI05ItUNi&a=YAE&sk=DAA.hvzZ6s/ztd&d=YQFZQUUBb2sBWlcwLQF0aXABYm4ySnNEAXp6AVc3SmtCQmdXQQ--; path=/; domain=.yahoo.co.jp

GET /config/verify?.done=http%3a//page7.auctions.yahoo.co.jp/jp/auction/g25311966%3f&.src=auc HTTP/1.1
User-Agent: Java1.4.0
Host: login.yahoo.co.jp
Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2
Connection: keep-alive

HTTP/1.1 200 OK
Date: Tue, 09 Nov 2004 10:41:26 GMT
P3P: policyref="http://privacy.yahoo.co.jp/w3c/p3p.xml", CP="CAO DSP COR CUR ADM DEV TAI PSA PSD IVAi IVDi CONi TELo OTPi OUR DELi SAMi OTRi UNRi PUBi IND PHY ONL UNI PUR FIN COM NAV INT DEM CNT STA POL HEA PRE GOV"
Refresh: 900; URL=http://www.yahoo.co.jp/
Cache-Control: private
Pragma: no-cache
Expires: Thu, 05 Jan 1995 22:00:00 GMT
Connection: close
Transfer-Encoding: chunked
Content-Type: text/html; charset=euc-jp
Set-Cookie: B=c0ev5h10p17mm&b=2; expires=Thu, 15 Apr 2010 20:00:00 GMT; path=/; domain=.yahoo.co.jp


/config/verify?.done=http%3a//page7.auctions.yahoo.co.jp/jp/auction/g25311を
getする際にヘッダー情報が変わってしまいます。
どなたかご教授願います。

No. 4046 # 68user 2004/11/10 (水) 14:48:48
>>4045 やまさん
正解は ethereal が教えてくれているはずですので、こういう質問は回答
する側としては非常につまらないのです。だから、質問する側も、もう
ちょっと努力する姿勢を見せてください。

> 今度はcookieが無効であると言う画面がでました
などというわけのわからんことを言っていないで、

    「IE では〜というリクエストを送っているが、Java だと〜という
        リクエストを送信してしまう。IE と同じリクエストを送信するには
        どうしたらよいか」

くらいの質問にブレイクダウンしてください。リクエストとレスポンスを
見比べるだけの注意力があれば簡単なはずです。

あと、HTTP の基本的な知識があるのかないのかさっぱりわからないので、
    http://x68000.q-e-d.net/~68user/net/
        HTTP クライアントを作ってみよう(1)〜(4)
を読んだ上で、telnet を使って接続してみてください。それに成功してから
初めて Java で実現するにはどうすればいいか、という話になるわけです。

一応ヒントだけは出しておきます。
      - /config/verify に cookie なしでリクエストしているのは誰か? まだ
          提示していないソースがあるのか? URLConnection クラスが自動的に
          再接続しているのか?
      - URLConnection が自動的に再接続しているのであれば、
          HttpURLConnection クラスを使って setInstanceFollowRedirects
          メソッドで再接続を抑止し、自前で cookie 付きで再接続してみては。

No. 4047 # 68user 2004/11/10 (水) 14:52:48
>>4046 68user
> 一応ヒントだけは出しておきます。
試したわけではないので、ヒントが的確かどうかは知りません。念のため。

No. 4048 # 68user 2004/11/12 (金) 02:28:59
当分の間、本掲示板での UNIX・ネットワークに関する一般的な質問の受け付けを
中止します。理由は
      http://X68000.q-e-d.net/~68user/cgi-bin/wwwboard.cgi?howtouse
さえ読まないマルチポスト馬鹿のせいで不愉快な思いをするのがアホらしくなった
からです。UNIX・ネットワークに関する一般的な質問がなされた場合、その書き込みを
削除することがあります。

今後は当ページのコンテンツに対するご意見・ご指摘のみ受け付けます。
あと、雑談も OK です。

これまで回答してくださった方々、まともな質問者の方々には深く感謝
いたします。ありがとうございました。

No. 4049 # has 2004/11/13 (土) 22:08:37
>>4048 68user
懇切丁寧な回答、いままでどうもお疲れ様でした。
なんだかんだ結局見てるだけで力になれず、すんません。

ところで、コンテンツに関するご意見・ご指摘は歓迎とのことですし、このまま
何もやりとりが亡くなるのも寂しいので、ちょっと一言。

「POP3クライアントを作ってみよう」で、APOPではサーバ側に生パスワードを
持っていないといけないという点でセキュリティ上イマイチである、と
書かれていますが、それではどんな方法だと納得できそうですか?
(crypt等したパスワードを使うというイメージ or もっとよい案?)

No. 4050 # 上田 2004/11/15 (月) 14:28:33
>>4038 68user
68userさんありがとうございます。返事が遅れてすみません。

実は『シグナルハンドラを戻すなどの対処』部分がよく分かりませんでした。
もしよろしければこの部分のコードを教えていただけないでしょうか?
本当は自分なりに勉強してこの部分のコードを書き、このサイトにアップしたいという気持ちはあるのですが、なにぶん初心者なもので。。。

実際のテストでうまくいっているということと、この例では子プロセスがSIGCHLDを受けることはないとのことですので、当面はとりあえず現在の位置で対応させていただきます。
もし『シグナルハンドラを戻すなどの対処』を私なりに見つけることができたら、本サイトで報告させていただきます。

上田

No. 4051 # 68user 2004/11/15 (月) 20:21:20
>>4049 has
その文章を書いたのは 5〜6年前なのでもう忘れてしまいましたが、
改めて考えてみました。

まず、
    - ファイルに生パスワードを保存しておくのはよいことではない
というのは納得していただけるかと思われます。

もちろん、デメリットを上回るメリットがあれば生パスワードを保存
してもよいのでしょうが、APOP については特にメリットらしきものは
見当たりません。

また、管理面からいっても、UNIX のシャドウパスワードと別管理でも
よい場合もあるでしょうし、別管理になっても構わない場合もあるでしょう。
しかし、APOP では別管理にせざるをえません (選択の余地がない)。

> それではどんな方法だと納得できそうですか?
APOP はサーバがクライアントにタイムスタンプを通知する際、サーバが
保持しているパスワードが
    - 生パスワード
    - パスワードの MD5 値
    - パスワードの SHA-* 値
のいずれであるかを通知する、というのがわたしの考えです。

そうすれば、クライアント側はそれに応じて入力されたパスワードをそのまま
送るか、MD5 値を送るかを決定できます。また、サーバ管理者の方針により、
生パスワードで管理することもできるし、シャドウパスワードと共用にする
こともできます。


なお、この部分はどうも叩かれ所のようで、この APOP 批判の文章を読んで
「こいつはわかってない」と評価している人を掲示板などで見かけます
(わたしは何がどうわかってないのかが理解できないので、何ともいえない
のですが)。

>>4050 上田
> 実は『シグナルハンドラを戻すなどの対処』部分がよく分かりませんでした。
> もしよろしければこの部分のコードを教えていただけないでしょうか?
$SIG{CHLD} = 'DEFAULT';
です。

No. 4052 # has 2004/11/16 (火) 23:49:40
>>4051 68user
> 管理面からいっても、UNIX のシャドウパスワードと別管理でも
> よい場合もあるでしょうし、別管理になっても構わない場合もあるでしょう。
> しかし、APOP では別管理にせざるをえません (選択の余地がない)。
そうですね。使う側がやりたいように出来るよう、自由度を持たせておくという
考え方のツールは多い気がしますし。

> サーバが保持しているパスワードが
> - 生パスワード
> - パスワードの MD5 値
> - パスワードの SHA-* 値
> のいずれであるかを通知する
同感です。

> なお、この部分はどうも叩かれ所のようで、この APOP 批判の文章を読んで
> 「こいつはわかってない」と評価している人を掲示板などで見かけます
そうなんですか。私にもよくわかっていないようなので誰かに教えて欲しいです。

RFC2195とかにはchallenge-response authentication protocolを使うと
サーバにパスワードを*平文で保存せずに済む*とあるようです。
ひょっとしてパスワードとは別の、もっと重要なことが理解できてない
ということなのかもしれないですね…。

No. 4053 # 68user 2004/11/17 (水) 14:33:25
>>4052 has
> RFC2195とかにはchallenge-response authentication protocolを使うと
> サーバにパスワードを*平文で保存せずに済む*とあるようです。
なるほど。

    http://www.lins.jp/~obata/imap/rfc/rfc2195ja.html
        鍵付き MD5 ダイジェストを利用し、サーバ上に平文で秘密鍵が保管
        される必要はないので、RFC 1734 で規定される POP3 の使用のための
        APOP より改善されたものからなるともいえる。

ということで、APOP はイマイチと自信を持っていえるようになりました。
該当ページもそのうち加筆・修正しておきます。

ところで RFC 2195 は IMAP と POP に CRAM を導入しよう、というものですが、
IMAP では CRAM-MD5 や CRAM-SHA に対応した実装がいろいろありますけど、
POP の方は普及してるんですかねぇ。

http://risky.cs.inf.shizuoka.ac.jp/~ynoguchi/index.php?POP%20(%20courier-pop%20)
には
      (courier-pop は) courier-imap と同様,CRAM-MD5, CRAM-SHA に対応可能
      だが,結局,そのプロトコルに対応するクライアントがない
とありますし。

No. 4054 # 68user 2004/11/17 (水) 20:04:11
>>4053 68user
更新しました。
    http://x68000.q-e-d.net/~68user/net/pop3-3.html

「シャドウパスワードと共通化できない」という批判は、CRAM-MD5 でも
共通化できないような気がしたので (crypt には salt があるけど、
CRAM-MD5 にはないし、CRAM-MD5 には ipad とか opad とかがあるけど、
crypt にはないから)、とりあえず削除してあります。

No. 4055 # やまさん 2004/11/18 (木) 22:50:36
>>4047 やまさん
68userさんお返事遅くなりました。四苦八苦しましたけど
ヒントいただいた通りプログラムを組みなおしたところ、
無事ログインできました。ありがとうございました。

No. 4056 # 68user 2004/11/20 (土) 04:12:12
なんとなくアンケートをとってみることにしました。
      http://X68000.q-e-d.net/~68user/tmp/questionnaire.cgi

No. 4057 # 68user 2004/11/24 (水) 00:24:59
「UNIX の部屋」を更新しました。
      http://X68000.q-e-d.net/~68user/unix/

No. 4058 # へにか [URL] 2004/11/24 (水) 07:42:01
http://x68000.q-e-d.net/~68user/unix/pickup?freebsd-update
注意点は以下の通り。とある文言の、
<li>freebsd-updateの<li>、
HTTP 経由でファイルを\取得するので、の\、
これらは、誤植でしょうか? でも、ソースを見ると<LI>と大文字で書かれてるし・・・

No. 4059 # 68user 2004/11/25 (木) 01:15:20
>>4058 へにか
ありがとうございます。修正しました。

誤植って言いはると void 氏みたいなので、タイプミスということでひとつ。

No. 4060 # へにか 2004/11/25 (木) 08:29:07
>>4059 68user
> 誤植って言いはると void 氏みたいなので、タイプミスということでひとつ。
了解しました。気になったので、検索かけたら・・・ 何て言っていいのやら。

No. 4061 # 68user 2004/11/28 (日) 04:14:13
日記。

    % mkdir dir
    % touch dir/file
    % chmod 400 dir
    % ls -l dir

としたとき、dir/file を stat(2) する権限がないわけなので、Permission
denied となる (Linux・Solaris では実際にそうなる)。
# http://x68000.q-e-d.net/~68user/unix/pickup?chmod

ところが FreeBSD では何も表示されず (エラーも出ず)、exit status も 0
で正常終了してしまっている。

これを調べようと、FreeBSD 5.2.1-RELEASE の ls ソースを見てみる。
# http://www.jp.freebsd.org/cgi/cvsweb.cgi/src/bin/ls/

ずっと ls ってのは opendir して readdir して stat するものだと信じていたが、
実際には
      fts(3) -- traverse a file hierarchy
      http://www.freebsd.org/cgi/man.cgi?query=fts&manpath=FreeBSD+5.3-RELEASE+and+Ports&format=html
を使っていて、上記のシステムコールは間接的にしか使用していなかった。

>>3773 68user
で買った本を読むと、しっかり書いてあった。
      この人の書く文章にはおもしろみのかけらもなく
なんて文句言う前に、ちゃんと目を通すべきということか (全然読んでなかった)。

fts(3) は 4.4BSD から実装され、GNU 方面では glibc2 で採用された。glibc の
マニュアルには
        BSD 4.4. fts ユーティリティは、将来の St -p1003.1-88 リビジョンに
        含まれると期待されている。
と威勢のいいことが書いてあるが、少なくとも Solaris9 には実装されていない。


はじめて fts(3) を使ってみる。以下のプログラムで、stat できない場合エラーと
判断できている。FreeBSD の ls にはそれっぽい箇所があるにはあるが、その処理が
うまく機能していないのか、あるいは謎の仕様なのか…。

-----
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fts.h>

main(){
        FTS *ftsp;
        char *path[2]={"dir", NULL};
        ftsp = fts_open(path, FTS_PHYSICAL | FTS_NOCHDIR, NULL);
        if ( ftsp == NULL ){
                perror("fts_open");
                exit(1);
        }
        FTSENT *ftsentp;
        while (1){
                ftsentp = fts_read(ftsp);
                if ( ftsentp == NULL ){
                        break;
                }

                struct stat *sp = ftsentp->fts_statp;

                printf("%c", sp->st_mode&S_IRUSR ? 'r' : '-');
                printf("%c", sp->st_mode&S_IWUSR ? 'w' : '-');
                printf("%c", sp->st_mode&S_IXUSR ? 'x' : '-');
                printf("%c", sp->st_mode&S_IRGRP ? 'r' : '-');
                printf("%c", sp->st_mode&S_IWGRP ? 'w' : '-');
                printf("%c", sp->st_mode&S_IXGRP ? 'x' : '-');
                printf("%c", sp->st_mode&S_IROTH ? 'r' : '-');
                printf("%c", sp->st_mode&S_IWOTH ? 'w' : '-');
                printf("%c", sp->st_mode&S_IXOTH ? 'x' : '-');
                printf(" %d %s\n", sp->st_mode, ftsentp->fts_path);

                if ( ftsentp->fts_info == FTS_NS ){
                        perror("stat failed");
                        exit(1);
                }
        }
        exit(0);
}
------

あと、
      http://www.freebsd.org/cgi/man.cgi
にて FreeBSD 5.3-RELEASE からは ports マニュアルも検索できるように
なっていることに気づいた。これは大変素晴らしい。

No. 4062 # 68user 2004/12/05 (日) 04:03:48
>>4056 68user
> なんとなくアンケートをとってみることにしました。
アンケートの受付を (11/27 の時点で) 終了しました。結果をお知らせします。

[質問]
68user's page で今後読みたいコンテンツがあれば選択してください (複数選択可)。

[選択肢]
1. UNIX コマンドのコンテンツ充実
2. UNIX howto (「〜するには?」集のようなもの)
3. UNIX インストール・サーバ構築
4. ネットワークプログラミングのコンテンツ充実
5. web と CGI についてのコンテンツ充実 (含 Java Servlet・EJB)
6. C 言語講座的なもの
7. 業務系システム構築講座 (設計・コーディング・DB)
8. プログラマや SE の仕事について思うことをつらつらと

[結果]
回答総数 67

1. 36(17%) ************************************
2. 42(20%) ******************************************
3. 27(13%) ***************************
4. 29(14%) *****************************
5. 13(06%) *************
6. 14(06%) **************
7. 18(08%) ******************
8. 25(12%) *************************

[感想]
1・2 が多いのは予想していましたが、5・6 が少ないのは予想外でした。

5 は書きかけのコンテンツのまま放置してあるので、その辺の情報を今ほしい
人はここにはいないってことでしょうか。6 は世の中は意外と保守的で、仕事で
いまだに C でごりごり書いている (書かされている) 人が多数いるに違いない
と予想したのですが、はずれたようで。

あと、7 より 8 の方が多いのもちょっと不思議です。


頂いたコメントについてですが、
> div 開始タグより div 終了タグが圧倒的に多い
とりあえず気づいたところは直しました。自分で確認して、あまりにも
閉じ側が多いので笑ってしまいました。

あと、
>>3951 ほんたか
> 1.「h 1文字左に移動」がリストからはみ出ています。
も直しました。

アンケート結果は今後の参考にさせていただきます。ありがとうございました。

No. 4063 # 68user 2004/12/06 (月) 02:27:19
「ネットワークプログラミングの基礎知識」に
      HTTP クライアントを作ってみよう(5) - 認証編 -
          http://X68000.q-e-d.net/~68user/net/http-auth-1.html
を追加しました。

No. 4064 # sqh00 [E-mail] 2004/12/19 (日) 13:12:22
こんにちは。 こちらのサイトに来るのは今日が初めてですが、内容が充実していて大変参考になるサイトですね。 今後も利用させて頂こうと思います。さっそくですが、xlibについて質問をさせてください。http://x68000.q-e-d.net/~68user/xprogram/xlib-1.html のxlib-1.c を
cc -o xlib-1 xlib-1.c -I /usr/X11R6/include -lX11 -L /usr/X11R6/li のように実行したら、何にも出て来なかった。私が使っているのは red hat linux 8.0です。宜しくお願いします。

No. 4065 # 68user 2004/12/20 (月) 00:08:34
>>4064 sqh00
カレントディレクトリに xlib-1 というバイナリが生成されているか、
あるいは何かしらのエラーメッセージが出力されていると思いますので
確認してみてください。

No. 4066 # sqh00 [E-mail] 2004/12/20 (月) 22:17:10
カレントディレクトリに xlib-1 というバイナリが生成されているが、実行できない。このように、実行したら、何にも出て来なかった。
  
      [root@dm1511 xlib]# xlib-1
        bash: xlib-1: command not found

No. 4067 # 68user 2004/12/20 (月) 22:35:27
>>4066 sqh00
カレントディレクトリにあるバイナリは
    % ./xlib-1
と実行してください (% はプロンプト)。

No. 4068 # sqh00 2004/12/22 (水) 14:30:39
実行ができました。ありがとうございます。

No. 4069 # 68user 2004/12/23 (木) 06:52:27
「ネットワークプログラミングの基礎知識」に
      HTTP クライアントを作ってみよう(6) - Digest 認証編 -
            http://X68000.q-e-d.net/~68user/net/http-auth-2.html
を追加しました。

ところで cnonce は選択平文攻撃への耐性を高める効果があるとかなんとか
知ったかぶって書いてしまいましたが、cnonce がないと具体的にどういう
攻撃ができるんでしょうかね。

差分解読法かなぁと思ったんですが、MD5 に差分解読法って有効なんでしょうか。
あるいは salt 的な意味合いがあるんでしょうか?

いまいちイメージがわかない。

No. 4070 # たなか 2004/12/28 (火) 00:04:48
「ネットワークプログラミングの基礎知識」で勉強させていただいています。
kqueue の説明をみて早速いぢってみました。
サンプルでは kqueue() の戻り値に対して、終了時の処理が何もされていません。
man で調べたたところ、kqueue() の戻り値はファイルデスクリプタと記されています。
init kq = kqueue();
close(kq);
としても、close の戻り値が -1 で閉じることができませんでした。
なので、
init kq = kqueue();
close(kq);
init kq = kqueue();
close(kq);
とすると、kq は 1 回目が 9、2 回目が 10 といったようにインクリメントされてしまいました。
fcntl で kq の情報を取得しようとしてもすべての戻り値は -1 でした。
なんとなく、ファイルデスクリプタとして扱えていないような気がします。
当方は Mac OS X 10.3.7(BSD 4.4 ベースの Darwin) です。
本当の BSD なら、close できるものなのでしょうか。
もし、kqueue の説明を追加する予定があるようでしたら、close または、それに代わる処理も追加してもらえると大変助かります。

No. 4071 # 68user 2004/12/30 (木) 03:31:09
>>4070 たなか
> 本当の BSD なら、close できるものなのでしょうか。
FreeBSD 5.2-RELEASE では close(2) できました。ちなみに
カーネルには queue 用を close するコードも含まれています。

詳しくないので事情はわかりませんが、Mac OS X (Darwin?) の
問題ではないかと思います。

> close または、それに代わる処理も追加してもらえると大変助かります。
echo サーバばかり作っていると終了処理がおろそかになっていけませんね。
「quit」を送ると終了するようにするなど、何かしら考えたいと思います。

No. 4072 # たなか 2004/12/30 (木) 09:44:40
>>4071 68user

どうもありがとうございます。

>> 本当の BSD なら、close できるものなのでしょうか。
> FreeBSD 5.2-RELEASE では close(2) できました。ちなみに
> カーネルには queue 用を close するコードも含まれています。

手元に BSD が動作するマシンがないので、実験できませんでした。
Darwin の問題ですね。Apple に連絡してみます。
下のコードを実行すると次のような結果となります。

kqueue : 3
close(3) : -1
close: Bad file descriptor
kqueue : 4
close(4) : -1
close: Bad file descriptor

------------------------------------------------
#include <stdio.h>

#include <sys/types.h>
#include <sys/event.h>
#include <sys/time.h>

#include <unistd.h>

int
main() {

        int kq;
        int ret;

        kq = kqueue();
        printf("kqueue : %d?n", kq);
        if (kq == -1) {
                perror("kqueue");
        } else {
                ret = close(kq);
                printf("close(%d) : %d?n", kq, ret);
                if (ret == -1) {
                        perror("close");
                }
        }

        kq = kqueue();
        printf("kqueue : %d?n", kq);
        if (kq == -1) {
                perror("kqueue");
        } else {
                ret = close(kq);
                printf("close(%d) : %d?n", kq, ret);
                if (ret == -1) {
                        perror("close");
                }
        }

        return 0;
}
------------------------------------------------

No. 4073 # さいさん 2004/12/30 (木) 18:01:49
サーバがHP-UX11.00で、Bシェルでシェルを書いています。
シェル中で、「ls *.txt」を実行しています。

"*.txt"が存在しない場合、エラーが出力されるので、
「ls *t.xt > /dev/null 2>&1」で、エラーを出さないよう
にしました。

そこで、lsの処理に"grep -v"を追加し、"*.txt"がない
状態にすると「*.txt がみつかりません。」がでます。

ls *t.xt | grep -v "kekka" > /dev/null 2>&1

エラーがでないようにするにはどうしたらよいのですか。

No. 4074 # zsh 2004/12/31 (金) 18:57:02
ここで質問する人のブラウザには、
「UNIX・ネットワークに関する一般的な質問は受け付けていません。」
という一文は映らないのだろうか?

>>4073 さいさん
最終的にどうしたいのか良く判らないが、取りあえずはこれで。
ls *txt 2>/dev/null | grep -v "kekka"

No. 4075 # さいさん 2005/01/01 (土) 16:34:07
>>4074 zsh

ありがとうございます。

実際にしたいことは、
シェルを実行した際、「*.txt がみつかりません。」を
標準出力したくないのと、戻り値の判定をしたいのです。

ls *.ldif | grep -v "kekka" > /dev/null 2>&1
if [ $? -ne 0 ] ; then
        echo "Text File Nothing Today"
        exit 0
fi

No. 4076 # さいさん 2005/01/01 (土) 16:36:28
>>4075 さいさん

すみません。
間違いがありました。


実際にしたいことは、
シェルを実行した際、「*.txt がみつかりません。」を
標準出力したくないのと、戻り値の判定をしたいのです。

ls *.txt | grep -v "kekka" > /dev/null 2>&1
if [ $? -ne 0 ] ; then
                echo "Text File Nothing Today"
                exit 0
fi

No. 4077 # zsh 2005/01/03 (月) 00:17:18
>>4076 さいさん
結果的にファイルの有無を確認したいんですよね?
だとすれば、戻り値のチェックよりも下記のようにしては如何でしょうか?

set -- `ls *txt 2>/dev/null | grep -v "kekka"`
if [ $# -eq 0 ] ; then
        echo "no file."
fi

※:シェルに引数を与えている場合等は考慮が必要です。

No. 4078 # さいさん 2005/01/04 (火) 15:57:43
>>4077 zsh

ありがとうございます。

set -- `ls *txt 2>/dev/null | grep -v "kekka"`

「set -- `ls 」
の使い方教えてください。
どのような意味なのですか

No. 4079 # zsh 2005/01/05 (水) 10:38:55
set --
で引数(定位置パラメタだっけ?)を書き換えることが出来ます。

今回の場合は、
ls *txt 2>/dev/null | grep -v "kekka"
の出力で置き換える事になりますので、
$#で上記コマンドの結果出力されたファイル数を参照できます。

No. 4080 # さいさん 2005/01/09 (日) 14:24:11
>>4079 zsh

お礼遅くなって申し訳ありません。
ありがとうございます。

>set --
>で引数(定位置パラメタだっけ?)を書き換えることが出来ます。

参考本とかで調べてます。

Prev< No. 4041〜4080> Next  [最新発言に戻る] [過去ログ一覧]