Sebuah proyek untuk mengekstrak dengan cepat semua alamat email dari file apa pun di jalur tertentu
Proyek ini dimaksudkan untuk menjadi versi open source baru dari basis kode dasar yang telah saya gunakan selama lebih dari satu dekade untuk mengekstrak alamat email dari pelanggaran data sebelum memuatnya ke HIBP. Sebagian besar pelanggaran terjadi dalam format .sql atau .csv baik dalam satu file atau beberapa file dalam satu folder dan ekstraksi mengikuti proses sederhana:
Regex yang saya gunakan adalah sebagai berikut: b[a-zA-Z0-9.-_+]+@[a-zA-Z0-9.-_]+.[a-zA-Z]+b
Validasi alamat email melalui regex sulit dilakukan, tetapi juga tidak harus sempurna untuk kasus penggunaan ini. Positif palsu sangat jarang terjadi dan dampaknya dapat diabaikan, yaitu string yang bukan alamat asli dimuat ke HIBP atau alamat asli dengan format yang tidak biasa dimuat. Untuk sebagian besar, regex ini dapat diringkas sebagai "isi kedua sisi simbol @ dengan TLD karakter alfa".
Tak pelak lagi, diskusi telah mengarah pada kepatuhan terhadap RFC versus penggunaan praktis karakter tertentu ketika mempertimbangkan aturan penguraian. Ada 2 pertimbangan utama di sini:
Secara anekdot, poin 1 jarang sekali benar jika dibandingkan dengan poin 2. Dampak dari penolakan alamat sah yang sesuai spesifikasi adalah bahwa alamat tersebut tidak berakhir di HIBP (yaitu berdampak rendah). Dampak dari mengizinkan alamat yang sebenarnya tidak ada adalah catatan sampah dimasukkan ke dalam HIBP (juga berdampak rendah). Terutama ketika mempertimbangkan kemungkinan alamat dengan karakter yang tidak jelas digunakan secara praktis (misalnya, diterima dalam formulir pendaftaran dan tidak ditolak), secara seimbang lebih baik menolak karakter yang kemungkinan besar merupakan hasil dari kesalahan penguraian.
Secara realistis, pola yang tidak jelas kemungkinan besar tidak akan digunakan di alamat email
Saya telah menghubungi dan meminta dukungan dan akan memulai melalui satu atau dua orang penting kemudian mencari masukan yang lebih luas. Saya sangat tertarik untuk mengoptimalkan layanan pada kumpulan data yang lebih besar dan file non-teks, terutama dengan meningkatnya jumlah dokumen yang dibuang oleh kru ransomware. Saya akan mulai membuat masalah untuk bagian-bagian yang perlu dibangun.
Menggunakan Generator Data SQL Red Gate, file sampel yang berisi 10 juta catatan data pelanggaran umum tersedia untuk diunduh dari Mega. File ini menghasilkan tepat 10 juta alamat email yang diekstraksi dengan versi aplikasi ini saat ini. Catatan: file data pengujian saat ini dalam versi V2, dengan versi sebelumnya menghasilkan kurang dari 10 juta alamat unik karena adanya pola nama domain yang tidak valid.
Sintaks: AddressExtractor.exe -?
Sintaks: AddressExtractor.exe -v
Sintaks: AddressExtractor.exe <input [[... input]]> [-o output] [-r report]
Pilihan | Keterangan |
---|---|
-? , -h , --help | Mencetak sintaks dan opsi baris perintah |
-v , --version | Mencetak nomor versi aplikasi |
masukan | Satu atau lebih masukan nama file atau direktori |
-o , --output keluaran | Jalur dan nama file dari file keluaran. Defaultnya adalah 'addresses_output.txt' |
-r , --report laporan | Jalur dan nama file dari file laporan. Defaultnya adalah 'report.txt' |
--recursive | Aktifkan mode rekursif untuk direktori, yang akan mencari direktori anak |
-y , --yes | Konfirmasikan secara otomatis perintah untuk LANJUTKAN tanpa bertanya |
-q , --quiet | Jalankan dengan lebih sedikit verbositas, pesan kemajuan tidak ditampilkan |
Pilihan | Keterangan |
---|---|
--debug | Aktifkan mode debug untuk pemeriksaan kinerja yang lebih baik |
--threads nomor | Menggunakan banyak utas dengan saluran untuk membaca dari file. Defaultnya adalah 4 |
--skip-exceptions | Secara otomatis meminta LANJUTKAN ketika terjadi pengecualian |