Giter Club home page Giter Club logo

steamauth's Introduction

SteamAuth

A C# library that provides vital Steam Mobile Authenticator functionality. Looking for a desktop client to act as a Steam Mobile Authenticator? Check out SteamDesktopAuthenticator

Functionality

Currently, this library can:

  • Generate login codes for a given Shared Secret
  • Login to a user account
  • Link and activate a new mobile authenticator to a user account after logging in
  • Remove itself from an account
  • Fetch, accept, and deny mobile confirmations

Requirements

Usage

To generate login codes if you already have a Shared Secret, simply instantiate a SteamGuardAccount and set its SharedSecret. Then call SteamGuardAccount.GenerateSteamGuardCode().

To add a mobile authenticator to a user, instantiate a UserLogin instance which will allow you to login to the account. After logging in, instantiate an AuthenticatorLinker and use AuthenticatorLinker.AddAuthenticator() and AuthenticatorLinker.FinalizeAddAuthenticator() to link a new authenticator. After calling AddAuthenticator(), and before calling FinalizeAddAuthenticator(), please save a JSON string of the AuthenticatorLinker.LinkedAccount. This will contain everything you need to generate subsequent codes. Failing to do this will lock you out of your account.

To fetch mobile confirmations, call SteamGuardAccount.FetchConfirmations(). You can then call SteamGuardAccount.AcceptConfirmation and SteamGuardAccount.DenyConfirmation.

Upcoming Features

In order to be feature complete, this library will:

  • Be better documented (feature!!)

steamauth's People

Contributors

bryant1410 avatar dependabot[bot] avatar geel9 avatar geograph-us avatar jessecar96 avatar lyrapuff avatar nyf-nyf avatar pipe01 avatar rudokhvist avatar shravan2x avatar speed-str avatar sy1989 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

steamauth's Issues

Steam login response steamobile://nologin

hi,
i use fetchConfirmation from your API and i have a problem because steam server response to me "steammobile://nologin" i'm a login and this problem is every time (1 day after login)

Thanks for help
Szymon / Simon

IndexOutOfRangeException in SteamGuardAccount.FetchConfirmations()

This issue is simlar to #51 so we can probably produce a fix at the same time.

I was able to catch this exception during debugging. The original HTML is like this.

<!DOCTYPE html>
<html class=" responsive touch" lang="en">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
            <meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=no">
        <meta name="theme-color" content="#171a21">
        <title>Steam Community :: Confirmations</title>
    <link rel="shortcut icon" href="/favicon.ico" type="image/x-icon">

    <link href="https://steamcommunity-a.akamaihd.net/public/shared/css/motiva_sans.css?v=LdCeTJr_TZ6A" rel="stylesheet" type="text/css" >
<link href="https://steamcommunity-a.akamaihd.net/public/shared/css/buttons.css?v=DqDbwtwoUvC4" rel="stylesheet" type="text/css" >
<link href="https://steamcommunity-a.akamaihd.net/public/shared/css/shared_global.css?v=zTXBgMbKPLMZ" rel="stylesheet" type="text/css" >
<link href="https://steamcommunity-a.akamaihd.net/public/css/globalv2.css?v=xwH7fFZlzxJe" rel="stylesheet" type="text/css" >
<link href="https://steamcommunity-a.akamaihd.net/public/css/skin_1/modalContent.css?v=.vXD4gU69vdZP" rel="stylesheet" type="text/css" >
<link href="https://steamcommunity-a.akamaihd.net/public/css/mobile/styles_mobileconf.css?v=7eOknd5U_Oiy" rel="stylesheet" type="text/css" >
<link href="https://steamcommunity-a.akamaihd.net/public/shared/css/motiva_sans.css?v=LdCeTJr_TZ6A" rel="stylesheet" type="text/css" >
<link href="https://steamcommunity-a.akamaihd.net/public/css/skin_1/html5.css?v=.MtSlvoLZL0Tb" rel="stylesheet" type="text/css" >
<link href="https://steamcommunity-a.akamaihd.net/public/css/skin_1/economy.css?v=iQbF3P_l9GzK" rel="stylesheet" type="text/css" >
<link href="https://steamcommunity-a.akamaihd.net/public/css/skin_1/trade.css?v=waXflBHgCJM2" rel="stylesheet" type="text/css" >
<link href="https://steamcommunity-a.akamaihd.net/public/css/skin_1/profile_tradeoffers.css?v=dV0KLdJys6M3" rel="stylesheet" type="text/css" >
<link href="https://steamcommunity-a.akamaihd.net/public/shared/css/shared_responsive.css?v=fnIXQFFIqv9g" rel="stylesheet" type="text/css" >
<link href="https://steamcommunity-a.akamaihd.net/public/css/skin_1/header.css?v=zVGNlnB7-F9B" rel="stylesheet" type="text/css" >
            <script>
                (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
                        (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
                    m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
                })(window,document,'script','//www.google-analytics.com/analytics.js','ga');

                ga('create', 'UA-33779068-1', 'auto', {
                    'sampleRate': 0.4               });
                ga('set', 'dimension1', true );
                ga('set', 'dimension2', 'Steam Mobile App' );
                ga('set', 'dimension3', 'mobileconf' );
                ga('set', 'dimension4', "mobileconf\/conf" );
                ga('send', 'pageview');

            </script>
            <script type="text/javascript" src="https://steamcommunity-a.akamaihd.net/public/javascript/prototype-1.7.js?v=.55t44gwuwgvw"></script>
<script type="text/javascript" src="https://steamcommunity-a.akamaihd.net/public/javascript/scriptaculous/_combined.js?v=9XVsa_Ni33oN&amp;l=english&amp;load=effects,controls,slider,dragdrop"></script>
<script type="text/javascript" src="https://steamcommunity-a.akamaihd.net/public/javascript/global.js?v=Rnp1sQq2nwPg&amp;l=english"></script>
<script type="text/javascript" src="https://steamcommunity-a.akamaihd.net/public/javascript/jquery-1.11.1.min.js?v=.isFTSRckeNhC"></script>
<script type="text/javascript" src="https://steamcommunity-a.akamaihd.net/public/shared/javascript/tooltip.js?v=._0UFXFGgvme-"></script>
<script type="text/javascript" src="https://steamcommunity-a.akamaihd.net/public/shared/javascript/shared_global.js?v=tVoURzwqxPuO&amp;l=english"></script>
<script type="text/javascript">$J = jQuery.noConflict();
if ( typeof JSON != 'object' || !JSON.stringify || !JSON.parse ) { document.write( "<scr" + "ipt type=\"text\/javascript\" src=\"https:\/\/steamcommunity-a.akamaihd.net\/public\/javascript\/json2.js?v=pmScf4470EZP&amp;l=english\"><\/script>\n" ); };
</script><script type="text/javascript" src="https://steamcommunity-a.akamaihd.net/public/javascript/jquery-ui-1.9.2.min.js?v=.ILEZTVPIP_6a"></script>
<script type="text/javascript" src="https://steamcommunity-a.akamaihd.net/public/javascript/mobile/mobileconf.js?v=gzsr7wSdWAPR&amp;l=english&amp;mobileClientType=android"></script>
<script type="text/javascript" src="https://steamcommunity-a.akamaihd.net/public/javascript/economy_common.js?v=tsXdRVB0yEaR&amp;l=english"></script>
<script type="text/javascript" src="https://steamcommunity-a.akamaihd.net/public/javascript/economy.js?v=6XKs2vVBvxm9&amp;l=english"></script>
<script type="text/javascript" src="https://steamcommunity-a.akamaihd.net/public/javascript/modalv2.js?v=dfMhuy-Lrpyo&amp;l=english"></script>
<script type="text/javascript" src="https://steamcommunity-a.akamaihd.net/public/javascript/modalContent.js?v=O5vbf725l6-I&amp;l=english"></script>
<script type="text/javascript" src="https://steamcommunity-a.akamaihd.net/public/shared/javascript/shared_responsive_adapter.js?v=qLEcRmcHn-kc&amp;l=english"></script>



            <link rel="image_src" href="https://steamcommunity-a.akamaihd.net/public/shared/images/responsive/share_steam_logo.png">



            <script type="text/javascript">
            $J(function() {
                                                    window.location='steammobile://settitle?title=' + encodeURIComponent( "Confirmations" );
                            });
        </script>
    </head>
