ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2

ANTICHAT — форум по информационной безопасности, OSINT и технологиям

ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию. Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club, и теперь снова доступен на новом адресе — forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
Вернуться   Форум АНТИЧАТ > Программирование > С/С++, C#, Delphi, .NET, Asm
   
Закрытая тема
 
Опции темы Поиск в этой теме Опции просмотра

  #11  
Старый 27.06.2007, 14:46
slesh
Reservists Of Antichat - Level 6
Регистрация: 05.03.2007
Сообщений: 1,985
Провел на форуме:
3288241

Репутация: 3349


Отправить сообщение для slesh с помощью ICQ
По умолчанию

2 Kez млин. конечно нужен временный буфер куда читать.
я просто навренео не правильно выразился. я имел в виду троковую переменну. в которую читать данные и искать конец Http заголовка.
 

  #12  
Старый 28.06.2007, 15:01
sn0w
Статус пользователя:
Регистрация: 26.07.2005
Сообщений: 568
Провел на форуме:
1290766

Репутация: 1236


По умолчанию

Http заголовок завершается двойным Crlf. дальше идут данные.
__________________


snow white world wide
 

  #13  
Старый 01.07.2007, 12:20
[NiGHT]DarkAngel
Участник форума
Регистрация: 29.03.2005
Сообщений: 138
Провел на форуме:
812087

Репутация: 129
По умолчанию

Так вроде чето получилось написать,хтмл странички принимаю без проблем,а вот с остальным rar, exe и тд. как то не важно,куда то теряются данные при передачи ((

Если не трдуно посмотрите пожалйуста исходник и моно носом ткнуть что и где неправильно))

Ногами сильно не бить , я только учусь и в этой проге куча всяких недостатков и багов,но все ранво зарание всем спасибо за все )


Код:
//---------------------------------------------------------------------------

#include <vcl.h>
#include <iostream.h>
#include <conio.h>
#include <winsock2.h>
#include <stdlib.h>
#include <stdio.h>
#pragma hdrstop

//---------------------------------------------------------------------------

class my_socket
{
public:
SOCKET client;
my_socket();
~my_socket();

int error() {cout << "!!! Owu6ka !!!" << WSAGetLastError() << endl; return 1;}
int sends(char *byf,SOCKET client);
};

my_socket::my_socket()
{
WSAData w;
int error=WSAStartup (0x0202, &w);
if (error)
 {
 cout << "Neizvestna9 owubka :( " <<endl;

 }
 if (w.wVersion != 0x0202)
 { // íå òà âåðñèÿ ñîêåòîâ!
WSACleanup (); // âûãðóæàåì  ws2_32.dll

 }

cout << "Rabotaet konstructor" << endl;
}

my_socket::~my_socket()
{

WSACleanup();
cout << "Rabotaet destructor " << endl;
}

int my_socket::sends(char *buff, SOCKET client)
{
int rVal=0;

rVal = send(client,buff,strlen(buff),0);

    if(rVal == SOCKET_ERROR)
    {
        cout <<"Failed send()"<<endl;
        return 1;
    }
    else
    {cout << " Yspewno peredalos' " << endl;}
    return 0;
}

