やっつけ不定記

好きなときに好きなことをちゃっちゃと書いてます

Fateなマスクケースをもらってみた

今日から公開の劇場版Fate/stay night [Heaven's Feel]の最新作。
自分が見に行くのは少し先なのですが、初日舞台挨拶の回は超争奪戦だったようで、
関わってたらえらいことになってたのかもしれません。

そんな中、ふらりと某店を通りかかったら、ちょっとした行列が。
何じゃらほいと見てみると、Fateのマスクケースを無料配布しているとのこと。
全然ノーマークでした。

店に入る用事すらなかったのですが、せっかくなのでゲット。
かなり大量に在庫があったようで、列はすぐに解消。後は半ば叩き売りな感じでした。
ちょうどマスク収納的なものが欲しかったのもあったので、これはめっけもん。

f:id:chocopurin:20200815212409j:plain

 

Pysaを動かしてみた

前回
https://chocopurin.hatenablog.com/entry/2020/08/08/222013
の続き、目的のPysaに入ります。

Pysaを知るには、チュートリアルPJ
https://github.com/facebook/pyre-check/tree/master/pysa_tutorial
を試した方がよいとのことですが、まずは正攻法で公式ドキュメントから。
Running Pysa
https://pyre-check.org/docs/pysa-running.html
をなぞってみました。
環境は前回のDockerコンテナをそのまま使っています。

(1)必要なファイル群
カッコ内は原文および本件におけるファイル名です。
各々が何を表しているかは原文参照。

・診断対象のソースコード(source.py)
・Taintコンフィグファイル(taint.config)
・Taintスタブ(general.pysa)
・Pysaコンフィグレーション(.pysa_configration)

(2)診断対象の作成

root@[コンテナ名]:/# cd ~
root@[コンテナ名]:~# mkdir static_analysis_example
root@[コンテナ名]:~# apt-get install vim
エディタ入ってなかったので、急遽追加
root@[コンテナ名]:~# vi static_analysis_example/source.py
コードは原文参照

(3)taint.configの作成

root@[コンテナ名]:~# mkdir -p static_analysis_example/stubs/taint
root@[コンテナ名]:~# vi static_analysis_example/stubs/taint/taint.config
コードは原文参照

(4)Taintスタブの作成

root@[コンテナ名]:~# vi static_analysis_example/stubs/taint/general.pysa
コードは原文参照

(5)Pysaコンフィグレーションファイルの作成

root@[コンテナ名]:~# vi static_analysis_example/.pyre_configuration
コードは原文参照

(6)分析の実行

root@[コンテナ名]:~# cd static_analysis_example
root@[コンテナ名]:~/static_analysis_example# source ~/.venvs/venv/bin/activate
(venv) root@[コンテナ名]:~/static_analysis_example# pyre analyze
解析が走って、下記が表示される。
実行時点では原文の内容に加えて"stop_line"と"stop_column"という項目がある。
[
  {
    "line": 9,
    "column": 22,
    "stop_line": 9,
    "stop_column": 32,
    "path": "source.py",
    "code": 5001,
    "name": "Possible shell injection",
    "description":
      "Possible shell injection [5001]: Data from [UserControlled] source(s) may reach [RemoteCodeExecution] sink(s)",
    "long_description":
      "Possible shell injection [5001]: Data from [UserControlled] source(s) may reach [RemoteCodeExecution] sink(s)",
    "concise_description":
      "Possible shell injection [5001]: Data from [UserControlled] source(s) may reach [RemoteCodeExecution] sink(s)",
    "inference": null,
    "define": "source.convert"
  }
]

(6)その他
--save-results-toオプションをつけると、詳細結果がtaint-output.jsonとして保存される。
taint-output.jsonは原文「Static Analysis Post Processor
https://pyre-check.org/docs/static-analysis-post-processor.html
で使う模様。

(venv) root@[コンテナ名]:~/static_analysis_example# pyre analyze --save-results-to ./
(venv) root@[コンテナ名]:~/static_analysis_example# ls
source.py  stubs  taint-metadata.json  taint-output.json
(venv) root@[コンテナ名]:~/static_analysis_example# cat taint-output.json
何かしら、長いJSONが表示される。

PyreのGetting Startedをやってみた

NANA MIZUKI LIVE GALAXY 2016の配信動画をお供に、Pyreというツールを眺めています。
本来の目的はPysaを試すことなのですが、公式ドキュメントの読み方が間違っていなければ、
PysaはPyreの一部、つまりPyreを使えなければいけないと理解しています。
https://pyre-check.org/docs/getting-started
Getting Startedをしてみないと始まらないので、雑にですが実施記録を書いてみます。
実施した環境はUbuntuのDockerコンテナです。

(1)環境の確認~前提ミドルウェアのインストール

root@[コンテナ名]:/# cat /etc/os-release
NAME="Ubuntu"
VERSION="20.04 LTS (Focal Fossa)"
・・・
root@[コンテナ名]:/# apt-get update
root@[コンテナ名]:/# apt-get install python3 python3-pip watchman python3-venv
---
ドキュメントにはないが、python3-venvを入れておかないと、
後の python3 -m venv ~/.venvs/venv で怒られる。
---
root@[コンテナ名]:/# cd
root@[コンテナ名]:/~# pwd
/root

(2)Getting Startedお試し

root@[コンテナ名]:/~# mkdir my_project && cd my_project
root@[コンテナ名]:~/my_project# python3 -m venv ~/.venvs/venv
root@[コンテナ名]:~/my_project# source ~/.venvs/venv/bin/activate
(venv) root@[コンテナ名]:~/my_project# pip install pyre-check
(途中の出力にERRORとあったけど、最終的に下記Successfullyになったので一旦無視。)
・・・
Successfully installed dataclasses-0.6 libcst-0.3.9 mypy-extensions-0.4.3
 psutil-5.7.2 pyre-check-0.0.52 pyre-extensions-0.0.18 pywatchman-1.4.1
  pyyaml-5.3.1 typing-extensions-3.7.4.2 typing-inspect-0.6.0
(venv) root@[コンテナ名]:~/my_project# pyre init
? Also initialize a watchman configuration? [Y/n] Y
{
    "watch": "/root/my_project",
    "watcher": "inotify",
    "version": "4.9.0"
}
 ? Which directory should pyre be initialized in? (Default: `.`): .
(venv) root@[コンテナ名]:~/my_project# echo "i: int = 'string'" > test.py
(venv) root@[コンテナ名]:~/my_project# pyre
 ? Found 1 type error!
test.py:1:0 Incompatible variable type [9]: i is declared to have type `int` but is used as type `str`.
(venv) root@[コンテナ名]:~/my_project#

<戦利品>
ヲタクに恋は難しい(9)
ぼくたちは勉強ができない(18)

豪華な缶バッジを買ってみた

ふと思い出したので、昼食は
https://www.nakau.co.jp/jp/campaign/2020/200730mizukinana/
に乗っかることにしました。

f:id:chocopurin:20200806224429j:plain

f:id:chocopurin:20200806224432j:plain

現地で食べてもよかったのですが、リブロースステーキ重をテイクアウトすると
缶バッジがついてくるとのことで、そちらを選択。
並サイズでもなかなかのボリュームです。

f:id:chocopurin:20200806224436j:plain

f:id:chocopurin:20200806224440j:plain

領収書がキャンペーンの応募券になるのですが、券売機のデフォルト設定が
「発行しない」なので、毎回ミスりそうになるんですよね、これ。

第22回総サイLT大会に行ってみた

総関西サイバーセキュリティLT大会#22にオンライン参加してきました。
https://sec-kansai.connpass.com/event/181865/
ご時世的にテレワーク関連の話が多い印象でした。

このLTイベント、開催毎に聴講は続けていたのですが、
今回は登壇をやってみました。資料はこんな感じです。


ちょっと前に書いた
https://chocopurin.hatenablog.com/entry/2020/07/29/014056
がベースになっています。
改めて振り返ってみると、最後に登壇してからちょうど2年ですね。
https://chocopurin.hatenablog.com/entry/20180808/1533743045

Re: PSPのバッテリー

先日注文していたPSPのバッテリーが到着しました。
純正品はすでに販売終了。互換品ですが、使用頻度を鑑みていいことにしました。
元のバッテリーと並べてみると、膨らんだ方は一回りほど大きくなっていたようです。
互換バッテリーは品質の当たりハズレが多いというのをよく見かけましたが、
今のところ、普通に動いています。

f:id:chocopurin:20200801210732j:plain

f:id:chocopurin:20200801210738j:plain


起動テストにとおもむろに起動したツインビーPORTABLE。
「出たな!」と「ヤッホー」しか収録されていないと思ったら、
「もえろ」と「レインボーベル」以外全部入っていたのすっかり忘れてました。
「Pop'n」が収録されていたのはめっけもん。特に音楽は秀逸。
別途Pop'n ツインビーのサントラを購入していたのですが、おしごと中のお供に合いまくりぱない。

f:id:chocopurin:20200801210741j:plain

f:id:chocopurin:20200801210745j:plain

渦中に飛び込むことになった

基本的に自宅警備員生活を謳歌していたのですが、明日は健康診断。
今週辺りから例のウイルス新規感染者が増えている中、
朝から街の中心地の病院に行かなければなりません。
大事なことなのはわかりますが、ちょっとタイミング悪すぎる・・・。