ทำการค้นหา ASN จำนวนมากที่แปลแล้วบนชุดข้อมูลจำนวนมากของที่อยู่ IP
ดาวน์โหลดชุดข้อมูล BGP สองชุดที่ลิงก์ไว้ที่ด้านบนของเอกสาร (http://thyme.apnic.net/current/data-raw-table และ http://thyme.apnic.net/current/data-used-autnums) . รายการแรกประกอบด้วยช่วงเครือข่ายย่อยที่กำหนดทั้งหมดตั้งแต่ IANA และหมายเลข ASN ที่เกี่ยวข้อง รายการที่สองของหมายเลข ASN และคำอธิบาย ทั้งคู่อัปเดตทุกวันระหว่างเวลา 4.00 น. ถึง 9.00 น. +10.00 น. ตามที่ระบุไว้ที่ http://thyme.apnic.net วางไฟล์ทั้งสองนี้และรายการ IP ที่คุณต้องการค้นหาชื่อ uniq_ip.txt ภายในโฟลเดอร์เดียวกันกับสคริปต์ ip2asn.py ดำเนินการ Bulk-ip-to-asn-correlation.py คุณจะได้รับไฟล์เอาท์พุตสองไฟล์ ได้แก่ ip2asn--invalids.txt ซึ่งมีรายการที่อยู่ IP ที่ไม่ถูกต้องที่ระบุทั้งหมด (รวมถึงที่อยู่ในเครื่องและที่อยู่ที่สงวนไว้) และ ip2asn-results.txt ที่มี csv ผลลัพธ์ที่จัดรูปแบบด้วยส่วนหัวของการประทับเวลา, ip, asn,” asn descriptor”
ฉันใช้เวลาสักครู่เพื่อหาวิธีที่มีประสิทธิภาพที่สุดในการแสดงความสัมพันธ์ระหว่างที่อยู่ IP ที่ให้มากับซับเน็ตที่เกี่ยวข้องตามที่ลงทะเบียนจาก IANA
กุญแจสำคัญในการใช้งานของฉันอธิบายไว้ใน “ตัวอย่างอื่นๆ” แรกที่ https://docs.python.org/3/library/bisect.html โดยที่พวกเขาจะเชื่อมโยงเกรดตัวอักษรกับคะแนนทดสอบตามระดับการให้คะแนน
โปรดทราบว่าที่อยู่ IP ทั้งหมดจะถูกแปลงเป็นค่าจำนวนเต็มเพื่อการคำนวณ
ขั้นแรก ฉันสร้างทูเพิลของจำนวนที่อยู่ IP ทั้งหมดที่มีอยู่ภายในคำนำหน้า CIDR แต่ละรายการ ตั้งแต่ /1 ถึง /32 และเก็บไว้ใน NETMASK_MAP ฉันคิดว่าสร้างรายการที่อยู่ IP ที่ชัดเจนที่จะค้นหาจากไฟล์ที่ให้มา โดยกรองที่อยู่ที่ไม่ถูกต้องออก ในระหว่างกระบวนการนี้ ฉันยังแยกรายการออคเต็ตแรกที่ไม่ซ้ำกันสำหรับที่อยู่การสืบค้นของเราด้วย ซึ่งจะใช้ในการกรองช่วงที่ไม่จำเป็นออกจากชุดข้อมูล BGP
ต่อไป ฉันสร้างตารางการค้นหาสองตารางโดยใช้ไฟล์ตารางข้อมูลดิบที่มีซับเน็ตที่ลงทะเบียนของ IANA และ ASN ที่เกี่ยวข้อง สำหรับแต่ละเครือข่ายย่อยในชุดข้อมูล BGP เราจะพิจารณาก่อนว่าออคเต็ตแรกรวมอยู่ในรายการออคเต็ต uniq ของเราจากที่อยู่ IP ของการสืบค้นหรือไม่ หากเป็นเช่นนั้น เราจะคำนวณที่อยู่ IP สูงสุด (calculate_net_rage()) ในช่วง CIDR ที่ระบุ IP สูงสุดเหล่านี้จะถูกเพิ่มใน subnet_lookup_table ตารางที่สอง asn_lookup_table ถูกสร้างขึ้นตามลำดับโดยมีหมายเลข ASN ที่สอดคล้องกันสำหรับที่อยู่ IP สูงสุดแต่ละรายการ สิ่งนี้เป็นไปตามตัวอย่างการแบ่งครึ่งเกรด โดยที่ subnet_lookup_table เป็นตัวแปรเบรกพอยต์ และ asn_lookup_table คือเกรดตัวอักษร
จากนั้นเราสร้างตารางสุดท้ายจากชุดข้อมูล BGP ที่ใช้ข้อมูลซึ่งมีความสัมพันธ์ของหมายเลข ASN กับข้อความอธิบาย
สุดท้ายนี้ สำหรับที่อยู่ IP แต่ละรายการในรายการค้นหาที่ล้างข้อมูลแล้ว เราจะแบ่งส่วนตามที่ระบุไว้ในเอกสาร Python ที่เชื่อมโยงเพื่อเชื่อมโยงว่าที่อยู่ IP สูงสุดใดที่ IP ที่กำหนดอยู่ภายใต้ และหมายเลข ASN ที่เกี่ยวข้อง จากนั้นจะมีความสัมพันธ์กับข้อความอธิบาย
หากไม่มี IP ที่คุณระบุ ฉันไม่รู้ว่าจะเกิดอะไรขึ้น มันคงจะระเบิด.. ขอให้โชคดี.