Advertisement
Guest User

[RUBY] Send steam trade offer

a guest
Apr 20th, 2018
999
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 4.10 KB | None | 0 0
  1. require 'mechanize'
  2. require 'json'
  3. require 'open-uri'
  4. require 'openssl'
  5. require 'base64'
  6. require 'time'
  7.  
  8. def fa(shared_secret)
  9.       timestamp = Time.new.to_i
  10.       math = timestamp / 30
  11.       math = math.to_i
  12.       time_buffer =[math].pack('Q>')
  13.  
  14.       hmac = OpenSSL::HMAC.digest('sha1', Base64.decode64(shared_secret), time_buffer)
  15.  
  16.       start = hmac[19].ord & 0xf
  17.       last = start + 4
  18.       pre = hmac[start..last]
  19.       fullcode = pre.unpack('I>')[0] & 0x7fffffff
  20.  
  21.       chars = '23456789BCDFGHJKMNPQRTVWXY'
  22.       code= ''
  23.       for looper in 0..4 do
  24.         copy = fullcode #divmod
  25.         i = copy % chars.length #divmod
  26.         fullcode = copy / chars.length #divmod
  27.         code = code + chars[i]
  28.       end
  29.       puts code
  30.       return code
  31.  
  32. end
  33.  
  34. def pass_stamp(username,password,mech)
  35.       response = mech.post('https://store.steampowered.com/login/getrsakey/', {'username' => username})
  36.  
  37.       data = JSON::parse(response.body)
  38.       mod = data["publickey_mod"].hex
  39.       exp = data["publickey_exp"].hex
  40.       timestamp = data["timestamp"]
  41.  
  42.       key   = OpenSSL::PKey::RSA.new
  43.       key.e = OpenSSL::BN.new(exp)
  44.       key.n = OpenSSL::BN.new(mod)
  45.       ep = Base64.encode64(key.public_encrypt(password.force_encoding("utf-8"))).gsub("\n", '')
  46.       return {'password' => ep, 'timestamp' => timestamp }
  47. end
  48.  
  49. user = 'kamauth7'
  50. password = 'WhyKama22'
  51.  
  52. session = Mechanize.new { |agent|
  53.   agent.user_agent_alias = 'Windows Mozilla'
  54.   agent.follow_meta_refresh = true
  55.   agent.add_auth('https://steamcommunity.com/tradeoffer/new/send/', user, password)
  56.   agent.log = Logger.new("mech.log")
  57. }
  58.  
  59. data = pass_stamp(user,password, session)
  60. ep = data["password"]
  61. timestamp = data["timestamp"]
  62. session.add_auth('https://steamcommunity.com/tradeoffer/new/send/', user,  ep)
  63.  
  64. send = {
  65.       'password' => ep,
  66.       'username' => user,
  67.       'twofactorcode' =>fa('6C6E7of17nbA9JCVWzqFK+xvSRU='), #update
  68.       'emailauth' => '',
  69.       'loginfriendlyname' => '',
  70.       'captchagid' => '-1',
  71.       'captcha_text' => '',
  72.       'emailsteamid' => '',
  73.       'rsatimestamp' => timestamp,
  74.       'remember_login' => 'false'
  75. }
  76.  
  77. login = session.post('https://store.steampowered.com/login/dologin', send )
  78. responsejson = JSON::parse(login.body)
  79. if responsejson["success"] != true
  80.       puts "didn't sucded"
  81.       puts "probably 2fa code time diffrence,  retry "
  82.       exit
  83. end
  84.  
  85. responsejson["transfer_urls"].each { |url|
  86.       getcookies = session.post(url, responsejson["transfer_parameters"])
  87. }
  88.  
  89. session.get("https://steamcommunity.com/") do |page| ## to verify that you are logged in check this HTML
  90.      File.open('./body.html', 'w') {|f| f.puts page.content}
  91. end
  92.  
  93. sessionid = ''
  94. session.cookies.each { |c|
  95.       string = c.dup.to_s
  96.       if string.include?('sessionid')
  97.             sessionid = string.gsub('sessionid=', '')
  98.       end
  99. }
  100.  
  101. offer_link = 'https://steamcommunity.com/tradeoffer/new/?partner=410155236&token=H-yK-GFt'
  102. token = offer_link.split('token=', 2)[1]
  103. theirs = [{"appid" => 753,"contextid"=> "6","assetid" => "6705710171","amount" => 1 }]
  104. mine =  []
  105. params = {
  106.       'sessionid' => sessionid,
  107.       'serverid' => 1,
  108.       'partner' => '76561198370420964',
  109.       'tradeoffermessage' => '',
  110.       'json_tradeoffer' => {
  111.             "new_version" => true,
  112.            "version" => 4,
  113.            "me" => {
  114.                 "assets" => mine, #create this array
  115.                 "currency" => [],
  116.                 "ready" => false
  117.            },
  118.            "them" => {
  119.            "assets" => theirs, #create this array
  120.            "currency" => [],
  121.            "ready" => false
  122.             }
  123.       },
  124.       'captcha' => '',
  125.       'trade_offer_create_params' => {'trade_offer_access_token' => token}
  126. }
  127.  
  128.  
  129. #the issue begins from here
  130. begin
  131.       send_offer = session.post(
  132.         'http://steamcommunity.com/tradeoffer/new/send/',
  133.         params,
  134.         {'Referer' =>  "#{offer_link}", 'Origin' => 'https://steamcommunity.com/tradeoffer/new/send' }
  135.       )
  136.       puts send_offer.body
  137. rescue Mechanize::UnauthorizedError => e
  138.       puts e
  139.       puts e.page.content
  140. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement