Skip to content

Commit 5783acb

Browse files
committed
Constante de tamaño de cabecera
1 parent 87593c1 commit 5783acb

File tree

5 files changed

+22
-25
lines changed

5 files changed

+22
-25
lines changed

pitea/constantes.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,8 @@ def __init__(self):
3535
"Robot36": (Robot36, (320, 240)),
3636
"ScottieS1": (ScottieS1, (320, 256)),
3737
}
38+
39+
self._TAMAÑO_CABECERA_LSB = 32
3840

3941
self._SCRIPT_PATH = "script_ejecucion.py"
4042
self._RESET = "\033[0m"

pitea/pitea/audio/OcultadorAudioLSB.py

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
from pitea.audio.OcultadorAudio import OcultadorAudio
2+
from constantes import constantes
23

34

45
class OcultadorAudioLSB(OcultadorAudio):
@@ -46,7 +47,7 @@ def _ocultar(self, datos_imagen):
4647
binarios_imagen = "".join(format(byte, "08b") for byte in datos_imagen)
4748

4849
# Añadir una cabecera con el tamaño de los datos (32 bits)
49-
tamano_datos = format(len(binarios_imagen), "032b")
50+
tamano_datos = format(len(binarios_imagen), "0"+str(constantes._TAMAÑO_CABECERA_LSB)+"b")
5051
binarios_imagen = tamano_datos + binarios_imagen # Cabecera + datos
5152

5253
assert self._audio.getsampwidth() == 2, "El archivo de audio debe ser de 16 bits"
@@ -85,9 +86,9 @@ def _desocultar(self):
8586
datos_binarios = ""
8687
for i in range(len(frames)):
8788
datos_binarios += str(frames[i] & 1) # Extraer el bit menos significativo
88-
if len(datos_binarios) >= 32:
89-
tamano_datos = int(datos_binarios[:32], 2) # Leer el tamaño de los datos
90-
datos_binarios = datos_binarios[32:] # Eliminar la cabecera
89+
if len(datos_binarios) >= constantes._TAMAÑO_CABECERA_LSB:
90+
tamano_datos = int(datos_binarios[:constantes._TAMAÑO_CABECERA_LSB], 2) # Leer el tamaño de los datos
91+
datos_binarios = datos_binarios[constantes._TAMAÑO_CABECERA_LSB:] # Eliminar la cabecera
9192
break
9293

9394
# Verificar que la cabecera tenga el tamaño correcto
@@ -96,10 +97,10 @@ def _desocultar(self):
9697

9798
for i in range(len(frames)):
9899
datos_binarios += str(frames[i] & 1) # Extraer el bit menos significativo
99-
if len(datos_binarios) >= tamano_datos + 32:
100+
if len(datos_binarios) >= tamano_datos + constantes._TAMAÑO_CABECERA_LSB:
100101
break
101102

102-
datos_binarios = datos_binarios[32:]
103+
datos_binarios = datos_binarios[constantes._TAMAÑO_CABECERA_LSB:]
103104

