◆ 全サーバトリップ統一作戦
■ このスレッドは過去ログ倉庫に格納されています
現在三つに分かれているトリップの仕様を統一しようという作戦 >>2-5 辺りも読んでください。 104 :鳥屋? ◆TMMMMMMMMM :2003/10/26(日) 19:55 ID:OYk5PAwE 例によってむっちゃ忙しくてアレなのだが、ココで俺意見出しつつ まとめてみます。ご意見ご希望ご感想pls ・基本は旧鯖仕様 経緯を見るからに、新鯖仕様は鬼っ子。 対応ツールも、流出互換スクリプトも、旧鯖仕様ベースなので それに合わせるのがよかろう。 (したらば系のことは、俺が興味ないので忘れる) できることならば旧鯖トリップはことごとく通ってほしいのだが、 先頭文字に限っては、特殊文字をいくつか導入し、 それに抵触するトリップを使ってる連中には、半角カタカナに置換する ことで対処してもらう。 ・付加機能案(1) 任意Salt 例) #$ABcccccccc 1文字目が $ だった場合、2,3文字目の BC をSaltとみなして 4文字目以降のcccccccccをキーとして扱う。BCの扱いは旧鯖仕様にしてしまう。 (俺的には、鳥屋っぽい新々鯖キーを量産できるので大歓迎) 先頭が $ トリップを使ってた香具師は、半角カタカナ 、 でガマンしてもらう。 ・付加機能案(2) 玄人向け生キー 例) ##DEADBEEFCAFEABED2710 1文字目が # だった場合、続く16文字の16進数をキー さらに4文字の8進数もしくは2文字の英数字が存在したらSaltとして扱う。 全空間から余すことなく拾いたいトリップ野郎(俺もだよ漏れも)向けの機能。 先頭が # トリップを使ってた香具師は、半角カタカナ 」 でガマンしてもらおう。 実装はまた後日。たぶん簡単だろうが検証してるヒマがない。 トリップの歴史のようなもの(激しく添削キボンヌ) 基本。 「name#trip」と名前欄に入力。name はそのまま出力。'#' 以降を分解。 ●初代? 製塩方法が、 my $change_salt = substr($handle_pass, , 1) . "H"; となっていたために、$change_salt は 'ripH' に。 しかし、crypt で有効な塩は、2 文字分(正確には 12 ビット) なので、 3 文字目以降は意味を為していない。 出力は crypt 出力文字列の後ろから 8 文字分。 $handle_pass = substr(crypt($handle_pass, $change_salt), -8); 結果、 「name#trip」は、 name ◆pdoZ.tHU と出力された。 ●2代目? 割れを防ぐ意味?で出力を 10 文字に増殖。 $handle_pass = substr(crypt($handle_pass, $change_salt), -10); 結果、 「name#trip」は、 name ◆hEpdoZ.tHU と出力された。 ●3代目?(現状?) 製塩時にフィルターが追加された? my $salt = substr($key."H.", 1, 2); →トリップ文字列の末尾に 'H.' を追加してから、先頭から2文字目と3文字目を抽出。 $salt =~ s/\W/\./go; → 'a-zA-Z0-9_' 以外は '.' に変更。 ★旧仕様のトリップ文字列では出力が違うものが出てきた。 ★新々鯖(FreeBSD) では、'_' を内部で変換せずにエラーとして判断するために、crypt の返り値が undef (未定義値) となるために 、トリップが表示されない不具合が出た。 >>5 順序としては、製塩方法が変わってから、10桁化したんだったと思う。 2代目と3代目が逆ということになるかな。 初代は</b><b>がついてなくて、トリップ文字も太字のままだったね。 懐かしい。 >>5 >●初代? > 製塩方法が、 > my $change_salt = substr($handle_pass, , 1) . "H"; > となっていたために、$change_salt は 'ripH' に。 > しかし、crypt で有効な塩は、2 文字分(正確には 12 ビット) > なので、 3 文字目以降は意味を為していない。 my $change_salt = substr($handle_pass, , 1) . "H"; の所なんですけど、 substr の第二引数が省略されてるので、取り出し始めるインデックスが 0(最初)で、取り出す文字数が1文字ってことかと。 そうすると、$change_salt は 'tH' になると思います。 そのスクリプトの方があってればの話ですけど、、 >>7 #!/usr/local/bin/perl $a = "triptrip"; $b = substr($a, , 3) . "H"; printf "[$a] [$b] %s",substr(crypt($a, $b), -8); exit; # 結果は [triptrip] [ptripH] eOG.wRhM 実際に動かしてみると、2 番目の引数が undef になるので省略されたとして、 3 番目の引数が offset にされちゃうようです。@ Perl 5.6.1 の場合 >>8 おぉ、そうだったんですか。。 というか、substr の第二引数は省略できないですね。 確かめもせずに申し訳ない。。 何でそんなコードになってたんだろう、、 >>10 あ、いへいへとんでもないです(汗) ただこのあたりの実装方法が曖昧になっているようですね。 uma系鯖では tripkey のない場合の対処がややこしそうですね。 現に、 uma系鯖では tripkey のない場合、# が出てくるのも謎だし。。。@本来はマッチしないので出てこないはず? さてさて、bbs.cgi の現状のトリップ回路は公開されているのでしょうか? >uma系鯖では tripkey のない場合の対処がややこしそうですね。 >現に、 uma系鯖では tripkey のない場合、# が出てくるのも謎だし。。。@本来はマッチしないので出てこないはず? これって、名前欄に「名前#」って入れるって事ですかね? おつかれさまー ところで、こんなトリップも出せることに気づいたのですが、 今回考える新仕様では、これに対応する必要ないっすよネ? …いや、対応は造作もないのだが。 uma 系鯖での現状での不具合。 1. トリップキーがないと # が出て来ちゃう。 (凡例:この書き込みの名前欄参照) 要因:現在不明(^-^;;) 2. _ の扱いでトリップが消える。 塩に '_' が含まれていたりキーに '_' が含まれていたりいろいろ。 (凡例:#______ のように '_' が 6 つ以上連なってもトリップが消えるみたい。 要因:crypt()での振る舞いが違うため。 対策? 1. uma系鯖に限って、 ・crypt する前にキーが存在しないときは何らかのキーを与える。 ・crypt() の返り値が undef の時に何かキーを与えてみる。 ・もしくはトリップを作らなくするとか?→名前部分だけ返す。 2. [./0-9A-Za-z] にマッチしない文字を別の文字に変更する。 ・'.' が妥当? ・もしくは他の文字を与える? こんな所でしょうか。 これが解決できれば、鳥屋TMさんの提案されている塩指定も盛り込めるのではないかと。 >>13 そのとおりです。名前欄に '#' のみでもOKです。 >>14 わー(汗)@ラストに '1' 1は、全サーバそういう仕様だと思いますー。 #(.+) の時にトリップ作る仕様になってますから。 >>16 大いなる勘違いをしていました(汗) って事でこの件は無かったことに(苦笑) いったん自宅に帰ろう。 >>15 (1)に関しては、どちらかというとトリップ仕様の範囲外。 想像ではPerlのバージョン依存。 トリップキー抽出部を見せてもらわないことには何とも言えず。 (2)を解決し、ついでに「新鯖トリップ問題」を解決し、 ついでについでに玄人仕様を盛り込んだのが、>>2-3 案です。 新鯖トリップ問題に関しては要望があれば解説します。 (ずーっと、流出スクリプトのトリップ生成部が2chで使われてるものと 同じだと思いこんでたので、いろいろ誤解してたのだが、すべて解決!) ちなみに、今動いてるのは、>>5 の初代と二代目を足したものです。 さてと、それではお塩に関しては、 $salt =~ tr/:;<=>?@[\\]^_`/ABCDEFGabcdef/; $salt =~ tr/[\.\/0-9A-Za-z]/\./c; でよいのかな? >>18 判りやすく解説キボンヌですm(_ _)m >>21 それで旧鯖仕様互換にできるのだけど さて、新鯖トリップを活かしたい人をどうしよう というために、Salt任意指定があればいいなと思うワケです。 >>24 とりあえず新鯖専用トリップの人を冷遇するのは反対。 なのでその案に賛成かな。 新鯖トリップ問題 【現象】 2002秋以降に新設された鯖で、一部のトリップが 従来と互換のない出力になり、鳥屋が困り果てて右往左往した。 (後半は余計だ) sakuraに設置されていた鯖も、新鯖と同様の振る舞いをしていた (ただしトリップは8桁のまま) 具体的には、Saltに一部の記号・漢字・半角カナが含まれてる トリップが該当。 【原因】 crypt(3)に範囲外のSaltを与えていた bbs.cgi スクリプトと、 範囲外Saltに対して実装依存の振る舞いをする各ライブラリの crypt(3) との食い合わせ。 Saltは、1文字あたりで、 . / 0-9 A-Z a-z を、0-63 の数字に変換 するのだが、この変換ロジックの手抜きにより、実装依存の挙動が生まれた。 (次につづく) ・旧鯖(たぶんlibc5ベースのSlackware) if (!salt in [ . - z]) salt は . (0); else if (salt >= 'a') salt = salt - 'a' + 38; else if (salt >= 'A') salt = salt - 'A' + 12; else if (salt >= '0') salt = salt - '0' + 2; else salt = salt - '.'; ・新鯖(glibc2ベース) (salt は signed char 扱い) if (salt >= 'a') salt = salt - 'a' + 38; if (salt >= 'A') salt = salt - 'A' + 12; if (salt >= '0') salt = salt - '0' + 2; else salt = salt - '.'; salt &= 63; 新々鯖(FreeBSD) Saltが範囲外の文字だったらエラー。 (以上は想像上のものです。ソース読まずにカキコ) 鳥屋TMさんのを踏まえて新型トリップ案。 書式: # option keys # = トリップキー開始文字 option = 機能 keys = キー option と keys 0 = 8 桁トリップ ※ 旧鯖式 keys = 8バイト長の任意文字列 出力 = ◆8バイト長の文字列 凡例:name#0ぶるじょ → ◆EncckFOU 1 = 10 桁トリップ ※ 旧鯖式 keys = 8バイト長の任意文字列 出力 = ◆10バイト長の文字列 凡例:name#1ぶるじょ → ◆yBEncckFOU 2 = 8 桁トリップ ※ 新鯖式 keys = 8バイト長の任意文字列 出力 = ◆8バイト長の文字列 凡例:name#0ぶるじょ → ◆d1dMH5Gk 3 = 10 桁トリップ ※ 新鯖式 keys = 8バイト長の任意文字列 出力 = ◆10バイト長の文字列 凡例:name#1ぶるじょ → ◆ySd1dMH5Gk 4 = 8 桁トリップ keys = 2バイト長の塩と8バイト長の任意文字列 出力 = ◆8バイト長の文字列 凡例:name#4AAぶるじょ → ◆ 5/5A2qi2 (◆のあとに半角 space が入る→従来トリップのクラック防止のため) 5 = 10 桁トリップ keys = 2バイト長の塩と8バイト長の任意文字列 出力 = ◆10バイト長 凡例:name#5AAぶるじょ → ◆ jO5/5A2qi2 (◆のあとに半角 space が入る→従来トリップのクラック防止のため) 6 = 8 桁トリップ keys = 3バイト長の16進数文字列と16バイト長の16進数文字列 出力 = ◆ 8バイト長の文字列 (◆のあとに半角 space が入る→従来トリップのクラック防止のため) 凡例:name#63FF82D482E982B682E5 → ◆ amQOjP5E 7 = 10 桁トリップ keys = 3バイト長の16進数文字列と16バイト長の16進数文字列 出力 = ◆ 10バイト長の文字列 (◆のあとに半角 space が入る→従来トリップのクラック防止のため) 凡例:name#73FF82D482E982B682E5 → ◆ JvamQOjP5E 無し = 新式 12 桁トリップ MD5 型(末尾の 1 文字を落してから末尾から 12 文字分を抽出) keys = 8バイト長の任意文字列と任意長の文字列 出力 = ◆12バイト長の文字列 凡例:name#salt-strじゅげむじゅげむごこうのすりきれ → ◆9ljrTZJ6f.L1 こんな感じ。 >>28 ×無し = 新式 12 桁トリップ MD5 型(末尾の 1 文字を落してから末尾から 12 文字分を抽出) ○無し = 新式 12 桁トリップ DES 型(末尾の 1 文字を落してから末尾から 12 文字分を抽出)ただし glibc2 のみ。 >>28 2,3の新鯖式は4,5の塩が指定できるモードや 6,7の16進数モードがあれば 新鯖専用トリップも表示できるので特に必要のない気もしますね。 それと、0,2,4,6の8桁トリップはいまさら必要のない気もします。 (あってもクラックされる確立が高くなるだけだし…) >(◆のあとに半角 space が入る→従来トリップのクラック防止のため) とはどういう意味があるのでしょう? >>31 8 桁は昔を懐かしむ程度の物なので必要ないかもしれませんです(苦笑) > >(◆のあとに半角 space が入る→従来トリップのクラック防止のため) > とはどういう意味があるのでしょう? クラック目的で既存のトリップキーを解読された場合のことを想定してみました。 管理側の★さんが使っているトリップや、トリップを使っておられる方を騙って荒らしをするおばかさん対策とでもいいましょうか。 クラックされた場合でも0-3でトリップを出すことは可能でしょうしあまり意味がないような…。 8桁を懐かしがりたい人はsports2に逝くとか、したらばとか、 >>33 従来のクラックでは 10 桁トリップの場合だと n/64 の確率*でしたが、 新式の「塩」と「キー」指定となると、さすがに実証はしておりませんが、 64/64 の確率に限りなく近づくのでは無かろうかと危惧したためです。 * crypt の吐き出す 3 文字目の種類。 従来のトリップでは 64 種類全て出すことは不可能「かも」しれないけれども、 新式の「塩」と「キー」指定となると 64 種類すべて出せる「かも」しれない。 考えすぎかもしれないけれども(苦笑) 統一するなら旧鯖式がいい。 桁数は10桁か11桁。 >>35 Saltは4,096通り(=12ビット)ね。 Saltが変わるということは、方式の系統が変わるということで、 別指定できれば、鍵空間が実質56+12ビットになります。 新鯖仕様のように、鍵に対してSaltが対になっている場合は 鍵空間は56ビットのままとななります。 (旧鯖の場合は、56ビット以上57ビット未満) トリップの詐称と鍵解読は別問題ですが、 10桁トリップの詐称(=完全一致を見つける)は、わたしの手元でも 100年以上かかる計算です。 鍵解読(クラッキング)に関しては実践したことがないのでパスですが 人間の入力しやすい空間を探せばわりと早く見つかるもののようです。 どこかで非公開トリップが完全クラックされた事件があったけど、あれは一体どうやってやるの? 単純なキーだったとか、自分が公開してないつもりでも実は晒しトリップだったとか、 晒し依頼で貰ったの忘れてて公開してないと思い込んでたり。 ただ偶然運悪くクラックされてしまった可能性も無きにしも非ず。 >>38 それがいわゆるキーのクラックですね。 辞書とかでアタックかけたり、方法はいろいろだと思うけど。 >>37 > トリップの詐称と鍵解読は別問題ですが、 > 10桁トリップの詐称(=完全一致を見つける)は、わたしの手元でも > 100年以上かかる計算です。 現状で 100 年以上、10 年後で計算機の発達で 10 年かかるとして、最低 20 年は大丈夫そうですね(笑) ということで「名前 ◆10桁」で大丈夫でしょう。 となると、、、 1. 現行トリップ形式 name#8strings 2. 塩指定形式 name#0ABcdefghij → 0 は option、 AB が塩文字列、 cdefghij が key 3. 全指定形式 name#1HHHhhhhhhhhhhhhhhhh → 1 は option、 HHH が 16 進数表記の塩(000 - 3FF) h x 16 が 16 進数表記の key の 3 種類があれば十分なので、鳥屋TM さんの提案されたものに落ち着きますね。 ようするに、漏れはただ単に攪乱していただけのもより m(_ _)m 重ね重ね >>39 スクリプト荒らしの時ですけど、晒しじゃなかった複雑なキーがいくつもクラックされてました。 だから、偶然にしてはちょっと変としか・・・ >>40 トリップいいなぁ・・・ 辞書アタックってどういうのですか? むしろ #12345678 という形で所謂旧鯖仕様にしちゃった方が混乱しないと思うなー。 今でもあちこちでトリップの付け方良く分かんない人とか説明受けたりしてるし、 これ以上難しくしちゃうともっと説明が大変になっちゃうよー(汗 そんでもって、拡張する時だけ##12345678みたいに特別なキーにした方がいいと思うー。 おいらも##で始まるキーや変なのは持ってるけど、そういうキーを使ってる人は 騙り防止だけで付けてる訳じゃなくなってるから、その位の苦労は大丈夫なんじゃないかなー(汗 >>42 辞書に載ってる単語を片っ端から当てはめてって、一致するキーを探り当てる方法だよー。 そっから今では、人名とか何かのデータベースを元にキーを捜す方法を辞書法って言うようになったー。 トリップキーだけじゃなく、ログインパスとかこの方法でやるとかなりクラックされちゃうんだよねー。 だからパスは辞書に載ってるのまんまは危険なのー。 FreeBSD のサーバを、旧サーバ互換にするだけのほうがいいと思いま す。理由は >>43 さんと同じです。 鳥屋さんたちのようにトリップに造詣の深い人たちにとっては、>>41 の ようなやりかたがいいのかもしれませんが……。 ついでに八桁に戻してもらえると、このトリップも見栄えが良くなって嬉し いですが。(w 1. #12345678 通常トリップ。 2. ##ABabcdefgh 塩(AB)指定トリップ。 3. #$HHHhhhhhhhhhhhhhhhh 全指定トリップ。 4. #*12345678 通常トリップ。従来のキーの先頭が [#$*] で始まる人向け。 こんな感じでしょうか? 取り敢えず上記のトリップ回路テストページをこれから作ってみたいと思います。 それでいろいろやってみて不具合が出るようでしたらいろいろあーだこーだなどなどと。 >>44 古い話ですが、もしかしてトリップ評価スレが荒れた原因の方ですか? 鑑定人にCCSAKURAを知らんとは何事だゴルァ!!→その後荒らしまくり の人ではないですよね? >>46 でっちあげてみました。 http://baila6.jp/sv2ch/tripper/ 塩が欠落しているときは、強引に [H.] になるようなならないような。。。 >>42 トリップのクラックなんて簡単かと。 串鯖立てて、サイバー(ryに登録しておく。 あとは、アク禁食らって困っている2ちゃんねらーが トリップをつけて書き込みするのを待つのみ。 というわけで、みなさん安易に串などお使いにならぬよう…。 キャップパスつけて串を通して書き込みなんてもってのほかですよ。 >>50 sec2chとかは本気でそうすべきかもw >>47 違います。 1. 〜 4. まで試してみました。どれも期待通りの結果になりました。 >>43 豚楠。 安易なワード入れるのは危険なんですね。 >>49 (((((((((((((((゚Д゚)))))))))))))))ガクガクブルブル これからうかつにトップリつけるの控えますです。 でも、どうゆう原理になってるんですか?(まじわからない・・・ 厨な質問でごめんあさい。 >>52 早速のテストありがとうですm(_ _)m あと気になるのは末尾に 1 。 ちなみに出ちゃいますか?(汗) 0x08 0x7F とかかしら? >>58 pb3でですか? 今は仕様ですよ。 ↑の人がなんとかしてくれるまでまちませう。 >>58 新鯖トリップ とは旧鯖でちゃんと表示されない新鯖専用トリップのことかな? >>48 のページでは旧鯖仕様のトリップが表示されるので 新鯖専用トリップを表示させるならキーとsaltを別に指定しないと駄目です。 それをやったうえで新鯖トリップが表示されないならスマソ >>61 普通に入れると旧サーバのトリップが出ます。 新サーバのトリップを出す場合は、2. の形式でないと駄目です。ただ、塩 に何を入れればいいのかが、普通の人には分からないですよね……。 塩を入れるのではなくて、新サーバ用と指定できるほうが分かりやすい ところなんですが……。 新形式にするのは(・∀・)イイ!!けど、 今まで普通に使えてた鳥はそのまま継続して使えるようには出来ないの? 一般の利用者にも分かりやすいように、2. の形式から塩を取り払って、 2. ##12345678 新サーバ・トリップ。 にしてもらえればいいかもしれません。 塩を指定したいようなマニアックな人は、3. の形式を使ってもらうというこ とでいいかと。 ね、鳥屋さん。 旧鯖○新鯖×のトリップは仕方ないにしろ、 旧鯖○新鯖○のトリップが新々鯖で使えないってのは駄目だな・・・ なんか、一部のマニアックなユーザー優先の改良のように思えて仕方ない。 未だに旧鯖トリップの新鯖での文字化けについて理解してないユーザーも多いのに。 もっと一般ユーザーに優しい改良をしてもらわないと。 暫定的に「新鯖式」を動かしてみました。 書式は、「#!12345678」 でも[_]だけ[.]に変換させているけれどこれだと新々鯖(uma鯖)では不具合(◆だけしかでない)が出るかもかもかも。 >>71 あ、もしかして、、、 実験はこちらで行っています m(_ _)m 新式トリップ回路のテストページ http://baila6.jp/sv2ch/tripper/ トリップマニヤだ。 一般人、逸般人、マニヤ、管理サイドみなを完全に満たすような 仕様って作りようがないので、どこか落としどころをつくらないと いけなくて、これはこれで苦慮している。 トリップのスキームをいじるのは単純だけど難しい。 完全に旧鯖仕様に準拠してしまうと、新鯖特定板オンリー住人が かわいそうだ。 # の次の文字に特別な意味を持たせる方式(わたしが提案して 未承諾さんが実装してくれたもの)では、トリッパなどで先頭が 該当文字が出てしまったものを使ってたときにきっと面食らうだろう。 トリップ用エスケイプ文字に # 以外のものを導入すると、 その記号をコテハンに使ってたユーザさんが思いっきり面食らうだろう。 (事実、わたしが2chに出入りし始めた時点で、# をコテハンに含ませて いたらある日いきなり変換されだして面食らった) というわけで、まずトリップキーに使用されることのない文字 " & < とかを使用するというのは、どうだろうか? 例) 生salt 指定 #>ABxxxxxxxx 生キー #&XXYYYYYYYYYYYYYYYY ところでMD5トリップをサポートする必要、あるだろうか?? (w 補足。 なぜ、Salt変換ロジックを旧鯖仕様にすることにこだわっているかというと、 単に、新鯖仕様Salt変換をわざわざそのために実装してもらいたくないからです。 生キー指定も、3桁の16進とか4桁の8進でしていするよりもむしろ、 旧鯖仕様2文字で指定してもらう方がよかったりするかもしれない。 トリップが化ける人用に、対策変換CGI, Flashを、新鯖だった板の ヘッドラインに貼ってもらうようにすれば、少しは混乱が緩和するかなと。 以下、晩酌でヘロヘロになった頭で書いた模式。 if (/^&(..)([0-9A-F]+)/i) { $salt = $1; $key = $2 =~ s/(..)/pack('H2',$1)/eg; } elsif (m!^<(..)(.+)!i) { $salt = $1, $key = $2; # もし、この型式で新鯖仕様Saltを使いたい場合は、変換をココに入れよ。 } else { $key = $_, ($salt) = /^.(.*)/; } # MD5トリップを活かしたい場合は以下を再吟味せよ $salt =~ s/[^.-z]/./g; $salt =~ tr/\x3A-\x40\x5B-\x60/\x41-\x47\x61-\x66/; $trip = crypt($key, $salt.'H.'); ちなみにたぶん、トリップ変換に来るまでに、 トリップキー部分の " & < > などは " & < > などに 置き換えられているだろう。 連続カキコのわっ × " & < > などに ○ &quot; &amp; &lt; &gt; (&は半角) などに >>鳥屋様 sageなのにageるsageですか? なぜ? ( ・3・)つ " & < > #<option>key という書式でも良さそうですね。 &< と &> で囲まれた 1 文字の option で判別するとか。 →書式不備の場合はそのまま &< を垂れ流すか、代替で 'H.' にするとか。 このあたりも煮詰めた方が良さそうですね。 ♪トリップ史には疎いので申し訳ないけれども、 個人的には今までのトリップ回路では不備だらけなので、 新しい形式のがあった方がよいかと思うです。 こんなことをして遊べる余地があるというのも、楽しいかも。 #$HHHhhhhhhhhhhhhhhhのHとhに何を入れてよいかが分からぬ(;´д`) ■ このスレッドは過去ログ倉庫に格納されています
read.cgi ver 07.5.5 2024/06/08 Walang Kapalit ★ | Donguri System Team 5ちゃんねる