You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Zero-config offline mode, platform-aware binary finder, and bug fixes
- Auto-load bundled local resolvers when no -i flag (fully offline)
- Auto-default output to results.json when no -o flag
- Auto-generate _ips.txt plain IP list alongside JSON results
- Add platformVariants() to accept release binary names without renaming
(e.g. dnstt-client-linux, dnstt-client.exe found automatically)
- Use IP-based DoH URLs in preflight to bypass DNS blocking
- Fix fetch auto-fallback when online download returns empty
- Fix exec_unix.go directory exclusion in isExecutable
- Fix TUI writing empty _ips.txt when zero resolvers pass
- Cap worker channel buffer to prevent OOM with large inputs
- Skip resolve step when --domain is set (tunnel domains have no A record)
- Update README.md and GUIDE.md with all new features and flags
# گذاشتن کنار findns (سادهترین روش — نیازی به تغییر نام نیست):
101
+
mv dnstt-client-linux /path/to/findns/
103
102
104
103
# یا گذاشتن در PATH:
105
-
sudo mv dnstt-client /usr/local/bin/
104
+
sudo mv dnstt-client-linux /usr/local/bin/
106
105
```
107
106
108
107
<divdir="rtl">
@@ -335,7 +334,9 @@ go build -o findns.exe ./cmd
335
334
336
335
## 3. دریافت لیست Resolverها (fetch)
337
336
338
-
قبل از اسکن، باید لیست resolver داشته باشید. دستور fetch به صورت خودکار از منابع عمومی دانلود میکند.
337
+
دستور fetch به صورت خودکار از منابع عمومی دانلود میکند. اگر دانلود شکست بخورد (مثلاً GitHub فیلتر باشد)، به صورت خودکار از resolverهای داخلی استفاده میکند.
338
+
339
+
> **نکته:** اگر فقط میخواهید اسکن کنید، دیگر نیازی به `fetch` نیست! `findns scan --domain t.example.com` بدون `-i` خودکار resolverهای ایرانی داخلی را بارگذاری میکند.
این حالت بررسی میکند resolver زنده، فعال و بدون هایجک است. (برای رد کردن nxdomain از `--skip-nxdomain` استفاده کنید)
719
720
721
+
> **نکته:**`-i` و `-o` اختیاری هستند. بدون `-i` از 7,800+ resolver ایرانی داخلی استفاده میشود. بدون `-o` نتایج در `results.json` ذخیره میشود. فایل `results_ips.txt` هم خودکار ساخته میشود.
> **نکته مهم:** وقتی `--domain` تنظیم شود، مرحله `resolve` ساده (رکورد A برای google.com) رد میشود — دامنههای تانل رکورد A ندارند. findns مستقیم به `resolve/tunnel` (بررسی NS delegation) میرود.
731
736
732
-
> **نکته:**برای اضافه کردن تست EDNS payload size از فلگ `--edns` استفاده کنید. با این فلگ: `ping -> resolve -> nxdomain -> edns -> resolve/tunnel`
737
+
> برای اضافه کردن تست EDNS payload size از فلگ `--edns` استفاده کنید. با این فلگ: `ping -> nxdomain -> edns -> resolve/tunnel`
نیازمند: `dnstt-client` و `curl` در PATH. این مرحله واقعاً dnstt-client را اجرا میکند، یک تانل SOCKS میسازد و با curl از طریق آن تانل یک صفحه وب را باز میکند.
- pubkey باید دقیقاً همان کلیدی باشد که سرور DNSTT با آن اجرا شده
1193
1201
- اگر pubkey اشتباه باشد، dnstt-client بدون پیام خطا فیل میشود
1194
1202
1195
-
**۶. تست دستی:**
1203
+
**۶. preflight e2e و DoH fallback:**
1204
+
1205
+
findns قبل از شروع تست e2e، یک "preflight" انجام میدهد — با یک resolver عمومی (Google, Cloudflare و ...) تست میکند تانل کار میکند. اگر DNS معمولی (UDP) مسدود باشد، به صورت خودکار از DoH fallback (آدرسهای IP-based مثل `https://8.8.8.8/dns-query`) استفاده میکند. این یعنی حتی اگر تمام DNS مسدود باشد، preflight e2e همچنان کار میکند.
1206
+
1207
+
**۷. تست دستی:**
1196
1208
1197
1209
</div>
1198
1210
@@ -1210,7 +1222,7 @@ kill %1
1210
1222
1211
1223
<divdir="rtl">
1212
1224
1213
-
**۷. پورتها در تداخل:**
1225
+
**۸. پورتها در تداخل:**
1214
1226
- findns از پورتهای 30000 به بالا برای تست استفاده میکند
1215
1227
- اگر سرویس دیگری این پورتها را گرفته، تست فیل میشود
1216
1228
- با `--port-base` پورت شروع را تغییر دهید (فقط در chain)
-**passed:** لیست resolverهای موفق با متریکها (مرتب شده بر اساس عملکرد)
1421
1434
-**failed:** لیست resolverهای ناموفق
1422
1435
1436
+
**فایل `_ips.txt`:** کنار فایل JSON، یک فایل `_ips.txt` هم خودکار ساخته میشود (مثلاً `results_ips.txt`). این فایل فقط شامل آیپیهای موفق است (هر خط یک آیپی) — برای استفاده مستقیم در اسکریپتها و ابزارهای دیگر.
1437
+
1423
1438
---
1424
1439
1425
1440
## 9. سناریوهای عملی
@@ -1651,4 +1666,14 @@ ping نیاز به دسترسی خاص دارد: `sudo findns scan ...` یا ا
1651
1666
1652
1667
> پیشنهاد: اول UDP امتحان کنید. اگر کار نکرد، DoH بزنید.
1653
1668
1669
+
**نکته 11: حالت آفلاین (بدون اینترنت)**
1670
+
findns به صورت کامل آفلاین کار میکند:
1671
+
- بدون `-i`: از 7,800+ resolver ایرانی داخلی استفاده میشود
1672
+
- بدون `-o`: نتایج در `results.json` ذخیره میشود
1673
+
- فایل `_ips.txt` خودکار ساخته میشود
1674
+
-`fetch` اگر دانلود شکست بخورد، خودکار از لیست داخلی استفاده میکند
1675
+
- تست e2e preflight از DoH fallback (IP-based) استفاده میکند — حتی اگر DNS مسدود باشد
Results are saved as JSON. The `passed` array contains resolvers that survived all steps, sorted by performance:
220
+
Results are saved as JSON with an auto-generated `_ips.txt` companion file. The `passed` array contains resolvers that survived all steps, sorted by performance:
203
221
204
222
```json
205
223
{
@@ -237,11 +255,15 @@ A guided terminal interface for the full scan workflow. No flags or files needed
237
255
Automatically chains the right scan steps based on your flags. This is the **recommended** way to use the scanner.
> When `--domain` is set, the basic `resolve` step (A record for google.com) is skipped — tunnel domains have no A record, so findns goes straight to `resolve/tunnel` (NS delegation check).
|`--output-ips`|| Also write a plain IP list (one per line) | auto when `-o` is set |
481
505
|`--timeout`|`-t`| Timeout per attempt (seconds) | 3 |
482
506
|`--count`|`-c`| Attempts per IP/URL | 3 |
483
507
|`--workers`|| Concurrent workers | 50 |
@@ -610,6 +634,8 @@ MIT
610
634
| 📋 **خروجی JSON**| خروجی هر اسکن ورودی اسکن بعدی میشود |
611
635
| 🌐 **ورودی CIDR**| رنج آیپی مثل `185.51.200.0/24` را میخواند و به صورت خودکار باز میکند |
612
636
| 🖥️ **رابط کاربری ترمینال (TUI)**| رابط تعاملی کامل — بدون نیاز به حفظ فلگها |
637
+
| 🔌 **کاملاً آفلاین**| بدون تنظیم: resolverهای داخلی خودکار بارگذاری میشوند، نیازی به `-i` یا `-o` نیست |
638
+
| 🛡️ **DoH Preflight**| تست e2e از DoH fallback (آدرسهای IP-based) برای دور زدن مسدودسازی DNS استفاده میکند |
613
639
614
640
---
615
641
@@ -782,6 +808,24 @@ findns tui
782
808
783
809
یک رابط کاربری ترمینال کامل باز میشود که شما را قدم به قدم راهنمایی میکند: انتخاب حالت (UDP/DoH)، انتخاب لیست ریزالور، تنظیمات اسکن، و مشاهده نتایج. نیازی به فلگ نیست — فقط دنبال کنید.
784
810
811
+
### 0️⃣ اسکن آفلاین بدون تنظیم (سادهترین)
812
+
813
+
بدون نیاز به هیچ فلگ اضافه — findns به صورت خودکار 7,800+ resolver ایرانی داخلی را بارگذاری میکند و نتایج را در `results.json` ذخیره میکند:
> وقتی `--domain` تنظیم شود، مرحله `resolve` ساده (رکورد A برای google.com) رد میشود — دامنههای تانل رکورد A ندارند، بنابراین findns مستقیم به `resolve/tunnel` (بررسی NS delegation) میرود.
873
921
874
922
| فلگ | توضیح | پیشفرض |
875
923
|-----|-------|---------|
@@ -883,6 +931,7 @@ findns tui
883
931
|`--skip-ping`| رد کردن مرحله ping |`false`|
884
932
|`--skip-nxdomain`| رد کردن بررسی هایجک |`false`|
885
933
|`--top`| تعداد نتایج برتر برای نمایش |`10`|
934
+
|`--output-ips`| خروجی لیست آیپی ساده کنار JSON | خودکار |
0 commit comments