Прога для оформление sql =)

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by Assembler, 19 Feb 2009.

  1. Assembler

    Assembler Elder - Старейшина

    Joined:
    1 Sep 2007
    Messages:
    173
    Likes Received:
    102
    Reputations:
    23
    Модераторы, если можно перенесите в раздел Кодинг Delphi ..
     
  2. А®ТеS

    А®ТеS Active Member

    Joined:
    25 Nov 2006
    Messages:
    198
    Likes Received:
    193
    Reputations:
    41
    Идея интересная, но будущего нет (ИМХО). Было бы интереснее, если реализовать в виде online-сервиса, написав, скажем, на PHP. А то при расширении функционала возникнут проблемы:
    1. Не у всех широкий канал. Если добавть определение ТИЦ, ПР, отправку сообщений, то будет тратиться неоправданно много трафика.
    2. При обновлении программы (а они, я думаю, будут довольно часто на первых порах) каждый раз придется выкачивать новую версию, а если будет сервисом, то просто один раз изменить код на сервере.
    3. А так функционал программы можно расширять практически бесконечно: добавить автоподбор полей/таблиц, брутер слепых инъекций и т.п. Ведь было бы куда полезнее, чем просто выкладывать голую ссылку с минимумом системной информации.
    В общем, удачи в кодинге :).
     
    1 person likes this.
  3. Assembler

    Assembler Elder - Старейшина

    Joined:
    1 Sep 2007
    Messages:
    173
    Likes Received:
    102
    Reputations:
    23
    Вобщем, решил начать с интерфйса, так как дизайнер я не зе бест, то хочу посоветоваться с вами, как лучше оформить программу. Вот так сказать мой вариант, жду ваших предложений..
    [​IMG]

    ЗЫЖ Хочу на делфях, а дальше посмотрим =)
     
    #23 Assembler, 21 Feb 2009
    Last edited: 21 Feb 2009
  4. eLWAux

    eLWAux Elder - Старейшина

    Joined:
    15 Jun 2008
    Messages:
    860
    Likes Received:
    616
    Reputations:
    211
    Assembler, вот моя прога:
    http://forum.antichat.ru/thread100240.html
    там все в стиле ачата) +сорс и компонент TRegExpr в архиве
     
    1 person likes this.
  5. Assembler

    Assembler Elder - Старейшина

    Joined:
    1 Sep 2007
    Messages:
    173
    Likes Received:
    102
    Reputations:
    23
    eLWAux, не пугай меня так =) Я уж думал она именно то делает что я хочу =) а вот за TregExpr спасиб =)
    И такс, первый вопрос, хочу сделать так чтобы прога перед началом работы при нажатии кнопки загружала антибоян 1(раз перед началом работы) И потом уже внутри себя по нему проверяла сайты на боян... Подскажите каким путем это можно сделать, желательно понятным для меня языком, то есть не слишком замудренно...
     
    #25 Assembler, 22 Feb 2009
    Last edited: 22 Feb 2009
  6. eLWAux

    eLWAux Elder - Старейшина

    Joined:
    15 Jun 2008
    Messages:
    860
    Likes Received:
    616
    Reputations:
    211
    откуда загружать? из сайта или из файла?
    --
    загружаеш, например в listbox
    и потом можно проверить:
    if (listbox.items.indexof('сайт')>0) begin уже есть такой end;
     
    1 person likes this.
  7. Assembler

    Assembler Elder - Старейшина

    Joined:
    1 Sep 2007
    Messages:
    173
    Likes Received:
    102
    Reputations:
    23
    Да с сайта.. хочу чтобы загружал данные в прогу, записывал их допустим в файлик и из него уже чекал.
     
  8. eLWAux

    eLWAux Elder - Старейшина

    Joined:
    15 Jun 2008
    Messages:
    860
    Likes Received:
    616
    Reputations:
    211
    реализация через сокети:
    Code:
    uses ...,WinSock, ..;
    const host = 'www.google.com'; //хост
    ....
    var sock : TSocket;
    ....
    function create_packet(url:string):string;
    begin
     result := 'GET '+url+' HTTP/1.0' + #13#10 +
             'Host: ' + Host + #13#10 +
             'User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)' + #13#10 +
             'Accept: text/html' + #13#10 +
             'Keep-Alive: 300'+ #13#10 +
             'Referer: '+url+ #13#10 +
             'Connection: keep-alive' + #13#10#13#10;
    end;
    
    
    function GET(packet: string): string;
    var
     wData : WSADATA;
     addr  : sockaddr_in;
     sock  : integer;
     error : integer;
     buf   : array [0..1023] of Char;
     str   : string;
     phe   : PHostEnt;
    begin
     Result := '';
     WSAStartup($0101, wData);
     phe := gethostbyname(PChar(string(host)));
     if phe = nil then begin
        WSACleanup;
        exit;
     end;
     
     sock := socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
     if sock = INVALID_SOCKET then begin
        WSACleanup;
        exit;
     end;
    
     addr.sin_family := AF_INET;
     addr.sin_port   := htons(80);
     addr.sin_addr   := PInAddr(phe.h_addr_list^)^;
     error := connect(sock, addr, sizeof(addr));
    
     if error = SOCKET_ERROR then begin
        closesocket(sock);
        WSACleanup;
        exit;
     end;
     
     //str := 'GET '+url + ' HTTP/1.0'#13#10#13#10;
     str:=packet;
     send(sock, str[1], Length(str), 0);
    
     ZeroMemory(@buf, 1024);
     error := recv(sock, buf, 1024, 0);
     while error > 0 do begin
       Result := Result + Copy(buf, 0, error);
       error  := recv(sock, buf, 1024, 0);
     end;
    
     closesocket(sock);
     WSACleanup;
     if Result <> '' then Result:=Copy(Result, pos(#13#10#13#10, Result)+4,Length(Result));
    end; 
    
    var answ : string;
    answ := get( create_packet('http://www.google.com/') );
    
    сохранение в файл:
    Code:
      AssignFile(myFile, 'file.txt');
       ReWrite(myFile);
       WriteLn(myFile, answ);
       CloseFile(myFile);
    ну и прочитать в listbox стандартно:
    Code:
    listbox1.items.loadfromfile('file.txt');
     
  9. Assembler

    Assembler Elder - Старейшина

    Joined:
    1 Sep 2007
    Messages:
    173
    Likes Received:
    102
    Reputations:
    23
    eLWAux, спасибо огромное. =)

    Есть еще один вопрос, можно ли сделать так чтобы когда копаешься на сайте, выделив определнный элемент (название таблицы) и щелкнув правой кнопой мыхи, появлялось контекстное меню, в котором было бы подменю с названием sql, при нажатии которого данные отправлялись в прогу, переделывались в sql hex и после этого записывались в буфер?
     
  10. De-visible

    De-visible [NDC] Network develope c0ders

    Joined:
    6 Jan 2008
    Messages:
    916
    Likes Received:
    550
    Reputations:
    66
    Ну да да да, что бы получить ОДНУ СТРАНИЦУ, мы используем сокеты... показуха какая то...

    Получаем страницу с помощью TidHTTP и парсим регуляркой...

    Пользоваться сокетами нужно там где они действительно нужны...
     
  11. Assembler

    Assembler Elder - Старейшина

    Joined:
    1 Sep 2007
    Messages:
    173
    Likes Received:
    102
    Reputations:
    23
    De-visible, хмм а поподробнее можно?
     
  12. eLWAux

    eLWAux Elder - Старейшина

    Joined:
    15 Jun 2008
    Messages:
    860
    Likes Received:
    616
    Reputations:
    211
    добавляеш IdHTTP из вкладки "Indy Clients".

    вот тебе два примера:
    1) загрузки страници "Антибоян" - "http://constant1ne.by.ru/sqls.html"
    в listbox с помощью IdHTTP, GET методом (каждий сайт в отдельний item):
    Code:
    var i:integer ;
    begin
    [u][color=#ccff66]GET метод (для http)[/color][/u]
    
    [color=white]// загружаем страницу в listbox[/color]
    listbox1.Items.Text:=  IdHttp1.Get('http://constant1ne.by.ru/sqls.html');
    
    [color=white]// пример проверки сайта по Антибоян'у[/color]
    if (listbox1.Items.IndexOf('http://numi.is')>0) then
        showmessage('[боян] http://numi.is') else
        showmessage('http://numi.is нету в списке Антибоян!');
    2) пример POST метода,
    для логина на ачат (по https):
    Code:
    var i:integer ;
        IdHandler: TIdSSLIOHandlerSocket;
        CookMan: TidCookieManager;
        Params: TStringList;
        username,password,md5_password:string;
    begin
    [u][color=#ccff66]POST метод (для https)[/color][/u]
    
    [color=white]// ето нужно для роботи с https[/color]
      IdHandler:=TIdSSLIOHandlerSocket.Create(nil);
      IdHandler.SSLOptions.Method:=sslvTLSv1;
      IdHTTP1.IOHandler:=IdHandler;
    
    [color=white]// сookie хранитель[/color]
      IdHTTP1.AllowCookies:=true;
      CookMan:=TidCookieManager.Create(idHTTP1);
      idHttp1.CookieManager := CookMan;
    
      username := 'eLWAux';
      password := 'твой_пароль';
      md5_password := 'или_md5_твоего_пароля';
    [color=white]// данние, которие передаютса в POST запросе[/color]
      Params:=TStringList.Create;
      Params.add('vb_login_username='+username);
      Params.add('vb_login_password='+password);
      Params.add('cookieuser=1');
      Params.add('s=');
      Params.add('do=login');
      Params.add('forceredirect=1');
      Params.add('vb_login_md5password='+md5_password);
    
      try
          IdHTTP1.Port:=443; [color=white]// https[/color]
    
          [color=white]// необязательно - юзер агент[/color]
          IDHttp1.Request.UserAgent:='Mozila'; 
    
          [color=white]// рефферер[/color]
          IdHTTP1.Request.Referer:='https://forum.antichat.ru/index.php?';
          
          [color=white]// а вот и он, POST запрос на login.php )[/color]
          memo1.Lines.Text:=
                IdHttp1.Post('http://forum.antichat.ru/login.php?',params);
    
       finally
          IdHTTP1.Free;
          IdHandler.Free;
          Params.Free;
      end;
    
    
    вот и все..
    думаю поймеш, как отправлять сообщения на форум..
    )
     
    #32 eLWAux, 24 Feb 2009
    Last edited: 24 Feb 2009
    3 people like this.
  13. Assembler

    Assembler Elder - Старейшина

    Joined:
    1 Sep 2007
    Messages:
    173
    Likes Received:
    102
    Reputations:
    23
    eLWAux, Чтоб я без тебя делал +) Спасибо огроменное =)

    Как я понял чтобы отправить сообщение нада вот с этим поковыряться?

    <input type="hidden" name="fromquickreply" value="1" />
    <input type="hidden" name="s" value="" />
    <input type="hidden" name="do" value="postreply" />
    <input type="hidden" name="t" value="21336" id="qr_threadid" />
    <input type="hidden" name="p" value="who cares" id="qr_postid" />
    <input type="hidden" name="parseurl" value="1" />
    <input type="hidden" name="clickedelm" value="" />

    <input type="submit" class="button" value="Отправить быстрый ответ" accesskey="s" title="(Alt + S)" name="sbutton" tabindex="2" onclick="this.form.clickedelm.value=this.value" />
    <input type="submit" class="button" value="Расширенный режим" accesskey="x" title="(Alt + X)" name="preview" tabindex="3" id="qr_preview" onclick="this.form.clickedelm.value = this.value" />
    </div>
     
    #33 Assembler, 24 Feb 2009
    Last edited: 25 Feb 2009
  14. eLWAux

    eLWAux Elder - Старейшина

    Joined:
    15 Jun 2008
    Messages:
    860
    Likes Received:
    616
    Reputations:
    211
    да, именно!

    Code:
    <form action="[color=white][b]newreply.php[/b][/color]" method="[color=white][b]post[/b][/color]" name="vbform" onsubmit="return checkQR(this);">
    
    <textarea name="[color=white][b]message[/b][/color]" id="qr_message" class="bginput" style="width: 600px; height: 100px;" rows="5" cols="60" tabindex="1">
    
    <input type="hidden" name="[color=white][b]fromquickreply[/b][/color]" value="[color=white][b]1[/b][/color]" />
    <input type="hidden" name="[color=white][b]s[/b][/color]" value="" />
    <input type="hidden" name="[color=white][b]do[/b][/color]" value="[color=white][b]postreply[/b][/color]" />
    <input type="hidden" name="[color=white][b]t[/b][/color]" value="[color=white][b]21336[/b][/color]" id="qr_threadid" />
    <input type="hidden" name="[color=white][b]p[/b][/color]" value="[color=white][b]who cares[/b][/color]" id="qr_postid" />
    <input type="hidden" name="[color=white][b]parseurl[/b][/color]" value="[color=white][b]1[/b][/color]" />
    <input type="hidden" name="[color=white][b]clickedelm[/b][/color]" value="" />
    
    <input type="submit" class="button" value="Отправить быстрый ответ" accesskey="s" title="(Alt + S)"
       name="[color=white][b]sbutton[/b][/color]" tabindex="2" onclick="this.form.clickedelm.value=this.value" />
    <input type="submit" class="button" value="Расширенный режим" accesskey="x" title="(Alt + X)"
       name="[color=white][b]preview[/b][/color]" tabindex="3" id="qr_preview" onclick="this.form.clickedelm.value = this.value" />
    </div>
    т.е. отправляеш на http(s)://forum.antichat.ru/newreply.php POST методом c параметрами:
    Code:
    fromquickreply=1
    t=номер_теми
    message=текст_сообщения
    s=
    do=postreply
    p=who cares
    parseurl=1
    clickedelm=Отправить быстрый ответ
    sbutton=Отправить быстрый ответ
    пробуй, експериметируй)
    а лучше постав себе на локалку воблу, и потестируй)
     
    1 person likes this.
  15. Assembler

    Assembler Elder - Старейшина

    Joined:
    1 Sep 2007
    Messages:
    173
    Likes Received:
    102
    Reputations:
    23
    Спасибо еще раз =) Пошел эксерементировать =))

    ____________________________

    Вот то что получилось:
    http://rapidshare.com/files/202418155/Archive22.zip.html
    Зеркало.
    http://slil.ru/26998348
    Cообщения отправляет, вроде все нормально, но есть проблемы, выдает ошибку после отправки сообщения, и второй раз не дает отправить...
    eLWAux, посмотри что я не так сделал? И еще раз спасибо.

    ___________________________
    Еще покопался понял что вторя ошибка была из-за
    IdHTTP1.Free;
    IdHandler.Free;
    Params.Free;
    Отключил //
    Теперь можно отправлять подряд много сообщений с тайм аутом в 30 сек все как и полжено, но до сих пор не могу понять что это за ошибка...
    HTTP/1.1 302 Moved Temporarily.

    _________________________________
    УРААААААААААААААААААА. Все работает проблема была в handleredirect нужно было поставить true =))... Ухх скоро уже закончу =)
     
    #35 Assembler, 25 Feb 2009
    Last edited: 26 Feb 2009
  16. Assembler

    Assembler Elder - Старейшина

    Joined:
    1 Sep 2007
    Messages:
    173
    Likes Received:
    102
    Reputations:
    23
    Чтемс первый пост!
     
  17. De-visible

    De-visible [NDC] Network develope c0ders

    Joined:
    6 Jan 2008
    Messages:
    916
    Likes Received:
    550
    Reputations:
    66
    Еще один новичек потихоньку продвигается в круг программеров)))
     
    1 person likes this.
  18. Assembler

    Assembler Elder - Старейшина

    Joined:
    1 Sep 2007
    Messages:
    173
    Likes Received:
    102
    Reputations:
    23
    При переходе по этой ссылке http://bar-navig.yandex.ru/u?ver=2&show=32&url=http://google.ru показывается тиц. В исходном коде
    <url domain="www.google.ru">/</url>
    <tcy rang="6" value="76000"/> Как вывести его в программу?
     
    1 person likes this.
  19. De-visible

    De-visible [NDC] Network develope c0ders

    Joined:
    6 Jan 2008
    Messages:
    916
    Likes Received:
    550
    Reputations:
    66
    Регуляркой, или же парсить в ручную, pos,Copy, и т.д.
     
    1 person likes this.
  20. eLWAux

    eLWAux Elder - Старейшина

    Joined:
    15 Jun 2008
    Messages:
    860
    Likes Received:
    616
    Reputations:
    211
    Code:
    uses ...RegExpr..;
    var regexp: TRegExpr;
    ..
      answ = '<tcy rang="6" value="76000"/>';
      RegExp.Expression := '<tcy rang="(\d+)" value="(\d+)"/>'; //регулярка
      RegExp.Exec(answ); //парсим answ регуляркой
      rand := RegExp.Substitute('$1'); //получаем первое совпадение
      value:= RegExp.Substitute('$2');//получаем второе
    ..
     
    1 person likes this.