Aceasta este comanda ooniprobe care poate fi rulată în furnizorul de găzduire gratuit OnWorks folosind una dintre multiplele noastre stații de lucru online gratuite, cum ar fi Ubuntu Online, Fedora Online, emulator online Windows sau emulator online MAC OS
PROGRAM:
NUME
ooniprobe - un instrument de măsurare a cenzurii rețelei.
REZUMAT
ooniprobe [-hnsp] [--versiune] [--scuipa] [-o dosar raport] [-i puntea de testare] [-c colector] [-b
lăudăros] [-l fișier jurnal] [-O pcapfile] [-f configfile] [-d datadir] nume_test
DESCRIERE
ooniprobe este un instrument pentru efectuarea măsurătorilor de cenzură pe internet. Scopul nostru este să atingem
un format comun de date și un set de metodologii pentru efectuarea cercetărilor legate de cenzură.
OPŢIUNI
-h or --Ajutor
Afișați acest ajutor și ieșiți.
-n or --nu-colector
Dezactivați raportarea rezultatelor testului net către un colector de oonib.
-s or --listă
Enumerați toate testele net disponibile.
-p or --printdeck
Imprimați la ieșirea standard opțiunile specificate ale liniei de comandă ca test ooniprobe
punte.
-o or --reportfile
Specificați calea către fișierul de raport de scris.
-i or --testdeck
Specificați ca intrare un pachet de testare: un fișier yaml care conține testele de rulat și acestea
argumente.
-c or --colector
Specificați adresa colectorului rezultatelor testelor nete. Este recomandabil să faceți întotdeauna
specificați și bouncer și lăsați-l să returneze un colector pentru testul sau pachetul de testare care sunteți
alergare.
-b or --bouncer
Adresa bouncerului care va informa sonda ce colector să folosească și
adresele ajutoarelor de testare. implicit: httpo://nkvphnp3p6agi5qq.onion
-l or --fișier jurnal
Calea către fișierul jurnal de scris
-O or --pcapfile
Prefix la numele fișierului pcap.
-f or --configfile
Specificați o cale către fișierul de configurare ooniprobe.
-d or --datadir
Specificați o cale către directorul de date ooniprobe
--scuipa Imprimați un jurnal nebun de detaliat cu tot ce se întâmplă. Util la depanare
îngheață sau blochează codul complex.
--versiune
Afișați versiunea ooniprobe și ieșiți.
OONIPROBE
Este instrumentul pe care voluntarii și cercetătorii sunt interesați să contribuie cu date la proiect
ar trebui să ruleze.
ooniprobe permite utilizatorului să selecteze ce test ar trebui să fie rulat și ce backend ar trebui să fie
utilizate pentru stocarea raportului de testare și/sau pentru asistarea acestora în derularea testului.
Testele ooniprobe sunt împărțite în două categorii: Trafic Manipulare si Conţinut
Blocarea.
Trafic Manipulare testele urmăresc să detecteze prezența unui fel de falsificare a
trafic de internet între sondă și un backend de ajutor de testare la distanță. Ca atare ei de obicei
necesită selectarea unei componente backend oonib pentru rularea testului.
Conţinut Blocarea au ca scop enumerarea tipului de conținut care este blocat din
sonde din punctul de vedere al rețelei. Ca atare, de obicei necesită să fi specificat o listă de intrare
pentru efectuarea testului.
Amenințare Modele Usi
Adversarul nostru este capabil să supravegheze și să manipuleze rețelele la nivel național
trafic de rețea.
Obiectivele adversarului nostru sunt:
· Restricționați accesul la anumite conținuturi, fără a degrada calitatea generală a conținutului
reţea
· Monitorizați rețeaua astfel încât să poată identifica utilizarea greșită a acesteia în timp real
Mai precis pentru desfășurarea testelor de detectare a filtrarii rețelei:
1. Detectează actorii care efectuează teste de detectare a cenzurii
2. Păcăliți oamenii care execută astfel de teste făcându-le să creadă că rețeaua este nerestricționată
notițe că în timp ce 2) => 1) nu este adevărat că 1) => 2) ca identificarea unor astfel de actori
nu trebuie neapărat să se întâmple în timp real. În timp ce intenția noastră este de a minimiza
riscul ca utilizatorii care rulează sonda OONI să fie identificați, acest lucru vine cu un compromis în ceea ce privește acuratețea.
Prin urmare, în anumite teste, este necesar să se schimbe amprenta digitală în favoarea
testează acuratețea.
Acesta este motivul pentru care împărțim testele în funcție de riscul pe care utilizatorul îl execută, permițând
utilizatorul să aleagă liber la ce model de amenințare dorește să adere.
Instalare
Citeste acest înainte funcţionare ooniprobe!
Rularea ooniprobe este o activitate potențial riscantă. Acest lucru depinde foarte mult de
jurisdicția în care vă aflați și ce test rulați. Este tehnic
posibil ca o persoană care vă observă conexiunea la internet să fie conștientă de faptul că dvs
rulează ooniprobe. Aceasta înseamnă că dacă rularea testelor de măsurare a rețelei este ceva
considerat a fi ilegal în țara ta, atunci ai putea fi reperat.
În plus, ooniprobe nu ia măsuri de precauție pentru a proteja mașina țintă de instalare
analiză criminalistică. Dacă faptul că ați instalat sau utilizat sonda ooni este o răspundere
pentru dumneavoastră, vă rugăm să fiți conștienți de acest risc.
Debian bazat sisteme
sudo sh -c 'ecou „deb http://deb.ooni.nu/ooni șuierător principal" >> / Etc / apt / sources.list'
GPG --keyserver pgp.mit.edu --tasta-recv 0x49B8CDF4
GPG --export 89AB86D4788F3785FE9EDA31F9E2D9B049B8CDF4 | sudo apt-key adăuga -
sudo apt-get actualizare && sudo apt-get instala ooniprobe
Linux
Credem că ooniprobe rulează destul de bine și pe Debian GNU/Linux wheezy
versiuni de Ubuntu, cum ar fi natty și versiuni ulterioare. Rularea ooniprobe fără instalare
este suportat cu următoarele comenzi:
merge clona https://git.torproject.org/ooni-probe.git
cd ooni-sondă
./setup-dependencies.sh
piton setup.py instala
reglaj up dezvoltare mediu inconjurator
Pe sistemele bazate pe Debian, acest lucru se poate face cu:
Vsudo apt-get instala libgeoip-dev python-virtualenv virtualenvwrapper
mkvirtualenv ooniprobe
piton setup.py instala
țâfnă instala -r requirements-dev.txt
Altele platforme (cu Vagabond)
Instalare hoinar si Instalare VirtualBox
On OSX:
Daca nu il ai instalat homebrew
pune la cale instala merge
On debian/ubuntu:
sudo apt-get instala merge
1. Deschideți un terminal și rulați:
merge clona https://git.torproject.org/ooni-probe.git
cd ooni-probe/
vagabond up
2. Conectați-vă la casetă cu:
vagabond ssh
ooniprobe va fi instalat în /ooni.
3. Puteți rula teste cu:
ooniprobe blocare/http_requests -f /ooni/inputs/input-pack/alexa-top-1k.txt
Utilizarea ooniprobe
Net test este un set de măsurători pentru a evalua ce fel de cenzură pe internet are loc.
punţile sunt colecții de plase ooniprobe cu unele intrări asociate.
Colector este un serviciu folosit pentru a raporta rezultatele măsurătorilor.
Testare ajutor este un serviciu folosit de o sondă pentru efectuarea cu succes a măsurătorilor.
lăudăros este un serviciu folosit pentru a descoperi adresele ajutoarelor de testare și a colectorilor.
Configurarea ooniprobe
Puteți edita configurația pentru ooniprobe prin editarea fișierului de configurare găsit
interior de ~/.ooni/ooniprobe.conf.
În mod implicit, ooniprobe nu va include informații personale de identificare în rezultatul testului,
nici să creați un fișier pcap. Acest comportament poate fi personalizat.
Alergare punți
Veți găsi toate punțile instalate în interior /usr/share/ooni/decks.
Puteți rula apoi un pachet utilizând opțiunea din linia de comandă -i:
Ca rădăcină:
ooniprobe -i /usr/share/ooni/decks/mlab.deck
Sau ca utilizator:
ooniprobe -i /usr/share/ooni/decks/mlab_no_root.deck
Sau:
Ca rădăcină:
ooniprobe -i /usr/share/ooni/decks/complete.deck
Sau ca utilizator:
ooniprobe -i /usr/share/ooni/decks/complete_no_root.deck
Testele de mai sus vor necesita aproximativ 20-30 de minute pentru a fi finalizate, în funcție de rețeaua dvs
viteză.
Dacă preferați să rulați câteva teste mai rapide, ar trebui să rulați: Ca root:
ooniprobe -i /usr/share/ooni/decks/fast.deck
Sau ca utilizator:
ooniprobe -i /usr/share/ooni/decks/fast_no_root.deck
Alergare net teste
Puteți enumera toate testele de rețea stabilă instalate cu:
ooniprobe -s
Puteți rula apoi un netest specificând numele acestuia, de exemplu:
ooniprobe manipulare/http_header_field_manipulation
De asemenea, este posibil să specificați intrări pentru teste ca URL-uri:
ooniprobe blocare/http_requests -f httpo://ihiderha53f36lsd.onion/input/
37e60e13536f6afe47a830bfb6b371b5cf65da66d7ad65137344679b24fdccd1
Puteți găsi rezultatul testului în directorul de lucru actual.
În mod implicit, rezultatul raportului va fi colectat de colectorul ooni implicit și de
adresele ajutoarelor de testare vor fi obținute de la bouncer implicit.
De asemenea, puteți specifica propriul dvs. colector sau bouncer cu opțiunile -c si -b.
(Opțional) Instalare obfsproxy
Instalați cea mai recentă versiune de obfsproxy pentru platforma dvs.
Download Obfsproxy
Puntea si obfsproxy poduri
ooniprobe trimite rapoarte către colectorii de rapoarte oonib prin Tor către un serviciu ascuns
punct final. Implicit, ooniprobe folosește sistemul instalat Tor, dar poate fi și configurat
pentru a lansa Tor (vezi opțiunea advanced.start_tor în ooniprobe.conf) și ooniprobe
acceptă poduri (și punți obfsproxy, dacă este instalat obfsproxy). Podurile tor
opțiunea din ooniprobe.conf setează calea către un fișier care ar trebui să conțină un set de „punte”
linii (de același format ca cel folosit în torrc și așa cum este returnat de
https://bridges.torproject.org). Dacă vor fi utilizate punți obfsproxy, calea către
binarul obfsproxy trebuie configurat. Vezi opțiunea advanced.obfsproxy_binary, în
ooniprobe.conf.
reglaj capacități on ta virtualenv piton binar
Dacă distribuția dvs. acceptă capabilități, puteți evita nevoia să rulați OONI ca root:
setcap cap_net_admin,cap_net_raw+eip /path/to/your/virtualenv's/python
Nucleu ooniprobe Teste
Sursa pentru Conţinut blocarea teste si Trafic Manipulare teste pot fi găsite în
directoare netests/blocking și, respectiv, netests/manipulare.
Conţinut Blocarea Teste
· DNSConsistency
· HTTP Cereri
· TCP Connect
Trafic Manipulare Teste
· HTTP Invalid Cerere Linia:
· DNS Spoof
· HTTP Antet Câmp Manipulare
· traceroute
· HTTP Gazdă
Altele teste
Avem și alte teste care în prezent nu sunt pe deplin acceptate sau încă sunt în curs
experimentat cu.
Le puteți găsi în:
· ooni/plase/experimental
Testele care nu fac o măsurătoare, dar sunt utile pentru scanare pot fi găsite în:
· ooni/plase/scanare
Testele care implică rularea de instrumente terțe pot fi găsite în:
· ooni/files/third_party
Rapoarte
Rapoartele colectate de ooniprobe sunt stocate pe https://ooni.torproject.org/reports/0.1/
CC /
Unde CC este codul de țară din două litere, așa cum este specificat de ISO 31666-2.
De exemplu, rapoartele pentru Italia (CC is it) din pot fi găsite în:
https://ooni.torproject.org/reports/0.1/IT/
Acest director trebuie să conțină diferitele rapoarte pentru testare folosind următoarele
convenţie:
testNume - dataInISO8601Format - probeASNumber .yamloo
Data este exprimată folosind ISO 8601 inclusiv secunde si cu nr : a delimita orele,
minute, zile.
Ca astfel:
ANUL - LUNA - ZI T ORE mINUTE SECUNDE Z
Uite aici pentru il up la data listă of ISO 8601 ţară Coduri
Este ora mereu exprimată în UTC.
Dacă este detectată o coliziune, atunci un int (începând cu 1) va fi adăugat la test.
De exemplu, dacă două rapoarte care sunt create la 2012 ianuarie XNUMX la prânz (ora UTC)
sharp de la MIT (AS3) va fi stocat aici:
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
Notă: este foarte puțin probabil ca rapoartele să fie create cu același marcaj temporal exact de la
exact acelasi ASN. Dacă se întâmplă acest lucru, ar putea fi indexul unui raport rău intenționat
atac de otrăvire în curs.
Raport format versiune changelog
Aici vor intra detalii despre modificările majore aduse formatului de raportare.
versiune 0.1
Versiunea inițială în format.
Scris PE MINE teste
API-ul de testare OONI este puternic influențat și se bazează parțial pe python test unitar
modul și răsucit.încercare.
Testare Cazuri
Atomul testării OONI se numește un caz de testare. O clasă de caz de testare poate conține mai multe
Metode de testare.
clasă ooni.nettet.NetTestCase
Aceasta este baza celui mai net univers OONI. Când scrii un netest, o vei face
subclasează acest obiect.
· intrări: pot fi setate la un set static de intrări. Toate testele (metodele de pornire
cu prefixul „test”) va fi rulat o dată pe intrare. La fiecare rulare _input_
atributul instanței TestCase va fi setat la valoarea curentului
iterație peste intrări. Orice obiect iterabil Python poate fi setat la intrări.
· inputFile: atributul ar trebui să fie setat la o matrice care conține linia de comandă
argument care ar trebui folosit ca fișier de intrare. O astfel de matrice arată astfel:
["commandlinearg", "c", "Mod implicit valoare" " Descriere"]
A doua valoare a unui astfel de tablou este prescurtarea pentru linia de comandă arg. The
utilizatorul va putea apoi să specifice intrările pentru test prin:
ooniprobe mytest.py --commandlinearg cale/către/fișier.txt
or
ooniprobe mytest.py -c cale/către/fișier.txt
· inputProcessor: ar trebui să fie setat la o funcție care ia ca argument un nume de fișier și
va returna intrarea pentru a fi transmisă instanței de testare.
· nume: ar trebui să fie setat la numele testului.
· autor: ar trebui să conțină numele și datele de contact ale autorului testului. The
formatul pentru un astfel de șir este următorul:
Nume <[e-mail protejat]>
· versiune: este șirul de versiune a testului.
· requiresRoot: setați la True dacă testul trebuie rulat ca root.
· usageOptions: o subclasă de twisted.python.usage.Options pentru procesarea
argumentele liniei de comandă
· localOptions: conține argumentele liniei de comandă analizate.
Quirks: Fiecare clasă care este prefixată cu test trebuie sa întoarce a
răsucit.internet.amânat.Amânat.
Dacă testul pe care intenționați să îl scrieți nu este listat pe Tor PE MINE trac pagină, ar trebui să-l adăugați
la listă și apoi adăugați o descriere despre aceasta după Testare Format
Testele sunt conduse de intrări. Pentru fiecare intrare este creată o nouă instanță de testare, intern
Se numește metoda _setUp care este definită în interiorul șabloanelor de testare, apoi metoda setUp
care este suprascris de către utilizatori.
Am inteles: nu apelați reactorul.pornirea reactorului.opriți în interiorul metodei dvs. de testare și toate vor
fii bun.
Intrări
Intrările sunt ceea ce este dat ca intrare la fiecare iterație a cazului de testare. Dacă ai 100
intrări, apoi fiecare caz de testare va fi rulat de 100 de ori.
Pentru a configura un set static de intrări ar trebui să definiți ooni.nettet.NetTestCase
atribut intrări. Testul va fi efectuat len (intrari) ori. Orice obiect iterabil este valid
intrări atribut.
Dacă doriți ca intrările să fie determinate dintr-un fișier de intrare specificat de utilizator, atunci dvs
trebuie să setați fișier de intrare atribut. Aceasta este o matrice care specifică ce opțiune de linie de comandă
poate fi folosit pentru a controla această valoare.
În mod implicit inputProcessor este setat să citească fișierul linie cu linie și să trimită linia nouă
personaje. Pentru a schimba acest comportament trebuie să setați inputProcessor atribuie unui
funcție care ia ca argument un descriptor de fișier și dă următorul articol. Implicit
inputProcessor arata asa:
def lineByLine(nume fișier):
fp = deschis(nume fișier)
pentru x în fp.xreadlines():
randament x.strip()
fp.close()
Configurarea si comandă linie care trece
Testele pot defini înființat metodă care va fi apelată de fiecare dată când obiectul Test Case este
instanțiat, aici puteți plasa o logică comună tuturor metodelor de testare care ar trebui
fie rulat înainte de orice testare.
Argumentele liniei de comandă pot fi analizate datorită twisted
twisted.python.usage.UsageOptions clasă.
Va trebui să subclasați acest lucru și să definiți atributul usageOptions pentru NetTestCase
la o subclasă a acesteia.
clasa UsageOptions(usage.Options):
optParameters = [['backend', 'b', 'http://127.0.0.1:57001',
„Adresa URL a backend-ului de testare de utilizat”]
]
clasa MyTestCase(nettet.NetTestCase):
usageOptions = UsageOptions
inputFile = ['file', 'f', None, "Some foo file"]
requiredOptions = ['backend']
def test_my_test(self):
self.localOptions['backend']
Apoi veți putea accesa argumentele liniei de comandă analizate prin atributul class
localOptions.
Opțiuni necesare attributes specifică o serie de parametri care sunt necesari pentru
test pentru a rula corect.
fișier de intrare este un atribut special de clasă care va fi folosit pentru procesarea fișierului de intrare.
Numele fișierului care este citit aici va fi dat lui
ooni.nettet.NetTestCase.inputProcessor metoda care va genera, implicit, o linie de
fișierul la un moment dat.
Testare Aplicate
Acestea vor fi definite în interiorul dvs ooni.nettet.NetTestCase subclasă. Acestea vor fi
metode de clasă.
Toate metodele de clasă care sunt prefixate cu test_ trebuie să fie rulate. Funcții relevante
la testul dvs. ar trebui să fie toate litere mici, separate prin liniuță de subliniere.
Pentru a adăuga date la raportul de testare, puteți scrie direct în obiectul raport, astfel:
def test_my_function():
rezultat = face_ceva()
self.report['ceva'] = rezultat
OONI se va ocupa apoi de scrierea datelor în raportul final de testare.
Pentru a accesa intrarea curentă, puteți utiliza intrare atribut, de exemplu:
def test_with_input():
face_ceva_cu_input(self.input)
Acest lucru va face ceva cu intrarea la fiecare iterație a listei de intrări.
Testare Șabloane
Șabloanele de testare vă ajută să scrieți teste. Ele conțin deja tot ce este comun
funcționalitate care este utilă pentru a rula un test de acest tip. De asemenea, se ocupă
scrierea datelor pe care le colectează care sunt relevante pentru rularea testului în fișierul de raport.
Șabloanele de testare implementate în prezent sunt ooni.şabloane.scapyt pentru teste bazate pe Scapy,
ooni.şabloane.tcpt pentru teste bazate pe TCP, ooni.şabloane.httpt pentru teste bazate pe HTTP,
si ooni.şabloane.dnst pentru teste bazate pe DNS.
scapey bazat teste
Testele bazate pe Scapy vor fi o subclasă a ooni.templates.scapyt.BaseScapyTest.
Oferă un înveliș în jurul funcției de trimitere și primire scapy care va scrie mesajul trimis
și a primit pachete la raport cu igienizarea src și IP destinație
adrese.
Are aceeași sintaxă ca și funcția Scapy sr, cu excepția faptului că va returna un deferred.
Pentru a implementa un simplu ping ICMP bazat pe această funcție, puteți face așa (Preluat din
netest.examples.example_scapyt.ExampleICMPPingScapy)
de la utilizarea importului twisted.python
de la scapy.all import IP, ICMP
din ooni.templates import scapyt
clasa UsageOptions(usage.Options):
optParameters = [['target', 't', '127.0.0.1', "Specify target to ping"]]
clasa ExempluICMPPingScapy(scapyt.BaseScapyTest):
name = "Exemplu de test ICMP Ping"
usageOptions = UsageOptions
def test_icmp_ping(self):
def terminat(pachete):
tipăriți pachetele
răspuns, fără răspuns = pachete
pentru snd, rcv in a răspuns:
rcv.show()
pachete = IP(dst=self.localOptions['target'])/ICMP()
d = self.sr(pachete)
d.addCallback(terminat)
întoarcere d
Argumentele luate de self.sr() sunt exact aceleași cu scapy send și receive
Funcția, singura diferență este că, în loc să utilizați o priză super scapy obișnuită
folosește ambalajul nostru condus răsucit în jurul lui.
Alternativ, acest test poate fi scris și folosind twisted.defer.inlineCallbacks()
decorator, care îl face să semene mai mult cu codul secvenţial obişnuit.
de la utilizarea importului twisted.python
de la twisted.internet import defer
de la scapy.all import IP, ICMP
din ooni.templates import scapyt
clasa UsageOptions(usage.Options):
optParameters = [['target', 't', '127.0.0.1', "Specify target to ping"]]
clasa ExempluICMPPingScapyYield(scapyt.BaseScapyTest):
name = "Exemplu de test ICMP Ping"
usageOptions = UsageOptions
@defer.inlineCallbacks
def test_icmp_ping(self):
pachete = IP(dst=self.localOptions['target'])/ICMP()
răspuns, fără răspuns = randament self.sr(pachete)
pentru snd, rcv in a răspuns:
rcv.show()
Raport Format
###############################################
# OONI Probe Report pentru Exemplu de test ICMP Ping Test
# Joi Nov 22 18:20:43 2012
###############################################
---
{probe_asn: nul, probe_cc: nul, probe_ip: 127.0.0.1, nume_software: ooniprobe, versiune_software: 0.0.7.1-alpha,
start_time: 1353601243.0, test_name: Exemplu de test ICMP Ping, test_version: 0.1}
...
---
intrare: nulă
raport:
answer_flags: [ipsrc]
answered_packets:
- - raw_packet: !!binar |
RQAAHAEdAAAuAbjKCAgICH8AAAEAAAAAAAAAAA==
rezumat: IP / ICMP 8.8.8.8 > 127.0.0.1 echo-reply 0
send_packets:
- - raw_packet: !!binar |
RQAAHAABAABAAevPfwAAAQgICAgIAPf/AAAAAA==
rezumat: IP / ICMP 127.0.0.1 > 8.8.8.8 echo-request 0
test_name: test_icmp_ping
test_started: 1353604843.553605
...
TCP bazat teste
Testele bazate pe TCP vor fi subclasate ooni.şabloane.tcpt.TCPTest.
Acest șablon de testare facilitează trimiterea sarcinilor utile TCP către fir și înregistrarea
raspuns.
din twisted.internet.error import ConnectionRefusedError
din jurnalul de import ooni.utils
din ooni.templates import tcpt
clasa ExempluTCPT(tcpt.TCPTest):
def test_hello_world(self):
def got_response(răspuns):
printează răspunsul % „Am primit aceste date %s”.
def connection_failed(eșec):
failure.trap(ConnectionRefusedError)
tipăriți „Conexiune refuzată”
self.address = "127.0.0.1"
self.port = 57002
sarcină utilă = „Bună lume!\n\r”
d = self.sendPayload(sarcină utilă)
d.addErrback(connection_failed)
d.addCallback(got_response)
întoarcere d
Eșecurile posibile pentru o conexiune TCP sunt:
twisted.internet.error.NoRouteError care corespunde cu errno.ENETUNREACH
twisted.internet.error.ConnectionRefusedError care corespunde errno.ECONNREFUSAT
twisted.internet.error.TCPTimedOutError care corespunde cu errno.ETIMEDOUT
Raport format
Raportul de bază al unui test TCP arată ca următorul (acesta este un raport generat de
rulează exemplul de mai sus pe un server echo TCP).
###############################################
# OONI Probe Report pentru testul TCP de bază
# Joi Nov 22 18:18:28 2012
###############################################
---
{probe_asn: nul, probe_cc: nul, probe_ip: 127.0.0.1, nume_software: ooniprobe, versiune_software: 0.0.7.1-alpha,
start_time: 1353601108.0, test_name: Test TCP de bază, test_version: '0.1'}
...
---
intrare: nulă
raport:
erori: []
primit: ["Bună ziua!\n\r"]
trimis: ["Bună ziua!\n\r"]
test_name: test_hello_world
test_started: 1353604708.705081
...
TODO termina cu mai multe detalii
HTTP bazat teste
Testele bazate pe HTTP vor fi o subclasă a ooni.şabloane.httpt.HTTPTest.
Oferă metode ooni.templates.httpt.HTTPTest.processResponseBody() si
ooni.templates.httpt.HTTPTest.processResponseHeaders() pentru interacțiunea cu răspunsul
corp și, respectiv, anteturi.
De exemplu, pentru a implementa un test HTTP care returnează hash-ul sha256 al corpului răspunsului
(bazat pe netsts.examples.example_httpt):
din jurnalul de import ooni.utils
din ooni.templates import httpt
din hashlib import sha256
clasa SHA256HTTPBodyTest(httpt.HTTPTest):
nume = "ChecksumHTTPBodyTest"
autor = "Aaron Gibson"
versiunea = 0.1
inputFile = ['fișier URL', 'f', Nici unul,
„Lista de URL-uri către care să efectuați solicitările GET”]
requiredOptions = ['fișier URL']
def test_http(self):
dacă auto.input:
url = self.input
return self.doRequest(url)
altceva:
ridică excepție(„Nici o intrare specificată”)
def processResponseBody(self, body):
body_sha256sum = sha256(corp).hexdigest()
self.report['checksum'] = body_sha256sum
Raport format
###############################################
# OONI Probe Report pentru testul ChecksumHTTPBodyTest
# Joi Dec 6 17:31:57 2012
###############################################
---
opţiuni:
colector: nul
ajutor: 0
fișier jurnal: nul
pcapfile: nul
dosar raport: nul
CV: 0
subargs: [-f, gazde]
test: nettests/examples/example_http_checksum.py
probe_asn: null
probe_cc: nul
probe_ip: 127.0.0.1
nume_software: ooniprobe
versiunea_software: 0.0.7.1-alpha
start_time: 1354786317.0
test_name: ChecksumHTTPBodyTest
versiunea_test: 0.1
...
---
intrare: http://www.google.com
raport:
agent: agent
checksum: d630fa2efd547d3656e349e96ff7af5496889dad959e8e29212af1ff843e7aa1
cereri:
- cerere:
corp: nul
anteturi:
- - Agent utilizator
- - [Opera/9.00 (Windows NT 5.1; U; en), „Opera 9.0, Windows XP”]
metoda: GET
Adresa URL: http://www.google.com
raspuns:
corp: ' '
cod: 200
anteturi:
- - X-XSS-Protecție
- [1; mod=blocare]
- - Set-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;
expiră=Vi, 07-Iun-2013 13:31:57 GMT; cale=/; domain=.google.com; HttpOnly']
- - Expiră
- ['-1']
- - Server
- [gws]
- - Conexiune
- [închide]
- - Cache-Control
- ['privat, max-age=0']
- - Data
- [„Joi, 06 Dec 2012 13:31:57 GMT”]
- - P3P
- ['CP="Aceasta nu este o politică P3P! Vezi http://www.google.com/support/accounts/bin/answer.py?hl=ro&answer=151657
pentru mai multe informatii."']
- - Tipul de conținut
- [text/html; set de caractere=UTF-8]
- - X-Frame-Options
- [SAMEORIGIN]
socksproxy: nul
test_name: test_http
test_runtime: 0.08298492431640625
test_started: 1354800717.478403
...
DNS bazat teste
Testele bazate pe DNS vor fi o subclasă de ooni.şabloane.dnst.DNSTest.
Oferă metode ooni.templates.dnst.DNSTest.performPTRLookup() si
ooni.templates.dnst.DNSTest.performALookup()
De exemplu (luat din netsts.exemple.example_dnst):
din ooni.templates.dnst import DNSTest
Exemplu de clasăDNSTest(DNSTest):
def test_a_lookup(self):
def gotResult(rezultat):
# Rezultatul este o matrice care conține toate rezultatele căutării înregistrării A
rezultatul tipăririi
d = self.performALookup('torproject.org', ('8.8.8.8', 53))
d.addCallback(gotResult)
întoarcere d
Raport format
###############################################
# OONI Probe Report pentru testul de bază DNS Test
# Joi Dec 6 17:42:51 2012
###############################################
---
opţiuni:
colector: nul
ajutor: 0
fișier jurnal: nul
pcapfile: nul
dosar raport: nul
CV: 0
subargumente: []
test: netsts/examples/example_dnst.py
probe_asn: null
probe_cc: nul
probe_ip: 127.0.0.1
nume_software: ooniprobe
versiunea_software: 0.0.7.1-alpha
start_time: 1354786971.0
test_name: Test DNS de bază
versiunea_test: 0.1
...
---
intrare: nulă
raport:
întrebări:
- adrese: [82.195.75.101, 86.59.30.40, 38.229.72.14, 38.229.72.16]
răspunsuri:
- [ ,
ttl=782>]
- [ ,
ttl=782>]
- [ ,
ttl=782>]
- [ ,
ttl=782>]
interogare: „[Query(''torproject.org'', 1, 1)]'
tip_interogare: A
rezolutor: [8.8.8.8, 53]
test_name: test_a_lookup
test_runtime: 0.028924942016601562
test_started: 1354801371.980114
...
Pentru un exemplu mai complex, vezi: filete.blocare.dnsconsistency
GLOSAR
Aici vom rezuma unele dintre jargonul care este unic pentru OONI.
Testare Caz: un set de măsurători efectuate pe o rețea de testat care sunt logic
grupate împreună
Raport: este rezultatul unui test care conține toate informațiile necesare pentru a
cercetător pentru a evalua care este rezultatul unui test.
Yamlooni: formatul pe care îl folosim pentru rapoarte, care se bazează pe YAML.
Intrare: Ce este dat ca intrare unui TestCase pentru a efectua o măsurătoare.
Utilizați ooniprobe online folosind serviciile onworks.net