読者です 読者をやめる 読者になる 読者になる

hiragram no blog

iOSとか

YAPC::Asia2015のトートバッグに書いてあるコードをいじいじする #yapcasia

Perl YAPC::Asia

どうもどうも。1日に2度ブログを書くのは初めてです。

YAPC::Asia 2015のお土産でみんなもらったトートバッグにPerlのprint文が書いてありますよね?

f:id:hiragram:20150820224732j:plain

おみやげの内容については、さっき僕が書いた記事を御覧ください。

YAPC::Asia 2015のお土産を紹介するぞー #yapcasia

YAPCにいる最強のPerlプログラマのみなさんはおそらく実行するまでもなく出力を読み取ることができたんだろうなあと思うんですが、僕はPerl力が無いので得体のしれないコードを無防備に実行してしまいました。すみません。

さて、トートバッグに書いてあったコードはこんな感じです。

print 115.117.112.112.111.
114.116.101.100.32.98.
121.32.76.105.118.101.
115.101.110.115.101.32.
73.110.99.46.10;

これらのピリオドで連結された数字一つ一つがアスキーコードで、それぞれがアルファベット1文字に対応しています。

アスキーコードについてはWikipediaを。

ASCII - Wikipedia

ほかにも色々試してみた。

#!/usr/bin/perl

use strict;
use warnings;

print 115.117; # -> 115.117
print "\n";

print 115.117.112.
112.111.
114.116.101.100; # -> sup112.111rted
print "\n";

print 115 . 117 . 112 . 112 . 111; # -> 115117112112111
print "\n";

print 192.168.0.1; # -> �
print "\n";

結合する数字が2つだと小数点、スペースが入ると文字列結合とみなされる。

以下のコードで任意の文字列が表示されるYAPCトートバッグが作れるはずです。

#!/usr/bin/perl

use strict;
use warnings;

my $message = $ARGV[0];
my @ascii = unpack("C*", $message);
print "print ". join('.', @ascii). ";\n";

引数に文字列を渡します。

$ perl yapc.pl "にっこにっこにー♪
あなたのハートににこにこにー♪
笑顔届ける矢澤にこにこー♪
にこにーって覚えてラブにこー♪"
print 227.129.171.227.129.163.227.129.147.227.129.171.227.129.163.227.129.147.227.129.171.227.131.188.226.153.170.10.227.129.130.227.129.170.227.129.159.227.129.174.227.131.143.227.131.188.227.131.136.227.129.171.227.129.171.227.129.147.227.129.171.227.129.147.227.129.171.227.131.188.226.153.170.10.231.172.145.233.161.148.229.177.138.227.129.145.227.130.139.231.159.162.230.190.164.227.129.171.227.129.147.227.129.171.227.129.147.227.131.188.226.153.170.10.227.129.171.227.129.147.227.129.171.227.131.188.227.129.163.227.129.166.232.166.154.227.129.136.227.129.166.227.131.169.227.131.150.227.129.171.227.129.147.227.131.188.226.153.170;

確認します。

$ perl -e "print 227.129.171.227.129.163.227.129.147.227.129.171.227.129.163.227.129.147.227.129.171.227.131.188.226.153.170.10.227.129.130.227.129.170.227.129.159.227.129.174.227.131.143.227.131.188.227.131.136.227.129.171.227.129.171.227.129.147.227.129.171.227.129.147.227.129.171.227.131.188.226.153.170.10.231.172.145.233.161.148.229.177.138.227.129.145.227.130.139.231.159.162.230.190.164.227.129.171.227.129.147.227.129.171.227.129.147.227.131.188.226.153.170.10.227.129.171.227.129.147.227.129.171.227.131.188.227.129.163.227.129.166.232.166.154.227.129.136.227.129.166.227.131.169.227.131.150.227.129.171.227.129.147.227.131.188.226.153.170;"
にっこにっこにー♪
あなたのハートににこにこにー♪
笑顔届ける矢澤にこにこー♪
にこにーって覚えてラブにこー♪

これでトートバッグも作り放題です。

Twitterもよろしく