シャイな女性エンジニアが密かに愛の告白をする10の方法

   このエントリをはてなブックマークに登録    2008/8/27-1

シャイで女性エンジニアな貴女! こんな方法を使った愛の告白はいかがでしょうか?

1. ICMP Echo Requestのボディ部分

ICMP Echo Requestのペイロード部分に愛の告白文を挿入して送信してみましょう。 長い文章は1パケットに収まらなくなってしまうので、文章は短く簡潔にまとめましょう。

例えば、「I love you」というメッセージをIPプロトコル番号1番で送信して、彼からのICMP Echo Replyが「I love you too」になっていれば告白成功です。

この方法には注意しなければならない点があります。 「I love you」と書いた文面がそのまま「I love you」と返って来たのを発見してぬか喜びしないようにしましょう。

多くのOSは、ICMPのペイロード部分をそのままコピーして返信します。 そのため、「I love you」と書いて「I love you」と返って来るのは脊髄反射でしかありません。

重要なのは本能ではなく、心からの返答です。 相手がパケットを解析して、そのペイロード部分を微妙に変更して返してくれた事を確認しましょう。

なお、最近はセキュリティ意識の高まりから、パーソナルファイアウォールなどがICMP Echo Requestをブロックしている可能性もあります。 恋の障害は多いのです。

男性側への注意ですが、ICMP Echo Requestに対する返答としてICMP Source Quench(4番)を送ったりすると相手を傷つけます。 そのような行動は取らないようにしましょう。 また、Time Exceed(11番)も失礼になる場合もあります。 「もうちょっと君の事を知りたい!」or「お友達から始めましょう」という場合にはInformation Request(15番)を送ってみるという手もあるかも知れません。

参考 : 好きな人から愛のこもった返信を受け取る方法(WindowsとLinuxによる自作ICMP送信プログラムサンプル)

2. IP header option

ICMP Echo Requestが露骨過ぎて嫌だという方のために、もっとひっそりとした方法があります。 IP header optionです。

IP header optionはあまり使われないフィールドというイメージを持っている人は多いと思われます。 しかし、IP header optionを使うようなプロトコルの開発や研究をしているような彼には最適な方法かも知れません。

いつものようにwireshark(ethereal)でパケット解析をしていたら偶然告白文を発見、なんて素敵なシチュエーションだと思いませんか?

なお、IP header optionを使う方法は人によっては「そんなもの使うなんて美しさがない」と言われてしまいます。 送る相手を選びましょう。

3. TCP OOB Data

「生パケットを生成とか解析とか、ちょっと手をかけ過ぎ!」という発想の方には、もうちょっと手軽な方法があります。

TCP Out-of-band data(帯域外データ)は、TCP/IPによる通常通信を阻害せずに「帯域外」データを送受信できるような仕組みです。

TCP OOBを使って恋の告白を送信するのは非常に簡単です。 単にsendシステムコールのフラグ引数にMSG_OOBを追加するだけです。 linux,*BSD,Windows,Macos X,どれでもTCP OOBを扱えます。

受信側はMSG_OOBフラグを有効にしつつrecv(もしくはrecvfrom)でデータを読み込みます。

いつデータを受信したかを知るにはselectが利用可能です。 selectシステムコールは以下のようなAPIですが、OOBデータが来たかどうかを判断するにはexceptfdsとしている引数を利用します。 該当するファイルディスクリプタをセットしたexceptfdsをselectに渡すとOOBデータの到着を検出できます。



int
select(int nfds,
    fd_set *readfds, fd_set *writefds, fd_set *exceptfds,
    struct timeval *utimeout); 


多くのアプリケーションはexeptfds部分をNULLにして使っていると思われます。 さりげなく彼に「OOBデータを受け取ってしまった時の処理も書いとこうよ!」と囁き、彼がデバッグをしているときにOOBデータを送りつけるというBoys Be的なアプローチはいかがでしょうか。

4. 画像内に透かしで告白文を挿入する

メールに添付した画像に電子透かしを挿入し、その透かしを取り出すと、恋文が出現するという方法もあります。

電子透かし技術は日々開発され続けています。 どの技術を使うかを選ぶというフェーズは非常に大事です。 使っている手法が「カッコイイ」と思えるようなものであれば、彼のハートを射止めやすくなるかも知れません。

電子透かしではありませんが、面倒になった場合にはFLMASK等を使うという手もあります。 FLMASKであれば、画像を見た瞬間に何かがあることが伝わるでしょう。 ただ、FLMASKを使うと情熱が違った意味で伝わり過ぎる事もあり得るのでご注意下さい。 これはFLMASKが悪いのではありません。 一般的な使われ方が悪かったのです。

なお、渡す方法がメール以外もOKです。 例えば、メッセンジャーやその他P2Pアプリによるファイル転送でも可能です。

5. JPEG APPn 内に告白メッセージが入れる

透かしではなく、もっとひっそりと告白文を送りたい方には、JPEGファイルの中に直接文章を埋め込んでしまう方法がお勧めです。

JPEGはデータを各種セクションにして表現しているファイルフォーマットですが、ユーザアプリケーションが内容を定義できる部分があります。 このアプリケーション定義部分に告白文を詰め込んでしまうのです。

アプリケーション定義部分はAPPnと表現されることがあります。 nは0〜15の整数です。

各セクションは16ビットで表現されますが、APPnを表す値は0xffe0〜0xffefです。 注意が必要なのは、APP0(0xffe0)やAPP1(0xffe1)はマナー違反になることです。 0xffe0や0xffe1の利用はやめときましょう。

