「PALO ALTO CORTEX XSOAR:A Practical Guide」はXSOAR初心者にやさしい唯一の本(だたし英語)

最近、XSOAR を触れる環境を手に入れたのですが、XSOAR については全くのど素人でしたので、右も左もわからない状態でした。

Youtube のXSOARに関するチャンネルをみたりもしていたのですが、そこで紹介されている手順が個人のPC環境ではなかなか手に入らない環境を前提としたものであり、実践が難しい状況でした。

そこで、参考になるものが他にないか探していたのですが、そんな中、英語ではありますが「PALO ALTO CORTEX XSOAR:A Practical Guide」という本がKindleで売られていることを発見しました。

まず本のサンプルでダウンロードしてみたところ、XSOAR 環境構築直後のコマンドラインやXSOARの中のPlaygroundを使った動作確認方法が書かれており、実際にそれを試したところ、コマンドの確認以上の効果を感じたので購入してみることにしました。

インシデントの取り込み方法をわかりやすく記載

SOARというとどうしてもPlaybookにフォーカスがあたりがちですが、この本ではそれを作成する前の

・マーケットプレイスからのインテグレーションの取り込み
・インテグレーションからインスタンスの作成
・インシデントタイプの作成
・データフィールドの作成
・分類(Classifier)やデータ・マッピング
・インスタンスへのインシデントタイプ、分類、マッピングの割当
・インシデントの取り込み

といったものが手順どおり1つ残らず記載されており、この通り進めていくだけで1〜日程度あればインシデントの取り込みまで完了することができます。

また当然ですが、上記以外にもPlaybookの作成やTIM(脅威情報マネジメント)の部分もしっかり書かれているようです。(まだ私はそこまでたどり着いていませんが。)

記載されている情報はやや古い

ただし、約1年前に発行された本のため、XSOAR ダッシュボードのGUIの記載については、ところどころ本の内容と実際の画面が異なっています。

もし上記の手順でひっかかってしまうことがあるとしたら、この画面の差異によるものかなと思います。

Gmail のフォルダからSpam報告メール取り込み

実際に私はこの本を見ながらXSOARでインシデント作成までの手順を実施してみましたが、XSOAR のインストールがすでに完了している状態だったので、半日かからずに完了することができました。

すこし手こずった部分があるとすると、先ほど触れた情報の古さの部分ですね。

また、私が英語を読み飛ばしてしまっただけかもしれませんが、ほんの一部、明確に記載がされていない部分があったようにも思います。

ただそれも、考えれば対応可能な範囲ですので概ね問題ないかと思います。

今後はこの本の後半戦の実践にチャレンジ

先ほど書いたように、私は今のところインシデントの作成の部分までしか読んで実践できていません。

これからもこの本を参考にしながら、そのインシデントをトリガとしたPlaybookの作成をしてみたいと考えています。

つるぎ町立半田病院のコンピュータウィルス感染調査報告書は学ぶことが多い

先月6月16日に、徳島県つるぎ町立半田病院のコンピュータウィルス感染について調査報告書がまとめられております。

それをあるきっかけで読んでみたところ、大変学ぶところが多かった為、特に印象に残った部分を記録しておきます。

病院側の素早い対応

報告書を読んでみて、まず病院側のランサム 事案発生後の対応が素早いと感じました。

これは報告書の中にも書かれているとおり、ランサム を想定したものではありませんが、大規模災害発生時に備えて、BCP をちゃんと作成されていたためだと思います。

構築ベンダー側のセキュリティ意識の低さ

一方で、病院のシステムを構築したベンダー側(A社、C社)は、システム構築時にいろいろと不手際があったことはいなめないかなという印象です。

特に構築時の対応としてまずいかなとおもったのは以下の3点です。

1.VPN装置(FortiGate E60)がインターネットのどこからでもアクセスできるようになっていた。
2.Active Directoryにてログオンにいくら失敗してもロックアウトされないようになっていた。
3.各サーバ/PCにてWindows Updateが止められており、またウィルス対策ソフトが導入されていなかった。

FortiGateの脆弱性を放置し続けたのは両者の責任ではないか?

ただ、運用時においてFortiGate E60の脆弱性をそのまま放置し続けていた点については、システム管理者が1人しかいなかったとはいえ、病院側の対応もまずかったのではないかと思います。

FortiGateの脆弱性は何度もニュースで流れていましたからね。

インシデント対応時のベンダー対応についてはいろいろ考えさせられる

1.VPN装置(FortiGate)を慌ててアップデートしてログを消失

慌てていたとは言え、この点はかなりまずかったですね。

この作業をしていた時点で侵入経路がわかっていなかったとはいえ、あわててファームウェアをアップデートしたということは、ここからの侵入の可能性があったわけです。
そうであれば、まずはログの確保が優先だったのではないでしょうか?

ファームウェアのアップデートでログが消えるということを知らなかったのかもしれませんが。

まず、抜線隔離し、ログ確保ということですね。

2.端末調査のためにサーバやPCを自社に送付させ、その輸送中に機器が壊れる

ここは送ってほしい気持ちはわかります。調査の設備的に、会社に送付してもらったほうが十分は調査ができるので。また現地のプレッシャーの中で調査するのは躊躇われるのも理解はできます。

ではどうすればよかったか。正直、精密機器専門の業者に輸送をお願いするくらいしか、私には思いつきませんでした。

3.ファストフォレンジックだがなかなか解析が終わらない、復旧したはずのサーバが復旧しきれていない

うーん、ここの技術的にはかなり難しいとおもうので一概に責められない気はしています。

ただ復旧したかどうかの確認は、もう少し手厚くやるべきだったのかもしれません。ネットワークにもどしてまた再発すると最悪なので。

4.ベンダーが何らかの方法で暗号化されたファイルを復号。本事案について攻撃者からの脅迫はなし・・・ここの関係は?

ここはベンダー側の説明があまりなかったということなので、今のところ判然としていないようですが、このレポートだけみると、なんらかの裏取引があったようにも見えてしまいます。

技術編のレポートも参考になる話がいっぱい

本編のレポート意外に技術編のレポートもありますが、このレポートも学びがたくさんありました。たとえば、以下の点です。

・ランサム の暗号化には楕円暗号も使われている
・ランサム の暗号化速度は1G〜10G/1分くらい
・暗号化を高速にするために先頭だけ暗号化していることが多い
・パスワードは16文字以上で利用する文字の指定をしないのがおすすめ
・RDPはログインログがデフォルトで残るが、それはやめたほうがいい
・RDPサーバは多要素認証できないので、その手前に多要素認証できる機器を置く

などなど。

正直、1度ざっと読んだだけでは気がつかないこともありそうなので、もう1回は読んでみたいと思っています。

2022.07.17 追記

もう一度技術編で気になっていた、封じ込め、復旧のところを読んでみました。

<封じ込め>
ここでは侵入者の締め出し観点で以下の対応を行うということだと思います。

1.VPN装置のLAN抜線(PCじゃないのでシャットダウンしてもよい?)やインターネット接続のホワイトリスト化(できれば全遮断。。。できるか?)
2.侵害された可能性のあるパスワードの変更
3.ADで不審なアカウント操作の確認などを行い、あやしいアカウントは削除
4.ログの分析と一元管理

<復旧>
1〜3あたりは普通やりそうですが、4、5まで出来たら完璧ですねー。

1.フォレンジックの実施
2.ウィルススキャン(封じ込め段階で実施するとまずいらしい。。メモリ上の痕跡や消えたり、ログが大量になってしまうから?)それでもだめなら初期化
3.データの復元
4.漏洩した可能性のあるデータの監視(ここは専門のベンダーに任せるしかないのかな。)
5.対応手順の更新(ここまでできるとすばらしいですねー。)

<参考サイト>

・コンピュータウイルス感染事案有識者会議調査報告書について(つるぎ町立半田病院)
https://www.handa-hospital.jp/topics/2022/0616/

Docker上でCentOSを動かしてMacOSからファイルをコピーしてみた

たまたま諸事情でMacOS上でCentOSを動かしたいなあと思い、すでにMacOS上に導入していたDockerをつかってみました。(なのですでにDockerがMacOS上に導入されていることが前提となっています。)

Docker上にCentOSを導入・起動した後で、Docker上のCentOS(bash)にアクセスし、MacOS 上のファイルをCentOSにコピーするところまでやってみましたので、記録として残しておきます。

1.Docker Hubにログインする

以下のとおり「docker login」コマンドでDocker Hubにログインします。

% docker login
Login with your Docker ID to push and pull images from Docker Hub. If you don't have a Docker ID, head over to https://hub.docker.com to create one.
Username: <ユーザ名>
Password:<パスワード>
Login Succeeded

Logging in with your password grants your terminal complete access to your account.
For better security, log in with a limited-privilege personal access token. Learn more at https://docs.docker.com/go/access-tokens/

2.CentOSのイメージがあるか探す

Docker HubにCentOSのイメージがあるか「docker search 」コマンドで探します。

docker search centos

コマンドの実行結果は以下の通りとなります。

docker search centos実行結果

どうやらOFFICIAL欄が[OK]となっていれば、イメージが存在するようです。

3.CentOSのイメージを引っ張ってくる

docker pull」コマンドを使い、Docker HubからCentOSのイメージをダウンロードします。

% docker pull centos
Using default tag: latest
latest: Pulling from library/centos
a1d0c7532777: Pull complete
Digest: sha256:a27fd8080b517143cbbbab9dfb7c8571c40d67d534bbdee55bd6c473f432b177
Status: Downloaded newer image for centos:latest
docker.io/library/centos:latest

4.CentOSイメージが取得できたか確認する

docker image」コマンドを使い、CentOSのイメージが取得できたか確認します。

 % docker images
REPOSITORY   TAG       IMAGE ID       CREATED        SIZE
nginx        latest    12766a6745ee   3 months ago   142MB
centos       latest    5d0da3dc9764   9 months ago   231MB

5.CentOSを起動する

docker run 」コマンドを使い、CentOS を起動します。
なおこのときに-it -d –nameを引数として使っていますが、以下の意味らしいです。