<body class=" responsive_page">

<div class="responsive_page_frame no_header">


        <div class="responsive_local_menu_tab">

        </div>

        <div class="responsive_page_menu_ctn localmenu">
            <div class="responsive_page_menu"  id="responsive_page_local_menu">
                <div class="localmenu_content">
                </div>
            </div>
        </div>




        <div class="responsive_page_content_overlay">

        </div>

        <div class="responsive_fixonscroll_ctn nonresponsive_hidden no_menu">
        </div>

    <div class="responsive_page_content">

        <script type="text/javascript">
    g_sessionID = "8888888888888888888888";
    g_steamID = "88888888888888888";

    // We always want to have the timezone cookie set for PHP to use
    setTimezoneCookies();

    $J( function() {

        InitMiniprofileHovers();
        InitEmoticonHovers();
        window.BindCommunityTooltip = function( $Selector ) { $Selector.v_tooltip( {'tooltipClass': 'community_tooltip', 'dataName': 'communityTooltip' } ); };
        BindCommunityTooltip( $J('[data-community-tooltip]') );
    });

    $J( function() { InitEconomyHovers( "https:\/\/steamcommunity-a.akamaihd.net\/public\/css\/skin_1\/economy.css?v=iQbF3P_l9GzK", "https:\/\/steamcommunity-a.akamaihd.net\/public\/javascript\/economy_common.js?v=tsXdRVB0yEaR&l=english", "https:\/\/steamcommunity-a.akamaihd.net\/public\/javascript\/economy.js?v=6XKs2vVBvxm9&l=english" );});</script>
        <div class="responsive_page_template_content">

                <div id="mobileconf_list">
        <div class="mobileconf_list_entry" id="conf1080296709" data-confid="1080296709" data-key="18144518417433075267" data-cancel="Cancel" data-accept="Create Listing" >
    <div class="mobileconf_list_entry_content">
        <div class="mobileconf_list_entry_icon">
            <div style="border: 1px solid transparent;border-color: #D2D2D2;"><img src="https://steamcommunity-a.akamaihd.net/economy/image/W_I_5GLm4wPcv9jJQ7z7tz_l_0sEIYUhRfbF4arNQkgGQGKd3kMuVo47AQVZrguDIH6Z2uFCePfbDjEtCJ3-VVGvMZKM-UWgSddCNIZkb2tNi4u6gkwRUyOBV-IQAdIptMzF1w25DgSULTY5zoxSg_rJicTKG_iHB4cJ89w/32fx32f" srcset="https://steamcommunity-a.akamaihd.net/economy/image/W_I_5GLm4wPcv9jJQ7z7tz_l_0sEIYUhRfbF4arNQkgGQGKd3kMuVo47AQVZrguDIH6Z2uFCePfbDjEtCJ3-VVGvMZKM-UWgSddCNIZkb2tNi4u6gkwRUyOBV-IQAdIptMzF1w25DgSULTY5zoxSg_rJicTKG_iHB4cJ89w/32fx32f 1x, https://steamcommunity-a.akamaihd.net/economy/image/W_I_5GLm4wPcv9jJQ7z7tz_l_0sEIYUhRfbF4arNQkgGQGKd3kMuVo47AQVZrguDIH6Z2uFCePfbDjEtCJ3-VVGvMZKM-UWgSddCNIZkb2tNi4u6gkwRUyOBV-IQAdIptMzF1w25DgSULTY5zoxSg_rJicTKG_iHB4cJ89w/32fx32fdpx2x 2x"></div>        </div>
        <!--div class="mobileconf_offers_summary_chevron">
            &#x3009;
        </div-->
                    <div class="mobileconf_list_checkbox">
                <input id="multiconf_1080296709" data-confid="1080296709" data-key="18144518417433075267" value="1" type="checkbox">
            </div>
                <div class="mobileconf_list_entry_description">
            <div>Sell - Immortal Treasure I 2016</div>
            <div> ¥ 1,150 (¥ 1,000)</div>
            <div>30 minutes ago</div>
        </div>
    </div>

    <div class="mobileconf_list_entry_sep"></div>
</div>
    </div>
    <div id="mobileconf_done" class="mobileconf_done mobileconf_header" style="display: none">
        <div>All done</div>
        <div>You're all done, there's nothing left to confirm.</div>
    </div>

<div id="mobileconf_details" style="display: none">
</div>

<div id="mobileconf_buttons" style="display: none">
    <div>
    <div class="mobileconf_button mobileconf_button_cancel">
    </div><div class="mobileconf_button mobileconf_button_accept">
    </div>
    </div>
</div>

<div id="mobileconf_throbber" style="display: none">
    <div style="text-align:center; margin: auto;">
        <img src="https://steamcommunity-a.akamaihd.net/public/images/login/throbber.gif" alt="Loading">
    </div>
</div>

        </div>  <!-- responsive_page_legacy_content -->

            <div id="footer_spacer"></div>
    <div id="footer_responsive_optin_spacer"></div>
    <div id="footer">
        <div class="footer_content">
            <span id="footerLogo"><img src="https://steamcommunity-a.akamaihd.net/public/images/skin_1/footerLogo_valve.png?v=1" width="96" height="26" border="0" alt="Valve Logo" /></span>
            <span id="footerText">
                &copy; Valve Corporation. All rights reserved. All trademarks are property of their respective owners in the US and other countries.<br/>Some geospatial data on this website is provided by <a href="https://steamcommunity.com/linkfilter/?url=http://www.geonames.org" target="_blank" rel="noreferrer">geonames.org</a>.                <br>
                                    <span class="valve_links">
                        <a href="http://store.steampowered.com/privacy_agreement/" target="_blank">Privacy Policy</a>
                        &nbsp; | &nbsp;<a href="http://www.valvesoftware.com/legal.htm" target="_blank">Legal</a>
                        &nbsp;| &nbsp;<a href="http://store.steampowered.com/subscriber_agreement/" target="_blank">Steam Subscriber Agreement</a>
                    </span>
                            </span>
        </div>
                    <div class="responsive_optin_link">
                <div class="btn_medium btnv6_grey_black" onclick="Responsive_RequestMobileView()">
                    <span>View mobile website</span>
                </div>
            </div>
            </div>

    </div>  <!-- responsive_page_content -->

