Ini adalah perintah ooniprobe yang dapat dijalankan di penyedia hosting gratis OnWorks menggunakan salah satu dari beberapa workstation online gratis kami seperti Ubuntu Online, Fedora Online, emulator online Windows atau emulator online MAC OS
PROGRAM:
NAMA
ooniprobe - alat pengukuran sensor jaringan.
RINGKASAN
probe ooni [-hnsp] [--Versi: kapan] [--memuntahkan] [-o berkas laporan] [-i dek tes] [-c pengumpul] [-b
tukang pukul] [-l file log] [-O pcapfile] [-f file konfigurasi] [-d datadir] nama_tes
DESKRIPSI
ooniprobe adalah alat untuk melakukan pengukuran sensor internet. Tujuan kami adalah untuk mencapai
format data umum dan seperangkat metodologi untuk melakukan penelitian terkait penyensoran.
PILIHAN
-h or --membantu
Tampilkan bantuan ini dan keluar.
-n or --no-kolektor
Nonaktifkan pelaporan hasil tes bersih ke pengumpul oonib.
-s or --Daftar
Daftar semua tes bersih yang tersedia.
-p or --dek cetak
Cetak ke output standar opsi baris perintah yang ditentukan sebagai tes ooniprobe
dek.
-o or --file laporan
Tentukan jalur untuk melaporkan file yang akan ditulis.
-i or --dek tes
Tentukan sebagai input dek pengujian: file yaml yang berisi pengujian yang akan dijalankan dan
argumen.
-c or --pengumpul
Tentukan alamat pengumpul hasil uji bersih. Dianjurkan untuk selalu
tentukan dan bouncer dan biarkan ia mengembalikan kolektor untuk test atau test deck anda
berlari.
-b or --tukang pukul
Alamat penjaga yang akan menginformasikan probe kolektor mana yang akan digunakan dan
alamat pembantu tes. default: httpo://nkvphnp3p6agi5qq.onion
-l or --file log
Path ke file log untuk menulis
-O or --file pcap
Awalan ke nama file pcap.
-f or --file konfigurasi
Tentukan jalur ke file konfigurasi ooniprobe.
-d or --datadir
Tentukan jalur ke direktori data ooniprobe
--memuntahkan Cetak log verbose gila-gilaan dari semua yang terjadi. Berguna saat men-debug
membeku atau mengunci dalam kode yang kompleks.
--Versi: kapan
Tampilkan versi ooniprobe dan keluar.
OONIPROBE
Apakah alat yang sukarelawan dan penelitian tertarik untuk menyumbangkan data ke proyek
harus berjalan.
ooniprobe memungkinkan pengguna untuk memilih tes apa yang harus dijalankan dan backend apa yang seharusnya
digunakan untuk menyimpan laporan pengujian dan/atau membantu mereka dalam menjalankan pengujian.
tes ooniprobe dibagi menjadi dua kategori: Lalu lintas manipulasi dan Konten
Pemblokiran.
Lalu lintas manipulasi tes bertujuan untuk mendeteksi adanya semacam gangguan pada
lalu lintas internet antara probe dan backend test helper jarak jauh. Seperti itu mereka biasanya
memerlukan pemilihan komponen backend oonib untuk menjalankan pengujian.
Konten Pemblokiran ditujukan untuk menghitung jenis konten yang diblokir dari
sudut pandang jaringan probe. Karena itu mereka biasanya harus menentukan daftar masukan
untuk menjalankan tes.
Ancaman Model
Musuh kita mampu melakukan pengawasan dan manipulasi jaringan di seluruh negara
lalu lintas jaringan.
Tujuan musuh kita adalah:
· Membatasi akses ke konten tertentu, sementara tidak menurunkan kualitas keseluruhan
jaringan
· Pantau jaringan sedemikian rupa sehingga mereka dapat mengidentifikasi penyalahgunaannya secara real time
Lebih spesifik untuk menjalankan tes deteksi pemfilteran jaringan:
1. Mendeteksi aktor yang melakukan tes deteksi sensor
2. Menipu orang yang menjalankan tes semacam itu agar percaya bahwa jaringan tidak dibatasi
Note bahwa sementara 2) => 1) tidak benar bahwa 1) => 2) sebagai identifikasi pelaku tersebut
tidak harus terjadi secara real time. Sementara niat kami adalah untuk meminimalkan
risiko pengguna yang menjalankan probe OONI untuk diidentifikasi, ini disertai dengan pengorbanan dalam akurasi.
Oleh karena itu, dalam pengujian tertentu diperlukan trade-off sidik jari yang mendukung
akurasi tes.
Inilah mengapa kami membagi pengujian berdasarkan risiko yang dapat dihadapi pengguna yang menjalankannya, memungkinkan
pengguna untuk bebas memilih model ancaman apa yang ingin mereka patuhi.
Instalasi
Baca ini sebelum berjalan probe!
Menjalankan ooniprobe adalah aktivitas yang berpotensi berisiko. Hal ini sangat tergantung pada
yurisdiksi tempat Anda berada dan tes mana yang Anda jalankan. Secara teknis
mungkin bagi seseorang yang mengamati koneksi internet Anda untuk mengetahui fakta bahwa Anda
sedang menjalankan ooniprobe. Ini berarti jika menjalankan tes pengukuran jaringan adalah sesuatu
dianggap ilegal di negara Anda maka Anda bisa terlihat.
Selain itu, ooniprobe tidak mengambil tindakan pencegahan untuk melindungi mesin target pemasangan dari
analisis forensik. Jika fakta bahwa Anda telah menginstal atau menggunakan ooni probe adalah sebuah kewajiban
untuk Anda, harap waspadai risiko ini.
Debian berdasarkan sistem
sudo sh -c 'gema "deb http://deb.ooni.nu/ooni mengi utama" >> / Etc / apt / sources.list'
gpg --server kunci pgp.mit.edu --recv-kunci 0x49B8CDF4
gpg --ekspor 89AB86D4788F3785FE9EDA31F9E2D9B049B8CDF4 | sudo apt-key menambahkan -
sudo apt-get memperbarui && sudo apt-get install probe ooni
Linux
Kami percaya bahwa ooniprobe berjalan cukup baik di Debian GNU/Linux juga
versi Ubuntu seperti rilis rapi dan yang lebih baru. Menjalankan ooniprobe tanpa menginstal
itu didukung dengan perintah berikut:
git clone https://git.torproject.org/ooni-probe.git
cd penyelidikan ooni
./setup-dependencies.sh
ular sanca setup.py install
Pengaturan up pengembangan lingkungan Hidup
Pada sistem berbasis debian ini dapat dilakukan dengan:
vsudo apt-get install libgeoip-dev python-virtualenv virtualenvwrapper
mkvirtualenv probe ooni
ular sanca setup.py install
biji install -r persyaratan-dev.txt
Lainnya platform (dengan Gelandangan)
Install Gelandangan dan Install Virtualbox
On OS X:
Jika Anda tidak memilikinya instal homebrew
buatan install git
On debian/ubuntu:
sudo apt-get install git
1. Buka Terminal dan jalankan:
git clone https://git.torproject.org/ooni-probe.git
cd ooni-probe/
gelandangan up
2. Masuk ke kotak dengan:
gelandangan ssh
ooniprobe akan dipasang di /ooni.
3. Anda dapat menjalankan tes dengan:
probe ooni memblokir/http_request -f /ooni/inputs/input-pack/alexa-top-1k.txt
Menggunakan probe ooni
Bersih uji adalah serangkaian pengukuran untuk menilai sensor internet seperti apa yang terjadi.
Deck adalah kumpulan nettest ooniprobe dengan beberapa input terkait.
Pengumpul adalah layanan yang digunakan untuk melaporkan hasil pengukuran.
uji penolong adalah layanan yang digunakan oleh probe untuk berhasil melakukan pengukurannya.
Tukang pukul adalah layanan yang digunakan untuk menemukan alamat pembantu dan pengumpul tes.
Mengkonfigurasi probe ooni
Anda dapat mengedit konfigurasi ooniprobe dengan mengedit file konfigurasi yang ditemukan
di dalam ~/.ooni/ooniprobe.conf.
Secara default ooniprobe tidak akan menyertakan informasi pengenal pribadi dalam hasil tes,
atau membuat file pcap. Perilaku ini dapat dipersonalisasi.
Running deck
Anda akan menemukan semua dek yang terpasang di dalamnya /usr/share/ooni/deck.
Anda kemudian dapat menjalankan dek dengan menggunakan opsi baris perintah -i:
Sebagai root:
probe ooni -i /usr/share/ooni/decks/mlab.deck
Atau sebagai pengguna:
probe ooni -i /usr/share/ooni/decks/mlab_no_root.deck
Atau:
Sebagai root:
probe ooni -i /usr/share/ooni/decks/complete.deck
Atau sebagai pengguna:
probe ooni -i /usr/share/ooni/decks/complete_no_root.deck
Tes di atas akan membutuhkan sekitar 20-30 menit untuk diselesaikan tergantung pada jaringan Anda
kecepatan.
Jika Anda lebih suka menjalankan beberapa pengujian yang lebih cepat, Anda harus menjalankan: Sebagai root:
probe ooni -i /usr/share/ooni/decks/fast.deck
Atau sebagai pengguna:
probe ooni -i /usr/share/ooni/decks/fast_no_root.deck
Running bersih tes
Anda dapat membuat daftar semua pengujian net stabil yang terpasang dengan:
probe ooni -s
Anda kemudian dapat menjalankan nettest dengan menentukan namanya misalnya:
probe ooni manipulasi/http_header_field_manipulation
Dimungkinkan juga untuk menentukan input untuk pengujian sebagai URL:
probe ooni memblokir/http_request -f http://ihiderha53f36lsd.onion/input/
37e60e13536f6afe47a830bfb6b371b5cf65da66d7ad65137344679b24fdccd1
Anda dapat menemukan hasil tes di direktori kerja Anda saat ini.
Secara default hasil laporan akan dikumpulkan oleh default ooni collector dan the
alamat pembantu tes akan diperoleh dari penjaga default.
Anda juga dapat menentukan kolektor atau penjaga Anda sendiri dengan opsi -c dan -b.
(Opsional) Install obfsproxy
Instal obfsproxy versi terbaru untuk platform Anda.
Unduh Obfsproksi
Jembatan dan obfsproxy jembatan
ooniprobe mengirimkan laporan ke pengumpul laporan oonib melalui Tor ke layanan tersembunyi
titik akhir. Secara default, ooniprobe menggunakan Tor sistem yang diinstal, tetapi juga dapat dikonfigurasi
untuk meluncurkan Tor (lihat opsi advanced.start_tor di ooniprobe.conf), dan ooniprobe
mendukung jembatan (dan jembatan obfsproxy, jika obfsproxy diinstal). Tor.bridges
opsi di ooniprobe.conf menyetel jalur ke file yang harus berisi sekumpulan "jembatan"
baris (dengan format yang sama seperti yang digunakan dalam torrc, dan dikembalikan oleh
https://bridges.torproject.org). Jika jembatan obfsproxy akan digunakan, jalur ke
biner obfsproxy harus dikonfigurasi. Lihat opsi advanced.obfsproxy_binary, di
ooniprobe.conf.
Pengaturan kemampuan on Tujuan virtualenv ular sanca biner
Jika distribusi Anda mendukung kemampuan, Anda dapat menghindari keharusan menjalankan OONI sebagai root:
setcap cap_net_admin,cap_net_raw+eip /path/to/your/virtualenv's/python
Core probe ooni Tes
Sumber untuk Konten pemblokiran tes dan Lalu lintas manipulasi tes dapat ditemukan di
direktori nettests/blocking dan nettests/manipulation.
Konten Pemblokiran Tes
· Konsistensi DNS
· HTTP Permintaan
· TCP Terhubung
Lalu lintas manipulasi Tes
· HTTP Cacat Meminta Garis:
· DNS Menipu
· HTTP Header Bidang manipulasi
· Traceroute
· HTTP tuan rumah
Lainnya tes
Kami juga memiliki beberapa tes lain yang saat ini belum didukung sepenuhnya atau masih ada
bereksperimen dengan.
Anda dapat menemukannya di:
· ooni/nettests/eksperimental
Tes yang tidak melakukan pengukuran tetapi berguna untuk pemindaian dapat ditemukan di:
· ooni/nettests/pemindaian
Tes yang melibatkan menjalankan alat pihak ketiga dapat ditemukan di:
· ooni/nettests/third_party
Laporan
Laporan yang dikumpulkan oleh ooniprobe disimpan di https://ooni.torproject.org/reports/0.1/
CC /
Where CC adalah kode negara dua huruf seperti yang ditentukan oleh ISO 31666-2.
Misalnya laporan untuk Italia (CC is it) dari yang dapat ditemukan di:
https://ooni.torproject.org/reports/0.1/IT/
Direktori ini akan berisi berbagai laporan untuk pengujian menggunakan yang berikut ini
Konvensi:
nama tes - tanggalDalam Format ISO8601 - probeASNumber .yamloo
Tanggal dinyatakan dengan menggunakan ISO 8601 termasuk detik dan dengan no : untuk membatasi jam,
menit, hari.
Seperti:
TAHUN - BULAN - HARI T JAM MENIT DETIK Z
melihat di sini untuk itu up untuk tanggal daftar of ISO 8601 negara Kode
Waktunya adalah selalu dinyatakan dalam UTC.
Jika tabrakan terdeteksi maka int (dimulai dengan 1) akan ditambahkan ke pengujian.
Misalnya jika dua laporan dibuat pada tanggal 2012 Januari XNUMX pada siang hari (waktu UTC)
tajam dari MIT (AS3) akan disimpan di sini:
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
Catatan: sangat tidak mungkin laporan dibuat dengan stempel waktu yang persis sama dari
ASN yang sama persis. Jika ini terjadi, itu bisa menjadi indeks dari beberapa laporan berbahaya
serangan keracunan sedang berlangsung.
Laporan format versi changelog
Di sini akan masuk detail tentang perubahan besar pada format pelaporan.
versi 0.1
Versi format awal.
Writing OONI tes
API pengujian OONI sangat dipengaruhi dan sebagian didasarkan pada python paling unit
modul dan memutar.percobaan.
uji kasus
Atom Pengujian OONI disebut Test Case. Kelas kasus uji dapat berisi beberapa
Metode tes.
kelas ooni.nettest.NetTestCase
Ini adalah dasar dari alam semesta nettest OONI. Saat Anda menulis nettest, Anda akan melakukannya
subkelas objek ini.
· input: dapat diatur ke set input statis. Semua tes (metode dimulai
dengan awalan "test") akan dijalankan sekali per input. Di setiap menjalankan _input_
atribut instance TestCase akan disetel ke nilai saat ini
iterasi atas input. Objek iterable python apa pun dapat diatur ke input.
· inputFile: atribut harus diatur ke array yang berisi baris perintah
argumen yang harus digunakan sebagai file input. Array tersebut terlihat seperti ini:
["garis komando", "C", "bawaan nilai" "Para keterangan"]
Nilai kedua dari array tersebut adalah singkatan dari baris perintah arg. Itu
pengguna kemudian akan dapat menentukan input untuk pengujian melalui:
probe ooni tes saya.py --commandlinearg path/ke/file.txt
or
probe ooni tes saya.py -c path/ke/file.txt
· inputProcessor: harus diatur ke fungsi yang mengambil sebagai argumen nama file dan
itu akan mengembalikan input untuk diteruskan ke instance pengujian.
· nama: harus ditetapkan ke nama tes.
· penulis: harus berisi nama dan detail kontak untuk penulis tes. Itu
format untuk string tersebut adalah sebagai berikut:
Nama <[email dilindungi]>
· versi: adalah string versi tes.
· MembutuhkanRoot: disetel ke True jika pengujian harus dijalankan sebagai root.
· useOptions: subkelas dari twisted.python.usage.Options untuk diproses
argumen baris perintah
· localOptions: berisi argumen baris perintah yang diuraikan.
Keunikan: Setiap kelas yang diawali dengan tes harus kembalikan
twisted.internet.defer.Ditangguhkan.
Jika tes yang Anda rencanakan untuk ditulis tidak terdaftar di Tor OONI trac halaman, Anda harus menambahkannya
ke daftar dan kemudian menambahkan deskripsi tentang hal itu mengikuti uji Contoh
Tes didorong oleh input. Untuk setiap input, instance pengujian baru dibuat, secara internal
Metode _setUp dipanggil yang didefinisikan di dalam template pengujian, kemudian metode setUp
yang dapat ditimpa oleh pengguna.
Gotcha: tak pernah panggil reactor.start dari reactor.stop di dalam metode pengujian Anda dan semuanya akan
menjadi baik.
Masukan
Input adalah apa yang diberikan sebagai input untuk setiap iterasi dari Test Case. Jika Anda memiliki 100
masukan, maka setiap test case akan dijalankan 100 kali.
Untuk mengonfigurasi serangkaian input statis, Anda harus menentukan ooni.nettest.NetTestCase
atribut input. Tes akan dijalankan len(input) waktu. Setiap objek yang dapat diubah adalah valid
input atribut.
Jika Anda ingin input ditentukan dari file input yang ditentukan pengguna, maka Anda
harus mengatur masukanFile atribut. Ini adalah array yang menentukan opsi baris perintah apa
dapat digunakan untuk mengontrol nilai ini.
Secara default masukanProsesor diatur untuk membaca file baris demi baris dan menghapus baris baru
karakter. Untuk mengubah perilaku ini, Anda harus mengatur masukanProsesor atribut ke a
fungsi yang mengambil sebagai argumen deskriptor file dan menghasilkan item berikutnya. Default
masukanProsesor terlihat seperti ini:
def lineByLine(nama file):
fp = buka (nama file)
untuk x di fp.xreadlines():
hasil x.strip()
fp.tutup()
Pengaturan dan Command line lewat
Tes dapat menentukan mempersiapkan metode yang akan dipanggil setiap kali objek Test Case
dipakai, di sini Anda dapat menempatkan beberapa logika umum untuk semua Metode Pengujian Anda yang seharusnya
dijalankan sebelum pengujian apa pun terjadi.
Argumen baris perintah dapat diurai berkat twisted
twisted.python.penggunaan.UsageOptions kelas.
Anda harus mensubklasifikasikan ini dan menentukan atribut penggunaan Opsi NetTestCase untuk menunjuk
ke subkelas ini.
kelas UsageOptions(usage.Options):
optParameters = [['backend', 'b', 'http://127.0.0.1:57001',
'URL backend pengujian yang akan digunakan']
]
kelas MyTestCase(nettest.NetTestCase):
useOptions = UsageOptions
inputFile = ['file', 'f', Tidak ada, "Beberapa file foo"]
diperlukanOptions = ['backend']
def test_my_test(diri):
self.localOptions['backend']
Anda kemudian akan dapat mengakses argumen baris perintah yang diuraikan melalui atribut class
opsi lokal.
opsi yang diperlukan atribut menentukan array parameter yang diperlukan untuk
tes untuk berjalan dengan benar.
masukanFile adalah atribut kelas khusus yang akan digunakan untuk memproses inputFile.
Nama file yang dibaca di sini akan diberikan ke
ooni.nettest.NetTestCase.inputProcessor metode yang akan menghasilkan, secara default, satu baris
file pada suatu waktu.
uji metode
Ini akan didefinisikan di dalam Anda ooni.nettest.NetTestCase subkelas. Ini akan menjadi
metode kelas.
Semua metode kelas yang diawali dengan test_ harus dijalankan. Fungsi yang relevan
untuk pengujian Anda harus semua huruf kecil dipisahkan oleh garis bawah.
Untuk menambahkan data ke laporan pengujian, Anda dapat menulis langsung ke objek laporan seperti ini:
def tes_fungsi_saya():
hasil = lakukan_sesuatu()
self.report['sesuatu'] = hasil
OONI kemudian akan menangani penulisan data hingga laporan ujian akhir.
Untuk mengakses input saat ini, Anda dapat menggunakan memasukkan atribut, misalnya:
def tes_dengan_input():
lakukan_sesuatu_dengan_input(self.input)
Ini akan pada setiap iterasi pada daftar input melakukan sesuatu dengan input.
uji template
Template tes membantu Anda dalam menulis tes. Mereka sudah berisi semua yang umum
fungsionalitas yang berguna untuk menjalankan pengujian jenis itu. Mereka juga merawat
menulis data yang mereka kumpulkan yang relevan dengan uji coba ke file laporan.
Template pengujian yang saat ini diterapkan adalah ooni.templates.scapyt untuk pengujian berdasarkan Scapy,
ooni.templates.tcpt untuk pengujian berdasarkan TCP, ooni.templates.httpt untuk pengujian berdasarkan HTTP,
dan ooni.templates.dnst untuk tes berdasarkan DNS.
Menyeramkan berdasarkan tes
Tes berbasis Scapy akan menjadi subkelas dari ooni.templates.scapyt.BaseScapyTest.
Ini menyediakan pembungkus di sekitar fungsi kirim dan terima scapy yang akan menulis yang dikirim
dan menerima paket ke laporan dengan sanitasi src dan IP tujuan
alamat.
Ini memiliki sintaks yang sama dengan fungsi Scapy sr, kecuali bahwa itu akan mengembalikan yang ditangguhkan.
Untuk menerapkan ping ICMP sederhana berdasarkan fungsi ini, Anda dapat melakukannya (Diambil dari
nettest.examples.example_scapyt.ExampleIMPPingScapy)
dari penggunaan impor twisted.python
dari scapy.all impor IP, ICMP
dari ooni.templates import scapyt
kelas UsageOptions(usage.Options):
optParameters = [['target', 't', '127.0.0.1', "Tentukan target yang akan di-ping"]]
kelas ContohIMPPingScapy(scapyt.BaseScapyTest):
name = "Contoh Tes Ping ICMP"
useOptions = UsageOptions
def test_icmp_ping(mandiri):
def selesai (paket):
paket cetak
dijawab, tidak dijawab = paket
untuk snd, rcv di jawab:
rcv.tampilkan()
paket = IP(dst=self.localOptions['target'])/ICMP()
d = self.sr(paket)
d.addCallback(selesai)
kembali d
Argumen yang diambil oleh self.sr() persis sama dengan pengiriman dan penerimaan scapy
fungsi, satu-satunya perbedaan adalah bahwa alih-alih menggunakan soket super scapy biasa itu
menggunakan pembungkus berpenggerak bengkok kami di sekitarnya.
Atau tes ini juga dapat ditulis menggunakan twisted.defer.inlineCallbacks()
dekorator, yang membuatnya terlihat lebih mirip dengan kode sekuensial biasa.
dari penggunaan impor twisted.python
dari penundaan impor twisted.internet
dari scapy.all impor IP, ICMP
dari ooni.templates import scapyt
kelas UsageOptions(usage.Options):
optParameters = [['target', 't', '127.0.0.1', "Tentukan target yang akan di-ping"]]
kelas ContohIMPPingScapyYield(scapyt.BaseScapyTest):
name = "Contoh Tes Ping ICMP"
useOptions = UsageOptions
@defer.inlineCallbacks
def test_icmp_ping(mandiri):
paket = IP(dst=self.localOptions['target'])/ICMP()
dijawab, tidak dijawab = yield self.sr(packets)
untuk snd, rcv di jawab:
rcv.tampilkan()
Laporan dibentuk
#############################################
# OONI Probe Report untuk Contoh Tes Tes ICMP Ping
# Kamis 22 November 18:20:43 2012
#############################################
---
{probe_asn: null, probe_cc: null, probe_ip: 127.0.0.1, nama_perangkat lunak: ooniprobe, versi_perangkat lunak: 0.0.7.1-alfa,
waktu_mulai: 1353601243.0, nama_ujian: Contoh Uji Ping ICMP, versi_ujian: 0.1}
...
---
masukan: null
melaporkan:
jawaban_bendera: [ipsrc]
paket_jawaban:
- - raw_packet: !!biner |
RQAAHAEdAAAuAbjKCAgICH8AAAEAAAAAAAAAAA==
ringkasan: IP / ICMP 8.8.8.8 > 127.0.0.1 echo-reply 0
paket_terkirim:
- - raw_packet: !!biner |
RQAAHAABAABAAevPfwAAAQgICAgIAPf/AAAAAA==
ringkasan: IP / ICMP 127.0.0.1 > 8.8.8.8 permintaan gema 0
nama_tes: test_icmp_ping
tes_mulai: 1353604843.553605
...
TCP berdasarkan tes
Tes berbasis TCP akan membuat subkelas ooni.templates.tcpt.TCPTest.
Template pengujian ini memfasilitasi pengiriman muatan TCP ke kabel dan merekamnya
respon.
dari twisted.internet.error impor ConnectionRefusedError
dari log impor ooni.utils
dari ooni.templates impor tcpt
kelas ContohTCPT(tcpt.TCPTest):
def test_hello_world(diri):
def got_response(respons):
cetak "Dapatkan data ini %s" % respons
def connection_failed(kegagalan):
kegagalan.perangkap(ConnectionRefusedError)
cetak "Koneksi Ditolak"
diri.alamat = "127.0.0.1"
mandiri.port = 57002
payload = "Halo Dunia!\n\r"
d = self.sendPayload(muatan)
d.addErrback(koneksi_gagal)
d.addCallback(got_response)
kembali d
Kemungkinan kegagalan untuk koneksi TCP adalah:
twisted.internet.error.NoRouteError yang sesuai dengan errno.ENETUNREACH
twisted.internet.error.ConnectionRefusedError yang sesuai dengan errno.ECONNREFUSED
twisted.internet.error.TCPTimedOutError yang sesuai dengan errno.ETIMEDOUT
Laporan format
Laporan dasar tes TCP terlihat seperti berikut (ini adalah laporan yang dihasilkan oleh
menjalankan contoh di atas terhadap server gema TCP).
#############################################
# OONI Probe Report untuk tes Uji Base TCP
# Kamis 22 November 18:18:28 2012
#############################################
---
{probe_asn: null, probe_cc: null, probe_ip: 127.0.0.1, nama_perangkat lunak: ooniprobe, versi_perangkat lunak: 0.0.7.1-alfa,
waktu_mulai: 1353601108.0, nama_ujian: Tes TCP Dasar, versi_ujian: '0.1'}
...
---
masukan: null
melaporkan:
kesalahan: []
diterima: ["Halo Dunia!\n\r"]
terkirim: ["Halo Dunia!\n\r"]
nama_tes: tes_halo_dunia
tes_mulai: 1353604708.705081
...
TODO selesaikan ini dengan lebih detail
HTTP berdasarkan tes
Tes berbasis HTTP akan menjadi subkelas dari ooni.templates.httpt.HTTPtest.
Ini menyediakan metode ooni.templates.httpt.HTTPtest.processResponseBody() dan
ooni.templates.httpt.HTTPtest.processResponseHeaders() untuk berinteraksi dengan respon
tubuh dan header masing-masing.
Misalnya, untuk mengimplementasikan pengujian HTTP yang mengembalikan hash sha256 dari badan respons
(berdasarkan nettests.examples.example_httpt):
dari log impor ooni.utils
dari ooni.templates impor httpt
dari hashlib impor sha256
kelas SHA256HTTPBodyTest(httpt.HTTPTest):
nama = "ChecksumHTTPBodyTest"
penulis = "Aaron Gibson"
versi = 0.1
inputFile = ['url file', 'f', Tidak ada,
'Daftar URL untuk melakukan permintaan GET']
diperlukanOptions = ['url file']
def test_http(sendiri):
jika self.input:
url = mandiri.input
kembalikan self.doRequest(url)
lain:
naikkan Pengecualian ("Tidak ada input yang ditentukan")
def prosesResponseBody(diri, tubuh):
body_sha256sum = sha256(tubuh).hexdigest()
self.report['checksum'] = body_sha256sum
Laporan format
#############################################
# OONI Probe Report untuk uji ChecksumHTTPBodyTest
# Kamis 6 Des 17:31:57 2012
#############################################
---
pilihan:
kolektor: nol
bantuan: 0
file log: null
file pcap: nol
file laporan: null
melanjutkan: 0
subargs: [-f, host]
tes: nettests/examples/example_http_checksum.py
probe_asn: nol
probe_cc: nol
probe_ip: 127.0.0.1
nama_perangkat lunak: ooniprobe
perangkat lunak_versi: 0.0.7.1-alpha
waktu_mulai: 1354786317.0
nama_tes: ChecksumHTTPBodyTest
versi_ujian: 0.1
...
---
memasukkan: http://www.google.com
melaporkan:
agen: agen
checksum: d630fa2efd547d3656e349e96ff7af5496889dad959e8e29212af1ff843e7aa1
permintaan:
- meminta:
tubuh: nol
header:
- - Agen pengguna
- - [Opera/9.00 (Windows NT 5.1; U; en), 'Opera 9.0, Windows XP']
metode: DAPATKAN
url: http://www.google.com
tanggapan:
tubuh: ' '
kode: 200
header:
- - X-XSS-Perlindungan
- [1; modus=blok]
- - Set-Kue
- ['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;
kedaluwarsa=Jum, 07-Jun-2013 13:31:57 GMT; jalur=/; domain=.google.com; HttpOnly']
- - Berakhir
- ['-1']
- - Pelayan
- [gws]
- - Koneksi
- [menutup]
- - Kontrol-Cache
- ['pribadi, usia maks=0']
- - Tanggal
- ['Kam, 06 Des 2012 13:31:57 GMT']
- - P3P
- ['CP="Ini bukan kebijakan P3P! Lihat http://www.google.com/support/accounts/bin/answer.py?hl=id&answer=151657
untuk info lebih lanjut."']
- - Jenis konten
- [teks/html; charset=UTF-8]
- - X-Bingkai-Opsi
- [ASAL YANG SAMA]
sockproxy: null
nama_tes: tes_http
test_runtime: 0.08298492431640625
tes_mulai: 1354800717.478403
...
DNS berdasarkan tes
Tes berbasis DNS akan menjadi subkelas dari ooni.templates.dnst.DNSTest.
Ini menyediakan metode ooni.templates.dnst.DNSTest.performPTTRLookup() dan
ooni.templates.dnst.DNSTest.performALookup()
Misalnya (diambil dari nettests.examples.example_dnst):
dari ooni.templates.dnst impor DNSTest
kelas ContohDNSTest(DNSTest):
def test_a_lookup(diri):
def punyaResult(hasil):
# Hasil adalah larik yang berisi semua hasil pencarian catatan A
hasil cetak
d = self.performALookup('torproject.org', ('8.8.8.8', 53))
d.addCallback (mendapatkan Hasil)
kembali d
Laporan format
#############################################
# OONI Probe Report untuk pengujian Base DNS Test
# Kamis 6 Des 17:42:51 2012
#############################################
---
pilihan:
kolektor: nol
bantuan: 0
file log: null
file pcap: nol
file laporan: null
melanjutkan: 0
subarg: []
tes: nettests/examples/example_dnst.py
probe_asn: nol
probe_cc: nol
probe_ip: 127.0.0.1
nama_perangkat lunak: ooniprobe
perangkat lunak_versi: 0.0.7.1-alpha
waktu_mulai: 1354786971.0
test_name: Tes DNS Dasar
versi_ujian: 0.1
...
---
masukan: null
melaporkan:
pertanyaan:
- tambahan: [82.195.75.101, 86.59.30.40, 38.229.72.14, 38.229.72.16]
jawaban:
- [ ,
ttl=782>]
- [ ,
ttl=782>]
- [ ,
ttl=782>]
- [ ,
ttl=782>]
kueri: '[Permintaan(''torproject.org'', 1, 1)]'
tipe_kueri: A
penyelesai: [8.8.8.8, 53]
nama_tes: tes_a_lookup
test_runtime: 0.028924942016601562
tes_mulai: 1354801371.980114
...
Untuk contoh yang lebih kompleks, lihat: konsistensi nettests.blocking.dns
GLOSARIUM
Berikut akan kami rangkum beberapa jargon yang menjadi keunikan OONI.
uji Kasus: sekumpulan pengukuran yang dilakukan pada jaringan yang akan diuji secara logika
dikelompokkan bersama
Laporan: adalah output dari uji coba yang berisi semua informasi yang diperlukan untuk a
peneliti untuk menilai apa yang menjadi output dari suatu tes.
Yamloni: Format yang kami gunakan untuk Laporan, yaitu berdasarkan YAML.
Memasukkan: Apa yang diberikan sebagai input ke TestCase untuk melakukan pengukuran.
Gunakan ooniprobe online menggunakan layanan onworks.net