Skip to content

Instantly share code, notes, and snippets.

@mathielo
mathielo / README-SteamBots-Secrets.md
Last active July 19, 2024 12:05
Steam Bots: How to get shared and identity secrets from Steam Guard TOTP

Steam Bots: How to get shared and identity secrets

If you're looking into automating transactions in your Steam Account using Steam Bots, you most likely will need to:

  1. Have TOTP ("MFA" or "2FA") enabled via Steam Authenticator (Steam Guard)
  2. Have in hands both shared secret and identity secret

Having Steam Guard enabled for your Steam Account ensures that there will be no holds on transactions such as trades. Having the shared and identity secrets are necessary for complete autonomy of your Steam Bot, meaning it won't require any human interaction from you.

There is a tremendous lack of information about all of this as Steam does not provide official support for implementing Steam Bots. The information available in this guide was gathered through lots of blood and sweat hard research, reverse eng

@Ne3tCode
Ne3tCode / friendsuiprotodumper.js
Last active May 20, 2021 05:43
Steam Mobile FriendsUI proto dumper (@SteamDatabase)
#!/usr/bin/env -S node --harmony-regexp-named-captures
'use strict';
if (process.argv.length <= 2) {
console.log('Usage: \n dumper.js <input_file.js> [options]');
console.log(' node [flags] dumper.js <input_file.js> [options]');
console.log('Options:');
console.log(' --Oall=<output_file> - dump enums and protos to file <output_file> (same as --Oenum + --Oproto)');
console.log(' --Oenum=<output_file_enums> - dump only enums to file <output_file_enums> (default: <stdout>)');
console.log(' --Oproto=<output_file_protos> - dump only protos to file <output_file_protos> (default: <stdout>)');
@yeraydiazdiaz
yeraydiazdiaz / threadpool_future_cancellation.py
Last active February 6, 2021 04:59
Cancellation on run_in_executor using ThreadPoolExecutor
"""
A demonstration on how raising KeyboardInterrupt in the context of tasks
spawned via asyncio's loop.run_in_executor does not cancel the threads
using any of the cancellation methods in asyncio Futures.
The only "proper" way to cancel is to:
1. unregister the `atexit` registered `_python_exit` function
2. call `shutdown(wait=False)`
The reason is that the `thread` module registers `_python_exit` forcing a