| 1 | <?php |
| 2 | |
| 3 | /** |
| 4 | * Script provides form to decode encrypted header information. |
| 5 | * |
| 6 | * @copyright 2005-2024 The SquirrelMail Project Team |
| 7 | * @license http://opensource.org/licenses/gpl-license.php GNU Public License |
| 8 | * @version $Id$ |
| 9 | * @package squirrelmail |
| 10 | */ |
| 11 | |
| 12 | /** |
| 13 | * Set constant to path of your SquirrelMail install. |
| 14 | * @ignore |
| 15 | */ |
| 16 | define('SM_PATH','../'); |
| 17 | |
| 18 | /** |
| 19 | * include SquirrelMail string and generic functions |
| 20 | * script needs OneTimePadDecrypt() (functions/strings.php) |
| 21 | * and sqgetGlobalVar() (functions/global.php) |
| 22 | */ |
| 23 | include_once(SM_PATH.'functions/global.php'); |
| 24 | include_once(SM_PATH.'functions/strings.php'); |
| 25 | |
| 26 | /** |
| 27 | * converts hex string to ip address |
| 28 | * @param string $hex hexadecimal string created with squirrelmail ip2hex |
| 29 | * function in delivery class. |
| 30 | * @return string ip address |
| 31 | * @since 1.5.1 and 1.4.5 |
| 32 | */ |
| 33 | function hex2ip($hex) { |
| 34 | if (strlen($hex)==8) { |
| 35 | $ret=hexdec(substr($hex,0,2)).'.' |
| 36 | .hexdec(substr($hex,2,2)).'.' |
| 37 | .hexdec(substr($hex,4,2)).'.' |
| 38 | .hexdec(substr($hex,6,2)); |
| 39 | } elseif (strlen($hex)==32) { |
| 40 | $ret=substr($hex,0,4).':' |
| 41 | .substr($hex,4,4).':' |
| 42 | .substr($hex,8,4).':' |
| 43 | .substr($hex,12,4).':' |
| 44 | .substr($hex,16,4).':' |
| 45 | .substr($hex,20,4).':' |
| 46 | .substr($hex,24,4).':' |
| 47 | .substr($hex,28,4); |
| 48 | } else { |
| 49 | $ret=$hex; |
| 50 | } |
| 51 | return $ret; |
| 52 | } |
| 53 | |
| 54 | /** create page headers */ |
| 55 | header('Content-Type: text/html'); |
| 56 | |
| 57 | echo '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"'."\n" |
| 58 | .' "http://www.w3.org/TR/1999/REC-html401-19991224/loose.dtd">' |
| 59 | ."\n<head>\n<meta name=\"robots\" content=\"noindex,nofollow\">\n" |
| 60 | ."</head><body>"; |
| 61 | |
| 62 | if (sqgetGlobalVar('submit',$submit,SQ_POST)) { |
| 63 | $continue = TRUE; |
| 64 | if (! sqgetGlobalVar('secret',$secret,SQ_POST) || |
| 65 | empty($secret)) { |
| 66 | $continue = FALSE; |
| 67 | echo "<p>You must enter an encryption key.</p>\n"; |
| 68 | } |
| 69 | if (! sqgetGlobalVar('enc_string',$enc_string,SQ_POST) || |
| 70 | empty($enc_string)) { |
| 71 | $continue = FALSE; |
| 72 | echo "<p>You must enter an encrypted string.</p>\n"; |
| 73 | } |
| 74 | |
| 75 | if ($continue) { |
| 76 | if (isset($enc_string) && ! base64_decode($enc_string)) { |
| 77 | echo "<p>Encrypted string should be BASE64 encoded.<br />\n" |
| 78 | ."Please enter all characters that are listed after header name.</p>\n"; |
| 79 | } elseif (isset($secret)) { |
| 80 | $string=OneTimePadDecrypt($enc_string,base64_encode($secret)); |
| 81 | |
| 82 | if (sqgetGlobalVar('ip_addr',$is_addr,SQ_POST)) { |
| 83 | $string=hex2ip($string); |
| 84 | } |
| 85 | echo "<p>Decoded string: ".htmlspecialchars($string)."</p>\n"; |
| 86 | } |
| 87 | } |
| 88 | echo "<hr />"; |
| 89 | } |
| 90 | ?> |
| 91 | <form action="" method="post"> |
| 92 | <p> |
| 93 | Secret key: <input type="password" name="secret"><br /> |
| 94 | Encrypted string: <input type="text" name="enc_string"><br /> |
| 95 | <label for="ip_addr">Check here if you are decoding an address string (FromHash/ProxyHash): </label><input type="checkbox" name="ip_addr" id="ip_addr" /><br /> |
| 96 | <button type="submit" name="submit" value="submit">Submit</button> |
| 97 | </p> |
| 98 | </form> |
| 99 | </body></html> |