[Source+Download] Stegnos1.0

Started by Be.Cool, 19 de August , 2007, 08:29:15 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Be.Cool

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:




Janela de mostrar o texto:



Stegnos em modo console



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_Side

e 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


Bom galera, eu dei mo trampo pra fazer essa tool espero que comentem e deem sugestoes e elegois ou ate criticas ;)!
vlw



fui

A sabedoria está em suas mãos

Gothic_Souls

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
A sete palmos do chão
Renascemos
e nas sombras viveremos.

;D
Bruna minha paixão... Arrebatou o meu coração... Mas ele triste ficou... porq de mim ela nunca gostou.