Guest User

Untitled

a guest
Mar 12th, 2018
117
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.85 KB | None | 0 0
  1. #!/usr/bin/perl
  2. # SDF-COMMODE AUTO MODARATOR
  3. use Net::Telnet;
  4. #use strict;
  5. use warnings;
  6.  
  7. # allowed masters
  8. my @masters = ( 'pi','i0n','smj');
  9. # BAD GUYS
  10. my @enemys= ( 'pi' );
  11. # Varible Declarations
  12. my $server = "";
  13. my $buffer ="";
  14.  
  15. #Authentication info
  16. my $host = 'sdf.lonestar.org';
  17. my $username = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx';
  18. my $password = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx';
  19.  
  20. # Function for checking username against list of masters
  21. sub enemy_check {
  22. my $name = shift;
  23. # if submited with server, strip it out (warning: this is sloppy :P
  24. if ($name =~ m/@/) { $name =~ s/@.*$//; }
  25. foreach $enemy (@enemys) {
  26. if ($enemy =~ $name) {
  27. return 1;
  28. }
  29. }
  30. return 0;
  31. }
  32. sub master_check {
  33. my $name = shift;
  34. # #loop through array and compare
  35. # # return 1 if master, 0 if not
  36. foreach my $mast (@masters) {
  37. if ($mast eq $name) {
  38. return 1;
  39. }
  40. }
  41. return 0;
  42. }
  43. # usage: psh_login($user,$pass)
  44. sub psh_login {
  45. my $user= shift;
  46. my $pass = shift;
  47. #login to sdf, conect to a preval shell, and start com
  48. $server = new Net::Telnet (Prompt => '/(.){1,4}/');
  49. $server->open($host) or die "connect:[ $! ]";
  50. $server->waitfor('/login:.*$/') or die "waiting for login...";
  51. $server->print("$user");
  52. $server->waitfor('/Password:.*$/') or die "waiting for pass...";
  53. $server->print("$pass");
  54. $server->waitfor('/Please\spress\syour\sBACKSPACE\skey:.*$/') or die "waiting for backspace prompt...";
  55. $server->print("\b");
  56. $server->waitfor('/\[CONTINUE\].*$/');
  57. $server->print("");
  58. $server->waitfor('/sdf/') or die "waiting for shell prompt...";
  59. $server->print("com");
  60. $server->waitfor('/COMMODE/');
  61. }
  62. psh_login($username, $password, $host) or die "login: $1 ";
  63.  
  64. print "WARNING: Endlessloop...\n\n";
  65.  
  66. #Set the server not to time-out on an endless read
  67. $server->timeout(undef);
  68.  
  69. #DONT SPAM LOBBY
  70. $server->print("gbotlab");
  71.  
  72. #Empty input buffer to save processing time
  73. $server->buffer_empty;
  74.  
  75. # Start a loop while $server exists
  76. do {
  77.  
  78. #read input buffer one line at a time
  79. $buffer = $server->getline();
  80. # strip esc chars
  81. $buffer =~ s/\e\[[\d+\;?]+m//;
  82. $buffer =~ s/\e\[\d+m//;
  83. ### Command Function Parsing ###
  84. # test funtion 1 pm enabled
  85. if ($buffer =~ m/\!poke/) {
  86. $server->print("vROAR!!!! ");
  87. }
  88. # Goto function (master protected) Pm enabled
  89. elsif ($buffer =~ m/^[\[|\*](.{1,8})[\]|\*]\s{1,8}!g\s(.*)/ ) {
  90. if ((master_check($1)) == 1) {
  91. $server->print("v yes, $1");
  92. $server->print("g$2");
  93. } else { $server->print("vYour not my master."); };
  94.  
  95. }
  96. # PM Bomb (master protected) pm enabled
  97. elsif ($buffer =~ m/^[\[|\*](.{1,8})[\]|\*]\s{1,8}!b\s(.*)\-\-(.*)/) {
  98. if ((master_check($1)) == 1) {
  99. for (1 .. 20) {
  100. $server->print("s$2");
  101. $server->print("$3");
  102. }
  103. } else { $server->print("vYou're not my master."); };
  104. }
  105. #Dump this code (master enabled)
  106. elsif ($buffer =~ m/^[\[|\*](.{1,8})[\]|\*]\s{1,8}!dump/) {
  107. if ((master_check($1)) == 1) {
  108. # open itself and print contents to com
  109. open (ME, $0) or $server->("vERROR: [ $! ]");
  110. while (<ME>) {
  111. #if string contains password, replace with set amount of x's
  112. s/$password/XXXXXXXXXXXXXXXXXX/;
  113. $server->put("v$_");
  114. sleep 1;
  115. }
  116. close ME;
  117. } else { $server->print("vYou're not my master."); };
  118. }
  119. # Auto Zap (enemy aware)
  120. elsif ($buffer =~ m/^\[\d{2}:\d{2}:\d{2}\]\s(.*)\shas\sjoined\s/ ) {
  121. if ((enemy_check($1)) == 1) {
  122. $server->print("Z$1");
  123. $server->print("accessdenied");
  124. } else { $server->print("v$1 clear"); }
  125.  
  126.  
  127. }
  128. #Netris Cheat (master protected) pm enabled --STILL UNDER DEVOLPMENT--
  129. elsif ($buffer =~ m/^[\[|\*](.{1,8})[\]|\*]\s{1,8}!n\s(.*)/) {
  130. if ((master_check($1)) == 1) {
  131. $server->print("n$2");
  132. sleep 1;
  133. for (1 .. 5) {
  134. $buffer = $buffer . $server->getline();
  135. }
  136. $buffer = $server->getline ;
  137.  
  138. if ($buffer =~ m/you\sare\sin/) {
  139. $server->print("vnotvalidplayer");
  140. } else {
  141. sleep 10;
  142. for (1 .. 20) {
  143. sleep 2;
  144. $server->put("\x20");
  145. }
  146. #flush netris game from input buffer
  147. $server->buffer_empty;
  148. }
  149.  
  150.  
  151. } else { $server->print("vYou're not my master."); };
  152. }
  153. # mutiple optional args test
  154. elsif ($buffer =~ m/^[\[|\*](.{1,8})[\]|\*]\s{1,8}!d(\s(.*))??/) {
  155. if ($2) {
  156. $server->print("true : $2");
  157. } else { $server->print("vfalse"); };
  158. }
  159. # exit command (master checked) pm enabled
  160. elsif ($buffer =~ m/^[\[|\*](.{1,8})[\]|\*]\s{1,8}!q/) {
  161. if ((master_check($1)) == 1) {
  162. $server->print("vBye, Bye!");
  163. sleep 1;
  164. $server->put("q");
  165. $server->print("logout");
  166. die;
  167. } else { $server->print("vYou're not my master."); };
  168. }
  169. #elsif ($THIS_SHOULD_NOT_HAPPEN) {
  170. #die "huh?";
  171. #}
  172. else {
  173. #$server->print("a error: command not reconized");
  174. }
  175. ################################
  176.  
  177. print "$buffer";
  178. $buffer = "";
  179. } while ($server);
  180. #this last newline must be here for !dump ThAnks for reading
Add Comment
Please, Sign In to add comment