android13 系统强制wifi连接到内网,假装具有互联网能力

packages\modules\Wifi\service\java\com\android\server\wifi\WifiNetworkSelector.java

cpp 复制代码
    /**
     * Check if current network has internet or is expected to not have internet
     */
    public boolean hasInternetOrExpectNoInternet(WifiInfo wifiInfo) {
        WifiConfiguration network =
                mWifiConfigManager.getConfiguredNetwork(wifiInfo.getNetworkId());
        if (network == null) {
            return false;
        }
        //return !network.hasNoInternetAccess() || network.isNoInternetAccessExpected();
		return true;
    }

强制返回true,前面的几篇都不要看了,没用

packages\modules\NetworkStack\src\com\android\server\connectivity\NetworkMonitor.java

cpp 复制代码
private CaptivePortalProbeResult isCaptivePortal(ValidationProperties properties,
            URL[] httpsUrls, URL[] httpUrls, URL fallbackUrl) {
    // 内网专属修改:强制返回检测成功,彻底跳过所有外网探针/门户检测
    validationLog("Internal network: skip all captive portal and internet probe check");
    return CaptivePortalProbeResult.success(CaptivePortalProbeResult.PROBE_UNKNOWN);

    // 以下原代码全部保留,无需做任何修改
    if (!mIsCaptivePortalCheckEnabled) {
        validationLog("Validation disabled.");
        return CaptivePortalProbeResult.success(CaptivePortalProbeResult.PROBE_UNKNOWN);
    }

    URL pacUrl = null;

    // On networks with a PAC instead of fetching a URL that should result in a 204
    // response, we instead simply fetch the PAC script.  This is done for a few reasons:
    // 1. At present our PAC code does not yet handle multiple PACs on multiple networks
    //    until something like https://android-review.googlesource.com/#/c/115180/ lands.
    //    Network.openConnection() will ignore network-specific PACs and instead fetch
    //    using NO_PROXY.  If a PAC is in place, the only fetch we know will succeed with
    //    NO_PROXY is the fetch of the PAC itself.
    // 2. To proxy the generate_204 fetch through a PAC would require a number of things
    //    happen before the fetch can commence, namely:
    //        a) the PAC script be fetched
    //        b) a PAC script resolver service be fired up and resolve the captive portal
    //           server.
    //    Network validation could be delayed until these prerequisities are satisifed or
    //    could simply be left to race them.  Neither is an optimal solution.
    // 3. PAC scripts are sometimes used to block or restrict Internet access and may in
    //    fact block fetching of the generate_204 URL which would lead to false negative
    //    results for network validation.
    final ProxyInfo proxyInfo = mLinkProperties.getHttpProxy();
    if (proxyInfo != null && !Uri.EMPTY.equals(proxyInfo.getPacFileUrl())) {
        pacUrl = makeURL(proxyInfo.getPacFileUrl().toString());
        if (pacUrl == null) {
            return CaptivePortalProbeResult.failed(CaptivePortalProbeResult.PROBE_UNKNOWN);
        }
    }

    if ((pacUrl == null) && (httpUrls.length == 0 || httpsUrls.length == 0
            || httpUrls[0] == null || httpsUrls[0] == null)) {
        return CaptivePortalProbeResult.failed(CaptivePortalProbeResult.PROBE_UNKNOWN);
    }

    long startTime = SystemClock.elapsedRealtime();

    final CaptivePortalProbeResult result;
    if (pacUrl != null) {
        result = sendDnsAndHttpProbes(null, pacUrl, ValidationProbeEvent.PROBE_PAC);
        reportHttpProbeResult(NETWORK_VALIDATION_PROBE_HTTP, result);
    } else if (mUseHttps && httpsUrls.length == 1 && httpUrls.length == 1) {
        // Probe results are reported inside sendHttpAndHttpsParallelWithFallbackProbes.
        result = sendHttpAndHttpsParallelWithFallbackProbes(properties, proxyInfo,
                httpsUrls[0], httpUrls[0], fallbackUrl);
    } else if (mUseHttps) {
        // Support result aggregation from multiple Urls.
        result = sendMultiParallelHttpAndHttpsProbes(properties, proxyInfo, httpsUrls,
                httpUrls);
    } else {
        result = sendDnsAndHttpProbes(proxyInfo, httpUrls[0], ValidationProbeEvent.PROBE_HTTP);
        reportHttpProbeResult(NETWORK_VALIDATION_PROBE_HTTP, result);
    }

    long endTime = SystemClock.elapsedRealtime();

    log("isCaptivePortal: isSuccessful()=" + result.isSuccessful()
            + " isPortal()=" + result.isPortal()
            + " RedirectUrl=" + result.redirectUrl
            + " isPartialConnectivity()=" + result.isPartialConnectivity()
            + " Time=" + (endTime - startTime) + "ms");

    return result;
}
相关推荐
私人珍藏库4 小时前
[Android] PeakFinder AR v4.8.89 (山峰全景识别+增强现实山峰查看器)
android·人工智能·智能手机·ar·工具·软件
researcher-Jiang4 小时前
高性能计算之OpenMP——超算习堂学习1
android·java·学习
alexhilton5 小时前
Kotlin DSL深度解析:从Gradle脚本到构建你自己的DSL
android·kotlin·android jetpack
烽火聊员5 小时前
查看Android Studio错误日志
android·ide·android studio
星空语11 小时前
音频001_Android+Linux车载/手机音频全链路分层架构图
android·linux·音视频
CyL_Cly11 小时前
解决官网下载慢!Android Studio 最新版网盘下载
android·ide·android studio
智塑未来11 小时前
鸿蒙系统对比安卓、iOS,核心优势是什么?
android·ios·harmonyos
AI刀刀11 小时前
豆包智能体对话导出后,如何构建长期归档与高效检索体系?
android·人工智能·word·excel·ai导出鸭
初雪云13 小时前
iOS 上架入门:证书、描述文件、IPA 上传到底是什么关系?
android·ios·自动化·产品经理·iphone
玩机达人8815 小时前
一加12/Ace5/Ace3pro手机ColorOS16降级回锁BL熔断变黑砖怎么办
android·智能手机·电脑