人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

javascriptについてです。

こういう難読化というのは簡単に解読できてしまうのでしょうか。

パスワードを知られてしまうのかどうかを知りたいと考えています。

どこかのサイトやツールで解読できるようでしたら、その方法も教えて頂ければ幸いです。

入力した文字が、設定してある文字と一致すると「OK」と表示します。

わかる方には一瞬で解読できてしまうのかもしれませんが...
最初に正解した方に 100p とさせて下さい。

宜しくお願いします。

追記部分にソースを記載します。

●質問者: worldtravel
●カテゴリ:コンピュータ ウェブ制作
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

質問者から
<html>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<head>
<script>
eval(function(e,a,n,r,t,c){if(t=function(e){return(a>e?"":t(parseInt(e/a)))+((e%=a)>35?String.fromCharCode(e+29):e.toString(36))},!"".replace(/^/,String)){for(;n--;)c[t(n)]=r[n]||t(n);r=[function(e){return c[e]}],t=function(){return"\\w+"},n=1}for(;n--;)r[n]&&(e=e.replace(new RegExp("\\b"+t(n)+"\\b","g"),r[n]));return e}("v(l(p,a,c,k,e,r){e=l(c){m c.x(a)};n(!''.o(/^/,y)){s(c--)r[e(c)]=k[c]||e(c);k=[l(e){m r[e]}];e=l(){m'\\\\w+'};c=1};s(c--)n(k[c])p=p.o(z A('\\\\b'+e(c)+'\\\\b','g'),k[c]);m p}('2 g(){3 a=\\'1\\';a+=\\'4\\';a+=\\'a\\';a+=\\'b\\';a+=\\'h\\';a+=\\'5\\';6(a==7.8(\\'9\\').c){0(\\'d\\')}e{0(\\'f\\')}}2 i(){3 a=\\'1\\';a+=\\'4\\';a+=\\'a\\';a+=\\'b\\';a+=\\'h\\';a+=\\'5\\';6(a==7.8(\\'9\\').c){0(\\'d\\')}e{0(\\'f\\')}}2 j(){3 a=\\'1\\';a+=\\'4\\';a+=\\'a\\';a+=\\'b\\';a+=\\'h\\';a+=\\'5\\';6(a==7.8(\\'9\\').c){0(\\'d\\')}e{0(\\'f\\')}}',t,t,'B||l|C|q|u|n|D|E|F|||G|H|I|J|K||L|M'.N('|'),0,{}))",50,50,"|||||||||||||||||||||function|return|if|replace||||while|20||eval||toString|String|new|RegExp|alert|var|document|getElementById|pw|value|OK|else|NO|hogehoge|hogehoge2|hogehoge3|split".split("|"),0,{}));
</script>
</head>
<body>
<form><input type="text" id="pw" /><input type="button" value="チェック" onclick="hogehoge()" /></form>
</body>
</html>

1 ● bbmoment
●0ポイント

Javascript 短縮化 がキーワードになります。

以下のサイトが参考になるかと重います。
http://ideahacker.net/2012/01/17/865/


2 ● a-kuma3
●100ポイント ベストアンサー
1qabhu

一瞬、というわけにはいかなかったけど :-)


a-kuma3さんのコメント
難読化とかあまり興味がなかったので、そのツールは知らなかったのですけれど、20分くらいで答えにたどり着きました。 知られたくない文字列との一致判定をやりたいなら、ハッシュ値のような不可逆な演算をかませないとダメです。 さらに言えば、パスワード判定をやりたいなら、イベントリスナーは Bookmarklet なんかで置き換えることができちゃうので、もっと考えなきゃいけないことが増えちゃう。

worldtravelさんのコメント
ーー;;; ダメでしたか... ハッシュ値にすれば、もう少しはマシになりそうですね。 もう少し工夫します。 ありがとうございました。

a-kuma3さんのコメント
>> ダメでしたか... << packer を知らなかったぼくにでも、たどりつけたのでね。 一応、回答に至った経緯を書いておきます。 ソースの特徴的だと思われるコードの断片+「解読」でググる。 「String.fromCharCode(e+29):e.toString(36) 解読」 packer というのを使ってるらしいことは、すぐに分かりました。 http://blogs.yahoo.co.jp/yoshimy_s/20657516.html packer というのが、コードの文字列を ascii コードに変えるのだということも分かります。 http://blog.shimazu.org/utils/packer_decoder.html packer の decoder があるのも検索結果で分かりましたが、素直に使ってもデコード結果が出てこない。 ここで、コードの方を追っかけたので、ちょっと時間を食ってます。 気分を変えて、検索結果を見直していると、こんなのが見つかるわけです。 http://q.hatena.ne.jp/1277726889 ああ、複数回。 だから、 eval(function(p,a,c,k,e,r){ ではなく、 eval(function(e,a,n,r,t,c){ なのね、と。 eval に渡している文字列を調べるために、eval → console.log と変えて実行して、コンソールを確認。 引数が packer :-) これを decoder にかけると…… 人力検索での過去質問が無かったら、もうちょっと時間がかかってたかもしれませんけれど。

worldtravelさんのコメント
詳細を、ありがとうございます。 過去質問も私なのです ^^; 今回は少し変えてみたのです。 が、、、バレてしまった、と。
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