#pragma argsused
int main(int argc, char* argv[])
{
cout << "Na4alo rabotu programmu" << endl;
my_socket my;
SOCKET s;
sockaddr_in target;


s = socket (AF_INET, SOCK_STREAM, 0); // Ñîçäà¸ì ñîêåò

target.sin_family = AF_INET;           // ñåìåñòâî àäðåñîâ - Èíòåðíåò
target.sin_port = htons (80);        // ïîðò ñåðâåðà
target.sin_addr.s_addr = inet_addr ("127.0.0.1");
//target.sin_addr.s_addr = inet_addr ("87.224.128.10");  // IP-àäðåñ ñåðâåðà
int rVal=0;
rVal=connect(s,(LPSOCKADDR)&target, sizeof(target));
 if(rVal==SOCKET_ERROR)
    {
        cout << "Failed connection" << endl;
        return 1;
    }
  else {cout << " Socket yspewno soedenils9" << endl;}

my.sends("GET http://127.0.0.1/files/my.txt HTTP/1.0\r\n\r\n",s);
my.sends("User-Agent: myDownload 0.1\r\n\r\n",s);
my.sends("Accept: */*\r\n\r\n",s);
my.sends("Host: 127.0.0.1 \r\n\r\n",s);
//my.sends("Connection: close\r\n\r\n",s);


char buf_in[8];
int x;
char page_text[190000];    //òóò áóäåò õðàíèòüñÿ âñå, ÷òî ïîëó÷àåøü
FILE *tele;
if ((tele = fopen("my.txt","w+b")) == NULL)
{
 cout << " Open file error " <<endl;
 getch();
 return -1;
}

x=recv(s,buf_in,sizeof(buf_in)-1,0);

while(x>0)
{
 buf_in[x]=0;
 lstrcat(page_text,buf_in);
 //cout << buf_in;
 //getch();
 x=recv(s,buf_in,sizeof(buf_in)-1,0);
}

cout << endl << "strlen(page_text) = " << strlen(page_text) << endl;

int i;
for (i=0;i<strlen(page_text);i++)
{
 if ((page_text[i]=='\r') && (page_text[i+1]=='\n') && (page_text[i+2]=='\r')&& (page_text[i+3]=='\n'))
  {
   cout << "Est' taka9 stroka i = " << i << endl;  break;
  }

}
int p,b,q;
p=i+4;

q=(strlen(page_text)-p);
char *stroka;
cout << "p = " << p<< endl;
cout << "strlen = " << q << endl;
for (b=p;b<strlen(page_text);b++)
{
cout << "b= " <<b << endl;
stroka=&(page_text[b]);
fwrite(stroka,strlen(stroka),1,tele); break;
}
    closesocket(s);
    my.~my_socket();
getch();
        return 0;
}
//---------------------------------------------------------------------------
 

  #14  
Старый 01.07.2007, 12:52
KEZ
Banned
Регистрация: 18.05.2005
Сообщений: 1,981
Провел на форуме:
1941233

Репутация: 2726


По умолчанию

Цитата:
lstrcat(page_text,buf_in);
Б**** сколько ещё раз написать тебе что lstrcat - присоединяет СТРОКУ. Строка заканчивается нулевым символом. А у тебя содержимое рар или ехе может иметь что угодно, в том числе и нули.

И ещё, мне кажется что тебе рановато использовать КЛАССЫ. Ещё и такие бессмысленные как в данном случае. Спрашивается - нахера они тебе тут нужны?

Последний раз редактировалось begin end; 06.07.2007 в 19:59.. Причина: мат
 

  #15  
Старый 06.07.2007, 18:59
NetMan
Участник форума
Регистрация: 09.02.2004
Сообщений: 122
Провел на форуме:
1089794

Репутация: 134
По умолчанию

Sorry 2 all...
Вот накатал скачивание при помощи класса CInternetFile библиотеки MFC.
Код:
void DownloadFile(LPCSTR pstrURL,LPCSTR lpszFileName)
{
	CInternetSession inetSession;
	CInternetFile *inetFile = (CInternetFile *) inetSession.OpenURL(pstrURL, 1, INTERNET_FLAG_TRANSFER_BINARY | INTERNET_FLAG_DONT_CACHE);
	CFile file(lpszFileName,CFile::modeCreate | CFile::modeWrite | CFile::typeBinary); 

	char buf[8192];
	DWORD dwBytesRead;
	while (dwBytesRead=inetFile->Read(buf, sizeof(buf)))
		file.Write(buf, dwBytesRead);
	
	inetFile->Close();
	delete inetFile;
	inetSession.Close();
}
 

  #16  
Старый 06.07.2007, 19:29
A110ut
Постоянный
Регистрация: 31.12.2005
Сообщений: 605
Провел на форуме:
4349433

Репутация: 661


По умолчанию

Цитата:
скачивание при помощи класса CInternetFile библиотеки MFC
NetMan, может проще взять Download Master ?

[NiGHT]DarkAngel, не поддавайся на провокации. еб*аш Свой довнлоадер пока не заработает. если не получается по другому, то нужно учится и на своих ошибках..
 

  #17  
Старый 07.07.2007, 00:19
da_ff
Участник форума
Регистрация: 11.07.2006
Сообщений: 125
Провел на форуме:
413927

Репутация: 71
Отправить сообщение для da_ff с помощью ICQ
По умолчанию

с начала не читал так что есди не попаду в тему то просто не обращайте внимания

FILE *out;
while(x=ecv(s,buf_in,sizeof(buf_in)-1,0))
{
buf_in[x]=0;
fwrite(buf_in,x,1,out);
}

че то типа того
 

  #18  
Старый 07.07.2007, 00:34
Ni0x
Постоянный
Регистрация: 27.08.2006
Сообщений: 367
Провел на форуме:
2009677

Репутация: 472
По умолчанию

da_ff, исправь ecv на recv
 

  #19  
Старый 07.07.2007, 02:40
KEZ
Banned
Регистрация: 18.05.2005
Сообщений: 1,981
Провел на форуме:
1941233

Репутация: 2726


По умолчанию

Я не знаю даже. Может вам картинку с комиксом нарисовать надо или под музыку песню написать где рассказывается на китайском что strcat() прикрепляет строку к строке а не массив байт к массиву байт и что через MFC делать скачивание файла - все равно что через 3DS MAX рисовать точку на экране?
 

  #20  
Старый 07.07.2007, 09:20
_Great_
Флудер
Регистрация: 27.12.2005
Сообщений: 2,372
Провел на форуме:
5339610

Репутация: 4360


Отправить сообщение для _Great_ с помощью ICQ
По умолчанию

Блин, стоит только отойти, уже флейма разведут на Н страниц. Таких тем в инете полно! Исходников тоже!
На крайняк если ТС ничего не найдет (вероятность менее 1%), то я потом выложу в паблик Antichat Web Tool, где скачивание страницы реализовано через чистые сокеты.

В двух словах:

Код:
SOCKET s = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
SOCKADDR_IN sa = {0};
sa.sin_family = AF_INET;
HOSTENT* phe = gethostbyname("google.ru");
*(DWORD*)&sa.sin_addr.s_addr = *(DWORD*)phe->h_addr_list[0];
sa.sin_port = htons(80);
connect( s, &sa, sizeof(sa) );

const int bsize = 1024*1024;  // 1 megabyte
char *buffer = new char[bsize];
wsprintf( buffer, "GET http://google.ru/ HTTP/1.0\r\nHost: google.ru\r\n\r\n" );
send( s, buffer, strlen(buffer), 0 );

int bytes = 0, pos = 0;
do {
  bytes = recv( s, buffer+pos, bsize-pos, 0 );
  if( !(bytes>0) )
    break;
  pos += bytes;
  buffer[pos] = 0;
} while(1);

closesocket( s );
char *body = strstr( buffer, "\r\n\r\n" );
body += 4; // strlen of \r\n\r\n

// now buffer contains full response, body contains only response body

delete buffer;
Цитата:
Вот накатал скачивание при помощи класса CInternetFile библиотеки MFC.
Скачка файла через MFC - из пушки по воробьям

Тема закрыта

Последний раз редактировалось _Great_; 07.07.2007 в 11:31..
 
Закрытая тема



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ответьте на вопросы Legion342 PHP, PERL, MySQL, JavaScript 5 22.11.2007 14:03
Посимвольный перебор в базах данных на примере MySQL LoFFi Чужие Статьи 5 30.04.2007 05:05
Перехват данных BрxMSG Чужие Статьи 0 26.12.2006 22:22
Перехват данных, кто, где и как? GreenBear Чужие Статьи 1 16.12.2006 16:43
Защищаем MySql. Шаг за шагом k00p3r Чужие Статьи 0 13.06.2005 11:18



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