拾い物のコンパス

まともに書いたメモ

PCのBluetoothバージョンを確認するコマンド(Arch Linuxを例に)

Bluetooth 5.0は速いと聞く. でもPC・イヤホンなどのBluetooth機器が両方ハード・ソフト的に対応していないと使えないらしい. ソフトはアップグレードできるから,とりあえずPCのハードはどのバージョンなのかを確かめたメモ. コマンド郡 コマンドの流れ…

情報系カンファレンス格付けサイトCOREを知った話

カンファレンスの格付けが素早く調べられるCOREを知った話. 背景 研究の流行やState Of The Art(SOTA)を知りたいときはトップカンファレンスの論文を探すことから始めるようにしている. 限られた時間で質の良い論文をすばやく探すのは重要だ. 課題 論文を…

Filesystem Hierarchy Standardを読む

Linuxに出会ってから10年ほど経つが標準文書を読んだことはなかった. まずはファイルシステムについて規定されたFilesystem Hierarchy Standardを理解がてらまとめる. 適宜省略しているため必要に応じて原文を読んでください. Linuxの標準について Linux…

VagrantでRust製デバドラを動かす環境を作る話

CTF問題でもない限り好んでUse After Freeバグを作りたくはない. その点Rust(ラストと読むと最近知った)はC/C++に比べてメモリ管理について優れていると言われている. 低レベル操作も充実していて速度もC/C++並に出るときもある. Rustのチュートリアルを…

Linux環境でのインストールスクリプト確認用にdocker-composeを整備する

開発したプログラムが複数の環境上で動くかどうかの確認をしたいときがある. 例えばUbuntu, CentOSはバージョン・ディストリの特徴によって環境が僅かに違うが,新しいOSをインストールした際の設定自動化スクリプトはどんな場所でも動いてほしい. 例えば…

plantUMLを試してみる