告白文本体を記述する文字コードとしてはUTF-8あたりが良いかも知れません。 なお、何故UTF-8かに関しての根拠はないのでご注意下さい。

6. PNG tEXtチャンクを使う

メールで送る画像が写真などの画像ではなく、自作漫画など色数が少ないものであり、モスキートノイズが発生してしまうJPEGはちょっと。。。という方にはPNGフォーマットがお勧めです。

PNGフォーマットであれば、tEXtチャンク等が使えます。 基本的な考え方やユースケースはJPEGのAPPnの場合と同様です。

なお、万が一を考えてGIF形式は避けましょう。 もし彼のお爺さんが「GIFは使ってはいかん」という遺言を残していた場合、「お前はGIFを使うのか!」という意味不明な突っ込みをされて告白が失敗する可能性があります。

7. SSDP内 (UPnP)

UPnPはSSDPを利用してネット上にある機器を発見します。 彼がSSDP M-SEARCHを送信したら、すかさず返信しましょう。

例えば、彼が以下のようなSSDP M-SEARCHを239.255.255.250というマルチキャストアドレスに投げたとします。


M-SEARCH * HTTP/1.1\r\n
Host: 239.255.255.250:1900\r\n
Man: "ssdp:discover"\r\n
ST: upnp:rootdevice\r\n
MX: 3\r\n
\r\n

すかさず、以下のようなHTTP 200 OKをUDPで送信しましょう。


HTTP/1.1 200 OK\r\n
Ext: \r\n
Date: Sun, 03 Dec 2010 00:10:20 GMT\r\n
ST: hogehoge:yourlovercandidate\r\n
USN: uuid:aaaaaaaa-bbbb::hogehoge:yourlovercandidate\r\n
Location: http://10.1.2.3:9080/MyDescription.xml
Content-Length: 0\r\n
\r\n

このとき注意しなければいけないのは、送信されたM-SEARCHに記述されているMXの値です。 この値は、「ここまでは返答を待つよ」を秒単位で表したものです。 告白送信は時間との戦いなのです。

告白文本体はLocation:で指定した device description内に記述するのが通例です。 device descriptionには、告白文だけでなく、自己紹介や提供しているサービス内容などもXML化記述する必要があります。

8. HTMLメール内にコメントとして

彼に <!-- 告白文 --> を含むHTMLメールを送信するという手段もあります。

ここまで来るとかなりストレートな方法です。 彼のメーラアプリケーションがHTMLを解釈するかしないかドキドキするというシチュエーションが良いのかも知れません。

9. CVS(SVN) commit時のログ

彼が、共同で開発を行っている同僚や仲間であれば、CVS(subversionも可)のコミットログにひっそりと告白文を書くという手もあります。 デバッグをしているときに偶然発見するぐらいの時限式がストーリーとしては良いのかも知れません。

なお、コミットログがメールで送信される設定になっていれば、関係者全員に通知されることもあります。 公認の仲になることを目指しているのであれば、かまわずやってしまうという手もありますが、密かにやりたい場合にはcommit logはあまりお勧めではないかも知れません。

というか、cvsのlogに書き込むのは大胆過ぎですね。。。

10. 実行ファイル内に埋め込み

「stringsしてね (はーと)」という文章と共にメールで実行ファイルを送ります。 もうここまでストレートだと、男性側は何らかの回答をする必要があります。

ここで注意をしなければいけないのは、相手の実行環境を事前に調べておく必要があることです。

相手の環境で動作しないバイナリを送りつけてしまうと「自分の事をわかってくれていない」と受け止められてしまう可能性があります。 実行しない事が前提であっても、そこら辺は気をつけましょう。

なお、愛のメッセージは4文字以上にすることが望ましいです。 3文字以下だとstringsコマンドが取りこぼす可能性が出てきます。

Cコードのサンプルです。 非常に簡単です。


int
main()
{
  char msg[] = "I love you";
  return 0;
}

gcc -Sでgasを出力したサンプルです。 .stringで "I love you" となっているのがわかります。


    .file   "hage.c"
    .section        .rodata
.LC0:
    .string "I love you"
    .text
    .p2align 2,,3
.globl main
    .type   main, @function
main:
    pushl   %ebp
    movl    %esp, %ebp
    pushl   %edi
    pushl   %esi
    subl    $16, %esp
    andl    $-16, %esp
    movl    $0, %eax
    addl    $15, %eax
    addl    $15, %eax
    shrl    $4, %eax
    sall    $4, %eax
    subl    %eax, %esp
    leal    -24(%ebp), %edi
    movl    $.LC0, %esi
    cld
    movl    $11, %ecx
    rep
    movsb
    movl    $0, %eax
    leal    -8(%ebp), %esp
    popl    %esi
    popl    %edi
    leave
    ret
    .size   main, .-main
    .ident  "GCC: (GNU) 7.6.5 [FreeBSD] 20100826"

なお、実行して意味のあるコードにするという方法もあります。 直接ソースコードを読んでも意味が解析しにくいけど、実行すると告白文が出てくるようなプログラムにすると好感度が上がるかも知れません。 (参考 : ひたすら読みにくいCコード)

最後に

書いといてなんですが、いや、これはない。

というか、これは怖いかも。。。

というか、書き終わって思った。この文章キモイ。

   このエントリをはてなブックマークに登録