</div>  <!-- responsive_page_frame -->
</body>
</html>

I repeatedly called this method on the same steam account and it produced the same result. So i guess this isn't a random case. It's just the way Steam generate its HTML and we should take that into consideration when parsing it.

As you can see from the HTML above there are two data-confid and two data-key attribute per confirmation. But only 1 confDescRegex result.

Then, I added another confirmation to my account. Called FetchConfirmation and the HTML is like this

<!DOCTYPE html>
<html class=" responsive touch" lang="en">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
            <meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=no">
        <meta name="theme-color" content="#171a21">
        <title>Steam Community :: Confirmations</title>
    <link rel="shortcut icon" href="/favicon.ico" type="image/x-icon">

    <link href="https://steamcommunity-a.akamaihd.net/public/shared/css/motiva_sans.css?v=LdCeTJr_TZ6A" rel="stylesheet" type="text/css" >
<link href="https://steamcommunity-a.akamaihd.net/public/shared/css/buttons.css?v=DqDbwtwoUvC4" rel="stylesheet" type="text/css" >
<link href="https://steamcommunity-a.akamaihd.net/public/shared/css/shared_global.css?v=zTXBgMbKPLMZ" rel="stylesheet" type="text/css" >
<link href="https://steamcommunity-a.akamaihd.net/public/css/globalv2.css?v=xwH7fFZlzxJe" rel="stylesheet" type="text/css" >
<link href="https://steamcommunity-a.akamaihd.net/public/css/skin_1/modalContent.css?v=.vXD4gU69vdZP" rel="stylesheet" type="text/css" >
<link href="https://steamcommunity-a.akamaihd.net/public/css/mobile/styles_mobileconf.css?v=7eOknd5U_Oiy" rel="stylesheet" type="text/css" >
<link href="https://steamcommunity-a.akamaihd.net/public/shared/css/motiva_sans.css?v=LdCeTJr_TZ6A" rel="stylesheet" type="text/css" >
<link href="https://steamcommunity-a.akamaihd.net/public/css/skin_1/html5.css?v=.MtSlvoLZL0Tb" rel="stylesheet" type="text/css" >
<link href="https://steamcommunity-a.akamaihd.net/public/css/skin_1/economy.css?v=iQbF3P_l9GzK" rel="stylesheet" type="text/css" >
<link href="https://steamcommunity-a.akamaihd.net/public/css/skin_1/trade.css?v=waXflBHgCJM2" rel="stylesheet" type="text/css" >
<link href="https://steamcommunity-a.akamaihd.net/public/css/skin_1/profile_tradeoffers.css?v=dV0KLdJys6M3" rel="stylesheet" type="text/css" >
<link href="https://steamcommunity-a.akamaihd.net/public/shared/css/shared_responsive.css?v=fnIXQFFIqv9g" rel="stylesheet" type="text/css" >
<link href="https://steamcommunity-a.akamaihd.net/public/css/skin_1/header.css?v=zVGNlnB7-F9B" rel="stylesheet" type="text/css" >
            <script>
                (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
                        (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
                    m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
                })(window,document,'script','//www.google-analytics.com/analytics.js','ga');

                ga('create', 'UA-33779068-1', 'auto', {
                    'sampleRate': 0.4               });
                ga('set', 'dimension1', true );
                ga('set', 'dimension2', 'Steam Mobile App' );
                ga('set', 'dimension3', 'mobileconf' );
                ga('set', 'dimension4', "mobileconf\/conf" );
                ga('send', 'pageview');

            </script>
            <script type="text/javascript" src="https://steamcommunity-a.akamaihd.net/public/javascript/prototype-1.7.js?v=.55t44gwuwgvw"></script>
<script type="text/javascript" src="https://steamcommunity-a.akamaihd.net/public/javascript/scriptaculous/_combined.js?v=9XVsa_Ni33oN&amp;l=english&amp;load=effects,controls,slider,dragdrop"></script>
<script type="text/javascript" src="https://steamcommunity-a.akamaihd.net/public/javascript/global.js?v=Rnp1sQq2nwPg&amp;l=english"></script>
<script type="text/javascript" src="https://steamcommunity-a.akamaihd.net/public/javascript/jquery-1.11.1.min.js?v=.isFTSRckeNhC"></script>
<script type="text/javascript" src="https://steamcommunity-a.akamaihd.net/public/shared/javascript/tooltip.js?v=._0UFXFGgvme-"></script>
<script type="text/javascript" src="https://steamcommunity-a.akamaihd.net/public/shared/javascript/shared_global.js?v=tVoURzwqxPuO&amp;l=english"></script>
<script type="text/javascript">$J = jQuery.noConflict();
if ( typeof JSON != 'object' || !JSON.stringify || !JSON.parse ) { document.write( "<scr" + "ipt type=\"text\/javascript\" src=\"https:\/\/steamcommunity-a.akamaihd.net\/public\/javascript\/json2.js?v=pmScf4470EZP&amp;l=english\"><\/script>\n" ); };
</script><script type="text/javascript" src="https://steamcommunity-a.akamaihd.net/public/javascript/jquery-ui-1.9.2.min.js?v=.ILEZTVPIP_6a"></script>
<script type="text/javascript" src="https://steamcommunity-a.akamaihd.net/public/javascript/mobile/mobileconf.js?v=gzsr7wSdWAPR&amp;l=english&amp;mobileClientType=android"></script>
<script type="text/javascript" src="https://steamcommunity-a.akamaihd.net/public/javascript/economy_common.js?v=tsXdRVB0yEaR&amp;l=english"></script>
<script type="text/javascript" src="https://steamcommunity-a.akamaihd.net/public/javascript/economy.js?v=6XKs2vVBvxm9&amp;l=english"></script>
<script type="text/javascript" src="https://steamcommunity-a.akamaihd.net/public/javascript/modalv2.js?v=dfMhuy-Lrpyo&amp;l=english"></script>
<script type="text/javascript" src="https://steamcommunity-a.akamaihd.net/public/javascript/modalContent.js?v=O5vbf725l6-I&amp;l=english"></script>
<script type="text/javascript" src="https://steamcommunity-a.akamaihd.net/public/shared/javascript/shared_responsive_adapter.js?v=qLEcRmcHn-kc&amp;l=english"></script>



            <link rel="image_src" href="https://steamcommunity-a.akamaihd.net/public/shared/images/responsive/share_steam_logo.png">



            <script type="text/javascript">
            $J(function() {
                                                    window.location='steammobile://settitle?title=' + encodeURIComponent( "Confirmations" );
                            });
        </script>
    </head>
<body class=" responsive_page">

<div class="responsive_page_frame no_header">


        <div class="responsive_local_menu_tab">

        </div>

        <div class="responsive_page_menu_ctn localmenu">
            <div class="responsive_page_menu"  id="responsive_page_local_menu">
                <div class="localmenu_content">
                </div>
            </div>
        </div>




        <div class="responsive_page_content_overlay">

        </div>

        <div class="responsive_fixonscroll_ctn nonresponsive_hidden no_menu">
        </div>

    <div class="responsive_page_content">

        <script type="text/javascript">
    g_sessionID = "888888888888888888";
    g_steamID = "88888888888888888";

    // We always want to have the timezone cookie set for PHP to use
    setTimezoneCookies();

    $J( function() {

        InitMiniprofileHovers();
        InitEmoticonHovers();
        window.BindCommunityTooltip = function( $Selector ) { $Selector.v_tooltip( {'tooltipClass': 'community_tooltip', 'dataName': 'communityTooltip' } ); };
        BindCommunityTooltip( $J('[data-community-tooltip]') );
    });

    $J( function() { InitEconomyHovers( "https:\/\/steamcommunity-a.akamaihd.net\/public\/css\/skin_1\/economy.css?v=iQbF3P_l9GzK", "https:\/\/steamcommunity-a.akamaihd.net\/public\/javascript\/economy_common.js?v=tsXdRVB0yEaR&l=english", "https:\/\/steamcommunity-a.akamaihd.net\/public\/javascript\/economy.js?v=6XKs2vVBvxm9&l=english" );});</script>
        <div class="responsive_page_template_content">

                <div id="mobileconf_list">
        <div class="mobileconf_list_entry" id="conf1080463377" data-confid="1080463377" data-key="18067422401992821592" data-cancel="Cancel" data-accept="Create Listing" >
    <div class="mobileconf_list_entry_content">
        <div class="mobileconf_list_entry_icon">
            <div style="border: 1px solid transparent;border-color: #D2D2D2;"><img src="https://steamcommunity-a.akamaihd.net/economy/image/W_I_5GLm4wPcv9jJQ7z7tz_l_0sEIYUhRfbF4arNQkgGQGKd3kMuVo47AQVZrgyaZEie0NNAa-nVEDE8F5frT0eyOpLflhj3ZNxGaNNgdzYaitrr1BwQASjUU7NFXoMivcmWhwPsDAGQemA8zd0BgaaYg8TdX6TO6UywBArcUZM/32fx32f" srcset="https://steamcommunity-a.akamaihd.net/economy/image/W_I_5GLm4wPcv9jJQ7z7tz_l_0sEIYUhRfbF4arNQkgGQGKd3kMuVo47AQVZrgyaZEie0NNAa-nVEDE8F5frT0eyOpLflhj3ZNxGaNNgdzYaitrr1BwQASjUU7NFXoMivcmWhwPsDAGQemA8zd0BgaaYg8TdX6TO6UywBArcUZM/32fx32f 1x, https://steamcommunity-a.akamaihd.net/economy/image/W_I_5GLm4wPcv9jJQ7z7tz_l_0sEIYUhRfbF4arNQkgGQGKd3kMuVo47AQVZrgyaZEie0NNAa-nVEDE8F5frT0eyOpLflhj3ZNxGaNNgdzYaitrr1BwQASjUU7NFXoMivcmWhwPsDAGQemA8zd0BgaaYg8TdX6TO6UywBArcUZM/32fx32fdpx2x 2x"></div>        </div>
        <!--div class="mobileconf_offers_summary_chevron">
            &#x3009;
        </div-->
                    <div class="mobileconf_list_checkbox">
                <input id="multiconf_1080463377" data-confid="1080463377" data-key="18067422401992821592" value="1" type="checkbox">
            </div>
                <div class="mobileconf_list_entry_description">
            <div>Sell - The Manila Major 2016 Trophy Emoticon</div>
            <div> ¥ 115 (¥ 100)</div>
            <div>Just now</div>
        </div>
    </div>

    <div class="mobileconf_list_entry_sep"></div>
</div>
<div class="mobileconf_list_entry" id="conf1080296709" data-confid="1080296709" data-key="18144518417433075267" data-cancel="Cancel" data-accept="Create Listing" >
    <div class="mobileconf_list_entry_content">
        <div class="mobileconf_list_entry_icon">
            <div style="border: 1px solid transparent;border-color: #D2D2D2;"><img src="https://steamcommunity-a.akamaihd.net/economy/image/W_I_5GLm4wPcv9jJQ7z7tz_l_0sEIYUhRfbF4arNQkgGQGKd3kMuVo47AQVZrguDIH6Z2uFCePfbDjEtCJ3-VVGvMZKM-UWgSddCNIZkb2tNi4u6gkwRUyOBV-IQAdIptMzF1w25DgSULTY5zoxSg_rJicTKG_iHB4cJ89w/32fx32f" srcset="https://steamcommunity-a.akamaihd.net/economy/image/W_I_5GLm4wPcv9jJQ7z7tz_l_0sEIYUhRfbF4arNQkgGQGKd3kMuVo47AQVZrguDIH6Z2uFCePfbDjEtCJ3-VVGvMZKM-UWgSddCNIZkb2tNi4u6gkwRUyOBV-IQAdIptMzF1w25DgSULTY5zoxSg_rJicTKG_iHB4cJ89w/32fx32f 1x, https://steamcommunity-a.akamaihd.net/economy/image/W_I_5GLm4wPcv9jJQ7z7tz_l_0sEIYUhRfbF4arNQkgGQGKd3kMuVo47AQVZrguDIH6Z2uFCePfbDjEtCJ3-VVGvMZKM-UWgSddCNIZkb2tNi4u6gkwRUyOBV-IQAdIptMzF1w25DgSULTY5zoxSg_rJicTKG_iHB4cJ89w/32fx32fdpx2x 2x"></div>        </div>
        <!--div class="mobileconf_offers_summary_chevron">
            &#x3009;
        </div-->
                    <div class="mobileconf_list_checkbox">
                <input id="multiconf_1080296709" data-confid="1080296709" data-key="18144518417433075267" value="1" type="checkbox">
            </div>
                <div class="mobileconf_list_entry_description">
            <div>Sell - Immortal Treasure I 2016</div>
            <div> ¥ 1,150 (¥ 1,000)</div>
            <div>39 minutes ago</div>
        </div>
    </div>

    <div class="mobileconf_list_entry_sep"></div>
</div>
    </div>
    <div id="mobileconf_done" class="mobileconf_done mobileconf_header" style="display: none">
        <div>All done</div>
        <div>You're all done, there's nothing left to confirm.</div>
    </div>

<div id="mobileconf_details" style="display: none">
</div>

<div id="mobileconf_buttons" style="display: none">
    <div>
    <div class="mobileconf_button mobileconf_button_cancel">
    </div><div class="mobileconf_button mobileconf_button_accept">
    </div>
    </div>
</div>

<div id="mobileconf_throbber" style="display: none">
    <div style="text-align:center; margin: auto;">
        <img src="https://steamcommunity-a.akamaihd.net/public/images/login/throbber.gif" alt="Loading">
    </div>
