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

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

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

  #1  
Старый 21.08.2009, 23:43
DiSi
Познающий
Регистрация: 08.12.2007
Сообщений: 92
Провел на форуме:
1216941

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

как сделать побайтовое чтение файла? (.jpg)

если можна на примере
 

  #2  
Старый 22.08.2009, 00:17
ErrorNeo
Moderator - Level 7
Регистрация: 02.05.2009
Сообщений: 894
Провел на форуме:
4297091

Репутация: 2261


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

DiSi

Код:
program PicToTxt;

uses
  SysUtils;

var
  picture1: file of char;
  picture2:textfile;
  txt_file:textfile;
  i:integer; 
  chr:char;
  hex_chr:string[2];
  buff:widestring;


{functions}
function ChrToHex(S: Char): String;
begin
   Result:= IntToHex(ord(S),2);
end;

function HexToChr(H: String): Char;
begin
   Result:= Char(StrToInt('$'+Copy(H,1,2)));
end;

{program start}
begin

      {convert pic->txt}
      buff:='';
      assignfile(picture1,'c:\avata.gif');
      reset(picture1);
      for i:=1 to filesize(picture1) do
      begin
        read(picture1,chr);
        buff:=buff+ChrToHex(chr);
      end;
      closefile(picture1);

      assignfile(txt_file,'c:\txt_file.txt');
      rewrite(txt_file);
      write(txt_file,buff);
      closefile(txt_file);


      {convert txt->pic}
      buff:='';
      assignfile(txt_file,'c:\txt_file.txt');
      reset(txt_file);
      while not EOF(txt_file) do
      begin
         read(txt_file,hex_chr);
         chr:=HexToChr(hex_chr);
         buff:=buff+chr;
      end;
      closefile(txt_file);

      assignfile(picture2,'c:\avata2.gif');
      rewrite(picture2);
      write(picture2,buff);
      closefile(picture2);


end.
код подходит для обработки небольших файлов(не только картинок), для б0льших - вместо widestring (в качестве буффера) надо будет, конечно, использовать что-нибудь по-серьёзнее

Последний раз редактировалось ErrorNeo; 22.08.2009 в 03:50..
 

  #3  
Старый 22.08.2009, 00:27
DiSi
Познающий
Регистрация: 08.12.2007
Сообщений: 92
Провел на форуме:
1216941

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

ErrorNeo, СПС!!!!))) помог)

ы)
PHP код:
write(pic2,hex_chr); 
тут ошибка(

Incompatible types: 'Char' and 'String'

ето когда переделует картинку в тхт((

Последний раз редактировалось DiSi; 22.08.2009 в 00:44..
 

  #4  
Старый 22.08.2009, 00:34
cremator (c)
Постоянный
Регистрация: 20.06.2008
Сообщений: 323
Провел на форуме:
1240829

Репутация: 165
Отправить сообщение для cremator (c) с помощью ICQ
По умолчанию

НTL, надо делать в отдельном потоке всё!)) Если ты на сокетах делаешь, без всяких индей и прочей хрени, то в главном потоке всё делать это махохизм)
Вот можешь поизучать исходнички http sender (slesh'a), сам на его основе строю запросы. http://slil.ru/27918620

Последний раз редактировалось cremator (c); 22.08.2009 в 00:53..
 

  #5  
Старый 08.09.2009, 12:46
ZdezBilYa
Участник форума
Регистрация: 29.08.2008
Сообщений: 151
Провел на форуме:
1551582

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

Вопрос:
Делаю запрос через браузер. Ответ:
Код:
HTTP/1.1 200 OK
Server: nginx/0.7.41
Date: Tue, 08 Sep 2009 08:04:54 GMT
Content-Type: text/html; charset=windows-1251
Content-Encoding: gzip
Cache-Control: no-cache,no-store,must-revalidate
Pragma: no-cache
Expires: Mon, 08 Sep 2008 08:04:54 GMT
Last-Modified: Tue, 08 Sep 2009 12:04:54 GMT
Vary: Accept-Encoding
Content-Length: 16761
Via: 1.1 inet
Proxy-Connection: close
...
...
Все нормально

Делаю запрос через программу.
Ставлю AcceptEncoding:='deflate, gzip, x-gzip, identity, *;q=0';
В снифере нормально, в программе:
Код:
‹
Если ставить AcceptEncoding:='deflate, identity, *;q=0';
то ошибка идет:
Код:
HTTP/1.1 501 Not Implemented (Proxy server error)
Via: 1.1 inet
Proxy-Connection: close
Content-Type: text/html; charset=windows-1251
Content-Length: 435
...
...
Как всё-таки получить ответ в программе?
 

  #6  
Старый 22.08.2009, 00:38
ErrorNeo
Moderator - Level 7
Регистрация: 02.05.2009
Сообщений: 894
Провел на форуме:
4297091

Репутация: 2261


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

НTL, у тебя зависает на функции "recv"?

если да, то:
Код:
const
GP_TIMEOUT=10000; //это значит таймаут ожидания ответа 10 секунд
+
Код:
function recvdata(sock:TSocket):string;
var
  tv : timeval;
  fds : TFDSet;
  buf : array [1..20000] of char;
  res : string;
  r : integer;
  i:integer;
  inc,tmp:integer;
begin
  r:=1;
  while (r>0) do
  begin
    FD_ZERO(fds);
    FD_SET(sock, fds);
    tv.tv_sec := GP_TIMEOUT div 1000;
    tv.tv_usec := (GP_TIMEOUT mod 1000) * 1000;
    i := select(0, @fds, nil, nil, @tv);
    if (i <= 0) then
    begin
      break;
    end;
    r := recv(sock, buf, 20000, 0);
    res:=res+copy(buf,1,r);
  end;
  result:=res;
end;
ну и теперь просто вместо, к примеру,

recv(s,sBuff,5000,0);
юзаешь
reply:=recvdata(s);
где s:TSOCKET;

эта функция
Код:
uses
  Windows

Последний раз редактировалось ErrorNeo; 22.08.2009 в 01:02..
 

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

Репутация: 3349


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

2 ErrorNeo короче будет если задать таймаут самому сокету
типа
timeout.tv_usec = 0;
timeout.tv_sec = RECV_TIMEOUT;
setsockopt(sock, SOL_SOCKET, SO_RCVTIMEO, (char*)&timeout, sizeof(TIMEVAL));

тогда recv будет автоматом вылетать через RECV_TIMEOUT милесекунд.
т.е. чтобы был таймаут 10 сек нужно RECV_TIMEOUT = 10000;
А потом когда это уже не нужно можно снять таймаут
setsockopt(sock, SOL_SOCKET, SO_RCVTIMEO, 0, 0);
 

  #8  
Старый 22.08.2009, 17:09
НTL
Постоянный
Регистрация: 26.01.2008
Сообщений: 796
Провел на форуме:
5209663

Репутация: 357


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

уже 2 дня пытаюсь получить HTML код от http://testhtl.ucoz.ru/mchat/

Вот код:
Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Winsock;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Memo2: TMemo;
    Label2: TLabel;
    Edit1: TEdit;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
IP: string; 
  Form1: TForm1;

implementation

{$R *.dfm}

function HostToIP(Name: string; var Ip: string): Boolean;
var wsdata : TWSAData;
hostName : array [0..255] of char;
hostEnt : PHostEnt;
addr : PChar;
begin WSAStartup ($0101, wsdata);
try gethostname (hostName, sizeof (hostName));
StrPCopy(hostName, Name);
hostEnt := gethostbyname (hostName);
if Assigned (hostEnt) then if Assigned (hostEnt^.h_addr_list) then begin addr := hostEnt^.h_addr_list^;
if Assigned (addr) then begin IP := Format ('%d.%d.%d.%d', [byte (addr [0]),byte (addr [1]), byte (addr [2]), byte (addr [3])]);
Result := True;
end else Result := False;
end else Result := False else begin Result := False;
end;

finally
WSACleanup;
end
end;

procedure TForm1.Button1Click(Sender: TObject);
var
 s:TSocket;
 Ws:TWSAData;
 addr:sockaddr_in;
 se, START_TEXT, STOP_TEXT:string;
 login:string;
 buf:  array[0..123123] of Char;
 buf2: array[0..123123] of Char;
   sss, zhtml :string;
   Shtml :Integer;
begin
 HostToIp(form1.Edit1.Text, IP);
 WSAStartup($101,Ws);
 s:=socket(af_inet, SOCK_STREAM, 0);
 addr.sin_family:=af_inet;
 addr.sin_port:=htons(80);
 addr.sin_addr.S_addr:=inet_addr(pchar(ip));
 connect(s,addr,sizeof(addr));

    se:='GET /mchat/ HTTP/1.1'#13#10+
    'Host: '+form1.Edit1.Text+#13#10+
    'User-Agent: Mozilla/5.0 (Windows; ; Windows NT 5.1; rv:1.9.1.2) Gecko/20090729 YB/4.2.0.c'#13#10+
    'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8'#13#10+
    'Accept-Language: ru'#13#10+
    'Accept-Encoding: deflate'#13#10+
    'Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7'#13#10+
    'Keep-Alive: 300'#13#10+
    'Connection: Keep-Alive' + #13#10+#13#10;

 CopyMemory(@buf, PChar(se), Length(se));
 send(s,buf,SizeOf(buf),0);
 recv(s,buf2,SizeOf(buf2),0);
 Memo2.Lines.Text:=buf2;
 closesocket(s);
end;

end.
HTML приходит через раз, и если приходит то не весть код а тока часть...

//Help...
 

  #9  
Старый 22.08.2009, 17:18
=Zeus=
Участник форума
Регистрация: 10.08.2009
Сообщений: 238
Провел на форуме:
724939

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

Кинь на форму IdHTTP.
RichEdit1.Text:=idhttp1.Get('http://www.mysite.ru/');
 

  #10  
Старый 22.08.2009, 17:20
НTL
Постоянный
Регистрация: 26.01.2008
Сообщений: 796
Провел на форуме:
5209663

Репутация: 357


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

Цитата:
Сообщение от =Zeus=  
Кинь на форму IdHTTP.
RichEdit1.Text:=idhttp1.Get('http://www.mysite.ru/');
Я в курсе, надо сокеты
 
 





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


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




ANTICHAT.XYZ