Lakukan pencarian ASN massal yang dilokalkan pada kumpulan data alamat IP massal
Unduh dua kumpulan data BGP yang ditautkan di bagian atas dokumen (http://thyme.apnic.net/current/data-raw-table, dan http://thyme.apnic.net/current/data-used-autnums) . Yang pertama berisi semua rentang subnet yang ditetapkan dari IANA dan nomor ASN terkait. Yang kedua daftar nomor ASN dan deskriptornya. Keduanya diperbarui setiap hari antara pukul 04.00 dan 09.00 +10GMT sebagaimana diuraikan di http://thyme.apnic.net. Tempatkan kedua file ini, dan daftar IP yang ingin Anda cari bernama uniq_ip.txt, dalam folder yang sama dengan skrip ip2asn.py. Jalankan bulk-ip-to-asn-correlation.py Anda akan diberikan dua file keluaran – ip2asn--invalids.txt berisi daftar semua alamat IP tidak valid yang teridentifikasi (termasuk alamat lokal dan alamat cadangan) dan ip2asn-results.txt berisi csv hasil yang diformat dengan header stempel waktu,ip,asn,”deskriptor asn”.
Butuh beberapa saat bagi saya untuk menemukan cara paling efisien untuk melakukan korelasi antara alamat IP yang diberikan dan subnet terkait yang didaftarkan dari IANA.
Kunci implementasi saya dijelaskan dalam “Contoh Lain” pertama di https://docs.python.org/3/library/bisect.html di mana mereka mengaitkan nilai huruf dengan nilai ujian berdasarkan skala penilaian.
Perhatikan bahwa semua alamat IP dikonversi ke nilai integernya untuk komputasi.
Pertama, saya membuat tupel dari jumlah total alamat IP yang terdapat dalam setiap awalan CIDR, dari /1 hingga /32 dan menyimpannya di NETMASK_MAP. Saya pikir buat daftar alamat IP yang bersih yang akan dicari dari file yang disediakan, menyaring alamat yang tidak valid. Selama proses ini saya juga mengekstrak daftar unik oktet pertama untuk alamat permintaan kami. Ini akan digunakan untuk menyaring banyak rentang yang tidak diperlukan dari kumpulan data BGP.
Selanjutnya, saya membuat dua tabel pencarian menggunakan file tabel data mentah yang berisi subnet terdaftar IANA dan ASNnya masing-masing. Untuk setiap subnet dalam kumpulan data BGP, pertama-tama kami menentukan apakah oktet pertama disertakan dalam daftar oktet unik kami dari alamat IP kueri. Jika ya, kami kemudian menghitung alamat IP maksimal (calculate_net_rage()) dalam rentang CIDR yang ditentukan. IP maksimum ini ditambahkan ke subnet_lookup_table. Tabel kedua, asn_lookup_table, dibuat secara berurutan yang berisi nomor ASN yang sesuai untuk setiap alamat IP maksimum. Ini mengikuti contoh pembagian nilai di mana subnet_lookup_table adalah variabel breakpoints dan asn_lookup_table adalah nilai huruf.
Kami kemudian membuat tabel akhir dari kumpulan data BGP data bekas musim gugur yang berisi korelasi nomor ASN dengan teks deskriptornya.
Terakhir, untuk setiap alamat IP dalam daftar kueri yang telah dibersihkan, kami melakukan pembagian dua seperti yang diuraikan dalam dokumentasi python tertaut untuk mengkorelasikan alamat IP maksimum mana yang termasuk dalam IP tersebut dan nomor ASN terkaitnya. Itu kemudian dikorelasikan dengan teks deskriptor.
Jika IP yang Anda berikan tidak ada, saya tidak tahu apa yang akan terjadi. Kemungkinan besar akan meledak. Semoga beruntung.