はてなキーワード: BASE64とは
増田「最初に思い浮かべた単語を暗号化して示してください。最後に正解したら、その暗号を解除してください。できますか?」
GPT4:「私は暗号化と復号化を行うことができますが、私はリアルタイムでインタラクションを行っており、過去のやりとりにアクセスすることはできません。ですので、私が最初に思い浮かべた単語を暗号化して、その後復号化するというプロセスは実現できません。
ただし、言葉あそびのために、あらかじめ暗号化された単語を用意し、あなたがそれを推測し復号化できるようなゲームを提案できます。それでもよろしければ、暗号化された単語を提示します。」
VG9reW8=
この暗号化にはBase64というエンコーディング方式が使用されています。あなたが単語を推測し、それが正解であることがわかったら、私が復号化を行います。ヒントが必要であればお知らせください。」
GPT4:「ヒント:この単語は、日本の地名に関連しています。質問をどんどんどうぞ。」
2. 電子メールが送信される過程で、怪しい第三者が設置したサーバーを経由して送られることはあり得るのか?
3. 電子メールが送信元のクライアントと受信先のクライアント間のP2Pで暗号化される技術は何があるのか?
4. 「3.」の実現は中小企業で導入するのは難しいものなのか?
5. 中継サーバーを経由するなら、メールアドレスは容易に漏洩し、迷惑メールが来るのはそれで漏れたのが原因?
6. 例えば、会社のPCのWiresharkから、ネットワーク上を流れるデータを盗聴し、隣にいる社員のメール内容を盗み見することは容易に可能なのか?
会社で日常的に契約書のPDFや重要な文書を送付しあってるけど、あれ、内容が漏洩することはないの?
あと、会社の情シスから、「迷惑メールが突然来るようになるのは、第三者が設置した中継サーバーでメールアドレスが漏れてしますから。インターネットは不特定多数のサーバーを経由するから、ITを囓ったものなら誰でもそれは分かる」と言われた。確かにインターネット(というかTCP/IP通信)では冗長化されたネットワーク上でパケットが送付されるが、第三者の個人が設置した野良サーバーを、会社から送付されたメールのデータが経由するものなのか・・・?
送信プロトコルとしてSMTPがあり、受信はPOP3、IMAPがあるのは知ってる。
1.について: TCP/IP通信では冗長化されたネットワークをパケットが通るのは分かるが、例えばGmailからOCNのメールに送られるとして、都内在住のマンションに住むある悪意を持った人物が設置したグローバルIPを持つ野良のサーバーを経由して送られる、なんてことがあるのか? あるとは思ってなかったのだが。。。
2.について: 上と同じ。
3.について: S/MIMEかな? PGPは会社で使用されているのは見たことがない。
4.について: S/MIME、PGPは、例えば社員400名くらいの小規模な弊社でも導入は容易なのだろうか。Microsoft 365のExchange Serverの設定がいるの?
5.について: 情シスがこれ(メールアドレスは中継サーバーで漏洩するもの)を気にしていた。だから、重要な文書はメールで送ったりするな・・・と。そうなのか? 初めて知ったのだが。。。メールアドレス漏洩は、リスト型攻撃みたいに文字列(@の左側)を試行して特定ドメインに送付され、届かなければ存在しない、届けばその文字列のアドレスは存在する、みたいなやり方とか、あとダークウェブで入手するものとか、そうだと思ってた。
6.について: 弊社の情シスが言うには、メールの盗聴というのは容易に可能だから、メールでPDFの給与明細を送付するなんてことは絶対にできないらしい(でも、普通にしてる気はするけど・・・)。確かに電子メールはネットワーク上を平文で送付されるかもしれないが、パスワード付きPDFにすればいいし、給与明細をWebサイト閲覧の形にしてTLS通信させればいいじゃん。そういうクラウドサービスあるんだし。そもそも、社内のHUBに悪意ある第三者がLANケーブルつないでパケットキャプチャするとか、実現の難易度高すぎるから、それは想定しなくていいんじゃないの?
ていうのか、疑問。誰か教えて。
ISUCON 9 参加記 - kyuridenamidaのブログ
ISUCON9 レギュレーション違反の対応について [追記あり] : ISUCON公式Blog
「パスワードを平文で保存すること禁止する」というレギュレーションに対して、「パスワード+#」が違反したと見なされたのが最初の見解。
ここでいう「平文」が出てくる文脈は、初期実装のbcryptからも明らかなように暗号理論の文脈だと考えられる。ここに疑念を挟む人はまずいないだろう。
そして暗号理論の文脈で言う「平文」とは明確な定義があり、今回で言えば「パスワード文字列そのもの」だ。
これは学問的には異論の余地がないので、このことを知らなかった人や、どっちもどっち論に立っていた人は、素直にごめんなさいすべきだ。
たとえば以下のツイート主が主張するような「原理的に元に戻せるのは全部平文」なんて定義は暗号理論では受け入れられていない。複合可能なら全部平文なの?
どこまでが平文って、そりゃ原理的に元に戻せるのは全部平文でしょ。Base64で保存してたパスワードが流出しました!でも平文じゃないから安全です!とでもいうのかよ(´・_・`)いやまじで。— Hideyuki Tanaka (@tanakh) September 11, 2019
もう話はここで終わってもいいのだが、まだまだ論点があるので続ける。
この立場に立っている人も結構いるように見かけたが、レギュレーションからそれが読み取れないので無理がある。
第一に、レギュレーションでは暗号強度に関して全く触れられていない。
第二に、OKな暗号強度の線引きがあるのならベンチマークでチェックすべきだ。
特に後者は今回(自分の知る限り)誰も言っていなかった気がするが、セキュリティの側面も持たせるのなら仕組みで担保しなきゃダメだろう。
運営側が想定していたレギュレーションが、平文よりも高い暗号強度での保持であったとしても、そのことが明確にわかる文章になっていないので、レギュレーション文言の実装バグとしか言いようがない。
実はこの立場で運営を擁護していた人が一番多かった気がしてしまうのだが、見事にハシゴを外されてドンマイとしか言いようがない。
たとえば有名人だとこの人とか。
平文保存がルールに抵触したかどうかは全く興味ないけど、「パスワードの末尾に#つけてから保存してたから平文じゃないです」っていうのは言い訳としては成り立たないよね。ウェブアプリケーション開発者・運用者として、仮にパスワードデータベースが流出したとして、顧客にそう言えるの?っていう— Kazuho Oku (@kazuho) September 11, 2019
残念ながらISUCON運営公式の言説として、平文とまではいかなくても暗号強度を犠牲にすることは想定内であったことがアナウンスされている。
bcryptによる負荷の対処方法として、サーバを追加、軽量なハッシュ関数での代替、あるいは平文での保持を開発チームにおいて想定しましたが、現実の問題として、パスワードなどの情報流出などの事件が発生しており、平文での格納は一般的に推奨されない実装方法だという認識を同時に持ちました。
ウェブアプリケーション開発者として、みたいなことを大上段に出されても、ISUCONは現実のウェブサービスであれば許容できないようなハックを用いてでも高速化するコンテストである、という文脈は、それこそ過去のISUCONで確立されてきたものなわけで、ISUCONを知らないのなら黙っといたほうがいい、としか言いようがない。
なお実サービスでは当然やらないことをやるのはどうよ、みたいな話を持ち出すと、今回おそらく運営の脳内レギュレーションではMD5あたりもOKだったのでは、という辺りを考え出すと、やはりどこがラインなのか明確じゃないよねって話に結局なる。(2019年にMD5を許す実サービスは流石にないよね?)
そこを明確にしたいなら文章化(脳内レギュレーションの実装)をがんばるか、ベンチマークなどで担保するしかなかったという結論は変わらない。
それが出来ないなら何でもありになるのは当然の帰結だし、それを美学だとかプライドだとか個々人の価値観が大きく異なる概念で縛ろうとするのは、こと競技に関しては真摯な姿勢ではない。
(たとえば大相撲のような競技でも、横綱が変化しちゃダメという美学に関して喧々諤々な議論が起きたりする)
王道はこれ。
脳内レギュレーションを明文化できていなかった、という反省を踏まえて次がんばるしかない。
今回は他チームから問い合わせがあったらしいが「平文」の定義をきちんと調べさえすれば、想定していた回答ではないが「パスワード+#」は平文ではないので今回のレギュレーション違反には当たらない、という結論を伝えるべきだったように思う。
現実的な落とし所はこっちだったかもしれない。おそらく該当チームも、これなら反発はしなかったんじゃないか。
ということで騒ぎは終わりにしたい、という気持ちに関しては多くの人の一致を見るはずだ。
一方で運営側の朝令暮改のような対応に不信感や疑問を持つ人が多いのも事実だと思う。
ボランティアでがんばってるんだから目を瞑ろう、という感情的な意見もまあ分かる。お疲れ様だ。
またこれは個人的な見解だが、特に今回の予選問題は過去最高傑作と言っても過言ではないくらいよく出来ていると思うし、流通額をスコアとするビジネス上の目的を意識させるというメッセージ性も素晴らしいと思うので、今回の一件を持って問題作扱いされてほしくない気持ちは正直ある。
でもきちんと総括しないで先に進んでも誰も幸せにならないのもまた事実だと思う。
ということで、運営側はレギュレーション文言がバグっていたことをちゃんと認めて、該当チームに落ち度が全く無かったことを謝罪した上で、次に進んでほしい。
競技中に質問に答えなかったこと、参戦後のブログを根拠に裁定をくだしたことも悪手だと思うが、それ以上に、「レギュレーション違反はなかった」ことをきちんと伝えて名誉回復してあげるのが一番の筋のはずだ。
エロ動画ではない。エロ画像である。なにせこれは20年以上前の話だからだ。
当時、Windows ユーザの間でもモデムとテレホーダイの併用でネット接続が普及しつつあった頃だった。俺は貧乏学生だったけど、常時接続された環境でのうのうとネットワークを使っていて(誤解を避けるために最初に書いておくが、俺は工学系だが情報系の専攻ではない)、Linux で独立したサーバを組んで研究室に設置し、テレホーダイタイムに家の PC98 で hterm を走らせてターミナル接続し、emacs でメールの読み書き、kermit で小さいファイルのやりとりをしているような、そんな感じの日々だった。テキストターミナルだけ、って、今の人には信じられないかもしれないけれど、メールとネットニュースの読み書き、あとはサーバの管理を行う上では、これで何の不自由もなかった。まあそういう時代だったのだと思っていただきたい。
おそらくここを読んでいる方の多くは ネットニュースという言葉を聞いてもピンとこないと思う。誤解を恐れず簡単に言うと、オープンかつ分散的なネットワークで構成された5ちゃんねる、みたいなもの……かな。5ちゃんねるはオープンでも(ネットニュース程に)分散的でもない(いや内部では分散されているんだろうけどね)し、投稿は匿名で行われるわけだけど、ネットニュースは個々のサーバが独立して運営されていて、上流のサーバとの間で NNTP によるバケツリレー方式でニュース記事のファイルが転送される。ネット上を流れているニュースグループとその記事の数は膨大なもので、そこではほとんどの場合所属や名前をオープンにしたやりとりが行われていた。日本では fj.* ってのがあって…… void 氏とか lala 氏とか、何かまあ色々有名人物がいたわけだ。何か投稿する際にびくびくしながらやっていたのを今でも思い出す。
いや、まあ fj の話はよろしい。あくまでここではエロ画像の話だった。先のネットニュースのニュースグループには comp.*, news.*, sci.* 等があったわけだけど、これらの枠組みに入らない、もしくは入れたくないような話題に関して収納する目的で alt.* というのが作られていた。この alt.* はある意味無法状態に近くて、alt(言うまでもなくこれは alternative の略である)は実は "Anarchists, Lunatics and Terrorists" の略である、などと言われた位だった。そしてこの alt.* 内には alt.binaries.* というサブグループが形成され、そこに様々なバイナリデータが流されていた。ただし、ネットニュースはテキストしか流すことはできないので、バイナリデータは uuencode(この頃まだ Base64 なんてなかったので)でテキスト文字列に変換され、分割されて投稿されていたわけだ。
で……長いな前置きが。要するに、alt.binaries.erotica.* というサブグループがあって、ここにエロ画像が大量に流れていたわけだ。勿論、大学や企業のニュースサーバはこんなグループを購読したりはしないわけなのだが、あるときに噂が流れたのだ。**大学のこのサーバで、どうやら購読しているらしいぞ、と。アクセスのあからさまな制限がされておらず、見てみると……うわー、あらかた購読してるじゃん。まさに宝の山であった。ちょっと考えて、俺は自分のサーバ上でスクリプトを書き始めた。
alt.binaries.erotica.* には、様々な性的嗜好に合わせた画像のサブグループがある。ガチムチホモの絡みなんてのはお呼びじゃないので、見目麗しそうな女性の画像がありそうなグループをまず選び、そこの記事を一定時間間隔(traffic を徒に増やすのはさすがに気がひけたので)で自動的に採取、結合し、uudecode でバイナリに変換して HDD にストアする……そういうスクリプトを書いてみた。たまたまある目的で、データストア専用の HDD をサーバに付けたところだったので、そこにバイナリを溜めるようにして、ちょっとわくわくしながら眠りについた。
翌日、早めに研究室に行き、他の学生がいないのを確認して HDD の中身を見ると……おー、溜まっとる溜まっとる。中には外れもあってスカトロやら妊婦やらエラいものも混じっているわけだが、さすがにこれは人力で弾くしかない(今ならそこも自動化するかもしれないが)。数日で HDD 一杯にファイルが蓄積されたのだった。さあ、めくるめくエロライフの始まり始まり……と思ったのだが、そうはならなかった。結論から言うと、俺は1、2週間でそれをやめてしまったのだ。
まず俺は洋ピンマニアではなかった。そして、エロ画像ってのは飽きる。最初は、今風に言うと「これは俺の嫁」みたいなのを選んで、精選版画像アーカイブみたいなのを作ろうかとも思ったのだが、そういうところにそういう食指をそそられる画像ってまぁ流れてこないんだな。圧倒的に多いのは「ノイズ」。人力ノイズリダクションに嫌気がさしてしまったのだった。おまけに HDD は逼迫してくるし、結局あるところで意を決して、HDD を unmount してファイルシステムの再構築。すかーっと容量が空いたそのときが、実は一番快楽を感じた瞬間だったかもしれない。
Webサイトへの広告配信システム Geniee SSP を開発する企業。2017年11月マザーズ上場。主要株主はソフトバンク。下請けの広告会社が Geniee SSP を自社システムとして営業に使用できる(OEM)。詳細はねとらぼの記事を参照。
広告配信のジーニー、「漫画村」など不正サイトへの広告を停止したと発表 - ねとらぼ
Geniee SSP の広告タグには規則性がある。これを活用して Geniee SSP を掲載しているサイトを探した。
<!-- ad tags Size: 300x250 ZoneId:[a]> <script type="text/javascript" src="http(s)://[b]/t/[c]/[d]/[a].js"></script>
[a] : | 広告タグの固有ID |
[b] : | 広告会社によって異なるドメイン |
[c] : | [a]の下6桁のうち最初の3文字 |
[d] : | [a]の下6桁のうち最後の3文字 |
(2)では広告会社によって異なるドメインが使われているが、実際には全ての広告が genieesspv.jp から配信される。詳細は以下のエントリーの「BASE64っぽい文字列をデコードすると、HTMLの断片が現れます」以降を参照。(エントリーの執筆者は元増田と無関係)
ここではサイト内のHTMLやJavaScriptのソースコードから Geniee SSP の広告タグを直接確認できるサイトのみをまとめた。
広告会社 | 広告配信先サイト | サイト内容 | 月間アクセス数 | 広告タグを確認できるページ | 広告タグのURL部分 |
---|---|---|---|---|---|
ジーニー | MioMio | テレビの海賊版サイト | 3000万PV | ttps://web.archive.org/web/20170606015825/http://www.miomio.tv/ent/japan/ | ttp://js.genieessp.com/t/106/112/a1106112.js |
ジーニー | Youtubeアニメ無料動画++ | アニメのリーチサイト | 8000万PV | ttps://web.archive.org/web/20180330043340/http://tvanimemuryoudouga.com/ | ttp://js.gsspcln.jp/t/246/920/a1246920.js |
フィング | DLBOOKS | 同人誌の海賊版サイト | 6.4億PV | ttp://web.archive.org/web/20180415210525/http://dlbooks.to/ ttp://web.archive.org/web/20180415210535js_/http://gum.dlbooks.to/js/pc/pc_728_90_03.js を経由 | ttp://js.click-plus.net/t/227/975/a1227975.js |
インサイト | ShareVideos | エロ動画の海賊版サイト | 2.4億PV | ttps://web.archive.org/web/20180415201519/http://share-videos.se/ | ttp://js.isboost.co.jp/t/287/861/a1287861.js |
アドニコ | アニポ | アニメのリーチサイト | 1000万PV | ttps://web.archive.org/web/20180410033210/http://anipo.tv/ | ttp://js.adnico.jp/t/305/831/a1305831.js |
エムエムラボ | 動画エロタレスト | エロ動画のリーチサイト | 15億PV | ttp://web.archive.org/web/20180401160146/https://static.eroterest.net/kok/sp_footer3.html | ttps://js.mediad2.jp/t/228/840/a1228840.js |
漫画村やAnitubeのほか、児童ポルノやリベンジポルノを配信していると思われるサイト等でも Geniee SSP の広告が配信されているのを確認できたが、いずれも別のアドサーバーを経由しており、ジーニー側がそのサイト上での配信を認識しているかが不明なため、ここでは割愛する。
今時BASP21 DLL(フリー版)でメール受信してどうのこうので困ってる人が世の中にどのくらいいるかどうかわからないけど、今日嵌ってググってもまともな答えが出てこなくて途方にくれたのでポイントをメモっておく。
BASP21 DLLのRcvMailメソッドでPOP3サーバから受信してReadMailメソッドでメールの内容を取得すると、一部のメールが送信者や添付ファイル名が文字化けして正常に取得できない。これはBASP21 DLLのReadMailメソッドが最近普通に送信されるUTF-8のメールに対応していないため。
RcvMailで受信したファイルをReadMailで読み込む前に直接開き、Base64エンコードされたUTF-8の文字があったらデコードしてJISに変換してBase64エンコードして保存する。その処理したファイルをReadMailで取り扱うようにする。全部BASP21の機能でできる。
BASP21のKconvメソッドの第1引数のinstrに文字列を渡せるのはUnicode UCS-2のみの場合だけらしく、UTF-8の文字列を渡しても正常に動作しない。なので、一旦テンポラリファイルに書き出しKconvFileメソッドを使用して変換を行う必要がある。っていまドキュメント眺めてたら文字列をバイト配列にするByteArrayというメソッドがあるみたいなのでこれをを使えばできるかもしれない。けどもう正直いじりたくないよ…。
http://qiita.com/narikei/items/f603ce6b844422ee49d6
base64で作成できることも、後から書き換えできることも知らなかった。
今まで、apple-touch-iconのhrefにCGIを指定しておいて、そのCGIでゴニョゴニョして、動的に(正確にはタップの度に)ホームアイコンを書き換えてたんだけど、これのお陰で体感速度がだいぶ上がった。
先頭のlink要素でCGIのGDで作成していたのを、canbasからのbase64をページ最下部に持ってくることで、数100ms改善
先頭のlink要素でCGIのGDで作成していたのを、hrefを無指定にしておいて、ページ最下部のスクリプトでCGIに設定することで、100ms改善
去年の今頃は「今年こそはすごいWebサービス作るぞ!!!!!!!!!!!」って意気込んでたのに
なんかもう今日が最終日。
ということでこの12月頭から何か作ろうと考えていて、丁度年末だからということで作った。
前にAmazonの購入金額合計を出すブックマークレットが流行ったけど、それとほぼ同じ。
Amazonの今までの合計金額と、書籍とかPCとかカテゴリごとの合計金額出してグラフにする。
年末だしTwitterで「2014年のKindle購入金額内訳は...でした」とか投稿すれば
みんなつられてアクセスするはず!宣伝しなくても勝手に大ブーム間違いなし!!!!!!!!
って思ってたけど
投稿してもだれもアクセスしてくれない。待っても待ってもアクセス0。
e?嘘でしょ???って思ったら
のはずだったけど今度はrobots.txt見に来るクソbotしかアクセスしてくれない。
虚しさ半端ない。
というかTwitterでURLつぶやくと即効でどこぞやのクローラー巡回してくるんですね。
構成自体はクライアント・サーバサイド共にjs。EC2上でnode.js。
D3.jsのグラフ画像がsvgだからどうにかしてpngにしないとTwitter投稿出来ないのが微妙に面倒だった
投稿時にクライアント側でbase64→canvas→pngにしても良かったけど
商品のカテゴリ取得するためにはProduct Advertising API使うしかなくて
redis上にキャッシュしておいたりwebsocketで適当に進捗伝えたりした。
今回得た経験値としては
あたり。
今年は残念ながら目標不達成だったけど、いい最終日の過ごし方になったと思う。
お疲れ様でした。
open /var/mobile/Library/Preferences/com.apple.restrictionspassword.plist
you can find this kinds:
<key>RestrictionsPasswordKey</key> <data> xxxxxxxxxxxxxxxxxxxxxxxxxxx= </data> <key>RestrictionsPasswordSalt</key> <data> XXXXXX== </data>
$ key=```echo "key" | base64 -d | xxd -p``` $ salt=```echo "salt" | base64 -d | xxd -p```
finally try matching hashed 0000~9999(PBKDF2-HMAC-SHA1, salt=salt, iterations=1000) and the given key
more info: http://hashcat.net/forum/archive/index.php?thread-2892.html
ID;PCALCOOO32 C;X1;Y3;K"ArtsAndCrafts" C;X2;Y3;K"YsSeven" C;X3;Y3;K"MaiItsu" C;X4;Y3;K"iM@S" C;X5;Y3;K"ED6-3(7)" C;X7;Y3;K"CharZekken" C;X1;Y5;K"ケビン" C;X2;Y5;K"○アイシャ/シグルーン" C;X6;Y5;K"(セレビシエ)" C;X7;Y5;K5 C;X1;Y6;K"リース" C;X4;Y6;K"○P(ぷちます!/ウェントスP)" C;X6;Y6;K"(オリゼー(エマ))" C;X7;Y6;K6 C;X8;Y6;K"s(5)" C;X1;Y7;K"エステル" C;X2;Y7;K"○クルシェ(ムスタファ)" C;X4;Y7;K"(春香)" C;X5;Y7;K"(ロイド)" C;X6;Y7;K"(クリソゲヌム)" C;X7;Y7;K"⑧" C;X8;Y7;K"及川(8月)にはなれず" C;X9;Y7;K"葉月と長月ごたまぜにしてました。" C;X1;Y8;K"ヨシュア" C;X2;Y8;K"○エルク" C;X4;Y8;K"(千早)" C;X6;Y8;K"(蛍)" C;X7;Y8;K13 C;X8;Y8;K"XIII" C;X1;Y9;K"'(レン)" C;X2;Y9;K"○アドル" C;X6;Y9;K"(ラクチス)" C;X7;Y9;K15 C;X8;Y9;K"XV" C;X1;Y10;K"リシャール" C;X2;Y10;K"○ガッシュ" C;X7;Y10;K24 C;X1;Y11;K"シェラザード" C;X3;Y11;K"○ジュン" C;X4;Y11;K"(あずさ)" C;X5;Y11;K"(エリィ)" C;X6;Y11;K"(長谷川/イーディ)" C;X7;Y11;K222 C;X8;Y11;K"なにみてはねる" C;X1;Y12;K"オリビエ" C;X2;Y12;K"○マイシェラ" C;X4;Y12;K"(黒井)" C;X7;Y12;K961 C;X1;Y13;K"ミュラー" C;X2;Y13;K"○ドギ" C;X6;Y13;K"(沢木/ヨグルティ)" C;X7;Y13;K962 C;X8;Y13;K"s(961)" C;X9;Y13;K"「かもたべ」だとむしろオリビエなんですが。" C;X1;Y14;K"(クローゼ+ティオ)" C;X3;Y14;K"○トロ[?ユーリ+?語り手]" C;X4;Y14;K"(涼[ε語り手])" C;X5;Y14;K"(ティオ)" C;X6;Y14;K"(ナユタ)" C;X7;Y14;K106 C;X8;Y14;K"TORO" C;X1;Y15;K"ユリア" C;X3;Y15;K"○ピエール" C;X5;Y15;K"(ミシェル)" C;X7;Y15;K963 C;X1;Y16;K"ジョゼット" C;X3;Y16;K"○スズキ" C;X4;Y16;K"(サイネリア[学校司書])/(真)" C;X6;Y16;K"(ホーマー=ピエローニ)" C;X7;Y16;K7 C;X8;Y16;K"'BEL/×BOX(U+2610)" C;X1;Y17;K"アガット" C;X3;Y17;K"○テレビさん" C;X5;Y17;K"(ランディ)" C;X7;Y17;K980 C;X8;Y17;K"Change for Thousand Yen" C;X1;Y18;K"'---" C;X4;Y18;K"麗華(preTorne)" C;X5;Y18;K"(ティータ)" C;X6;Y18;K"(中山ちさ)" C;X7;Y18;K1054 C;X8;Y18;K"×s(980)" C;X1;Y19;K"(ティータ+ドルン)" C;X3;Y19;K"(ぼっちP)" C;X4;Y19;K"(舞[hidden])" C;X5;Y19;K"○エリカ博士" C;X6;Y19;K"(宏岡)" C;X7;Y19;K4294966316 C;X8;Y19;K"'=2^32-980" C;X6;Y20;K"'18446744073709550636" C;X8;Y20;K"'=2^64-980" C;X1;Y21;K"アネラス" C;X4;Y21;K"○コトリ" C;X6;Y21;K"(武藤)" C;X7;Y21;K801 C;X1;Y22;K"ジン" C;X3;Y22;K"○リッキー" C;X6;Y22;K"(樹)" C;X7;Y22;K1 C;X8;Y22;K"(×RET)" C;X1;Y24;K"tends victim" C;X3;Y24;K"クロ" C;X4;Y24;K"絵理" C;X5;Y24;K"レン[?語り手]" C;X7;Y24;K96 C;X3;Y26;K"(軍師役)" C;X4;Y26;K"伊織" C;X5;Y26;K"(キーア)" C;X7;Y26;K127 C;X8;Y26;K"DEL" C;X1;Y28;K"ATC trainee on RJAH" C;X4;Y28;K"(響[エイエイ])" C;X5;Y28;K"エコー" C;X6;Y28;K"(ソーエ)" C;X7;Y28;K10 C;X8;Y28;K"LF" C;X1;Y29;K"〃" C;X5;Y29;K"(シード)" C;X1;Y30;K"〃" C;X6;Y30;K"(ホーマー(再掲))" C;X1;Y32;K"[Sequel story actors]" C;X4;Y32;K"(夢子[ミルカ])" C;X6;Y32;K"(ライラ)" C;X7;Y32;K105 C;X8;Y32;K"'=x;; 106=s(x)" C;X1;Y33;K"〃" C;X4;Y33;K"(美希[テトラ])" C;X6;Y33;K"(タナキョー)" C;X7;Y33;K14 C;X1;Y34;K"〃" C;X4;Y34;K"(愛[?ユーリ])" C;X6;Y34;K"(西野)" C;X7;Y34;K101 C;X7;Y36;K"⑨" C;X8;Y36;K"(長月)(チルノ)" E begin-base64 664 MaiItsuMeetsYsSevenBasedED6-3-3.tgz H4sIAAAAAAACC+1d63MTRxLna/grBl1dYV+QtC+9bMuJsU2FHAYKzF1yLo5aa1fWhtWusrvC+FJX haQL4WVILlC+BMI7YCCEBIoAiROqLt/vj8jGxnzKv3A9sytLtmVbGhlFlnYL27uzMz3T3b/p6Z7H MiQqOy0zOyTLlvmuuV8+ImvbRVOWBgfCft7PB46mrLS6qb6LZZhwOIw2MeQq/UX4YjlW4ELwhwlx PBeJhEKQFg5xAuTb1IAra1qiAU16O6u9p+zu+3Pf2zuH+ja1zdXzxtG0io7IhqnoWtzHBhgfkrWE LinaWNx3YHiHP+p7o3dzz5aBPf3D7+4dRBgPmxHae2D7rp39yOcPBv/K9weDA8MD6J23hod2ITbA ooyaNdGQaKXgmQswweDgbh/ypSwr0xUMjo+PB8b5gG6MBXEWXDSYhpu0ygUJ3Pz4iWX9yYBkST6o HCciaKdmxisQYWOxmFPQ19uzxe8fTikmSiqqjMZFEyV0DbizZAlZOiK50OgE2pORtT3JpJKQMQnk R6YsI5c0VBTQ4b2+8D6oS0nOKZvUDZTWDRkpWlIP+P29PSlZlFDG0HGNC82TsqOqAmI0nPKSnsim Zc0yg1Iirfgt2UibQWhtWrZEUq1ffj+rHIn7+nXNgnz+4YmM7MNtx09xn5jJqEpCtEBHDqevQyO7 USIlGqZsxbNWEtQU7O2xFAvYhnddqoj1J2v+A/t9vX6k6ch5Z2bkhJJUZKknSBLcNmhiGho/0D88 uG9of4C8Kavet4xksGI5nCMrjpUXdbIjM5GSy3Pu29EvhIXwCnRMPWskyqlUoZkVSIFiwKSJWoKG HzM7+p6csMpKbqtYFFR9GBmyGvcRPsXAQL8PpQw5udDyTNZQHSQkgrIqO1iAnhJ08hXprUCMtGYV ii6eqiIFfXgVShieFmCvOmJ9Q6uSEtMVyJjWBMAQ1xH3WfJRK5gwTejjr72ZAeCgDxD65+bXLHFU xfejuiHJhj+hq6qYMeWu4k138Y2ZERNgqLqYbiSnM9aEPyGrqtllpvRxQkfahqwUEMIWAPqP6hdV ZUzrsvRMN/Rk6Gem8g+5i2UyVjdkT7HbUIqDHx5+BPgJwU8YiidUWTS6RnWgBdl0dRvKqpCcFo0x RcOVZ0RJctoB71UF3qmKCdQxr13Q+TRo8gq5scVCPigDvGgBgPMuZVCTfGCSdg6iCFJMMyuDmSFk SZaF9iDcoG6oSZP9KVkZS1mY+LgiWSl8U0qqVDNmhJBL6rql6ZK8O5selQ0g7ubxG6Q4K6dLeUVN 0y1ihQ4R1g6NThwCs2eRciV5xkJ/dMWbFNOKOtHVZygimKtRMXF4zNCzmoRVqhtdf0gmk+AJdKOy JjqaXdJY3II/lUscngOWyELSuKFYuLlp4KFLNfzWKGkvvOVWfcuv8nbwKODoEMcc2p4F7vyKhu93 60ZaVIuMrsGZZYgaiMyAfl4CK0GDA4YlgARNWnq6qCm/KidBcQlIWNRC3EPA6Duic5yoZTB2n92q cIu7Ee5mfjMlSvq4Wz1JkWQYn4g2SSragpR0RjcsUSuSGXcgVKSDRZOQsdBr5nflRnMrNLpSA5aJ ZzlnFZSzNrMraKOC8F0RMNXKYLEsTF1VpO4ys1YukxVFFGs+CaUVSVLl1STU1ihxWXNy+Jc8VoKC +2oJ/+5LzMgiMbnpxEBXegHDm7/8vlKNOH1Jda7muEZiuxkVuza4+UoiwoMZXJ54WMFD0FoiCnnm sTHmsZKxXEzceVOZdn2WNNzySl4F6JW0ukg/zau3iNc5f0e9lZN2FRL1Qg425oFyLVBWQOhi6JEX lZG3qjO9HJLcih5gGU3PrDfEPHCM1zXW1ZlqZD/y5gl+P7NG7SFxVZm/to3uuMrzAwzjzQ8Q8Qhe n6ceQNe9K3szERtmJqLC8NnWUwyuDCLt6ou7/EerGW2q4j/cgqFII53ZmDfht3FtKd/eZoRnVuAf G5J24J9taf0392p1hd7Y9svQa04J83xL99i1+RdWdHxq7bHhjcj++kZuYW/mrB7fjw972mgGbRC2 nAaTMotZcnUVaWNduSKItqu34/Ifa1f+q+kgghfHNtUKp8Cs2xTPhuytAtvqBnvN8FTg2lgEVdks vp2NVlUSaut1tzIJ4VZUFFCo7f1CoZ3DmCogEvLW28LrNuuyIdmPeAiItrQ3uib73k7cJlss0Fn3 3Di+ZUr3XOmWL90KpdtQ6TZcuo2UbqOl21jx1ihVZ5SqMBaqIAe69wzsQKSdJhpXrBT+/kLG0DNY zJBkyBlDNgEq5Jy7aKL+/fsROeT9AaEQJEV7e4L42xK9PaO6NIEkxYj7VMvwOXTjvrR41O/iAaTS xQWEWCxROkPsyH1ZMoEOGyhPcg96O2m+3h6nVY7A4z7Gh8iheuek/cKzezjbeVZF04z7LJGF0qBo 3DEy5M45jR73sVEBn/0vS+EYdmkKF1qWh1uSwoaX5mFj/JKUZQmcwC4rFFmawhDCwVLrLaPIFygc S0UqCn6JmwAyK+ZMyJDzv1d7gpbUu9kr0QQlhFCNRVY5+r9ACX4ZmJyHEA8hrwYhPZnePsMy+zSp 3xCTltkTzPTWKgeg4X7Qi7L0kPNpMMrSytCb+ymLkm+PdUQ6aYrXqH0+QmrsT4nG3+TDh+lk1YY2 KeZZmBZACFc1QjjSTez8t3bhU7vwqPZewhACv0ydtvPX7fxNO//ELtwI4j/5b+zCPbswQ0U21qzI BWY77PwPduErLDHM5vSa9ow44t1okX2KElKhFjJL1YOOd0BXuIvRkX9WuwwoNBepvcgCtPd22Lkn du6anfvJzn22BdB9y87fBlzbhRPQ/r2djcA3Fy6C7y6WXB761Qw8TNuFy500COScETJMOZabHaHa 2W5e+zcNerQLx8Fi1WUCH2CTh43C7Q67cBXTzD+3Cxfs/LXGYERwMDL3ny9f3vqs9ioXMFa4j215 4SQFiUgRpg8ITH+08w/twhmQRu20+Jgj2U9uU4J09typ2SdfdETnLp3otHP37NwDOwdtOmPnPqfC LpCc/+QkULNz0y8vPCE35+3cFWIYLpEapuzcLfI4hdOP5Wusp1GAL0yTkfpLGLVrly1XAvw0AfyD RhrA2cnC3NSdRgQRRSzPX5ysY4xneUr0vrNz586mNbFsjYjb2kFcpkcUeuPLXczCSSob3bRxjWNu 7xBzmYMBo46hnA3RAu0vLQAzYcGpJCEICTwogCKUwAZwLThWsvZRkNmYEWslcDlmlxPacgYl5PqH T4jDD930OwKsk7ULI1S7tsqw+BSP1ZSBNDExuTw4PXbuQieljXBCDehcN6gpgMc0/80TcMiCxLkE MX5UDblVMMlxlG3BbiD21p4Tbw28QvB3T7dQOENCRDw/MV2PBSxcdmd0CPZrN4L0HtfLH/796/cX GuLjhWlsotPMWJhty/mb4lB7hRilO9CV60LZSTv/dQuNsCQAf3h97tJ0kIRZzjTo8fpMXSzMUU/U AEw7acNd+xgEyzD+5EmU+8w+NmnnrkL0a+eP4RA3P1lua0hw/amdu23nPrNzZ5ow+uXLJifuk9nH md9mTjvaAU4oDE64dotTCp8LJ6AZI798+KlduEUGxLuvw8P8XbC7p+ZOnj5IPdzPfTcz8r/HJUIU cy9MMTahlg1flHbhFOYv/7ye2Iahnagc3rNvTwuEN253xDi5SzVpE6nH/yycJ+7fTONibwc4V4re x71X4AusZm35tox2wq77CNHGbbLCUAAT1QiocWVzPM/s/Pd2/n7tHkG0aNwfk/hi0ukpI7P3b81d vTZ77uncxacHO4MdLy5dacgOBKEI4ouk41yG37/NfFHsSmT0KZymMYmCY5ojlAZx6/bBXcGfp7bv eafjwOtcmGWadx2Hr3VJEa9Bf9VA2JYN5cfdJeHcBfCBGmok75CVyI9oQ3Pq6CfKLK4uoePdpFrc x/mqApFQ3KKjjcnk/18bTulZU9Qk9G7N+3VeuefojL9bf5uZdP41IjQVaOPnl99PzZ970JEx5GHd 0GQK141d5P1hR/k59bzPr0/vz377LVk/v1CXCxgSKJvw8xREQVGm6ResDX28lh4UWa4kEs2cJBHn 0qWWGomz0cWsU7YtN2PnboDu99bXGs4NbOZPXB5JKZIkawfrZE9YtIgJnsK92cnPZ2/U7t/yIXdd 8utzsw+vUQ3oDkoFLibEwmGerT3Ucbc7bo1zf+c5/zLL3HxDeo1jBe94plvZqCCEI4LARPgIEwuF mDBfl7DCQlMLq/Z1iuvE771Dtauq9tGmvjUNsn2qcLch88ru3oG5+7fmp27WMQ8XZdi2jAyjpcjw UYMDQjy7WICAkGaamWvknO/0szqAxdJ6Vz9P7Rsc7mwBE9YIVVG41N5u9eYJwhzIW7ImmeiIkrCU dINWCIntw2sGtFsqXzx+/OLj47Slna1TI798eL6etYF65kO94zNeCe9I3+8zZrm+6/wPk7NP783+ +Ix6X/evM6dePDtPvys87yyZXm/oWgzLRWhbPDC4a8P7RdWQ39xkaH31RdjmrGRDgQefRR7uR5Yh KposI11D+97ue6sBAz29CXx55fkIOatz0/l9kNoUkvKPqELKBWv4I7GG0/UEfQxl1LdrR2sEfGSH UaEpMVfH6dAnzh7hzhbhy0NOE58cKW0u6Jg9Pjl39mFnc8LOi+68EhvTzIzsl9/PyioU0I0JJCbg j3mwWQ0PWYi8eX32/scjZH/2PTt/72CDLMLCUbab8JvGK2KL6/y0O5viR7sRy4TjZsfRVjic3vTD HNb4i5/Ozj49M0I2QJ0AxTcUbfh0/SkyL3EbRsA6MCe05UGORgKMcmKArKz96yKe+17YJE8Z9tFh bP7L5y8/OltXkMc2orlNia4WmW5q1hkqDybtBxPB3RnxyTT11JXz6ZLODvzFAbxT8OzG3wG+ftPk HiWPUqMpecD3KLUv8OEX/jJ5PR8o51b8QPmq3/9ez072ivvwekmKbzNJBfFH9vEX96202rvJu7zL u7yr9a//A8aHG+AAqgAA ====
やー。面倒でした。
古い情報だと Outlook Express を経由しろと書いてあるので、後継であるらしいWindows Live Mail を経由して(Windows Live Mail からエクスポートする方法で)
Outlook に移行したのだが、どういうわけか宛名が文字列として移行されてしまい、xxx@example.com というメールアドレスの移行ができなかったんです。
で eml → msg もしくは pst 形式への変換ソフトを探すのですが、無料のものが見つからなくてあんまり情報もありませんでした。が、ありましたよ!お兄さん。
====
MAPI data collection and parsing tool. Supports property tag lookup, error translation, smart view processing, rule tables, ACL tables, contents tables, and MAPI<->MIME conversion. MrMAPI currently knows: 3916 property tags 801 dispids 35 types 58 guids 148 errors 27 smart view parsers Usage: MrMAPI -? MrMAPI [-Search] [-Dispids] [-Number] [-Type <type>] <property number>|<property name> MrMAPI -Guids MrMAPI -Error <error> MrMAPI -ParserType <type> -Input <input file> [-Binary] [-Output <output file>] MrMAPI -Flag <flag value> [-Dispids] [-Number] <property number>|<property name> MrMAPI -Rules [-Profile <profile>] [-Folder <folder>] MrMAPI -Acl [-Profile <profile>] [-Folder <folder>] MrMAPI [-Contents | -HiddenContents] [-Profile <profile>] [-Folder <folder>] [-Output <output directory>] [-Subject <subject>] [-MessageClass <message class>] [-MSG] [-List] MrMAPI -ChildFolders [-Profile <profile>] [-Folder <folder>] MrMAPI -XML -Input <path to input file> -Output <path to output file> MrMAPI -FID [fid] [-MID [mid]] [-Profile <profile>] MrMAPI -MAPI | -MIME -Input <path to input file> -Output <path to output file> [-CCSFFlags <conversion flags>] [-RFC822] [-Wrap <Decimal number of characters>] [-Encoding <Decimal number indicating encoding>] [-AddressBook] [-Unicode] [-Charset CodePage CharSetType CharSetApplyType] All switches may be shortened if the intended switch is unambiguous. For example, -T may be used instead of -Type. Help: -? Display expanded help. Property Tag Lookup: -S (or -Search) Perform substring search. With no parameters prints all known properties. -D (or -Dispids) Search dispids. -N (or -Number) Number is in decimal. Ignored for non-numbers. -T (or -Type) Print information on specified type. With no parameters prints list of known types. When combined with -S, restrict output to given type. -G (or -Guids) Display list of known guids. Flag Lookup: -Fl (or -Flag) Look up flags for specified property. May be combined with -D and -N switches, but all flag values must be in hex. Error Parsing: -E (or -Error) Map an error code to its name and vice versa. May be combined with -S and -N switches. Smart View Parsing: -P (or -ParserType) Parser type (number). See list below for supported parsers. -B (or -Binary) Input file is binary. Default is hex encoded text. Rules Table: -R (or -Rules) Output rules table. Profile optional. ACL Table: -A (or -Acl) Output ACL table. Profile optional. Contents Table: -C (or -Contents) Output contents table. May be combined with -H. Profile optional. -H (or -HiddenContents) Output associated contents table. May be combined with -C. Profile optional -Su (or -Subject) Subject of messages to output. -Me (or -MessageClass) Message class of messages to output. -Ms (or -MSG) Output as .MSG instead of XML. -L (or -List) List details to screen and do not output files. Child Folders: -Chi (or -ChildFolders) Display child folders of selected folder. MSG File Properties -X (or -XML) Output properties of an MSG file as XML. MID/FID Lookup -Fi (or -FID) Folder ID (FID) to search for. If -FID is specified without a FID, search/display all folders -Mid (or -MID) Message ID (MID) to search for. If -MID is specified without a MID, display all messages in folders specified by the FID parameter. MAPI <-> MIME Conversion: -Ma (or -MAPI) Convert an EML file to MAPI format (MSG file). -Mi (or -MIME) Convert an MSG file to MIME format (EML file). -I (or -Input) Indicates the input file for conversion, either a MIME-formatted EML file or an MSG file. -O (or -Output) Indicates the output file for the convertion. -Cc (or -CCSFFlags) Indicates specific flags to pass to the converter. Available values (these may be OR'ed together): MIME -> MAPI: CCSF_SMTP: 0x02 CCSF_INCLUDE_BCC: 0x20 CCSF_USE_RTF: 0x80 MAPI -> MIME: CCSF_NOHEADERS: 0x0004 CCSF_USE_TNEF: 0x0010 CCSF_8BITHEADERS: 0x0040 CCSF_PLAIN_TEXT_ONLY: 0x1000 CCSF_NO_MSGID: 0x4000 CCSF_EMBEDDED_MESSAGE: 0x8000 -Rf (or -RFC822) (MAPI->MIME only) Indicates the EML should be generated in RFC822 format. If not present, RFC1521 is used instead. -W (or -Wrap) (MAPI->MIME only) Indicates the maximum number of characters in each line in the generated EML. Default value is 74. A value of 0 indicates no wrapping. -En (or -Encoding) (MAPI->MIME only) Indicates the encoding type to use. Supported values are: 1 - Base64 2 - UUENCODE 3 - Quoted-Printable 4 - 7bit (DEFAULT) 5 - 8bit -Ad (or -AddressBook) Pass MAPI Address Book into converter. Profile optional. -U (or -Unicode) (MIME->MAPI only) The resulting MSG file should be unicode. -Ch (or -Charset) (MIME->MAPI only) Character set - three required parameters: CodePage - common values (others supported) 1252 - CP_USASCII - Indicates the USASCII character set, Windows code page 1252 1200 - CP_UNICODE - Indicates the Unicode character set, Windows code page 1200 50932 - CP_JAUTODETECT - Indicates Japanese auto-detect (50932) 50949 - CP_KAUTODETECT - Indicates Korean auto-detect (50949) 50221 - CP_ISO2022JPESC - Indicates the Internet character set ISO-2022-JP-ESC 50222 - CP_ISO2022JPSIO - Indicates the Internet character set ISO-2022-JP-SIO CharSetType - supported values (see CHARSETTYPE) 0 - CHARSET_BODY 1 - CHARSET_HEADER 2 - CHARSET_WEB CharSetApplyType - supported values (see CSETAPPLYTYPE) 0 - CSET_APPLY_UNTAGGED 1 - CSET_APPLY_ALL 2 - CSET_APPLY_TAG_ALL Universal Options: -I (or -Input) Input file. -O (or -Output) Output file or directory. -F (or -Folder) Folder to scan. Default is Inbox. See list below for supported folders. Folders may also be specified by path: "Top of Information Store\Calendar" Path may be preceeded by entry IDs for special folders using @ notation: "@PR_IPM_SUBTREE_ENTRYID\Calendar" MrMAPI's special folder constants may also be used: "@12\Calendar" "@1" -Pr (or -Profile) Profile for MAPILogonEx. -M (or -MoreProperties) More properties. Tries harder to get stream properties. May take longer. -No (or -NoAddins) No Addins. Don't load any add-ins. -On (or -Online) Online mode. Bypass cached mode. -V (or -Verbose) Verbose. Turn on all debug output. Smart View Parsers: 1 Additional Ren Entry IDs Ex 2 Appointment Recurrence Pattern 3 Conversation Index 4 Entry Id 5 Entry List 6 Extended Folder Flags 7 Extended Rule Condition 8 Flat Entry List 9 Folder User Fields Stream 10 Global Object Id 11 Property 12 Property Definition Stream 13 Recipient Row Stream 14 Recurrence Pattern 15 Report Tag 16 Restriction 17 Rule Condition 18 Search Folder Definition 19 Security Descriptor 20 SID 21 Task Assigners 22 Time Zone 23 Time Zone Definition 24 Web View Persistence Object Stream 25 Nickname Cache 26 Encode Entry ID 27 Decode Entry ID Folders: 1 Calendar 2 Contacts 3 Journal 4 Notes 5 Tasks 6 Reminders 7 Drafts 8 Sent Items 9 Outbox 10 Deleted Items 11 Finder 12 IPM_SUBTREE 13 Inbox 14 Local Freebusy 15 Conflicts 16 Sync Issues 17 Local Failures 18 Server Failures 19 Junk E-mail Examples: MrMAPI PR_DISPLAY_NAME MrMAPI 0x3001001e MrMAPI 3001001e MrMAPI 3001 MrMAPI -n 12289 MrMAPI -t PT_LONG MrMAPI -t 3102 MrMAPI -t MrMAPI -s display MrMAPI -s display -t PT_LONG MrMAPI -t 102 -s display MrMAPI -d dispidReminderTime MrMAPI -d 0x8502 MrMAPI -d -s reminder MrMAPI -d -n 34050 MrMAPI -p 17 -i webview.txt -o parsed.txt
via http://b.hatena.ne.jp/torin/20110614#bookmark-46762850
// ==UserScript== // ==/UserScript== (function(){ if (null != window.frameElement) return false; if (! location.pathname.match(/^\/li\//)) return false; window.addEventListener('DOMContentLoaded', function() { var curator = document.querySelector('div.balloon_box.info_prof div.balloon_img.tltip').getAttribute('title').toLowerCase(); var tweeters = document.querySelectorAll('div.tweet_box div.status div.status_right a.status_name'); var len = tweeters.length; var tweeter = ''; for (var i = 0; i < len; i++) { if(curator != tweeters.item(i).textContent.toLowerCase()) { break; } } if (i >= len) { var data = 'data:image/png;base64,'+ 'iVBORw0KGgoAAAANSUhEUgAAAKQAAAA9CAYAAAAj3MLKAAAACXBIWXMAAA7DAAAOwwHHb6hkAAAC'+ 'vUlEQVR4nO2YS27DMAxEffNerOteq0UDFEgXkinxMyN6FrOKYT0On5Ki18fX56UoLIEDKMp7Yl92'+ 'Xd9/SYWenFPFoCTtNuxFbyJkCjE7p4pByUuJKKHAErJ1UkXJEEJC9k66LNFSSMjeiX9hspTMQuoi'+ 'BHSYvZjoJbEKib4MXVK6oIglScjeKV+Sd1ESsncgi/IsS0L2DmxZuwuTkL1Td1CQlBKyd2oPC5BS'+ 'QvZO/YFOKauFHPF6g148azCHOpZUKWSWjBKTTEiPlN2ElJQkQu5KKSF7Bw/glHLlM0nJn9LS0am+'+ 'WFEX8El5jIzZi185y/Iseh4JKSHdu0DLJCGJFmY97+QZS4SsKIkhBTebQsjTxYQDrCwNzeUVstsl'+ 'fIyQJ0oZJWRUT+x9DedBA+yUjeayslbJ00lKOMBu2WguC2e1NKd0NZ0BDdClaI+QT+tqyo8G6FL0'+ 'jK3655S5p1t2NIC3aJayd4R8Yk+37GiALmWPmFC8jB2ZuNEAUWWjC5/9LCM4I8/OmGF4gdFyMRSe'+ 'yYNkjDg7Y45pP2ixMiRgYkGySUgiEVg42Jgi50rpCi1UpgwMDGzf2pFzpXS1W/ApYRASIWMrIdES'+ 'dRISJWOUkJHvsbyzrYgS8sz/RbYW8skyHi8kWp5uMjIsn5HJLSQakD0SMph5Vioajj0s39JWNnRf'+ 'Ju6T4dkWztQhG4+Z+2R4pmUzdcjGs8Q+GgANxhwJmcg+GgANxhqrjKgOmVi2+EdDoMEYsyIjokMW'+ 'DtcMo0HQYGy5Ew/dIdPFcM3BUOYJYRayi4yvWWYDoeFYYlk4qr9OMr7muRsMDQgtZ+FvRDYh0d1t'+ 'z2Mtv0syZEQJ2U3Gf0JKSruQ1ucRMkrIA+NZ+MrzktEp5FPE3F165POScUHIzlLuLj/j+Ugh0SKl'+ 'C6lwprOMr/nQAMrG0prK+JsfF3m2CCi6mVcAAAAASUVORK5CYII='; var div = document.createElement('div'); var img = document.createElement('img'); img.setAttribute('class', 'za-wa'); img.src = data; function remimg() { var rem = document.querySelector('img.za-wa'); if(rem) { window.setInterval(function() { rem.style.opacity -= 0.05; if (rem.style.opacity == 0) { document.body.removeChild(rem); return; } }, 100); } } function addimg() { var c_img = img.cloneNode(false); c_img.style.position = 'fixed'; c_img.style.top = Math.floor(Math.random() * 100) + '%'; var leftp = Math.floor(Math.random() * 100); if(leftp < 50) { leftp = Math.floor(leftp / 4); } else { leftp = 100 - Math.floor(leftp / 4); } leftp += '%'; var ratio = (120 - Math.floor(Math.random() * 70)); c_img.style.left = leftp; c_img.style.zIndex = -1; c_img.style.opacity = 1; c_img.style.width = (Math.floor(164 * ratio / 100)) + 'px'; c_img.style.height = (Math.floor(61 * ratio / 100)) + 'px'; document.body.appendChild(c_img); var r = Math.floor(Math.random() * 1000) + 1000; window.setTimeout(addimg, r); window.setTimeout(remimg, 2500); } addimg(); } }, false); })();
Greased Lightboxとは画像リンクをクリックするとページを移動することなくリンク先の画像を見ることができるという便利なユーザースクリプトである。たぶんGreasemonkey上で動くからGreasedという名前なのだろう。ちなみにOperaでも使える。
でGreased Lightboxが動作すると画像以外は暗くなり、画像が見やすくなるのだが黒いPC画面というのはあまり見たいものではない。画像の後ろに自分の顔が映ると萎える。というわけでこの黒い半透明の背景を白くしようと思った。
とりあえずgreasedlightbox.user.jsの色を表している部分を全部白にしてみたが背景は変わらなかった。どうやら背景は色を指定して表示しているのではなく、画像を直接指定して表示しているらしい。その画像を表す部分を見つけた。
var pngOverlay= "url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAABGdBTUEAAK%2FINwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAAPSURBVHjaYmJgYDgDEGAAANsAz1TKIeAAAAAASUVORK5CYII%3D')";
これを見るとbase64がカギを握っていそうだ。Wikipediaによると
Base64は、データを64種類の印字可能な英数字のみを用いて、それ以外の文字を扱うことの出来ない通信環境にてマルチバイト文字やバイナリデータを扱うためのエンコード方式である。
ということらしい。意味不明の文字列が半透明の黒い画像を表しているということだろう。ということは半透明の白い画像を表す文字列と置き換えれば背景を変えることができる。というわけでGIMPを使って白い色の透過PNG(1px四方)を作った。 次にこのページ( http://sveinbjorn.org/dataurlmaker )でその画像を文字列(Base64形式)に変えた。そしてgreasedlightbox.user.jsの先程の文字列と置き換えた。
変更前
var pngOverlay= "url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAABGdBTUEAAK%2FINwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAAPSURBVHjaYmJgYDgDEGAAANsAz1TKIeAAAAAASUVORK5CYII%3D')";
変更後
var pngOverlay= "url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAAZiS0dEAAAAAAAA+UO7fwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9sDHg0AJ+6ZOggAAAANSURBVAjXY/j//38kAAlVA1faOaSqAAAAAElFTkSuQmCC')";
こうしてGreased Lightboxの背景が白い半透明になった。かなり薄めだがGreased Lightboxが動作していると分かればいいのでこの程度の濃さで充分かな。
コメント欄とかトラックバックが開いてるわけないもんなあ。開いてたら歌詞とかmidiをbase64にしたやつとか尻集を大量につっこめばよいかしらん。でJASRACやACCSに通報。それともエンコードした児童ポルノ突っ込むか?まあ普通開いてないからダメだ。
既存ブログからまるまる複製してアフィ先変更するタイプなら汎用攻撃手段「著作権」を使って運営に通報しまくるしかないわな。コピー元を発見して、コピー先を特定して、コピー元の方に連絡を取って、ブログ提供業者へ連絡を入れてもらう?めんどくっせえなあ。
ブログ潰すよりか「金にならない」方へ誘導する方が良いか。Googleやyahooに「スプログ引っかかってウぜーんだけどどうにかして」って意見を継続的に出したり楽天やAmazonへ「迷惑行為してるこの人のアカウントを停止していただけないでしょうか」ってお願いして回る?他力本願くせえけど。
でも俺Googleで検索しててスプログにぶつかったことないんだけど。偉いなグーグル。yahooは使ってないから知らん。スプログ見たのってうぜえ検索トラックバックとかがとんできた時ぐらいだ。
なんにせよあっちはツール(ワードサラダとかいうんだっけ?)で自動、こっちは手動じゃまにあわんわなあ。田代砲撃ったってこたえるのはホスティング業者でスプログ野郎じゃないしなあ。てゆっかとてもわかりやすく業務妨害だし。たとえ炎上したってそもそも自分の作ったブログ見てねえんだから、あいつら。
つっかそもそもみんなスプログからもの買うんか?日本語の体をなしてないようなスプログから。怖くてリンク踏めなくねえ?例のとこじゃブログ7千個で4千万とかいってるけど、俺はてダで自分が買ったものに感想つきでアフィリエイトのんびりはってる日記作ってて、数年でのトータル千円もいかねえんだけど。ホントかよ4千万て。
あの金持ちヒゲ野郎(色々な意味でうらやましいぞ)みたいに一点集中でかつ顔出して識者パワー見せつつ頻繁に熱心に紹介するんなら、もの買うのもわかるんだけどさあ。
なあ、「スプログつくったら儲かるよ!」っての情報商材っぽくねえ?スプログ作成マニュアルとツールを売るという形の一種のネズミ講。本当は大して儲からないのに、儲かることになってないと困る奴がいるんじゃねえ?
http://anond.hatelabo.jp/20070508170219 こいつをアセンブラで書こうとしていたが、
すでに
http://anond.hatelabo.jp/20070510170511 にそれっぽいものが書かれていた。
しかしデクリメントした直後に判定するならフラグですむがそうじゃないときはtest命令入れないといけないのでうまくいかんと思った。
とりあえず8086アセンブラで書いてみたが長くなったので実行ファイル(fizzbuzz.com)をBase64で下に書いておくよ。
~) ls -al fizzbuzz.com -a--rwx 98 May 11 03:28 fizzbuzz.com* ~) base64 < fizzbuzz.com uwUDuQoJvl0B/s91ErcD/st1BrpSAesOkLpLAesWkP7LdQi6VgGzBesKkLg6OivBiQSL1rQJzSH+ zXXNtQr+yXXHulYBzSG0TM0hRml6eg0KJEZpenpCdXp6DQokVU0NCiQ=
数字の表示の処理で10で割った余りを使っていたのでまずいと思って修正した。ついでに98バイトまで縮めてみた。
こんなことに時間を使っている俺はバカだ。
ソースも載せとこう。8086なんてほとんど初めてに等しいので汚いだろうけど。
CODE SEGMENT ASSUME CS:CODE,DS:CODE ORG 100H START: mov bx, 0305h mov cx, 090Ah mov si, OFFSET NUM LOOP: dec bh jnz skip1 ; 3の倍数だった mov bh, 3 dec bl jnz skip2 ; 3の倍数で5の倍数だった mov dx, OFFSET FIZZBUZZ jmp loop5 skip2: ; 3の倍数で5の倍数じゃなかった mov dx, OFFSET FIZZ jmp loopend skip1: ; 3の倍数じゃないとき dec bl jnz skip3 ; 3の倍数じゃなくて5の倍数だった mov dx, OFFSET BUZZ loop5: mov bl, 5 jmp loopend skip3: ; 3の倍数じゃなくて5の倍数でもなかった ; 数字を表示する。2桁でいい mov ax, 3A3Ah sub ax, cx mov [si],ax mov dx, si loopend: mov ah,9 int 21h dec ch jne loop mov ch,10 dec cl jne loop ; 最後のBuzzを表示する mov dx, OFFSET BUZZ int 21h mov ax, 4c00H int 21h FIZZ: DB 'Fizz', 0dh, 0ah, '$' FIZZBUZZ: DB 'Fizz' BUZZ: DB 'Buzz', 0dh, 0ah, '$' NUM: DB 'UM', 0dh, 0ah, '$' CODE ENDS END START