یک اسکنر IP چندنخی (Multi-threaded) قدرتمند و حرفهای که با هدف بررسی در دسترس بودن IPها و محدودههای CIDR، استخراج دامنه از گواهیهای SSL و پشتیبانی از فایل GeoIP توسعه یافته است.
⚠️ توجه مهم: این پروژه به طور کامل توسط هوش مصنوعی (ChatGPT / AI Assistant) نوشته و تولید شده است. کدها بهینه، ماژولار و با بهترین شیوههای برنامهنویسی پیادهسازی شدهاند.
- اسکن چندنخی (Multi-threaded) – با قابلیت تنظیم تعداد تردها برای سرعت بخشیدن به فرآیند
- پشتیبانی از CIDR – اسکن محدودههای IP مانند
45.115.42.0/23 - سه روش اسکن متفاوت:
- Fast Scan – Ping → nslookup → بررسی پورت 443 SSL
- Deep Scan – بررسی پورتهای 80, 443, 8080, 8443 (حتی در صورت عدم پاسخ پینگ)
- Fake SNI Scan – اسکن با SNI جعلی برای دور زدن فیلترینگ
- استخراج دامنه از گواهی SSL – استخراج خودکار CN و SAN از سرتیفیکیت SSL
- پشتیبانی از GeoIP – استخراج خودکار محدودههای IP از فایل
geoip.datبر اساس کد کشور - مدیریت حافظه (Caching) – جلوگیری از اسکن مجدد IPهای قبلاً بررسی شده
- صفحهبندی (Pagination) – نمایش لیستهای حجیم با قابلیت پیمایش با صفحه کلید
پروژه به صورت کاملاً ماژولار و کلاسبندی شده طراحی شده است:
ip_scanner/
├── ip_main.py # نقطه ورودی
├── ip_ui.py # رابط کاربری اصلی
├── ip_scanner_core.py # هسته اسکنر چندنخی
├── ip_storage.py # مدیریت ذخیرهسازی
├── geoip_parser.py # پارسر فایل geoip.dat
├── x509_parser.py # پارسر گواهی SSL (ASN.1 DER)
├── utils/
│ ├── network_utils.py # ابزارهای شبکه (پینگ، پورت، hostname)
│ ├── ssl_utils.py # ابزارهای SSL (استخراج سرتیفیکیت)
│ └── cidr_utils.py # ابزارهای CIDR (اعتبارسنجی، تبدیل)
├── scanners/
│ ├── fast_scanner.py # پیادهسازی Fast Scan
│ ├── deep_scanner.py # پیادهسازی Deep Scan
│ └── fakesni_scanner.py # پیادهسازی Fake SNI Scan
└── ui_components/
├── menu_manager.py # مدیریت منوها
├── paginated_view.py # نمایش صفحهبندی شده
└── scan_controller.py # کنترل اسکن (Pause/Resume/Stop)
- Pause – توقف موقت اسکن
- Resume – ادامه اسکن از همان نقطه
- Stop – توقف کامل و ذخیره نتایج تا لحظه
- آرشیو خودکار – ذخیره نتایج در
ip_archive.csv - لیست IPهای زنده – ذخیره در
LiveIPs.txt - دامنههای استخراج شده – ذخیره خودکار دامنههای SSL در
extracted_domains.txt - جستجو در آرشیو – جستجوی سریع IP در نتایج قبلی
- مرتبسازی – مرتبسازی IPها (عددی)
- کش (Cache) – جلوگیری از اسکن مجدد IPهای تکراری
- دانلود فایل
geoip.datاز مخازن رسمی V2Fly - پشتیبانی از آینه (Mirror) در صورت عدم دسترسی
IP SCANNER - MAIN MENU
============================================================
1. Normal IP Scan ← اسکن IPهای جدید (اجتناب از تکراری)
2. Force Update IP Scan ← اسکن تمام IPها (حتی قبلاً اسکن شده)
3. Add Single IP ← افزودن دستی IP یا CIDR
4. Live IPs List ← نمایش IPهای زنده
5. Archive View ← مشاهده آرشیو کامل نتایج
6. Archive Search ← جستجو در آرشیو
7. Extracted Domains ← نمایش دامنههای استخراج شده از SSL
8. Sort IPs List ← مرتبسازی فایل ips.txt
9. Sort Live IPs ← مرتبسازی لیست IPهای زنده
10. Sort Archive ← مرتبسازی فایل آرشیو
11. Add from GeoIP ← استخراج IP از geoip.dat (بر اساس کشور)
12. Help ← راهنما
0. Exit
============================================================
NORMAL IP SCAN - Select Scan Method
============================================================
1. Fast Scan - Ping → nslookup → Port 443 SSL
2. Deep Scan - Multiple ports (80,443,8080,8443)
3. Fake SNI Scan - Scan with custom SNI
0. Back to Main Menu
============================================================
- Python 3.7 یا بالاتر
- اتصال به اینترنت (برای اسکن و دانلود فایلها)
- کلون کردن مخزن
git clone https://github.com/your-username/ip-scanner.git
cd ip-scanner- نصب کتابخانههای مورد نیاز
pip install requests- اجرای برنامه
python ip_main.py| فایل | توضیح |
|---|---|
ip_main.py |
نقطه ورودی برنامه |
ip_ui.py |
رابط کاربری اصلی |
ip_scanner_core.py |
هسته اصلی اسکنر چندنخی |
ip_storage.py |
مدیریت ذخیرهسازی و بافر |
geoip_parser.py |
پارسر فایل geoip.dat |
x509_parser.py |
پارسر گواهی SSL (ASN.1 DER - بدون وابستگی) |
utils/ |
ابزارهای کمکی (شبکه، SSL، CIDR) |
scanners/ |
پیادهسازی روشهای مختلف اسکن |
ui_components/ |
کامپوننتهای رابط کاربری |
| فایل | توضیح |
|---|---|
ips.txt |
لیست IPها و CIDRها (یک خط یک آیپی یا رنج) |
ip_archive.csv |
آرشیو نتایج اسکن |
LiveIPs.txt |
IPهای زنده به همراه پورتها و دامنهها |
extracted_domains.txt |
دامنههای استخراج شده از گواهی SSL |
geoip.dat |
فایل GeoIP (اختیاری – قابل دانلود از منو) |
در فایل ips.txt میتوانید محدودههای CIDR را وارد کنید:
8.8.8.8
4.4.4.4
45.115.42.0/23
171.22.0.0/16همچنین از منوی گزینه ۱۱ میتوانید بر اساس کد کشور، محدودههای IP را استخراج کنید:
Enter country code: US ← استخراج تمام IPهای متعلق به آمریکا
Enter country code: CN ← استخراج تمام IPهای متعلق به چین
Enter country code: IR ← استخراج تمام IPهای متعلق به ایرانUS,CN,RU,DE,GB,FRJP,KR,BR,IN,CA,AU
| کلید | عملیات |
|---|---|
P |
توقف موقت (Pause) |
R |
ادامه اسکن (Resume) |
S |
توقف کامل و ذخیره نتایج (Stop) |
| کلید | عملیات |
|---|---|
N |
صفحه بعدی |
P |
صفحه قبلی |
H |
صفحه اول |
E |
صفحه آخر |
Q |
خروج |
- استفاده از
threadingوqueueبرای مدیریت همزمان درخواستها - قابلیت تنظیم تعداد تردها (پیشفرض ۲۰)
- تایماوت قابل تنظیم برای هر درخواست (پیشفرض ۳ ثانیه)
Ping → nslookup → Port 443 SSL → استخراج دامنه
فقط در صورت پاسخ پینگ، ادامه میدهد. مناسب برای اسکن سریع.
Ping (ignore) → Check 80,443,8080,8443 → nslookup → SSL extraction
حتی اگر پینگ جواب ندهد، پورتها را بررسی میکند. مناسب برای اسکن عمیق.
Ping → Check ports with custom SNI → SSL extraction with fake SNI
با SNI جعلی به سرور متصل میشود. مناسب برای دور زدن فیلترینگ مبتنی بر SNI.
- استفاده از پارسر ASN.1 DER سفارشی (بدون وابستگی به OpenSSL)
- استخراج
CN(Common Name) وSAN(Subject Alternative Names) - ذخیره خودکار دامنهها در
extracted_domains.txt
- تبدیل خودکار
45.115.42.0/23به لیست IPها - اعتبارسنجی فرمت CIDR
- بافر (Buffer) – ذخیره نتایج در بافر ۱۰۰ تایی برای کاهش I/O
- کش (Cache) – ذخیره IPهای قبلاً اسکن شده در حافظه
- درخواست مستقیم سوکت – عدم استفاده از کتابخانههای سنگین
هنگام شروع اسکن از کاربر خواسته میشود:
- Timeout – زمان انتظار برای پاسخ سرور (پیشفرض ۳ ثانیه)
- Workers – تعداد تردهای همزمان (پیشفرض ۲۰)
در geoip_parser.py به دیکشنری builtin_ranges اضافه کنید:
'IR': ['5.22.0.0/16', '31.2.0.0/16', '37.32.0.0/16', ...]در ip_storage.py خط زیر را تغییر دهید:
self._batch_size = 200 # ذخیره هر ۲۰۰ نتیجه یکبار| کتابخانه | کاربرد |
|---|---|
requests |
بررسی پاسخ HTTP (اختیاری – قابل حذف) |
threading |
مدیریت تردها (built-in) |
queue |
صف IPها (built-in) |
socket |
اتصالات سطح پایین (built-in) |
ssl |
اتصالات SSL/TLS (built-in) |
ipaddress |
کار با CIDRها (built-in) |
csv |
ذخیرهسازی نتایج (built-in) |
از آنجایی که این پروژه توسط هوش مصنوعی تولید شده است، اما هرگونه گزارش باگ، پیشنهاد ویژگی یا Pull Request با استقبال مواجه میشود.
- فایل لاگ (
ip_archive.csv) را بررسی کنید - اطمینان حاصل کنید فایل
geoip.datوجود دارد یا از منو دانلود شده - خطای دقیق را همراه با مراحل بازتولید گزارش دهید
این پروژه تحت مجوز MIT منتشر شده است. استفاده آزاد، تغییر و توزیع با ذکر منبع مجاز است.
| ویژگی | توضیح |
|---|---|
| ماژولار | هر بخش در فایل جداگانه با مسئولیت مشخص |
| سه روش اسکن | Fast, Deep, Fake SNI |
| پشتیبانی از CIDR | اسکن محدودههای کامل IP |
| استخراج SSL | استخراج دامنه از گواهیها |
| پشتیبانی از GeoIP | استخراج IP بر اساس کشور |
| بهینه | بافر، کش و تایماوت هوشمند |
| کاربرپسند | منوی تعاملی و کنترلهای صفحه کلید |
| مستقل | کمترین وابستگی به کتابخانههای خارجی |
برای تست برنامه میتوانید از IPهای زیر استفاده کنید:
8.8.8.8
4.4.4.4
1.1.1.1
45.115.42.0/23سپس گزینه 1. Normal IP Scan و روش 1. Fast Scan را انتخاب کنید. نتایج در LiveIPs.txt و ip_archive.csv ذخیره میشوند.
برای تست روش Fake SNI، SNI زیر را وارد کنید:
www.google.com
این روش به شما امکان میدهد سرورهایی که بر اساس SNI فیلتر شدهاند را شناسایی کنید.
س: آیا برای اجرا نیاز به فایل geoip.dat دارم؟
ج: خیر. برنامه از لیست داخلی (Built-in) برای کدهای کشور رایج استفاده میکند. اما برای دقت بالاتر، توصیه میشود geoip.dat را از منوی گزینه ۱۱ دانلود کنید.
س: چرا برخی IPها با تایماوت بالا پاسخ میدهند؟
ج: این مشکل به دلیل اختلالات شبکه یا مسیریابی در ایران است. میتوانید تعداد تردها را کاهش دهید یا تایماوت را افزایش دهید.
س: تفاوت Fast Scan و Deep Scan چیست؟
ج: Fast Scan فقط در صورت پاسخ پینگ ادامه میدهد و فقط پورت 443 را بررسی میکند. Deep Scan حتی بدون پاسخ پینگ، پورتهای 80، 443، 8080 و 8443 را بررسی میکند.
س: Fake SNI Scan چه کاربردی دارد؟
ج: برخی سرورها درخواستها را بر اساس SNI (Server Name Indication) فیلتر میکنند. با استفاده از SNI جعلی میتوانید این فیلترینگ را دور بزنید.
س: چگونه IPهای تکراری را حذف کنم؟
ج: از منوی گزینه 8. Sort IPs List استفاده کنید که خودکار تکراریها را حذف میکند.
س: دامنههای استخراج شده از SSL کجا ذخیره میشوند؟
ج: در فایل extracted_domains.txt. این دامنهها میتوانند برای اسکن بعدی به فایل domains.txt پروژه Domain Scanner اضافه شوند.
دامنههای استخراج شده از SSL در فایل extracted_domains.txt ذخیره میشوند. میتوانید این دامنهها را به فایل domains.txt پروژه Domain Scanner اضافه کنید:
cat extracted_domains.txt >> ../DomainScanner/domains.txt- ایجاد Issue در گیتهاب
- ارسال ایمیل (در صورت وجود)
IP Scanner
توسعه یافته توسط هوش مصنوعی (AI Assistant)
با ❤️ برای جامعه برنامهنویسان ایران