Advertisement
Guest User

Untitled

a guest
Jan 17th, 2017
200
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 25.62 KB | None | 0 0
  1. /* VARIABLES */
  2. var g_TimeToAccept = 180; //in seconds
  3. var g_MaxStateErrors = 10;
  4. var g_RetryAttemptTimeout = 3000;
  5. var g_Steamid = '';
  6. var g_Indentity_Secret = '';
  7. var g_Shared_Secret = '';
  8. var logOnOptions = {
  9. account_name: "timgodi",
  10. password: ""
  11. }
  12. var name = 903;
  13. var buyer = "ROX";
  14. var g_TotpKey = 'V8lORhd3Gs3rvH47M4xGx8iE3EM=';
  15. var pass = 'keks';
  16.  
  17.  
  18. /* REQUIRES */
  19. var speakeasy = require('speakeasy');
  20. var fs = require('fs');
  21. var request = require('request');
  22. var Steam = require('steam');
  23. var SteamTradeOffers = require('steam-tradeoffers');
  24. var steam = new Steam.SteamClient();
  25. var steamUser = new Steam.SteamUser(steam);
  26. var offers = new SteamTradeOffers();
  27. var SteamTotp = require('steam-totp');
  28. var steamFriends = new Steam.SteamFriends(steam);
  29. var SteamWebLogOn = require('steam-weblogon');
  30. var steamWebLogOn = new SteamWebLogOn(steam, steamUser);
  31. var SteamConf = require('steamcommunity-mobile-confirmations');
  32. var getSteamAPIKey = require('steam-web-api-key');
  33. var Random = require("random-js");
  34. var random = new Random(Random.engines.mt19937().autoSeed());
  35. var https = require('https');
  36. var mysql = require('mysql');
  37.  
  38.  
  39.  
  40. var options = {
  41. key: fs.readFileSync('./key.txt'),
  42. cert: fs.readFileSync('./ssl.txt'),
  43. };
  44.  
  45. /* Подключаем Экспресс */
  46. var express = require('express');
  47. var app = express();
  48. var server = https.createServer(options, app);
  49. var io = require('socket.io').listen(server);
  50. server.listen(9999);
  51.  
  52. var steamConf;
  53. var confirmTimer;
  54. var errorTimer;
  55. var lastWithdraw = [];
  56. var confirmattempts = 0;
  57. var ips = {};
  58. var clients = {};
  59. var data1 = {};
  60. var admins = [];
  61. var nicksooqa = '#2';
  62.  
  63.  
  64.  
  65. function names() {
  66. var symbols = ['ChipaKazakhGamer', 'Petrucho', 'nafsven', 'Slpme', 'DAR', 'MterBitClujNapocaGLHF', 'UbivaSHKA', 'Petrovi4', 'Raskaaka', 'Jsonsy',
  67. 'KillmeNOW', 'AnGrY', 'reSOldY', 'drug_dilLeR', 'megaMACH', 'Untopick', 'MAGAbrat', 'GlAvAr', 'Sollll', 'PrizRaK', 'Samuel'
  68. ];
  69. var rand = Math.floor(Math.random() * symbols.length);
  70. return symbols[rand];
  71. }
  72.  
  73.  
  74. /* READING ACCOUNT INFO */
  75. if (fs.existsSync(__dirname + '/' + logOnOptions['account_name'] + '.sga')) {
  76. file = JSON.parse(fs.readFileSync(__dirname + '/' + logOnOptions['account_name'] + '.sga'));
  77. g_Shared_Secret = file[0]["shared_secret"];
  78. g_Indentity_Secret = file[0]["identity_secret"];
  79. g_Steamid = file[0]["steamid"];
  80. logOnOptions['password'] = file[0]["password"];
  81. console.log(buyer + ' Shared secret is ' + g_Shared_Secret);
  82. console.log(buyer + ' Identity secret is ' + g_Indentity_Secret);
  83. console.log(buyer + ' SteamID is ' + g_Steamid);
  84. console.log(buyer + ' PAss is ' + file[0]["password"]);
  85. console.log(buyer + ' PAss is ' + logOnOptions['password']);
  86. }
  87.  
  88.  
  89. /* STEAM */
  90. function login() {
  91. clearTimeout(errorTimer);
  92. steam.connect();
  93. logOnOptions['two_factor_code'] = SteamTotp.generateAuthCode(g_Shared_Secret);
  94. }
  95. login();
  96.  
  97. steam.on('connected', function() {
  98. steamUser.logOn(logOnOptions);
  99. });
  100.  
  101. steam.on('debug', console.log);
  102.  
  103. steam.on('logOnResponse', function(result) {
  104. if (result.eresult == Steam.EResult.OK) {
  105. console.log(buyer + ' Logged in!');
  106. reWebLogOn();
  107. steamFriends.setPersonaState(Steam.EPersonaState.Online);
  108. } else console.log(buyer + " Login error: " + result.eresult);
  109. });
  110.  
  111. steam.on('error', function(e) {
  112. console.log(buyer + ' Catched steam error: ' + JSON.stringify(e));
  113. errorTimer = setTimeout(function() {
  114. console.log(buyer + ' Relogging...');
  115. login();
  116. }, 15000);
  117. });
  118.  
  119. function reWebLogOn() {
  120. console.log('WebLogOn called');
  121. steamWebLogOn.webLogOn(function(webSessionID, newCookie) {
  122. console.log('webLogOn and webSessionID ok');
  123. var hash = require('crypto').createHash('sha1');
  124. hash.update(Math.random().toString());
  125. hash = hash.digest('hex');
  126. var device_id = 'android:' + hash;
  127. steamConf = new SteamConf({
  128. steamid: g_Steamid,
  129. identity_secret: g_Indentity_Secret,
  130. device_id: device_id,
  131. webCookie: newCookie,
  132. });
  133. getSteamAPIKey({
  134. sessionID: webSessionID,
  135. webCookie: newCookie
  136. }, function(err, APIKey) {
  137. console.log(buyer + ' Got an API key(' + APIKey + ').');
  138. offers.setup({
  139. sessionID: webSessionID,
  140. webCookie: newCookie,
  141. APIKey: APIKey
  142. }, function(err) {
  143. if (typeof callback == "function") {
  144. callback();
  145. }
  146. if (err) {
  147. console.log('Offers err');
  148. reWebLogOn();
  149. return;
  150. }
  151. });
  152.  
  153. console.log(buyer + ' Offers ok');
  154.  
  155.  
  156.  
  157. });
  158.  
  159. });
  160. }
  161.  
  162. /* CONFIRMATIONS */
  163. function confirmTrade() {
  164. steamConf.FetchConfirmations(function(err, confs) {
  165. //confirmattempts++;
  166. //if(confirmattempts > 60){
  167. //clearInterval(lastWithdraw[lastWithdraw.length-1].timer);
  168. //confirmattempts = 0;
  169. //}
  170. if (err) {
  171. console.log('confirmTrade(): ' + err);
  172. reWebLogOn();
  173. return false;
  174. }
  175.  
  176. console.log(buyer + ' confirmTrade() received ' + confs.length + ' confirmations');
  177.  
  178. if (!confs.length) {
  179. return false;
  180. }
  181.  
  182. steamConf.AcceptConfirmation(confs[0], function(err, result) {
  183.  
  184. if (err) {
  185. console.log(buyer + ' confirmTrade(): ' + err);
  186. reWebLogOn();
  187. return false;
  188. }
  189. clearInterval(lastWithdraw[lastWithdraw.length - 1].timer);
  190. var totp = speakeasy.totp({
  191. secret: g_TotpKey
  192. });
  193. if (lastWithdraw.length - 1 >= 0 && lastWithdraw[lastWithdraw.length - 1]) {
  194.  
  195. }
  196. lastWithdraw.splice(lastWithdraw.indexOf(lastWithdraw[lastWithdraw.length - 1]), 1);
  197. console.log(buyer + ' confirmTrade(): ' + result);
  198. return true;
  199. });
  200. });
  201. }
  202.  
  203.  
  204. function generateToken(length) {
  205. var symbols = ['1', '2', '3', '4', '5', '6', '7', '8', '9', '0',
  206. 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z',
  207. 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'
  208. ];
  209. var token = '';
  210. for (var i = 0; i < length; i++) {
  211. token = token + symbols[random.integer(0, symbols.length - 1)];
  212. }
  213. return token;
  214. }
  215.  
  216. function generateTokenLow(length) {
  217. var symbols = ['1', '2', '3', '4', '5', '6', '7', '8', '9', '0',
  218. 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'
  219. ];
  220. var token = '';
  221. for (var i = 0; i < length; i++) {
  222. token = token + symbols[random.integer(0, symbols.length - 1)];
  223. }
  224. return token;
  225. }
  226.  
  227.  
  228. var dauns = [];
  229. var ips = {};
  230. var admins = [];
  231. var countusers = 0;
  232.  
  233. io.sockets.on('connection', function(socket) {
  234. countusers++;
  235. io.sockets.emit('online',countusers);
  236. var clientIP = socket.client.conn.remoteAddress;
  237. socket.on('disconnect', function() {
  238. countusers--;
  239. io.sockets.emit('online',countusers);
  240. });
  241. socket.on('checkebana', function(data) {
  242. /* Кулдаун подключения к айпи */
  243. if (ips[clientIP] + 5 >= time()) {
  244. socket.emit('down','5s');
  245. return;
  246. } else {
  247. ips[clientIP] = time();
  248. }
  249. var tid = data;
  250.  
  251. /* Получаем оффер */
  252. offers.getOffer({
  253. tradeofferid: tid
  254. }, function(err, trade) {
  255. /* Показываем ошибку */
  256. if (err) {
  257. console.log('Ошибка при загрузке оффера');
  258. console.log(err);
  259. socket.emit('checkebana','error');
  260. reWebLogOn();
  261. } else {
  262.  
  263.  
  264.  
  265. var status;
  266.  
  267.  
  268. /* Оффер принят */
  269. if (trade.response.offer.trade_offer_state == 3) {
  270. status = 'Оффер принят';
  271. /* Оффер отказан пользователем */
  272. } else if (trade.response.offer.trade_offer_state == 7) {
  273. status = 'Оффер отменен пользователем';
  274. /* Оффер не принят */
  275. } else {
  276. status = 'Оффер не принят';
  277. }
  278.  
  279. /* Выводим в консоль */
  280. console.log('Проверка оффера [' + trade.response.offer.tradeofferid + '] с ответом [' + status + '].');
  281.  
  282. /* Оффер принят */
  283. if (trade.response.offer.trade_offer_state == 3) {
  284. socket.emit('checkebana','accept');
  285. /* Оффер отказан пользователем */
  286. } else if (trade.response.offer.trade_offer_state == 7) {
  287. socket.emit('checkebana','cross');
  288. /* Оффер не принят */
  289. } else {
  290. socket.emit('checkebana','unk');
  291. }
  292.  
  293.  
  294. }
  295. });
  296. });
  297.  
  298. socket.on('tradeyopta', function(data) {
  299. /* Кулдаун подключения к айпи */
  300. if (ips[clientIP] + 5 >= time()) {
  301. socket.emit('errortrade','e');
  302. console.log('trade couldown')
  303. return;
  304. } else {
  305. ips[clientIP] = time();
  306. }
  307. /* Получаемые вещи */
  308. assetids = data.assetids;
  309. /* Партнер */
  310. var partner = data.partner;
  311. /* Токен */
  312. var token = data.token;
  313. if(typeof token === 'undefined'){
  314. socket.emit('errortrade','e');
  315. return;
  316. }
  317. /* Номер стима */
  318. var steamid = data.steamid;
  319. var price = data.price;
  320. console.log(steamid)
  321. console.log(price)
  322. /* Игра ебаная */
  323. var appid = data.appid;
  324. if(typeof appid === 'undefined') appid = 730;
  325. console.log('appID - ', appid);
  326. /* Отправляемые вещи */
  327. var senditems = [];
  328.  
  329. /* Создаем массив отправления вещей */
  330. for (var i = 0; i < assetids.length; i++) {
  331. if (assetids[i] == "") continue;
  332. assetids[i] = assetids[i].toString();
  333. senditems.push({
  334. appid: appid,
  335. contextid: 2,
  336. assetid: assetids[i]
  337. });
  338. }
  339. /* Показываем консоли отправки */
  340. console.log('Получаем вещи от [' + partner + '] с токеном [' + token + ']');
  341. console.log('https://steamcommunity.com/tradeoffer/new/?partner=' + partner + '&token=' + token + '');
  342. console.log(senditems);
  343. console.log(assetids);
  344. var message;
  345. var security;
  346. security = generateTokenLow(10);
  347. message = 'SKINSSWAP.TRADE DEPOSIT | security code - ' +security+ '. Check security code before trade for protect your skins!';
  348. var recieved = false;
  349. var get_hold_retry = 1;
  350. var getHold = function() {
  351.  
  352.  
  353. var load_user_retry = 1;
  354. var loadUserInventory = function() {
  355. if (1 == 1) {
  356. if (2 == 2) {
  357. //making offer
  358. console.log(buyer + " Trying to make offer...");
  359. var makeOfferRetry = 1;
  360. var makeOffer = function() {
  361. offers.makeOffer({
  362. partnerAccountId: partner,
  363. accessToken: token,
  364. itemsFromThem: senditems,
  365. itemsFromMe: [],
  366. message: message
  367. }, function(err, responseOffer) {
  368. if (err) {
  369. makeOfferRetry--;
  370. console.log(buyer + ' Error sending tradeoffer: ' + err);
  371. reWebLogOn();
  372. if (makeOfferRetry >= 0) {
  373. console.log(buyer + ' Retry step: ' + makeOfferRetry);
  374. setTimeout(function() {
  375. makeOffer();
  376. }, g_RetryAttemptTimeout);
  377. } else {
  378. console.log(buyer + ' Cant send offer to user(' + steamid + '), sending error emit to user.');
  379. socket.emit('errortrade','e');
  380. var totp = speakeasy.totp({
  381. secret: g_TotpKey
  382. });
  383. var nowd = new Date();
  384. var date52 = nowd.getDate() + '.' + nowd.getMonth() + '.' + nowd.getFullYear() + ' ' + nowd.getHours() + ':' + nowd.getMinutes();
  385.  
  386. return;
  387. }
  388. } else {
  389. var lastoffer = responseOffer.tradeofferid;
  390. console.log(buyer + ' Sent offer #' + lastoffer + ' to user(' + steamid + '), sending success emit to user.');
  391. var stateErrors = 0;
  392. /* Показываем консоли о успешном трейде */
  393. console.log('Внос вещей с номером [' + lastoffer + '] отправлен сука!');
  394. /* Подтверждаем сделку */
  395. var tradeset = {
  396. success: true,
  397. code: security,
  398. tid: lastoffer,
  399. steamid: g_Steamid,
  400. bot: nicksooqa
  401. };
  402. socket.emit('success',tradeset);
  403. var nowd = new Date();
  404. var date52 = nowd.getDate() + '.' + nowd.getMonth() + '.' + nowd.getFullYear() + ' ' + nowd.getHours() + ':' + nowd.getMinutes();
  405.  
  406. var totp = speakeasy.totp({
  407. secret: g_TotpKey
  408. });
  409. var timer = g_TimeToAccept;
  410. var timerID = setInterval(function() {
  411. timer--;
  412.  
  413. //if user was late with accepting offer bot decline it
  414. if(timer <= 0){
  415. console.log("User late with accepting an offer.");
  416. offers.cancelOffer({tradeOfferId: responseOffer.tradeofferid});
  417. var totp = speakeasy.totp({ secret : g_TotpKey });
  418. socket.emit("err", { error : "You are late with accepting an offer.", totp : totp });
  419. clearInterval(timerID);
  420. return;
  421. }
  422.  
  423. if(timer % 10 == 0 && timer >= 1){
  424. offers.getOffer({ tradeofferid : responseOffer.tradeofferid }, function(error, body){
  425. if (error) {
  426. stateErrors++;
  427. console.log(error);
  428. } else {
  429. offer = body.response.offer;
  430. console.log('Current offer state is (' + offer.trade_offer_state + ' - ' + responseOffer.tradeofferid + ').');
  431. //if user accept trade offer items are gonna be added to his inventory
  432.  
  433. //if offer was declined
  434. if(offer.trade_offer_state == 7){
  435. console.log("User declined an offer.");
  436. var totp = speakeasy.totp({ secret : g_TotpKey });
  437. socket.emit("err", { error : "You are declined an offer.", totp : totp });
  438. clearInterval(timerID);
  439. return;
  440. }
  441.  
  442. //if offer has unexpected state
  443. if(offer.trade_offer_state != 7 && offer.trade_offer_state != 3 && offer.trade_offer_state != 2){
  444. console.log("Unexpected state of tradeoffer(" + offer.trade_offer_state + ").");
  445. var totp = speakeasy.totp({ secret : g_TotpKey });
  446. socket.emit("err", { error : "Offer has unexpected state.", totp : totp });
  447. clearInterval(timerID);
  448. return;
  449. }
  450.  
  451. //if offer was accepted
  452. if(offer.trade_offer_state == 3){
  453. console.log("User(" + steamid + ") accepted deposit offer(" + responseOffer.tradeofferid + ")");
  454. var totp = speakeasy.totp({ secret : g_TotpKey });
  455. socket.emit("itemsrecieved", {
  456. steamid : steamid,
  457. price : price,
  458. accept : 'You have accepted this offer',
  459. totp : totp
  460. });
  461. //query("UPDATE `users` SET `balance` = '"+price+"' WHERE `clientid` = '"+name+"' AND `steamid` = '"+steamid+"'")
  462. request('http://skinsswap.trade/gaybalance.php?steamid='+steamid+'&balance='+price+'', function (error, response, body) {
  463. if (!error && response.statusCode == 200) {
  464.  
  465. }
  466. })
  467. clearInterval(timerID);
  468. return;
  469. }
  470. }
  471. });
  472.  
  473. //if getState returns too much errors
  474. if(stateErrors >= g_MaxStateErrors){
  475. console.log("Too much errors with getOffers(" + g_MaxStateErrors + ").");
  476. offers.cancelOffer({tradeOfferId: responseOffer.tradeofferid});
  477. var totp = speakeasy.totp({ secret : g_TotpKey });
  478. socket.emit("err", { error : "Too much errors.", totp : totp });
  479. clearInterval(timerID);
  480. return;
  481. }
  482. }
  483.  
  484. }, 1000);
  485. }
  486. });
  487. };
  488. makeOffer();
  489. } else {
  490. var totp = speakeasy.totp({
  491. secret: g_TotpKey
  492. });
  493. }
  494. } else {
  495. var totp = speakeasy.totp({
  496. secret: g_TotpKey
  497. });
  498. }
  499.  
  500.  
  501. };
  502. loadUserInventory();
  503.  
  504. console.log(buyer + ' Success!');
  505.  
  506.  
  507. };
  508. getHold();
  509.  
  510. })
  511. })
  512.  
  513.  
  514.  
  515.  
  516.  
  517.  
  518.  
  519.  
  520.  
  521. /* ERROR CATCHER */
  522. process.on('uncaughtException', function(err) {
  523. console.log(err);
  524. if (err == "[Error: Disconnected]" || err == "Error: Disconnected") {
  525. login();
  526. }
  527. });
  528.  
  529. function time() {
  530. return parseInt(new Date().getTime() / 1000)
  531. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement