想改善这个问题吗?更新问题,使其仅通过editing this post专注于一个问题。
20天前关闭。
我想创建一个俘虏门户,首先针对Windows热点,然后针对移动热点和所有wifi网络。因此,我想了解专属门户如何在幕后工作,然后如何用Java开发门户。我知道Java套接字编程
最佳答案
什么是专属门户?
当无线客户端无权访问网络资源时,将显示一个身份验证屏幕。认证页面称为强制门户登录。
可以通过两种方式在客户端设备上触发强制门户
DNS重定向
初始页面
DNS重定向就像简单的DNS劫持一样,其中所有用户DNS请求都被劫持并解析到强制门户登录页面。但是,在广泛使用HSTS标头实现之后,DNS重定向的成功率很低,无法为用户提供更好的服务。
而启动页面的工作方式略有不同。它还使用DNS重定向,但是它响应请求acc。操作系统诱使OS相信存在强制门户登录,并迫使OS自动向用户触发登录页面。
什么是启动页面?
当客户端设备连接到WiFi时,如果未经授权访问Internet,则会自动弹出一个屏幕以显示强制门户。
闪屏页面不仅绕过大多数网站上的HSTS实施,而且还使您可以灵活地显示操作系统特定的登录页面。
常规的强制门户和初始页面的唯一区别是,初始页面会自动拉出强制门户登录页面。鉴于基于DNS重定向的方法要求用户手动打开网站。
想象一下,如果用户仅使用移动应用程序,那么用户将如何知道他需要登录?如果您是黑客,则将失去受害者,因为该设备将在无法访问Internet时自动断开连接。因此,这为我们提供了一个更好,更灵活的选项,用于触发强制门户登录页面,即启动屏幕。
作为业务运营商,您可以向不同的客户端设备显示不同种类的服务,而作为攻击者,您可以自动识别受害者计算机并相应地提供有效负载。我将展示其症结所在,并根据您的创造力和要求保留实施方案。
不同的客户行为:
每个操作系统都有自己不同的检测Internet访问的方式。
机制基本上是这样的:
GET/POST http://foo.ir/bar.html
If bar.html == [expected content] > Open Internet
If bar.html != [expected content] > Captive Portal
If bar.html[status] != SUCCESS > No Network
如果没有强制网络门户,结果将与预期的一致,并且操作系统将知道可以完全访问Internet。
如果URL返回的结果不是预期的结果,则操作系统将检测到存在强制网络门户,并且需要进行身份验证才能完全访问Internet:在这种情况下,操作系统将自动打开启动页面。
所有客户端设备都使用上述策略来确定它们是否位于强制门户之后,但是URL可能会根据智能手机,平板电脑,笔记本电脑的特定型号以及特定的操作系统版本而有所不同。在下面,您可以找到每个模型联系的域列表,以检测强制门户。
每种设备,以及Android不同的制造商,其行为也各不相同。例如,查看this list:
xperia z5:
connectivitycheck.gstatic.com:80
clients3.google.com:80
---------------------
galaxy j3 2016:
172.217.21.14:80
connectivitycheck.android.com
---------------------
galaxy j7 2015:
172.16.98.10:80
connectivitycheck.gstatic.com:80
---------------------
galaxy note4:
nothing!
---------------------
ios 11:
captive.apple.com/hotspot-detect.html
---------------------
windows 10:
www.msftconnecttest.com
此列表显示了我在不同设备上的测试。但是,在这种情况下,您测试中的Android设备,Windows操作系统和iOS版本的不同版本会有所不同。
Source
关于java - 强制门户如何在后台运行,如何用Java编写门户以在Windows热点上使用? ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59777473/