-it : i は –interactive、tはttyを指している
-d :detouchの意味でバックグラウンドでコンテナを起動する
-name:この後に起動する「コンテナ名」と「コンテナイメージ」を指定する

また起動したかどうかは「docker ps」コマンドで確認できます。

以下、実行例です。

% docker run -it -d --name centos centos
e6adb5a6a86d3c2682f64e064ba4d7e93624d493c48575c12305ae9e09319654

% docker ps
CONTAINER ID   IMAGE           COMMAND       CREATED         STATUS         PORTS     NAMES
e6adb5a6a86d   centos          "/bin/bash"   7 seconds ago   Up 6 seconds             centos
1bee05eeb204   centos:latest   "/bin/bash"   3 minutes ago   Up 3 minutes             condescending_banach

6.CentOSに乗り込めることを確認する

docker exec」コマンドでCentOS上のbashにアクセスすることができます。
アクセスできることを確認したら、「exit」でbashから抜けます。

% docker exec -it centos /bin/bash
[root@e6adb5a6a86d /]#  
[root@e6adb5a6a86d /]# pwd
[root@e6adb5a6a86d /]# cd tmp
[root@e6adb5a6a86d tmp]# 
[root@e6adb5a6a86d tmp]# exit
exit

7.MacOS上のファイルのCentOSにコピーする

docker cp」コマンドを利用すれば、MacOS上のファイルのCentOSにコピーできます。

以下はMacOSのカレントディレクトリ配下のファイルを、CentOSの/tmpディレクトリにコピーする例です。

% docker cp ./<ファイル名> centos:/tmp

以上、参考になれば幸いです。

<参考サイト>

・Docker Hubの使い方とGitHubからのDockerイメージ自動ビルド(@IT)
https://atmarkit.itmedia.co.jp/ait/articles/1408/26/news038.html
・DockerでCentOSを起動する(Qiita)
https://qiita.com/Gowldinq/items/1a3b31d0ae5792d3132b
・docker runの[ i, t, d ]オプションの意味を調べた(Qiita)
https://qiita.com/tacotopas/items/93dfcaa9f4dd6cfe0b95

Native Campの「TOEIC L&R TEST 800点対策」が意外とおもしろい件

8ヶ月くらい前からオンライン英会話をDMMからNativeCampに変えて、ほぼ毎日1レッスン受けています。

切り替えた直接のきっかけは会社から一定期間、補助金がでていたからですが、補助金がでなくなったあとも続けている理由は、Native Campではカランメソッドを受講できるからです。

そのカランメソッドもステージ2から12まで(Readingはスキップ)1周目が終了しました。

また、久しぶりにTOEICを受験することになったので、現在、カランメソッド2周目の合間に 「TOEIC L&R TEST 800点対策」を受け始めております。

そのTOEIC L&R TEST 800点対策」のレッスンが意外に楽しかったので、ここに概要を記載しておきます。

特にPart2がおもしろい

実はまだPart1の写真のやつと、Part2の正しい受け答えを探すやつしかやっておりませんが、いまのところPart2は意外とおもしろいなとおもっております。

だいたい1レッスンで5問ずつ解いておりますが、1問ごとの流れとしては以下のような感じです。

1.受け答え(QuestionとAnswer(A〜C))を一通り聞く

2.正しい回答(A〜C)を回答する

この時は「My Answer is letter A.」などと答えています。

また1回目で答えがわからなかった場合は、もう1度聞かせてもらえます。

3.講師から正解を聞く

この時、1発で正解するとわりとどの講師であってもけっこう褒めてもらえます。

4.Questionを再度聞き、聞き取ったとおりSpeakingする

正直、ここは難しいです。すべての単語を正確に(a とか the とか含め)聞き取ること自体結構難しいです。

また聞き取れたとして、Questionは文章がやや長めなので、正確に思い出しながらSpeakingするのは私にとっては難易度高いです。

5.正解のAnswerを再度聞き、Questionと同じようにSpeakingする

AnswerのほうはQuestionよりやや文章が短いですし、たまによくあるフレーズがでてくるので比較的簡単です。

6.QuestionとAnswerについて講師とロールプレイイングする

正直ここは講師によってやり方がちがうので、あまり明確に手順が決まっていないようです。

講師によっては3回同じ役割でロールプレイングを繰り返したり、途中でQuestionとAnswerの役割を講師と私でスイッチしたり、1回しかやらなかったり、いろいろです。

7.最後にもう一度、QuesttionとAnswer(A〜C)を聞き取る

カランメソッドとの違い

「TOEIC L&R TEST 800点対策」のレッスンを受けてみて、「カランメソッド」との違いを感じたのは以下の点です。

・最初の自己紹介が「TOEIC L&R TEST 800点対策」の方が長い気がする

これは私が「カランメソッド」をすでに長い間やっているので、その講師の方と話すことがなくなってきたということもあるかもしれません。

しかし、なんとなく「TOEIC L&R TEST 800点対策」の講師の方がまだ経験が浅い方が多く、生徒となんとかコミュニケーションを多く取ろうとしているようにも見えます。

これをフリーカンバセーションと考えると、臨機応変に答えないといけないので、Speakingの勉強にもなっている気がします。

・オーディオと更新の説明を交互におこなうのでたまにバグる

これも結果的にフリーカンバセーションになっているのですが、TOEICのリスニング音声を流したり、講師の説明(音声)に切り替えたりしていると、たまにシステムがバグってお互いの声が聞こえなくなったりします。

こういったハプニングも結構起こるので、そこから体勢を立て直す為にいろいろスピーキングしないといけません。ここもSpeakingの勉強になっているかなと思います。

以上、Part2をメインに「TOEIC L&R TEST 800点対策」のレッスン内容を説明しました。

Part3以降もいくつかレッスンが用意されているので、これから継続して受けてみたいとおもっております。

スマホアプリSimple Time Trackerでランニングの記録をとってみたら快適だった

コロナ禍になってからジム通いをやめて、外をランニングするようになりました。

しかし、ただランニングするだけだとモチベーションが続かないと思い、ランニングを記録するアプリをこれまでいつくか使ってきました。

しかし、それらすべてに言えることですが、ランニングを記録するアプリでは常にGPSで位置を取得している為、非常にスマホの電池の消費が早くなる、というのが悩みでした。

そこで、よりシンプルにランニングしている時間だけ記録してくれるアプリをさがしていたところ、Simple Time Trackerというアプリを見つけました。

ボタンを押すとシンプルに時間を測定

このSimple Time Tracker、名前の通り機能は非常にシンプルで、該当する活動のボタンを押すと時間を測り始めてくれます。

Simple Time Tracker 起動画面

たとえば一番左側の「running」のボタンを押すと、以下の画面になります。

running 記録中

そして、ランニングが終わったら、この緑色のバーを再度タッチすれば記録が停止します。

ランニング記録専用ではないので、ランニング中に誤ってボタンを押してしまっても止まらないような仕組みはありません。

しかし、シンプルすぎてランニング中に見る必要もないので、画面をバックグラウンドにしまっておけば、いまのところ問題はありません。

電池の消費は数%くらい、広告もなし!

GPSを使った記録アプリとくらべると、電池の消費は格段にすくないようです。

ただし全く消費しないわけでもないです。たぶん30分くらい走って数%消費するくらいかと思います。(スマホにもよると思いますが。)

また無料のアプリによくある広告表示も一切ありません。これはかなり助かります。

ランニング以外にも使える

当然ですが、このアプリ、ランニング以外にも使えます。私はこれを睡眠中にも使い、毎日どれくらい寝ているか測定しています。

その睡眠記録についても、最初は別のアプリをつかっておりました。
しかしなんとそのアプリ、電源を差して充電しながらつかっていても電池の充電がどんどん減ってしまうようになってしまった為、最近はこのアプリをつかっております。

新しい活動のアイコンを作る場合は、起動画面から「Add」のアイコンをクリックします。すると、以下のようにアイコンや色を選ぶ画面が表示されます。

活動のアイコン選択

ざっと見た感じアイコンは1,000種類くらいあるんじゃないかと思いますので、その活動にふさわしいアイコンが見つかると思います。

記録を後で振り返ることも

まあ、これができないと普通のタイマーでいいじゃん、という話になりますので当然、記録の振り返りは可能です。

たとえば昨日1日を振り返る場合、以下のような画面を表示させることができます。
なお、一日の開始時間を設定できますので、睡眠時間が2つの日にまたがってしまう、なんてことは避けられます。

昨日の振り返り

こちらは10日間で振り返ったパターンですが、○日間以外にも○週間、○ヶ月、○年といったスパンで振り返りできそうです。

10日間の振り返り

以上、Simple Time Trackerはとてもシンプルで使い勝手がよく気に入っておりますので、いろいろな活動でこれから利用シーンを広げていきたいと考えています。

2年ぶりにTOEIC L&Rテストを受けてみて、自分にあったリーディングパートの解き進め方を認識

コロナ禍になって以来、人ごみを避けていたため、1つの教室に大勢あつまって長い時間いるTOEICテストを避けていました。

しかし、最近少しコロナの感染者やその影響が弱くなってきた為、再度受けてみることにしました。

というのも前々回、奇跡的に845点をとってから2年以上経過してしまった為、そろそろその点数が公式に言えなくなっているであろう為です。(たしか2年間有効だったような。)

抽選にはみごと当選

300回目からは抽選が無くなるという話も聞いたりはしていますが、今回はまだコロナの影響で会場の確保が難しいからか、抽選となっていました。

しかし難なく当選しました。たぶん、競争率はだいぶん低かったんだろうなー。

会場は東京を指定したところ蒲田の東京工科大学

私は川崎市に住んでおりますが、下手に神奈川県を選ぶより、東京にしたほうが交通の便がよさそうだなあと思って、東京を会場に指定したところ、蒲田の東京工科大学になりましたー。

昔、蒲田にはよくいっていましたが、まじまじと大学を眺めたり、建物の中に入るのは初めてでした。

蒲田という下町?でありながら、ややモダンな建築。

大学の建物に入るのも久しぶりだなー。

日曜のAM10過ぎから12時21分までの戦い

コロナ前は会社で一斉に受けていたので、いつも夕方仕事が終わってからでしたが、今回は一般の会場で受けることになりました。

一般の会場は午前中と午後のどちらかが選べるのですが、私は朝方ということもあり午前を選択しました。

受付が9:25〜9:55ということでしたが、初めていく会場ということで、8時過ぎには蒲田入りし、建物を見にいきました。

しかし、まだ1時間以上前ということもあり、TOEIC会場の看板はどこにもみあたらず。

大学の敷地の広さをなんとなく確認し、近くのマクドナルドで時間を潰しました。

そして9:20分頃に再度マクドナルドから大学に向かいました。

するともうちらほらとTOEICに向かっているような人の流れができていたので、その流れに乗ってみました。

どうやら、大学の敷地に着いたら、その中には入らず、すぐ左の建物に向かっているもよう。TOEIC 以外のイベントもやっているようでしたが、無事に建物に到着しました。

さらに建物に到着すると、検温を受けて中に。中にはホワイトボードがあって、受験番号毎の教室の場所が書いてありました。

それをみるとどうやら私は3階の教室のようでした。

教室の中では後ろから2番目でしたが、私の列の1番後の人は来なかったようで、後ろからのプレッシャーを感じずに受験することができました。

しかし、集まった顔ぶれをみると、みんな私より若いなー、とすこし愕然としました。

今回はリスニングでつまずいたかも。。。

リスニングについて個人的にはパート3&4が盲点でした

パート1はほぼ完璧、パート2もそこそこ、とおもっていましたが、パート3&4はがたがたでした。

ここのパート以外はNative Campで練習していたんですが、パート3&4は練習していなかったんですよねー。そういえばここ、難しいんだった。練習しておけばよかったと後悔。

次回は事前にNative Campで練習しておこう。

席が一番後ろだったので、やや聞こえづらかった。。。というのは少し言い訳。

リーディングはめずらしく時間内にクリア

いつも時間が足りなくなるリーディングセクション。今回は2週間前くらいから徐々に時間内に全部終わるように公式問題で練習、そして解き方の作戦を立てていたのですが、それが見事にはまった感じでした。

他の人のおすすめをみると、パート6&7に関しては最初にいくつか設問を見た上で進めて、と書いてありますが、記憶力の低い私にはどうやらその作戦はあまり向いていないもよう。

また最近のTOEICは全部読まないと回答できない部分が多いらしいと聞いていた為、まともに問題文をちゃんと読んだあと、質問を1つ1つ答えることにしました。

これて、ちゃんと問題文を読めているところは、さっと答えられるし、ちょっとわからないなーというところは、再度読み直してもまちがってしまう、という公式問題集の経験から、割り切ってどんどん進めていくことができましたー。

本当に時計ないのねー。

なお、ここで誤算だったのが、教室に時計がないこと。いちおうソーラーの腕時計をもっていたのですが、長い間使っていなかった為、試験が始まる直前になっていも充電中の表示。

しかたないので、いつ終わってもいいように最後のラインはすべて一旦Cにマーク。

しかしいつもより高速に回答していくことができたので、その後、答えを選びなおし。多分全部Cにしてたらやはり2割くらいしかそのラインは得点できていなかったでしょう。

途中、おなかが空きます

午前の部といっても、試験時間は10:20〜12:20分くらいに設定されており、けっこうお昼にかかっています。

途中、すこしお腹がなったりしたので、朝、マックによったときにアップルパイだけではなく、もうすこしたくさん食べておけばよかったと後悔。

ほかにもお腹のなっているひとはいましたねー。

また受けたい

受験票にはる写真が900円もしたので、一回使うだけだともったいない。8枚綴りになっているしー。そんないらんのに。

また3ヶ月くらいしたら受けてみたいなーと思っています。

粗大ごみのリユースとして川崎市と連携している「おいくら?」をつかってみた

昨年の12月頃から一時的に川崎市に引っ越してきていたうちのおいじいちゃんが、6月末で山口市に戻ることになりました。

その為、川崎市のアパートで利用していた家電や家具を処分する必要があるのですが、6月29日まで川崎市のアパートに住んでいる為、粗大ゴミの日(6月23日)に捨てるわけにはいきません。

そこで川崎市のサイトに掲載されていた「おいくら?」のサイトを使ってみることにしました。

川崎市 粗大ゴミのリユース
https://www.city.kawasaki.jp/300/page/0000140324.html

1.おいくら?で複数業者から見積取得

こちらが「おいくら?」のサイトになります。ちなみに、見積を依頼する際に特にサイトへのログインは必要ありません。

最初は「おいくら?」という業者があるのかな?と思っていましたがどうやら違うようで、自分の売りたいものをアップすると、それを見て複数の業者が見積をくれるシステムになっているようです。

「おいくら?」サイト

商品名と製造(購入)時期の入力が必須

例えば冷蔵庫を売りたい場合、上の画面から「家電・AV・カメラ」->「家電」->「冷蔵庫・冷凍庫」と辿っていくと以下の画面がでます。

「冷蔵庫」の情報を入力する画面(おいくら?)

そしてWebフォームの入力項目の内、最低限必須項目となっている、
・商品名
・製造年数(物によっては購入時期に変わったりする)
などを入力する必要があります。(写真もアップしたほうがいいでしょう。)

この画面にたどりつく前は、写真さえアップすればいいんじゃないかと勝手に思っていましたので、これらの情報を調べるのは少々めんどうに感じました。

ただ私の場合は、購入時期がすべておなじ2021年後半でしたし、Amazon経由で購入していたので、購入履歴を検索することで比較的簡単に調べることができました。

かなり昔にかった物や、オフラインの店舗で買った場合は、事前に物やレシートを見て確認しておくのがよさそうです。

2.査定結果の確認

売りたい物を登録後、半日も経過しないうちに1社目から見積の回答が来ていました。
また、その後も1社、翌日にはもう1社から見積回答があり、今のところ3社から見積が来ています。

「おいくら?」査定状況

高級ブランド品以外の買取額は0円と見ておいたほうがいい

うーん、よく見てみると、どの会社も”-“マイナスになってるけどなんでだろう?と思って詳細を開いてみると、
・家電系:無料引取〜3,000円くらい
・家具(ハンガーラックや組み立て式のTVボードなど):無料引取〜−3,000円
・布団など:−3,000年〜−8,000円
といった感じでした。

世の中そんなに甘くありませんね。まあどれも安物だからしかたなし。

特に家電以外は値段がつかず、むしろ処分費用がかかるので、もし手間がかかるのがきにならなければ、地元の人に引き取ってもらうほうがよさそうです。

3.業者さんを選ぶ

いくつか業者さんからの見積もりが集まってきたら、その業者さんと引き取り日の調整をします。

ある業者さんの見積もり状況

見積の詳細画面をみると、業者さんの情報と各買取品に対する値付けをみることができます。

特に業者さんの評価が見えるのはよいですね。
なんとなくですが、評判のよい業者さんほど買取額は厳しい感じになっている気がします。(おそらくその分人件費をかけているのだと思われます。)

したがって、高く買い取っていくれる(安く処分してくれる)といってすぐに飛びつかず、買取額と評判のバランスを見たほうがよいのではないかと思います。

4.業者さんと引き取り日を調整する

そして気に入った業者さんがあったら、引き取り日を調整します。

買取額が表示された画面を下にスクロールしていくと、以下のような「ショップとのメッセージ」のやりとりができる画面がでてきますので、ここで調整するとよいようです。

業者さんとチャットで引き取り日調整

上の例でも土曜日にもかかわらず3時間程度で返信がきていますので、スムーズにやりとりできるのではないかと思います。

以上、簡単に「おいくら?」サイトの使い方を書いてみました。

これから私も最終的に業者さんを決定し、引き取り作業をお願いしてみようと思いますので、その際になにか気がついたことがあれば、再度ブログで紹介したいと思います。

背中が少し曲がっていて不器用だったけども愛嬌のあったコリドラス・ハステータスさんとのお別れ

我が家にはコロナ禍が始まる前からずっと飼っているコリドラス・ハステータスが3匹いました。

その3匹はとても仲がよく、いつも一緒に泳いでいたのですが、3匹ともに、目がすごく小さかったり、逆にとても大きかったりととても個性がありました。

そんな中、ひときわ目立っていたのが、すこし背中がまがって盛り上がっており、そのせいか泳ぐのがちょっと下手な子でした。

その子は他の2匹が優雅に泳いでいる中、必死に泳いで水面に顔を覗かせたり、餌を見つけて突撃していたりました。

そんな感じでとても弱そうでみんな心配していたのですが、一方で、食欲に関してはとても旺盛で、餌を投げ入れたときに一番に食らいついていたのも、その子でした。

なのでこの子は長生きするのかな、どうなんだろうかと心配していましたが、ついに昨日、なくなる日がやってきてしまいました。

亡くなる前の数日はいつもよりやはり元気がなさそうで、これまでなくなった他の子もそうであったように、警戒心が薄れるのか、そんなことが気にならなくなるのか、水槽の前面にきてじっとしていることが増えていました。

そんな時ですら、ちっちゃくて、ちょこんと砂の上に立っているこの子はとても愛嬌がありました。

そして昨日、朝から調子がわるそうでたまに横になっていたり、ほかのコリドラスのしっぽで起こされたり、われわれが心配して(もう死んじゃったのかなとおもって)ピンセットでつまもうとして立ち上がったり、一進一退を繰り返していました。

とても愛嬌のあったはっさん

しかし、夕方ごろ、ついに力つきて亡くなってしまいました。

亡くなる少し前、他のコリドラスたちもそれを察したのか、その子の周りに集まってきて、なんだか心配そうにしていました。

ガラスに近づいて向こうを見ているはっさんと心配する他のコリちゃん

水槽にいるこの子たちは、弱っているからといって他の敵に食べられるわけでもなく、最後の最後まで命の続くかぎり頑張って生きようとしており、そんな姿を見て、自分もいつももっとがんばらなきゃなと励まされています。

コロナ禍になって、すっかり新しい子をお迎えしなくなり、すでにいる子の様子をじっと見ていることが多くなったせいか、一匹一匹がすごく大切に思えるようになってきている今日この頃です。なので1匹でもなくなってしまうとつらいですね。

他の子は昨日亡くなってしまった子に代わってもっともっと長生きしてほしいです。

コリドラスはあまり泳ぐことは多くなく、じっと水の底にいてこちらの様子を見ていることが多く、時には我々が近づいて水槽の奥に逃げ出したり、こちらじっと見ていると、警戒がとけるのかこちらに向かって遊びにきたり、とても愛嬌のある子たちばかりです。

もしあまり手はかけられないけど、ペットに癒されてみたいという人は、コリドラスを飼ってみることをお勧めしたいです。

はっさん、いままでありがとう。

PythonにてVirusTotalのAPIにアクセスし、URLの危険度情報を取得してみた

前回まではPythonを使ってWebサイトの情報をスクレイピングしました。

その際にPython用に提供されているさまざまなライブラリを利用すれば比較的簡単に情報が抜き取れることを確認しました。

http://k2-ornata.com/python_scraping_table/

一方で、最近では多くのWebサイトの方で情報にアクセスする為のAPIを提供しており、それを利用すればもっと簡単、確実に必要な情報を取り出すことが可能となっています。

そこで今回は、そんなWebサイトの例としてVirusTotalが公開しているAPIにPythonからアクセスし、情報を取得してみたいと思います。

1.VirusTotalにアクセスする為のAPI Key取得

PythonからVirusTotalのAPIにアクセスする為には、まず、API Keyという自分の身元を証明するKeyを取得する必要があります。

そのAPI Key をPythonのプログラムを経由してVirusTotalに渡すことで、初めてWebサイトのAPIを利用することが可能になります。

API Key はVirusTotalのアカウント情報に紐づいていますので、もしまだアカウントを持っていなければ、それを作るところから始めます。

VirusTotalへのサインアップ

以下のVirusTotalのトップページ右上にある「Sign up」からアカウントの登録をしましょう。

VirusTotalのトップページ

アカウント情報を登録すると自分のメールアドレスにSign upを完了する為のメールが送られてきます。

そのメールのリンクをクリックすることでアカウントの登録が完了します。

VirusTotalへのログインとAPI Keyの取得

登録が完了したらさっそくVirusTotalにログインします。

ログインするとページの右上に自分のユーザアイコンが表示されています。

ユーザアイコンから「API Key」を選択

そのユーザアイコンをマウスでクリックすると、プルダウンリストに「API key」が表示されています。

それをクリックするとAPI Keyや利用制限などの情報が記載されたページが表示され、自分の API Key が確認できます。

2.PCに「vt-py」ライブラリをインストール

VirusTotal からそのサイトのAPIに簡単にアクセスする為のPython用のライブラリ「vt-py」が提供されています。

それをPyCharmなどの開発環境にインストールします。

PyCharmに「vt-py」を取り込み

あたらしいライブラリをPyCharmに導入する詳しい操作方法については、私の以前のブログにも記載していますので参考にしてみてください。

3.Pythonでプログラム開発

そしていつもどおり、おもむろにプログラムを開発します。

import vt

apikey = "<API Key>"
url = "<URL>"

# access to VirusTotal and get URL information(object)
client = vt.Client(apikey)
url_id = vt.url_id(url)
url = client.get_object("/urls/{}", url_id)

client.close()

# print each attribute from object
print(url.get("categories"))
print(url.get("last_analysis_date"))
print(url.get("times_submitted"))
print(url.get("last_analysis_stats"))

2行目の<API Key>の部分は自分のAPI Key を “8・・・・・a”のような感じで埋め込んでください。

また3行目の<URL>については、例えば yahooについて調べる場合は、”https://yahoo.co.jp”のような感じで埋め込んでください。

なお今回は、Pythonのプログラムに直接API Keyを埋め込む形になっていますが、正しくはAPI Key情報は別のファイルに保存し、しっかり暗号化などしておいてほうがよさそうです。

うっかり漏らしてしまうと、自分になりすましてアクセスされてしまいますよー。

4.Pythonの実行

実際にあるサイトについて実行した結果は以下の通り harmless : 87, malicious : 0 となっていました。問題ないという判断のようですね。

{'Forcepoint ThreatSeeker': 'search engines and portals', 'Sophos': 'portal sites', 'alphaMountain.ai': 'Search Engines/Portals', 'Comodo Valkyrie Verdict': 'mobile communications', 'BitDefender': 'news'}

1654330912

489

{'harmless': 87, 'malicious': 0, 'suspicious': 0, 'undetected': 8, 'timeout': 0}

ちなみに自分のサイト(k2-ornata.com/)を調べようとしたところ、以下のとおり知らんと言われましたー。

