MawaLog

一日一日、楽しく生きる。技術と音楽が好き。

ノートパソコンのWindowsからUbuntuへ移行。さらにpython開発環境構築手順メモ

Ubuntuセットアップ

用意するもの

  • ノートパソコンWindows(たしか10だと思う10以外も対応可能だと思われる)
  • USBメモリ

参考になった記事
yoshinorin.net

手順1

Windowsデスクトップにダウンロード

  • Rufus(イメージファイルをUSBに起動用に書き込むソフト)
  • Ubuntuイメージ(16.04LTS isoファイル)

Rufusダウンロードページ
Rufus - Create bootable USB drives the easy way

Ubutntuイメージダウンロードページ(ここだったのかな・・・たしか)
Ubuntu 16.04 LTS 日本語 Remix リリース | Ubuntu Japanese Team

手順2

Rufusで、USBにUbuntuのisoイメージ書き込み

手順3

ノートPCにUSB挿したまま、再起動、BIOSを表示 Lenovoロゴが見えた瞬間にF2ボタンを押すと出る

手順4

BIOSのOSブート優先度をisoイメージのはいったUSBを指定

保存、再起動

手順5


Ubuntuにインストール開始

Windows削除してUbuntuインストールを選択

適当にあとは選ぶと完成

python開発環境構築

UbuntuMacOSXと同じく、最初はどうもpython2系しか入ってないね

手順2−1

pip入れる

sudo apt install python-pip

手順2−2

色々必要なツールを入れる

$sudo apt install -y make gcc

$sudo apt install -y make build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev libncursesw5-dev xz-utils

手順2−3

git入れる(pyenv入れるのに必要)

sudo apt install git

手順2−4

pyenv入れる pyenv-virtualenvというのも入れる

git clone https://github.com/yyuu/pyenv.git ~/.pyenv

git clone https://github.com/yyuu/pyenv-virtualenv.git ~/.pyenv/plugins/pyenv-virtualenv

.bash_profileの編集用にvim入れる

sudo apt install vim

~/にcd .bash_profileを作成

touch .bash_profile

.bash_profile

export PYENV_ROOT=$HOME/.pyenv
export PATH=$PYENV_ROOT/bin:$PATH
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"

読み込む

source ~/.bash_profile

pyenvが使えるか確認

$pyenv -version
pyenv 1.2.4-1・・・と出たらOK

pipの設定で※死にかけた

pip install --upgrade pip

こうするとエラーがでた

$ pip
Traceback (most recent call last):
  File "/usr/bin/pip", line 9, in <module>
    from pip import main
ImportError: cannot import name main

このコマンドで直ったなぜだろう・・・(後日確認) runble1.com

手順2−5

virtualenv入れる(さっきpyenv-virtualenv入れたから大丈夫かも・・・)

sudo pip install virtualenv

virtualenvで仮想環境構築時にエラー

UnicodeDecodeError: 'utf8' codec can't decode byte・・・

日本語の「デスクトップ」というパスのせいでエラーになった模様。なので、トップディレクトリ~でvirtualenv .で行けた

手順2−6

python3系を導入

$pyenv install 3.6.3
$pyenv global 3.6.3

で、pythonバージョン変わらず・・・

$eval "$(pyenv init -)"

をいつものようにコマンド入力したらバージョンも3系になった。

データサイエンス系のモジュールを入れるなど

ハマったポイント

Jupyter notebookで普通にpip install jupyterだとpython2のカーネルしか起動しないのでpython3が使えないという事象が起きる。

解決方法 python3の状態で(aptの操作なので影響してないかも)

sudo apt-get install ipython

をすると、jupyter notebook でpython3が使えるようになりました。

参考リンク

jupyter notebookをubuntu 16.04にインストールするときにハマった罠 | gepulog

scikit-learnとか入れていきます

$sudo pip3 install seaborn scikit-learn xgboost

Open-CV用

qiita.com

逆アセンブルとは何か

セキュリティコンテストのためのCTF問題集

セキュリティコンテストのためのCTF問題集

アセンブルって何

CTFの問題集の解説にちょくちょく出てくる。何だろう。下記の解説が役立った。

language-and-engineering.hatenablog.jp

d.hatena.ne.jp

私の得意技:逆アセンブルしながら処理内容を解析

(予想だけど)要は、コンパイルしたあとに出てくる実行ファイルを元にソースコードを完全に復元するというのは逆コンパイルというけども、それはなかなか一定条件が満たされないと難しいので、どんな定数を使っているか、などの情報が部分的にわかるようにファイルのコード変換を行うのが逆アセンブルと言う感じで、これらの全般をリバースエンジニアリングと言うようだ。まあこの辺は語句定義にすぎないので、問題さえ解ければなんとなくでいいや。

開発日誌:エンディアンとは

これをやってます。

セキュリティコンテストのためのCTF問題集

セキュリティコンテストのためのCTF問題集

経緯

基礎固めにこの記事を読んでいて 楽しいPwn入門 · GitHub

エンディアンに注意」という部分がよくわからなかったので調べました。

下記がよくまとまってました。なるほど・・・
Endian(エンディアン)ってなに? | 学校では教えてくれないこと | [技術コラム集]組込みの門 | ユークエスト株式会社

