sneak.php

  1.  /***********************************************************************
  2.  * sneak.php - v 1.27 - 2003/02/12
  3.  *
  4.  * SNEAK: Snarkles.Net Encryption Assortment Kit
  5.  * =============================================
  6.  * Send and decode messages using a number of different methods
  7.  *
  8.  * Please forward any suggestions, problems, improvements, etc. to the 
  9.  * e-mail address below. Thanks! :D
  10.  *
  11.  * Copyright (c) 2000 - 2004 snarkles ([email protected])
  12.  * Distributed under the GNU/GPL license (see http://www.gnu.org/copyleft/)
  13.  * URL@    z4.cn
  14.  ************************************************************************/
  15.  /************************************************************************
  16.  * Changelog
  17.  * =========
  18.  * v 1.27 - 2004/10/28:
  19.  * - Added zero padding to hex conversions < 10. Thanks to bubuche93 for
  20.  *   the heads up.
  21.  *
  22.  * v 1.26 - 2003/06/20:
  23.  * - Added function strip_spaces to remove spaces prior to trying to
  24.  *   base64 decode a string. Thanks for Jeian and Goldfish for pointing
  25.  *   this out.
  26.  *   
  27.  * v 1.25 - 2003/02/12:
  28.  * - Fixed a bug in form that initially displayed an error about an 
  29.  *   undefined variable in the textbox if error_reporting is set to max. 
  30.  *   Thanks to Justin Hagstrom for notifying me of the problem. :)
  31.  *
  32.  * v 1.24 - 2003/02/01:
  33.  * - D'oh! Fixed a bug I introduced with the Caesar Bruteforce option that
  34.  *   stuck that XSS vulnerability right back in there! :P
  35.  *
  36.  * v 1.23 - 2003/01/27:
  37.  * - Added "Caesar Bruteforce" option which will attempt all 26 
  38.  *   possible shifts of a Caesar (rotation) cipher.
  39.  *
  40.  * v 1.22 - 2003/01/26:
  41.  * - Textbox now retains original text value, so you can try different 
  42.  *   encryption methods on the same text without copying/pasting
  43.  *   Thanks to barnseyboy who suggested the feature. :)
  44.  *
  45.  * v 1.21 - 2003/01/14:
  46.  * - Fixed XSS vulnerability that could potentially allow people to steal
  47.  *   cookies from sites with the script installed.
  48.  *   Credit for spotting this vulnerability goes to JeiAr from
  49.  *   CyberArmy Security Research (http://www.security-research.org/)
  50.  *
  51.  * v 1.20 - 2002/08/10:
  52.  * - Added HTML entity encode/decode option
  53.  * - Changed order of listings so encoding is always before decoding
  54.  * - Fixed problem that caused special characters to be lost when 
  55.  *   writing back to the screen
  56.  *
  57.  * v 1.11 - 2002/02/21:
  58.  * - Cleaned up code some--now all chunk_splitting and str_replacing is 
  59.  *   done within the functions, rather than during the switch statement
  60.  * - Specified CRYPT_STD_DES in crypt() function, to fix problem with PHP 4.1.2
  61.  *
  62.  * v 1.10 - 2002/02/17:
  63.  * - Added bin2hex, hex2bin, and pig latin functions
  64.  *
  65.  * v 1.00 - 2002/02/15:
  66.  * - Nothing yet, but I'm sure that'll CHANGE. Ha! Get it? ;)
  67.  *************************************************************************/
  68. $version = "1.27";
  69. // You can alter the HTML below to make this script fit more inline with 
  70. // the rest of your site.
  71. ?>
  72.     SNEAK: Snarkles.Net Encryption Assortment Kit
  73.     
  74.     tyle type="text/css">
  75.     
  76.     
  77. // Declare some functions for encryption not included in PHP
  78. function asc2bin($str) {
  79.     $text_array = explode("/r/n", chunk_split($str, 1));
  80.     for ($n = 0; $n < count($text_array) - 1; $n++) {
  81.         $newstring .= substr("0000".base_convert(ord($text_array[$n]), 10, 2), -8);
  82.     }
  83.     $newstring = chunk_split($newstring, 8, " ");
  84.     return $newstring;
  85. }
  86. function bin2asc($str) {
  87.     $str = str_replace(" ", "", $str);
  88.     $text_array = explode("/r/n", chunk_split($str, 8));
  89.     for ($n = 0; $n < count($text_array) - 1; $n++) {
  90.         $newstring .= chr(base_convert($text_array[$n], 2, 10));
  91.     }
  92.     return $newstring;
  93. }
  94. // Made this alias because "bin2hex" would be confusing in the context of this script :P
  95. function asc2hex($str) {
  96.     return chunk_split(bin2hex($str), 2, " ");
  97. }
  98. function hex2asc($str) {
  99.     $str = str_replace(" ", "", $str);
  100.     for ($n=0; $n<strlen($str); $n+=2) {
  101.         $newstring .=  pack("C", hexdec(substr($str, $n, 2)));
  102.     }
  103.     return $newstring;
  104. }
  105. function binary2hex($str) {
  106.     $str = str_replace(" ", "", $str);
  107.     $text_array = explode("/r/n", chunk_split($str, 8));
  108.     for ($n = 0; $n < count($text_array) - 1; $n++) {
  109.         $newstring .= str_pad(base_convert($text_array[$n], 2, 16), 2, "0", STR_PAD_LEFT);
  110.     }
  111.     $newstring = chunk_split($newstring, 2, " ");
  112.     return $newstring;
  113. }
  114. function hex2binary($str) {
  115.     $str = str_replace(" ", "", $str);
  116.     $text_array = explode("/r/n", chunk_split($str, 2));
  117.     for ($n = 0; $n < count($text_array) - 1; $n++) {
  118.         $newstring .= substr("0000".base_convert($text_array[$n], 16, 2), -8);
  119.     }
  120.     $newstring = chunk_split($newstring, 8, " ");
  121.     return $newstring;
  122. }
  123. function caesarbf($str) {
  124.     $alpha = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
  125.     echo "/n";
  126.     for ($n = 1; $n < 26; $n++) {
  127.         $cipher = substr($alpha, $n, 26 - $n) . substr($alpha, 0, $n) . substr($alpha, 26+$n, 52-$n) . substr($alpha, 26, $n);
  128.         if ($n % 2 == 0) {
  129.             echo '';
  130.         } else {
  131.             echo '';
  132.         }
  133.         echo "<td>ROT-$n". strtr($str, $alpha, $cipher) ."";
  134.     }
  135.     echo "/n";
  136.     echo "/n";
  137. }
  138. function entityenc($str) {
  139.     $text_array = explode("/r/n", chunk_split($str, 1));
  140.     for ($n = 0; $n < count($text_array) - 1; $n++) {
  141.         $newstring .= "&#" . ord($text_array[$n]) . ";";
  142.     }
  143.     return $newstring;
  144. }
  145. function entitydec($str) {
  146.     $str = str_replace(';', '; ', $str);
  147.     $text_array = explode(' ', $str);
  148.     for ($n = 0; $n < count($text_array) - 1; $n++) {
  149.         $newstring .= chr(substr($text_array[$n], 2, 3));
  150.     }
  151.     return $newstring;
  152. }
  153. function l33t($str) {
  154.     $from = 'ieastoIEASTO';
  155.     $to = '134570134570';
  156.     $newstring = strtr($str, $from, $to);
  157.     return $newstring;
  158. }
  159. function del33t($str) {
  160.     $from = '134570';
  161.     $to = 'ieasto';
  162.     $newstring = strtr($str, $from, $to);
  163.     return $newstring;
  164. }
  165. function igpay($str) {
  166.     $text_array = explode(" ", $str);
  167.     for ($n = 0; $n < count($text_array); $n++) {
  168.         $newstring .= substr($text_array[$n], 1) . substr($text_array[$n], 0, 1) . "ay ";
  169.     }
  170.     return $newstring;
  171. }
  172. function unigpay($str) {
  173.     $text_array = explode(" ", $str);
  174.     for ($n = 0; $n < count($text_array); $n++) {
  175.         $newstring .= substr($text_array[$n], -3, 1) . substr($text_array[$n], 0, strlen($text_array[$n]) - 3) . " ";
  176.     }
  177.     return $newstring;
  178. }
  179. function rot13($str) {
  180.     $from = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
  181.     $to   = 'nopqrstuvwxyzabcdefghijklmNOPQRSTUVWXYZABCDEFGHIJKLM';
  182.     $newstring = strtr($str, $from, $to);
  183.     return $newstring;
  184. }
  185. function strip_spaces($str) {
  186.     $str = str_replace(" ", "", $str);
  187.     return $str;
  188. }
  189. // Check to see if form has been submitted yet
  190. if(isset($_POST['submit'])) {
  191.     // Yes, so make sure they filled something in
  192.     $text = $_POST['text'];
  193.     if($text == '') {
  194.         die("

    Fill in the form, dinglefritz! ;)

    /n"
    );
  195.     }
  196.     // Looks good, so clean up data
  197.     $text = urldecode(stripslashes($text));
  198.     // Make copy of original text for later display
  199.     $orig_text = $text;
  200.     $orig_text = htmlentities($orig_text);
  201.     echo("<p>$orig_text converts to:p>/n");
  202.     // De/Encrypt based on selection in form
  203.     switch ($_POST['cryptmethod']) {
  204.         case "asc2bin":
  205.             $text = asc2bin($text);
  206.             break;
  207.         case "asc2hex":
  208.             $text = asc2hex($text);
  209.             break;
  210.         case "bin2asc":
  211.             $text = bin2asc($text);
  212.             break;
  213.         case "hex2asc":
  214.             $text = hex2asc($text);
  215.             break;
  216.         case "bin2hex":
  217.             $text = binary2hex($text);
  218.             break;
  219.         case "hex2bin":
  220.             $text = hex2binary($text);
  221.             break;
  222.         case "backwards":
  223.             $text = strrev($text);
  224.             break;
  225.         case 'b64enc':
  226.             $text = base64_encode($text);
  227.             break;
  228.         case 'b64dec':
  229.             $text = base64_decode(strip_spaces($text));
  230.             break;
  231.         case 'caesarbf':
  232.             $text = caesarbf($text);
  233.             break;
  234.         case 'crypt':
  235.             $text = crypt($text, 'CRYPT_STD_DES');
  236.             break;
  237.         case 'entityenc':
  238.             $text = entityenc($text);
  239.             break;
  240.         case 'entitydec':
  241.             $text = entitydec($text);
  242.             break;
  243.         case "l33t":
  244.             $text = l33t($text);
  245.             break;
  246.         case "del33t":
  247.             $text = del33t($text);
  248.             break;
  249.         case 'md5':
  250.             $text = md5($text);
  251.             break;
  252.         case 'igpay':
  253.             $text = igpay($text);
  254.             break;
  255.         case 'unigpay':
  256.             $text = unigpay($text);
  257.             break;
  258.         case "rot-13":
  259.             $text = rot13($text);
  260.             break;
  261.         case 'urlenc':
  262.             $text = urlencode($text);
  263.             break;
  264.         case 'urldec':
  265.             $text = urldecode($text);
  266.             break;
  267.         default:
  268.             die("

    That encryption type is not supported.

    /n"
    );
  269.     } // end switch
  270.     // Convert to HTML entities so special chars show up
  271.     $text = htmlentities($text);
  272.     // Display result to the screen
  273.     echo("<p>$textp>/n");
  274. } // end if
  275. ?>
  276. echo($_SERVER['PHP_SELF']); ?>" method="post">
  277.     if (isset($orig_text)) { echo($orig_text); } ?>
  278.     elect name="cryptmethod">
  279.     ASCII to Binary
  280.     Binary to ASCII
  281.     ASCII to Hex
  282.     Hex to ASCII
  283.     Binary to Hex
  284.     Hex to Binary
  285.     Backwards
  286.     Base 64 Encode>
  287.     Base 64 Decode
  288.     Caesar Bruteforce
  289.     DES Crypt (one way)
  290.     HTML Entities Encode
  291.     HTML Entities Decode
  292.     l33t 5p34k 3nc0d3
  293.     l33t 5p34k d3c0d3
  294.     MD5 Crypt (one way)
  295.     Igpay Atinlay
  296.     Un-Pig Latin
  297.     ROT-13
  298.     URL Encode
  299.     URL Decode
  300.     
  301.     
  302.     
  303.     Fine Print Shtuff:
  304.     SNEAK: Snarkles.Net Encryption Assortment Kit - Version echo($version); ?>
  305.     © 2000, 2001, 2002, 2003 snarkles
  306.     Download a copy echo($version); ?>.zip">here

你可能感兴趣的:(PHP,Tech)