104105
datos_extraidos = int(datos_binarios, 2).to_bytes(tamano_datos // 8, byteorder="big")
105106

pitea/pitea/configuracion.toml

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,14 @@
1-
# Define parámetros de cache, SSTV y ocultación de texto en imagen.
2-
31
[persistente]
42
contador_cache = 0
5-
ult_fecha = "15-04-2025_16:31"
3+
ult_fecha = "02-05-2025_15:21"
64

75
[Ajustes_sstv]
8-
# Modo SSTV por defecto: opciones -> "MartinM1", "Robot36", "ScottieS1"
96
modo_sstv = "MartinM1"
10-
# Frecuencia de muestreo de audio en Hz para SSTV
117
samples_per_sec = 48000
12-
# Profundidad de bits para el audio SSTV
138
bits = 16
149

1510
[Ajustes_ocultador_imagen_text]
1611
tamanio_fuente = 17
1712
anchura_maxima = 800
1813
ruta_fuente = "../fuentes/DejaVuSans-Bold.ttf"
19-
# Indica si se debe usar GPU para el renderizado ("True" o "False")
2014
gpu = "True"

pitea/pitea/imagen/OcultadorImagenLSB.py

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
from pitea.imagen.OcultadorImagen import OcultadorImagen
2-
2+
from constantes import constantes
33

44

55
class OcultadorImagenLSB(OcultadorImagen):
@@ -64,7 +64,7 @@ def _ocultar(self, datos, altura_imagen=None, anchura_imagen=None):
6464

6565

6666
# Añadir una cabecera con el tamaño de los datos (32 bits)
67-
tamano_datos_binarios = format(len(datos_binarios), "032b")
67+
tamano_datos_binarios = format(len(datos_binarios), "0"+str(constantes._TAMAÑO_CABECERA_LSB)+"b")
6868

6969
# Cabecera + Datos
7070
mensaje = tamano_datos_binarios + datos_binarios
@@ -124,11 +124,11 @@ def _desocultar(self):
124124
datos_binarios += str(
125125
pixel[canal] & 1
126126
) # Extraer el bit menos significativo
127-
if len(datos_binarios) >= 32:
127+
if len(datos_binarios) >= constantes._TAMAÑO_CABECERA_LSB:
128128
tamano_datos = int(
129-
datos_binarios[:32], 2
129+
datos_binarios[:constantes._TAMAÑO_CABECERA_LSB], 2
130130
) # Leer el tamaño de los datos
131-
datos_binarios = datos_binarios[32:] # Eliminar la cabecera
131+
datos_binarios = datos_binarios[constantes._TAMAÑO_CABECERA_LSB:] # Eliminar la cabecera
132132

133133
# Si el tamaño de los datos es mayor que 0, seguimos extrayendo los datos
134134
if tamano_datos > 0:
@@ -141,21 +141,21 @@ def _desocultar(self):
141141
if tamano_datos == 0:
142142
raise ValueError("No se pudo extraer el tamaño de los datos ocultos.")
143143

144-
while len(datos_binarios) < tamano_datos + 32:
144+
while len(datos_binarios) < tamano_datos + constantes._TAMAÑO_CABECERA_LSB:
145145
for y in range(alto):
146146
for x in range(ancho):
147147
pixel = list(pixeles[x, y])
148148
for canal in range(3):
149149
datos_binarios += str(pixel[canal] & 1)
150-
if len(datos_binarios) >= tamano_datos + 32:
150+
if len(datos_binarios) >= tamano_datos + constantes._TAMAÑO_CABECERA_LSB:
151151
break
152-
if len(datos_binarios) >= tamano_datos + 32:
152+
if len(datos_binarios) >= tamano_datos + constantes._TAMAÑO_CABECERA_LSB:
153153
break
154-
if len(datos_binarios) >= tamano_datos + 32:
154+
if len(datos_binarios) >= tamano_datos + constantes._TAMAÑO_CABECERA_LSB:
155155
break
156156

157157
# Convertir los datos binarios en bytes
158-
datos_binarios = datos_binarios[32:] # Eliminar la cabecera
158+
datos_binarios = datos_binarios[constantes._TAMAÑO_CABECERA_LSB:] # Eliminar la cabecera
159159
datos_extraidos = int(datos_binarios, 2).to_bytes(
160160
tamano_datos // 8, byteorder="big"
161161
)

pitea/tests.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -319,9 +319,9 @@ def run_tests():
319319
test_ocultar_desocultar_aes_lsb_lsb()
320320
print("🧪 Prueba de ocultar y desocultar con cifrado None y LSB")
321321
test_ocultar_desocultar_none_lsb_lsb()
322-
print("🧪 Prueba transformada de imagenes")
323-
test_ocultar_desocultar_aes_lsb_lsb_imagen_impar()
324322
print("🧪 Prueba de ocultar y desocultar con cifrado AES y LSB, imagenes con dimesiones impares")
323+
test_ocultar_desocultar_aes_lsb_lsb_imagen_impar()
324+
print("🧪 Prueba transformada de imagenes")
325325
test_transformada()
326326

327327

0 commit comments

Comments
 (0)