androidで 配列をXMLに定義

Androidでアプリを作っているとメニューのアイテムを定義するのにstring配列を使うが、アイテム数が多くなるとソースコードが見にくくなるのでxmlファイルで定義する方法を試してみた。

まず、今回定義したファイルは

/res/values/arrays.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
<string-array name="genres">
<item>item1</item>
<item>item2lt;/item>
<item>item3</item>
<item>item4</item>
</string-array>
</resources>

このstring配列を使うには
String items = getResources().getStringArray(R.array.items);

だけで使える。

Arch Linux

どうもお久しぶりです。

このブログの引っ越しを検討してましたが引っ越しはせずにこのまま続けることにしました。

約1ヶ月ぶりの投稿はLinuxについての備忘録です。


Arch Linuxとは


一言で言うと「何もソフトが入ってないLinux」です。

シンプリシティ、ミニマリズム、およびコードの簡潔性に焦点を当てて「The Arch Way」の理念のもとで開発されています。また、最小限の基本システムの状態でインストールされ、ユーザー自身が、ユーザーの理想とする環境のために必要なものだけをインストールして構築することができます。つまり、自分の好きなソフトだけ入れて自分好みに作り上げることのできるディストリビューションです。


Install PC


今回インストールするのは大学入学時に買った「 daynabook R82」です。



  • CPU intel core M-5Y51 (1.1GH/TB 2.6GH)

  • RAN 4GB

  • SSH 256GB

  • OS win8.1 64bit アップデート→win10 home

  • タッチパネル搭載(デジタイザー非対応)

性能はなんとも言えないmacbookと同じCPUのPCです。


Install


インストール自体はArch Linux wikiのビギナーズガイドの通りにやれば簡単ですが、今回はwindows10デュアルブートにします。


windows側での設定


windowsの時刻をUTCに変更する

高速スタートアップを無効にする

bisoでセキュアブートを無効にする

この3点の設定ですが、Arch Linux wikiに詳しく書いてあるので割愛します。

また、この他にUSBメモリーやDVDにインストールディスクの準備もします。


インストール


インストールディスクから起動すると以下のメニューが出てくるので、Arch Linux archiso x86_64 UEFI CDを選択する。


インストールはすべてコマンドライン上で行う。

使用しているキーボードに合わせて、キーボードレイアウトを設定する。


# loadkeys jp106

Wifiに接続する。


# wifi-menu

グラフィカルでわかりやすいので簡単に接続できると思う。

次は、ssdにインストールするパーティションとswapを作る。


# cgdisk /dev/sda

これもグラフィカルなので詳しく説明しない。

フォーマットとマウント


//swap
#mkswap /dev/sda6
# swapon /dev/sda6
/root
# mkfs.ext4 /dev/sda5
/rootのマウント
# mount /dev/sda5 /mnt
/bootフォルダ作成とEFIパーティションのマウント
# mkdir /mnt/boot
# mount /dev/sda2 /mnt/boot

vimでミラーリストの編集


# vim /etc/pacman.d/mirrorlist

日本のサーバーが2つあるので2個とも先頭に移動

arch linux のインストールとvimwifi関連のソフト、ブートローダーをインストール


# pacstrap /mnt base base-devel vim iw wpa_supplicant dialog refind-efi intel-ucode

fstabの生成とインストールしたシステムに入る


# genfstab -U -p /mnt >> /mnt/etc/fstab
# arch-chroot /mnt /bin/bash

ロケールの設定


# vi /etc/locale.gen
...
#en_SG ISO-8859-1 
en_US.UTF-8 UTF-8  ←#を削除。
#en_US ISO-8859-1 
...
#ja_JP.EUC-JP EUC-JP 
ja_JP.UTF-8 UTF-8   ←#を削除。
#ka_GE.UTF-8 UTF-8
...
//ロケールの生成
# locale-gen
# echo LANG=en_US.UTF-8 > /etc/locale.conf
# export LANG=en_US.UTF-8

キー配列の設定


# vi /etc/vconsole.conf

KEYMAP=jp106



# ln -s /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
# hwclock --systohc --utc

ホスト名の設定


# echo 任意のホストネーム > /etc/hostname
# vi /etc/hosts

#
# /etc/hosts: static lookup table for host names
#

#<ip-address> <hostname .domain.org=""> <hostname>
127.0.0.1 localhost.localdomain localhost 任意のホストネーム
::1 localhost.localdomain localhost 任意のホストネーム

# End of file
</hostname></hostname></ip-address>

パスワードの設定


# passwd

ブートローダーの設定


# refind-install

これで再起動すればArch Linuxが使えるようになる

ただし、グラフィカルな表示がされずコマンドラインだけなのでディスクトップ環境のインストールはそのうち

ubuntu 15.10環境下でswift

appleがついにgithubでswiftのソースコードを公開しLinuxでも開発ができるようになったとの噂を入手したので、以前から挑戦したいとも持っていたswiftの開発環境を作ってみた。

(注意)iosアプリはxcodeがないとios端末で実行できないらしい。


swiftを入手


最近公開されたばかりのswiftの公式サイト(swift.org)から



githubソースコードからビルドして使うこともできるけど今回は公式サイトのubuntu15.10用バイナリを使った。

インストール


入手したファイルをホームディレクトリに展開しフォルダー名をswiftに変更
tar xzf 入手したファイル名.tar.gz
mv ./ファイル名 swift

続いてswiftにパスを通す
export PATH=/home/(ユーザー名)/swift/usr/bin:"${PATH}"

これでインストールは完了。

swiftを実行



ターミナル上でswiftコマンドを実行するとswift(対話モード?)が実行されます。

まだ、swiftについて全くわからないので少しずつ勉強していきたい。

windows10でのgcc環境整備

Linuxを普段使いにしていたけど大学のネット環境の認証がめんどくさかったりしたので久々にwindowsに移行してみた。(コルタナの噂を聞いて)

概要


windowsgccvim、ある程度のunixコマンドが使えるように環境整備してみた。大学のプログラミング環境はCygwinだけど、重たくて容量も大きくイマイチのイメージしかなかったので今回はcmderでながら作業のできる環境を目指した。

インストールしたのは

  • MSYS2 (シェルとして使用)

  • cmder (ターミナルとして使用)

の2つのソフト

MSYS2の導入


MSYS2 installerをダウンロードしてきて実行する。



表示は親切に日本語になってるので困ることはないと思う。

インストール完了したらMSYS2 shell(インストールフォルダーのmsys2_shell.bat)を起動する。ターミナル(mintty)が起動するので、まずは更新から。
$ pacman --needed -Sy bash pacman pacman-mirrors msys2-runtime
(msys2 shellを再起動)
$ pacman -Su
(残りをupdate)

インストールの確認が出ればyでインストールの続行する。

あれっと思った方もいると思いますがarch linuxpacmanでパッケージ管理しています。
次はgcc等のインストール。64bit環境ならmingw64_shell.bat、32bit環境ならmingw32_shell.batを起動して
$ pacman -S gcc

で各環境のgccがインストールされる。

ついでにvimもインストール
$ pacman -S gcc



コマンドプロンプトPowerShellでも使えると何かと便利なので環境変数を設定する。

pathにインストールフォルダ下のmingw64\binとusr\binあたりを追加したらそこそこコマンドが使える様になった。

cmderの導入


cmderのmini版またはfull版の好きな方をダウンロードし好きな場所に展開する。

このままではMSYS2を呼びでせないのでcmder.exeを起動して設定する。画面下の+横の三角を押しメニューからsetup tasks...を選択し設定画面へ。

Add defult tasks...を選ぶとこれでpathが通っていればMSYS2のbashが登録される。

最後に


cmderを使えばlinuxのGuakeのターミナル風に透過させたりかなりいい感じの環境になった。

さらに、副産物としてCygwinではgccしたプログラムをCygwin上でしか使えなかったが、windows単体でアイコンからの起動ができるようになった。

自分でもなかなかいい環境になったと思う

ctf4b 大阪に参加してみた

11/8に行われたCTF forビギナーズin大阪に参加してきた。

そもそも、CTF for ビギナーズは、コンピュータセキュリティ技術を競う競技であるCTF (Capture The Flag) の初心者対象の勉強会らしいけれど今回の大阪では講義は一切無しで競技のみの開催でした。

では、自分の解けた問題と解こうとした問題に関してwrite upを書いていこうと思う。

writeup


Misc


misc問題としてHack the HOURIN!!、Hack the ENOKI!!、Let's HACK to HIDEO!!の3題がソーシャルハック問題として出題された。それぞれ配点が100点で問題名のHOURINさん、ENOKIさん、HIDEOさんから上手く答えを聞き出せば良かったらしい。一問だけ、本人に聞かなくてもネットで調べたもので総当たりすれば答えが出たらしい。
今回は技術的な問題に出来る限り挑戦したかったので一切振れずにいた。

WEB


Something browser know


配点は100点。
タイトル通りブラウザのユーザーエージェントを偽装すれば解けたと思うが解いていない。

The easy task


配点は100点。
指定のアドレスを開とログイン画面が有るのでパスワード欄におなじみの「" or "a"="a」を入れてあげるとflagを吐いた。

NETWORK


Open and read it!


配点は100点。
パケットのデータは無くして詳しくは忘れたが多分tcp streamとか中のファイルを見てflag見つけたと思う。

Transition


配点は100点。
telnetしてる通信が見つかったのでそのサーバに接続したけど時間足りなくてflagは取れなかった。

Crypt


Ten


配点は100点。
問題文に1~9の同じ数字が複数回連続してるのとタイトルからガラケーのテンキー入力だと気づき、スマホの入力方式を切り換えて説いた。

Forensics


読みとれますか?


配点は100点。
薄く何かの書いてある画像があったので周りを塗りつぶししてflagを読み取った。

Onion


配点は100点。
圧縮してあるファイルがあったけれど配布された環境で解凍の方法が分からなかったので断念。
何重にも圧縮してあって最後にflagが出てきたらしい。

不審な通信


配点は200点。
wordファイルを開くと、どこかで見覚えのある画像があったが、それだけではflag見つけられなかった。今度はtxtファイルとして開くと直ぐにflagを見つけた。

別解で開くときのパケットを見てもflagは見つけれたらしい。


Yahooニュースを解析してみた


タイトル通りYahooニュースを解析、、、いや解析するプログラムを作りました。

仕組みはいたって簡単でYahooニュースのRSSフィードを取得し、タイトルを単語ごとに分解、そしてその単語をポジティブかネガティブかを評価するだけの簡単なプログラムをpythonで作りました。とは、言ってもpythonで作った初めてのまともなプログラムなので至らない点はご了承ください。

https://github.com/mizunomi32/yahoonewsfeed

まずは、使用ライブラリ等

使用ライブラリ、辞書データ


pyron ライブラリ feedparser、BeautifulSoup、urllib
Yahooテキスト解析
単語感情極性対応表 ;http://www.lr.pi.titech.ac.jp/~takamura/pndic_ja.html

ソースコード




セキュリティキャンプ九州in福岡2015に参加してきた(後編)

2日目


2日目はphpでのwebプログラミング、

phpは触ったことがあったが初のフレームワークを使ったプログラミングだった。



もちろん、思い通りに動かなかったりして昼休憩の間もプログラミングし無事に作成することができた。

午後からはプログラミングではなくwebセキュリティについての講義

さらに、実際に午前中に作ったwebページ(チャット)で習ったことの実践




見つけた脆弱性について種類別に分類しグループで発表し、2つ目のwebサイトに突入。

2つ目のwebでは、htmlタグを埋め込めたり、adminのパスワードで入れたりなかなか多くの脆弱性を見つけた。普段は他人のwebサイトに絶対できない程いじりまくりながら脆弱性を見つけたのでいい体験になった。 そして2日目最後は法律に関しての講義



むやみに持っている技術や知識を使えば法律に触れることがあり正しい倫理観を持つ必要があると思った。

講義だけでなく実際の裁判を想定した模擬裁判をしたり、身をもって法律を知ることも大切だと思った。

2日目もすべて終わり「夕食は昨日に引き続き弁当か」と思っているとまさかの講師の方々のおごりで全員で焼き肉に

最終日



最終日は心待ちにしていたラズパイ



ラズパイ上でnetbeansを使ったりarmのアセンブリを書いたり今まで試したことのないことばかりだった。

時間ぎりぎりまでGPIOで低レイヤなこともしたり盛りだくさんのラズパイだった。


感想


サーバー立てたりラズパイやwebで遊んだりしていて少しセキュリティに興味があったがこのキャンプに参加していい刺激を受けたと思う。どこかで学んだことをベースにもっとセキュリティについて学んでいきたい思った。 そして、次はセキュリティキャンプの全国大会や大学で友達を巻き込んでCTFに挑戦してみたい。