OSIPs
يقوم هذا السكريبت بمسح كل ملف من مجلد معين بشكل متكرر، ويستخرج كل عناوين IPv4 و IPv6، ويقوم بتصفية عناوين IP العامة، ثم يستعلم عن عناوين IP هذه مقابل مرحلات TOR وخدمة WhoIs وخدمة الموقع. يقوم بإخراج 4 ملفات: ملف CSV وملف JSON يحتويان على جميع تفاصيل عناوين IP، وملف CSV يحتوي على فهرس لكل عنوان IP تم العثور عليه، وملف KML يحتوي على جميع المواقع التي تم جمعها.
الميزات
- تحليل أي عدد من الملفات في تشغيلة واحدة
- يمكن تشغيله أيضًا لملف إدخال واحد
- استخراج جميع عناوين IPv4 و IPv6 الفريدة والصالحة (مقارنة عنوانين بشكل صحيح، حتى إذا تمت كتابتهما بطريقة مختلفة)
- جمع معلومات Who Is المتاحة للعموم لجميع عناوين IP العامة
- الاستعلام عن جميع عناوين IP العامة مقابل مرحلات TOR
- جمع معلومات الموقع الجغرافي لجميع عناوين IP العامة
- يمكن تشغيله باستخدام معاملات سطر الأوامر في وضع غير تفاعلي لسهولة التكامل مع النصوص الأخرى
- يمكن تشغيله بدون معاملات ويمكن تقديم قيم الإدخال بشكل تفاعلي
- يسمح للمستخدم باختيار الخطوات التي يجب تنفيذها أو استبعادها
- إخراج معلومات مطولة إلى وحدة التحكم في كل خطوة يقوم بها
- تصدير جميع تفاصيل عناوين IP في ملف CSV وملف JSON
- تصدير ملف KML يمكن تحميله بسهولة فوق الخريطة
- الاحتفاظ بفهرس لجميع عناوين IP التي تم العثور عليها في ملف CSV منفصل لسهولة التتبع
المتطلبات الأساسية:
Python 3.9.x
التثبيت
لتثبيت التبعيات، قم بتشغيل:
pip install -r requirements.txt
التجميع إلى ملف قابل للتنفيذ
pip install pyinstaller
pyinstaller --onefile osips.py
الاستخدام
python osips.py [-h] [-F INPUTFOLDER] [-f INPUTFILE] [-p INPUTFILESPATTERN] [-o OUTPUTFILESNAME] [-t {y,n,Y,N}] [-w {y,n,Y,N}] [-l {y,n,Y,N}] [-locationEndpoint LOCATIONENDPOINT]
بشكل تفاعلي
python osips.py
بشكل غير تفاعلي
python osips.py --checkTor Y --checkWhoIs Y --checkLocations Y --inputFolder testFolder/ --inputFilesPattern * --outputFilesName test
المساعدة
python osips.py -h
الخيارات
-h, --help
إظهار رسالة المساعدة والخروج
-F INPUTFOLDER, --inputFolder INPUTFOLDER
مجلد يحتوي على ملفات تحتوي على عناوين IP (ملفات سجلات، ملفات بريد إلكتروني، ملفات نصية، إلخ). يمكن أن تكون عناوين IP من نوع IPv4 و/أو IPv6 ويمكن وضعها في أي مكان داخل الملفات. سيقوم السكريبت بتحليل كل ملف في المجلد ومسح كل عنوان IP
-f INPUTFILE, --inputFile INPUTFILE
استخدم هذا الخيار لمسح ملف واحد فقط بدلاً من مجلد يحتوي على ملفات. يمكن أن يكون الملف أي ملف نصي يحتوي على عناوين IP (ملفات سجلات، ملفات بريد إلكتروني، ملفات نصية، إلخ.)
-p INPUTFILESPATTERN, --inputFilesPattern INPUTFILESPATTERN
أدخل النمط لاستخدامه للملفات في مجلد الإدخال. مثال: * لجميع الملفات، *.txt لملفات النص.
-o OUTPUTFILESNAME, --outputFilesName OUTPUTFILESNAME
اسم ملفات الإخراج، بدون امتداد. سيتم إنشاء 4 ملفات مختلفة بهذا الاسم: ملف CSV لتخزين تفاصيل IP، وملف فهرس لتخزين فهارس IP، وملف JSON لتخزين التفاصيل، وملف KML لتخزين المواقع.
-t {y,n,Y,N}, --checkTor {y,n,Y,N}
تحديد ما إذا كنت تريد التحقق من كل عنوان IP عام مقابل عناوين IP لمرحلات TOR
-w {y,n,Y,N}, --checkWhoIs {y,n,Y,N}
تحديد ما إذا كنت تريد استخراج معلومات WhoIs لكل عنوان IP عام
-l {y,n,Y,N}, --checkLocations {y,n,Y,N}
تحديد ما إذا كنت تريد ترميز موقع كل عنوان IP عام واستخراج معلومات الموقع باستخدام https://reallyfreegeoip.org
-locationEndpoint LOCATIONENDPOINT
نقطة النهاية الافتراضية لـ REST للموقع هي "https://reallyfreegeoip.org/json/". يمكنك تحديد نقطة نهاية مختلفة، بما في ذلك عنصر نائب . يجب أن تكون النتيجة بتنسيق JSON ويجب أن تتضمن الحقول التالية: country_name, region_code, region_name, city, zip_code, time_zone, latitude, longitude, metro_code
ملاحظات
- الأداة تستخرج عناوين IPv4 فقط بتدوين النقطة العشرية (xxx.xxx.xxx.xxx). لا تستخرج عناوين IPv4 بالتدوين العشري أو الثماني أو السداسي عشري بسبب ارتفاع معدل النتائج الإيجابية الخاطئة.
- اعتمادًا على عدد عناوين IP العامة التي تم العثور عليها، قد يستغرق الاستعلام عن الخدمات عبر الإنترنت وقتًا طويلاً. إذا كنت تتعامل مع عدد كبير من عناوين IP، فمن المستحسن تشغيل الأداة أولاً دون الاستعلام عن أي من الخدمات، واستخراج عناوين IP فقط. بعد رؤية نتيجة الاستخراج، يمكنك حساب تقدير لإجمالي وقت تشغيل الأداة إذا تم الاستعلام عن الخدمات، وفي النهاية اختيار الاستعلام عن خدمة واحدة أو اثنتين فقط.
- يتم التحقق من مرحلات TOR في وقت تشغيل الأداة. نظرًا لأن عناوين IP هذه تتغير باستمرار، فقد لا تكون هذه المعلومات دقيقة للغاية. إذا كان من الممكن أيضًا تحديد تاريخ لعنوان IP، فيجب التحقق منه مقابل ExoneraTor على هذا العنوان: https://metrics.torproject.org/exonerator.html
- يتم جمع معلومات Who Is بالإضافة إلى معلومات الموقع في الوقت الفعلي من الخدمات المتاحة للعموم، لذلك يتم إرسال عناوين IP إلى هذه الخدمات. توجد قواعد بيانات قابلة للتنزيل من شأنها أن تسمح لك بجمع هذه المعلومات محليًا، ولكن هذه التنزيلات ليست مجانية وستحتاج إلى تحديثات مستمرة. هذه الأداة لم تُبنَ للعمل مع قواعد البيانات المحلية.
- الخدمة الافتراضية المستخدمة لجمع الموقع هي https://reallyfreegeoip.org. هذه خدمة مجانية بدون قيود، ولكنها قد لا تكون دقيقة للغاية. يمكنك تغيير هذه الخدمة بأخرى، باستخدام معامل -locationEndpoint للسكريبت. يمكنك تقديم خدمة أخرى تأخذ عنوان IP كمعامل وتعيد استجابة JSON. استخدم كعنصر نائب لموقع عنوان IP. أمثلة: https://ipapi.co//json, https://api.ipstack.com/?access_key=ACCESS_KEY, https://freeapi.robtex.com/ipquery/. يرجى ملاحظة أن بعض نقاط نهاية REST الأخرى هذه قد لا تُرجع الحقول المطلوبة وبالتالي ستكسر منطق السكريبت. في هذه الحالة، يجب تعديل الطريقة المسماة RequestInfoFromRestEndpoint وفقًا لذلك.
الإقرارات