要するにメモリにデータを格納していくときに、1バイトごとにデータを分割して格納される、その格納の順番がエンディアン

エンディアンは主に3種類、ビッグエンディアン、リトルエンディアン、両方対応のバイエンディアン

ネットでつかうTCP/IPはビッグエンディアン

エンディアンに注意する例

参考記事からの引用です。

if (secret == 0xc0deface){
    puts("flag is ...");
  }

と、あるところ、バイト列を"0xc0deface"と入力するには、下記のようになります

'\xce\xfa\xde\xc0'

\xで区切られて、逆順に2文字ずつ並んでいますね。この並びがエンディアンというわけ。スペースで更に区切ると分かりやすいかな・・・

'\x ce \x fa \x de \x c0'

参考記事

楽しいPwn入門 · GitHub

gcc でC言語ファイルコンパイル@MacOSXのメモ

#経緯

これを読んでます。

セキュリティコンテストのためのCTF問題集

セキュリティコンテストのためのCTF問題集

gcc は cのフリーコンパイラということで使い方メモ

メモ

これを実行するためのgccメモ 楽しいPwn入門 · GitHub

$ ls
overflow1.c
#C言語ファイルoverflow1.cしかないよ

$ gcc overflow1.c -o overflow1 
#ちなみにgcc => g++とコンパイラを変えると
#C++のコンパイルできる模様

$ ls
overflow1   overflow1.c
#実行ファイルoverflow1ができてるね

$ ./overflow1 `・・・・文字列・・・・`
Abort trap: 6
#どうも引数のエラーらしい
#これは今度チェックしよう

参考記事

gcc

C言語で書いたコードをMacOSXで動かすときの環境構築メモ

#経緯

これを読んでます。

セキュリティコンテストのためのCTF問題集

セキュリティコンテストのためのCTF問題集

↓の、続き k-mawa.hateblo.jp

と、いうわけで、Cで作ったファイルも動くようにしたいと思います。ここのあたりはMacがせっかくUNIXマシンなのだから、Macで動かしたい・・・と、いうことで・・・

メモ

とりあえず、XcodeのGUIIDEでコンパイルして、実行がちょっとC++を試しにいじってみたときに面倒だったので、 k-mawa.hateblo.jp

なんとかコマンドで動かせないかなと思って、調べたら見つけた。 ecei-tohoku.github.io

これでちょっと現状でgccとか入っているか調べると以下のように出てきたので、コマンドで動かせるなということで環境はOKであろう。

$ gcc -v
Configured with: --prefix=/Applications/Xcode.app/Contents/Developer/usr --with-gxx-include-dir=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/c++/4.2.1
Apple LLVM version 9.1.0 (clang-902.0.39.1)
Target: x86_64-apple-darwin17.3.0
Thread model: posix
InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin

#gccは入っていると。

$ xcode-select -v
xcode-select version 2349.

#ついでにこのxcodeまわりのパッケージも
#入っているからいいっぽいな

参考記事

ecei-tohoku.github.io

開発日誌:セキュリティの勉強を本格的にはじめようかな

セキュリティコンテストのためのCTF問題集

セキュリティコンテストのためのCTF問題集

と、いうことで、積ん読状態だった本を取り出し、さらーと見てみた。とりあえず1問ずつ解いていくことで力がつくようだ。アプリ制作、ゲーム制作と同じだね^^

仕入れた知識

  • FLAG_{答え}を得るとゴールという問題がメイン?こういう問題をCTF(capture the flag)というようだ。
  • C言語と、低レイヤの知識の基盤が必要な問題が多い印象。指定のLinuxサーバーに侵入してFLAGを入手という問題(pwn問題というくくりなのかな??)や、バイナリ解析というバイナリデータをコマンドやツールを駆使して解析して、関数を再構築してバイナリに隠されたメッセージや数学の問題を解くとFLAGが出て来るような問題。
  • pwn = password own の造語(らしい)
  • Pythonは結構しばしば使いやすいぽい。Pythonユーザーはお得^^b
  • Webアプリ回りの知識で解けそうな問題も結構ある印象。(SQLインジェクションなどを駆使してWebアプリに管理者ログインする問題など)

まとめ

とりあえず、まだ土地勘があまりないので、1問とりあえず次は解いてみようと思います。

これも参考になりました

楽しいPwn入門 · GitHub

今週の目標

トミカ No.37 ミニ ジョン・クーパー・ワークス (初回特別仕様)

トミカ No.37 ミニ ジョン・クーパー・ワークス (初回特別仕様)

だいぶ仕事のやる気が復活してきた〜

デプロイ済アプリ

  • コンテンツのチェック・システム運営など(時間のほとんどこれに割いています)
  • Q&Aコーナーの追加(先週できず今週できたら・・・)

Django新規プロジェクト

  • Redis、Celeryでのタイマー機能実装実験(先週出来ず・・・今週できるかな・・・)
  • LINEやTwitterAPIのローカルテスト(これも先週できず・・・今週??)

セキュリティの勉強

  • 今日からちょっとだけ進んだ!

趣味のゲーム開発

  • 次何しようかなと考える=>2週前から進んでない!w 今週こそはちょっと考えるぞ〜