</div>

        </div>  <!-- responsive_page_legacy_content -->

            <div id="footer_spacer"></div>
    <div id="footer_responsive_optin_spacer"></div>
    <div id="footer">
        <div class="footer_content">
            <span id="footerLogo"><img src="https://steamcommunity-a.akamaihd.net/public/images/skin_1/footerLogo_valve.png?v=1" width="96" height="26" border="0" alt="Valve Logo" /></span>
            <span id="footerText">
                &copy; Valve Corporation. All rights reserved. All trademarks are property of their respective owners in the US and other countries.<br/>Some geospatial data on this website is provided by <a href="https://steamcommunity.com/linkfilter/?url=http://www.geonames.org" target="_blank" rel="noreferrer">geonames.org</a>.                <br>
                                    <span class="valve_links">
                        <a href="http://store.steampowered.com/privacy_agreement/" target="_blank">Privacy Policy</a>
                        &nbsp; | &nbsp;<a href="http://www.valvesoftware.com/legal.htm" target="_blank">Legal</a>
                        &nbsp;| &nbsp;<a href="http://store.steampowered.com/subscriber_agreement/" target="_blank">Steam Subscriber Agreement</a>
                    </span>
                            </span>
        </div>
                    <div class="responsive_optin_link">
                <div class="btn_medium btnv6_grey_black" onclick="Responsive_RequestMobileView()">
                    <span>View mobile website</span>
                </div>
            </div>
            </div>

    </div>  <!-- responsive_page_content -->

</div>  <!-- responsive_page_frame -->
</body>
</html>

This is when I got totally confused. What? two data-confid and two data-key attribute again?! If the HTML code Steam is returning has always been like this, it's not possible that FetchConfirmation() can work without throwing an exception.

For reliability we'd probably be better off using a proper HTML parser like HTMLAgilityPack.

Index out-of-bounds when fetching confirmations + possible fix

Exception
Happens when you have nothing to confirm (the regexes still match despise no id keys being present, occurs randomly.
I have dumped the response, and it does contain the

Nothing to confirm
phrase.
The only possible solution is that regexes in the function return true for ".IsMatch" despite no matches being found (used regex101.com and even notepad++ find to confirm)

Temporary workaround: Added "contains (nothing to confirm)" to the first IF statement. Will test if it fixes the issue.

JSON property "status" is not always an integer

I have 5 accounts linked to my android phone, but only my main account SteamAuth is having trouble with. That's because its status property is set to null:

{
    "shared_secret" : "hidden",
    "serial_number" : "hidden",
    "revocation_code" : "hidden",
    "uri" : "hidden",
    "server_time" : "1449433185",
    "account_name" : "hidden",
    "token_gid" : "hidden",
    "identity_secret" : "hidden",
    "secret_1" : "hidden",
    "status": null,
    "steamguard_scheme": 2,
    "steamid" : "XXXXXXXXXXXXXXXXX"
}

All my other accounts have status set to 1. Don't ask me why, I'm a simple end-user. :~
So programs that uses SteamAuth (ArchiSteamFarm, SteamDesktopAuthenticator) always fail to import this particular account, throwing this error (from SteamDesktopAuthenticator):

http://pastebin.com/raw/npnTqX3h

I should also note that using WinAuth to import this account from my phone, works fine.

Linux

So is it true that you cant use this with a Linux bot?

No way to tell incorrect captcha from incorrect login

It doesn't look like there's any way to tell the difference between the login results from an incorrect login with valid captcha and a valid login with incorrect captcha. they both return NeedCaptcha.

I realize valve don't have a separate flag on the login response, but the message returned is different between the two.

Valve return "Please verify your humanity by re-entering the characters below." if the login was correct but the captcha was wrong, and "Incorrect login." if the login was wrong and the captcha correct.

Error exceptions

For any query. (except for authorization) an error

"An unhandled exception of type "System.NullReferenceException" in SteamAuth.dll
For more information: Object reference not set to an instance of the object."

*Get the latest version from the hub

This error appears on the functions:
RefreshSession()
FetchConfirmations()
then could not check
code:
static void Main(string[] args)
{
Console.WriteLine("Имя аккаунта:");
string account = Console.ReadLine();
string guardFile = System.IO.File.ReadAllText(account + ".maFile");
SteamGuardAccount guard = JsonConvert.DeserializeObject(guardFile);
Console.WriteLine("Тип запуска(code,trades):");
string type = Console.ReadLine();
Console.Clear();
switch (type)
{
case "code":
{
while (true)
{
string code = guard.GenerateSteamGuardCode();
Console.WriteLine("{0}", code);
System.Threading.Thread.Sleep(30000);
}
}
case "trades":
{
while (true)
{
if (guard != null)
guard.RefreshSession();
Confirmation[] tradeRequests = guard.FetchConfirmations();
foreach (Confirmation conf in tradeRequests)
{
guard.AcceptConfirmation(conf);
}
System.Threading.Thread.Sleep(20000);
}
}
}
}

How to get maCode

Sorry for stupid question, but how do I get mobile auth code here:

                    case LoginResult.Need2FA:
                        Console.WriteLine("Please enter your mobile authenticator code: ");
                        code = Console.ReadLine();
                        login.TwoFactorCode = code;
                        break;

ADB returned "device" status although no phone is connected

during first time setup (using SteamDesktopAuthenticator) the program carshes because it detects there is a phone connected (but there isnt) this is the text from the crash

See the end of this message for details on invoking
just-in-time (JIT) debugging instead of this dialog box.

************** Exception Text **************
System.InvalidOperationException: No process is associated with this object.
at System.Diagnostics.Process.EnsureState(State state)
at System.Diagnostics.Process.EnsureState(State state)
at System.Diagnostics.Process.GetProcessHandle(Int32 access, Boolean throwIfExited)
at System.Diagnostics.Process.WaitForExit(Int32 milliseconds)
at System.Diagnostics.Process.WaitForExit()
at Steam_Desktop_Authenticator.PhoneExtractForm.ResetAll()
at Steam_Desktop_Authenticator.PhoneExtractForm.Bridge_PhoneBridgeError(String msg)
at Steam_Desktop_Authenticator.PhoneBridge.OnPhoneBridgeError(String msg)
at Steam_Desktop_Authenticator.PhoneBridge.ExtractSteamGuardAccount(String id, Boolean skipChecks)
at Steam_Desktop_Authenticator.PhoneExtractForm.Extract()
at Steam_Desktop_Authenticator.PhoneExtractForm.CheckDevice()
at Steam_Desktop_Authenticator.PhoneExtractForm.PhoneExtractForm_Shown(Object sender, EventArgs e)
at System.Windows.Forms.Form.OnShown(EventArgs e)
at System.Windows.Forms.Form.CallShownEvent()
at System.Windows.Forms.Control.InvokeMarshaledCallbackDo(ThreadMethodEntry tme)
at System.Windows.Forms.Control.InvokeMarshaledCallbackHelper(Object obj)
at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
at System.Windows.Forms.Control.InvokeMarshaledCallback(ThreadMethodEntry tme)
at System.Windows.Forms.Control.InvokeMarshaledCallbacks()

************** Loaded Assemblies **************
mscorlib
Assembly Version: 4.0.0.0
Win32 Version: 4.6.1063.1 built by: NETFXREL3STAGE

CodeBase: file:///C:/Windows/Microsoft.NET/Framework/v4.0.30319/mscorlib.dll

Steam Desktop Authenticator
Assembly Version: 1.0.0.0
Win32 Version: 1.0.0

CodeBase: file:///C:/Users/thris/Downloads/Steam.Desktop.Authenticator.v1.0.0%20(1)/Steam%20Desktop%20Authenticator.exe

System
Assembly Version: 4.0.0.0
Win32 Version: 4.6.1038.0 built by: NETFXREL2

CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System/v4.0_4.0.0.0__b77a5c561934e089/System.dll

System.Windows.Forms
Assembly Version: 4.0.0.0
Win32 Version: 4.6.1038.0 built by: NETFXREL2

CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Windows.Forms/v4.0_4.0.0.0__b77a5c561934e089/System.Windows.Forms.dll

System.Drawing
Assembly Version: 4.0.0.0
Win32 Version: 4.6.1038.0 built by: NETFXREL2

CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Drawing/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll

Newtonsoft.Json
Assembly Version: 7.0.0.0
Win32 Version: 7.0.1.18622

CodeBase: file:///C:/Users/thris/Downloads/Steam.Desktop.Authenticator.v1.0.0%20(1)/Newtonsoft.Json.DLL

SteamAuth
Assembly Version: 1.0.0.0
Win32 Version: 1.0.0.0

CodeBase: file:///C:/Users/thris/Downloads/Steam.Desktop.Authenticator.v1.0.0%20(1)/SteamAuth.DLL

System.Core
Assembly Version: 4.0.0.0
Win32 Version: 4.6.1038.0 built by: NETFXREL2

CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Core/v4.0_4.0.0.0__b77a5c561934e089/System.Core.dll

System.Numerics
Assembly Version: 4.0.0.0
Win32 Version: 4.6.1038.0 built by: NETFXREL2

CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Numerics/v4.0_4.0.0.0__b77a5c561934e089/System.Numerics.dll

System.Runtime.Serialization
Assembly Version: 4.0.0.0
Win32 Version: 4.6.1038.0 built by: NETFXREL2

CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Runtime.Serialization/v4.0_4.0.0.0__b77a5c561934e089/System.Runtime.Serialization.dll

System.Xml.Linq
Assembly Version: 4.0.0.0
Win32 Version: 4.6.1038.0 built by: NETFXREL2

CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Xml.Linq/v4.0_4.0.0.0__b77a5c561934e089/System.Xml.Linq.dll

System.Xml
Assembly Version: 4.0.0.0
Win32 Version: 4.6.1038.0 built by: NETFXREL2

CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Xml/v4.0_4.0.0.0__b77a5c561934e089/System.Xml.dll

System.Data
Assembly Version: 4.0.0.0
Win32 Version: 4.6.1038.0 built by: NETFXREL2

CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_32/System.Data/v4.0_4.0.0.0__b77a5c561934e089/System.Data.dll

System.Configuration
Assembly Version: 4.0.0.0
Win32 Version: 4.6.1038.0 built by: NETFXREL2

CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Configuration/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Configuration.dll

Accessibility
Assembly Version: 4.0.0.0
Win32 Version: 4.6.1038.0 built by: NETFXREL2

CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/Accessibility/v4.0_4.0.0.0__b03f5f7f11d50a3a/Accessibility.dll

************** JIT Debugging **************
To enable just-in-time (JIT) debugging, the .config file for this
application or computer (machine.config) must have the
jitDebugging value set in the system.windows.forms section.
The application must also be compiled with debugging
enabled.

For example:

When JIT debugging is enabled, any unhandled exception
will be sent to the JIT debugger registered on the computer
rather than be handled by this dialog box.

Steam Parental support

Currently trying to link an authenticator on steam-parental restricted account results in general failure.

Are there any plans on adding proper support for unlocking steam parental prior to linking new authenticator? I think that a good idea would be to provide extra argument in UserLogin constructor that would accept string-based parental pin that can unlock given account.

See JustArchiNET/ArchiSteamFarm#113 for issue.

Check https://github.com/JustArchi/ArchiSteamFarm/blob/master/ArchiSteamFarm/ArchiWebHandler.cs#L545 for example of how I dealt with the issue of unlocking such accounts in my ASF.

Thank you in advance.

DeviceID format incorrect

The format of the deviceID generated by the SteamAuth library appears to be different than the type generated by Steam. Steam's deviceIDs appear to be random hex characters in groups of 8-4-4-4-12 seperated by a hyphen each.

Steam doesn't appear to be checking these atm, but we have to shift anyway to be on the safe side.

cannot RefreshSession()

Hello!

i got this error:

Unhandled Exception:
System.Net.WebException: Error getting response stream (Write: The authentication or decryption has failed.): SendFailure ---> System.IO.IOException: The authentication or decryption has failed. --->

what can i need to do?

Avoid return anti-patern

Hey

One of the reason i decide to rewrite steambot was of return antipatern there. The worst scenario is something like

bool CreateTradeOffer(params notImportant, out tradeOfferId)
{
    //only example
    if (params is wrong)
    {
        return false;
    }
    try
    {
        //call steam api       
        //tradeOfferId = callApi(params);    
    }
    catch
    {
        return false;
    }
}

This solutions has many disadvanates

  1. You have to always check true/false and somehow handle it, keep watching return it to higher level, etc, it is called pyramide of doom in programming
  2. You never know, why it is not working
  3. Consuming exceptions is rly bad idea :-)
  4. Exceptions should bubble on the top, where rollbacks transactions and should be handled by exception handler, etc

