gpt4 book ai didi

android - 带有 MITM 的强制门户页面

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:37:50 27 4
gpt4 key购买 nike

我有一台微型计算机,用于在客户登录 Wi-Fi 网络时向他们显示一个门户页面。

问题是,由于某种原因,他们无法从手机/PC 上获得通常的弹出窗口,而当我对路由器执行相同的操作时,它会正常工作。

我正在通过将所有 dns 请求传输到本地网络(即 10.0.0.2)来完成整个过程。

当转到浏览器时,他们会获得门户页面,但缺少行为。 (连接到 Wi-Fi 后会自动弹出提示您需要登录网络)。

在本地 Apache 上,我有一个简单的 index.php 文件,状态代码为 401(未授权)。


微型计算机通过以太网端口连接到路由器,我可以完全控制路由器,但我希望从微型计算机本身管理强制网络门户,这就是为什么我不使用基于路由器的原因强制门户。

塔尔。

最佳答案

我不是很清楚你的问题。

您使用的是手机/PC 上的浏览​​器还是应用程序?您能否提供预期行为的屏幕截图?

我会尝试根据我认为您的问题来回答:对于浏览器,您可以使用 DNS 或 ICMP 将客户端重定向到您的 Captive Portal。 ICMP 是第 3 层协议(protocol),某些平台(如 Android)可能会自动向用户触发 native 通知,例如“嘿,您需要登录”。但 DNS 重定向不会触发此操作,它需要用户在连接到网络后与浏览器进行交互。他们会打开浏览器,尝试访问 stack overflow.com 并重定向到您的强制门户。

此外,对于 Android 上的应用程序,您必须检查 URL 连接。这是一个取自 AOSP 的示例:

private static final String mWalledGardenUrl = "http://clients3.google.com/generate_204";
private static final int WALLED_GARDEN_SOCKET_TIMEOUT_MS = 10000;

private boolean isWalledGardenConnection() {
HttpURLConnection urlConnection = null;
try {
URL url = new URL(mWalledGardenUrl); // "http://clients3.google.com/generate_204"
urlConnection = (HttpURLConnection) url.openConnection();
urlConnection.setInstanceFollowRedirects(false);
urlConnection.setConnectTimeout(WALLED_GARDEN_SOCKET_TIMEOUT_MS);
urlConnection.setReadTimeout(WALLED_GARDEN_SOCKET_TIMEOUT_MS);
urlConnection.setUseCaches(false);
urlConnection.getInputStream();
// We got a valid response, but not from the real google
return urlConnection.getResponseCode() != 204;
} catch (IOException e) {
if (DBG) {
log("Walled garden check - probably not a portal: exception "
+ e);
}
return false;
} finally {
if (urlConnection != null) {
urlConnection.disconnect();
}
}
}

关于android - 带有 MITM 的强制门户页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30576319/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com