Shared secret steam android
Basically you aren’t supposed to be able to access the shared secret it is just meant to go from the app to Valve. Only that app is meant to be able to see it.
With your phone rooted you can use things that would allow you to see it by bypassing the protection mechanisms. If you can’t root your phone you won’t be able to use it for what you want.
The SSA also prohibits automation of the account so even though there other other methods you will not get help on how to do it.
If you bork it up, it’s on you.
Thing is, the tutorials on google either require rooted phone (i cant root it) or something else i cant do
If you bork it up, it’s on you.
Thing is, the tutorials on google either require rooted phone (i cant root it) or something else i cant do
Only way I can think of is to install SteamDesktopAuthenticator [github.com] , setup new account, export data to .maFile and read shared secret from there.
But this will disable Steam Guard on your phone.
Источник
Python. Создаем Steam бота.
Предисловие.
В этом уроке вы научитесь работать с библиотекой steampy, на которой можно создать steam бота.
Подготовка
Первым делом, получите steam_api ключ, он нам понадобится для получения информации о трейдах. Получить его можно на сайте steam: https://steamcommunity.com/dev/apikey
Далее, понадобятся shared_secret и identity_secret, дающие полный доступ к вашему аккаунту.
Получить его можно в SDA в папке maFiles, при условии что вы не шифровали этот файл. Или на телефоне под управлением android с рут правами, к которому привязан steam.
Создайте текстовый файл steam_guard.json, и поместите туда следующий текст.
Steamid берем тут. В поле сайта, введите ссылку на аккаунт.
И установите библиотеку steampy, введя данную комманду в консоли.
Подтверждаем обмен.
Напишем основу стим бота.
Данный код отвечает за авторизацию на аккаунте.
Далее, попросите друга или бота кинуть трейд, чтобы на аккаунте висел не принятый обмен.
И пройдите по данной ссылке.
STEAM_API_KEY — замените на свой.
Данная ссылка, это api запрос, который выводит информацию о входящих трейдах в json формате, подробнее здесь.
Нас, во всем этом месиве, интересует только tradeofferid. Он понадобится для подтверждения обмена. Теперь, скопируйте следующие строки в свой скрипт.
trade_id — замените на собственный.
И запустите скрипт.
В итоге, обмен принят без нашего участия, что круто.
Кидаем обмен.
Создайте новый скрипт, и поместите туда следующий код:
За отправку трейда отвечает функция make_trade_1_item, разберем её.
В качестве инвентаря выбрали инвентарь TF2
Получаем информацию о предметах инвентаря. И отсеиваем ненужное, с помощью функции find_item_in_inventory. На выходе, получаем словарь такого формата:
Далее, запаковываем предмет в Asset.
Asset принимает 2 аргумента:
- id предмета
- код игры (для TF2, это 440)
Наши предметы готовы, осталось подготовить предметы партнера. Сперва, получим инвентарь партнера.
Отсеем все ненужное, и закинем в Asset.
Ассеты собраны, время посылать трейд.
Заключение.
Данная библиотека, мне очень помогла в написании tf2.tm бота, который я упоминал здесь. Применив знания с данной статьи отсюда и отсюда, вы сможете написать похожего бота.
Источник
Работаем с SteamWorks. Часть 1
SteamWorks — это интерфейс, который обеспечивает разработку и публикацию инструментов для разработчиков игр. Он предоставляет возможность интеграции с клиентом Steam, интеграция с комьюнити, добавлять и редактировать достижения для игр и многое другое.
На данный момент доступ к SteamWorks можно получить если вы являетесь «гейм студией» и хотите распространять свое приложение в steam или через сервис Steam Greenlight, тем самым став партнером steam. Подробности здесь. Open SteamWorks это открытая реализация Steam api (дизассемблированная версия библиотек steam.)
“Open SteamWorks designed for people who know, what they do” — Ryan Stecker. Так автор открытой версии ответил на вопрос (не мой) о наличии дополнительной документации, вся документация которая есть в наличии, является комментариями в исходных кодах. Загрузить последнюю версию Open SteamWorks можно с сайта.
Я буду использовать Visual Studio, если у вас есть под рукой mingw, можете использовать его. Приступим к созданию консольного приложения (вы можете использовать пример test platform из open steamworks).
Подключаем необходимые заголовочные файлы.
Подключаем необходимые библиотеки для компиляции нашего приложения.
Получаем базу Steam с 12 версией интерфейса.
В дизассемблированном виде это компилируется как поиск в реестре пути до стима и подключение к нему.
Проверяем смогли ли мы получить базу.
Создаем пайпу для взаимодействия.
Подключаемся к глобальному пользователю (запущенный стим).
Проверка подключения к глобальному пользователю.
Получаем доступ к api v 12 интерфейса пользователя.
Получаем доступ к api v.13 и v. 1 интерфейса друзей.
Предостерегаю тех, кто будет использовать интерфейсы IClient (IClientUtils, IClientFriends, и т. д.), все эти интерфейсы перестают работать сразу после глобального обновления steam, ваше приложение будет выдавать ошибки, используйте ISteam (стабильный) изложенный выше, если очень нужно использовать функции из IClient интерфейсов, а такое иногда случается, скопируйте все важные DLL файлы для вашего приложения (можно посмотреть в таблице импорта) и держите в папке с вашим приложением.
Теперь мы попробуем сделать самую простую вещь, поменять статус в стиме. (api для смены статуса доступна в первой версии интерфейса)
Компилируем, запускаем и теперь мы имеем статус спит в стиме.
Получаем количество друзей.
Меняем свое имя
Перебираем наших друзей, получаем структуру SteamID(64bits) текущего друга по индексу, проверяем статус текущего друга, если равняется статусу онлайн и имя друга Crey, отсылаем ему сообщение.
Думаю теперь все понимают, что при помощи SteamWorks можно легко написать trade бота, для обмена вещей по «заданному курсу» и много чего интересного.
В следующих частях мы рассмотрим работу с IScreenshots, IUserstats(achievements), callbacks и возможно дело дойдет до написания бота.
Источник
guard¶
This submodule contains various functionality related to Steam Guard.
SteamAuthenticator provides methods for genereating codes and enabling 2FA on a Steam account. Operations managing the authenticator on an account require an instance of either MobileWebAuth or SteamClient . The instance needs to be logged in.
Adding an authenticator
Before you finalize the authenticator, make sure to save your secrets. Otherwise you will lose access to the account.
Once authenticator is enabled all you need is the secrets to generate codes.
You can obtain the authenticator secrets from an Android device using extract_secrets_from_android_rooted() . See the function docstring for details on what is required for it to work.
class steam.guard. SteamAuthenticator ( secrets=None, backend=None ) В¶
Add/Remove authenticator from an account. Generate 2FA and confirmation codes.
Parameters: |
|
---|
steam_time_offset = None¶
offset from steam server time
how often to align time with Steam ( 0 never, otherwise interval in seconds)
dict with authenticator secrets
get_time ( ) В¶
Returns: | Steam aligned timestamp |
---|---|
Return type: | int |
get_code ( timestamp=None ) В¶
Parameters: | timestamp (int) – time to use for code generation |
---|---|
Returns: | two factor code |
Return type: | str |
get_confirmation_key ( tag=», timestamp=None ) В¶
Parameters: |
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Returns: |
Raises: | SteamAuthenticatorError |
---|
finalize ( activation_code ) В¶
Finalize authenticator with received SMS code
Parameters: | activation_code (str) – SMS code |
---|---|
Raises: | SteamAuthenticatorError |
remove ( revocation_code=None ) В¶
Parameters: | revocation_code (str) – revocation code for account (e.g. R12345) |
---|
After removing authenticator Steam Guard will be set to email codes
Doesn’t work via SteamClient . Disabled by Valve
Fetch authenticator status for the account
Raises: | SteamAuthenticatorError |
---|---|
Returns: | dict with status parameters |
Return type: | dict |
create_emergency_codes ( code=None ) В¶
Generate emergency codes
Parameters: | code (str) – SMS code |
---|---|
Raises: | SteamAuthenticatorError |
Returns: | list of codes |
Return type: | list |
A confirmation code is required to generate emergency codes and this method needs to be called twice as shown below.
Destroy all emergency codes
Raises: | SteamAuthenticatorError |
---|
add_phone_number ( phone_number ) В¶
Add phone number to account
Parameters: | phone_number ( str ) – phone number with country code |
---|---|
Returns: | success (returns False on request fail/timeout) |
Return type: | bool |
confirm_phone_number ( sms_code ) В¶
Confirm phone number with the recieved SMS code
Parameters: | sms_code ( str ) – sms code |
---|---|
Returns: | success (returns False on request fail/timeout) |
Return type: | bool |
has_phone_number ( ) В¶
Check whether the account has a verified phone number
Returns: | result |
---|---|
Return type: | bool or None |
Retruns None if the web requests fails for any reason
Test whether phone number is valid for Steam
Parameters: | phone_number ( str ) – phone number with country code |
---|---|
Returns: | see example output below |
Return type: | dict |
Generate Steam 2FA code for login with current time
Parameters: | shared_secret (bytes) – authenticator shared shared_secret |
---|---|
Returns: | steam two factor code |
Return type: | str |
steam.guard. generate_twofactor_code_for_time ( shared_secret, timestamp ) В¶
Generate Steam 2FA code for timestamp
Parameters: |
|
---|---|
Returns: |
steam.guard. generate_confirmation_key ( identity_secret, tag, timestamp ) В¶
Generate confirmation key for trades. Can only be used once.
Parameters: |
| |||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Returns: |
Returns: | time offset ( None when Steam WebAPI fails to respond) |
---|---|
Return type: | int , None |
steam.guard. generate_device_id ( steamid ) В¶
Generate Android device id
Parameters: | steamid ( SteamID , int ) – Steam ID |
---|---|
Returns: | android device id |
Return type: | str |
steam.guard. extract_secrets_from_android_rooted ( adb_path=’adb’ ) В¶
Extract Steam Authenticator secrets from a rooted Android device
Prerequisite for this to work:
- rooted android device
- adb binary
- device in debug mode, connected and paired
If you know how to make this work, without requiring the device to be rooted, please open a issue on github. Thanks
Parameters: | adb_path (str) – path to adb binary |
---|---|
Raises: | When there is any problem |
Returns: | all secrets from the device, steamid as key |
Return type: | dict |
© Copyright 2019, Rossen Georgiev Revision 070e4a3c .
Источник