Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- var steam = require("steam");
- var steamTotp = require("steam-totp");
- var fs = require("fs");
- var crypto = require("crypto");
- var reload = require("require-reload")(require);
- var data = reload("./accounts.js");
- var ssfnPath = "./ssfn/";
- var build = function() {
- for (var index in data.accounts) {
- buildBot(index);
- }
- }
- var log = function(type, username, message) {
- switch (type) {
- case 0:
- result = "[STEAM] [U: " + username + "] " + message;
- break;
- case 1:
- result = "[ERROR] [U: " + username + "] " + message;
- break;
- }
- console.log(result);
- }
- var makeSha = function(bytes) {
- var hash = crypto.createHash("sha1");
- hash.update(bytes);
- return hash.digest();
- }
- var shuffleArray = function(array) {
- for (var i = array.length - 1; i > 0; i--) {
- var j = Math.floor(Math.random() * (i + 1));
- var temp = array[i];
- array[i] = array[j];
- array[j] = temp;
- }
- return array;
- }
- var toTimestamp = function(strDate){
- var datum = Date.parse(strDate);
- return datum/1000;
- }
- var buildBot = function(index) {
- var account = data.accounts[index];
- var username = account.username;
- var password = account.password;
- var sharedSecret = account.sharedSecret;
- var expireTimestamp = toTimestamp(account.expire);
- var games = account.games;
- var gamesPlayed = [];
- var sentryFileHash = ssfnPath + new Buffer(username).toString('base64');
- this["isrunning_" + index] = false;
- if(fs.existsSync(sentryFileHash)) {
- var steamClient = new steam.SteamClient();
- var steamUser = new steam.SteamUser(steamClient);
- var steamFriends = new steam.SteamFriends(steamClient);
- for (var i = 0; i < games.length; i++) {
- gamesPlayed[i] = {
- game_id: games[i]
- };
- }
- if(expireTimestamp > Math.floor(Date.now() / 1000)) {
- steamClient.connect();
- steamClient.once("connected", function() {
- if (sharedSecret != null) {
- mobileCode = steamTotp.generateAuthCode(sharedSecret);
- steamUser.logOn({
- account_name: username,
- password: password,
- two_factor_code: mobileCode
- });
- } else {
- var sentry = fs.readFileSync(sentryFileHash);
- steamUser.logOn({
- account_name: username,
- password: password,
- sha_sentryfile: makeSha(sentry)
- });
- }
- });
- steamClient.once("logOnResponse", function(logonResp) {
- if (logonResp.eresult == steam.EResult.OK) {
- log(0, username, "Успешная авторизация");
- steamFriends.setPersonaState(steam.EPersonaState.Online);
- steamUser.gamesPlayed({ games_played: shuffleArray(gamesPlayed) });
- this["isrunning_" + index] = true;
- } else if(logonResp.eresult == 5) {
- log(1, username, "Неверный пароль");
- this["isrunning_" + index] = false;
- } else {
- log(1, username, "Ошибка: " + logonResp.eresult);
- this["isrunning_" + index] = false;
- setTimeout(function() { buildBot(index); }, 300000);
- }
- }).once("sentry", function(sentry) {
- writeFileSync(sentryFileHash, sentry);
- });
- steamUser.once("updateMachineAuth", function(response, callback) {
- fs.writeFileSync(sentryFileHash, response.bytes);
- callback({ sha_file: makeSha(response.bytes) });
- });
- steamClient.once("error", function(errorResp) {
- log(1, username, errorResp);
- this["isrunning_" + index] = false;
- setTimeout(function() { buildBot(index); }, 300000);
- });
- setInterval(function() {
- if(this["isrunning_" + index] == true) {
- steamUser.gamesPlayed({ games_played: [] });
- setInterval(function() { steamUser.gamesPlayed({ games_played: shuffleArray(gamesPlayed) }); }, 10000);
- }
- }, 1800000);
- } else {
- log(1, username, "Истек срок подписки");
- }
- } else {
- log(1, username, "SSFN Файл не найден");
- }
- }
- build();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement