ESTEGANOGRAFÍA: Ocultar un archivo dentro de otro [ECHO]

y programas personales para otros como tu, puede que te corrijan ;)
Responder
Avatar de Usuario
yasmany
Hacker del Foro
Mensajes: 249
Registrado: 06 Sep 2011, 21:30

ESTEGANOGRAFÍA: Ocultar un archivo dentro de otro [ECHO]

Mensaje por yasmany »

Un buen día a todos, aunque la esteganografía ya va desde hace muchos años atrás, tal conocimiento lo obtuve hace unos tres años, pero lo aplicaba mediante la consola de windows CMD. Ahora he realizado una aplicación para ello.

La denominé Private File, y sirve para esconder solo archivos comprimidos dentro de una imagen. alcambiar de extensiones se visualiza el archivo que se encuentra dentro de la imagen y si se cambia la extensión por el de la imagen vuelve a visualizar la imagen.

CAPTURA DE INTERFAZ
Imagen

Recomiedo ver el video de explicación.
http://www.youtube.com/watch?v=Jio93Nu5NjA

Si a alguien le sirve de algo dejo el código adjunto con los recursos utilizados, si tienen sugerencias agradecería su apoyo.
CODIGO

Código: Seleccionar todo

#NoTrayIcon
#RequireAdmin
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_Icon=iconoPrivateFile.ico
#AutoIt3Wrapper_Outfile=PrivateFile.exe
#AutoIt3Wrapper_Res_Comment=Software [email protected]
#AutoIt3Wrapper_Res_Description= Oculta archivos dentro de una imagen
#AutoIt3Wrapper_Res_Fileversion=1.0.0.0
#AutoIt3Wrapper_Res_LegalCopyright=Yasmany Curimilma
#AutoIt3Wrapper_Res_Language=1034
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <Misc.au3>
#include <WinAPI.au3>

Opt("GUICloseOnESC", 0)
Opt("GUIOnEventMode", 1)
_Singleton("PrivateFyas1991")

