ArchLinux環境作り 〜タイル型ウィンドウマネージャ〜
2017年、明けました。おめでとうございます。
ArchLinuxを普段使いしているときにはXfceを用いているが、ウィンドウをちまちま動かしたり揃えたりするのが少し面倒になってきてしまったので、ここで心機一転しようというのがきっかけ
というわけでタイトルの通り、タイル型ウィンドウマネージャを取り入れることにした
今回採用したのはQtileというもの。最終的にこのような感じの見た目になった
ブラウザと2つのシェルが隙間なく配置されていて非常に使いやすくなった
初期画面で
$ startxfce4
と記述すればXfce4のデスクトップが立ち上がり、
$ startx
と記述すればQtileが立ち上がるように設定した
これは.xinitrcにQtileを指定していることにより区別することができた
このような環境を、以下のWikiに従って導入していく
環境はpython3なのでAURからQtileを入れる
$ yaourt -S qtile
背景の壁紙設定もしたかったのでnitrogenも導入する
$ yaourt -S nitrogen
このときにvte3-ngがvte3と衝突するけどvte3を削除してもいいかと聞かれるが、
Arch Linux - vte3-ng 0.46.1.a-1 (x86_64)
Arch Linux - vte3 0.46.1-1 (x86_64)
上の2つを見比べて削除しても問題なさそうと判断したので削除してvte3-ngを選択した
これでインストール作業はこれで終了となる
nitrogenを利用して背景を設定してみる
$ nitrogen ~/picture
引数には背景にしたい画像が含まれているディレクトリを指定する
するとウィンドウが開かれるので背景を選んでApplyをすると設定される
一度Applyすると~/.config/nitrogen/bg-saved.cfgに設定したものが反映されているので次回からログインしたときに同じ設定を反映させるためにレストアする
実際にレストアするためには
$ nitrogen --restore
をすると以前の設定が反映されるので以降のrcファイルに記述しておくことにする
次に~/.xinitrcを以下のように編集する
setxkbmap -model jp106 -layout jp
nitrogen --restoreexec qtile
デフォルトではキー配列はUSのままなのでsetxkbmapでJIS配列にした
あとは細かい設定をしていくために設定ファイルを作成する
$ mkdir ~/.config/qtile
$ nano ~/.config/qtile/config.py
config.pyファイルには以下を記述した
設定したことをざっくりすると、
- 操作はXfce4でやったことを少し流用できるように
- Ctrl+Alt+矢印でワークスペースの左右移動
- 同じレイヤに2つ以上のアプリケーションがあるときにSuper+vで横に分割
ターミナルはxtermは個人的にあまり好きではないのと、xfce4-terminalが意外と気に入っているのでそれを使うことにした
スタートアップもどきとして同ディレクトリにシェルスクリプトを配置
途中で使用するmod1, mod4はキーのコードを表している
$ Xmodmap
をするとキーがどのmodであるかを確認することができる
本環境ではSuperキーはmod1, Altはmod4であることを確認した
最後に設定内容を載せる
from libqtile.config import Key, Screen, Group, Drag, Click
from libqtile.command import lazy
from libqtile import layout, bar, widget
import subprocess, os
def autostart():
home = os.path.expanduser('~')
subprocess.call([home + '/.config/qtile/start.sh'])
mod = "mod4"
alt = "mod1"
keys = [
# Switch between windows in current stack pane
Key(
[mod], "Down",
lazy.layout.down()
),
Key(
[mod], "Up",
lazy.layout.up()
),
Key(
[mod, "control"], "Down",
lazy.layout.shuffle_down()
),
Key(
[mod, "control"], "Up",
lazy.layout.shuffle_up()
),
# Switch window focus to other pane(s) of stack
Key(
[mod], "space",
lazy.layout.next()
),
# Swap panes of split stack
Key(
[mod, "shift"], "space",
lazy.layout.rotate()
),
Key(
[mod, "shift"], "Return",
lazy.layout.toggle_split()
),
Key(
[mod], "v",
lazy.layout.toggle_split()
),
# Toggle between different layouts as defined below
Key([mod], "Tab", lazy.next_layout()),
Key([mod], "w", lazy.window.kill()),
Key([mod, "control"], "r", lazy.restart()),
Key([mod, "control"], "q", lazy.shutdown()),
Key([mod], "r", lazy.spawncmd()),
# Move to side workspace
Key([alt, "control"], 'Right',lazy.screen.next_group()),
Key([alt, "control"], 'Left',lazy.screen.prev_group()),
Key([alt, "control"], 'j',lazy.spawn("xfce4-terminal")),
Key([alt, "control"], 'l',lazy.spawn("firefox")),
Key(, 'Print',lazy.spawn("xfce4-screenshooter")),
Key([mod], 's',lazy.spawn("xfce4-appfinder")),Key([mod], 'e',lazy.spawn("exo-open --launch FileManager")),
Key(, "XF86AudioMute", lazy.spawn("amixer -q set Master toggle")),
Key(, "XF86AudioLowerVolume", lazy.spawn("amixer set Master 5%-")),
Key(, "XF86AudioRaiseVolume", lazy.spawn("amixer set Master 5%+")),
]
groups = [Group(i) for i in "123456"]
for i in groups:
keys.append(
Key([mod], i.name, lazy.group[i.name].toscreen())
)
window to group
keys.append(
Key([mod, "shift"], i.name, lazy.window.togroup(i.name))
)
layouts = [
layout.Max(),
layout.Stack(num_stacks=2)
]
widget_defaults = dict(
font='Arial',
fontsize=16,
padding=3,
)
screens = [
Screen(
bottom=bar.Bar(
[
widget.GroupBox(),
widget.Prompt(),
widget.WindowName(),
widget.CPUGraph(),
widget.NetGraph(),
widget.Battery(),
widget.Volume(),
widget.Systray(),
widget.Clock(format='%Y-%m-%d %a %I:%M %p'),
],
30,
),
),
]
# Drag floating layouts.
mouse = [
Drag([mod], "Button1", lazy.window.set_position_floating(),
start=lazy.window.get_position()),
Drag([mod], "Button3", lazy.window.set_size_floating(),
start=lazy.window.get_size()),
Click([mod], "Button2", lazy.window.bring_to_front())
]
dgroups_key_binder = None
dgroups_app_rules = []
main = None
follow_mouse_focus = True
bring_front_click = False
cursor_warp = False
floating_layout = layout.Floating()
auto_fullscreen = True
focus_on_window_activation = "smart"
wmname = "LG3D"
車のバッテリー交換における備忘録
タイトルの通り、車のバッテリーを交換することになった
通常のバッテリーの寿命が2〜3年なので今後も交換する機会こそあれど、頻繁ではないので備忘録として記しておこうという次第
やってみれば至って単純な作業だったし、Google先生に聞けばそれくらいの記事はわんさかと出てくるとは思うけど、自分の車のためにも書いたほうがいい気がして
早速作業に取り掛かる
この記事を書こうと思ったのがバッテリーを交換している途中だったので写真の時系列がずれているけど、手順のメモを記すだけなので気にしないこととする
ボンネットを開けると奥の方でバッテリーが鎮座している
写真の黒枠で囲っている部分がバッテリーの端子を留めている部分
左側が+極、右側がー極になっているのでこれらのナットをラチェット等でゆるめる
ゆるめたら上向きに引き抜くと端子から簡単に取れる
次にバッテリー上部を押さえている部分を取り外す作業
写真の黒枠で囲っている部分のナットを同じく緩める
このナットは取り外してはいけない
取り外してしまうと蓋にぶら下がっているだけの棒が落下してしまい、車内のどこかに入り込んでしまって大変なことになる
ナットを緩めたらぶら下がっている棒の下部の、直角に曲がっているところが金属板に引っかかっているのでそれをずらしてあげる
両方ずらすと上写真のように蓋を取ることができる
あとはバッテリー本体を引き抜く
交換前のバッテリーはSIVIS 44B19R(左)
交換後のバッテリーはcaos 60B19R(右)
コンパクトな見た目に反してとても重い。どのバッテリーでもそうだけど鉛すごい。
あとはこの交換するバッテリーを埋め込んで逆の手順を踏めば作業は終了
交換後にエンジン回してみたらセルモーターがとても快調に動いてくれた
やってみれば単純だったけど、単純だからと軽くやって感電はしたくないものだね
Archlinux環境作り ~terminal、追加コマンド編~
引き続きメモ
xfce4-terminalがメインのターミナルとなるので、この周りも少し変えていく
すべてのフレームやバーを取り払い、~/.config/xfce4/terminal/terminalrcに設定ファイルがあるので
MiscDefaultGeometry=80x45
に変更
あとはコマンドをなんとなく追加
unzip,gdb
Archlinux環境作り ~サウンド、タッチパッド、ネットワーク、タスクマネージャ編~
前々回くらいでなんとかデュアルブートに成功したので早速少しずつArchlinuxの環境を作っていこうという次第
いつ再インストールする羽目になるかわからないので記録しておこうというのが目的
環境を作っていくにつれて随時追記していく予定
初期状態は前回の記事の状態から
デスクトップに移行してからというものまず最初に気が付いたのが、
タッチパッドがクリック以外全く効かないということだった
なので専用のドライバを取り入れる
$ sudo pacman -S xf86-input-synaptics
次に気付いたのは音が出力されないということ
とりあえずサウンド周りを導入することから
$ yaourt -S xfce4-volumed
次にサウンド関連のカードやデバイスを調べる
$ aplay -l
とすると
**** List of PLAYBACK Hardware Devices **** card 0: HDMI [HDA Intel HDMI], device 3: HDMI 0 [HDMI 0] Subdevices: 1/1 Subdevice #0: subdevice #0 card 0: HDMI [HDA Intel HDMI], device 7: HDMI 1 [HDMI 1] Subdevices: 1/1 Subdevice #0: subdevice #0 card 0: HDMI [HDA Intel HDMI], device 8: HDMI 2 [HDMI 2] Subdevices: 1/1 Subdevice #0: subdevice #0 card 1: PCH [HDA Intel PCH], device 0: ALC3232 Analog [ALC3232 Analog] Subdevices: 1/1 Subdevice #0: subdevice #0
と出てくる
カード0は基本的にHDMIに関する部分であることが分かるのでおそらく最後のカード1、デバイス0のものがスピーカーから出力してくれるのではと判断
実際に音を直接出させてみるには
$ aplay -D plughw:1,0 hoge.wav
とする
plugが抜けていると"チャネル数が使用不可能"と言われてしまう
"1,0"はそれぞれカード番号、デバイス番号を入力する
今回上記の組み合わせで音が出てきてくれたのでこれで進む
これをデフォルトのサウンド出力にするので
$ sudo nano /etc/asound.conf
でファイルを開いて
defaults.ctl.card 1
defaults.pcm.card 1
defaults.pcm.device 0
pcm.!default{
type plug
slave.pcm "hw:1,0"
}
と入力してから再起動すると、うまく音を出力してくれた
次はifconfigを使いたいので
$ sudo pacman -S net-tools
ついでにWiresharkも導入しよう
インストールした最後に、
NOTE: To run wireshark as normal user you have to add yourself into wireshark group
と書かれていたのでグループにも追加しておく
# gpasswd -a <username> wireshark
次にタスクマネージャのようなものの導入
# pacman -S conky lm_sensors
# sensors-detect (yesと言い続ける)
$ sensors (一度情報を表示してくれる)
インストールしたらデフォルトの設定ファイルが/usr/share/doc/conky***/conky.confにあるので
$ cp /usr/share/doc/conky***/conky.conf ~/.conkyrc
$ nano ~/.conkyrc
で以下を追記(または変更)
alignment = 'top_right'
background = true
gap_x = 5
gap_y = 0
font = 'IPAGothic:style=Regular:size=12'
own_window_type = 'panel'
update_interval = 3.0
own_window_transparent = true
own_window_argb_visual = true
own_window_hints = undecorated,below,sticky,skip_taskbar,skip_pager
double_buffer = true
(テキスト欄)
${color grey}CPU Temp:$color ${execi 60 sensors | grep 'Physical' | cut -c18-21}℃
${color grey}Core0:$color ${execi 60 sensors | grep 'Core 0' | cut -c18-21}℃
${color grey}Core1:$color ${execi 60 sensors | grep 'Core 1' | cut -c18-21}℃
あとはeth0を変更しておくこと
Conkyの設定においてown_window_typeをdesktopにするのが一番理想だったのだが背景をクリックするとデスクトップの後ろに隠れてしまう現象が起こり、ググってもそういうことが起こってなかなか解決の糸口が見つけられなかったのでpanelで妥協することにした
normalやoverrideにするよりかはよっぽどマシかなと
最後にデスクトップ環境を立ち上げたときに自動的に起動する設定
~/.xprofileにて
sleep 5 && conky
を追記する
Windows7とArchlinuxでデュアルブートしたメモ
インストールバトルをまた近々やりそうなので忘れないように記しておく
ディストリビューションはArchlinuxを選択
ISOファイルは2015.08.01を採用
USBメモリにイメージファイルを焼いて差し込む
BIOSでUSBを優先にしてF10
x86_64版をブートしていざ対決
キーボード配列設定(自分はJIS配列)
# loadkeys jp106
まずは言語設定
# nano /etc/locale.gen
で
en_US.UTF-8
ja_JP.UTF-8
の#を消す
ファイルのアップデート
# locale-gen
いきなりワイヤレス設定をすることに挫折したので有線で進めていく
# ip link
で "enp~~"のインターフェースを見る
インターフェースを有効にしてIPアドレスをもらいに行く
# ip link set <interface> up
# dhcpcd <interface>
ハードウェアクロックを合わせて確認する
# timedatectl set-ntp true
# timedatectl status
次にパーティションの設定
一晩意味もなく悩んだ末に、
- 120GB ... /
- 4GB ... swap
とすることにした
残った領域はWindows7のCドライブやDドライブ、リカバリ領域などとなっている
なので拡張パーティションをすることに
自分が使っている環境はBIOSでMBRの環境だったのでboot用のパーティションは特には作らなかった
最近ではUEFI+GPTが主流らしいのでマイノリティっぽい...??
# cfdisk /dev/sda
で120GBで"Linux"でBootableフラグを立てる
あとは4GBで"Swap/Solaris"
の割り当てを行った
# lsblk -f
で書き込みや割り当てを確認してフォーマットの設定
今回Linuxに割り当たったのは/dev/sda6だったので
# mkfs.ext4 /dev/sda6
swap領域についてはスワップの有効化
# mkswap /dev/sda7
# swapon /dev/sda7
次にパーティションのマウント
最初に"/"のマウントを行わなければならないのだが、"/"しか持ち合わせていないので
# mount /dev/sda6 /mnt
※swap領域のマウントはしないこと
次にミラーリストの選択
# nano /etc/pacman.d/mirrorlist
日本のサーバが2件あるのでその2つをAlt+6でコピーして一番上でCtrl+Uでペースト
tsukubaを一番上にしているもののエラーが多かったので変えようか今検討中
続いてベースシステムのインストール
まるごとインストールするので "-i" オプションはつけなかった
# pacstrap /mnt base base-devel
fstabの設定とその確認
"/"に1フラグが付いていればok
# genfstab -U /mnt > /mnt/etc/fstab
# cat /mnt/etc/fstab
chrootのベースシステムの設定
先ほどと同じようにロケールの設定
# nano /etc/locale.gen
# locale-gen
# echo LANG=en_US.UTF-8 > /etc/locale.conf
# export LANG=en_US.UTF-8
※この時にLANG=ja_JP.UTF-8にしてしまうと、コンソール上に表示される文字が激しい文字化けを起こしてしまうので日本語にするのはまた後にすること
キーマップとフォントの設定
# nano /etc/vconsole.conf
で.confファイルを開いて
KEYMAP=jp106
FONT=lat9w-16
と入力して保存
タイムゾーンの設定
# ln -sf /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
ハードウェアクロックの設定
# hwclock --systohc --utc
ただし、今回裏にはWindows7が眠っている
Windowsはデフォルトでlocaltimeを採用しておりArchlinux上でlocaltimeを使うとバグを引き起こす可能性もあるらしいので、Windows7のlocaltimeをオフにしてUTCにしてやる必要がある
しかしこの状態ではWindowsに切り替えることが出来ないのでこの件は後述して先に進む
ホスト名は自由に決める
# echo <ホスト名> > /etc/hostname
# nano /etc/hosts
で開くと
#<ip-address><hostname.domain.org><hostname>
とあるので<***>の部分にさきほどのホスト名を記述
rootのパスワードの設定
# passwd
ついでネットワーク設定はこのまま有線で行うので
# systemctl enable dhcpcd@enp**.service
とするだけで一応優先の設定は完了する
そのあとで無線の設定を行うので必要なものを今のうちにインストールしておく
# pacman -S iw wpa_supplicant dialog
dialogはwifi-menuで用いるために必要
wifi-menuってすごいと思う
いよいよデュアルブートのための準備をする
os-proberはディスク上に他のOSがないか調べてあったらブートローダに投げてリストに加える働きをする(らしい)
次にGRUBのインストールおよびos-proberの稼働
# grub-install /dev/sda
# os-prober
chrootから離脱してアンマウント、再起動
# exit
# umount /mnt
# poweroff
ここでUSBを抜く
再び起動するとおそらくデュアルブートが出来ていて
リカバリ領域も混じってるものの粗方このようになっていると思う
ここで"Windows7"を選んで先ほどのUTCの設定を行う
regeditから
HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Control/TimeZoneInformation
まで進み、新規で"RealTimelsUniversal"をDWORD値で埋め込み、編集で値を「1」に書き変えておく
念のためにWindowsの時刻同期を無効化する
右下の時計で右クリック「日付と時刻の設定」→「インターネット時刻」→「設定の変更」→「インターネット時刻サーバと同期する」のチェックを外す
終わったら再起動して再びArchlinuxに入る
pacmanの設定
# nano /etc/pacman.conf
でcore,extra,community,multilib,repo-nameの行の
SigLevel = hogehoge
Include = /etc/pacman.d/mirrorlist
などの#を消しておく
後でyaourtを使えるようにするために末尾に
[archlinuxfr]
SigLevel = Never
Server = http://repo.archlinux.fr/$arch
を書き込んで保存
# pacman --sync --refresh yaourt
をしてyaourtの導入は完了
ユーザの追加とパスワード設定
# useradd -m <名前>
# passwd <名前>
-m を付けると/homeにディレクトリを作ってくれる
このままではsudoが使えないので、
# visudo
で、User privilege specificationの欄のrootの下に
名前 ALL=(ALL) ALL
を追加して保存
ここで無線の設定を行う
wifi-menuを使って接続しようと思う
# ip link
# wifi-menu <interface>
こうしてSSIDを見つけて選んで従っていけばつながる(たまにエラーが起こるが)
この時に初めての場合はプロファイルの名前も決めるが、後々で使うのでシンプルな名前が好ましそう(?)
しかしこのままでは再起動したときにはもとに戻っているので次回から自動的に接続してもらうようにする
# netctl enable <profile>
また、手動でwifi接続を行いたいときには
# netctl start <profile>
続いてX Window Systemの導入
ビデオカードに何を用いているかを調べてから導入している
# pacman -S xorg-server xorg-server-utils xorg-xinit xterm
↓VirtualBox上でインストールしている時
次にデスクトップ環境の導入
最初GNOMEを入れてみたものの自分とは合わなかったのでXfceを使うことに
# pacman -S xfce4
自分はログインして自動起動はさせないのでそのまま、デスクトップ環境に入るときには
#($) startxfce4
日本語入力を導入する
ibusでコケたことがあったので今回はfcitxを採用
# pacman -S otf-ipafont
# fc-cache -vf
# pacman -S fcitx-mozc fcitx-configtool fcitx-im
$ nano ~/.xprofile
でファイルを開いたら
export GTK_IM_MODULE=fcitx
export QT_IM_MODULE=fcitx
export XMODIFIERS="@im=fcitx"
と入力して保存、再ログインするとFcitx Configrationでmozcが追加されていて日本語入力することが出来た
この際にUS配列の分をリストから削除しておいた
日本語の環境作り
# nano /etc/locale.conf
にて
LANG=ja_JP.UTF-8
といった具合でデュアルブートから中途半端な環境設定までの備忘録として書き連ねた
おそらく再インストールすることが免れなさそうなので記録しておく
いや長かった
security camp 2015に参加した話
8月11日から15日の5日間にわたって、セキュリティキャンプ全国大会2015が行われた
友人からセキュリティキャンプの応募の時期が来たことを教えていただいたので必死に書いた結果、無事に参加させていただくことが出来た(選択問題に救われた)
今回は様々な分野の講義を取れるトラック制を採用しており、高レイヤ、低レイヤ、検知、解析の4分野を各々の時間に選択して講義を受ける形式であった
自分は、
- バグハンティング入門
- ツール自作で知るパケットとネットワークの仕組み
- 遠隔操作マルウェアの検知および検知回避
- ネットワーク通信から不審なものを見つけてみよう
- HTTPプロキシ入門
- 脆弱性検出実戦(ファジングによる検出と脆弱性報告)
- フォレンジック技術を用いたインシデントレスポンス
- レイヤ1からのネットワークセキュリティ - 光ファイバの盗聴および侵入手法の研究
- レイヤ1からの通信サービス - 1G Ethernet専用線の構築実習
の講義を選択した
ふたを開けてみると解析トラックが一つもなかった
自分はどちらかというと低レイヤ(?)の人なのでトラック制を生かして高レイヤっぽい講義もできるだけ取ろうと考えていた
さて話はキャンプ当日になる
海浜幕張駅に行くための乗り換えチャレンジをなんとか乗り越えたので無事に受付開始30分前くらいに到着した
海浜幕張駅について改札出ると研修施設であるクロスウェーブ幕張が見えたので記念撮影
...のつもりだったのだが...
なんとも目も当てられない写真が撮られていた
この時日が照っていてカメラの画面が全く見えない中シャッター音もしたしとりあえず撮れたでしょうと踏んで確認しなかった、大失敗である
ちなみに自分たちが5日間生活する建物は見事に指で隠れてしまっている部分なのでこの写真では見ることが出来ない
建物に入ると、すでに何人か来ていた
というか当日の皆の動向を見ていると受付開始前に行くつもりだったらしい
この時間は名刺大交換会を開き、いろんな人としゃべる時間だった
なんというか、皆様プロでした 私なんて....
夕食だったかな、で突如として出現したマスコット「まもるくん」
開講式で様々な面白い話を聞き、ご飯も食べ、いよいよ本格的にセキュリティキャンプ開始といった感じで早速最初の講義を受けた
- バグハンティング入門
事前学習の段階で分かりやすい資料を作成してくださったのでなんとか理解が追いついた
おそらく講義のほとんどはXSSの話であったと思う
バグハントは意図的に狙うだけではなくて、偶然起こった不可解な表示からバグを発見することもあると知った
後半にはXSSをしてみようということで演習をした
いかにしてバイパスするかということで必死に考えてみたものの結局解くことはできなかった
- ツール自作で知るパケットとネットワークの仕組み
これは実際にC言語でパケットを送信するプログラムを作成したり、自分でパケットを手で書いて相手に届けてみようということを主に行った
この講義中の内部ネットワークのパケットの量はとんでもなくて、内容もカオスな感じであった(ある人はプロである、とかね)
自分でパケットを作ることで実際に使われているパケットがどのような構造をしているのか、などを体感的に学ぶことが出来た
ちなみに受信プログラムを書き変えると、任意のパケットを受信して...などと簡易版Wiresharkを作成することもできるらしい
- 遠隔操作マルウェアの検知および検知回避
この講義の最初にShinoBOTという遠隔操作を疑似体験できるソフトウェアを用いて実際にお隣の人のパソコンを遠隔操作してみたりした
> calc
> calc
などとやって電卓をたくさん出すいたずらをしたり...笑
後半は実際に遠隔操作マルウェアをVBScriptで作成する時間であった
自身のスクリプトを埋め込んだり、コマンドを受け取って実行したりといった工程を行うように作成したが、私自身VBScript自体を理解することに時間がかかってしまい...
- ネットワーク通信から不審なものを見つけてみよう
この講義ではキャンプ用に貸し出されたパソコンに入っていた2種類のpcapファイルを読んでなにかおかしい通信を行っていないかを探し出す講義であった
1時間半ほどであったが、時間をフルに使って解析に当たった
早速pcapファイルをWiresharkで開いて通信でおかしなところがないかを同席した友人たちと見ていった
Export ObjectsやFollow TCP Stream等でいろいろ見ていくとexeファイルがあったりなんだりでもはやすべてが疑わしくなってきてしまうほどの情報量でとても大変であった
その中にIMAPパケットがあったので抽出してみると異常な動作をしたという内容のメールがあったのでそこからIPアドレスを絞ったりなどしていくと根源であるマルウェアを見つけ出すことが出来た
Wiresharkをもっと使いこなせるようになりたい...
- HTTPプロキシ入門
この講義ではHTTPなどの基本的な話から実際にツールを使って情報を書き変えたりしてみようというものであった
自分は高レイヤにもとても疎いので自分的には最初に基本的な話をしてくださってとても助かった
講義ではプロキシツールとしてBurpを用いた
Burpは以前に自分が初めて使ったプロキシツールであったが、うまく使いこなすことが出来なかったのでFiddlerに乗り換えて使用していたが、この講義でBurpの使い方を教わってこの便利さを知ったのでBurpを再び使い始めようかと思っている
最後はスマートフォンアプリの通信を改ざんして「アプリの正常な動作」に反する動作をさせようという演習を行った
Burp、すごいや!
教室に入ると、白い布に覆われたなにやら怪しいものを観測
この中には様々な通信機器が入っていて、何の通信機器であるかを見ないでコマンド等を用いて当ててみようという演習を最初に行った
自分たちが割り当てられたのはiPadとNintendo 3DSであった(当初はそれが何であるかを知らない)
pingやnmapを使って何の機器であるかを探り、「Apple」「Nintendo」であるということや開いているポートを特定したりなどをした
次にファジングツールを使ってその機器に脆弱性がないかどうかを検査する実習を行った
ファジング検査はざっくりいうと「ありとあらゆるデータ列などを通信機器に送り込んで誤作動を起こさないか」を見るものである
そして今回使わせていただいたファジングツール、ライセンスを買うととんでもな額になるものらしい...こんな貴重な体験させていただけてキャンプに感謝です
- フォレンジック技術を用いたインシデントレスポンス
この講義ではフォレンジックを行う時に、どのようにして調査するためにデータをコピーするか、この状況下のときにはこのようにする、などといったようなインシデントレスポンスの基本を教わった
この講義で実際にデータを移してみたりFTK Imagerをつかってみたりと手を動かして体験することが多かった
印象に残っているのはデータを消した(上書きした)と思っていてもハードディスク上にははっきり残っていることがあるということであった
これも実習で体験したのだが、テキストファイルの最後の数百文字を削除して上書き保存して再びそのテキストファイルを開くと当然消した分は表示されない
しかしフォレンジックツールを用いてその周辺のデータを見てみると消したはずのデータが一部が残っていた
こういう性質からデータの尻尾をつかむことが出来るときがある模様
- レイヤ1からのネットワークセキュリティ - 光ファイバの盗聴および侵入手法の研究
教室に入ると驚くべき数の講師陣が後ろに...!!
そして教室の真ん中にはなにやら異彩を放っている物体があったりととにかくすごいの一言しか出なくて一瞬教室を間違えたと思って出て行ってしまった
講義の前半は光ファイバを用いた技術についての話を聞いた
先生の話し方や怪しいアヒルの存在からか笑いの絶えない講義であった
後半は実際に盗聴士になったつもりで実習を行った
やりかたとしては「スッとやってキュッとしてプツンとしてカチッとやる」のような感じ(意味不明)
それぞれの工程、最初は自分含め皆おぼつかない手つきでああだこうだと悪戦苦闘していたが、後半になると皆ぱっぱと出来るようになって先生から「セミプロの盗聴士になれたんじゃないかな」と言われた笑
やり方を知ったもののこれをする準備がものすごく大変なので実際にやろうとは到底思えないので絶対やることはない
これをする中で一番大切なアイテム:"めがねクリーナー ふきふき"
前半は専用線に関する基礎的な話と通信経路には複数本あって...などの話を聞いた
光をプリズムに通すと様々な色に分かれるが、それを利用して通信を区別している話はとても興味深かった
後半は実際に専用線を自分たちで延長して通信してみようというものであった
が、これを行うためにクロスウェーブ幕張→電話局→クロスウェーブ幕張という何とも謎な専用線を張ったという
講師陣 参加者命名、「日本一無駄な専用線」
そして一端に光ファイバをつなげて、階段をのぼって講義教室まで引き伸ばし、再び階段を下りてもう片方の末端から別の光ファイバをつなげて、また階段をのぼって講義教室まで引き延ばす、つまり
教室→クロスウェーブ幕張→電話局→クロスウェーブ幕張→教室
という専用線を作成した
そこで光がどうなっているかなどを観察したり、通信を行ってみたりした
通信するパソコンはほんの2メートルほどしか離れていないのに通信経路の長さは10キロメートル弱
本当に無駄な専用線であったが、とても面白く貴重な体験をさせていただいたと思う
- CTF for ビギナーズ 幕張 in セキュリティキャンプ2015
キャンプ前から一番怖かったものだったりする
バイナリ問題をぜひとも...という意気込みで問題に当たったが自分の目が節穴だったり力不足でうまくいかなかった
最近自分は旗取りに向いてない気がしてきている
最後に
終えた今でも自分がなぜセキュリティキャンプに参加させていただくことが出来たのか、と思うことがあるがそれでも参加できたことは光栄だしとても貴重な体験をしたり、そこでたくさん友達が出来たりといいことであふれていた
このイベントは終わりではなく始まりに過ぎないことは言うまでもないのでこの経験からさらに勉強を重ねていきたい
今回教えてくださった講師陣やいろいろ助けてくださったチューターの方々、そしてそこで出会った友人たちに感謝いたします
ひとまずネットワークに興味を持ち始めたり...???
しかしとりあえずとある本を読み終えないと...
余談
CentOSの圧倒的重さ!!
終わり
seccamp15 応募用紙 選択5
今更であるが以前書いた応募用紙選択2に引き続き選択5を載せようと思う
応募用紙の原稿ファイルの所在を忘れそうなディレクトリに入れてしまったのでなくしても困る
ずいぶんと荒い解答をしたので読む人からすれば雑だろうと思われたと思う
(1)【必須】上記の C 言語のプログラムはどのような動作をしますか。また、この関数を呼び出して利用する main 関数の例を作成してください。
(2)【必須】上記のアセンブリコードを、いくつかのブロックに分割して、おおまかに何をしている部分かを説明してください。もし、上記のアセンブリが気に入らないのであれば、好きなアーキテクチャやコンパイラのアセンブル結果を載せて説明しても良いです。
(1)function関数は引数に渡した数字nをその(数字-1)までのnの倍数を順次配列に格納する動作をする
つまり、
n*0, n*1, n*2, … n*(n-1)
をそれぞれ配列0,1,2,…,n-1番目に格納する。
倍数の配列が出来上がったので、配列の並びを見ると初項0,公差nの等差数列になっているのでこの和を求めるmain文を作成した
以下にそのmain文を掲載する
q5.c
#include<stdio.h>
void function(int *array, int n){
int i;
for(i=0; i<n; i++){
array[i] = i*n;
}
}
int main(){
int j,sum;puts(“どの数字の倍数にするか入力してください”);
int n;scanf(“%d”,&n)
int array[n];
function(array,n);
for(j=0;j<n;j++){
sum += array[j];
}
printf("この等差数列の総和は%d\n",sum);
}
試しに実行した結果を以下に載せる
$ ./a.out
どの数字の倍数にするか入力してください
3
この等差数列の総和は9
(2)
0: 56 push %esi
1: 53 push %ebx
function関数を呼び出されてからesi,ebxレジスタを使用するのでスタックに値を避難させている
2: 8b 5c 24 0c mov 0xc(%esp),%ebx
6: 8b 4c 24 10 mov 0x10(%esp),%ecx
function関数に渡された引数をレジスタに格納する
具体的には%ebxにarray配列のポインタを、%ecxにnの値を格納している
a: 85 c9 test %ecx,%ecx
c: 7e 18 jle 26 <function+0x26>
for文の中でゼロ判定を行うのでゼロフラグをリセットさせるためにtestを行っている
e: 89 ce mov %ecx,%esi
10: ba 00 00 00 00 mov $0x0,%edx
15: b8 00 00 00 00 mov $0x0,%eax
for文の中に突入するための準備を行っている
具体的にはiの0の初期化、配列番号の0の初期化、掛け算を円滑に行うためのnのコピーをしている
1a: 89 14 83 mov %edx,(%ebx,%eax,4)
1d: 83 c0 01 add $0x1,%eax
20: 01 f2 add %esi,%edx
22: 39 c8 cmp %ecx,%eax
24: 75 f4 jne 1a <function+0x1a>
for文の中身
順に配列の番号のシフト、iのインクリメント、掛け算の計算(edxはforを回すたびにn増加しているので事実上掛け算が成立している)、i < nの判定、cmpのフラグから再びforに戻るかbreakするかの命令を行っている
26: 5b pop %ebx
27: 5e pop %esi
28: c3 ret
function関数の冒頭で避難させたレジスタの内容を元に戻してreturnをしている
アセンブリをもっとすらすら読めるようになりたい...