PHP - uso de la esteganografía en php

 
Vista:
sin imagen de perfil

uso de la esteganografía en php

Publicado por Willian (1 intervención) el 01/12/2021 10:09:00
Saludos.
Estoy tratando de usar la esteganografía para un sistema hecho con php a pedido de la materia de seguridad informática en la universidad. Debo darle al usuario la posibilidad de escoger una imágen y agregar una palabra secreta que se ocultará en la imágen, por cuestiones de tiempo y otras cosas nos piden que hagamos una práctica sencilla en la que un usuario ya registrado(administrador), al querer entrar por ejemplo a modificar los permisos o alguna otra acción delicada del sistema, el sistema(valga la redundancia), le pida la imagen de seguridad y la palabra secreta y si coinciden, darle acceso a esa parte del sistema.
Ya logré que el usuario escoja la imágen e introduzca la palabra y el sistema procese la imagen con la palabra y me la guarde en una carpeta del sistema, pero estoy atascado en como pedir la imágen, validarla y si coincide darle acceso a esa parte del sistema
El código para guardar la imágen con la palabra es este:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
<div id="modalImagen" class="modal">
    <div class="modal-content">
      <h5>Imágen seguridad</h5>
      <p><strong>Escoge una imágen y escribe una palabra de seguridad</strong></p>
      <p><strong>Peso máximo 1 Mb / Sólo PNG.</strong></p>
        <div class="col s12">
          <form method="POST" enctype="multipart/form-data" id="formulario">
            <div class="row">
              <div class="input-field col s12">
                <center>
                  <!-- <img src="vista/config/img/imagenSeguridad/boxed-bg.png"-->
                  <div> <img src="vista/config/img/boxed-bg.png" class="img-circle previsualizar" width="150" style="border: 1px solid" /></div>
                  <input type="file" id="imgEncriptada" name="nuevaImagen" required style="color: transparent;">
                </center>
              </div>
            </div>
            <div class="input-field col s9 m10">
              <i class="icon-vpn_key prefix"></i>
              <input name="palabraSecreta" type="password" class="validate" required>
              <label for="palabraSecreta">Palabra de seguridad</label>
            </div>
            <center>
              <button type="submit" class="btn btn-primary yellow darken-3 btn-small" name="guardar">Guardar
              </button>
            </center>
 
            <?php
 
            if (isset($_POST['guardar'])) {
              $temporal = $_FILES["nuevaImagen"]["tmp_name"];
              $palabraS = $_POST["palabraSecreta"];
              $nombre = $_FILES["nuevaImagen"]["name"];
            }
 
             ?>
 
          </form>
        </div>
    </div>
    <div class="modal-footer">
      <a href="#!" class="modal-close waves-effect waves-green btn-flat">Cerrar</a>
    </div>
</div>

Es una ventana modal y he hecho todo el código en la vista(que no es lo ideal) y al final del archivo agregué esto:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<?php
 // procesar la imágen
 
$directorio = 'vista/config/img/imagenSeguridad/';
$aleatorio = mt_rand(100, 999);
 
$procesar = new KzykHys\Steganography\Processor();
if (isset($temporal) && isset($palabraS)) {
    $imgProcesada = $procesar->encode( $temporal, $palabraS);
    // var_dump($imgProcesada);
    $imgProcesada->write($directorio.$aleatorio.".png");
    echo '<script>
                swal({
                        type: "success",
                        title: "¡Imágen de seguridad guardada correctamente!",
                        showConfirmButton: true,
                        confirmButtonText: "Cerrar"
                     }).then(function(result){
                        if(result.value){
                            window.location = "?url=seguridad&opcion=imagenSeguridad";
                        }
                     });
         </script>';
}
 
?>
 
<!-- Para evitar que al recargar la página se vuelva a enviar el archivo -->
<script type="text/javascript">
if ( window.history.replaceState ) {
  window.history.replaceState( null, null, window.location.href );
}
</script>

Instalé composer e instalé la dependencia KzykHys\Steganography.
Para pedir la imágen se me ocurre una ventana modal que muestre de 3 a 4 imágenes(exigencias de la materia)entre ellas la del usuario con un campo para introducir la palabra y decodificar usando la clase Steganography pero no tengo idea de como validar la imágen con la palabra secreta.
La ventana aparece al momento de querer ingresar a modificar los permisos de los usuarios, el código es el siguiente:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<div id="modalSeleccionarImagen" class="modal">
    <div class="modal-content">
      <h5>Imágen seguridad</h5>
      <p><strong>¡Atención!, se dispone a ingresar a una parte delicada del sistema.</strong></p>
      <p><strong>Seleccione su imágen y escriba su palabra de seguridad
      Si no dispone de una, diríjase a: Seguridad - Imágen seguridad</strong></p>
 
        <div class="col s12">
          <form method="POST" >
            <div class="row">
              <div class="input-field col s12">
 
 
 
              </div>
            </div>
            <div class="input-field col s9 m10">
              <i class="icon-vpn_key prefix"></i>
              <input name="palabraSecreta" type="password" class="validate" required>
              <label for="palabraSecreta">Palabra de seguridad</label>
            </div>
            <center>
              <button type="button" class="btn btn-primary yellow darken-3 btn-small" name="guardar">Acceder
              </button>
            </center>
          </form>
        </div>
    </div>
    <div class="modal-footer">
      <a href="#!" class="modal-close waves-effect waves-green btn-flat">Cerrar</a>
    </div>
</div>
¿Alguna sugerencia?
S.O : Windows 7 32 bits
Servidor: Xampp
Versión de PHP:7.0.33

Gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder