Advertisement
Guest User

Untitled

a guest
Jun 22nd, 2016
1,280
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.83 KB | None | 0 0
  1. var steam = require("steam");
  2. var steamTotp = require("steam-totp");
  3. var fs = require("fs");
  4. var crypto = require("crypto");
  5.  
  6. var reload = require("require-reload")(require);
  7. var data = reload("./accounts.js");
  8. var ssfnPath = "./ssfn/";
  9.  
  10. var build = function() {
  11. for (var index in data.accounts) {
  12. buildBot(index);
  13. }
  14. }
  15.  
  16. var log = function(type, username, message) {
  17. switch (type) {
  18. case 0:
  19. result = "[STEAM] [U: " + username + "] " + message;
  20. break;
  21. case 1:
  22. result = "[ERROR] [U: " + username + "] " + message;
  23. break;
  24. }
  25. console.log(result);
  26. }
  27.  
  28. var makeSha = function(bytes) {
  29. var hash = crypto.createHash("sha1");
  30. hash.update(bytes);
  31. return hash.digest();
  32. }
  33.  
  34. var shuffleArray = function(array) {
  35. for (var i = array.length - 1; i > 0; i--) {
  36. var j = Math.floor(Math.random() * (i + 1));
  37. var temp = array[i];
  38. array[i] = array[j];
  39. array[j] = temp;
  40. }
  41. return array;
  42. }
  43.  
  44. var toTimestamp = function(strDate){
  45. var datum = Date.parse(strDate);
  46. return datum/1000;
  47. }
  48.  
  49. var buildBot = function(index) {
  50. var account = data.accounts[index];
  51. var username = account.username;
  52. var password = account.password;
  53. var sharedSecret = account.sharedSecret;
  54.  
  55. var expireTimestamp = toTimestamp(account.expire);
  56. var games = account.games;
  57. var gamesPlayed = [];
  58. var sentryFileHash = ssfnPath + new Buffer(username).toString('base64');
  59.  
  60. this["isrunning_" + index] = false;
  61.  
  62. if(fs.existsSync(sentryFileHash)) {
  63. var steamClient = new steam.SteamClient();
  64. var steamUser = new steam.SteamUser(steamClient);
  65. var steamFriends = new steam.SteamFriends(steamClient);
  66.  
  67. for (var i = 0; i < games.length; i++) {
  68. gamesPlayed[i] = {
  69. game_id: games[i]
  70. };
  71. }
  72.  
  73. if(expireTimestamp > Math.floor(Date.now() / 1000)) {
  74. steamClient.connect();
  75.  
  76. steamClient.once("connected", function() {
  77. if (sharedSecret != null) {
  78. mobileCode = steamTotp.generateAuthCode(sharedSecret);
  79. steamUser.logOn({
  80. account_name: username,
  81. password: password,
  82. two_factor_code: mobileCode
  83. });
  84. } else {
  85. var sentry = fs.readFileSync(sentryFileHash);
  86. steamUser.logOn({
  87. account_name: username,
  88. password: password,
  89. sha_sentryfile: makeSha(sentry)
  90. });
  91. }
  92. });
  93.  
  94. steamClient.once("logOnResponse", function(logonResp) {
  95. if (logonResp.eresult == steam.EResult.OK) {
  96. log(0, username, "Успешная авторизация");
  97. steamFriends.setPersonaState(steam.EPersonaState.Online);
  98. steamUser.gamesPlayed({ games_played: shuffleArray(gamesPlayed) });
  99. this["isrunning_" + index] = true;
  100. } else if(logonResp.eresult == 5) {
  101. log(1, username, "Неверный пароль");
  102. this["isrunning_" + index] = false;
  103. } else {
  104. log(1, username, "Ошибка: " + logonResp.eresult);
  105. this["isrunning_" + index] = false;
  106. setTimeout(function() { buildBot(index); }, 300000);
  107. }
  108. }).once("sentry", function(sentry) {
  109. writeFileSync(sentryFileHash, sentry);
  110. });
  111.  
  112. steamUser.once("updateMachineAuth", function(response, callback) {
  113. fs.writeFileSync(sentryFileHash, response.bytes);
  114. callback({ sha_file: makeSha(response.bytes) });
  115. });
  116.  
  117. steamClient.once("error", function(errorResp) {
  118. log(1, username, errorResp);
  119. this["isrunning_" + index] = false;
  120. setTimeout(function() { buildBot(index); }, 300000);
  121. });
  122.  
  123. setInterval(function() {
  124. if(this["isrunning_" + index] == true) {
  125. steamUser.gamesPlayed({ games_played: [] });
  126. setInterval(function() { steamUser.gamesPlayed({ games_played: shuffleArray(gamesPlayed) }); }, 10000);
  127. }
  128. }, 1800000);
  129. } else {
  130. log(1, username, "Истек срок подписки");
  131. }
  132. } else {
  133. log(1, username, "SSFN Файл не найден");
  134. }
  135. }
  136.  
  137. build();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement