Octosuite: GitHub でオープンソース調査を実施するための新しいツール

GitHub は、インターネット上で最も人気のあるコード ホスティング プラットフォームの 1 つであり、9,000 万人を超えるグローバル コミュニティがそのサービスを使用していると報告されています。

これにより、GitHub はコーダーと開発者にとって重要なプラットフォームになります。 オープン ソースの調査を支援する多くの便利なツールが、このサイト (Bellincgat の GitHub リポジトリを含む) にあります。

ユーザーがプラットフォーム上で共有する情報の量を考えると、GitHub 自体もオンライン調査者にとって有用な情報源になる可能性があります。

たとえば、GitHub で入手できる情報は、公開されている他のソーシャル メディアやオンライン コンテンツと相互参照できます。

GitHub には直感的なユーザー インターフェイスがありますが、多くのクリックスルーが必要であり、一度に 1 つのエンティティ (個々のページ、ユーザー、組織のプロファイルなど) を開くことが制限されています。

さらに、GitHub で見つけた情報を保存する簡単な方法はありません。

そこで登場するのがオクトスイートです。 Octosuite は Python で記述された高度な GitHub フレームワークであり、GitHub のパブリック API を使用して、プラットフォーム上のアカウントとリポジトリを調査するプロセスをより効率的にすると同時に、自動化された簡単に再現可能な一連のクエリを作成します。

画像: Octosuite コマンド ライン インターフェースのヘルプ メニュー

Octosuite でできること

Octosuite には、GitHub で公開されているアカウントやリポジトリに関する情報を取得するために使用できるさまざまなコマンドが付属しています。

Octosuite を使用すると、次の公開情報を簡単に見つけることができます。

  • ユーザー: プロフィール情報、要点 (小さなコード スニペット)、アカウント アクティビティ (購読、作成、フォローなどのイベント経由)、リポジトリ、組織、購読、フォロワー、フォロー
  • 組織: プロフィール情報、アカウント アクティビティ、リポジトリ、パブリック メンバー
  • リポジトリ: コントリビューター、コーディング言語、スターゲイザー (プラットフォームでのいいね! に相当)、フォーク (リポジトリのパブリック コピーを作成した詳細)、およびリリース

Octosuite には、ユーザー、リポジトリ、トピック (コードの目的を理解するのに役立つ開発タグ)、コミット (ユーザーが行ったファイルまたはファイル セットへの応答または変更)、および問題 (会話) を検索する検索機能も含まれています。コミュニティが問題にフラグを立てたり、機能やヘルプを求めたりするために使用できるスレッド)。

これらの検索からのすべての出力は、読み取り可能な形式で利用でき、カンマ区切り値 (CSV) 形式でエクスポートできます。

Octosuite を使い始める

Octosuite のセットアップは簡単なプロセスです。

2 つの方法でインストールして使用できます。 コマンドライン インターフェイス (CLI) またはグラフィカル ユーザー インターフェイス (GUI) として。

コマンド ラインに慣れていない場合は、GUI オプション (Windows および macOS でのインストール手順を含む) をお勧めします。 ツールの GUI バージョンでは、ユーザーはドロップダウン メニューから検索コマンドを選択できます。

ただし、スクレイピングされたデータの処理やバッチ処理では、CLI の方が柔軟に対応できます。 また、ツールの GUI バージョンをインストールするには、コマンド ラインの基本を理解する必要があります。 Octosuite の GUI バージョンをインストールする方法の完全な手順については、この GitHub ガイドを参照してください。

この記事の残りの部分では、ツールの CLI バージョンの使用方法について詳しく説明します。

Octosuite コマンド

コマンド ライン (Windows、Linux、または Mac) に慣れている場合は、ターミナル ウィンドウを開いて次のコマンドを入力するだけで、Octosuite をインストールできます。pip3 インストール octosuite`

ただし、コマンドを実行する前に、Python 3 がインストールされていることを確認してください。

コマンドラインを使用するための初心者向けガイドは、こちらにあります。

インストール プロセスが完了したら、次のコマンドを実行して Octosuite を起動できます。オクトスイート`

または、次のコマンドを使用して、コマンドライン引数で Octosuite を実行するために使用可能なオプションを確認できます。 `octosuite –help`

画像: セッションの色を有効にするための Octosuite プロンプト。

プログラムで色を有効にするかどうかを尋ねる最初のプロンプトが表示されます (これにより、エクスペリエンスがより魅力的になります)。はいの場合は「y」を選択し、いいえの場合は「n」を選択します。 その後、メイン画面が表示されます。

画像: カラー オプションがオンになっている Octosuite のメイン画面。

そこから、`で始めることができますヘルプ` コマンドを使用して、使用可能なコマンドのリストを表示します。

画像: Octosuite ヘルプ メニュー。

Octosuite の調査コマンドには、独自の機能を持つサブコマンドがあります。 それらをリストするには、次のように入力します `help:investigation_command`. たとえば、 使用する コマンドを実行するには、次のように入力する必要があります: `ヘルプ:ユーザー`。

のすべてのサブコマンドを示す表 使用する コマンドが表示されます。

画像: Octosuite ユーザー サブコマンド。

ユーザーサブコマンド

ユーザーのプロフィール情報を取得してみましょう。

これを行うには、コマンド `ユーザー:プロファイル`. よまたはユーザー名の入力を求められます。 そうしたら、エンターを押します。

以下のスクリーンショットは、ユーザーのプロファイル情報を含む出力を示しています (一部の詳細は編集されています)。 Octosuite は、出力を CSV ファイルに保存するかどうか尋ねてきます。 コマンド`で保存されたCSVファイルを読むことができますcsv:read`、 `で単一のCSVファイルを削除しますcsv:delete` または、` と入力してすべての CSV ファイルを削除しますcsv:クリア`。

画像: ユーザーのプロファイル情報を表示している Octosuite (一部の詳細は編集されています)。

実用的なオクトスイート

指先で GitHub API 全体を操作できるため、データ ポイントの相互参照や特定のクエリの作成に新たな可能性が開かれます。 Octosuite を拡張して、これらの一部を一般化できます。 現在の例は次のとおりです。

  • ユーザー A がユーザー B をフォローしているかどうかを確認します。 「ユーザー: フォロー」
  • ユーザー A が組織に属しているかどうかを確認します。 `org:member`
  • リポジトリ R の指定されたディレクトリ D にあるファイルのリストを取得します。 `repo:path_contents`
  • ユーザー名のリストを繰り返し、user_profile を呼び出します

次の例では、’–method’ フラグを使用して Octosuite を実行するメソッドを指定し、’–username’ フラグを使用して検索する値を示します。 usernames.txt の各行には、単一の github ユーザー名が必要です。

また、色を有効にして Octosuite を実行する「–colours」オプションも使用します。「–log-to-csv」を使用すると、出力を csv ファイルに記録できます。これは、後で結果を分析するのに役立ちます。

`while read username; do
octosuite —method user_profile —username 
"$username" —colours —log-to-csv
done; < usernames.txt`
画像: Octosuite ユーザー検索の結果 (一部の詳細は編集されています)

その他の Octosuite の用途

Octosuite は、単一のユーザー アカウントから発生し、35,000 以上のリポジトリに影響を与えた 2022 年の GitHub マルウェア攻撃のようなエピソードの調査にも使用できます。

この攻撃によって侵害された多くのリポジトリに存在する URL に表示された文字列は、 「.ovz1」。 したがって、.ovz1 のすべてのインスタンスを検索することで、研究者は侵害された可能性のある他のリポジトリをチェックできます。 Octosuite は、次の方法でこのタイプの検索を有効にします。

  • とともに 「検索:コミット」 コマンド (または、コマンド ライン引数で実行している場合は、 search_commit メソッド)、クエリ文字列として「.ovz1」を入力します。
  • –メソッドを使用 「commits_search –query .ovz1 –colors –log-to-csv」 クエリ。

もう一つの 2022 年 インシデントは、Python の ctx ライブラリと PHP の phpass のフォークが侵害されたことを確認しており、Octosuite を使用して調査することもできます。

次のコマンドを入力すると、ユーザーは影響を受ける GitHub リポジトリをすばやく検索できます。

  • 「検索:コミット」 コマンドを実行し、クエリ文字列として「phpass」「ctx」と入力します。
  • octosuite –method commits_search –query “phpass” “ctx” –colors –log-to-csv’

これらのコマンドは、ovz.1 と同じように動作し、Python の ctx ライブラリと phpass を使用したリポジトリを検索して見つけます。

オープンソースの調査では、ここで詳しく説明したよりも多くの Octosuite が使用される可能性があります。 ユーザーはツールを探索し、その可能性を最大限に発見することをお勧めします。

また、Bellingcat は、Octosuite がどのように使用されているかを知りたいと考えています。 研究や調査でツールを使用する場合は、このフォームに記入してお気軽にお知らせください。


この記事は、Bellingcat の一部として作成されました。 テック フェローシップ プログラム、オープンソース研究者向けの調査ツールとオンライン リソースの作成を目指しています。 次回のフェローの募集はまもなく開始されます。 詳細については、当社のウェブサイトおよびソーシャル メディア チャネルをご確認ください。

Bellingcat は非営利団体であり、私たちの仕事を遂行する能力は、個々の寄付者の親切な支援にかかっています。 私たちの仕事をサポートしたい場合は、そうすることができます ここ. Patreonチャンネルに登録することもできます ここ. 購読する ニュースレター Twitterでフォローしてください ここ.

Leave a Comment

Your email address will not be published. Required fields are marked *