2015年5月1日 12:00

[MineCraftPE] マインクラフトPEのサーバをさくらのVPSに立ててみた

Posted by


 モバイル端末向けのマインクラフトであるMinecraft Pocket Edition用のサーバを立ててみたのでメモ。

 公式には、アプリ内のローカルサーバ機能以外にサーバ単体のサポートはしていないようなので、外部ツールのPocketMineを使ってサーバを立ててた。

    【用意した環境】

  • さくらのVPS(1G) - 値段とバランスからとりあえず1Gにしてみた。OSはデフォルトのCentOS6.5 http://vps.sakura.ad.jp/
  • PocketMine - プラグインが使えるっぽい。ただし、mob(敵や動物)の自動発生は未実装。公式にサーバは出てなさそう? http://www.pocketmine.net/

1 Pocketmineサイトを確認
http://www.pocketmine.net/のページにアクセスして、[ダウンロードボタン]→[Linuxタブ]を選択。
mcpe1mcpe2
 事前にサーバにインストールするものと、Pocketmineをインストールするためのコマンドが書いてあるのでチェック。

2 サーバの用意
(1)さくらのVPSを契約(2週間無料体験)。
(2)最初は立ち上がっていないようなので、さくらのVPSのコントロールパネルからサーバを起動。
(3)ヴァーチャルコンソールも付いているけど、文字化けするのでPuTTYごった煮版を入れてrootアカウントで接続。

3 ポートの開放
# vi /etc/sysconfig/iptables

-A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 19132 -j ACCEPT  #この1行を追加して保存[:wq]

4 サーバに必要な物をインストール
公式ページに書いてあったものをインストール。必要なものがたまに変わってるようなので、最新のものをチェックしましょう。
# yum -y install perl gcc g++ make automake libtool autoconf m4

5 一般ユーザの追加
あとrootは必要なさそうなので、一般ユーザを作ってそちらで作業します。
# useradd [ユーザ名]
# passwd [ユーザ名]
New UNIX password: # パスワードを入力
Retype new UNIX password: # パスワードの再入力

ついでに設定を反映させるため再起動。
# reboot

6 Pocketmineのインストール
さっき作った一般ユーザでログイン。
インストールしたいフォルダに移動して、公式ページのコマンドをコピペ
$ wget -q -O – http://get.pocketmine.net/ | bash

3/3ステップ終わって done がでてたら成功

7 Pocketmineの起動
$ ./start.sh
セットアップウィザードが起動する。
(中略)
[?] Language (en): ja  #言語を聞かれるので ja と入力
(中略)
[?] Do you want to skip the set-up wizard? (y/N): y # y と入力
(中略)
11:01:09 [INFO] Done (11.028s)! For help, type “help” or “?” # この表示が出たらサーバが起動できています

stop # 一旦、サーバを停止

8 OP権限の付与
# vi ops.txt
[自分のマイクラPEの名前] #自分のマイクラPEに設定しているユーザ名を入力して、保存。

9 サーバを再度起動
# ./start
(中略)
11:01:09 [INFO] Done (11.028s)! For help, type “help” or “?” # こんな表示が出たればOK

10 マインクラフトPEから接続してみる
Androidのマインクラフトを起動して、[play]→[edit]→[external]を選択
ServerName:自分がわかりやすい好きな名前
Address:さくらのVPSから送られたアドレス 160.16.XX.XX みたいなやつ
Port:19132 (通常は最初から入っている)
[Add Server]を押すと、ワールド一覧にサーバ名が出てくるので、アクセス
なお、wi-fiに繋がないとサーバにつなげません。

家のwi-fi回線が不安定なのかサーバ側がわるいのか、結構ラグや切断があったり、細かい巻き戻りが発生してますが、とりあえず、遊べる感じ。
ドアの開閉がサーバに上手く伝わらなくて開けたり閉めたりしながら部屋に入ったりしてます。



2014年12月7日 11:19

[CTF] SECCON2014 CTF オンライン予選(英語)write-upとかまとめ予定地

Posted by


2014年12月6日0900~7日1700(日本時間)で開催されました。

とりあえず、後で解く用のメモ。write-upは後で

Crypto:100:Easy Cipher
Crypto:200:Decrypt it (Easy)
Crypto:300:Decrypt it (Hard)
Crypto:400:Ms.Fortune? Misfortune. : 4096-bit RSA
Binary:100:Shuffle
Binary:100:Reverse it
Binary:200:Let’s disassemble
Exploit:300:Advanced RISC Machine
Exploit:500:ROP: Impossible
Exploit:400:Holy shellcode
Exploit:500:Japanese super micro-controller
Web:100:jspuzzle
Web:200:REA-JUU WATCH
Web:300:Bleeding “Heartbleed” Test Web
Web:400:Binary Karuta
Web:500:XSS Bonsai (aka. Hakoniwa XSS Reloaded)
QR:200:QR (Easy)
QR:300:SECCON Wars: The Flag Awakens
QR:400:BBQR
Forensics:100:Get the key.txt
Forensics:300:Read it
Forensics:400:UnknownFS
Forensics:500:Confused analyte
Programming:100:Choose the number
Programming:400:The Golden Gate
Network:100:Get the key
Network:300:Get from curious “FTP” server
Network:200:version2

Crypto:100:Easy Cipher

87 101 108 1100011 0157 6d 0145 040 116 0157 100000 0164 104 1100101 32 0123 69 67 0103 1001111 1001110 040 062 060 49 064 100000 0157 110 6c 0151 1101110 101 040 0103 1010100 70 101110 0124 1101000 101 100000 1010011 1000101 67 0103 4f 4e 100000 105 1110011 040 116 1101000 0145 040 1100010 0151 103 103 0145 1110011 0164 100000 1101000 0141 99 6b 1100101 0162 32 0143 111 1101110 1110100 101 0163 0164 040 0151 0156 040 74 0141 1110000 1100001 0156 056 4f 0157 0160 115 44 040 0171 1101111 117 100000 1110111 0141 0156 1110100 32 0164 6f 32 6b 1101110 1101111 1110111 100000 0164 1101000 0145 040 0146 6c 97 1100111 2c 100000 0144 111 110 100111 116 100000 1111001 6f 117 63 0110 1100101 0162 0145 100000 1111001 111 117 100000 97 114 0145 46 1010011 0105 0103 67 79 1001110 123 87 110011 110001 67 110000 1001101 32 55 060 100000 110111 0110 110011 32 53 51 0103 0103 060 0116 040 5a 0117 73 0101 7d 1001000 0141 1110110 1100101 100000 102 0165 0156 33

Crypto:200:Decrypt it (Easy)

cript1.zip

Crypto:300:Decrypt it (Hard)

g^k=69219086192344
20c2.zip

Crypto:400:Ms.Fortune? Misfortune. : 4096-bit RSA

encrypted.gpg is encrypted by 4096-bit RSA algorithm. But I'm sure you can decrypt it.

problem.tar.xz

encrypted.gpgは実際に4096-bit RSAで暗号化されている。 でも、君ならきっと復号できるはずだ。

Binary:100:Shuffle

find the string before randomizing.

shuffle

Binary:100:Reverse it

Reverseit

Binary:200:Let’s disassemble

nc disassemble.quals.seccon.jp 23168

Exploit:300:Advanced RISC Machine

Read flag.txt
http://micro.pwn.seccon.jp/arm/

Exploit:500:ROP: Impossible

ropi.pwn.seccon.jp:10000

以下の擬似コードのように、"/flag"を読み込んでその内容をstdoutに出力せよ

open("/flag", 0);
read(3, buf, 32);
write(1, buf, 32);

【注】実行ファイル"vuln"はIntel Pin tool(ソースコードはnorop.cpp)で守られています。
vuln
norop.cpp
norop_conf

Exploit:400:Holy shellcode

サーバ hebrew.pwn.seccon.jp:10016 から keyword.txt をゲットしよう。

UTF-16LEのヘブライ文字だけで書かれた聖なるシェルコード
http://hebrew.pwn.seccon.jp/nikud/hebrew-utf16le.html
サーバファイル:

stage16
stage16_conf
例:

$ vi holy.nasm
BITS 32
db 0x24,0xFB,0x34,0xFB,0x1E,0xFB,0x1F,0xFB
db 0x0a
$ nasm -f bin holy.nasm -o holy
$ cat holy | nc hebrew.pwn.seccon.jp 10016
ご加護を!

Exploit:500:Japanese super micro-controller

Read flag.txt
http://micro.pwn.seccon.jp/sh/

Web:100:jspuzzle

jspuzzle.zip
You need to fill in all blanks!

Web:200:REA-JUU WATCH

http://reajuu.pwn.seccon.jp/

Web:300:Bleeding “Heartbleed” Test Web

http://bleeding.pwn.seccon.jp/

Web:400:Binary Karuta

http://binkaruta.pwn.seccon.jp/binkaruta/
約35種類のarchからダンプが表示されます。正解を選択してください。
100回連続で解いてください。
60秒でタイムアウトされます。また間違うと60秒のペナルティがあります。

Web:500:XSS Bonsai (aka. Hakoniwa XSS Reloaded)

bonsaiXSS.zip

* This challenge have 2 answers (2 steps).
If you collect 2 answers, you can get full point (500pts).

[#9 "XSS Bonsai" 動作環境について]
Bonsai XSS の問題が上手く動作しない場合は Visual Studio Express 2013 Web (evaluation) か別のバージョンの Visual Studioのインストールした環境で試してみてください。

テストはstage1 で以下を入力してみてください。

";alert('XSS');//

“Congratulation” のアラートウィンドウが表示されステージ2に進めば正常に動作しています。お手数をおかけします。

[#10 "XSS Bonsai" 動作環境について2]
「send」 ボタンを押しても何も動作がしない場合には、IEのセキュリティセッティングのインターネットゾーンの設定を以下の画像のように変更をしてみてください。
http://files.quals.seccon.jp/bonsai_ie_settings.png

QR:200:QR (Easy)

世界一面白いジョーク:
昨晩フランネルケーキを食べる夢を見たんだけど、
朝起きたらQRコードが半分なくなってたんだ!

QR:300:SECCON Wars: The Flag Awakens

# Not need Japanese text to solve this task.
# If you need it ? see below :)
http://pastebin.com/uXByBZv5

QR:400:BBQR

Let's enjoy BBQR!

Forensics:100:Get the key.txt

forensic100.zip

Forensics:300:Read it

Readit

Forensics:400:UnknownFS

このイメージは名状しがたいファイルシステムでフォーマットされています。 私が思うに、このファイルシステムはFATファイルシステムと似ていますが、実際のところ分かりません。
解析して、隠されたキーを探しましょう。
https://seccon2014.b.storage.sakura.ad.jp/unknownfs.zip

Forensics:500:Confused analyte

次のIOC(hoge.jpg)のブラックボックスに当てはまる文字列を入れてください。 (解答形式 SECCON{string})

hoge.zip (pass:infected)

Programming:100:Choose the number

nc number.quals.seccon.jp 31337

sorry fixed URL

Programming:400:The Golden Gate

暗号文と一緒にエンコーダーボードを見つけた。解読を助けて欲しい!
The cipher text: BQDykmgZ0I6SaQnq4o/iEONudetXdPJdpl1UVSlU69oZOtvqnHfinOpcEfIjXy9okkVpsuw2kpKS==

Main: エンコーダーボード写真(GooleDrive)
Mirror: https://seccon2014-online.b.storage.sakura.ad.jp/encoder_board_photos.zip

Network:100:Get the key

nw100.pcap

Network:300:Get from curious “FTP” server

ftp://ftpsv.quals.seccon.jp/

Network:200:version2

もうすぐ version 2 が来るけど準備はいいかい?
srv h2o.pwn.seccon.jp.



2014年7月20日 09:45

[CTF] SECCON2014 CTF オンライン予選(日本語)write-upまとめ予定地

Posted by


SECCON CTF オンライン予選(日本語)にodprojectで出て、1000点51位ぐらいでした。

とりあえず、自分で書くのはあとにして、早い人のwrite-upをメモっておく

バイナリ300:ダンプを追え

他にもまとめ作ってくれてる人がいたのでそっちをみてもいいかも
SECCON 2014 CTF オンライン予選 みんなのWrite-upまとめ – sonickunのブログ



2013年10月30日 00:20

[プログラミング] VS2010のIntelliSense修復メモ

Posted by


Windows XP上でVisual Studio 2010を使用すると、コード補完ツールのIntelliSense(インテリセンス)が機能しなくなるという不具合が発生する場合があるそうです。
手持ちのマシンで試してみたところ、見事に当てはまっていました。
WinXPのサポート終了まで半年を切り、あまり役に立つことはないと思われますが、せっかくですのでその復旧手順を残しておきます。

不具合の再現

まず、こちらで確認できた再現環境は以下の通りになります。
それぞれ最新版のアップデート(2013/10/30現在)を適用しているものとします。
もちろん、この環境を満たせば必ず発生するというわけでも、他の環境では起こらないことを保証するわけでもありません。

  • Windows XP Professional SP3
  • Visual C++ Express 2010 SP1

この状態でVisualStudio2010を起動して適当になコードを打ちこみ、IntelliSenseを起動します。

VS2010でIntelliSenseが機能しない

VS2010でIntelliSenseが機能しない


…反応がありません。
ログを出力するように設定しても、特に何も表示されないようです。

原因はWindowsの更新プログラム

Stack Overflowによれば、2013年9月に配布されたWindowsのアップデートパッチ「KB2876217」の適用後に不具合が発生したようです。

コントロールパネルから「プログラムの追加と削除」を起動し、「プログラムの変更と削除」を選択します。この時、「更新プログラムの表示」にチェックを入れます。
たくさん項目があって見当たらないときは、配信日である2013年9月9日を目安に探してみると良いかもしれません。

WinXPセキュリティ更新プログラム KB2876217

WinXPセキュリティ更新プログラム KB2876217


不具合の直接の原因はともかく、これを削除してみましょう。
ただし、セキュリティパッチを削除するということは、それだけマシンが危険に晒されるということです。可能であれば別の手段(他OSやIDEを使用するなど)を取るべきと思います。

パッチを削除したら、Windowsを再起動します。

復旧確認と自動更新の停止

再起動後、きちんとIntelliSenseが機能しているかチェックしてください。
手元のマシンでは以上の方法で復旧しました。手順自体は簡単ですが、Windowsのパッチに原因があるということに気付かないと、ひたすら再インストールを繰り返して涙目になってしまいます。

Windowsの設定でアップデートを自動にしている場合、KB2876217が再インストールされて元の木阿弥です。
自動更新を切る、あるいは更新の通知が出たときにインストールせずに再通知しないようチェックを入れるようにしましょう。



2013年8月13日 01:09

[Web] Masonryを使ってdivをタイリングする

Posted by


先日、ODプロジェクト総合ウェブサイトのトップページのデザインを修正しました。

段組のレイアウトにするためfloatを使って配置していたのですが、その途中、特定の条件下でデザインが大きく崩れてしまうという問題に直面。
それについての簡単な説明と、僕が取った解決策を以下に記しておきます。

まずは、ざっくりと。

ブロック要素(div等)をを並べて記述すると、縦に連なって表示されることが多いと思われます。
ここでCSSの float:left を指定すると、左から順番に並ぶよう配置されます。

ブロック要素にfloat:leftを指定する(1)

ブロック要素にfloat:leftを指定する(1)


ブラウザの表示領域の右端に到達すると、次からは下に移動します。
ここでは、ブラウザのウィンドウサイズを変更して、その状態を発生させています。
ブロック要素にfloat:leftを指定する(2)

ブロック要素にfloat:leftを指定する(2)


綺麗にタイリングされていますね。
固定デザインには向きませんが、ユーザの環境に合わせて見た目が変化するウェブページの完成です。
ここまでは特に問題ありません。

異なるサイズのブロックを並べる

ですが、これが異なるサイズの場合はどうなるでしょうか。

高さの異なるブロック要素を並べる

高さの異なるブロック要素を並べる

例えばこのような、高さ(height)が異なるブロック要素を用意します。
先ほどと同じように、ウィンドウ幅を狭めてみましょう。

しまった! バラバラに配置されてしまった!

しまった!バラバラに配置されてしまった!

ご覧の通り、酷いことになっています。

もう少し見てみましょう。
1番(赤色)~3番ブロック(黄色)が一列配置され、そこで右端に到達します。
そして4番(緑色)が改行されるわけですが、左端である1番ブロックの下ではなく真下に置かれてしまっています。
これは縦に長い2番ブロック(オレンジ色)に阻まれてしまっている、と考えられます。

同様に5番(水色)と6番(青色)も、2番が邪魔になっています。
6番は上端がほんの少し引っかかっているだけですが、それでもダメです。
そして7番(ピンク色)になって、ようやく阻む物が無くなったので左端に配置されるわけですが、かえってそれが妙な空白を生み出してしまっています。

このレイアウト崩れが気になる場合、手作業で順番や高さを調整すれば良いことになります。
せっかくですし、何か自動的に解決してくれる方法が無いか探してみましょう。

Masonryを導入してみる

……と、探してみましたら、割とあっさり見つかりました。
MasonryというJavaScriptライブラリです。有名みたいですね。
ちなみにMasonは石工という意味らしいです。まさにタイル貼りといったところでしょうか。

JavaScriptライブラリのデファクトスタンダードであるjQueryを導入していれば、このMasonryはプラグインとして簡単に扱うことが出来ます。
もちろん、単独でのMasonry導入も可能とのことです。

<head>
	<script src="jquery-1.10.2.min.js"></script>
	<script src="masonry.pkgd.min.js" ></script>

	<script>
	$(function()
	{
		//タイリング設定
		$('article').masonry(
		{
			itemSelector:	'.itemSelector',
			columnWidth:	100,	//width,margin,border等の合計
		});
	});

	</script>
</head>

2~3行目:
scriptタグでjQueryとMasonryライブラリを読み込みます。

6行目~:
jQuery向けのコードです。

9~13行目:
Masonryの設定を記述しています。
ここでは、HTMLソース内の article 要素をレイアウト領域全体とし、その中のitemSelectorクラスを実際に配置するブロックとしています。
また、columnWidth は1カラムの横幅です。ブロックの横幅にマージン等を加算した数値を記述します。

<article>
	<!--タイリングするブロック-->
	<div class="itemSelector"> 01 </div>
	<div class="itemSelector"> 02 </div>
	<div class="itemSelector"> 03 </div>
	<div class="itemSelector"> 04 </div>
	<div class="itemSelector"> 05 </div>
	<div class="itemSelector"> 06 </div>
	<div class="itemSelector"> 07 </div>
</article>

続けて Body 内を以上のようにコーディングします。
article タグや itemSelector クラスにしていますが、設定さえすれば何でもOKです。
すると、以下のようなレイアウトになります。(実際には更に色指定などを追加しています)

Masonryによるレイアウト

Masonryによるレイアウト

だいぶ整いましたね!
どうやらこちらは、その時点で一番高さの合計が低いカラムを探し(同値の場合は左側を優先)、その下に配置する……というアルゴリズムのようです。

もちろんこれは極端な例ですが、それなりの効果を望めると思います。

注意点など

画像読み込みのタイミング

Masonryでのレイアウトには、各カラムの高さ情報が必要となります。
そのため、画像ファイル等を読み込む場合は、ロードのタイミングによっては綺麗に配置されません。
imgタグにwidth/heightを設定したり、あるいは読み込み完了を検知するライブラリを別途導入するなどで回避できるとのことです。

padding設定

itemSelectorで指定したブロック要素に対し、CSSでpaddingの値を設定しようとしたところ、上手く行きませんでした。
理由は分かりませんが、このブロック要素の内部に更に

タグでブロックを作り、そちらにmarginなりpaddingなりを設定することで解決できました。