I undersntand is in SteamBot, because it is make mostly for newbs, or people which just need their account accepts treadeoffer autmaticaly during hole day.
SteamBot can not be used in any serios project, it is excelent knowledge source. And newbs programmers wont handle exceptions, so they call if(call) then, its more or less understable.

But SteamAuth is library. its not for newbs its for programmers. It should look like

long CreateTradeOffer(params notImportant)
{
    //only example
    if (params is wrong)
    {
        throw new OurValidationException(what is wrong);
    }
    try
    {
        //call steam api       
        //tradeOfferId = callApi(params);    
        return tradeOfferId;
    }
    catch(Exception ex)
    {
        _log.Error(params + ex.ToString())
        throw;
    }
}
  1. So u can always rely on result, its always success or exception
  2. Exception will stop hole your process
  3. You can have one handling place
  4. Difference between types of exceptions, you can make loop in x level higher to repeat
  5. More readable and clean code
  6. Everything is logged

I know now it is too late for change, and this library was made in rush to cover the 2fa mobile needs.

Now i dont know if i have rewrite it too or not :-))). Perhaps not, cos im rly lazy and set mobile auth is only one step. I will watch that confirmations.

If you read till here, you re rly persistent :-) I just need to split it out, thx for watching.

Failed to generate 2FA code

Its saying Login Failed to generate 2FA code. Make sure you have linked the authenticator via Steambot.
How do I link the authenticator via steambot?

Use of MultiAjax

With the newest update you are able to confirm multiple confirmations.

I have fiddled the request and here is it.

Tested on Motorola MotoG3.

I hope i decrypted all secret parameters :)

Letting the computer go to sleep or disconnecting the internet results in an unhandled exception.

As in title. I'm using Steam Desktop Authenticator (can't find the issues page there, I'm assuming it's supposed to go here), and allowing the computer to sleep, or unplugging a network cable, results in the error:

Unhandled exception has occurred in your application. If you click Continue, the application will ignore this error and attempt to continue. If you click Quit, the application will close immediately.

The remote name could not be resolved: 'api.steampowered.com'.

I've attached the error log here.

errorlog.txt

Unhandled Exception when adding new account fails

Geel, I'm reading through the code right now, and you are a visionary, I don't know how you even found these undocumented methods. I can sorta understand the code so if you get lazy and want someone to document the library, I can lend a hand.

Anyways, this happens when attempting to add a new account that fails because it already has mobile auth enabled on another account. It's after it asks me for an encryption key even though the login failed - which is probably the issue. Might want to catch that exception.

************** Exception Text **************
System.ArgumentException: Password is empty
   at Steam_Desktop_Authenticator.FileEncryptor.DecryptData(String password, String passwordSalt, String IV, String encryptedData)
   at Steam_Desktop_Authenticator.Manifest.GetAllAccounts(String passKey)
   at Steam_Desktop_Authenticator.Manifest.VerifyPasskey(String passkey)
   at Steam_Desktop_Authenticator.MainForm.loadAccountsList()
   at Steam_Desktop_Authenticator.MainForm.btnSteamLogin_Click(Object sender, EventArgs e)
   at System.Windows.Forms.Control.OnClick(EventArgs e)
   at System.Windows.Forms.Button.OnClick(EventArgs e)
   at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
   at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
   at System.Windows.Forms.Control.WndProc(Message& m)
   at System.Windows.Forms.ButtonBase.WndProc(Message& m)
   at System.Windows.Forms.Button.WndProc(Message& m)
   at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
   at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
   at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

CANT CONFIRM TRADES!

Its been working fine up until now no trade offers pop up anymore? even the confirm all button doesn't work it does the beep noise but nothing happends? i've got no idea what to do or how to fix it help please

How you program confirm trades?

Hi, i am making trade bot in php, and i need somehow confirm withdrawing trade. I saw some links and with them you can confirm it. But no link is working.

https://steamcommunity.com/mobileconf/details/?p=android:{ANDROID ID}&a={SOMETHINK}&k={SOMETHINK}&t=$result&m=android&tag=conf. This is the link i am using now.
My question is, how your program confirms the trade? And can your program make new account and add Steam Guard to him (fully working bot)? Sorry for my bad english 👍

Error getting response stream

I've made change to framework(4.5 from 4.5.2) and ran mono testbed.exe

Unhandled Exception:
System.Net.WebException: Error getting response stream (Write: The authentication or decryption has failed.): SendFailure ---> System.IO.IOException: The authentication or decryption has failed. ---> Mono.Security.Protocol.Tls.TlsException: Invalid certificate received from server. Error code: 0xffffffff800b010a
at Mono.Security.Protocol.Tls.Handshake.Client.TlsServerCertificate.RemoteValidation (Mono.Security.Protocol.Tls.ClientContext context, AlertDescription description) [0x00000] in :0
at Mono.Security.Protocol.Tls.Handshake.Client.TlsServerCertificate.validateCertificates (Mono.Security.X509.X509CertificateCollection certificates) [0x00000] in :0
at Mono.Security.Protocol.Tls.Handshake.Client.TlsServerCertificate.ProcessAsTls1 () [0x00000] in :0
at Mono.Security.Protocol.Tls.Handshake.HandshakeMessage.Process () [0x00000] in :0
at (wrapper remoting-invoke-with-check) Mono.Security.Protocol.Tls.Handshake.HandshakeMessage:Process ()
at Mono.Security.Protocol.Tls.ClientRecordProtocol.ProcessHandshakeMessage (Mono.Security.Protocol.Tls.TlsStream handMsg) [0x00000] in :0
at Mono.Security.Protocol.Tls.RecordProtocol.InternalReceiveRecordCallback (IAsyncResult asyncResult) [0x00000] in :0
--- End of inner exception stack trace ---
at Mono.Security.Protocol.Tls.SslStreamBase.AsyncHandshakeCallback (IAsyncResult asyncResult) [0x00000] in :0
--- End of inner exception stack trace ---
at System.Net.HttpWebRequest.EndGetRequestStream (IAsyncResult asyncResult) [0x00000] in :0
at System.Net.HttpWebRequest.GetRequestStream () [0x00000] in :0
at SteamAuth.SteamWeb.Request (System.String url, System.String method, System.Collections.Specialized.NameValueCollection data, System.Net.CookieContainer cookies, System.Collections.Specialized.NameValueCollection headers, System.String referer) [0x00000] in :0
at SteamAuth.SteamWeb.MobileLoginRequest (System.String url, System.String method, System.Collections.Specialized.NameValueCollection data, System.Net.CookieContainer cookies, System.Collections.Specialized.NameValueCollection headers) [0x00000] in :0
at SteamAuth.UserLogin.DoLogin () [0x00000] in :0
at TestBed.Program.Main (System.String[] args) [0x00000] in :0
[ERROR] FATAL UNHANDLED EXCEPTION: System.Net.WebException: Error getting response stream (Write: The authentication or decryption has failed.): SendFailure ---> System.IO.IOException: The authentication or decryption has failed. ---> Mono.Security.Protocol.Tls.TlsException: Invalid certificate received from server. Error code: 0xffffffff800b010a
at Mono.Security.Protocol.Tls.Handshake.Client.TlsServerCertificate.RemoteValidation (Mono.Security.Protocol.Tls.ClientContext context, AlertDescription description) [0x00000] in :0
at Mono.Security.Protocol.Tls.Handshake.Client.TlsServerCertificate.validateCertificates (Mono.Security.X509.X509CertificateCollection certificates) [0x00000] in :0
at Mono.Security.Protocol.Tls.Handshake.Client.TlsServerCertificate.ProcessAsTls1 () [0x00000] in :0
at Mono.Security.Protocol.Tls.Handshake.HandshakeMessage.Process () [0x00000] in :0
at (wrapper remoting-invoke-with-check) Mono.Security.Protocol.Tls.Handshake.HandshakeMessage:Process ()
at Mono.Security.Protocol.Tls.ClientRecordProtocol.ProcessHandshakeMessage (Mono.Security.Protocol.Tls.TlsStream handMsg) [0x00000] in :0
at Mono.Security.Protocol.Tls.RecordProtocol.InternalReceiveRecordCallback (IAsyncResult asyncResult) [0x00000] in :0
--- End of inner exception stack trace ---
at Mono.Security.Protocol.Tls.SslStreamBase.AsyncHandshakeCallback (IAsyncResult asyncResult) [0x00000] in :0
--- End of inner exception stack trace ---
at System.Net.HttpWebRequest.EndGetRequestStream (IAsyncResult asyncResult) [0x00000] in :0
at System.Net.HttpWebRequest.GetRequestStream () [0x00000] in :0
at SteamAuth.SteamWeb.Request (System.String url, System.String method, System.Collections.Specialized.NameValueCollection data, System.Net.CookieContainer cookies, System.Collections.Specialized.NameValueCollection headers, System.String referer) [0x00000] in :0
at SteamAuth.SteamWeb.MobileLoginRequest (System.String url, System.String method, System.Collections.Specialized.NameValueCollection data, System.Net.CookieContainer cookies, System.Collections.Specialized.NameValueCollection headers) [0x00000] in :0
at SteamAuth.UserLogin.DoLogin () [0x00000] in :0
at TestBed.Program.Main (System.String[] args) [0x00000] in :0

SteamGuardAccount.Session is null

An unhandled exception of type 'System.NullReferenceException' occurred in SteamBot.exe
Additional information: Object reference not set to an instance of an object.

SteamGuardAccount.Session is null upon reaching:
SteamGuardAccount.Session.SteamLogin = SteamWeb.Token; // Line 734 of Bot.cs