vt.error.APIError: ('NotFoundError', ・・・

それなりに良い意味でも悪い意味でも有名なサイトでないといけないようです。^^;
まあ、すでにDBに格納されているデータから情報を取り出しているのであ当たり前ですね。。。

5.他にどんな情報が取れるのかは要確認・・・

今回は指定したURLに関して以下の4つの情報が取れることがわかりました。

categories
last_analysis_date
times_submitted
last_analysis_stats

しかし、その他どんな情報がとれるのかについては調べきることができませんでしたので、今後の課題にしておきたいと思います。

<参考サイト>

・VirusTotalの公式APIライブラリ「vt-py」を使ってみた。(たれながし.info)
https://tarenagashi.hatenablog.jp/entry/2021/06/09/223105
・vt-py Quickstart(VirusTotal)
https://virustotal.github.io/vt-py/quickstart.html#get-information-about-an-url

PythonにてPandasを使ってWebページのテーブルのセルの内容を抜き取ってみた

前回はRequests と Beautiful Soupを使ってWebページの特定のタグの情報を読み込んで見ました。

http://k2-ornata.com/python_web_scraping/

しかし、そのライブラリだけだとWebページ内のテーブルの情報を抜き出すのは大変そうだなあとおもっていました。

そんな中、Pandasというライブラリを使えば簡単にテーブルの情報を抜き出せるようでしたので、トライしてみました。

1.ライブラリの読み込み

まずは必要なライブラリをPyCharmに取り込みます。
今回、Pandasとlxmlを初めてPyCharmで利用するので、以下のように取り込んでいます。

ライブラリの取り込み

2.プログラミング

そしていつものように^^、おもむろにプログラミングします。

なお、今回スクレイピングしているサイトも、前回同様、私のブログ
http://k2-ornata.com/security-countermeasure/
となっています。

import pandas as pd

url = 'http://k2-ornata.com/security-countermeasure/'
dfs = pd.read_html(url)

# table count
print(len(dfs))

# head 5 line print
print(dfs[0].head())

# cell[0,0] print
print(dfs[0].iat[0,0])

# cell[0,1] print
print(dfs[0].iat[0,1])

# first column only print
print(dfs[0].iloc[:,[0]])

簡単に内容を説明すると、

最初の3行・・・ライブラリを読み込んだあと、Webページを読み込み、dfsに格納
次の2行・・・Webページ内のテーブルの数を表示
次の2行・・・最初のテーブルdfs[0]の先頭5行を表示
次の2行・・・最初のテーブルdfs[0]のセル[0,0]の内容を表示
次の2行・・・最初のテーブルdfs[0]のセル[0,1]の内容を表示
最後の2行・・・最初のテーブルdfs[0]の1列目[0]を表示

となっています。

そして以下が実行結果です。(見やすくする為に各printの間に1行入れています。)

13

      0                                                  1
0    概要  CSPM(Cloud Security Posture Management)クラウドの設定...
1  参考文献  改めて知るCWPP(Cloud Workload Protection Platform)と...

概要

CSPM(Cloud Security Posture Management)クラウドの設定に不備がないかチェックし、不備があれば自動的に修正までしてくれる製品と思われる。CWPP(Cloud Workload Posture Management)オンプレやクラウド上の様々なワークロード(※)における脆弱性管理やセキュリティ保護を行う製品と思われる。両者をどちらもカバーする製品として、パロアルト社のPrisma Cloudがあり、CNSP(Cloud Native Security Platform)と読んでいる。※ワークロードっていう言葉はいつきいてもあまりピント来ませんが、物理マシンや仮想マシン、コンテナ、サーバレスなどを指すらしい。

      0
0    概要
1  参考文献

3.Pamdasの使い方

Pandasを使うと今回のように、Webページ内のテーブルの数や、特定のテーブルの情報、さらにその中テーブルの中の特定のセルなどの情報が読み取れるようです。

とりあえず今回使用したものを簡単に説明しておきます。

len(dfs)

dfs の中にWebページ内の全てのテーブル情報が書き込まれ、len()関数を使うことで、そのテーブルの数(Webページに全部で何個テーブルがあるか)をカウントできます。

dfs[テーブル番号]

dfs[テーブル番号]という形で指定することで、ページの先頭から何番目のテーブルの情報かを指定することができます。

dfs[テーブル番号].head()

.head()関数を使うことで、指定したテーブルの先頭から5行目までを取得することができます。

dfs[テーブル番号].iat[行,列]

.iat[行,列]を使うことで、指定したテーブルのどのセルの情報を取得するかを指定することができます。

dfs[テーブル番号].iloc[:,[列]]

.iloc[:,[列]]を使うことで、指定したテーブルの特定の列の情報だけを取得することができます。
なお、”:”の記述はとりあえずおまじないとおもっておけばいいと思います。(あまりよくわかってないのでー。)

4.最後に

過去3回に渡ってPythonを触ってみましたが、Pythonにはいろんなライブラリがあり、それをうまく使えばいろんなことがとても簡単にできるなあと実感しました。

Pythonが人気があるのもわかる気がしますね。

<参考サイト>

・Python, pandasでwebページの表(htmlのtable)をスクレイピング(note.nkmk.me)
https://note.nkmk.me/python-pandas-web-html-table-scraping/
・pandasで任意の位置の値を取得・変更するat, iat, loc, iloc(note.nkmk.me)
https://note.nkmk.me/python-pandas-at-iat-loc-iloc/