これは、Ubuntu Online、Fedora Online、Windows オンライン エミュレーター、MAC OS オンライン エミュレーターなど、複数の無料オンライン ワークステーションのいずれかを使用して、OnWorks 無料ホスティング プロバイダーで実行できるコマンド ooniprobe です。
プログラム:
NAME
ooniprobe - ネットワーク検閲測定ツール。
SYNOPSIS
オニプローブ [-hnsp] [- バージョン] [- 吐く] [-o レポートファイル] [-i テストデッキ] [-c コレクタ] [-b
バウンサー] [-l ログファイル] [-O pcapファイル] [-f 構成ファイル] [-d データディレクトリ] テスト名
DESCRIPTION
ooniprobe は、インターネット検閲測定を実行するためのツールです。 私たちの目標は達成することです
検閲関連の調査を実施するための共通のデータ形式と一連の方法論。
OPTIONS
-h or - 助けて
このヘルプを表示して終了します。
-n or --コレクターなし
oonib コレクターへの正味のテスト結果のレポートを無効にします。
-s or - リスト
利用可能なすべてのネット テストを一覧表示します。
-p or --printdeck
指定されたコマンド ライン オプションを ooniprobe テストとして標準出力に出力します。
デッキ。
-o or --レポートファイル
書き込むレポートファイルへのパスを指定します。
-i or --テストデッキ
入力としてテスト デッキを指定します。実行するテストとそのテストを含む yaml ファイルです。
引数
-c or - コレクタ
ネット テスト結果のコレクタのアドレスを指定します。 常に行うことをお勧めします
バウンサーを指定して、テストまたはテストデッキのコレクターを返すようにします
実行している。
-b or -- バウンサー
どのコレクタを使用するかをプローブに通知するバウンサーのアドレス。
テスト ヘルパーのアドレス。 デフォルト: http://nkvphnp3p6agi5qq.onion
-l or --ログファイル
書き込むログ ファイルへのパス
-O or --pcapfile
pcap ファイル名のプレフィックス。
-f or --configfile
ooniprobe 構成ファイルへのパスを指定します。
-d or --datadir
ooniprobe データ ディレクトリへのパスを指定します。
- 吐く 発生したすべての非常に詳細なログを印刷します。 デバッグ時に役立ちます
複雑なコードをフリーズまたはロックします。
- バージョン
ooniprobe のバージョンを表示して終了します。
オニプローブ
プロジェクトにデータを提供することに関心のあるボランティアや研究者のためのツールです
実行されている必要があります。
ooniprobe を使用すると、実行するテストとバックエンドを選択できます
テストレポートを保存したり、テストの実行を支援したりするために使用されます。
ooniprobe テストは、次の XNUMX つのカテゴリに分けられます。 トラフィック 操作 および コンテンツ
ブロッキング.
トラフィック 操作 テストは、何らかの改ざんの存在を検出することを目的としています
プローブとリモート テスト ヘルパー バックエンド間のインターネット トラフィック。 そのため、彼らは通常
テストを実行するには、oonib バックエンド コンポーネントを選択する必要があります。
コンテンツ ブロッキング からブロックされているコンテンツの種類を列挙することを目的としています
ネットワークの観点からプローブします。 そのため、通常は入力リストを指定する必要があります
テストを実行するため。
脅威 モデル
私たちの敵は、全国規模のネットワーク監視と操作を行うことができます
ネットワークトラフィック。
敵の目標は次のとおりです。
· 全体的な品質を低下させずに、特定のコンテンツへのアクセスを制限します。
ネットワーク
· ネットワークの悪用をリアルタイムで特定できるようにネットワークを監視する
ネットワーク フィルタリング検出テストの実行に特化したもの:
1.検閲検出テストを実行しているアクターを検出する
2. そのようなテストを実行している人々をだまして、ネットワークが制限されていないと信じ込ませる
注意 2) => 1) そのようなアクターの識別として 1) => 2) が真実ではないこと
必ずしもリアルタイムで発生する必要はありません。 私たちの意図は最小限に抑えることですが、
OONI プローブを実行しているユーザーが特定されるリスクがありますが、これには精度のトレードオフが伴います。
したがって、特定のテストでは、フィンガープリント可能性をトレードオフして以下を優先する必要があります。
精度をテストします。
これが、実行中のユーザーが直面するリスクに基づいてテストを分割し、
ユーザーは、どの脅威モデルを尊重したいかを自由に選択できます。
インストール
読む この ランニング オニプローブ!
ooniprobe の実行は、潜在的に危険なアクティビティです。 これは、
あなたがいる管轄区域とあなたが実行しているテスト。 技術的には
あなたのインターネット接続を監視している人が、あなたが
ooniprobe を実行しています。 これは、ネットワーク測定テストの実行が何かである場合、
あなたの国で違法であると見なされた場合、あなたは発見される可能性があります。
さらに、ooniprobe は、インストール ターゲット マシンを保護するための予防措置を講じません。
法医学分析。 ooni プローブをインストールまたは使用したことが責任である場合
あなたのために、このリスクに注意してください。
Debianの ベース システム
sudo sh -c 'エコー 「デブ http://deb.ooni.nu/ooni きしみ 主要" >> /etc/apt/sources.list'
gpg --キーサーバー pgp.mit.edu --recv キー 0x49B8CDF4
gpg - 書き出す 89AB86D4788F3785FE9EDA31F9E2D9B049B8CDF4 | sudo apt-key 加えます -
sudo apt-get update && sudo apt-get install オニプローブ
Linux
私たちは、ooniprobe が Debian GNU/Linux wheezy だけでなく、かなりうまく動作すると信じています。
natty 以降のリリースなどの Ubuntu のバージョン。 インストールせずにooniprobeを実行する
次のコマンドでサポートされています。
git https://git.torproject.org/ooni-probe.git
cd オニプローブ
./setup-dependency.sh
パイソン setup.py install
設定 up 開発 環境
Debian ベースのシステムでは、これは次の方法で実行できます。
ヴスド apt-get install libgeoip-dev python-virtualenv 仮想環境ラッパー
mkvirtualenv オニプローブ
パイソン setup.py install
ピップ install -r 要件-dev.txt
その他 プラットフォーム (with 浮浪者)
インストールを開始する 浮浪者 および インストールを開始する Virtualboxの
On OSX:
お持ちでない方はインストール 自作
醸造 install git
On デビアン/ubuntu:
sudo apt-get install git
1. ターミナルを開き、次を実行します。
git https://git.torproject.org/ooni-probe.git
cd おにプローブ/
vagrant up
2. 次の方法でボックスにログインします。
vagrant ssh
にooniprobeがインストールされます /おに.
3. 以下を使用してテストを実行できます。
オニプローブ ブロッキング/http_requests -f /ooni/inputs/input-pack/alexa-top-1k.txt
使い方 オニプローブ
ネット test どのような種類のインターネット検閲が発生しているかを評価するための一連の測定値です。
デッキ いくつかの関連する入力を持つ ooniprobe ネットテストのコレクションです。
コレクタ 測定結果を報告するサービスです。
ホイール試乗 ヘルパー プローブが測定を正常に実行するために使用するサービスです。
バウンサー テスト ヘルパーとコレクターのアドレスを検出するために使用されるサービスです。
設定 オニプローブ
見つかった構成ファイルを編集することで、ooniprobe の構成を編集できます。
の中に ~/.ooni/ooniprobe.conf.
デフォルトでは、ooniprobe はテスト結果に個人を特定する情報を含めません。
pcap ファイルも作成しません。 この動作はパーソナライズできます。
Running: デッキ
インストールされているすべてのデッキが /usr/share/ooni/デッキ.
その後、コマンド ライン オプションを使用してデッキを実行できます。 -i:
ルートとして:
オニプローブ -i /usr/share/ooni/decks/mlab.deck
またはユーザーとして:
オニプローブ -i /usr/share/ooni/decks/mlab_no_root.deck
または:
ルートとして:
オニプローブ -i /usr/share/ooni/decks/complete.deck
またはユーザーとして:
オニプローブ -i /usr/share/ooni/decks/complete_no_root.deck
上記のテストは、ネットワークによって異なりますが、完了するまでに約 20 ~ 30 分かかります。
速度。
より高速なテストを実行したい場合は、以下を実行する必要があります: root として:
オニプローブ -i /usr/share/ooni/decks/fast.deck
またはユーザーとして:
オニプローブ -i /usr/share/ooni/decks/fast_no_root.deck
Running: net テスト
インストールされているすべての安定したネット テストを次のように一覧表示できます。
オニプローブ -s
次に、名前を指定して nettest を実行できます。次に例を示します。
オニプローブ 操作/http_header_field_manipulation
テストへの入力を URL として指定することもできます。
オニプローブ ブロッキング/http_requests -f http://ihiderha53f36lsd.onion/input/
37e60e13536f6afe47a830bfb6b371b5cf65da66d7ad65137344679b24fdccd1
テストの結果は、現在の作業ディレクトリにあります。
デフォルトでは、レポート結果はデフォルトの ooni コレクターによって収集され、
テスト ヘルパーのアドレスは、デフォルトのバウンサーから取得されます。
オプションで独自のコレクターまたはバウンサーを指定することもできます -c および -b.
(オプション) インストールを開始する オブスプロキシ
お使いのプラットフォームに最新バージョンの obfsproxy をインストールします。
無料ダウンロード オブスプロキシ
ブリッジ および オブスプロキシ ブリッジ
ooniprobe は、非表示のサービスへの Tor を介して oonib レポート コレクターにレポートを送信します。
終点。 デフォルトでは、ooniprobe はインストール済みのシステム Tor を使用しますが、構成することもできます
Tor を起動する (ooniprobe.conf の advanced.start_tor オプションを参照)、および ooniprobe
ブリッジ (および obfsproxy がインストールされている場合は obfsproxy ブリッジ) をサポートします。 tor.bridges
oniprobe.conf のオプションは、一連の「ブリッジ」を含む必要があるファイルへのパスを設定します
行 (torrc で使用されるものと同じ形式で、によって返されるもの)
https://bridges.torproject.org)。 obfsproxy ブリッジを使用する場合は、
obfsproxy バイナリを構成する必要があります。 のオプション advanced.obfsproxy_binary を参照してください。
oniprobe.conf。
設定 機能 on virtualenv パイソン バイナリ
ディストリビューションが機能をサポートしている場合は、OONI を root として実行する必要がなくなります。
セットキャップ cap_net_admin、cap_net_raw+eip /path/to/your/virtualenv の/python
基本 オニプローブ テスト
のソース コンテンツ ブロッキング テスト および トラフィック 操作 テスト の中で見つけることができます
それぞれ nettests/blocking および nettests/manipulation ディレクトリ。
コンテンツ ブロッキング テスト
· DNS の一貫性
· HTTP つながり申請
· TCP お問合せ
トラフィック 操作 テスト
· HTTP 「無効」 リクエスト ライン:
· DNS なりすまし
· HTTP ヘッダ フィールド 操作
· Traceroute
· HTTP 主催者
その他 テスト
また、現在完全にサポートされていない、またはまだサポートされていない他のテストもいくつかあります。
で実験しました。
これらは次の場所にあります。
· オーニ/ネットテスト/実験的
測定は行わないがスキャンに役立つテストは、次の場所にあります。
· オーニ/ネットテスト/スキャン
サードパーティ ツールの実行を伴うテストは、次の場所にあります。
· オニ/ネットテスト/サードパーティ
レポート
ooniprobe によって収集されたレポートは、 https://ooni.torproject.org/reports/0.1/
CC /
場所 CC によって指定された XNUMX 文字の国コードです。 ISO 31666-2.
たとえば、イタリアのレポート (CC is it) は次の場所にあります。
https://ooni.torproject.org/reports/0.1/IT/
このディレクトリには、以下を使用したテストのさまざまなレポートが含まれます。
大会:
テスト名 - ISO8601形式の日付 - プローブAS番号 .yamloo
日付は次を使用して表されます。 ISO 8601 秒を含み、なし : 時間を区切るために、
分、日。
そのようです:
YEAR - MONTH - 日 T HOURS MINUTES SECONDS Z
見て (茶事の話はこちらをチェック) for up 〜へ date リスト of ISO 8601 国 コード
時間は 常に UTC で表されます。
衝突が検出された場合、int (1 から始まる) がテストに追加されます。
たとえば、2012 年 XNUMX 月 XNUMX 日の正午 (UTC 時間) に作成された XNUMX つのレポートがあるとします。
MIT (AS3) のシャープは次の場所に保存されます。
https://ooni.torproject.org/reports/0.1/US/2012-01-01T120000Z_AS3.yamloo
https://ooni.torproject.org/reports/0.1/US/2012-01-01T120000Z_AS3.1.yamloo
注: まったく同じタイムスタンプでレポートが作成される可能性はほとんどありません。
同じ正確な ASN。 これが発生した場合、悪意のあるレポートのインデックスである可能性があります
毒攻撃中。
レポート 形式でアーカイブしたプロジェクトを保存します. バージョン 変更履歴
ここでは、レポート形式の主な変更点について詳しく説明します。
バージョン 0.1
初期フォーマット版。
書き込み おおい テスト
OONI テスト API は大きな影響を受けており、部分的に python に基づいています。 単体テスト
モジュールと ツイストトライアル.
ホイール試乗 ケース
OONI テストのアトムは、テスト ケースと呼ばれます。 テスト ケース クラスには、複数のテスト ケースを含めることができます。
テスト方法。
class ooni.nettest.NetTestCase
これは、OONI nettest ユニバースのベースです。 ネットテストを書くと、
このオブジェクトをサブクラス化します。
· 入力: 入力の静的セットに設定できます。 すべてのテスト (メソッドの開始
"test" 接頭辞付き) は、入力ごとに XNUMX 回実行されます。 _input_ を実行するたびに
TestCase インスタンスの属性は、現在の値に設定されます
入力に対する反復。 任意の Python 反復可能オブジェクトを入力に設定できます。
· inputFile: 属性は、コマンド ラインを含む配列に設定する必要があります
入力ファイルとして使用する引数。 このような配列は次のようになります。
["commandlinearg", "c"、 "ディフォルト 価値" " 説明"]
このような配列の XNUMX 番目の値は、コマンド ライン arg の短縮形です。 の
ユーザーは、次の方法でテストへの入力を指定できます。
オニプローブ mytest.py --commandlinearg パス/to/file.txt
or
オニプローブ mytest.py -c パス/to/file.txt
· inputProcessor: ファイル名と引数を受け取る関数に設定する必要があります。
テストインスタンスに渡される入力を返します。
· name: テストの名前に設定する必要があります。
· 作成者: テスト作成者の名前と連絡先の詳細を含める必要があります。 の
このような文字列の形式は次のとおりです。
この 名前 <email@example.com>
· version: テストのバージョン文字列です。
· requiresRoot: テストをルートとして実行する必要がある場合は、True に設定します。
· usageOptions: を処理するための twisted.python.usage.Options のサブクラス
コマンドライン引数
· localOptions: 解析されたコマンド ライン引数が含まれます。
癖: test で始まるすべてのクラス しなければなりません を返す
twisted.internet.defer.Deferred。
作成しようとしているテストが Torの おおい tracの ページ、追加する必要があります
をリストに追加し、その後に説明を追加します。 ホイール試乗 テンプレート
テストは入力によって駆動されます。 入力ごとに新しいテスト インスタンスが作成され、内部的に
テスト テンプレート内で定義されている _setUp メソッドが呼び出され、次に setUp メソッドが呼び出されます。
ユーザーによる上書きが可能です。
落とし穴: 決して テストメソッド内で reactor.stop の reactor.start を呼び出すと、すべてが
良い。
入力
入力は、テスト ケースの反復ごとに入力として与えられるものです。 もしあなたが100を持っているなら
すべてのテスト ケースが 100 回実行されます。
入力の静的セットを構成するには、次を定義する必要があります。 ooni.nettest.NetTestCase
属性を使用する。 入力. テストが実行されます len(入力) 回。 反復可能なオブジェクトはすべて有効です
入力 属性。
ユーザー指定の入力ファイルから入力を決定したい場合は、
を設定する必要があります 入力ファイル 属性。 これは、コマンド ライン オプションを指定する配列です。
この値を制御するために使用できます。
デフォルトでは、 入力プロセッサ ファイルをXNUMX行ずつ読み取り、改行を削除するように設定されています
文字。 この動作を変更するには、 入力プロセッサ に属性
ファイル記述子を引数として取り、次のアイテムを生成する関数。 デフォルト
入力プロセッサ 次のようになります。
def lineByLine(ファイル名):
fp = 開く (ファイル名)
fp.xreadlines() の x の場合:
収量 x.strip()
fp.close()
および command ライン 通過
テストは、 設定 Test Case オブジェクトが呼び出されるたびに呼び出されるメソッド
ここで、すべてのテスト メソッドに共通のロジックを配置することができます。
テストが行われる前に実行されます。
コマンドライン引数はツイストのおかげで解析できます
ツイスト.python.usage.UsageOptions とに提供されます。
これをサブクラス化し、NetTestCase 属性の usageOptions をポイントするように定義する必要があります。
this のサブクラスに。
クラス UsageOptions(usage.Options):
optParameters = [['backend', 'b', 'http://127.0.0.1:57001',
「使用するテスト バックエンドの URL」]
]
クラス MyTestCase (nettest.NetTestCase):
使用オプション = 使用オプション
inputFile = ['file', 'f', None, "いくつかの foo ファイル"]
requiredOptions = ['バックエンド']
def test_my_test(self):
self.localOptions['バックエンド']
その後、クラス属性を介して解析されたコマンド ライン引数にアクセスできます。
ローカルオプション。
この 必須オプション attributes は、属性に必要なパラメーターの配列を指定します。
正常に動作するかテストします。
入力ファイル inputFile の処理に使用される特別なクラス属性です。
ここで読み込まれるファイル名は、
ooni.nettest.NetTestCase.inputProcessor デフォルトで XNUMX 行を生成するメソッド
一度にファイル。
ホイール試乗 メソッド
これらは、あなたの ooni.nettest.NetTestCase サブクラス。 これらは
クラスメソッド。
test_ で始まるすべてのクラス メソッドが実行されます。 関連する機能
テストでは、アンダースコアで区切られたすべて小文字にする必要があります。
テスト レポートにデータを追加するには、次のようにレポート オブジェクトに直接書き込むことができます。
def test_my_function():
結果 = do_something()
self.report['something'] = 結果
その後、OONI が最終テスト レポートへのデータの書き込みを処理します。
現在の入力にアクセスするには、 属性、例:
def test_with_input():
do_something_with_input(self.input)
これは、入力のリストを反復するたびに、入力に対して何かを行います。
ホイール試乗 テンプレ
テスト テンプレートは、テストの作成に役立ちます。 それらはすでにすべての一般的なものを含んでいます
そのタイプのテストを実行するのに役立つ機能。 彼らはまた世話をします
テスト実行に関連する、収集したデータをレポート ファイルに書き込みます。
現在実装されているテスト テンプレートは oni.templates.scapyt Scapy に基づくテストの場合、
oni.templates.tcpt TCP に基づくテストの場合、 oni.templates.httpt HTTP に基づくテストの場合、
および ooni.templates.dnst DNS に基づくテスト用。
スカピー ベース テスト
Scapy ベースのテストは、のサブクラスになります ooni.templates.scapyt.BaseScapyTest.
送信されたメッセージを書き込む scapy 送受信関数のラッパーを提供します。
送信元と宛先 IP のサニタイズを含むレポートへの受信パケット
アドレス。
Scapy sr 関数と同じ構文を持ちますが、遅延オブジェクトを返す点が異なります。
この関数に基づいて単純な ICMP ping を実装するには、次のようにすることができます (から取得
nettest.examples.example_scapyt.ExampleICMPPingScapy)
twisted.python インポートの使用法から
scapy.all から IP、ICMP をインポート
ooni.templates から scapyt をインポート
クラス UsageOptions(usage.Options):
optParameters = [['target', 't', '127.0.0.1', "ping するターゲットを指定"]]
クラス ExampleICMPPingScapy(scapyt.BaseScapyTest):
name = "ICMP Ping テストの例"
使用オプション = 使用オプション
def test_icmp_ping (自己):
デフ終了 (パケット):
印刷パケット
回答済み、未回答 = パケット
snd の場合、rcv の回答:
rcv.show()
パケット = IP(dst=self.localOptions['target'])/ICMP()
d = self.sr(パケット)
d.addCallback(終了)
dを返す
self.sr() が受け取る引数は、scapy の送受信とまったく同じです。
唯一の違いは、通常の scapy スーパー ソケットを使用する代わりに、
ツイスト ドリブン ラッパーを使用します。
あるいは、このテストは、 Twisted.defer.inlineCallbacks()
これにより、通常のシーケンシャル コードにより似た外観になります。
twisted.python インポートの使用法から
twisted.internet からのインポートの延期
scapy.all から IP、ICMP をインポート
ooni.templates から scapyt をインポート
クラス UsageOptions(usage.Options):
optParameters = [['target', 't', '127.0.0.1', "ping するターゲットを指定"]]
クラス ExampleICMPPingScapyYield(scapyt.BaseScapyTest):
name = "ICMP Ping テストの例"
使用オプション = 使用オプション
@defer.inlineCallbacks
def test_icmp_ping (自己):
パケット = IP(dst=self.localOptions['target'])/ICMP()
回答済み、未回答 = 利回り self.sr(packets)
snd の場合、rcv の回答:
rcv.show()
レポート フォーマット
############################################
# ICMP Ping テスト テスト例の OONI プローブ レポート
# 22 年 18 月 20 日(木)43:2012:XNUMX
############################################
---
{probe_asn: null、probe_cc: null、probe_ip: 127.0.0.1、software_name: ooniprobe、software_version: 0.0.7.1-alpha、
start_time: 1353601243.0, test_name: ICMP Ping テストの例, test_version: 0.1}
...
---
入力:null
レポート:
Answer_flags: [ipsrc]
回答パケット:
- - raw_packet: !!バイナリ |
RQAAHAEdAAAuAbjKCAgICH8AAAEAAAAAAAAAA==
要約: IP / ICMP 8.8.8.8 > 127.0.0.1 エコー応答 0
送信済みパケット:
- - raw_packet: !!バイナリ |
RQAAHAABAABAAevPfwAAAQgICAgIAPf/AAAAAA==
要約: IP / ICMP 127.0.0.1 > 8.8.8.8 エコー要求 0
テスト名: test_icmp_ping
テスト開始: 1353604843.553605
...
TCP ベース テスト
TCP ベースのテストはサブクラス化します ooni.templates.tcpt.TCPTest.
このテスト テンプレートは、ネットワークへの TCP ペイロードの送信と、
応答。
twisted.internet.error import ConnectionRefusedError から
ooni.utilsインポートログから
ooni.templates import tcpt から
クラス ExampleTCPT(tcpt.TCPTest):
def test_hello_world(self):
def got_response(応答):
print "Got this data %s" % 応答
def connection_failed (失敗):
failure.trap(接続拒否エラー)
print "接続が拒否されました"
self.address = "127.0.0.1"
セルフポート = 57002
ペイロード = "Hello World!\n\r"
d = self.sendPayload(ペイロード)
d.addErrback(接続失敗)
d.addCallback(got_response)
dを返す
TCP 接続で発生する可能性のある障害は次のとおりです。
ツイスト.インターネット.エラー.NoRouteError errno.ENETUNREACH に対応する
Twisted.internet.error.ConnectionRefusedError errno.ECONNREFUSED に対応する
Twisted.internet.error.TCPTimedOutError errno.ETIMEDOUT に対応する
レポート 形式でアーカイブしたプロジェクトを保存します.
TCP テストの基本的なレポートは次のようになります (これは、
TCP エコー サーバーに対して上記の例を実行します)。
############################################
# Base TCP Test テスト用の OONI プローブ レポート
# 22 年 18 月 18 日(木)28:2012:XNUMX
############################################
---
{probe_asn: null、probe_cc: null、probe_ip: 127.0.0.1、software_name: ooniprobe、software_version: 0.0.7.1-alpha、
start_time: 1353601108.0、test_name: ベース TCP テスト、test_version: '0.1'}
...
---
入力:null
レポート:
エラー: []
受信: ["Hello World!\n\r"]
送信: ["Hello World!\n\r"]
テスト名: テストハローワールド
テスト開始: 1353604708.705081
...
TODO これを詳細に仕上げる
HTTP ベース テスト
HTTP ベースのテストは のサブクラスになります ooni.templates.httpt.HTTPTest.
メソッドを提供します ooni.templates.httpt.HTTPTest.processResponseBody() および
ooni.templates.httpt.HTTPTest.processResponseHeaders() 応答と対話するため
それぞれ、ボディとヘッダー。
たとえば、レスポンス本文の sha256 ハッシュを返す HTTP テストを実装するには
(に基づく nettests.examples.example_httpt):
ooni.utilsインポートログから
ooni.templates から httpt をインポート
hashlib インポート sha256 から
クラス SHA256HTTPBodyTest(httpt.HTTPTest):
名前 = "ChecksumHTTPBodyTest"
作者=「アーロン・ギブソン」
バージョン=0.1
inputFile = ['URL ファイル', 'f', なし,
「GETリクエストを実行するURLのリスト」]
requiredOptions = ['URL ファイル']
def test_http(自己):
self.input の場合:
URL = self.input
self.doRequest(url) を返す
その他:
raise Exception("入力が指定されていません")
def processResponseBody (自己、本体):
body_sha256sum = sha256(本体).hexdigest()
self.report['checksum'] = body_sha256sum
レポート 形式でアーカイブしたプロジェクトを保存します.
############################################
# ChecksumHTTPBodyTest テストの OONI プローブ レポート
# 6 年 17 月 31 日(木)57:2012:XNUMX
############################################
---
オプション:
コレクター: ヌル
ヘルプ: 0
ログファイル: null
pcapfile: ヌル
レポートファイル: null
履歴書: 0
サブ引数: [-f, ホスト]
テスト: nettests/examples/example_http_checksum.py
プローブ_asn: ヌル
プローブ_cc: ヌル
プローブ_ip: 127.0.0.1
software_name: オニプローブ
ソフトウェアバージョン: 0.0.7.1-alpha
開始時刻: 1354786317.0
テスト名: ChecksumHTTPBodyTest
テストバージョン: 0.1
...
---
入力: http://www.google.com
レポート:
エージェント: エージェント
checksum: d630fa2efd547d3656e349e96ff7af5496889dad959e8e29212af1ff843e7aa1
リクエスト:
- リクエスト:
本体:ヌル
ヘッダー:
- - ユーザーエージェント
- - [Opera/9.00 (Windows NT 5.1; U; en), 'Opera 9.0, Windows XP']
メソッド: GET
URL: http://www.google.com
応答:
体: ' '
コード:200
ヘッダー:
- - X-XSS-保護
- [1; モード=ブロック]
- - セット Cookie
- ['PREF=ID=fada4216eb3684f9:FF=0:TM=1354800717:LM=1354800717:S=IT-2GCkNAocyXlVa;
expires=Sat, 06-Dec-2014 13:31:57 GMT; path=/; domain=.google.com', 'NID=66=KWaLbNQumuGuYf0HrWlGm54u9l-DKJwhFCMQXfhQPZM-qniRhmF6QRGXUKXb_8CIUuCOHnyoC5oAX5jWNrsfk-LLJLW530UiMp6hemTtDMh_e6GSiEB4GR3yOP_E0TCN;
expires=Fri, 07-Jun-2013 13:31:57 GMT; パス=/; ドメイン=.google.com; HttpOnly']
- - 期限切れ
- ['-1']
- - サーバー
- [GWS]
- - 繋がり
- [近い]
- - キャッシュ制御
- ['非公開、最大年齢 = 0']
- - 日にち
- [「06 年 2012 月 13 日木曜日 31:57:XNUMX GMT」]
- - P3P
- ['CP="これは P3P ポリシーではありません! http://www.google.com/support/accounts/bin/answer.py?hl=ja&answer=151657
詳しくは。"']
- - コンテントタイプ
- [テキスト/html; 文字セット=UTF-8]
- - X フレーム オプション
- [同じ起源]
ソックスプロキシ: null
テスト名: テストhttp
テスト実行時間: 0.08298492431640625
テスト開始: 1354800717.478403
...
DNS ベース テスト
DNS ベースのテストは、のサブクラスになります。 ooni.templates.dnst.DNSTest.
メソッドを提供します ooni.templates.dnst.DNSTest.performPTRLookup() および
ooni.templates.dnst.DNSTest.performALookup()
例えば(から取った nettests.examples.example_dnst):
ooni.templates.dnst から DNSTest をインポート
クラス ExampleDNSTest(DNSTest):
def test_a_lookup(self):
def gotResult(結果):
# 結果は、すべての A レコードのルックアップ結果を含む配列です
印刷結果
d = self.performALookup('torproject.org', ('8.8.8.8', 53))
d.addCallback(gotResult)
dを返す
レポート 形式でアーカイブしたプロジェクトを保存します.
############################################
# Base DNS Test テスト用の OONI プローブ レポート
# 6 年 17 月 42 日(木)51:2012:XNUMX
############################################
---
オプション:
コレクター: ヌル
ヘルプ: 0
ログファイル: null
pcapfile: ヌル
レポートファイル: null
履歴書: 0
サブ引数: []
テスト: nettests/examples/example_dnst.py
プローブ_asn: ヌル
プローブ_cc: ヌル
プローブ_ip: 127.0.0.1
software_name: オニプローブ
ソフトウェアバージョン: 0.0.7.1-alpha
開始時刻: 1354786971.0
test_name: ベース DNS テスト
テストバージョン: 0.1
...
---
入力:null
レポート:
クエリ:
- アドレス: [82.195.75.101、86.59.30.40、38.229.72.14、38.229.72.16]
答え:
- [ 、
ttl=782>]
- [ 、
ttl=782>]
- [ 、
ttl=782>]
- [ 、
ttl=782>]
クエリ: '[Query(''torproject.org'', 1, 1)]'
クエリの種類: A
リゾルバ: [8.8.8.8, 53]
テスト名: テストa_lookup
テスト実行時間: 0.028924942016601562
テスト開始: 1354801371.980114
...
より複雑な例については、次を参照してください。 nettests.blocking.dnsconsistency
用語集
ここでは、OONI 特有の専門用語をいくつかまとめます。
ホイール試乗 シミュレーション例: テスト対象のネットワークで論理的に実行される一連の測定
一緒にグループ化
レポート: テスト実行に必要なすべての情報を含むテスト実行の出力です。
テストの出力を評価する研究者。
ヤムルーニ: レポートに使用する形式で、YAML に基づいています。
入力: 測定を実行するために TestCase への入力として与えられるもの。
onworks.net サービスを使用して oniprobe オンラインを使用する