This is happening with both the nuget version of SteamAuth and a fresh compile from github.

My .auth file contains the following(it's what I dumped back when I was planning to use node-steam)
{"shared_secret":"JxxxxxxxxxxxxxpUxxxxxxx/xxo=","serial_number":"18000000000000000002","revocation_code":"000000","uri":"otpauth://totp/Steam:0000000000000?secret=E50000000000000000000RG0000000E2&issuer=Steam","server_time":"1456917892","account_name":"d000000000002","token_gid":"b00000000000009","identity_secret":"Hxxxxxxxxxxxxxxxxxxxxxxxxxk=","secret_1":"xxxxxxxxxxxxxxxxxxxxxxxxxxx=","status":1}

My trade confirmations aren't working.

Okay so I have 2 accounts, my trade confirmation doesn't work on 1 account and I can't refresh the session because it says Failed to refresh session. Please try again soon. AND on the other account I can do everything what's going on? And I don't wanna wait for another 7 days. Please help

Could not find a part of the path

************** Exception Text **************
System.IO.DirectoryNotFoundException: Could not find a part of the path 'C:\Users\XXXX\Downloads\SDA1.0.5\steamguard'.
at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
at System.IO.FileSystemEnumerableIterator1.CommonInit() at System.IO.FileSystemEnumerableIterator1..ctor(String path, String originalUserPath, String searchPattern, SearchOption searchOption, SearchResultHandler`1 resultHandler, Boolean checkHost)
at System.IO.Directory.EnumerateFiles(String path)
at Steam_Desktop_Authenticator.PhoneBridge.PullJsonNoRoot(String id)
at Steam_Desktop_Authenticator.PhoneBridge.ExtractSteamGuardAccount(String id, Boolean skipChecks)
at Steam_Desktop_Authenticator.PhoneExtractForm.Extract()
at Steam_Desktop_Authenticator.PhoneExtractForm.CheckDevice()
at Steam_Desktop_Authenticator.PhoneExtractForm.PhoneExtractForm_Shown(Object sender, EventArgs e)
at System.Windows.Forms.Form.OnShown(EventArgs e)
at System.Windows.Forms.Form.CallShownEvent()
at System.Windows.Forms.Control.InvokeMarshaledCallbackDo(ThreadMethodEntry tme)
at System.Windows.Forms.Control.InvokeMarshaledCallbackHelper(Object obj)
at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
at System.Windows.Forms.Control.InvokeMarshaledCallback(ThreadMethodEntry tme)
at System.Windows.Forms.Control.InvokeMarshaledCallbacks()

Getting GeneralFailure whenever I try to authenticate new accounts

I swear I authenticated an account fine just this morning but now I must have tried it 50+ times and I'm getting GeneralFailure whenever it gets to the part where it's supposed to send an SMS code to the phone number. I've tried multiple phone numbers and account and even on different computers. I've even tried using the Steam Desktop Authenticator and it just goes to the main menu whenever the SMS code is supposed to be sent.

Is this an issue with steam servers or the steamauth program?

System.Security.Cryptography.CryptographicException: Private/public key mismatch

Getting this on my Ubuntu VPS when using the linkauth command from SteamBot:

Unhandled Exception:
System.Security.Cryptography.CryptographicException: Private/public key mismatch
  at Mono.Security.Cryptography.RSAManaged.ImportParameters (RSAParameters parameters) [0x00000] in <filename unknown>:0
  at System.Security.Cryptography.RSACryptoServiceProvider.ImportParameters (RSAParameters parameters) [0x00000] in <filename unknown>:0
  at SteamAuth.UserLogin.DoLogin () [0x00000] in <filename unknown>:0
  at SteamBot.Bot.<LinkMobileAuth>b__63_0 () [0x00000] in <filename unknown>:0
  at System.Threading.Thread.StartInternal () [0x00000] in <filename unknown>:0
[ERROR] FATAL UNHANDLED EXCEPTION: System.Security.Cryptography.CryptographicException: Private/public key mismatch
  at Mono.Security.Cryptography.RSAManaged.ImportParameters (RSAParameters parameters) [0x00000] in <filename unknown>:0
  at System.Security.Cryptography.RSACryptoServiceProvider.ImportParameters (RSAParameters parameters) [0x00000] in <filename unknown>:0
  at SteamAuth.UserLogin.DoLogin () [0x00000] in <filename unknown>:0
  at SteamBot.Bot.<LinkMobileAuth>b__63_0 () [0x00000] in <filename unknown>:0
  at System.Threading.Thread.StartInternal () [0x00000] in <filename unknown>:0

The same command works fine on my Windows computer. Do you think it's a mono issue or something you can fix?

Edit: Found this. Looks to be a bug with mono.

Auto Bot

Can I use it as bot on jackpot site ? If yes then how ?

Is it accepts trades automatically.

Add this to a steambot?

Hey,
is it possible to add this to a steambot so he works the as before without escrow.
So login into a 2FA Account, Accept and Decline offers.

I can't get auth_token from login response

Hello. I've been inspecting the library just to get to know what requests should be used to link authenticator. Making a request to the https://steamcommunity.com/login/dologin results in such a response:
{'requires_twofactor': False, 'success': True, 'transfer_urls': ['https://store.steampowered.com/login/transfer', 'https://help.steampowered.com/login/transfer'], 'login_complete': True, 'transfer_parameters': {'remember_login': False, 'token': 'B05BCB25462C53AC9C0EF04E0EE16788C15CD819', 'token_secure': '5D9DC10A228229464E03CF7914958742BEB580D6', 'auth': '674d0b6c53d3889102219cf040cc0f24', 'steamid': '76561198349014164'}}
and no property called auth_token in order to use it in https://api.steampowered.com/ITwoFactorService/AddAuthenticator/v0001/
Can anybody help me here? Cookies and headers are exactly the same as in this library.

Unable to link authenticator: BadSMSCode

Hey,

I'm using SteamBot with SteamAuth. I want to link SteamBot with my account to be able to trade. Email confirmation is working. On setting SMS-Code an error occurs: "BadSMSCode". I'm sure to type the correct code :D

Any tips on how to fix it?

PS: My account is just 1 day old and I linken and unlinked SteamDesktopAuthenticator. Could this be an issue? If yes, can I create a new account and link it with SteamBot or are there any limitations.

Thanks for your help :)

Solved (Close the issue)

When i open the authenticator, i have to write down the encryption code, but when i do it, an error occours. Than i have two opions: 1 Leave the authenticator running 2 Close it. System.ArgumentNullException: Der Wert darf nicht NULL sein.
Parametername: inputBuffer

When i leave it running, it wont show the login token. When i try to copy it anyway the following error occours:
System.ArgumentNullException: Der Wert darf nicht NULL sein.
Parametername: text

I cant login until i get my login-token. Until the error is fixed i cant login into my steam accout. Im sure im in big trouble i really need your help and fast support. I did this only to try to stop the trade hold and for scrap.tf2.

I documentated everything via lightshots, maybe it'll help

  1. http://prntscr.com/a1kaiz
  2. http://prntscr.com/a1kbv4
  3. http://prntscr.com/a1kcbo

Example fetching Confirmations

Can someone give me an example of how to fetch confirmations with the .maFile? There is only a short description on the page and its not working for me at the moment. Would appreciated it.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.