Commit graph

35 commits

Author SHA1 Message Date
Kirill Minovsky
1192c0dba5 bump version to 3.2.2 2026-04-24 15:41:54 +03:00
Kirill Minovsky
2e199e10ac bump version to 3.2.1 2026-04-24 15:34:47 +03:00
Kirill Minovsky
795f91f648 bump version to 3.2.0 2026-04-24 15:12:58 +03:00
Kirill Minovsky
8463fa078d feat(dns): Added DNS availability test and updated UI
- Implemented `check_dns_availability` to measure DNS server latency
- Added `DNS_AVAILABILITY_SERVERS` and `DNS_AVAILABILITY_DOMAINS` to config
- Updated `_format_summary` to include DNS availability statistics
- Integrated DNS availability results into the CLI menu (Test 2)
- Added DoH wire-format (RFC 8484) support for improved probe reliability
- Enhanced `_parse_dns_response` for better error handling and parsing
- Refactored `run_domains_test` to better classify ISP, local, and Fake-IP
2026-04-24 15:09:12 +03:00
Kirill Minovsky
eb5007d68b bump version to 3.1.0 2026-03-16 02:35:16 +03:00
Kirill Minovsky
a532b71691 feat(telegram-scanner): Implement Telegram connectivity test
- Implemented new `core/telegram_scanner.py` module
- Added functionality to check Telegram DC reachability via TCP
- Included tests for Telegram download and upload speed and stalls
- Used `httpx` for HTTP-based download and upload tests
- Provided live status updates during Telegram test with Rich
- Integrated Telegram test into `dpi_detector.py` main loop
- Updated test selection UI to include Telegram test (option 5)
- Added summary reporting for Telegram test results (DL, UL, DC)
2026-03-16 02:34:41 +03:00
Kirill Minovsky
c2f66159ed bump to version 3.0.1 2026-03-14 01:22:35 +03:00
Kirill Minovsky
c06aa7fede feat(cli): Add legend display option
- Implement option "5" to display the legend
- Add logic to show legend and exit if "5" is the sole selection
- Introduce `run_legend` and `only_legend` control flags
2026-03-14 01:20:07 +03:00
Kirill Minovsky
48389e810d feat(cli): Enhance SNI whitelist test and menu interaction
- Parallelize SNI whitelist probing for all detected ASes
- Collect and display up to 3 working SNIs per blocked AS
- Improve feedback for SNI test results, including bans/rate-limits
- Allow "show legend" option (5) to be combined with other tests
- Remove interactive legend display from main loop for smoother flow
- Simplify DNS check conditions by removing redundant config check
2026-03-14 00:44:51 +03:00
Kirill Minovsky
35fccf25f8 feat(cli): Revamp status legend and optimize SNI finder UX
- Added a new menu option `5` to display the status legend.
- Implemented logic to show the legend when selected as a standalone action.
- Revamped the `print_legend()` function for better clarity.
- Categorized status entries and added more detailed descriptions.
- Introduced new status terms for various network and protocol errors.
- Removed `rich.Live` usage for `run_wl_sni` progress display.
- Switched to `sys.stderr` with `\r` for `run_wl_sni` progress updates.
- Modified `run_wl_sni` to print results per AS immediately.
- Optimized SNI search within batches for the first "OK" result.
2026-03-13 23:58:13 +03:00
Kirill Minovsky
46d07d4c40 bump version to 3.0.0 2026-03-13 23:23:44 +03:00
Kirill Minovsky
8445ed7c49 feat(cli): Implement command-line arguments for script 2026-03-13 23:22:31 +03:00
Kirill Minovsky
b5b7b88077 feat(proxy): Add HTTPX proxy configuration
- Ensure all HTTPX clients and transports respect config.PROXY_URL
- Explicitly set trust_env=False to prevent unexpected proxy discovery
- Apply proxy settings to DoH DNS queries
- Apply proxy settings to TLS scanner connections
- Apply proxy settings to TCP/16 scanner probes
- Apply proxy settings to GitHub API calls for version checks
2026-03-13 22:44:42 +03:00
Kirill Minovsky
f6437ff6bf feat(config): Migrate app config to YAML 2026-03-13 22:42:51 +03:00
Kirill Minovsky
e80a328c60 bump version to 2.1.0 2026-03-04 02:36:09 +03:00
Kirill Minovsky
ba7a374645 feat(dns): Enhance DNS integrity checks
- Refactor `check_dns_integrity` for improved robustness and accuracy
- Implement a two-phase DNS server probing strategy
- Add `_probe_udp_single` and `_probe_doh_single` for quick server checks
- Rename `_probe_udp_server` to `_probe_udp_all` and `_probe_doh_server` to `_probe_doh_all`
- Improve logging and reporting of DNS server availability
- Introduce `doh_unavailable` status to indicate DoH server blocking
- Update summary output to reflect DoH availability status
- Add `asyncio.wait_for` to `collect_stub_ips_silently` for timeout handling
- Expand `DNS_CHECK_DOMAINS` list with additional test domains
- Add commented section for domains returning NXDOMAIN
2026-03-03 23:53:10 +03:00
Kirill Minovsky
7d08bfe689 bump version to 2.0.1 2026-03-02 02:50:26 +03:00
Kirill Minovsky
c1b159f852 feat(tests): Add whitelist SNI test and refine domain checks
- Introduce new "Search for whitelisted SNI for ASN" (Test 4).
- Load SNI whitelist from `whitelist_sni.txt`.
- Update test selection UI and logic to include Test 4.
- Remove IPv6 resolution and related logic from domain checks.
- Simplify `cli/runners._resolve_worker` by dropping IPv6.
- Adjust domain test output table and summary after IPv6 removal.
- Update `cli/ui.format_domain_details` to reflect IPv6 removal.
2026-03-02 00:55:06 +03:00
Kirill Minovsky
6b6033d5d5 refactor(files): Refactor file paths and error exit mechanism
- Replace os.path with pathlib.Path for improved path manipulation.
- Rename get_exe_dir to get_base_dir for clarity and broader applicability.
- Introduce wait_and_exit utility for user-friendly program termination on errors.
- Integrate wait_and_exit into config.py and file loading functions.
- Enhance error messages for missing resource files.
2026-02-28 22:03:04 +03:00
Kirill Minovsky
6e0c4f46d5 fix for py 3.8 support 2026-02-28 03:47:01 +03:00
Kirill Minovsky
2cdc608a7b feat(versioning): Revamp version update notification
- Bump CURRENT_VERSION to 2.0.
- Implement is_newer() for semantic version comparison.
- Defer version update notification until scan completion.
- Display available new version with a link to releases.
- Improve prompt interactivity using sys.stdout.write.
- Refine console output for DNS, Domains, and TCP results.
- Shorten blocked domain/TCP status messages.
2026-02-28 02:36:13 +03:00
Kirill Minovsky
d044b2afd1 dpi detector 2.0 init 2026-02-28 02:02:46 +03:00
Kirill Minovsky
2a52f239dc bump version to 1.3 2026-02-20 02:02:01 +03:00
Kirill Minovsky
0f9bbe1cab feat(core): Enhance DNS checks and interactive testing
- Refactor DNS configuration to support multiple UDP and DoH servers.
- Revamp DNS integrity check logic for improved accuracy and diagnostics.
- Introduce interactive test selection for a better user experience.
- Implement a loop to allow repeating tests without restarting the app.
- Add an option to save test results to a file.
- Improve resource path detection for PyInstaller bundles and script execution.
- Enhance HTTP and TCP error handling with more specific timeout and connection errors.
- Modularize test phases into dedicated asynchronous functions.
- Display a consolidated summary panel after all selected tests.
2026-02-20 01:49:50 +03:00
Kirill Minovsky
f6fe43887c refactor(scanner): Implement horizontal phased domain scanning
- Split monolithic `worker` function into specialized phases.
- Create `resolve_worker` for initial DNS resolution and entry setup.
- Add `tls_phase_worker` to handle TLS 1.2 and TLS 1.3 checks.
- Introduce `http_phase_worker` for HTTP injection detection.
- Implement `_build_row` to format the final table output.
- Restructure the main scanning loop to execute checks horizontally:
- All domains for DNS resolution first.
- All domains for TLS 1.3 next.
- All domains for TLS 1.2 next.
- All domains for HTTP injection last.
- Add per-phase progress indicators for better user feedback.
- Use a dictionary `entry` to store intermediate domain results.
- Ensure stable domain order across phases by sorting entries.
2026-02-19 23:35:40 +03:00
Kirill Minovsky
4a74b81db0 feat(detector): Enhance async checks and add ASN display
- Refactored asyncio.gather to individual await calls for better control
- Implemented explicit try...except blocks for each async check
- Introduced asyncio.sleep(0.3) delays between TCP/TLS and HTTP checks
- Added ASN (Autonomous System Number) to the output data and display table
- Adjusted column indexing in result processing and table rendering
- Commented out specific TLS 1.3 unsupported detection logic
2026-02-19 23:26:13 +03:00
Kirill Minovsky
1000b51783 refactor(output): Enhance DNS detection messages and result sorting
- Enhance DNS interception output with new warnings
- Update DoH recommendation, clarify port, and add ignore note
- Remove old, redundant DoH/DNS explanation notes
- Renumber DNS check sections (timeouts, full failure)
- Update application header to DPI Detector v1.2 and DNS test
- Refine TCP result grouping logic for provider names
- Improve TCP result sorting by incorporating numeric IDs
2026-02-17 23:01:23 +03:00
Kirill Minovsky
885bec8778 refactor(tcp-results): Improve sorting logic for provider display
- Implement grouping mechanism for providers based on name
- Sort TCP results by provider count in descending order
- Apply secondary sorting by group name and full provider name
- Remove fixed width for TCP table 'ID', 'Provider', 'Status' columns
2026-02-17 22:46:36 +03:00
Kirill Minovsky
dc34a03714 feat(dns): Implement comprehensive DNS integrity checks
- Added a new module for comprehensive DNS integrity checks.
- Implemented DNS resolution via Google DNS (UDP/53) and DoH (HTTPS/443).
- Compares DNS and DoH results to detect provider DNS interception.
- Identifies DNS spoofing by detecting common stub IP addresses.
- Integrated DNS spoofing detection into domain and TCP checks.
- Displays detailed DNS check results and user recommendations.
- Improved DNS error classification for better accuracy.
- Refined SSL/TLS error classification, including 'bad key share'.
- Added helper functions for IP resolution and hostname cleaning.
2026-02-15 21:04:29 +03:00
Kirill Minovsky
ec9532227a fix(file-handling): Improve resource loading and error handling
- Update dependency installation instructions
- Refactor resource path resolution for better reliability
- Add robust checks for missing domains.txt and tcp_16_20_targets.json
- Implement critical error exit on missing or invalid resource files
- Enhance error messages for file loading and JSON parsing failures
2026-02-15 16:05:23 +03:00
Kirill Minovsky
58b360480f feat(error-handling): Add debug mode and improve TLS error classification
- Implemented a global `DEBUG_MODE` toggle and `DEBUG_DOMAINS` filter.
- Added `debug_log` for structured, conditional logging.
- Introduced `debug_exception` for detailed exception analysis including type,
- attributes, chain, and traceback.
- Refined `_classify_ssl_error` with prioritized rules for DPI, MITM, and
- version blocking.
- Updated `_classify_connect_error` to include `alert_protocol_version`.
- Integrated debug logging into `check_tcp_tls_single` for better diagnostics.
- Enhanced `main` function to display a debug info panel and critical error
- tracebacks.
- Improved TLS 1.3 unsupported logic to distinguish from actual DPI blocks
- when TLS 1.2 is functional.
- Updated status legend for clarity.
2026-02-14 17:15:54 +03:00
Kirill Minovsky
34635f1c4a fix import os 2026-02-14 02:45:08 +03:00
Kirill Minovsky
e97a7b4be6 feat(resource): Enhance resource loading for packaged apps
- Implemented get_resource_path function
- Ensured resource files are found correctly in PyInstaller bundles
- Updated load_domains to use dynamic resource path
- Updated load_tcp_targets to use dynamic resource path
2026-02-14 02:44:12 +03:00
Kirill Minovsky
299698ad2a Update tcp16-20 real info 2026-02-14 02:32:45 +03:00
Kirill Minovsky
12190b3939 init commit 2026-02-14 02:21:23 +03:00