[ Index ] |
PHP Cross Reference of Unnamed Project |
[Summary view] [Print] [Text view]
1 <?php 2 3 4 /** 5 * Librairie de fonctions pour cryptage 6 7 * @Version $Id: jlcipher.inc.php 7153 2012-05-09 14:55:14Z dbo $ 8 9 * @Projet LCS / SambaEdu 10 11 * @Auteurs Equipe Tice academie de Caen 12 * @Auteurs � jLCF >:> � jean-luc.chretien@tice.ac-caen.fr 13 14 * @Note: Ce fichier de fonction doit etre appele par un include 15 16 * @Licence Distribue sous la licence GPL 17 */ 18 19 /** 20 21 * file: jlcipher.inc.php 22 * @Repertoire: includes/ 23 */ 24 25 26 27 // Constantes j-LCipher 28 $MaxLifeTime = "5"; /* seconde */ 29 30 # Messages d'erreur j-LCipher loges dans /var/log/se3/auth.log 31 $MsgError[1]="Possible spoof IP source address"; 32 $MsgError[2]="MaxTimeLife expire"; 33 $MsgError[3]=$MsgError[1]." and ".$MsgError[2]; 34 $MsgError[4]="Authentification error"; 35 36 $logpath ="/var/log/se3/"; 37 38 39 40 //================================================= 41 42 /** 43 * Affiche de la partie cryptage 44 45 * @Parametres 46 * @Return 47 */ 48 49 function header_crypto_html( $titre,$path) 50 { 51 global $login; 52 ?> 53 54 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 55 <HTML> 56 <HEAD> 57 <META http-equiv="pragma" content="no-cache" /> 58 <TITLE><?php echo $titre ?></TITLE> 59 <link type="text/css" rel="stylesheet" href="/elements/style_sheets/sambaedu.css" /> 60 <style type="text/css"> 61 body{ 62 background: url(/elements/images/fond_SE3.png) ghostwhite bottom right no-repeat fixed; 63 } 64 </style> 65 <script language = 'javascript' type = 'text/javascript' src="<?php echo $path?>crypto.js"></script> 66 <script language = 'javascript' type = 'text/javascript' src="<?php echo $path?>public_key.js"></script> 67 <script language = 'javascript' type = 'text/javascript'> 68 <!-- 69 function auth_popup() { 70 window.focus(); 71 auth_popupWin = window.open("<?php echo $path?>auth_se3.html","auth_se3","width=600,height=400,resizable=no,scrollbars=no,toolbar=no,menubar=no,status=no"); 72 auth_popupWin.focus(); 73 } 74 <?php if ( preg_match("/Authentification/i", $titre)) { ?> 75 function encrypt(f) { 76 var endTime=new Date(); 77 f.time.value = (endTime.getTime()-startTime.getTime())/1000.0; 78 encode = f.dummy.value+"|"+f.client_ip.value+"|"+f.timestamp.value+"|"+f.time.value; 79 f.string_auth.value=rsaEncode(public_key_e,public_key_pq,encode); 80 f.dummy.value="******"; 81 f.timestamp.value=""; 82 f.time.value=""; 83 } 84 85 function timerStart() { 86 startTime=new Date(); 87 } 88 89 timerStart(); 90 <?php } else { ?> 91 92 function encrypt(f) { 93 if (f.dummy.value!="") { 94 f.string_auth.value=rsaEncode(public_key_e,public_key_pq,f.dummy.value); 95 f.dummy.value="******"; 96 } 97 if (f.dummy1.value!="") { 98 f.string_auth1.value=rsaEncode(public_key_e,public_key_pq,f.dummy1.value); 99 f.dummy1.value="******"; 100 } 101 } 102 103 <?php } ?> 104 105 // --> 106 </script> 107 </HEAD> 108 <BODY> 109 <?php 110 print "<H3 ALIGN=RIGHT>Bonjour $login</H3>"; 111 } 112 113 114 115 //================================================= 116 117 /** 118 * Affiche le lien actif ou inactif pour le cryptage 119 120 * @Parametres 121 * @Return 122 */ 123 124 function crypto_nav($path) 125 { 126 global $HTTP_USER_AGENT; 127 // Affichage logo crypto 128 if (preg_match("#Mozilla/4.7#", $HTTP_USER_AGENT)) { 129 echo " <a HREF='".$path."html' onClick='auth_popup(); return false' TARGET='_blank'><img src='".$path."elements/images/no_crypto.png' alt='".gettext("Attention, avec ce navigateur votre mot de passe va circuler en clair sur le réseau !")."' width=48 height=48 border=0></a>"; 130 } else { 131 echo " <a HREF='".$path."auth_se3.html' onClick='auth_popup(); return false' TARGET='_blank'><img src='".$path."elements/images/crypto.png' alt='".gettext("Cryptage du mot de passe actif !")."' width=48 height=48 border=0></a>"; 132 } 133 } 134 135 136 137 //================================================= 138 139 /** 140 * Retourne l'IP distante 141 142 * @Parametres 143 * @Return 144 */ 145 146 function remote_ip() 147 { 148 if(getenv("HTTP_CLIENT_IP")) { 149 $ip = getenv("HTTP_CLIENT_IP"); 150 } elseif (getenv("HTTP_X_FORWARDED_FOR")) { 151 $ip = getenv("HTTP_X_FORWARDED_FOR"); 152 } else { 153 $ip = getenv("REMOTE_ADDR"); 154 } 155 return $ip; 156 } 157 158 159 160 //================================================= 161 162 /** 163 * Decode le mot de passe 164 165 * @Parametres 166 * @Return 167 */ 168 169 function decode_pass($string_auth) { 170 global $MaxLifeTime,$path_to_wwwse3; 171 $fpdebug=fopen("/var/log/se3/debug.log","a"); 172 fputs($fpdebug,date("j/m/y:H:i").":function decode_pass():\$string_auth: ".$string_auth."\n"); 173 //$argument=explode("\n", $string_auth); 174 //fputs($fpdebug,date("j/m/y:H:i").":function decode_pass():\$argument: ".$argument[0]."\n"); 175 //fputs($fpdebug,date("j/m/y:H:i").":function decode_pass():\$argument: ".$argument[1]."\n"); 176 $string_auth_clean=str_replace(CHR(13).CHR(10),"",$string_auth); 177 fputs($fpdebug,date("j/m/y:H:i").":function decode_pass():\$string_auth_clean: ".$string_auth_clean."\n"); 178 // Decodage de la chaine d'authentification cote serveur avec une cle privee 179 //$commande="/usr/bin/python ".$path_to_wwwse3."/includes/decode.py $string_auth"; 180 $commande="(/usr/bin/python $path_to_wwwse3/includes/decode.py '$string_auth_clean')"; 181 fputs($fpdebug,date("j/m/y:H:i")." : function decode_pass() : \$commande : ".$commande."\n"); 182 unset($AllOutPut); 183 exec ($commande,$AllOutPut,$ReturnValue); 184 // Extraction des parametres 185 //print_r($AllOutPut); 186 $tmp = preg_split ("#\|#",$AllOutPut[0],4); 187 $passwd = $tmp[0]; 188 $ip_src = $tmp[1]; 189 $timestamp = $tmp[2]; 190 //$timestamp=time(); 191 $timewait = $tmp[3]; 192 fputs($fpdebug,date("j/m/y:H:i").":function decode_pass(".$string_auth_clean."):\n\$passwd : ".$passwd." | \$ip_src : ".$ip_src." | \$timestamp : ".$timestamp." | \$timewait : ".$timewait."\n"); 193 $timetotal= $timewait+$timestamp+$MaxLifeTime; 194 fputs($fpdebug,date("j/m/y:H:i").":function decode_pass():\$timetotal : ".$timetotal."\n"); 195 // Interpretation des resultats 196 if ( $ip_src != remote_ip() && time() < $timetotal ) { 197 fputs($fpdebug,date("j/m/y:H:i").":function decode_pass(): ips differentes | ".time()." < timetotal => error=1\n"); 198 $error = 1; 199 } elseif ( time() > $timetotal && $ip_src == remote_ip() ) { 200 fputs($fpdebug,date("j/m/y:H:i").":function decode_pass(): ips identiques | ".time()." > timetotal => error=2\n"); 201 $error = 2; 202 } elseif ( $ip_src != remote_ip() && time() > $timetotal ) { 203 fputs($fpdebug,date("j/m/y:H:i").":function decode_pass(): ips differentes | ".time()." > timetotal => error=3\n"); 204 $error = 3; 205 } 206 fclose($fpdebug); 207 return array ($passwd, $error,$ip_src,$timetotal); 208 } 209 210 211 212 //================================================= 213 214 /** 215 * Detecte la cle 216 217 * @Parametres 218 * @Return 219 */ 220 221 function detect_key_orig() 222 { 223 $myFile = file( "public_key.js"); 224 if ( preg_match("19281203,140977887,4051811,156855586,32904",$myFile[1])) return true; else return false; 225 } 226 227 ?>
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Tue Mar 17 22:47:18 2015 | Cross-referenced by PHPXref 0.7.1 |