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 (http://three.fsphost.com/darkside/stegano.rar)
Bye.
Ó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!
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 
vlw!
¬¬
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
Mano eh Steganografia, isso n eh um joinner... procura aih no forum q tem explicado.. um topico axo q do Nemesis...
vlwz :-*
Nice source, cara
ate mais
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
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.
beleza dark side
strtok nao funcionou ?
rog
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.
Aqui tem um tutorial meu sobre estenografia para quem ainda tem dúvidas :
http://www.darkers.com.br/smf/index.php ... 581.0.html (http://www.darkers.com.br/smf/index.php/topic,2581.0.html)
Flwss