AbuseIPDBにアクセスするPythonプログラムを試してみた

ある理由から AbuseIPDB にIPアドレスを投げてその評価結果を受け取るPythonプログラムを作成しようと思いググったところ、以下のYoutube動画を見つけました。

AbuseIPDB API Python Script(Mostafa Yahia)

そこで真似して作成してみることにしました。

なお、上記動画で紹介しているPythonプログラムは以下のGitHubで公開されています。

https://github.com/Mostafayahia-hunter/AbuseIPDB-API-Python

だだし、最近、AbuseIPDBからのレスポンスが変わったのか、一部の箇所でエラーがでたので、csv_columnsの定義の部分を以下の通り書き換えました。(’isTor’を追加しました。)

csv_columns = ['ipAddress','isPublic','ipVersion','isWhitelisted','abuseConfidenceScore','countryCode','usageType','isp','domain','hostnames','isTor','totalReports','numDistinctUsers','lastReportedAt']

また、Pythonプログラム実行時に要求される IPリストとして入力するcsvファイルとしては、以下のような内容を用意しました。

IP,
88.29.56.3,
1.158.10.11,
161.35.146.242,
177.84.141.183

そしてコマンドプロンプト上で実行した結果がこちらです。

Python実行画面

実行するとAbuseIP_results.csvというファイルが出来上がっており、それを開いてみた結果は以下の通りです。

Python実行結果

プログラムをいろいろいじってみて CSVライブラリの使い方あたりがとても勉強になりました。

Power AutomateからVirus Total にアクセスするPythonを呼び出して入力したサイトの安全性を確認してみた

最近、Power Automateをいろいろといじり始めていますが、今回は、Power Automateから Virus TotalにアクセスするPythonプログラムを呼び出してみましたので、そのときの設定を記録しておきます。

なお、処理の流れは以下の通りです。

1.入出力変数(NewInput)にVirus Totalで評価するURLを設定
2.NewInputの内容をinput.txtに書き込み
3.Virus TotalにアクセスするPythonプログラムを呼び出し
  (input: input.txt, output:output.txt, scan_result.json)
4.Virus Totalでの評価結果をoutput.txtファイル等から読み込み
5.Gmailをつかって評価結果をメール送信

Power Automate全体フロー

以下、フローを作成していて苦労した点を少し説明していきます。

2.NewInputの内容をinput.txtに書き込み

Power Automateの機能メニューから「テキストをファイルに書き込む」を選択した際に、エンコードがデフォルトでUTF-8になっていましたが、それだとなぜが Pythonで読み込んだときに半角が全角になってしましいました。

そこでエンコードの設定を「UTF-8」から「システムの規定値」に変えたところ、半角のままpythonで処理することができました。

Power automate – テキストをファイルに書き込む

3.Virus TotalにアクセスするPythonプログラムを呼び出し

正直このPythonプログラムは ChatGPTにお願いして大部分を作成してもらいました。

手直ししたのは、「json_response[‘positives’]」を「json_response[“positives”]」を書き換えたくらいです。

あとはそのまま動いてくれました。

import requests
import json

# VirusTotalのAPIキーを設定します。
api_key = 'virus totalのapiキーをここに設定'

# VirusTotalのURLスキャンAPIエンドポイントを設定します。
url_scan_endpoint = 'https://www.virustotal.com/vtapi/v2/url/scan'

# ファイルを読み込みモードで開きます。
with open('c:\\tmp\\input.txt', 'r') as file:

# ファイルから文字列を読み込み、調査したいURLを設定します。
url_to_check = file.read()
print(url_to_check)

# APIリクエストのパラメータを設定します。
params = {'apikey': api_key, 'url': url_to_check}

# URLスキャンAPIにリクエストを送信します。
response = requests.post(url_scan_endpoint, data=params)

# レスポンスをJSON形式で取得します。
json_response = response.json()

# スキャンIDを取得します。
scan_id = json_response["scan_id"]

# VirusTotalのURLレポートAPIエンドポイントを設定します。
url_report_endpoint = 'https://www.virustotal.com/vtapi/v2/url/report'

# APIリクエストのパラメータを設定します。
params = {'apikey': api_key, 'resource': scan_id}

# URLレポートAPIにリクエストを送信します。
response = requests.get(url_report_endpoint, params=params)

# レスポンスをJSON形式で取得します。
json_response = response.json()

# URLが安全かどうかを判断します。
if json_response["positives"] > 0:
    text_to_write = 'The URL is not safe.'
else:
    text_to_write = 'The URL is safe.'

# ファイルを書き込みモードで開きます。
with open('output.txt', 'w') as file:
    # 文字列をファイルに書き出します。
    file.write(text_to_write)

# レスポンスをファイルに保存します。
with open('scan_result.json', 'w') as outfile:
    json.dump(json_response, outfile)

5.Gmailをつかって評価結果をメール送信

ここでは、Gmailサーバにアクセスする為のポート番号の設定や、2段階認証していたのでアプリパスワードの設定に少してこずりました。

2段階認証設定をしているGoogleアカウントにプログラムからアクセスするには、アプリパスワードを使いましょう

Power Automateから2段階認証を行なっているGmailのメールサーバ経由でメールを送信する場合、Gmail で使っている通常のパスワードではなく、Googleからアプリパスワードを取得する必要があります。

ここでは、そのアプリパスワードの取得方法を記載しています。

1.Googleアカウント画面を表示する

Googleのサイト(https://www.google.com/)にアクセスすると、右上に自分のアイコンがありますので、それをクリックします。

クリックすると「Googleアカウントを管理する」というボタンが表示されるので、それをさらにクリックします。

googleサイト

すると、「Google アカウント」という画面が表示されますので、その画面の左メニューから「Security」をクリックします。

google account

セキュリティ画面に移ると、2段階認証の設定項目がありますので、それをクリックします。

google security

2段階認証の画面に移ったら、ページを一番下までスクロールさせると「アプリ パスワード」の設定項目がありますので、それを再度クリックします。

Google – 2Step Verification

アプリ パスワードの画面の下側でパスワードを利用する「アプリ」と「デバイス」を選択し、「生成」ボタンを押します。

Google – Application password

するとアプリ パスワードが生成されますので、これをGmailにアクセスさせるアプリに設定します。

Google – Application Password

NCロードスターの自動車税をペイジーを使ってATMから払ってみた

毎年のことですが5月になると自動車税を払う必要があります。

今年もその支払い通知がきましたが、その税額は45,400円となっております。

私のロードスターは今年多分12年目で、ガソリン車は13年目から税金があがるらしいので、来年は15%増しになっている可能性があります。

2023.5.29 追記
今年も45,400円だったので、すでに昨年、私のロードスターは13年目に突入していたと思われます。

なお、その税金を支払うときにコンビニで支払ってしまうと上記の金額+手数料がとられてしまいますよね。(たぶん)

そこで他の方法を調べてみたところ、ペイジーで支払えばATMから支払っても手数料が引かれず、かつ、いまならペイジーの方でキャンペーンをやっており、1万円が当たる可能性がある、ということでした。

ペイジーのキャンペーンサイト

そこで今年は、ペイジーをつかって支払ってみることにしました。

自動車税をペイジーで払ってよいか確認

ペイジーが利用できる自治体は限られる

とはいえ、どこの都道府県でもペイジーで支払いができるわけではないようですので、気をつけてください。

幸い、私が住んでいる神奈川県ではペイジーで支払いが可能なようです。

なお、ペイジーで支払える場合には支払い用紙にペイジーマークがプリントされているようですので、それを確認してみてください。

車検が近い場合は納税証明書が出ないのでこまるかも

また車検が間近にせまっている人の場合は、もしかしたらコンビニで払ったほうがいいかもしれません。

ペイジーだと納税証明書がもらえず、システム連携も10日くらいかかるらしいので車検の時に困るかもしれません。

銀行のATMで支払い

ペイジーで支払うことを決めたら、納付書を持ってATMに行きます。(PCからでもできるらしいですが。)

メニューから「税金・各種料金の払込」を選択

私は三井住友銀行のATMから支払いましたが、その場合、以下のメニュー画面から「税金・各種料金の払込」を選択します。(その横にペイジーのマークがありますね。)

三井住友銀行のATMの場合

納付書を見ながら情報入力

その後は自分のキャッシュカードを入れて、画面の指示に従い、以下の情報を納付書を見ながら入力します。

・収納機関番号
・納付番号
・確認番号
・納付区分

これらを入れ終わると、画面に自動的に納付金額や納付先の情報が表示されるので「確認」ボタンを押して払込は終了となります。

多少、数字をたくさん入れる必要があるのでめんどうかもしれませんが、手数料ただならしかたないですねー。

ご利用明細はしばらく保管

なお、払込が終わるとATMのご利用明細がでてきますので、しばらくはそれを保管しておいたほうがよさそうですね。(コンビニで払ったときのように領収日付印は教えてもらえないので。

以上で自動車税の払込は終了です。ペイジーのキャンペーン当たるといいなぁ。

SOARからChatGPTにアクセスするインテグレーションをYoutubeを見ながら作成してみた

すでに XSOAR には ChatGPT にアクセスする為のインテグレーションがありますが、Youtube をみるとそれを自作する動画があったので、勉強の為、真似して作成してみました。

ただし、Youtube の動画のPythonをそのまま利用してもエラーがでてしまったので、ChatGPT と相談しながら修正しました。

それ以外の詳しい手順は以下のYoutubeをご覧ください。

XSOAR Integration Creation for CHATGPT to Answer Questions – PurpleXsec

1.BYOIボタンを押す

まず、XSOAR にログインし、左下の settingsメニューから Integrations – instances に進みます。

すると右上に「+BYOI」ボタンが表示されるので、それを押します。

2.Integration Settingsを設定する

「+BYOI」ボタンを押すと、右側に Integration Settings が表示されるので、その中の、

・BASIC
・Parameters
・Commands

などの設定を Youtubeを見ながら実施していきます。

3.Pythonコードをサイトからコピペする

Youtube の中に出てくるPythonコードは以下のGitHubで公開されていますので、これをコピーし、左側にデフォルトで提供されるPythonコードと置き換えます。

https://github.com/vidura-supun/XSOAR-CHATGPT-Integration/blob/main/ChatGPT.py

4.Pythonコードを少し修正する

GitHubからコピーしてきたPythonコードをそのまま利用すると後述の Integrationの接続テストの際に、以下のエラーが発生してしまいます。

Authorization Error: make sure API Key is correctly set (85)

どうやら ChatGPT APIにアクセスするための認証ヘッダーの定義が Youtube 公開当時から変わった?ようなので、22行目を以下の通り書き換えます。

変更前
self._headers = {'Authorization': self.api_key, 'Content-Type': 'application/json'}
変更後
self._headers = {'Authorization': f'Bearer {self.api_key}' , 'Content-Type': 'application/json'}

あとで調べたのですが、ChatGPT ではAuthorizationヘッダを用いた Bearer認証というものを利用しているみたいですね。(BASIC認証の親戚みたいな感じですね。)

5.テスト接続する

4.の修正後、Integration設定画面から「Test」ボタンを押すと、以下のとおり正常に接続することができました。

XSOAR – Integration設定画面

この後問題なく「user_question」コマンドを実行することもできました。

幸せを呼ぶニワトリの青い卵「アローカナのたまご」を食べてみた

K2-ornataのkuroです。

先日、千葉にある道の駅「保田小学校」へ立ち寄りました。
そこで珍しい青緑色の卵を見つけました。

幸せを呼ぶ青い卵 「アローカナ」のたまご

「アローカナ」という南米チリ原産の鶏で、珍しい青い色合いの卵を産むことから、南米では「幸せを呼ぶニワトリ」ともいわれているそうです。外見は日本のニワトリにはない大きな耳羽があり、尾がなくずんぐりした体型をしています。また普通の卵よりもレシチンという動脈硬化や認知症の予防に効果がある成分が多く含まれていて栄養価が高いとのこと。

さっそく翌朝、目玉焼きにしてみました。
・・・中身は普通の卵でした。味も普通で、美味しくいただきました。
でも期待しすぎてしまったせいでなんとなくがっかり。

ですが、割った後の殻に魅了されてしまいました。

アローカナの卵の殻


外側の青緑色とのコントラストが素敵で、不思議な雰囲気を漂わせています。
とても気に入ってしまい、いまだに捨てられず飾ってます。

味は普通でしたが、殻を目当てにまた買ってしまいそうです。

Power AutomateからChatGPTが生成したpythonを実行させる

ChatGPT でpythonを自動生成してくれるので、それをPower Automateで自動的に動かせないかと思い、試してみました。

もしかしたらこれを一歩進めて、Power Automateから ChatGPT を呼び出してpython を自動生成させ、それをさらにPower Automateから自動実行させるみたいなことができるかもしれませんねー。

1.Power Automate Desktop(PAD)を起動

Windows 10 にインストールしたPower Automate Desktopを起動します。

Power Automate Desktop画面

2.PADでフローの作成開始

「+新しいフロー」を選択し、フロー名を設定後、「作成」を選択します。

Power Automate Desktop画面

3.ChatGPT で生成したPythonをファイルに保存

ChatGPT で生成したPythonをコピペしてファイルに保存しておきます。

保存したPythonプログラムを実行させるには、Windows 10に Pythonの実行環境とPythonプログラムの中で利用しているライブラリがインストールされている必要があります。

4.アプリケーションの実行を選択

ファイルに保存されているPythonプログラム(*.py)を実行する為、
左ペインの「アクション」から「システム」-「アプリケーションの実行」
を選択します。

Power Automate Desktop画面

5.アプリケーションとしてpythonを指定

「アプリケーションの実行」設定画面にて以下の通り設定します。

アプリケーションパス:python
コマンドライン引数:pythonプログラム名
作業フォルダー:pythonプログラム名を置いているディレクトリ

Power Automate Desktop画面

設定後、「保存」ボタンを押すと以下の画面となります。

Power Automate Desktop画面

6.Pythonの実行結果をメモ帳で表示

pythonの実行結果は作業フォルダーにファイルとして保存されるようになっている為、それをメモ帳で表示する処理を以下のとおり追加してみました。

Power Automate Desktop画面

ChatGPTのプラグイン WebPilotで指定したWebページのデータを抜き出してもらった

本日、ChatGPT plus のサブスクリプション契約を行い、Pluginが利用できるようになったので、さっそく WebPilotを使ってみました。

ちなみにChatGPT plusのサブスクリプションを契約したら、必要なPluginを個々にインストールする必要があります。

ChatGPT Plugin Store

なお、以前はPluginの利用は順番待ちだったようですが、現時点では、plus契約と同時に使えるようになっているみたいです。

さっそくWebPilotを試してみる

以下、情報を取得するURLを指定して https で始まる行を全て取得してもらった結果です。

ChatGPT

きれいに依頼したとおりの情報をとってくれました。

うまく依頼すれば、いろいろなサイトからセキュリティのIoC情報を拾ってきてくれそうですが、この場合も結局はスクレイピングしていることになるんでしょうね。

OpenAIのサイトからChatGPTのAPIキーを取得し、18ドル分の無償枠内で利用してみた。

SOARから ChatGPTにアクセスする為に、ChatGPTのAPIキーを取得してみましたので、その手順を記録しておきます。

なおAPIキーの取得に際しては、OpenAIのアカウントを事前に作成しておく必要があります。

また一見、 APIキーの利用は無償に見えますが、18ドル分の無償枠があるだけで、それを超えて利用しようとすると有償になるようですので注意が必要です。

1.OpenAIのサイトにアクセス

以下のURLからOpenAIのサイトにアクセスし、ブラウザの真ん中あたりに現れる「Get Started」のリンクをクリックします。

https://openai.com/product

するとログイン画面が現れるのでログインすると、以下のようなOpenAI のトップページが表示されます。

OpenAIトップページ

2.View API keysかAPIキーを作成

上の画面の右上にある「Personal」という部分をマウスでクリックすると「View API Keys」というリンクが出てくるのでそれを選択します。

すると、以下のAPI Keys の画面が表示されますので、ページの真ん中あたりにある「Create new secret key」をクリックします。

OpenAI – API Keys

その後、以下のポップアップが表示されるので、API keyに名前を付けます。

OpenAI – Ceate API Key

そして「Create secret key」のボタンを押せば、API Keyが生成され、同ポップアップ上に表示されます。(右に表示されるコピーボタンを押せば、コピーできます。)

OpenAI – Ceate API Key

なお生成されたAPI Keyは、先ほどのAPI Key ページに蓄積して表示されていくようです。

OpenAI – API Key

3.API Keyの利用には無償枠あり

上記の通り作成したAPI Keyを早速 SOAR で利用したところ問題なく利用できた為よろこんでいたのですが、実は API key の利用には18ドルの無償枠があるだけで、使い続けていると有償になるようです。

今どれくらい無償枠を利用したかについては、先ほどのページの左ペインのメニューの中から「Usege」を選択すると確認できます。

OpenAI – Usage

上の画像はSOARにて”Emotetってなんですか?”と質問し、ChatGPTから回答をもらった直後の状態ですが、0.0005ドルの無償枠を消費したようです。

ベラボン育ちのグリーンネックレスに花が咲きました

k2-ornataのkuroです。

2年前から育てているグリーンネックレス、今年も花が咲きました。
冬の寒さで葉が茶色に変色し、その後もなかなか葉色が回復しなくて心配していたので、花が咲いてくれてほっとしました。

グリーンネックレスの花

このグリーンネックレス、昨年から土をまったく使わずに育てています。
土の代わりに使用しているのは、フジックさんの「ベラボン・プレミアム」という天然ヤシでできたチップです。最初はちゃんと育つのか不安でしたが、植え替えから一年、このとおり花も咲き、今のところ問題なく育っています。

これまで何も考えずに普通に土を使用してきましたが、ある時、急にベランダでの土の扱いが非常にやっかいでストレスだということに気づいてしまいました。これはなんとかならないかと、土の代わりになるものを探し続けてたどりついたうちのひとつが、このベラボンでした。私はこの時初めて知りましたが、調べてみると40年の歴史がある知る人ぞ知る人気商品でした。

「ベラボン・プレミアム」匂いもなく手も汚れず使いやすい

<ベラボンのいいところ(土と比較)>
・軽い(鉢植えの移動が楽)
・清潔(素手で触っても汚れない/鉢から流れる水がきれい⇒掃除が楽)
・無臭
・水はけ、吸水性、保水性、通気性、保温性に優れている(植物にとっても良い)
・虫がわきにくい(ヤシの実のタンニンという成分を虫が嫌うため)
・使用後は可燃ごみとして処分できる

<ベラボンを使って気づいたことなど>
小さめサイズの鉢植えで、しかも比較的水が必要な植物は、季節によっては100%ベラボンでは保水力が不足することがあります。そのような場合、私は土を混ぜて使用しています。結局土を使用することになってしまいますが、それでも土100%よりは断然快適です。
また、ベラボンは軽いことが大きなメリットなのですが、その軽さが仇となり、鉢植えが軽くなりすぎて強風で倒れてしまったり、表面のベラボンが風で吹き飛ばされてしまうことがありました。そのような場合には、上記のように土を混ぜて重さを出したり、表面のベラボンが吹き飛ばないように詰める工夫やマルチングで対策すると良いのではないかと思います。うちはいま備長炭のマルチングで落ち着いています。なかなかよいです。

ちなみに、土の代わりになるものは他にもおすすめがありますが、長くなりそうなのでまた別の機会にご紹介したいと思います。