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
   
 
 
Опции темы Поиск в этой теме Опции просмотра

  #1131  
Старый 20.02.2008, 18:00
xaker-boss
Участник форума
Регистрация: 06.03.2007
Сообщений: 283
Провел на форуме:
1547094

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

dos999, ну попробуй сделать на примере античата
 

  #1132  
Старый 20.02.2008, 18:57
dos999
Познающий
Регистрация: 15.02.2008
Сообщений: 98
Провел на форуме:
183980

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

Цитата:
грузи лучше не в файл, а в поток или строку, зачем лишние операции)) При гете указывай явно какая кодировка требуется; ну и на всякий может пригодится функция Utf8ToAnsi, так же оринетироваться при парсинге лучше по английским словам и тэгам
дело в том что Api-шка сохраняет в файл

Код:
function GetPart(ABegin, AEnd, Str: String): String;
var
  b, c: Integer;
begin
  if ABegin <> '' then
    b := pos(ABegin, Str) + length(ABegin)
  else
    b := 1;
  if AEnd <> '' then
    c := pos(AEnd, Str) - b
  else
    c := length(Str) - b + 1;
  Result := copy(Str, b , c);
end;

function ButtonClick(Sender: TObject): integer;
var
  AStrings: TStringList;

  function FindText: String;
  var
    i: Integer;
    s: String;
  begin
    for i := 0 to AStrings.Count - 1 do
      if pos('Сейчас на форуме </a>: ', AStrings[i]) > 0 then
      begin
        s := AStrings[i];
        Result := GetPart('Сейчас на форуме </a>: ', ' (', s);
      end;
  end;

begin
  AStrings := TStringList.Create;
  Result := 0;
  try
    URLDownloadToFile(nil, 'http://forum.antichat.ru/', 'temp_file.txt', 0, nil);
    AStrings.LoadFromFile('temp_file.txt');
    Result := StrToInt(FindText);
    DeleteFile('temp_file.txt');
  finally
    AStrings.Free;
  end;
end;
что то вроде этого

PS. второй пост на форуме, строго не судите
 

  #1133  
Старый 21.02.2008, 01:26
Xszz
Участник форума
Регистрация: 23.04.2007
Сообщений: 233
Провел на форуме:
671223

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

Доброго времени суток .
Интересует следующее :
Многопоточность в Delphi в частности ICS .(если можно, пример использования)
И как узнать свой айпи . (т.е. какой айпи привязан к активному интерфейсу ?)
Спасибо
 

  #1134  
Старый 21.02.2008, 13:38
Смоки
Новичок
Регистрация: 11.02.2008
Сообщений: 7
Провел на форуме:
34671

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

2Xszz про определение ip-адресов интерфейсов: _http://www.delphimaster.ru/cgi-bin/forum.pl?id=1199825920&n=4
 

  #1135  
Старый 21.02.2008, 16:09
Смоки
Новичок
Регистрация: 11.02.2008
Сообщений: 7
Провел на форуме:
34671

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

вопрос по сокетам(winsock 1, 2) . Передачу данных никогда делать не пробовал. пользовался компонентами. решил попробовать и нифига не получаеться. конект есть, а данные или не передаются или не принимаются.
код сервера:
Код:
const
  port = 256;
  fname = 'c:\BUF.txt';
var
  WSAData:TWSAData;
  sock:TSocket;
  SAddr:TSockAddr;
  size_sa:integer;
  buf:array[1..255] of char;
  f:text;

begin
  assign(f,fname);
  rewrite(f);
  if WSAStartup($202,WSAData)<>0 then
   begin
    writeln('startup error...');
    exit;
   end;
  SAddr.sin_family:=AF_INET;
  SAddr.sin_port:=htons(port);
  sock:=socket(AF_INET,SOCK_STREAM,IPPROTO_IP);
  if sock = INVALID_SOCKET then
   begin
    writeln('socket error...');
    exit;
   end;
  if bind(sock,@SAddr,sizeof(SAddr))<>0 then
   begin
    writeln('bind error...');
    exit;
   end;
  size_sa:=sizeof(SAddr);
  listen(sock,1);
  accept(sock,@SAddr,@size_sa);
  recv(sock,buf,sizeof(buf),0);
  append(f);
  writeln(f,buf);
  closesocket(sock);
  close(f);
  WSACleanup;
  writeln('press any key to exit...');
end.
Код клиента:
Код:
  port = 256;
  ip = '192.168.10.33';
var
  WSAData:TWSAData;
  sock:TSocket;
  SAddr:TSockAddr;
  i,size_sa:integer;
  buf:array[1..255] of char;

