米軍のOSINTマニュアルの翻訳(イントロダクション)

オープンソースインテリジェンスと現在の運用

作戦を支援するインテリジェンスを運用する上で、オープンソース情報を利用することが、かつてないほど有利な状況にあります.OSINT活動には次のような利点があります.

  • 最小の侵害(?)
  • コストパフォーマンスが良い
  • 豊富なデータと情報源

インターネット上では世界中の潜在的に詳細な情報が増え続けており,国家安全保障にオープンソース情報を使用する説得力のある理由となっています.近年,OSINTがインテリジェンス分野として認識されているにもかかわらず、OSINTは間違いなく最も古いのインテリジェンスの1つです.人工衛星やその他の高度な情報収集技術が登場する以前は、軍事専門家がオープンソース情報から情報を収集し、外国の土地、民族、潜在的脅威、軍隊に関する知識と理解を深めていました.しかし、世界はインターネット上で自らを改革し、前例のない量の情報を投稿して、すぐに一般に公開されるようになりました.OSINT製品を開発するための新しい技術、テクノロジー、データ、ソース、そして新しい手法は、世界中のオープンソース情報の増加に対応するために、かなりの速度で進化しています.本文章ではOSINTの基本と合同軍,国防総省(DDD)のエンタープライズ能力を活用しながらOSINT資産を構築し実施する手法を説明します.

OSINTは大統領令12333号、DODM 5240.01、DOD 5240.1-R、AR 381-10、およびMCO 3800.2Bで諜報員に課せられた権限と制限により、情報部員のみが実施できます。司令官は、サイバースペース環境で動作する他の戦闘ドメインの活動が情報収集活動と矛盾しないこと、および情報収集活動が情報部門に課されることを確認しなければならないです.

さらに陸軍の場合,参謀本部副長G-2,米陸軍情報保全コマンド(INSCOM)司令官,陸軍司令官および陸軍サービスコンポーネント司令部の司令官,第650軍事情報グループ指揮官,またはその指名するものは配属、付属、連携、または詳細な陸軍情報組織、ユニット、要素に対して、その情報任務を支援するためのOSINT活動を行う権限を書面により付与できるものとします. (備考: インテリジェンスオフィサーは、OSINTの最善の倫理的使用について指揮官に助言する責任があります.)

以下未翻訳

米軍のOSINTマニュアルの翻訳(序文)

本文章は陸軍及び海兵隊におけるオープンソースインテリジェンス(OSINT)活動の共通のフレームワーク,基本概念,使用方法を確立します.これはインテリジェンス分野におけるOSINTの基本を強調しインテリジェンスプロセスにおける役割について説明します.この文章はオープンソースな文章のみを扱っています.

本文章は

  • OSINTを理解するための共通の基盤を確立します
  • OSINT活動を実施する陸軍の部隊と海兵隊の組織に基本的な原則と用語を提供します
  • オープンソース情報の価値を強調します
  • オープンソース情報からインテリジェンス情報を計画、準備、収集、および生成するための体系的なアプローチについて説明します

本文章の対象は

  • 大隊、旅団/海兵隊,空軍任務部隊、師団、軍、劇場陸軍/海兵遠征軍の情報スタッフで、オープンソース情報を収集したり、情報分析を支援したり、軍の意思決定プロセス/海兵隊の計画プロセスを支援するためにOSINTを使用するもの
  • 軍の諜報機関、部隊、または許可されたOSINTミッションを持つ要素を割り当て、添付、詳細化、またはサポートする陸軍諜報員(軍、民間人、および請負業者)
  • 正規のOSINTミッションを持つ陸軍情報組織、ユニット、または部隊
  • 計画と運用をサポートするために特定のインテリジェンス要件に対処するためにOSINTを必要とする戦略的、運用的、および戦術的な司令官

    この文章は情報公開法Title 5 U.S.C. 552(b)(3)によって非公開になっています

    サイバースペースとは、情報技術におけるインフラの相互ネットワークと、インターネット、電気通信ネットワーク、コンピュータシステム、組み込みプロセッサおよびコントローラ(JP 3-12 [R])などの常駐(?)データで構成される情報空間のグローバルドメインです

合同任務部隊または多国籍軍司令部を務める陸軍/海兵隊司令部および幕僚は、軍事行動の範囲および合同または多国籍軍に関する適用可能な合同または多国籍軍のドクトリンも参照する必要があります.陸軍/海兵隊全体のトレーナーや教育者も、本書を利用します.

司令官、スタッフ、および部下は、彼らの決定と行動が、該当する米国(US)、国際、場合によっては受入国の法律および規制に準拠していることを確認します.すべてのレベルの司令官は、兵士/海兵隊戦時国際法と交戦規定に従って行動することを保証する必要があります(FM 27-10を参照).

本文章では共通の用語を使用します.陸軍,海兵隊,共用の単語は文末の用語集と本文中に記載しています.陸軍/海兵隊の用語の提唱者ではありません.(本書で用語を特定するために使用されるスタイルの規則については、vii ページを参照してください.)

