Это команда ooniprobe, которую можно запустить в бесплатном хостинг-провайдере OnWorks, используя одну из наших многочисленных бесплатных онлайн-рабочих станций, таких как Ubuntu Online, Fedora Online, онлайн-эмулятор Windows или онлайн-эмулятор MAC OS.
ПРОГРАММА:
ИМЯ
ooniprobe - инструмент для измерения сетевой цензуры.
СИНТАКСИС
ooniprobe [-hnsp] [--версия] [- отлив] [-o Файл отчета] [-i испытательная площадка] [-c коллектор] [-b
вышибала] [-l журнальный файл] [-O pcapfile] [-f файл конфигурации] [-d каталогу_данных] имя_теста
ОПИСАНИЕ
ooniprobe - это инструмент для измерения цензуры в Интернете. Наша цель - достичь
единый формат данных и набор методологий для проведения исследований, связанных с цензурой.
ДОПОЛНИТЕЛЬНЫЕ ОПЦИИ
-h or --Помогите
Отобразите эту справку и выйдите.
-n or --нет коллектор
Отключить передачу результатов сетевого теста сборщику оонибов.
-s or --список
Перечислите все доступные сетевые тесты.
-p or --printdeck
Распечатать на стандартный вывод указанные параметры командной строки как тест ooniprobe.
палубе.
-o or --Файл отчета
Укажите путь к файлу отчета для записи.
-i or --testdeck
Укажите в качестве входных данных тестовую колоду: файл yaml, содержащий тесты для запуска и их
аргументы.
-c or --коллекционер
Укажите адрес сборщика результатов сетевого тестирования. Желательно всегда
укажите и вышибалу и пусть он вернет сборщик для тестовой или тестовой колоды, которую вы
работает.
-b or - вышибала
Адрес вышибалы, который проинформирует зонд, какой коллектор использовать, и
адреса тестировщиков. по умолчанию: httpo: //nkvphnp3p6agi5qq.onion
-l or --лог-файл
Путь к файлу журнала для записи
-O or --pcapfile
Префикс к имени файла pcap.
-f or --configfile
Укажите путь к файлу конфигурации ooniprobe.
-d or --датадир
Укажите путь к каталогу данных ooniprobe
- отлив Распечатайте безумно подробный журнал всего, что происходит. Полезно при отладке
зависает или блокируется в сложном коде.
--версия
Отобразите версию ooniprobe и выйдите.
ООНИПРОБ
Инструмент, с помощью которого волонтеры и исследователи заинтересованы в предоставлении данных для проекта.
должен быть запущен.
ooniprobe позволяет пользователю выбрать, какой тест должен быть запущен и какой должен быть бэкэнд.
используется для хранения отчета об испытаниях и / или помощи им в проведении испытания.
Тесты ooniprobe делятся на две категории: трафик Манипуляция и Контент
блокирование.
трафик Манипуляция тесты направлены на обнаружение присутствия какого-либо вмешательства в
Интернет-трафик между зондом и серверной частью удаленного помощника по тестированию. Как таковые они обычно
требуют выбора серверного компонента oonib для запуска теста.
Контент блокирование направлены на перечисление типа контента, доступ к которому заблокирован
исследует сетевую точку зрения. Поэтому обычно требуется указать список ввода.
для запуска теста.
Угроза Модель
Наш противник способен осуществлять наблюдение за сетью по всей стране и манипулировать
сетевой трафик.
Цели нашего противника:
· Ограничить доступ к определенному контенту, не снижая при этом общего качества
сеть
· Мониторинг сети таким образом, чтобы они могли выявлять неправомерное использование в режиме реального времени.
Более подробно о запуске тестов обнаружения сетевой фильтрации:
1. Обнаружение субъектов, выполняющих тесты на цензуру.
2. Обманывать людей, проводящих такие тесты, полагая, что сеть не имеет ограничений.
Внимание что хотя 2) => 1) неверно, что 1) => 2) как идентификация таких акторов
не обязательно должно происходить в реальном времени. Хотя мы намерены минимизировать
риск идентификации пользователей, использующих зонд OONI, требует компромисса с точностью.
Поэтому в некоторых тестах необходимо отдавать предпочтение отпечаткам пальцев в пользу
точность тестов.
Вот почему мы разделяем тесты в зависимости от риска, с которым может столкнуться пользователь, выполняющий их, что позволяет
пользователь может свободно выбирать, какую модель угроз он хочет использовать.
Установка:
Читать этой до Бег уонипроб!
Запуск ooniprobe - потенциально опасное занятие. Это во многом зависит от
юрисдикция, в которой вы находитесь и какой тест проводите. Технически это
возможно, чтобы человек, наблюдающий за вашим интернет-соединением, знал о том, что вы
работают ooniprobe. Это означает, что если запускать тесты сетевых измерений
считается незаконным в вашей стране, тогда вас могут заметить.
Кроме того, ooniprobe не принимает никаких мер предосторожности для защиты целевой машины от
криминалистический анализ. Если тот факт, что вы установили или использовали зонд ooni, является ответственностью
для вас, пожалуйста, помните об этом риске.
Debian основанный системы
Sudo sh -c эхо "деб http://deb.ooni.nu/ooni страдающий одышкой главный" >> / Etc / кв / sources.list'
GPG --сервер pgp.mit.edu --recv-ключ 0x49B8CDF4
GPG - экспорт 89AB86D4788F3785FE9EDA31F9E2D9B049B8CDF4 | Sudo подходящий ключ добавить -
Sudo APT-получить обновление && Sudo APT-получить устанавливать ooniprobe
Linux
Мы считаем, что ooniprobe достаточно хорошо работает на Debian GNU / Linux wheezy, а также на
версии Ubuntu, такие как natty и более поздние версии. Запуск ooniprobe без установки
это поддерживается следующими командами:
мерзавец клонировать https://git.torproject.org/ooni-probe.git
cd оони-зонд
./setup-dependents.sh
питон setup.py устанавливать
настройка up способствовали охрана окружающей среды
В системах на основе Debian это можно сделать с помощью:
Всудо APT-получить устанавливать libgeoip-dev python-virtualenv виртуальная обертка
mkvirtualenv ooniprobe
питон setup.py устанавливать
типун устанавливать -r требования-dev.txt
Прочее Платформы (с Бродяга)
Установите бродяга и Установите Virtualbox
On ОС X:
Если у вас его нет, установите доморощенного
заваривать устанавливать мерзавец
On дебиан / убунту:
Sudo APT-получить устанавливать мерзавец
1. Откройте Терминал и запустите:
мерзавец клонировать https://git.torproject.org/ooni-probe.git
cd ooni-probe /
бродяга up
2. Войдите в ящик с помощью:
бродяга SSH
ooniprobe будет установлен в / ooni.
3. Вы можете запускать тесты с помощью:
ooniprobe блокировка / http_requests -f /ooni/inputs/input-pack/alexa-top-1k.txt
. ooniprobe
Чистыми тест представляет собой набор показателей для оценки того, какой тип интернет-цензуры имеет место.
Палубы представляют собой наборы сообщений ooniprobe с некоторыми связанными входными данными.
Коллектор сервис, используемый для отчета о результатах измерений.
Тест помощник - это сервис, который зонд использует для успешного выполнения своих измерений.
вышибала это сервис, используемый для обнаружения адресов помощников по тестированию и сборщиков.
Настройка ooniprobe
Вы можете отредактировать конфигурацию ooniprobe, отредактировав найденный файл конфигурации.
Внутри ~ / .ooni / ooniprobe.conf.
По умолчанию ooniprobe не будет включать личную идентификационную информацию в результат теста,
ни создать файл pcap. Это поведение можно персонализировать.
Бег палуб
Вы найдете все установленные колоды внутри / usr / share / ooni / колоды.
Затем вы можете запустить колоду, используя параметр командной строки -i:
Как root:
ooniprobe -i /usr/share/ooni/колоды/mlab.deck
Или как пользователь:
ooniprobe -i /usr/share/ooni/колоды/mlab_no_root.deck
Или:
Как root:
ooniprobe -i /usr/share/ooni/колоды/complete.deck
Или как пользователь:
ooniprobe -i /usr/share/ooni/decks/complete_no_root.deck
Для выполнения вышеуказанных тестов потребуется около 20-30 минут в зависимости от вашей сети.
скорость.
Если вы предпочитаете запускать более быстрые тесты, вам следует запустить: От имени пользователя root:
ooniprobe -i /usr/share/ooni/колоды/fast.deck
Или как пользователь:
ooniprobe -i /usr/share/ooni/колоды/fast_no_root.deck
Бег сеть тестов
Вы можете перечислить все установленные стабильные сетевые тесты с помощью:
ooniprobe -s
Затем вы можете запустить самый чистый, указав его имя, например:
ooniprobe манипуляция / http_header_field_manipulation
Также можно указать входные данные для тестов в виде URL-адресов:
ooniprobe блокировка / http_requests -f httpo: //ihiderha53f36lsd.onion/input/
37e60e13536f6afe47a830bfb6b371b5cf65da66d7ad65137344679b24fdccd1
Вы можете найти результат теста в вашем текущем рабочем каталоге.
По умолчанию результат отчета будет собираться сборщиком ooni по умолчанию и
Адреса помощников по тестированию будут получены от вышибалы по умолчанию.
Вы также можете указать своего собственного сборщика или вышибалу с опциями -c и -b.
(Опционально) Установите обфспрокси
Установите последнюю версию obfsproxy для вашей платформы.
Скачать Обфспрокси
Мосты и обфспрокси мосты
ooniprobe отправляет отчеты сборщикам отчетов oonib через Tor в скрытую службу
конечная точка. По умолчанию ooniprobe использует установленный системный Tor, но также может быть настроен
для запуска Tor (см. опцию advanced.start_tor в ooniprobe.conf) и ooniprobe
поддерживает мосты (и мосты obfsproxy, если установлен obfsproxy). Тор. Мосты
опция в ooniprobe.conf устанавливает путь к файлу, который должен содержать набор "мостов"
строки (того же формата, что и в torrc, и возвращенные
https://bridges.torproject.org). Если предполагается использовать мосты obfsproxy, путь к
Необходимо настроить двоичный файл obfsproxy. См. Параметр advanced.obfsproxy_binary в
ooniprobe.conf.
настройка возможности on virtualenv питон двоичный
Если ваш дистрибутив поддерживает возможности, вам не нужно запускать OONI с правами root:
Setcap cap_net_admin, cap_net_raw + eip / путь / к / вашему / virtualenv's / python
Основные ooniprobe Tests
Источник для Контент блокирование тестов и трафик Манипуляция тестов можно найти в
каталоги nettests / blocking и nettests / манипуляции соответственно.
Контент блокирование Tests
· DNSConsistency
· HTTP Запросы
· TCP Объединяйтесь
трафик Манипуляция Tests
· HTTP Недействительный Запрос Линия:
· DNS мистификация
· HTTP заголовок Поиск Манипуляция
· Трассировка
· HTTP Хозяин
Прочее тестов
У нас также есть некоторые другие тесты, которые в настоящее время не полностью поддерживаются или все еще
экспериментировал.
Вы можете найти их в:
· ooni / nettests / экспериментальный
Тесты, которые не проводят измерения, но полезны для сканирования, можно найти в:
· ooni / netsts / сканирование
Тесты, в которых используются сторонние инструменты, можно найти в:
· ooni / nettests / third_party
Согласно отчетам
Отчеты, собранные ooniprobe, хранятся на https://ooni.torproject.org/reports/0.1/
CC /
где CC это двухбуквенный код страны, указанный в ISO 31666-2.
Например отчеты по Италии (CC is it) можно найти в:
https://ooni.torproject.org/reports/0.1/IT/
Этот каталог должен содержать различные отчеты о тестировании с использованием следующих
конвенции:
имя_теста - дата в формате ISO8601 - зондASNumber .ямлу
Дата выражается с помощью ISO 8601 включая секунды и без : разграничить часы,
минуты, дни.
Вот так:
ГОД - МЕСЯЦ - ДНЕЙ T ЧАСЫ ПРОТОКОЛ СЕКУНД Z
посмотреть здесь для up в даты список of ISO 8601 страна Коды
Время всегда выражено в UTC.
Если обнаруживается коллизия, к тесту добавляется int (начиная с 1).
Например, если два отчета созданы в полдень первого января 2012 г. (время по всемирному координированному времени)
Sharp из 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
Версия исходного формата.
Writing ОНИ тестов
API тестирования OONI находится под сильным влиянием и частично основан на питоне. модульный тест
модуль и скрученный.триал.
Тест Кейсы
Атом тестирования OONI называется Test Case. Класс тестового примера может содержать несколько
Методы испытаний.
класс ooni.nettest.NetTestCase
Это основа самой чистой вселенной OONI. Когда вы напишете самое интересное, вы будете
создать подкласс этого объекта.
· Входы: может быть установлен как статический набор входов. Все тесты (методы запуска
с префиксом "test") будет запускаться один раз для каждого входа. При каждом запуске _input_
атрибут экземпляра TestCase будет установлен на значение текущего
итерация по входам. Любой итерируемый объект python может быть установлен на входы.
· InputFile: атрибут должен быть установлен в массив, содержащий командную строку
аргумент, который следует использовать в качестве входного файла. Такой массив выглядит так:
["commandlinearg", "c", "дефолт значение" " описание"]
Второе значение такого массива - это сокращение для аргумента командной строки. В
затем пользователь сможет указать входные данные для теста с помощью:
ooniprobe mytest.py --commandlinearg путь / к / file.txt
or
ooniprobe mytest.py -c путь / к / file.txt
· InputProcessor: должен быть установлен на функцию, которая принимает в качестве аргумента имя файла и
он вернет ввод, который будет передан в тестовый экземпляр.
· Name: должно быть установлено на имя теста.
· Автор: должно содержать имя и контактные данные автора теста. В
формат такой строки следующий:
The Имя <email@example.com>
· Версия: строка версии теста.
· RequiresRoot: установите значение True, если тест необходимо запускать от имени пользователя root.
· UsageOptions: подкласс twisted.python.usage.Options для обработки
аргументы командной строки
· LocalOptions: содержит проанализированные аргументы командной строки.
Причуды: каждый класс с префиксом test обязательно вернуть
скрученный.интернет.defer.Deferred.
Если тест, который вы планируете написать, отсутствует в списке Tor ОНИ ПРОФ страница, вы должны добавить это
в список, а затем добавьте его описание после Тест шаблон
Тесты основаны на вводе данных. Для каждого входа создается новый тестовый экземпляр, внутри
Вызывается метод _setUp, определенный внутри тестовых шаблонов, затем метод setUp
который перезаписывается пользователями.
Попытки: никогда вызовите response.start из Reaction.stop внутри вашего метода тестирования, и все будет
будь хорошим.
входные
Входные данные - это то, что предоставляется в качестве входных данных для каждой итерации тестового примера. Если у вас есть 100
input, то каждый тестовый пример будет выполнен 100 раз.
Чтобы настроить статический набор входов, вы должны определить ooni.nettest.NetTestCase
атрибут затраты. Тест будет запущен len (входы) раз. Любой итерируемый объект является допустимым
затраты атрибутов.
Если вы хотите, чтобы входные данные определялись из указанного пользователем входного файла, тогда вы
должен установить входной файл атрибут. Это массив, который указывает, какой параметр командной строки
может использоваться для управления этим значением.
По умолчанию входПроцессор настроен на чтение файла построчно и удаление новой строки
символы. Чтобы изменить это поведение, вы должны установить входПроцессор приписывать
функция, которая принимает в качестве аргумента файловый дескриптор и возвращает следующий элемент. По умолчанию
входПроцессор выглядит так:
def lineByLine (имя файла):
fp = open (имя файла)
для x в fp.xreadlines ():
yield x.strip ()
fp.close ()
Установка и команду линия прохождение
Тесты могут определять настраивать метод, который будет вызываться каждый раз, когда объект Test Case
здесь вы можете разместить некоторую общую логику для всех ваших методов тестирования, которые должны
быть запущенным до того, как произойдет какое-либо тестирование.
Аргументы командной строки можно анализировать благодаря скрученному
скрученный.python.usage.UsageOptions класса.
Вам нужно будет создать подкласс этого и определить параметр usageOptions атрибута NetTestCase, чтобы указать
к подклассу этого.
класс UsageOptions (usage.Options):
optParameters = [['серверная часть', 'b', 'http://127.0.0.1: 57001 ',
'URL тестового бэкэнда для использования']
]
класс MyTestCase (nettest.NetTestCase):
useOptions = UsageOptions
inputFile = ['file', 'f', None, "Some foo file"]
requiredOptions = ['серверная часть']
def test_my_test (сам):
self.localOptions ['серверная часть']
Затем вы сможете получить доступ к проанализированным аргументам командной строки через атрибут класса
локальные параметры.
The обязательные параметры Атрибуты задают массив параметров, необходимых для
тест для правильной работы.
входной файл - это специальный атрибут класса, который будет использоваться для обработки inputFile.
Имя файла, которое здесь читается, будет передано
ooni.nettest.NetTestCase.inputProcessor метод, который по умолчанию выдаст одну строку
файл за раз.
Тест методы
Они должны быть определены внутри вашего ooni.nettest.NetTestCase подкласс. Это будет
методы класса.
Все методы класса с префиксом test_ должны быть запущены. Актуальные функции
в вашем тесте должны быть все строчные буквы, разделенные подчеркиванием.
Чтобы добавить данные в отчет о тестировании, вы можете написать прямо в объект отчета следующим образом:
def test_my_function ():
результат = do_something ()
self.report ['something'] = результат
Затем OONI выполнит запись данных в окончательный отчет об испытаниях.
Для доступа к текущему вводу вы можете использовать вход атрибут, например:
def test_with_input ():
do_something_with_input (самоввод)
Это будет на каждой итерации по списку входных данных что-то делать с входными данными.
Тест Шаблоны
Шаблоны тестов помогут вам в написании тестов. В них уже есть все самое обычное
функциональность, полезная для запуска теста этого типа. Они также заботятся о
запись собранных данных, относящихся к тесту, в файл отчета.
В настоящее время реализованы тестовые шаблоны: ooni.templates.scapyt для тестов на базе Scapy,
ooni.templates.tcpt для тестов на базе TCP, ooni.templates.httpt для тестов на основе HTTP,
и ooni.templates.dnst для тестов на базе DNS.
Скапи основанный тестов
Тесты на основе Scapy будут подклассом ooni.templates.scapyt.BaseScapyTest.
Он предоставляет оболочку для scapy функции отправки и получения, которая будет записывать отправленные
и получил пакеты в отчет с дезинфекцией src и IP назначения
адреса.
Он имеет тот же синтаксис, что и функция Scapy sr, за исключением того, что возвращает deferred.
Чтобы реализовать простой ICMP-пинг на основе этой функции, вы можете сделать это так (Взято из
nettest.examples.example_scapyt.ExampleICMPPingScapy)
из использования импорта twisted.python
из scapy.all импорт IP, ICMP
из ooni.templates import scapyt
класс UsageOptions (usage.Options):
optParameters = [['target', 't', '127.0.0.1', «Укажите цель для проверки связи»]]
класс ExampleICMPPingScapy (scapyt.BaseScapyTest):
name = "Пример проверки связи ICMP"
useOptions = UsageOptions
def test_icmp_ping (сам):
def завершено (пакеты):
распечатать пакеты
отвечено, неотвечено = пакеты
для snd, rcv in ответил:
rcv.show ()
пакеты = IP (dst = self.localOptions ['target']) / ICMP ()
d = self.sr (пакеты)
d.addCallback (завершено)
вернуться д
Аргументы, принимаемые self.sr (), точно такие же, как scapy send and receive.
с той лишь разницей, что вместо обычного scapy super socket он
использует нашу скрученную обертку с приводом вокруг него.
В качестве альтернативы этот тест также может быть написан с использованием twisted.defer.inlineCallbacks ()
декоратор, что делает его более похожим на обычный последовательный код.
из использования импорта twisted.python
от twisted.internet отложить импорт
из scapy.all импорт IP, ICMP
из ooni.templates import scapyt
класс UsageOptions (usage.Options):
optParameters = [['target', 't', '127.0.0.1', «Укажите цель для проверки связи»]]
класс ExampleICMPPingScapyYield (scapyt.BaseScapyTest):
name = "Пример проверки связи ICMP"
useOptions = UsageOptions
@ defer.inlineCallbacks
def test_icmp_ping (сам):
пакеты = IP (dst = self.localOptions ['target']) / ICMP ()
ответил, без ответа = yield self.sr (пакеты)
для snd, rcv in ответил:
rcv.show ()
Отчет Формат
###########################################
# Отчет о пробе OONI для примера теста ICMP Ping Test
# Чт, 22 ноя, 18:20:43 2012
###########################################
Напишите нам в чат или Email
{probe_asn: null, probe_cc: null, probe_ip: 127.0.0.1, software_name: ooniprobe, software_version: 0.0.7.1-альфа,
start_time: 1353601243.0, test_name: Пример теста ICMP Ping, test_version: 0.1}
...
Напишите нам в чат или Email
ввод: нуль
Доклад:
ответ_флаги: [ipsrc]
ответили_пакеты:
- - raw_packet: !! двоичный |
RQAAHAEdAAAuAbjKCAgICH8AAAEAAAAAAAAAAA ==
сводка: 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
test_started: 1353604843.553605
...
TCP основанный тестов
Тесты на основе TCP будут подклассом ooni.templates.tcpt.TCPTest.
Этот тестовый шаблон облегчает отправку полезных данных TCP по сети и запись
ответ.
из скрученного.интернет.ошибка импорта ConnectionRefusedError
из журнала импорта ooni.utils
из ooni.templates импортировать tcpt
класс ExampleTCPT (tcpt.TCPTest):
def test_hello_world (сам):
def got_response (ответ):
print "Получил эти данные% s"% response
def connection_failed (сбой):
failure.trap (ConnectionRefusedError)
print "В соединении отказано"
self.address = "127.0.0.1"
личный порт = 57002
payload = "Привет, мир! \ n \ r"
d = self.sendPayload (полезная нагрузка)
d.addErrback (connection_failed)
d.addCallback (got_response)
вернуться д
Возможные сбои TCP-соединения:
скрученный.интернет.ошибка.NoRouteError что соответствует errno.ENETUNREACH
скрученный.интернет.ошибка.ConnectionRefusedError что соответствует errno.ECONNREFUSED
скрученный.интернет.ошибка.TCPTimedOutError что соответствует errno.ETIMEDOUT
Отчет формат
Базовый отчет теста TCP выглядит следующим образом (это отчет, созданный
выполнение приведенного выше примера с эхо-сервером TCP).
###########################################
# OONI Probe Report для базового теста TCP Test
# Чт, 22 ноя, 18:18:28 2012
###########################################
Напишите нам в чат или Email
{probe_asn: null, probe_cc: null, probe_ip: 127.0.0.1, software_name: ooniprobe, software_version: 0.0.7.1-альфа,
время_пуска: 1353601108.0, имя_теста: Базовый тест TCP, версия_теста: '0.1'}
...
Напишите нам в чат или Email
ввод: нуль
Доклад:
ошибки: []
получил: ["Hello World! \ n \ r"]
отправлено: ["Hello World! \ n \ r"]
имя_теста: test_hello_world
test_started: 1353604708.705081
...
TODO закончите это более подробной информацией
HTTP основанный тестов
Тесты на основе HTTP будут подклассом ooni.templates.httpt.HTTPTest.
Он предоставляет методы ooni.templates.httpt.HTTPTest.processResponseBody () и
ooni.templates.httpt.HTTPTest.processResponseHeaders () для взаимодействия с ответом
тело и заголовки соответственно.
Например, чтобы реализовать HTTP-тест, который возвращает хэш sha256 тела ответа
(на основе nettests.examples.example_httpt):
из журнала импорта ooni.utils
из ooni.templates импортировать httpt
из hashlib import sha256
класс SHA256HTTPBodyTest (httpt.HTTPTest):
name = "ChecksumHTTPBodyTest"
author = "Аарон Гибсон"
версия = 0.1
inputFile = ['URL-адрес файла', 'f', Нет,
'Список URL-адресов для выполнения запросов GET']
requiredOptions = ['url file']
def test_http (сам):
если self.input:
URL = self.input
вернуть self.doRequest (url)
еще:
поднять исключение ("Не указан ввод")
def processResponseBody (себя, тело):
body_sha256sum = sha256 (тело) .hexdigest ()
self.report ['контрольная сумма'] = body_sha256sum
Отчет формат
###########################################
# Отчет зонда OONI для теста ChecksumHTTPBodyTest
# Чт 6 дек 17:31:57 2012
###########################################
Напишите нам в чат или Email
опции:
сборщик: нуль
помощь: 0
файл журнала: нуль
pcapfile: нуль
файл отчета: нуль
резюме: 0
подарги: [-f, хосты]
тест: nettests / examples / example_http_checksum.py
probe_asn: нуль
probe_cc: нуль
зонд_ip: 127.0.0.1
имя_программы: ooniprobe
software_version: 0.0.7.1-альфа
время_начала: 1354786317.0
имя_теста: ChecksumHTTPBodyTest
тестовая_версия: 0.1
...
Напишите нам в чат или Email
вход: 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']
- - Сервер
- [гс]
- - Связь
- [Закрыть]
- - Кэш-контроль
- ['private, max-age = 0']
- - Дата
- ['Thu, 06 Dec 2012 13:31:57 GMT']
- - P3P
- ['CP = "Это не политика P3P! См. http://www.google.com/support/accounts/bin/answer.py? hl = ru & answer = 151657
для получения дополнительной информации."']
- - Тип содержимого
- [текст / html; charset = UTF-8]
- - Опции X-Frame
- [САМЕОРИГИН]
socksproxy: нуль
имя_теста: test_http
test_runtime: 0.08298492431640625
test_started: 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 (сам):
def gotResult (результат):
# Результат - это массив, содержащий все результаты поиска A-записи
результат печати
d = self.performALookup ('torproject.org', ('8.8.8.8', 53))
d.addCallback (gotResult)
вернуться д
Отчет формат
###########################################
# Отчет зонда OONI для базового теста DNS
# Чт 6 дек 17:42:51 2012
###########################################
Напишите нам в чат или Email
опции:
сборщик: нуль
помощь: 0
файл журнала: нуль
pcapfile: нуль
файл отчета: нуль
резюме: 0
подаргументы: []
тест: nettests / examples / example_dnst.py
probe_asn: нуль
probe_cc: нуль
зонд_ip: 127.0.0.1
имя_программы: ooniprobe
software_version: 0.0.7.1-альфа
время_начала: 1354786971.0
test_name: Базовый тест DNS
тестовая_версия: 0.1
...
Напишите нам в чат или Email
ввод: нуль
Доклад:
запросы:
- адреса: [82.195.75.101, 86.59.30.40, 38.229.72.14, 38.229.72.16]
ответы:
- [ ,
ttl = 782>]
- [ ,
ttl = 782>]
- [ ,
ttl = 782>]
- [ ,
ttl = 782>]
запрос: '[Запрос (' 'torproject.org' ', 1, 1)]'
тип_запроса: А
резольвер: [8.8.8.8, 53]
имя_теста: test_a_lookup
test_runtime: 0.028924942016601562
test_started: 1354801371.980114
...
Более сложный пример см. nettests.blocking.dnsconsistency
СЛОВАРЬ
Здесь мы суммируем некоторые жаргоны, характерные для OONI.
Тест Кейсы: набор измерений, выполненных в тестируемой сети, которые логически
сгруппированы вместе
Отчет: результат тестового прогона, содержащий всю информацию, которая требуется для
исследователь, чтобы оценить результат теста.
Ямлуни: Формат, который мы используем для отчетов, основанный на YAML.
вход: Что вводится в TestCase для выполнения измерения.
Используйте ooniprobe онлайн с помощью сервисов onworks.net