捕获门户如何在后台工作,我如何用Java编写一个用于Windows热点的门户?

捕获门户如何在后台工作,我如何用Java编写一个用于Windows热点的门户?,java,network-programming,wifi,personal-hotspot,captivenetwork,Java,Network Programming,Wifi,Personal Hotspot,Captivenetwork,我想创建一个专属门户,首先用于Windows热点,然后用于移动热点和所有wifi网络。所以我想了解捕获式门户是如何在后台工作的,然后如何用Java开发一个。我知道Java套接字编程什么是捕获门户? 当无线客户端无权访问网络资源时,将显示一个身份验证屏幕。身份验证页面称为捕获门户登录 可以通过两种方式在客户端设备上触发捕获门户 DNS重定向 启动页 DNS重定向与简单的DNS劫持一样,所有用户DNS请求都被劫持并解析到捕获门户登录页面。但是,在广泛使用HSTS报头实现后,DNS重定向的成功率很低,

我想创建一个专属门户,首先用于Windows热点,然后用于移动热点和所有wifi网络。所以我想了解捕获式门户是如何在后台工作的,然后如何用Java开发一个。我知道Java套接字编程

什么是捕获门户? 当无线客户端无权访问网络资源时,将显示一个身份验证屏幕。身份验证页面称为捕获门户登录

可以通过两种方式在客户端设备上触发捕获门户

  • DNS重定向
  • 启动页
  • DNS重定向与简单的DNS劫持一样,所有用户DNS请求都被劫持并解析到捕获门户登录页面。但是,在广泛使用HSTS报头实现后,DNS重定向的成功率很低,无法为用户提供更好的服务

    然而,启动页面的工作方式略有不同。它也使用DNS重定向,但它会根据操作系统响应请求,这会欺骗O.S,使其相信有一个固定的门户登录,并迫使O.S自动触发用户的登录页面


    启动页面是什么? 当客户端设备连接到WiFi时,如果未经授权访问互联网,则会自动弹出一个屏幕以显示捕获门户

    启动页面不仅可以绕过大多数网站上的HSTS实现,还可以让您灵活地显示特定于O.S的登录页面


    常规捕获门户和初始页面的唯一区别是初始页面自动拉入捕获门户登录页面。然而,基于DNS重定向的方法需要用户手动打开网站

    想象一下,如果用户只使用移动应用程序,用户如何知道他需要登录?如果你是一名黑客,你将失去你的受害者,因为该设备将自动断开后,没有互联网接入。因此,这就为我们提供了一个更好、更灵活的选项,用于触发捕获门户登录页面,即启动屏幕

    作为业务运营商,您可以向不同的客户端设备显示不同类型的服务,而作为攻击者,您可以自动识别受害者机器并相应地提供有效负载。我将展示它的关键,并根据您的创造力和需求留下实现


    不同的客户行为: 每个操作系统都有自己不同的检测互联网接入的方法。
    机制基本上是这样的:

    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
    
    如果没有固定的门户,结果将与预期的结果相匹配,操作系统将知道可以完全访问互联网

    如果URL返回的结果不是预期的结果,那么操作系统将检测到有一个固定门户,需要继续进行身份验证才能完全访问Internet:在这种情况下,操作系统将自动打开启动页

    所有客户端设备都使用上述策略来确定它们是否位于捕获门户之后,但URL可能会因智能手机、平板电脑、笔记本电脑的特定型号以及特定的操作系统版本而异。在以下内容中,您可以找到每个模型为检测捕获门户而联系的域列表


    每个设备,也包括不同的制造商,都有不同的表现。例如,请看:

    此列表显示我在不同设备上的测试。但是,在这种情况下,不同版本的android设备、Windows操作系统和iOS版本在您的测试中会有所不同。

    如果你能用Java编写这样的东西,我会感到惊讶。@user207421为什么你认为用Java编写一个捕获门户是不可能的?
    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