陸軍/海兵隊が商業的または民間的な組織の名称やその関連商標、サービスを使用または言及することは、陸軍/海兵隊がスポンサーやその製品・サービスを推奨することを明示または暗示するものではないことをご了承ください.

本文章はは、特に明記されていない限り、現役陸軍および海兵隊、米国陸軍州兵/陸軍州兵、米陸軍予備軍、および米海兵隊予備軍に適用されます.

本文章の提案者は米国陸軍情報センターオブエクセレンスです.作成機関は、米国陸軍情報センターオブエクセレンスの能力開発および統合本部です.

この出版物の米国海兵隊の読者は、Universal Need Statement(UNS)プロセスを通じて提案や変更を提出することをお勧めします.UNSの提出プロセスは、MCO 3900.20に記載されています.これは、海兵隊出版物の電子図書館からオンラインで入手できます. UNS勧告には、以下の情報を含める必要があります.

  • 変更場所
  • 出版番号とタイトル
  • 現在のページ番号
  • 段落番号(該当する場合)
  • 行番号
  • 図または表番号(該当する場合)
  • 変化の性質
  • テキストの追加または削除
  • 提案された新しいテキスト

米軍のOSINTマニュアルの翻訳(目次)

概要

米軍は様々なマニュアルを作成公開しています. 今回はATP 2-22.9というマニュアルを翻訳します. 最新版はセキュリティクリアランスの問題で閲覧できません. 2017年に作成され,2019年に最新版へ移行されました.

この2017年版は米国科学者連盟のSteven Aftergood氏による情報公開請求によって公開されました.

また,情報公開法Title 5 U.S.C. 552(b)(3)によって一部の情報が非公開になっています. これは情報源と手法の保護に関する法律50 U.S.C. § 3024(i)によるものです.

0. 目次

  1. 序文
  2. イントロダクション

パート1 基礎 第1章 OSINTの概要 1-1 OSINTの定義 1-1 OPSEC(運用におけるセキュリティ)と公開情報 1-2 OSINTの特徴 1-2 情報戦の役割 1-3 インテリジェンス企業(?)におけるOSINT 1-4 処理,活用,発信 1-7 軍の意思決定プロセス/海兵隊の計画プロセス 1-7 戦場・戦域のインテリジェンスの準備 1-8 第2章 OSINTの構造 2-1 OSINTの能力 2-1 師団およびそれ以下の部隊、海兵空地タスクフォースにおけるOSINT 2-1 師団以上におけるOSINT 2-4 サービス機関(サポート機関?) 2-6

パート2 OSINTと脅威のプロセス 第3章 計画と直接(?) 3-1 情報収集とOSINT 3-1 インテリジェンスミッションと情報要件 3-2 OSINT活動の計画 3-2 インターネットにアクセスするOSINTの準備に関する考慮事項 3-5 第4章 収集 4-1 OSINT収集活動 4-1 オープンソース情報の種類 4-2 OSINTの収集物4-2 第5章 成果物 5-1 情報処理 5-1 インテリジェンス成果物の種類 5-2 情報の評価 5-3 第6章 共有 6-1 共有の方法と手法 6-1 報告方法 6-2 付録A 法的制限および規制上の制限 A-1 付録B セキュリティ意識 8-1 付録C 基本的および高度なインターネット検索 C-1 情報公開法による制限 付録D オープンソースリソース D-1 情報公開法による制限 用語集 用語集-1 参考文献 参考文献-1

索引-1

latexメモ

全体のメモ

custom.sty上に使用パッケージ,マクロ等を記述 タイトル生成 - title{英文タイトル} - jptitle{和文タイトル} - author[所属番号]{名前} - affil[所属番号]{所属組織} - labname{研究室名} - Myname{自分の名前} - source{論文の出典} - date{日付} 参考文献はすべてdoc.bibに記述してbibtexで管理 - cite[ページ数]{参考文献のタグ} 箇条書き環境前後の余白は\vspace{数字 負にすると減る\baselineskip}で調整

メインで

\documentclass[twocolumn]{jsarticle}
\usepackage{custom}

labname, Myname, source, jptitleを使用しないときはスタイルファイル上で関連部分を削除しないとエラーが出る.

スタイルファイルについて

余白の調整とmaketitleのカスタマイズが主

%使用パッケージの宣言
\usepackage[dvipdfmx]{graphicx}
\usepackage{authblk}
\usepackage{here}

%上下左右,図表などのの余白調整
\usepackage[top=25truemm,bottom=25truemm,left=20truemm,right=20truemm]{geometry}
\setlength\textfloatsep{0pt}
\setlength\intextsep{0pt}
\setlength\textfloatsep{0pt}
\setlength\parindent{0pt}
\setlength\abovecaptionskip{0pt}

\makeatletter
%section前後の余白調整
\renewcommand{\section}{\@startsection{section}{1}{\z@}%
    {0.5\Cvs}{0\Cvs}%
    {\normalfont\large\headfont\raggedright}}

