[ Index ]

PHP Cross Reference of Unnamed Project

title

Body

[close]

/se3master/var/www/se3/includes/ -> jlcipher.inc.php (source)

   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&#233;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  ?>


Generated: Tue Mar 17 22:47:18 2015 Cross-referenced by PHPXref 0.7.1