記憶

いろいろ書きます

Bash on Ubuntu on WindowsでOpenGL(GLUT)を使う時のメモ

Bash on Ubuntu on Windowsftp://ftp.usa.openbsd.org/pub/OpenBSD/distfiles/glpng-1.45/glpng.zip内のglpng/Example/Test.cを動かしたい。 うまくいくとサンプルのpng画像がクルクル回るらしいが色々あってコケている。

準備

森北出版株式会社刊 「Springs of C」サポートwebページの9番を参考にしてインストールを行います。

動かす(動きません)

glpngを解凍してできたglpng/Example/に移動し次のコマンドを入力。
$ gcc -Wall Test.c -lglpng -lglut -lGLU -lGL

コケる

様々なエラーが出ます。

ヘッダファイルが見つからない

Test.c:9:22: fatal error: gl/glpng.h: No such file or directory
 #include <gl/glpng.h>

ヘッダファイルが無いそうです。よく環境を見ると/usr/include/GLとなっているためglpng/Example/Test.cの#include部分を

#include <GL/glpng.h>

とすると通りました。(#include<gl/glut.h>も存在するためこちらも#include<GL/glut.h>に直します。)

関数を呼び出していなかった

freeglut ERROR: Function <glutCreateWindow> called without first calling 'glutInit'.

glutInitが呼ばれてないらしいです。

先程参考にしたサイトの12番に解決方法が書かれています。

数学ライブラリのリンク

/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/5/../../../../lib/libglpng.a(pngrtran.o): undefined reference to symbol 'pow@@GLIBC_2.2.5'
//lib/x86_64-linux-gnu/libm.so.6: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status

pow(乗算)が定義されてないようです。手動でリンクすればいいっぽい。同じく先程参考にしたサイトの16番に詳しく解決方法が書かれています。

そもそもライブラリ側が間違っていた

/usr/lib/gcc/x86_64-linux-gnu/5/../../../../lib/libglpng.a(glpng.o): In function `pngLoadF':
glpng.c:(.text+0x1069): undefined reference to `glColorTableEXT'
collect2: error: ld returned 1 exit status

libglpng.aの関数pngLoadF内でglColorTableEXTが未定義らしいです。
これはglpng/src/glpng.cが間違っているのでそこを修正してmakeし直すと通るようになります。

//(500行付近)
glColorTableEXT(GL_TEXTURE_2D, GL_RGB8, cols, GL_RGB, GL_UNSIGNED_BYTE, pal);

glColorTable(GL_TEXTURE_2D, GL_RGB8, cols, GL_RGB, GL_UNSIGNED_BYTE, pal);

として

$ make -f Makefile.LINUX
$ cd ../lib
$ sudo cp libglpng.a /usr/lib/

のようにmakeするとTest.cのコンパイルが通ります。

ウィンドウが出ない

freeglut (./a.out): failed to open display ''

ディスプレイを開けないらしいです。 そもそもBash on Ubuntu on WindowsGUIを持っていない(?)ためデフォルトではウィンドウを出すことができないようです。 そのためWindows用のXサーバーを導入することでこれを解決します。

今回使用するXサーバーはXming公式サイトから Xming-6-9-0-31-setup.exeとXming-fonts-x-x-x-x-setup.ext(x-x-x-xはバージョン。2017/10/1現在で7-7-0-10)をダウンロードしてインストール。 インストールが終わったらBash on Windows側で

$ export DISPLAY=localhost:0.0

を実行するとXサーバーの準備は完了です。

これでTest.cのコンパイルと実行ができるようになりました。

補足

exportはbashを閉じるとそこで破棄されるので~/.bash_profileとか~/.bashrcに書いておかないとまたディスプレイがないってエラーが出るので忘れないようにしてください。

参考にしたサイト

HHKB買っていました

当該ツイートです.

届いたのは6月29日ということでだいたい50日使いました.

製品について

amazonです.

Pro2です.BTではありません.

またamazonにはNキーロールオーバーと書いてありますがUSB接続ですので文字キーの同時認識は最大6キーでした. もしかしたらNキーロールオーバーになるモードがあるのかもしれません.

感想とか

無刻印ですが文字入力に関しては通常のqwerty配列のためすぐに打てます.他には矢印などよく使う記号(?)キーはすぐに手が覚えられます.

最初無刻印でキー配置が見れなくて心配…ってなっていましたが普通に慣れました. 配列に関しても英字配列は初めて…とかUnix配列は初めて…などありましたが1ヶ月くらい使っていたらだいたい慣れました.

終わり

打鍵音はけっこう大きいですが打ちやすいのとキーボード打ってる感が出てすごくいい商品だと思いました.

C92参加しました

3日間のコミケ本当にお疲れ様でした.初参加でしたがたくさん楽しむことができたと思います. 薄い本もたくさん買えたので😊😊になっています.

一般参加について

まず1,2日目は一般ということで参加しました.本とかいろいろたくさん売ってました. オールジャンルということでいろんなジャンル見てきました. イイネェ~みたいなのとか何これ…みたいなの色々あっていろんな人いるんだなみたいな気持ちでした.

サークル参加について

3日目東6ホール"ニ"ブロック07bにて本出してました.

遅刻

サークル入場で遅刻しました. 新宿から埼京線乗ろうとして駅入ったら次の電車あと2分~ってなったのでホームに駆け上がったんですが既にドア閉まっていて乗れず次の電車に乗りました. 電車乗ってるときずっと遅刻したときの対処法みたいなの見てたんですが「なんとか間に合いました^^」とか「売り子が先に入っててなんとかなりました^^」みたいな感じの記事が多くて😰😰になりつつ オンオン泣きながらフォロワーに教えていただいた情報に頼ってました.本当にありがとうございます.

後から調べたらその乗り遅れた電車に乗っても遅刻確定でした.ドアホです.どの電車に乗れば間に合うかくらい調べましょう.

入場に関しては一応9:30まではサークル入り口は開いてるらしいので急いで向かって遅刻サークル専用入場口みたいなところから遅れて入場しました. 案外人が多くてびっくりしたのと入場が10時以降ってことで20~30分くらい待ちます. 自分のスペースに着くと青紙が貼られていたりと遅刻した感がすごく出てました.

たぶん15部ぐらい刷ったんですが余り1部くらいになりました.5ページ表紙が文字オンリーのよくないね👎な本にしてはイイネみたいな感想です. 配布できたのがほとんど身内なのでそれはそうみたいな気持ちです(受け取ってくださって本当にありがとうございます). 次からはコピ本じゃなくてちゃんとした印刷所の印刷にしたい気持ちがあるのでそのときは有償にするかと思います. 告知も多分するのでみんな買ってね😄

おわり

終わりです.ありがとうございました.

SECCON Beginners長野 Writeup

行ってきました.writeupです.

SECCON Beginnersとは

昨年までCTF4bとして運営されていた初心者向けCTF講習会です. 今回から懇談会も追加されワイワイできました.

内容について

Web,forensics,binaryの3種類の講義を受け,最後にCTFオリエンテーションとして講義内容を使用したCTFをしました.

Writeup

本題です.記憶力が無いのでタイトルとか問題とかあまり覚えていませんが書いていきます.

  • 練習問題
    フラグが書いてあるのでそのままやります.

  • [misc] てけいさん for ビギナーズ
    1ケタの足し算,引き算,掛け算が表示されて100問解くとフラグが出ます.
    コードを書くより手で解いた方が速いと思ったので手で100問解きました.
    パパッと自動化するアタマが無いので1000問とかだったら死んでたかもしれないです.

  • [forensic] for100
    あまり覚えてませんがpcapが渡されてhttpを追跡するとフラグが出たと思います.

  • [forensic] for200
    pcapngファイルがあってそこからパスワード付きzipを抽出,通信を見てパスワードを探して解凍,その中にある画像ファイルのexifを覗くとフラグがあるというものですが 抽出したzipファイルが壊れていたっぽくて解けませんでした.

  • [forensic] for300
    問題ファイルを解凍すると中には3.binというファイルがありました.fileコマンドで調べるとNTFSということでした.まあわからないので飛ばしました.

  • [binary] bin100
    bin100_1というファイルが降ってきました.stringsコマンドで一発でした.

  • [binary] bin200
    objdumpすると配列のようなものにASCIIコード的なものがmovされていたのでCでそれっぽく再現したところフラグになりました. あんまり説明読んでなくてステージ2(?)しか解いてませんでした.

  • [binary] bin300
    bin200のように配列的なものがありましたがASCIIでは無さそうでその後にsrandでゴニョゴニョしてそうだったので時間かかるかなと思って飛ばしました.解いてません.

  • [web] Fix
    ヘッダのlocationのところがlocatin:FLAGのような感じのtypoでリダイレクトできなくなっている感じのやつでした. フラグは平文でデカデカと書かれていたのでそのままsubmitしました.

  • [web] (問題名忘れました)
    sqliだったことしか覚えてないです.講義でやったように' OR ‘1’ = ‘1で通ったと思います.

  • [web] login
    ディレクトリトラバーサルです.解けませんでした. ログインしようとしてerrorとなるとphpがエラーメッセージのテキストをfile_get_contentsで取ってくるのでそこにソースを入れれば見れました.
    index.phpはすぐ見つけられましたがflagとsqliteを含む文字列は通らないということでなんもわからず. その後終了10分前くらいにlogin.phpを見つけましたがカッコがSQLiを防いでることに気づかず時間切れでした.

以上で1400点です.5位でした.

久しぶりのCTFでしたが楽しくできて知見得られてアドでした.

ctf4b 2016 final write up

参加してきたのでwriteup書きます。

  • welcome(100)
    フラグが書いてあるのでやるだけ

  • CountUp Game(200)
    21にならないようにするやつ。 後攻なので相手の出した数と自分の出した数の和が4になるようにすると勝てる。 10回勝つとフラグが吐かれる。

  • Classical Injection(100)
    多分SQLiの問題だった。(忘れた)

  • May the extensions be with you.(100)
    付属のChrome拡張を使うなどしてCookieをtrueにするとフラグゲット。

  • みつけてみよう(100)
    wiresharkで開くとhttp通信が多いのでとりあえずオブジェクトをexportして20個くらいのhtmlの中から人力で中身のあるフラグをみつけてみた。

  • HiddenFlag(100)
    とりあえずstringsコマンドで見たらフラグがあった。

  • 復習(200)
    講義でやった内容の復習。 shlでけっこう戸惑った。

以上が解けた問題で900点の44位でした。

バイナリは苦手で今までかなり避けてきたのですごく勉強になりました。

第5回git challengeに参加してきました

ブログ書くまでが遠足!ということで書きました。

git challengeとは

これです。↓↓↓ mixi-recruit.snar.jp

だいたいこれ通りですがgitでソースを管理する上で起こる問題を解決するというイベントでした。

応募とか

なんかgitあんまり使ったこと無いしやってみたいな〜って軽いノリで応募してたら受かってました。(すみません…)

午前

競技のチュートリアルとかしました。木の椅子でお尻カチカチでした。

お昼

回らない巻き寿司を食べました。働かず食う🍣はおいしいです。

競技

問題の内容については秘密らしいので言えませんが僕は1番難易度の低い問題2問解いてオシマイでした。 4時間競技がありましたが基礎知識が全然無くてずっとグーグル先生に頼りっぱなしでした。

解説の時間

最後まで解けなかった問題は解説を聞いて納得しました。 現実にありえる問題でもあるのでここで経験できたのはプラスになると思います。

懇親会

串カツとおでん🍢でした。 ここでガチプロ集団がプロ話を始めたのでついていけなくて😢になりました。 あと未成年なんで🍺飲めませんでした。というか大人多かったです。

おわりに

今回はコミットの流れとかブランチの位置などをあまり理解できていなかったので詰まっちゃったと思います。 他にもいろいろな技術の話などできてよかったです。 あとカバ君かわいいかったです。

AndroidStudioをwin機からLinux機に乗り換えたときの話

あいさつ

あけましておめでとうございます。昨年は特になんもしてなかったですが今年もよろしくお願いします。

本題

今までAndroidアプリの開発を激遅HDD積んだWin機のAndroidStudioでやってきてたんですが重すぎて使い物にならずSSD積んだLinux機に乗り換えました。 そのときwin機で書いていたプロジェクトを移行しようとしたところgradleのビルドエラーが出たのでその話をします。
Linux機のOSはUbuntu16.04LTSです。

エラー

AAPT process not ready to receive commands

全体をメモるの忘れましたが:app:mergeDebugResourcesのタイミングで起きました。

解決方法

32ビット用のライブラリが足りてなかっただけでした。
以下をターミナルに入力
sudo apt-get install lib32z1 lib32ncurses5 libbz2-1.0:i386 lib32stdc++6
公式のページではlibbz2-1.0:i386ではなくlib32bz2-1.0ですが公式通りだとapt-getにパッケージが見つからないと怒られてしまいます。

原因

解決方法にあるコマンドは本来インストール時に入力するものでしたが公式のインストール手順ではなくGoogle検索の1番上に表示された古いQiita記事を参考にしたためライブラリに関する情報が古かったことでした。

終わりに

公式がインストール手順を丁寧に公開してる場合はそっちを見たほうがいいと思います。