Nome: Stegnos 1.0
Linguagem:C
Descrição:Esconder pequenos textos em imagens
Bom eu codei ele em dois tipo:
2 arquivos em gui
1 arquivo em console
segue a screen:
Janela de Esconder o Texto:
(//http://www.imageshosting.xpg.com.br/screen1.JPG)
Janela de mostrar o texto:(//http://www.imageshosting.xpg.com.br/screen2.JPG)
Stegnos em modo console(//http://img406.imageshack.us/img406/9932/stegnosjj5.png)
Source Esconde.dev:
main.cpp#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <windows.h>
#include "recurso.h"
//definicoes
#define lb1 1
#define t_1 2
#define lb2 3
#define t_2 4
#define btnp 5
#define lb3 6
#define t_3 7
#define btno 8
//handles
HWND txt3;
HWND txt;
HWND txt2;
HWND label1;
HWND label2;
HWND label3;
HWND bot1;
HWND bot2;
HMENU menu;
OPENFILENAME ofn;
char buff1[500];
char agrad[500];
LRESULT CALLBACK WinProc(HWND window,UINT msg,WPARAM wParam,LPARAM lParam);
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow)
{
HWND hwnd;
WNDCLASSEX win;
MSG message;
win.cbClsExtra=0;
win.cbSize=sizeof(win);
win.cbWndExtra=0;
win.hbrBackground=GetSysColorBrush(COLOR_BTNFACE);
win.hCursor=LoadCursor(NULL,IDC_CROSS);
win.hIcon=LoadIcon(hInstance,MAKEINTRESOURCE(ID_ICONE));
win.hIconSm=LoadIcon(hInstance,MAKEINTRESOURCE(ID_ICONE));
win.hInstance=hInstance;
win.lpfnWndProc=WinProc;
win.lpszClassName="Janela";
win.lpszMenuName=NULL;
win.style=0;
if(!RegisterClassEx(&win))
return 0;
hwnd = CreateWindowEx(0,"Janela","BC - Stegnos1.0 - Be.Cool Lab's",WS_OVERLAPPED|WS_SYSMENU|WS_MINIMIZEBOX,200,100,400,330,NULL,NULL,hInstance,NULL);
menu = LoadMenu(hInstance, MAKEINTRESOURCE(ID_MENU));
SetMenu(hwnd, menu);
if(hwnd == NULL)
return 0;
ShowWindow(hwnd,SW_SHOW);
UpdateWindow(hwnd);
while(GetMessage(&message,0,0,0)){
TranslateMessage(&message);
DispatchMessage(&message);
}
return message.wParam;
}
LRESULT CALLBACK WinProc(HWND window,UINT msg,WPARAM wParam,LPARAM lParam){
switch(msg)
{
case WM_CREATE:
label1 = CreateWindowEx(0,"STATIC","Arquivo de Texto :",WS_CHILD | WS_VISIBLE ,10,30,370,20,window,(HMENU)lb1,NULL,0);
txt = CreateWindowEx(0,"EDIT","" ,ES_AUTOHSCROLL | WS_CHILD | WS_VISIBLE | WS_BORDER,10,50,290,20,window,(HMENU)t_1,0,0);
bot1 = CreateWindowEx(0,"BUTTON","Procurar..." ,WS_CHILD|WS_VISIBLE|BS_DEFPUSHBUTTON,310,45,80,30,window,(HMENU)btnp,0,0);
label2 = CreateWindowEx(0,"STATIC","Texto a ser escondido :",WS_CHILD|WS_VISIBLE,10,80,370,20,window,(HMENU)lb2,NULL,0);
txt2 = CreateWindowEx(0,"EDIT","" ,WS_CHILD|WS_VISIBLE|WS_BORDER|ES_MULTILINE,10,100,370,55,window,(HMENU)t_2,0,0);
label3 = CreateWindowEx(0,"STATIC","Chave :",WS_CHILD|WS_VISIBLE,10,170,370,20,window,(HMENU)lb3,NULL,0);
txt3 = CreateWindowEx(0,"EDIT","" ,WS_CHILD|WS_VISIBLE|WS_BORDER,10,190,370,20,window,(HMENU)t_3,0,0);
bot2 = CreateWindowEx(0,"BUTTON","OK" ,WS_CHILD|WS_VISIBLE|BS_DEFPUSHBUTTON,150,220,100,40,window,(HMENU)btno,0,0);
break;
case WM_COMMAND:
switch(wParam)
{
case btnp:
SendMessage(txt, WM_SETTEXT, 256, (LPARAM)(LPCSTR)"");
ZeroMemory(&ofn, sizeof(ofn));
ZeroMemory(&buff1, sizeof(buff1));
ofn.lStructSize = sizeof(ofn); // SEE NOTE BELOW
ofn.hwndOwner = window;
ofn.lpstrFilter = "Arquivos de imagens (*.jpg)\0*.jpg\0";//
ofn.lpstrFile = buff1;
ofn.nMaxFile = 499;
ofn.Flags = OFN_EXPLORER | OFN_FILEMUSTEXIST | OFN_HIDEREADONLY;
ofn.lpstrDefExt = NULL;
if(!GetOpenFileName(&ofn))
{
return 0;
}
else
{
SendMessage(txt, WM_SETTEXT, 499,(LPARAM)(LPCSTR)buff1);
}
break;
case btno:
char buffer1[256],buffer2[256],buffer3[256],cmd[256];
char *token,*vaila;
GetWindowText(txt,buffer1,256);
GetWindowText(txt2,buffer2,256);
GetWindowText(txt3,buffer3,256);
if (strlen(buffer1)<=0 || strlen(buffer2)<=0 || strlen(buffer3)<=0 ){
MessageBox(window,"Preencha todos os campos !","ERRO! #",MB_OK|MB_ICONERROR);
}else{
token = strtok(buffer1,"\\");
while (token != NULL){
printf("The token is: %s\n", token);
vaila = token;
printf("%s\n",vaila);
token = strtok(NULL,"\\");
}
sprintf(cmd,"echo \"%s\" > %s:%s.txt",buffer2,vaila,buffer3);
system(cmd);
MessageBox(window,"Texto escondido!","Ok^^",MB_OK|MB_ICONINFORMATION);
}
}
case BN_CLICKED:
switch(LOWORD(wParam))
{
case ID_DES:
WinExec("mostra.exe",SW_NORMAL);
break;
case ID_EXIT:
DestroyWindow(window);
break;
case ID_AJUDA:
sprintf(agrad,"BC - Stegnos1.0 - Be.Cool Lab's\n\n\nAgradecimentos:\n\n\nAlucard - foi o primeiro a testar a tool \n\nDefcon - Me ajudou bastante na Interface Grafico e comandos \n\nDark_Side - Escreveu um otimo tuto sobre GUI\n\n\nForuns:\n\nHackMode.Com.Br \n\nDarkers.Com.Br \n\n\n\n");
MessageBox(window,agrad,"Greats =)",MB_OK|MB_ICONINFORMATION);
break;
}
break;
case WM_CLOSE:
DestroyWindow(window);
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(window, msg, wParam, lParam);
}
return 0;
}
recurso.h#define ID_MENU 9
#define ID_EXIT 10
#define ID_DES 11
#define ID_ICONE 12
#define ID_AJUDA 13
recurso.rc:#include "recurso.h"
ID_MENU MENU
BEGIN
POPUP "&Opções"
BEGIN
MENUITEM "&Mostra Texto",ID_DES
MENUITEM "&Sair",ID_EXIT
END
POPUP "&Ajuda"
BEGIN
MENUITEM "&Agradecimentos",ID_AJUDA
END
END
ID_ICONE ICON DISCARDABLE "Ufo.ico"
1 24 "xpmanifest.xml"
Source Mostra.dev:
main.cpp:#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <windows.h>
#include "recurso.h"
//definicoes
#define lb1 1
#define t_1 2
#define lb2 3
#define t_2 4
#define btnp 5
#define btno 8
//handles
HWND txt3;
HWND txt;
HWND txt2;
HWND label1;
HWND label2;
HWND label3;
HWND bot1;
HWND bot2;
HMENU menu;
OPENFILENAME ofn;
char buff1[500];
char agrad[500];
LRESULT CALLBACK WinProc(HWND window,UINT msg,WPARAM wParam,LPARAM lParam);
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow)
{
HWND hwnd;
WNDCLASSEX win;
MSG message;
win.cbClsExtra=0;
win.cbSize=sizeof(win);
win.cbWndExtra=0;
win.hbrBackground=GetSysColorBrush(COLOR_BTNFACE);
win.hCursor=LoadCursor(NULL,IDC_CROSS);
win.hIcon=LoadIcon(hInstance,MAKEINTRESOURCE(ID_ICONE));
win.hIconSm=LoadIcon(hInstance,MAKEINTRESOURCE(ID_ICONE));
win.hInstance=hInstance;
win.lpfnWndProc=WinProc;
win.lpszClassName="Janela";
win.lpszMenuName=NULL;
win.style=0;
if(!RegisterClassEx(&win))
return 0;
hwnd = CreateWindowEx(0,"Janela","BC - Stegnos1.0 - Be.Cool Lab's",WS_OVERLAPPED|WS_SYSMENU|WS_MINIMIZEBOX,200,100,400,250,NULL,NULL,hInstance,NULL);
menu = LoadMenu(hInstance, MAKEINTRESOURCE(ID_MENU));
SetMenu(hwnd, menu);
if(hwnd == NULL)
return 0;
ShowWindow(hwnd,SW_SHOW);
UpdateWindow(hwnd);
while(GetMessage(&message,0,0,0)){
TranslateMessage(&message);
DispatchMessage(&message);
}
return message.wParam;
}
LRESULT CALLBACK WinProc(HWND window,UINT msg,WPARAM wParam,LPARAM lParam){
switch(msg)
{
case WM_CREATE:
label1 = CreateWindowEx(0,"STATIC","Arquivo de Texto :",WS_CHILD | WS_VISIBLE ,10,30,370,20,window,(HMENU)lb1,NULL,0);
txt = CreateWindowEx(0,"EDIT","" ,ES_AUTOHSCROLL | WS_CHILD | WS_VISIBLE | WS_BORDER,10,50,290,20,window,(HMENU)t_1,0,0);
bot1 = CreateWindowEx(0,"BUTTON","Procurar..." ,WS_CHILD|WS_VISIBLE|BS_DEFPUSHBUTTON,310,45,80,30,window,(HMENU)btnp,0,0);
label2 = CreateWindowEx(0,"STATIC","Chave :",WS_CHILD|WS_VISIBLE,10,80,370,20,window,(HMENU)lb2,NULL,0);
txt2 = CreateWindowEx(0,"EDIT","" ,WS_CHILD|WS_VISIBLE|WS_BORDER,10,100,370,20,window,(HMENU)t_2,0,0);
bot2 = CreateWindowEx(0,"BUTTON","OK" ,WS_CHILD|WS_VISIBLE|BS_DEFPUSHBUTTON,150,130,100,40,window,(HMENU)btno,0,0);
break;
case WM_COMMAND:
switch(wParam)
{
case btnp:
SendMessage(txt, WM_SETTEXT, 256, (LPARAM)(LPCSTR)"");
ZeroMemory(&ofn, sizeof(ofn));
ZeroMemory(&buff1, sizeof(buff1));
ofn.lStructSize = sizeof(ofn); // SEE NOTE BELOW
ofn.hwndOwner = window;
ofn.lpstrFilter = "Arquivos de imagens (*.jpg)\0*.jpg\0";//
ofn.lpstrFile = buff1;
ofn.nMaxFile = 499;
ofn.Flags = OFN_EXPLORER | OFN_FILEMUSTEXIST | OFN_HIDEREADONLY;
ofn.lpstrDefExt = NULL;
if(!GetOpenFileName(&ofn))
{
return 0;
}
else
{
SendMessage(txt, WM_SETTEXT, 499,(LPARAM)(LPCSTR)buff1);
}
break;
case btno:
char buffer1[256],buffer2[256],buffer3[256],cmd[256];
char *token,*vaila;
GetWindowText(txt,buffer1,256);
GetWindowText(txt2,buffer2,256);
if (strlen(buffer1)<=0 || strlen(buffer2)<=0 ){
MessageBox(window,"Preencha todos os campos !","ERRO! #",MB_OK|MB_ICONERROR);
}else{
token = strtok(buffer1,"\\");
while (token != NULL){
printf("The token is: %s\n", token);
vaila = token;
printf("%s\n",vaila);
token = strtok(NULL,"\\");
}
sprintf(cmd,"notepad %s:%s.txt",vaila,buffer2);
system(cmd);
}
}
case BN_CLICKED:
switch(LOWORD(wParam))
{
case ID_DES:
WinExec("esconde.exe",SW_NORMAL);
break;
case ID_EXIT:
DestroyWindow(window);
break;
case ID_AJUDA:
sprintf(agrad,"BC - Stegnos1.0 - Be.Cool Lab's\n\n\nAgradecimentos:\n\n\nAlucard - foi o primeiro a testar a tool \n\nDefcon - Me ajudou bastante na Interface Grafico e comandos \n\nDark_Side - Escreveu um otimo tuto sobre GUI\n\n\nForuns:\n\nHackMode.Com.Br \n\nDarkers.Com.Br \n\n\n\n");
MessageBox(window,agrad,"Greats =)",MB_OK|MB_ICONINFORMATION);
break;
}
break;
case WM_CLOSE:
DestroyWindow(window);
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(window, msg, wParam, lParam);
}
return 0;
}
recurso.h#define ID_MENU 9
#define ID_EXIT 10
#define ID_DES 11
#define ID_ICONE 12
#define ID_AJUDA 13
recurso.rc#include "recurso.h"
ID_MENU MENU
BEGIN
POPUP "&Opções"
BEGIN
MENUITEM "&Esconder Texto",ID_DES
MENUITEM "&Sair",ID_EXIT
END
POPUP "&Ajuda"
BEGIN
MENUITEM "&Agradecimentos",ID_AJUDA
END
END
ID_ICONE ICON DISCARDABLE "Ufo.ico"
1 24 "xpmanifest.xml"
Source Stegnos em modo console:
main.c#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <windows.h>
int main(){
char nome[255],chave[255],eco[255],msg[255];
int ap;
SetConsoleTitle("Steganos 1.0 - By Be.Cool");
printf("**********************************************************\n");
printf("* *\n");
printf("* Be.coolLab's - Be.Cool World Inc. *\n");
printf("* *\n");
printf("* Stegnos 1.0 - By Be.Cool *\n");
printf("* *\n");
printf("**********************************************************\n");
printf("\n\nEcolha a opcao:\n1 - Esconder texto em uma imagem");
printf("\n2 - Mostrar texto na imagem");
printf("\n3 - Sair\n");
scanf("%d",&ap);
if (ap == 2){
printf("\n\nDigite o nome da imagem : ");
scanf("%s",nome);
if (nome == ""){
puts("Você tem que digitar o nome da imagem!");
exit(0);
}
printf("\nDigite a chave : ");
scanf("%s",chave);
if (chave == ""){
puts("Você tem que digitar a chave!");
exit(0);
}
sprintf(eco,"notepad %s:%s.txt",nome,chave);
system(eco);
exit(0);
}
else if(ap == 1){
printf("\n\nDigite o nome da imagem : ");
scanf("%s",nome);
if (nome == ""){
puts("Você tem que digitar o nome da imagem!");
exit(0);
}
printf("\nDigite o texto a ser inserido: ");
scanf("%s",msg);
if (msg == ""){
puts("Você tem que digitar a mensagem!");
exit(0);
}
printf("\nDigite a chave : ");
scanf("%s",chave);
if (chave == ""){
puts("Você tem que digitar a chave!");
exit(0);
}
sprintf(eco,"echo \"%s\" > %s:%s.txt",msg,nome,chave);
system(eco);
exit(0);
}
else if(ap == 3){
exit(0);
}
else{
printf("\nOpcao nao conhecida");
exit(0);
}
return 0;
}
Bem vc devem ter percebido que ele que eu tive que criar 3 arquivos .exe, isso porque eu tive problemas quanto a algumas funcoes =(
Bom como nem tudo são rosas lá vai algunas pequenas limitacaoes que ele tem:
a imagem tem que estar na mesma pasta que os exe
na hora de vc escrever a mensagem vc não pode apertar enter para pular de linha =(
enfim, é isso ai...
possiveis bugs,ou problemas é so me falar que estarei arrumando-a o mais breve posssivel!
agradecimentos:
Alucard
Defcon
Dark_Sidee toda a galera que curte programção!
o Download dos projetos, arquivos, pode ser encontrado aqui:
http://www.4shared.com/file/22258724/f4c822ab/Stegnos_10.htmlDownload (//http://www.4shared.com/file/22258724/f4c822ab/Stegnos_10.htmlDownload)
Bom galera, eu dei mo trampo pra fazer essa tool espero que comentem e deem sugestoes e elegois ou ate criticas

!
vlw
fui
Interessante isso cara..
Ja tinha feito essas parada ai há muito tempo, mais agora parece que vai ser util pra mim gravar uma video aula.
Abrção Parabens