[Source - Download] SteganoGrafia - GUI (C++/VB)

Started by Dark_Side, 28 de June , 2006, 02:01:08 AM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Dark_Side

Hi,
Segue um programa que acabei de codar, um programa para esconder em imagens outros arquivos.
Por enquanto apenas tive êxito utilizando arquivos de texto(.txt,.doc). Em breve tentarei aprimorá-lo para suportar outros formatos de arquivos.
Tive alguns problemas em fazer o revelator em C++, então para não deixar de fazê-lo, o fiz em VB.

MAIN.CPP
//Programa codado by Dark_Side
#include "header.h"
int WINAPI WinMain(HINSTANCE hinst,HINSTANCE prev,LPSTR cmdline,int

ShowCmd)
{
   
procurar.hInstance=hinst;
procurar.lStructSize=sizeof(procurar);
procurar.Flags=OFN_FILEMUSTEXIST | OFN_PATHMUSTEXIST |

OFN_LONGNAMES | OFN_EXPLORER | OFN_HIDEREADONLY;
procurar.lpstrFile=buffer;
procurar.nMaxFile=255;



DialogBox(hinst,MAKEINTRESOURCE(dlg),hwnd,(DLGPROC)dlgproc);
return 0;
}

LRESULT CALLBACK dlgproc(HWND window,UINT msg,WPARAM wParam,LPARAM

lParam){
switch(msg)
{
case WM_INITDIALOG:
hwnd = window;
InitCommonControls();
return 1;
break;

case WM_CLOSE:
ExitProcess(0);
break;

case WM_COMMAND:
switch(wParam)
{
case p1:
sprintf(buffer,"");
procurar.lpstrFilter="Fotos JPEG(*.jpg,*.jpeg)\0*.jpg*\0Arquivos .GIF(*.gif)\0*.gif\0Arquivos .BMP(*.bmp)\0*.bmp\0Ícone(*.ico)\0*.ico";
        procurar.nMaxFile=255;
GetOpenFileName(&procurar);
if(strcmp(buffer,"")!=0)
SetDlgItemText(window,img,buffer);
break;

case p2:
sprintf(buffer,"");
procurar.lpstrFilter="Arquivos de Texto(*.txt)\0*.txt\0Arquivos .DOC\0(*.doc)";
        procurar.nMaxFile=255;
GetOpenFileName(&procurar);
if(strcmp(buffer,"")!=0)
SetDlgItemText(window,arq,buffer);
break;

case ok:
juntar();
break;


}

}

return 0;
}
void juntar()
{
GetDlgItemText(hwnd,img,n_img,255);
GetDlgItemText(hwnd,arq,n_arq,255);
GetDlgItemText(hwnd,saida,n_saida,255);
if(strcmp(n_img,"")==0 || strcmp(n_arq,"")==0 ||

strcmp(n_saida,"")==0)
{
MessageBox(hwnd,"Selecione os arquivos de origem e especifique um

arquivo de saída.","Erro",16);
SetFocus(GetDlgItem(hwnd,img));
}
else
{
f_img.open(n_img,ios::in|ios::binary|ios::ate);
f_arq.open(n_arq,ios::in|ios::binary|ios::ate);
f_saida.open(n_saida,ios::out|ios::binary);

tam = (int) f_img.tellg();
f_img.seekg(0);
b_img = new char[tam];
f_img.read(b_img,tam);

f_saida.write(b_img,tam);

tam = (int) f_arq.tellg();
f_arq.seekg(0);
b_arq = new char[tam];
f_arq.read(b_arq,tam);
for(x=0;x<strlen(n_arq);x++)
n_arq[x]=n_arq[x]+4;

f_saida.write("*_*_*",5);
f_saida.write(n_arq,strlen(n_arq));
f_saida.write("*_*_*",5);
for(x=0;x<strlen(b_arq);x++)
b_arq[x]=b_arq[x]+4;

f_saida.write(b_arq,tam);

f_img.close();
f_arq.close();
f_saida.close();

MessageBox(hwnd,"Processo conclúido com

sucesso!","OK",MB_OK|MB_ICONINFORMATION);
}
}
HEADER.H
#include <cstdio>
#include <fstream>
#include <windows.h>
#include <commctrl.h>
#include <commdlg.h>
#include "resource.h"

#pragma comment(lib,"comctl32")
#pragma comment(lib,"comdlg32")

using namespace std;
void juntar();
char buffer[255],*b_img,*b_arq,n_img[255],n_arq[255],n_saida[255];
int tam,x;

HWND hwnd;
fstream f_img,f_arq,f_saida;
OPENFILENAME procurar;

LRESULT CALLBACK dlgproc(HWND window,UINT msg,WPARAM wParam,LPARAM lParam);
RESOURCE.H
#define dlg                             101
#define img                             1000
#define p1                              1001
#define arq                             1002
#define p2                              1003
#define saida                           1004
#define ok                              1009

RC.RC
#include "resource.h"
#include "afxres.h"

dlg DIALOG DISCARDABLE  0, 0, 276, 100
STYLE DS_3DLOOK | WS_MINIMIZEBOX | WS_CAPTION | WS_SYSMENU
CAPTION "Dark Side:: Steganografia"
FONT 8, "MS Sans Serif"

BEGIN
    GROUPBOX        "Steganografar",IDC_STATIC,7,7,261,57,BS_CENTER
    LTEXT           "Selecione a imagem:",IDC_STATIC,15,20,66,8
    EDITTEXT        img,85,21,143,12,ES_AUTOHSCROLL | ES_READONLY
    PUSHBUTTON      "Procurar",p1,230,20,36,12
    LTEXT           "Selecione o arquivo:",IDC_STATIC,15,38,66,8
    EDITTEXT        arq,85,39,144,12,ES_AUTOHSCROLL | ES_READONLY
    PUSHBUTTON      "Procurar",p2,230,39,36,12
    GROUPBOX        "Saída",IDC_STATIC,7,68,262,27,BS_CENTER
    LTEXT           "Arquivo de saída",IDC_STATIC,15,78,66,8
    EDITTEXT        saida,85,78,144,12,ES_AUTOHSCROLL
    DEFPUSHBUTTON   "OK",ok,230,78,35,13
END

Segue agora o código do revelator em VB:
Necessita do controle: COMMDLG -> Objeto = dlg
1 textbox: file
1 Button: command1

REVELATOR.FRM
Dim buffer As String
Dim nome As String
Dim content As String
Dim x As Long
Dim decoded As String
Dim d As Integer
Private Sub Command1_Click()
file.Text = Empty
With dlg
.DialogTitle = "Abrir imagem..."
.FileName = ""
.Filter = "Foto JPEG(*.jpg,*.jpeg)|*.jpg*|Imagem .GIF(*.gif)|*.gif|Imagem .BMP(*.bmp)|*.BMP|Ícone(*.ico)|*.ico"
.ShowOpen
If .FileName <> "" Then
file.Text = .FileName
Open .FileName For Binary As 1
buffer = Input(LOF(1), #1)
If (InStr(1, buffer, "*_*_*")) = False Then
MsgBox "Imagem não steganografada.", vbCritical, "Erro"
Else
conf = MsgBox("Iniciar o processo?", vbInformation + vbYesNo, "OK")
If conf = vbNo Then Exit Sub

buffer = Mid(buffer, InStr(1, buffer, "*_*_*") + 5)
content = Mid(buffer, InStr(1, buffer, "*_*_*") + 5)
buffer = Mid(buffer, 1, InStr(1, buffer, "*_*_*") - 1)
Close 1
For x = 1 To Len(buffer)
nome = nome & Chr(Asc(Mid(buffer, x, 1)) - 4)
Next
nome = StrReverse(nome)
nome = Mid(nome, 1, InStr(1, nome, "\") - 1)
nome = StrReverse(nome)
For x = 1 To Len(content)
DoEvents
d = Asc(Mid(content, x, 1)) - 4
decoded = decoded & Chr(d)
Next
Open App.Path & "\" & nome For Output As 2
Print #2, decoded
Close 1
Close 2
End If
End If
End With
nome = Empty
content = Empty
decoded = Empty
End Sub


Segue abaixo, os códigos nos formatos em C++ e VB e os respectivos executáveis.
http://three.fsphost.com/darkside/stegano.rar
Bye.

#phobia

Ótimo post Dark_Side!

Só uma coisa, vc disse que da pra esconder em imagens outros arquivos.
Pode ser arquivos .exe? E se puder, a extensão fica .exe ou não?


vlw!

Anonymous

Quote from: "sley"Ótimo post Dark_Side!

Só uma coisa, vc disse que da pra esconder em imagens outros arquivos.
Pode ser arquivos .exe? E se puder, a extensão fica .exe ou não?

Lê o post que voce ira ver ...



Bye 8)
vlw!

#phobia

¬¬

Deu na mesma velho, eu li antes de postar!
Não manjo C++ nem VB...

Se alguém puder tirar minha dúvida, fico grato!
vlw

Ch40s_B0y

Mano eh Steganografia, isso n eh um joinner... procura aih no forum q tem explicado.. um topico axo q do Nemesis...

vlwz   :-*



insanity


#phobia

Quote from: "Ch40s_B0y"Mano eh Steganografia, isso n eh um joinner... procura aih no forum q tem explicado.. um topico axo q do Nemesis...

vlwz   :-*



Valeu Ch40s, vou dar uma pesquisada por ae e fuçar, afinal, é fuçando que se aprende! ^^

vlw   ;)

Dark_Side

Quote from: "sley"Ótimo post Dark_Side!

Só uma coisa, vc disse que da pra esconder em imagens outros arquivos.
Pode ser arquivos .exe? E se puder, a extensão fica .exe ou não?


vlw!
Hi, por enquanto o programa consegue steganografar arquivos TEXTO, mas estou trabalhando para que este suporte outros tipos de arquivos, e arquivos executáveis (.EXE), estão no plano.
Vlws.
Bye.

rog

realty.sys is corrupt :  reboot the universe (Y/N)

Dark_Side

Hi,
O problema está ligado à leitura do arquivo, mas acho que já encontrei a origem do problema - um argumento faltando. Estou tentando solucionar o problema, e quando terminado, postarei o resultado.
Vlws.
Bye.

Nêmesis