Introduction
This study analyzed the operation of the Moscow Metro's wireless network from the point of view of a regular user. As part of the test, an Android phone was used. Cases where the phone has never been authorized in the network are considered in a limited format.
Connection process
When connected to a WI-FI network, the following happens:
The device is initially associated with a WI-FI point. The device then establishes a TCP connection with the Google server.
Figure 1: Establishing a TCP Connection')
Next, the Android phone checks for the need for network authorization by sending a GET request to the Google server. If the answer comes - authorization is not required; if it does not come - authorization is required, if there is a redirect to the authorization web page, the phone displays it.
Figure 2: Check for authorization requiredThe gateway, in turn, responds to any http request, replacing the responses of the requested server with a redirect to the authorization page.

Figure 3: redirect to the login pageNext, we press the button "enter the Internet." Here is the package itself, it is clear that it goes to the address from the private segment:
Figure 4: a packet with a request for authorization wi-fi.ruAnd the query itself looks like this:
GET / HTTP/1.1 Host: wi-fi.ru Connection: keep-alive Cache-Control: max-age=0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*
Analysis
It can be seen that, as a parameter, the MAC address of our device is also transmitted. This suggests that the poppy address is an identifier, and it is for him that the network understands whether we have paid for the Internet or not. It should be noted that the addresses login.wi-fi.ru and wi-fi.ru are available, including from the public Internet. This allows us to check any MAC address for its status. It looks like this:
MAC address, which was not in the subway:
Figure 5: MAC address that has never been in the subwayMAC address that is not paid for internet:
Figure 6: MAC did not pay for internetThe MAC address that paid for the Internet gets to the error page (since we are not inside the network), but then successfully redirected to wi-fi.ru:
Figure 7: Connection Error
Figure 8: successful connectionIt turned out that during authorization the server sends to the page the type of the connected MAC address:
Figure 9: Groups to which our MAC belongsIt is also evident that if we have mosmetro_premium registered in our group, then we are happy owner of paid internet.
Test
To automate the search for various types of MAC addresses, a script was written in Python:
https://bitbucket.org/hollow1/metroWith his help, a couple of "paid" addresses were found:
Figure 10: "paid" addressesAnd for experimental purposes directly, the MAC of the test device was replaced by the “paid” one:
sudo ifconfig en0 ether xx:xx:xx:xx:xx:xx
And everything started successfully, without registration and SMS.