自分には絵心がない. 加えて図を作るときはパワポに毎回素材のファイルを探して貼って線をなるだけ真っ直ぐに書いて,オブジェクトと線が離れていたことに後で気づいて微修正・・・.苦痛が伴う. しかし図による理解は100行の文章に勝る.(正確に描かれて…

Arch Linuxの有線LANが繋がらなかったしょうもない話

あるときしばらく有線LANを使わずにWifiでのみネットを使っていた. 久しぶりに有線LANを差したら問題なさそうに見えるのにネットにつながらない(IPが取れてない). 結論を言えばdhcpが動いていなかった. そんなしょうもない話を戒めに書き残す. さっさと…

プログラム実行時の命令数(関数単位)を可視化してみた

Intel Pinで任意のプログラム実行時の実行命令数を関数単位で計測し,d3.jsに食わせたという話. 背景 プログラム解析時に複雑で命令数が多いところはなるだけ読みたくない. 読むなら心構えがしたい. 一目でわかるようにできないかと思って可視化に手を出…

yaourtがいつの間にか消えていた話

AUR使うときに世話になっているyaourtがいつの間にか開発終了していて,yayという代替プログラムに乗り換えた. 経緯 3年ぶりくらいに Arch Linux を最初からインストールして環境を構築した. AURを使うために $ pacman --sync --refresh yaourt とかでyao…

CiscoルータからSCPでIOSを抽出する方法メモ

CiscoのルータからIOSを抜き出すときは,FTP経由での方法をよく聞く. そこでFTPを試してみたが,上手く行かない. デバッグする気が起きなかったから,SCPで抜き出してみることにした. コピー先のWindows上でサーバを立てるのは手間だから,ルータ上でSSH…

pycを読む(スクリプト味)

前回はpycを低レベルな命令に変換して読む方法を説明した. あれはあれで読めはするが,アセンブリ言語と同様の読みづらさはある. 今回は直接pycをpythonのスクリプトまで変換する方法を紹介する. 変換するライブラリは複数あるが,ここでは uncompyleを使…

pycを読む(アセンブリ味)

pycファイルだけが手元にあり,なにが書いてあるか読みたいときがある. pycのバイトコードは逆アセンブルして読める. やり方と例文をまとめる. ただし,これは低レベルな命令になるから可読性は良くない. 直接pythonコードにまで戻す方法があるから,そ…

volatilityにSANSのプラグインを追加する方法

volatilityでmimikatzを使いたくなった. セットアップ方法が見つからなかったから書き残す. mimikatzとは Windowsのパスワードなどの各種認証情報をメモリから抜き出すツール. 管理者権限の取得やなりすましにも使える. CTFではメモリダンプからアカウン…

Linux系のバックアップ方法メモ

Linuxが動いているサーバのバックアップを取ろうとした時に考えたことのメモ. 差分とか定期的バックアップとかいった頭の良いことは他に書いてあるから,取り扱わない. サクッとできるやつだけ. あくまでメモだから,詳しい方法とかは割愛する. 状況 そ…

いつの間にかLinuxの/bin関係が/usrへのシンボリックリンクへ変わっていた話

タイトルの通り.気になったから調べた. 調査結果を書き残すが,誰にとって役に立つのかはわからない. 何が起こった 普段はArch Linuxを使っている. 何気なくls / をすると,いつの間にか/binが/usr/binへのシンボリックリンクになっていた. な・・・ な…

Arch Linuxでカーネルパニックが起こった時にやったこと

普段使っている相棒はArch Linuxをインストールしている。 Ubuntuと違い、提供されるパッケージが最新のものだから使いやすい。 しかし今回pacman -Syuを実行したところ、多分kernel panic(freeze?、hang up?、違いがわからない)と呼ばれる現象が起こるよう…

Ubuntuでインストールできるradare2が古い時の対処法

Ubuntuのapt/apt-getでインストールできるradare2が古いため、一部のコマンドが実行できないという話をブログや知り合いから聞くようになった。 初めて使うツールは動かないだけで使うのをやめてしまうことが多いだけに、割と深刻である。 というわけで、調…

main関数の無いプログラムを動かすために奔走した話

ディレクトリを眺めていたら,セキュリティを始める直前あたりに頑張ったプログラムが見つかった. 初めの一歩みたいなものだから,改めて見直しがてらいじったことを書き残す. 内容はmain関数が実装されていないけど動くプログラム. 確か元ネタはこれ. …

pythonでシェルコードを実行する方法

オライリー出版のサイバーセキュリティプログラミング(英題: Black Hat Python)にPythonでシェルコードを実行するスクリプトが載っていた.前から実行する方法を探していたから,喜んで試してみたが上手く行かない. 原因は簡単でPythonのバイナリ自体にNX…

PEMUを動かしてみる

Dynamic Binary Instrumentation(DBI)を行うフレームワークの一つ,PEMUを使ってみた.githubの説明が簡潔すぎて動くまでに時間がかかったから,手順を書き残す. pemu自体はqemuをベースに作成されているから,作業の所々にQEMU関連の操作が入る. OSの準備…

radare2によるバイナリ編集

radare2はデバッガであり,バイナリエディタでもある.バイナリエディタとして使えると何かと便利だと思い,調べてみた. 基本的なことを書き残す. 環境 $ uname -a Linux poppycompass 4.11.3-1-ARCH #1 SMP PREEMPT Sun May 28 10:40:17 CEST 2017 x86_64…

volatilityにプロファイルを追加する方法

メモリダンプ解析用ツールvolatilityはデフォルトではWindowsのメモリダンプのみが解析できる.LinuxやOSXで作成されたメモリダンプを解析するためにはプロファイルを追加してやれば良い.公式から用意されているものを使うこともできるし,自作することもで…

サイボウズの開発インターンに参加してきた

サイボウズで行われている開発インターンに3週間行ってきた.何をしたのかを含めて振り返りを書き残す. きっかけ 就職が近くなってきて,どこか行かなきゃとは思うけどどこにいったらいいのかわからない. 周りの人は有名企業のエリートコースを狙って頑張…

findしてlessする動作を自動化するシェル関数

基本的にfindコマンドで探したファイルはlessなどで閲覧することが多い.大きなプログラムだと,ディレクトリごとに名前が同じファイルがあったりするから,findして目grepしてパスをコピーしてlessするって動作を繰り返しているとうんざりしてくる.そこで…

既出の値を判定するコードについて思いついたこと(ビンゴゲームをネタに考える)

重複を許さないランダムな数値を一定数生成したいという機会は割りと遭遇する.このときの既出判定についてふと思いついたことを書き残す. 「そんなの一般的に使われている」というツッコミは置いておく.実装についての答えを示すものではなく,「簡単な用…

Linuxで突然startxが起動しなくなったときの対処

startxが上手くいかないときの対処はググると色々出てくるが,ややこしいやつばかり出てきた.そして,それを試しても成功しなかった.最終的に上手くいったことを書き残す. 症状 それまで普通に使えたUbuntuを再起動した途端にGUIで起動しなくなった.$ st…

使えれば良いやradare2(静的解析編)

バイナリ関連の機能を一通り提供するフレームワークradare2,通称r2(d2はない模様)による静的解析をざっくりと紹介する.CLIベースの使い方はいろんなサイトが詳しくやっているから,Visual Modeの使い方を中心に解説する. radare2について radare2について…

csawctf 2016 writeup(forensics)

書くことがないから,最近参加したCSAWCTF 2016のWriteupをメモしておく.分野はforensics.ExploitやWebに比べると日本では人気がない印象があるのが残念. evidence evidence.zipという壊れたZIPファイルが与えられる. $ unzip -l evidence.zip Archive: …

OSX(mac)にXmonadをインストールする方法

普段はLinuxにXmonadを入れて作業をしているが,短期間だけOSX(mac)を使うこととなった(知っている企業や大学ってやたらとLet's NoteとMacbookが好き.ThinkPadも選択肢に入れて欲しい).普段通りに作業するためにOSXにXmonadを入れる方法を模索し,動かすと…

ELFバイナリのデバッグ時の関数名を読めなくする方法

Defconとかでは問題のELFバイナリをデバッグすると,ユーザ定義関数名だけでなく,ライブラリ関数名も読めなくなっている.どうやるとこんなバイナリを作れるのかを調べてみた.結論から言えば,静的リンクでコンパイルして,stripでデバッグシンボルを消す…