DirCreate(@AppDataDir & "\PrivateFileYasmany")
FileInstall(".\imagenCabeceraPrivateFile-Compresed.jpg", @AppDataDir & "\PrivateFileYasmany\", 1)

Global $guiPrincipal, $imgPresentacion, $editDescripcion, $inpFile, $inpImage, $btnFile, $btnImage, $btnAplicar, $inpNuevoNombre
Global $barraProgreso, $lblEstado, $lblmostrarExtensiones, $lblAyudaRapida
$guiPrincipal = GUICreate("Private File", 563, 287, -1, -1)
GUISetIcon("iconoPrivateFile.ico")
GUISetBkColor(0xFFFFFF)

$lblmostrarExtensiones = GUICtrlCreateLabel("", 5, 5, 110, 17)
GUICtrlSetCursor($lblmostrarExtensiones, 0)
GUICtrlSetColor($lblmostrarExtensiones, 0x1A4ED7)

GUICtrlCreateLabel("|", 124, 5, 2, 17)
GUICtrlSetColor(-1, 0x1A4ED7)

$lblAyudaRapida = GUICtrlCreateLabel("Ayuda Rápida", 135, 5, 110, 17)
GUICtrlSetCursor($lblAyudaRapida, 0)
GUICtrlSetColor($lblAyudaRapida, 0x1A4ED7)

$imgPresentacion = GUICtrlCreatePic(@AppDataDir & "\PrivateFileYasmany\imagenCabeceraPrivateFile-Compresed.jpg", 30, 25, 159, 147)

GUICtrlCreateGroup("Para que sirve?", 224, 8, 329, 171)
$editDescripcion = GUICtrlCreateEdit("", 232, 24, 313, 150, $WS_VSCROLL + $ES_WANTRETURN + $ES_READONLY + $ES_AUTOVSCROLL, 0) ;BitOR($ES_AUTOVSCROLL,$ES_AUTOHSCROLL,$WS_VSCROLL), 0)
GUICtrlSetBkColor($editDescripcion, 0xFFFFFF)
GUICtrlSetColor($editDescripcion, 0x3d3d3d)
GUICtrlSetData(-1, @CRLF & 'Private File desarrollado por Yasmany Curimilma, cual su nombre en español se refiere a ' & _
		'Archivo Privado sirve para proteger nuestros archivos sean estos, fotos, documentos, videos y más, ' & _
		'que deseemos que no estén a simple vista de todos.' & @CRLF & 'Private File copia el archivo a proteger dentro de la ' & _
		'imagen que seleccionemos.' & @CRLF & @CRLF & _
		'¿CÒMO FUNCIONA?' & @CRLF & _
		'Antes de todo debe tener visible las extensiones de los archivos del sistema ya que será mas fácil que Ud. interactue con el ' & _
		'presente software y sus archivos.' & @CRLF & _
		'Private File copia el archivo comprimido elegido dentro de la imagen seleccionada, creando una copia de la imagen con el nombre ' & _
		'que haya ubicado, permitiendole visualizar la imagen, PERO si cambia la extensión de la imagen por la extension del archivo comprimido ' & _
		'y lo ejecuta, se abrirá el archivo comprimido que ud. copió dentro de la imagen.' & @CRLF & @CRLF & _
		'¿QUE SON LAS EXTENSIONES DE ARCHIVOS?' & @CRLF & _
		'Generalmente son los tres ultimos caracteres del nombre de un archivo por ejemplo.: ".docx" ".txt" ".rar" ".jpg" ".zip" entre otros. ' & @CRLF & @CRLF & _
		'¿COMO VISUALIZAR LAS EXTENSIONES?' & @CRLF & _
		'Si aun no tiene visualizado las extensiones, diríjase al texto color azul ubicado en la parte superior izquierda de este programa y haga ' & _
		'un clic izquierdo sobre el, luego de clic derecho sobre la carpeta o escritorio y seleccione actualizar.' & @CRLF & _
		'Al Mostrar u Ocultar las extenciones, el texto color azul cambiará su estado.' & @CRLF & @CRLF & _
		'¿COMO UTILIZAR PRIVATE FILE.?' & @CRLF & _
		'Si Ud. posee fotos, imagenes, documentos y desea que otras personas no los vean, comprimalos en zip o rar y siga los siguientes pasos' & @CRLF & _
		'1.- Seleccione el archivo comprimido [Clic botón Archivo]' & @CRLF & _
		'2.- Seleccione una imagen [Clic botón Imagen]' & @CRLF & _
		'3.- Escriba un nuevo nombre.' & @CRLF & _
		'4.- Clic en el botón Aplicar' & @CRLF & @CRLF & _
		'ADVERTENCIA.' & @CRLF & _
		'*- NO COPIE mas de un archivo comprimido dentro de la imagen' & @CRLF & _
		'*- Algunas imagenes no suelen permitir ejecutar los archivos copiados dentro de ellas' & @CRLF & _
		'*- Aseguresé que la copia fue correcta, cambiando las extensiones de forma manual y ejecutando los archivos' & @CRLF & _
		'*- NO vuelva a reutilizar la imagen en la que se encuentra copiado el archivo, me refiero a la nueva imagen creada.' & @CRLF & _
		'*- Evite copiar archivos de tamaño exagerado (por lo menos 150mb)' & @CRLF & @CRLF & _
		'SUGERENCIAS.' & @CRLF & _
		'*- Identifique la imagen final con un nombre que pueda recordar.')
GUICtrlCreateGroup("", -99, -99, 1, 1)

$inpFile = GUICtrlCreateInput("", 8, 190, 417, 21, $ES_READONLY)
$btnFile = GUICtrlCreateButton("Archivo", 428, 188, 50, 25)
$inpImage = GUICtrlCreateInput("", 8, 215, 417, 21, $ES_READONLY)
$btnImage = GUICtrlCreateButton("Imagen", 428, 214, 50, 25)
$btnAplicar = GUICtrlCreateButton("Aplicar", 478, 188, 75, 49)
$inpNuevoNombre = GUICtrlCreateInput("", 8, 250, 117, 25, $SS_CENTERIMAGE)
GUICtrlCreateLabel('Escriba un nuevo nombre para el archivo. " & "No está permitido los siguientes caracteres: :  /   \  .  "  ?  |  *  <  > ', 130, 250, 328, 30)
GUICtrlSetState(-1, $GUI_DISABLE)

$lblEstado = GUICtrlCreateLabel("Estado...", 478, 248, 75, 15)
$barraProgreso = GUICtrlCreateProgress(478, 265, 75, 15)

_setTipsControles()
_cargarEventos()
_lecturaRegistroDeExtension()

GUISetState(@SW_SHOW, $guiPrincipal)
GUICtrlSetState($btnFile, $GUI_FOCUS)

While 1
	Sleep(100)
WEnd

Func _cargarEventos()
	GUICtrlSetOnEvent($lblmostrarExtensiones, "_mostrarExtencionesDeArchivos")
	GUISetOnEvent($GUI_EVENT_CLOSE, "_cerrarInterfaz")
	GUICtrlSetOnEvent($btnFile, "_seleccionArchivo")
	GUICtrlSetOnEvent($btnImage, "_seleccionImagen")
	GUICtrlSetOnEvent($btnAplicar, "_aplicar")
	GUICtrlSetOnEvent($lblAyudaRapida, "_ayudaRapida")
EndFunc   ;==>_cargarEventos

Func _mostrarExtencionesDeArchivos()
	If GUICtrlRead($lblmostrarExtensiones) = "Mostrar extensiones" Then RegWrite("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced", "HideFileExt", "REG_DWORD", "0")
	If GUICtrlRead($lblmostrarExtensiones) = "No mostrar extensiones" Then RegWrite("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced", "HideFileExt", "REG_DWORD", "1")
	ControlSend('Program Manager', '', '', '{F5}')
	EnvUpdate()
	_lecturaRegistroDeExtension()
EndFunc   ;==>_mostrarExtencionesDeArchivos

Func _lecturaRegistroDeExtension()
	Local $value = RegRead("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced", "HideFileExt")
	If $value = "1" Then GUICtrlSetData($lblmostrarExtensiones, "Mostrar extensiones")
	If $value <> "1" Then GUICtrlSetData($lblmostrarExtensiones, "No mostrar extensiones")
EndFunc   ;==>_lecturaRegistroDeExtension

Func _seleccionArchivo()
	Local $filtro = "Comprimido (*.rar;*.zip)"
	GUICtrlSetData($inpFile, FileOpenDialog("Seleccione el archivo a proteger", @DesktopDir & "", $filtro, 1, "", $guiPrincipal))
	If GUICtrlRead($inpFile) <> "" Then GUICtrlSetState($btnImage, $GUI_FOCUS)
EndFunc   ;==>_seleccionArchivo

Func _seleccionImagen()
	GUICtrlSetData($inpImage, FileOpenDialog("Seleccione la imagen", @DesktopDir & "", "Imagen (*.jpg;*.jpeg;*.bmp;*.png)", 1, "", $guiPrincipal))
	If GUICtrlRead($inpImage) <> "" Then GUICtrlSetState($inpNuevoNombre, $GUI_FOCUS)
EndFunc   ;==>_seleccionImagen

Func _aplicar()
	Local $File = GUICtrlRead($inpFile), $Imagen = GUICtrlRead($inpImage), $nuevoNombre = GUICtrlRead($inpNuevoNombre)
	If _comprobacioControles($btnFile, $File, "Archivo") Then
		If _comprobacioControles($btnImage, $Imagen, "Imagen") Then
			If Not StringIsSpace($nuevoNombre) Then
				If _busquedaDeCaracteresNoPermitidos($nuevoNombre, "el recuadro para nuevo nombre de archivo protegido.") Then
					Local $direccionCopia = StringTrimRight($File, StringInStr(StringReverse($File), "\")) & "\"
					Local $extencion = StringRight($Imagen, StringInStr(StringReverse($Imagen), "."))
					If FileExists($direccionCopia & $nuevoNombre & $extencion) = 1 Then
						MsgBox(48, "Private File", "Escriba otro nombre para el archivo protegido", -1, $guiPrincipal)
						GUICtrlSetState($inpNuevoNombre, $GUI_FOCUS)
					Else
						_estadoControles($GUI_DISABLE)
						GUICtrlSetData($lblEstado, "Iniciando...")
						For $i = 0 To 50
							GUICtrlSetData($barraProgreso, $i)
							Sleep(15)
						Next
						GUICtrlSetData($lblEstado, "Copiando...")
						Run(@ComSpec & " /c " & 'COPY /B ' & '"' & $Imagen & '"' & ' + ' & '"' & $File & '"' & ' "' & $direccionCopia & $nuevoNombre & $extencion & '"', "", @SW_HIDE)
						GUICtrlSetData($barraProgreso, 100)
						GUICtrlSetData($lblEstado, "Finalizado")
						Sleep(1500)
						GUICtrlSetData($inpFile, "")
						GUICtrlSetData($inpImage, "")
						GUICtrlSetData($inpNuevoNombre, "")
						ShellExecute($direccionCopia, "", "", "OPEN")
						GUICtrlSetData($barraProgreso, 0)
						GUICtrlSetData($lblEstado, "Estado...")
						_estadoControles($GUI_ENABLE)
					EndIf
				EndIf
			Else
				MsgBox(48, "Private File", "Escriba un nombre para el archivo protegido.", -1, $guiPrincipal)
				GUICtrlSetState($inpNuevoNombre, $GUI_FOCUS)
			EndIf
		EndIf
	EndIf
EndFunc   ;==>_aplicar

Func _estadoControles($estado)
	GUICtrlSetState($btnAplicar, $estado)
	GUICtrlSetState($btnFile, $estado)
	GUICtrlSetState($btnImage, $estado)
	GUICtrlSetState($inpNuevoNombre, $estado)
EndFunc   ;==>_estadoControles

Func _busquedaDeCaracteresNoPermitidos($cadena, $texto)
	If StringInStr($cadena, ":") Or StringInStr($cadena, "/") Or StringInStr($cadena, "\") Or StringInStr($cadena, ".") Or StringInStr($cadena, '"') _
			Or StringInStr($cadena, " ?") Or StringInStr($cadena, "|") Or StringInStr($cadena, "*") Or StringInStr($cadena, "<") Or StringInStr($cadena, ">") Then
		MsgBox(48, "Private File", "Caracteres no permitidos en " & $texto, -1, $guiPrincipal)
	Else
		Return True
	EndIf
EndFunc   ;==>_busquedaDeCaracteresNoPermitidos

Func _comprobacioControles($FocoControl, $lecturaControl, $texto)
	If Not StringIsSpace($lecturaControl) Then; si esta lleno
		If FileExists($lecturaControl) = 1 Then Return True
	EndIf
	MsgBox(48, "Private File", "Dirección incorrecta de " & $texto, -1, $guiPrincipal)
	GUICtrlSetState($FocoControl, $GUI_FOCUS)
EndFunc   ;==>_comprobacioControles

Func _setTipsControles()
	GUICtrlSetTip($lblmostrarExtensiones, "Activa o desactiva la visualización " & @CRLF & " de extensiones de archivos")
	GUICtrlSetTip($btnFile, "Seleccione el archivo a proteger")
	GUICtrlSetTip($btnImage, "Seleccione la imagen en la que va a esconder el archivo.")
	GUICtrlSetTip($btnAplicar, "Copia el archivo dentro de la imagen.")
	GUICtrlSetTip($lblAyudaRapida, "Indica como utilizar Private File")
	GUICtrlSetTip($inpNuevoNombre, "Escriba un nombre nuevo para el archivo")
EndFunc   ;==>_setTipsControles

Func _ayudaRapida()
	Local $dimVentana = WinGetPos('Private File')
	Local $size = WinGetClientSize("Private File")
	_WinAPI_MoveWindow($guiPrincipal, $size[0] - 46, $size[1]-13, $dimVentana[2], $dimVentana[3], True)
	MsgBox(64, "Private File", "Ayuda Rápida" & @CRLF & @CRLF & " A continuación se moverá el mouse en el orden que debe seguir los pasos." & _
			@CRLF & "Por favor no mueva el mouse.", 7, $guiPrincipal)
	Sleep(1000)
	GUICtrlSetState($lblAyudaRapida, $GUI_DISABLE)
	_direccionamientoMouse("Private File", $btnFile, 35)
	_direccionamientoMouse("Private File", $btnImage, 35)
	_direccionamientoMouse("Private File", $inpNuevoNombre, 35)
	_direccionamientoMouse("Private File", $btnAplicar, 35)
	GUICtrlSetState($lblAyudaRapida, $GUI_ENABLE)
	MsgBox(64, "Private File", "Ayuda rápida finalizada.!" & @CRLF & "Haga clic en Aceptar.", -1, $guiPrincipal)
EndFunc   ;==>_ayudaRapida

Func _direccionamientoMouse($tituloVentana, $boton_id, $altura)
	GUICtrlSetState($boton_id, $GUI_FOCUS)
	Local $posButton = ControlGetPos($tituloVentana, "", $boton_id)
	Local $dimVentana = WinGetPos($tituloVentana)
	MouseMove($posButton[0] + $dimVentana[0] + $posButton[3], $posButton[1] + $dimVentana[1] + $altura)
	Sleep(2000)
EndFunc   ;==>_direccionamientoMouse

Func _cerrarInterfaz()
	Exit
EndFunc   ;==>_cerrarInterfaz
;~ 	Run(@ComSpec & " /c " & 'COPY /B ' &'"'& GUICtrlRead($inpImage) &'"'& ' + ' & '"'&GUICtrlRead($inpFile)&'"' & ' "D:\images_nuevESITA.jpg"', "",@SW_HIDE)
;ejmplo01: Run(@ComSpec & " /c " & "dir c:\ ", "", @SW_HIDE, $STDOUT_CHILD)
;ejemplo: Run(@ComSpec & " /c " & "COPY /B D:\imagen.jpg + D:\archivo.rar D:\imagen_nuevESITA.jpg", "",@SW_HIDE)
;~ 	ConsoleWrite($posButton[0] & " oooo " & $posButton[1] &@CRLF & "Posición ventana."& @CRLF & $dimVentana[0] &" oooo "&$dimVentana[1])
Saludos :smt024
Adjuntos
Codigo-recursos&Aplicación.rar
(503.43 KiB) Descargado 288 veces
Obra de modo que merezcas a tu propio juicio y a juicio de los demás la eternidad, que te hagas insustituible que no merezcas morir.
https://www.facebook.com/yasmanycurimilma
PDF
Hacker del Foro
Mensajes: 152
Registrado: 18 Ene 2013, 23:23

Re: ESTEGANOGRAFÍA: Ocultar un archivo dentro de otro [ECHO]

Mensaje por PDF »

Muy útil aplicación yasmany :smt023 , gracias por compartir...

Una pregunta, Es necesario que la aplicacion requiera permisos de administrador?

Saludos
Avatar de Usuario
yasmany
Hacker del Foro
Mensajes: 249
Registrado: 06 Sep 2011, 21:30

Re: ESTEGANOGRAFÍA: Ocultar un archivo dentro de otro [ECHO]

Mensaje por yasmany »

Hola PDF. en realidad es necesario ejecutar como administrador ya que la copia de archivos puede que el usuario realice en la raiz de alguna unidad que requiera permisos de administrador... Mas bien es para poder cambiar en el registro LOS VALORES. para poder visualizar las extensiones.

Saludos... :smt024
Obra de modo que merezcas a tu propio juicio y a juicio de los demás la eternidad, que te hagas insustituible que no merezcas morir.
https://www.facebook.com/yasmanycurimilma
Avatar de Usuario
Dany
Profesional del Autoit
Mensajes: 651
Registrado: 28 Mar 2012, 22:49

Re: ESTEGANOGRAFÍA: Ocultar un archivo dentro de otro [ECHO]

Mensaje por Dany »

Gracias muy Útil e interesante.


Saludos
  • ............................................Imagen
    ......................................Imagen
PDF
Hacker del Foro
Mensajes: 152
Registrado: 18 Ene 2013, 23:23

Re: ESTEGANOGRAFÍA: Ocultar un archivo dentro de otro [ECHO]

Mensaje por PDF »

yasmany escribió:Hola PDF. en realidad es necesario ejecutar como administrador ya que la copia de archivos puede que el usuario realice en la raiz de alguna unidad que requiera permisos de administrador... Mas bien es para poder cambiar en el registro LOS VALORES. para poder visualizar las extensiones.
Te comento que en Windows 8, al menos, no es necesario iniciar como admi para cambiar estos valores, funciona muy bien, muy útil..

Saludos
Responder