begin
  if WSAStartup($202,WSAData)<>0 then
   begin
    writeln('startup error...');
    exit;
   end;
  SAddr.sin_family:=AF_INET;
  SAddr.sin_addr.S_addr:=inet_addr(pchar(ip));
  SAddr.sin_port:=htons(port);
  sock:=socket(AF_INET,SOCK_STREAM,IPPROTO_IP);
  if sock = INVALID_SOCKET then
   begin
    writeln('socket error...');
    exit;
   end;
  size_sa:=sizeof(SAddr);
  if connect(sock,@SAddr,size_sa)<>0 then
   begin
    writeln('error connect...');
    exit;
   end;
  for i:=1 to 26 do
   buf[i]:=char((ord('a')-1)+i);
  send(sock,buf,sizeof(buf),0);
  writeln(buf);
  closesocket(sock);
  WSACleanup;
  writeln('press any key for exit...');
end.
 

  #1136  
Старый 22.02.2008, 01:15
Xszz
Участник форума
Регистрация: 23.04.2007
Сообщений: 233
Провел на форуме:
671223

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

как разбить строку вида 192.168.0.1 на 192 168 0 1 .
И как отсекать только последнюю часть ? т.е. (1) ? Чтоб в результате получать
192.168.0.
Спасибо .
 

  #1137  
Старый 22.02.2008, 01:50
vipadmin
Новичок
Регистрация: 20.02.2008
Сообщений: 1
Провел на форуме:
23785

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

Как проверить склеен ли файл джойнером ?
 

  #1138  
Старый 22.02.2008, 03:50
A2GIL
Познающий
Регистрация: 31.08.2007
Сообщений: 94
Провел на форуме:
422909

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

Цитата:
Сообщение от Xszz  
как разбить строку вида 192.168.0.1 на 192 168 0 1 .
И как отсекать только последнюю часть ? т.е. (1) ? Чтоб в результате получать
192.168.0.
Спасибо .
Если конечно ты подразумевал работу со строками, то вот:
Код:
//удаляет все точки из строчки (рифма=))
function DelPoints(st:string):string;
var
 i:integer;
begin
 for i:=1 to length(st) do
  if st[i]='.' then
   st[i]:=' ';
 result:=st;
end;
//удаление последнего числа после точки
function DelEnd(st:string):string;
var
 i:integer;
begin
 for i:=length(st) downto 1 do
  if st[i]='.' then begin
   result:=copy(st,1,i);//В данном случае точка в конце остается как ты и просил,
   //   ну а так result:=copy(st,1,i-1);её не будет
   break;
  end;
end;
//пример использования
procedure TForm1.Button1Click(Sender: TObject);
var
 s:string;
begin
 s:=Edit1.Text;
 Edit2.Text:=DelPoints(s);
 Edit3.Text:=DelEnd(s);
end;
 

  #1139  
Старый 22.02.2008, 04:01
A2GIL
Познающий
Регистрация: 31.08.2007
Сообщений: 94
Провел на форуме:
422909

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

Цитата:
Сообщение от vipadmin  
Как проверить склеен ли файл джойнером ?
Ты что хочешь программу написать, которая бы это определяла? Если да то тебе нужно научиться работать с заголовками PE файлов, поскольку по EP(entry point) можно определить откуда начинается запуск файла. Дак вот если файл-результат работы склейщика, то запускается сначала движок джойнера (стаб). Поэтому если хошь сделать своего рода детектор, то нужно вести базу сигнатур (т.е известные стабы). Конечно нужно учитывать, что файл может быть еще и закриптованным!
А если просто хочешь визуально определить, то самый простой способ: берешь любой редоктор exe файлов, загружаешь и смотришь секции. Если новичок в этом можешь начать сResourceHacker...
 

  #1140  
Старый 22.02.2008, 16:10
Myst
Познающий
Регистрация: 22.02.2008
Сообщений: 62
Провел на форуме:
211076

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

Цитата:
как разбить строку вида 192.168.0.1 на 192 168 0 1
Насколько я понял ты хочешь из строки 192.168.0.1 получить 4 числа.
Код:
procedure getip(ip:string; var a,b,c,d:byte);
// ip - ip адрес в строковом формате, a,b,c,d - искомые числа

var
   i:byte;
   x:array[0..3]of byte;

begin
   for i:=0 to 3 do begin
      x[i]:=0;
      while (ip<>'') and (ip[1]<>'.') do
       begin
          x[i]:=x[i]*10+strtoint(ip[1]);
          delete(ip,1,1);
       end;
      if (ip<>'') and (ip[1]='.') then
          delete(ip,1,1);
  end;
   a:=x[0];
   b:=x[1];
   c:=x[2];
   d:=x[3];
end;
 
 





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


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




ANTICHAT.XYZ