Разблокировав игры в NVIDIA GeForce NOW, я нашел пиратов?

в 22:48, , рубрики: dolphin emulator, emulation, Geforce Now, GFN, mitm, Nintendo, Nvidia, proxy, Игры и игровые приставки, информационная безопасность, копирайт, ненормальное программирование

Я, как и многие пользователи NVIDIA GeForce NOW, жду пока там добавят те игры, в которые действительно хотелось бы поиграть. Но бывало и наоборот, игры которые уже были добавлены, позже внезапно удаляли из GFN сервиса. В моем случае я хотел там пройти игры Mafia, и потом их все убрали.

Спустя время, их так и не вернули. И я решил попытаться разблокировать запретные игры NVIDIA GeForce NOW сервиса. Но нашел там то, что никак не ожидал увидеть.

Предыстория

Пол года назад, NVIDIA GeForce NOW сервис работал по другому. Можно было запустить Steam и дальше выбирать игру для запуска вручную. Множество игр не запускались и в ответ было сообщение, что игра официально не поддерживается. Тогда я методом тыка выяснил, что есть игры которые все же работают. Например Gas Guzzlers Extreme, но в списке официально поддерживаемых GFN их не было. Мне стало интересно достать полный список игр, чтобы можно выбирать из всех доступных. В результате поисков я выяснил, что старые версии GFN клиента скачивали из их серверов файл whitelist.json, в котором было несколько тысяч игр. К сожалению, так как старые клиенты больше не поддерживаются, я не смог выяснить как достать такой актуальный файл.

Спустя какое-то время, четыре месяца назад, я решил продолжить поиски, изучить клиентское приложение. Предположил что раз раньше клиентское приложение загружало файл whitelist.json, может и сейчас оно умеет загружать полный список игр. На это ушло больше времени чем хотелось бы, но я изложу все в упрощенном виде.

Исследования

Установив NVIDIA GeForce NOW я запустил его и подождал, когда загрузятся все данные. Потом начал изучать кэш и лог файлы. Самый интересный файл оказался console.log

console.log
console.log

В логи попала конфигурация приложения, которая используется для запросов к серверу. Вот самая интересная строчка:

https://games.geforce.com/graphql
https://games.geforce.com/graphql

Это ссылка на ключевой URL для запросов приложения https://games.geforce.com/graphql. Перейдя по которой открывается красивый GraphQL редактор.

GraphQL редактор
GraphQL редактор

Это интерфейс для тестирования GraphQL запросов. Тут я начал экспериментировать с кодом и вводить разные структуры. Но все оказалось намного проще, чем я ожидал. Нажав Ctrl+Space я получил диалог для интеллектуального заполнения кода.

Intelligent code completion
Intelligent code completion

И началось самое интересное, подбор параметров чтобы получить результаты запросов. Спустя некоторое время я подобрал конфигурацию, по которой удалось получить валидный ответ.

Разблокировав игры в NVIDIA GeForce NOW, я нашел пиратов? - 5

Как видим в ответ пришло 1200 результатов. С помощью подсказок я подобрал конфигурацию, которая показывала все поля данных о играх.

Разблокировав игры в NVIDIA GeForce NOW, я нашел пиратов? - 6

Дальше я начал искать способ, как получить больше 1000 результатов. И я угадал с параметром After, который указывает на то, сколько надо пропустить результатов. Это значение является числом, закодированным в Base64.

Разблокировав игры в NVIDIA GeForce NOW, я нашел пиратов? - 7

Таким образом мне удалось вытащить полный список игр из GFN сервиса. На мое удивление там их оказалось больше чем 18 тыс. В результате мне стало интересно, а что будет если эти данные подставить в официальное приложение? И я начал разработку специального прокси сервера, который в этом поможет.

18K+ игр в официальном приложении GeForce NOW

Спустя какое-то время я закончил работу над прокси сервером, и запустил его локально. Подключил и все сработало!

18476 игр в GeForce NOW
18476 игр в GeForce NOW

Сразу скажу, такое решение не позволяет запускать все игры, а только те, которые вы уже купили. Да и множество из них не работает. Но мне стало интересно изучать, в какие же игры возможно играют разработчики GFN, и я продолжил листать. Оказалось там есть не только игры а и множество приложений.

807 приложений
807 приложений

Вероятно они используются разработчиками GFN в разных целях. Там я нашел все версии 3D Max, Maya, Adobe Photoshop, Microsoft Office и множество других. Так же там есть приложения для игровых платформ по отдельности.

Client Platforms
Client Platforms

Вероятно их используют для тестирования игр. Так же я нашел там игры, которые никогда не анонсировали в GeforceNOW, например Mafia: Definitive Edition.

Mafia: Definitive Edition
Mafia: Definitive Edition

Дальше я нашел игры, которых в принципе не должно быть в GeForce NOW. Например God of War.

God of War
God of War

Эта игра является эксклюзивом PlayStation и вероятно не появится на других платформах в ближайшее время. Так а почему она здесь? И написано, что она находится в Steam Store, а там такой игры нет. Утечка о игре которая еще не вышла на Steam? Возможно, но то, что я дальше нашел, меня переубедило.

Dolphin Emulator
Dolphin Emulator

Да, это Dolphin Emulator, приложение созданное для запуска копий игр из других консолей. Зачем оно там? Nintendo говорит что легального способа копировать их игры нет. Даже те, которые вы лично купили и сдампили, тоже считаются нелегальными копиями - пруф. А может там есть эмуляторы и других платформ, и в God of War они играют через эмулятор? Я их не нашел, но возможно они уже в комплекте с каждой игрой. То что я нашел дальше, меня еще сильнее удивило.

Super Mario Bros. Wii
Super Mario Bros. Wii

Это информация о игре Super Mario Bros. для консоли Wii. И да, в нее можно играть с помощью Dolphin Emulator. Совпадение? Возможно :). Но если присмотреться, там еще есть надпись NVIDIA CONFIDENTIAL. Вероятно это означает, что Nvidia не хотят чтобы мы узнали об этом. Не хотят чтобы кто-либо узнал, что они играют в пиратские игры на GFN серверах? Но не может же любой пользователь добавить пиратскую игру в базу данных серверов GFN, да еще и с аккуратно подогнанным описанием и скриншотами? Я ответов не знаю, может вы найдете их в комментариях.

Послесловие

Я запустил этот прокси сервер и он доступен, в целях изучения, для всех. И инструкцию опубликовал тут http://gfn.uax.co.

Четыре месяца назад, до того как я сделал этот прокси, я пытался отправить информацию обо всем в NVIDIA, но мои сообщения и email проигнорировали. Я это посчитал признаком того, что им все равно и я могу опубликовать это в сеть. https://www.nvidia.com/en-us/geforce/forums/gfn-tech-support/46/452082/confidential

Ссылки

Я сохранил ссылки на все ресурсы, и на заполненные GraphQL скрипты. Вы можете сами изучить их данные.

Super Mario Bross. Wii + Dolphin Emulator (сохраненная копия на archive.org)

NVIDIA CONFIDENCIAL банер (сохраненная копия на archive.org)

Автор: Джулай Игорь

Источник



https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js