Saya ingin memastikan bahwa string apapun yang saya masuk ke garis wpa-ssid "abc"di /etc/network/interfacestidak akan digunakan untuk keluar dari konfigurasi.
Yang bisa saya temukan di manual adalah yang \dapat digunakan di akhir baris untuk melanjutkan di baris berikutnya.
Tapi bagaimana dengan \"di tengah garis?
Kekhawatiran saya adalah sesuatu seperti SSID
A"
up rm -rf /\
Apakah ada penyandian umum yang dapat digunakan untuk karakter sewenang-wenang ke bidang SSID?
Dalam Debian /etc/network/interfaces(atau distribusi lainnya menggunakan utilitas ifupdown Debian), urutan backslash-newline dihapus, dan backslash tidak spesial di tempat lain. Karakter kutipan ganda juga tidak spesial. Karakter #memulai komentar jika itu karakter non-spasi pertama pada baris (non-lanjutan). Byte Null diperlakukan sebagai karakter baris baru (saya pikir - parser menggunakan string C dan tidak memiliki penanganan khusus untuk byte nol, sehingga mereka dapat menyebabkan kerusakan tambahan).
Baris konfigurasi berupa nama opsi diikuti oleh nilai, dipisahkan oleh spasi. Ruang putih terkemuka dan tertinggal diabaikan. Beberapa opsi bawaan lebih lanjut mengurai baris menjadi kata-kata; nilai opsi untuk ifaceselalu berjalan hingga akhir baris.
Misalnya, garis
wpa-ssid "a b" "cd"
menyetel opsi wpa-ssidke string 12-karakter "a b" "cd"(spasi putih internal dipertahankan).
Skrip ifupdown WPA Supplicant menghapus tanda kutip ganda di awal dan di akhir wpa-ssidstring konfigurasi, baris di atas setara dengan wpa-ssid a b" "cd. Dengan cara ini, Anda bisa memiliki spasi spasial memimpin dan tertinggal di SSID.
Saya tidak dapat menemukan masalah kutip di skrip ifupdown Pemohon WPA, jadi sepertinya apa pun yang dihasilkan jikaupup aman.
Dengan demikian Anda dapat mengizinkan string apa pun sebagai SSID untuk disuntikkan /etc/network/interfaces, asalkan tidak mengandung baris baru atau byte nol. Tambahkan tanda kutip ganda di sekitar string (jika tidak, SSID dengan spasi spasi awal atau akhir, atau yang berakhir dengan \, atau yang dimulai atau berakhir dengan ", akan hancur).
Jadi saya akan mencari standar terbaru untuk panduan dan memastikan Anda dapat menangani apa yang legal berdasarkan itu.
Apa lagi?
Selain itu saya mungkin cenderung menjaga diri saya dengan menormalkan input pengguna menggunakan beberapa bentuk fungsi penyandian URL (sesuatu yang jelas bekerja dengan SSID) atau hanya menghapus karakter ilegal dan tidak mengizinkan mereka sebelum menulis string ini ke file ini .
Karakter aneh?
Satu-satunya masalah yang dapat saya temukan dengan karakter aneh / khusus yang terkait dengan interfacesfile adalah jenis bug yang diajukan terhadap installer-debian.
Debian-installer meminta informasi jaringan nirkabel saya dan berhasil menggunakannya untuk terhubung secara nirkabel ke jaringan. Itu juga menulis informasi jaringan nirkabel saya ke / etc / network / interfaces. Namun, kunci WPA yang saya masukkan berisi setidaknya satu karakter khusus, dan debian-installer tidak lolos atau mengutip karakter khusus di / etc / network / interfaces. Hasilnya adalah, pada saat reboot, sistem macet untuk waktu yang sangat lama selama proses boot ketika mencoba (tidak berhasil) untuk menghubungkan kembali ke jaringan nirkabel. Saya memperbaiki masalah hanya dengan mengutip kunci WPA yang tercantum di / etc / network / interfaces. Ini harus terjadi secara otomatis jika kunci berisi karakter khusus.
Juga ada bug-bug ini, yang terkait dengan spasi di dalam SSID, yang lainnya terkait dengan frasa sandi:
Maka akan tampak bahwa spasi diizinkan, asalkan dikutip dengan benar. Juga ada contoh ini yang menjelaskan cara memberikan SSID ruang untuk iwconfigalat:
Tambahkan nama (ssid) untuk jaringan yang ingin Anda buat / gabungkan. Gunakan tanda kutip tunggal jika ada spasi di namanya.
$ sudo iwconfig eth1 essid 'name'
Webconverger
Saya menemukan contoh ini yang terlihat seperti Debian, jadi contohnya mungkin sesuai dengan situasi Anda, tetapi sulit untuk memastikannya. Saya memunculkannya hanya karena itu menunjukkan contoh bagaimana saya akan mengharapkan metode pengkodean URI akan terbuka untuk melindungi terhadap karakter ilegal.
Setiap BSS atau ESS diidentifikasi oleh pengidentifikasi set layanan (SSID) - string 1 hingga 32 byte. Biasanya ini adalah string yang dapat dibaca manusia dan dengan demikian biasa disebut "nama jaringan". 6 Dalam IBSS, SSID dipilih oleh perangkat klien yang memulai jaringan, dan penyiaran SSID dilakukan dalam urutan pseudo-acak oleh semua perangkat yang merupakan anggota jaringan.
Tidak ada batasan yang pasti tentang karakter apa yang dapat digunakan dalam SSID (IEEE Std 802.11 ™ -2012)
Beberapa batasan berdasarkan produk
Beberapa batasan karakter (hanya ascii)
Unicode
Jadi secara teknis setiap karakter diperbolehkan dalam SSID, implementasi yang berbeda seperti Windows XP, Windows 7, vs berbagai versi Linux memungkinkan / melarang subset karakter dalam SSID.
Jawaban Anda tidak sampai pada intinya: pelarian apa yang tersedia /etc/network/interfaces?
Gilles 'SANGAT berhenti menjadi jahat'
@Gilles - terima kasih, ini adalah awal hari ini di kantor, saya telah menambahkan beberapa info tambahan yang saya temukan tetapi belum ditambahkan ke A saat itu. Sebagian besar bug terkait dengan pelarian karakter untuk "wpa-ssid" & "wpa-psk".
slm
Saya tidak bisa mengatakan apakah urlencoding esid berfungsi sebagai parameter boot tetapi tidak berfungsi dalam file antarmuka.
hultqvist
@ phq - Saya tidak terkejut, ini hanya sebuah ide, dan penyandian umumnya adalah cara Anda menangani sanitasi data seperti ini di aplikasi lain, mengutipnya sepertinya satu-satunya pilihan lain, di luar menghapusnya.
wpa-ssid my ssid
.wpa-ssid=my ssid
?/etc/network/interfaces
tidak digunakan=
dalam sintaksnya, saya mencoba sekarang dan tidak berfungsi=
.my ssid
?T&J SO ini berjudul: Apakah ada standar yang mendefinisikan apa itu SSID dan kata sandi yang valid? jawab beberapa pertanyaan Anda.
kutipan
Ada juga komentar ini pada jawaban atas pertanyaan SO:
Jadi saya akan mencari standar terbaru untuk panduan dan memastikan Anda dapat menangani apa yang legal berdasarkan itu.
Apa lagi?
Selain itu saya mungkin cenderung menjaga diri saya dengan menormalkan input pengguna menggunakan beberapa bentuk fungsi penyandian URL (sesuatu yang jelas bekerja dengan SSID) atau hanya menghapus karakter ilegal dan tidak mengizinkan mereka sebelum menulis string ini ke file ini .
Karakter aneh?
Satu-satunya masalah yang dapat saya temukan dengan karakter aneh / khusus yang terkait dengan
interfaces
file adalah jenis bug yang diajukan terhadap installer-debian.Juga ada bug-bug ini, yang terkait dengan spasi di dalam SSID, yang lainnya terkait dengan frasa sandi:
Dalam kedua kasus itu akan terlihat bahwa membungkus string dengan tanda kutip ganda sudah cukup untuk melindungi nilai-nilai untuk keduanya.
Contoh tambahan
Dokumen resmi
Menggali dokumentasi resmi yang saya temukan di sini:
Dokumen resmi menunjukkan contoh ini:
Maka akan tampak bahwa spasi diizinkan, asalkan dikutip dengan benar. Juga ada contoh ini yang menjelaskan cara memberikan SSID ruang untuk
iwconfig
alat:Webconverger
Saya menemukan contoh ini yang terlihat seperti Debian, jadi contohnya mungkin sesuai dengan situasi Anda, tetapi sulit untuk memastikannya. Saya memunculkannya hanya karena itu menunjukkan contoh bagaimana saya akan mengharapkan metode pengkodean URI akan terbuka untuk melindungi terhadap karakter ilegal.
kutipan
Jadi, Anda mungkin dapat menyandikan ruang yang muncul di SSID menggunakan
%20
.SSID
Menggali lebih dalam lagi saya menemukan komentar ini dari halaman Wikipedia pada Layanan yang ditetapkan (jaringan 802.11) .
Komentar ini didukung oleh presentasi ini dari Blackhat EU 2013, berjudul: Eksploitasi Praktis Menggunakan Pengidentifikasi Set Layanan Berbahaya (SSID) .
kutipan
Jadi secara teknis setiap karakter diperbolehkan dalam SSID, implementasi yang berbeda seperti Windows XP, Windows 7, vs berbagai versi Linux memungkinkan / melarang subset karakter dalam SSID.
Referensi
sumber
/etc/network/interfaces
?