قم بإجراء بحث ASN جماعي محلي على مجموعة بيانات مجمعة لعناوين IP
قم بتنزيل مجموعتي بيانات BGP المرتبطتين في الجزء العلوي من المستند (http://thyme.apnic.net/current/data-raw-table، وhttp://thyme.apnic.net/current/data-used-autnums) . يحتوي الأول منها على كافة نطاقات الشبكة الفرعية المعينة من IANA وأرقام ASN المرتبطة بها. والثانية قائمة أرقام ASN والواصف. يتم تحديثهما يوميًا بين الساعة 4 صباحًا و9 صباحًا +10 بتوقيت جرينتش كما هو موضح على 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 واصف".
لقد استغرق الأمر بعض الوقت لاكتشاف الطريقة الأكثر فعالية لإجراء الارتباط بين عنوان IP المقدم والشبكة الفرعية المرتبطة به كما هو مسجل من IANA.
تم شرح مفتاح التنفيذ الخاص بي في "الأمثلة الأخرى" الأولى على https://docs.python.org/3/library/bisect.html حيث يربطون درجة حرفية بدرجة اختبار بناءً على مقياس الدرجات.
لاحظ أنه يتم تحويل كافة عناوين IP إلى قيمتها الصحيحة للحساب.
أولاً، أقوم بإنشاء مجموعة من إجمالي عدد عناوين IP المضمنة في كل بادئة CIDR، من /1 إلى /32 وتخزينها في NETMASK_MAP. أعتقد أن عليك إنشاء قائمة نظيفة بعناوين IP التي سيتم البحث عنها من الملف المقدم، وتصفية العناوين غير الصالحة. أثناء هذه العملية، أقوم أيضًا باستخراج قائمة فريدة من الثمانيات الأولى لعناوين الاستعلام الخاصة بنا. سيتم استخدام هذا لتصفية العديد من النطاقات غير الضرورية من مجموعات بيانات BGP.
بعد ذلك، أقوم بإنشاء جدولي بحث باستخدام ملف جدول البيانات الخام الذي يحتوي على الشبكات الفرعية المسجلة لـ IANA وأرقام ASN الخاصة بها. بالنسبة لكل شبكة فرعية في مجموعة بيانات BGP، نحدد أولاً ما إذا كانت الثماني الأولى متضمنة في قائمة الثمانيات الفريدة الخاصة بنا من عناوين 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 الذي تقدمه غير موجود، فليس لدي أي فكرة عما سيحدث. من المحتمل أن تنفجر. حظ سعيد.