%titleのカスタム
\def\jptitle#1{\def\@jptitle{#1}}
\def\source#1{\def\@source{#1}}
\def\labname#1{\def\@labname{#1}}
\def\Myname#1{\def\@Myname{#1}}
\def\citename#1{\def\@citename{#1}}
\renewcommand{\@maketitle}{\newpage
    \null
    \vspace{-0.5\baselineskip}
    \begin{center}
    {\LARGE \@title \par} 
    {\LARGE \@jptitle \par}
    \vskip 0.5em 
    {
        \large \lineskip 0em
        \begin{tabular}[t]{c}\@author
        \end{tabular}\par
    }
    \vskip 0em 
    {\small \@source}
    \vskip 0.5em 
    {\large 発表者:\@labname,\@Myname}
    \vskip 0mm
    {\large \@date}
    \end{center}
    \par
    \vskip 1.5em
}

%箇条書き環境の余白調整
\let\oldenumerate\enumerate
\renewcommand{\enumerate}{
   \oldenumerate
   \setlength{\itemsep}{1pt}
   \setlength{\parskip}{0pt}
   \setlength{\parsep}{0pt}
}
\let\olditemize\itemize
\renewcommand{\itemize}{
   \olditemize
   \setlength{\itemsep}{1pt}
   \setlength{\parskip}{0pt}
   \setlength{\parsep}{0pt}
}

%二段組み解除して図表はるときにセンタリングかからないよう
\@dblfptop 0pt

\makeatother

YouTubeのプレイリストから音声をダウンロードするやつ

あとでやること

youtube premiumでしか見れないやつと非公開動画をスキップして次の動画に移る Unable to extract JS player URLが出たら強制終了にする

使うもの

YouTube-dlcYouTube-dlからフォークされたpython製ツール YouTube-dlの更新頻度が低かったことでフォークされた YouTube-dlがDMCA takedown食らっているのでYouTube-dlcがおすすめ?

使い方

python main.py <プレイリストid> <出力相対path>

実装

  • YoutubeDLError はYouTube-dlのエラーすべての継承元
  • download_optsのformatとpostprocessorsをいじれば動画とかもいける
  • 毎回,UA変更している
import youtube_dlc
import json
import time
import random
import os
import sys


def download_video(download_opts,urlnum,urllist):
    with youtube_dlc.YoutubeDL(download_opts) as ydl:
        i = 0
        for url in urllist:
            while True:
                try:
                    ydl.extract_info(url, download=True)
                    wait_time(5, 20)                    
                except KeyboardInterrupt:
                    print("\nKeyboardInterrupt")
                    exit(1)
                except youtube_dlc.utils.YoutubeDLError:
                    youtube_dlc.utils.std_headers['User-Agent']=youtube_dlc.utils.random_user_agent()
                    wait_time(1, 10)
                except:
                    print("\nother error")
                    exit(1)
                else:
                    youtube_dlc.utils.std_headers['User-Agent']=youtube_dlc.utils.random_user_agent()
                    i += 1
                    print(
                        "\n\nDownloaded Items " + str(i) + "/" + str(urlnum) + "\n\n"
                        "--------------------------------------------------------------"
                    )
                    break

def flat_playlist(flat_list):
    with youtube_dlc.YoutubeDL(flat_list) as ydl:
        try:
            info_dict = ydl.extract_info(playlist, download=False)
        except youtube_dlc.utils.YoutubeDLError:
            print("\nNot get playlist. Check playlist-id and retry")
            exit(1)
        except:
            print("\nother error")
            exit(1)
        o = json.loads(json.dumps(info_dict, ensure_ascii=False))
    urllist = []
    for items in o["entries"]:
        urllist.append("https://www.youtube.com/watch?v=" + items["id"])
    urlnum = len(urllist)
    return urlnum, urllist

def wait_time(s, e):
    sleeptime = random.randrange(s, e) + random.random()
    print("wait for " + str(f"{sleeptime:.1f}"))
    time.sleep(sleeptime)


if __name__ == "__main__":

    try:
        playlist = "https://www.youtube.com/playlist?list="+sys.argv[1]
        outputpath = "./"+sys.argv[2]
    except IndexError:
        print("Arguments are playlist-id output-path")
        exit(1)


    if not os.path.exists(outputpath):
        print("Make output directory --> " + outputpath)
        os.makedirs(outputpath)


    flat_list = {
        "extract_flat": True,
    }
    urlnum,urllist=flat_playlist(flat_list)

    print(
        "--------------------------------------------------------------\n"
        "\ndownload items " + str(urlnum) + "\n"
        "download start\n\n"
        "--------------------------------------------------------------"
    )


    download_opts = {
        "format": "bestaudio/best",
        "outtmpl": outputpath + "/%(title)s.%(ext)s",
        "postprocessors": [
            {
                "key": "FFmpegExtractAudio",
                "preferredcodec": "mp3",
                "preferredquality": "256",
            }
        ],
    }
    download_video(download_opts,urlnum,urllist)

    print("\nDownload complete\n")