Pokaż wyniki 1 do 6 z 6

Temat: [pHp]sposob na limity wielkosci plikow na darmowych hostingach

  1. #1
    Zarejestrowany
    Sep 2007
    Skąd
    Tu
    Postów
    1,236

    Domyślnie [pHp]sposob na limity wielkosci plikow na darmowych hostingach

    Witam
    Stworzylem skrypt pozwalajacy ominac limity wielkosci plikow na darmowych www,
    w planach mam stworzenie kolejnej wersji, ale o tym nizej.

    Skrypt dzielacy duzy plik na mniejsze porcje (w zaleznosci na ile pozwala hosting):
    Kod php:
    <?php
    set_time_limit
    (0);
    $plik trim($_POST['plik']);
    $wielkosc trim($_POST['wielkosc']); 

    if(empty(
    $plik) or empty($wielkosc)){
        echo 
    '<form action="" method="post"> 
    <input type="text" name="plik" value="Nazwa pliku do podzielenia" style="width: 250px;" maxlength="60" onFocus="this.value=\'\'"><br>
    <input type="text" name="wielkosc" value="Na jak duze party skrypt ma podzielic plik" style="width: 300px;" maxlength="4" onFocus="this.value=\'\'">
    <br><input type="submit" value="Podziel"></form>'
    ;} 
        else{
            
    $uchwyt fopen("./".$plik"r");
                for(
    $num="0";!feof($uchwyt);$num++)
                    {
                    while(!
    feof($uchwyt) && $num_2 $wielkosc){$tresc.= fread($uchwyt1024);$num_2++;}
                    
    $num_2 "0";
                    
    $zapis fopen("./out".$num.".part""a+");
                    
    fwrite($zapis$tresc); 
                    
    $tresc "";
                    
    fclose($zapis);
                    }
            
    fclose($uchwyt);
            echo 
    "ok podzielono na czesci, utworzono ".ceil(filesize($plik) / 1024 $wielkosc)." pliki/ow";
            }
    ?>
    Skrypt laczacy na powrot podzielony plik juz na hostingu:
    Kod php:
    <?php
    set_time_limit
    (0);
    $plik trim($_POST['plik']); 
    if(empty(
    $plik)){
        echo 
    '<form action="" method="post"> 
    <input type="text" name="plik" value="Docelowa nazwa pliku wraz z rozszerzeniem" style="width: 250px;" maxlength="60" onFocus="this.value=\'\'"><br>
    <br><input type="submit" value="Lacz"></form>'
    ;} 
        else{
            for (
    $num "0"file_exists("./out".$num.".part");$num++)
            {
                
    $odczyt fopen("./out".$num.".part""r");
                while(!
    feof($odczyt)){$dane.= fread($odczyt1024);}
                
    $zapis fopen("./".$plik"a+");
                
    fwrite($zapis$dane);
                
    $dane "";
                
    unlink("out".$num.".part");
            }
    echo 
    "ok utworzono docelowy plik";
        }
    ?>
    Pierwszy skrypt przydalo by sie skompilowac, poniewaz uzywamy go u siebie, dopiero podzielone pliki wraz z drugim skryptem uploadujemy na hosting.. postaram sie to poprawic.

    Jak widac, pierwszy skrypt dzieli duzy pliki na male czesci, nastepnie pliki te wysylamy na serwer wraz z drugim skryptem, po czym przy jego pomocy na powrot laczymy te kawalki w orginalny plik... wszystko dziala przykladem jest 135Mb plik na hostingu yoyo, gdzie ograniczenia pozwala na 0,5Mb pliki http://www.bigfiles.yoyo.pl/hakin.rar
    Jest jeszcze jeden sposob na uzyskanie podobnego efektu, mianowicie utworzenie skryptu, ktory najpierw wysle header ze jest np bitmapa, a nastepnie przeczyta po kolei wszystkie kawalki, w ten sposob prawdopodobnie bedziemy mogli obejsc ograniczenia na rozszerzenia plikow (mp3 czy exe),

    Zrealizuje drugi pomysl i zedytuje

    Pozdrowienia
    Ostatnio edytowane przez gogulas : 04-01-2008 - 02:21
    http://gogulas.yoyo.pl/h.gif

  2. #2
    Zarejestrowany
    May 2007
    Skąd
    802.1 Wireless Wlan Card
    Postów
    552

    Domyślnie

    Musze koledze pogratulować, pomysł ok ale taka jedna sprawa, czy napewno ten twój partycjoner ooo tak to nazwę, nie uszkadza plików Bo jeżeli fragment pliku pójdzie w błędnie sformatowanych pakiecie to d*** pliku potem nie złorzysz a jak będzie próbował złożyć i nie będzie miał jakiegoś kawałka to będzie ciągnął jakieś śmieci- nie masz kontroli nad skryptem w czasie jego "pracy". Będzie tak ciągną se te smieci, będzie, aż mu się miejsce skończy, albo aż nie będzie miał co ciągnąć. Na koniec powinen w takim wypadku pisać, że

    Kod:
    Brak pakietu, nie mogę złorzyć pliku!!
    W przypadku opisanym przeze mnie po prostu zrobisz se DOS'a.
    Ostatnio edytowane przez MateO : 04-01-2008 - 20:18
    o przemyśleniach w kontekście NLP... http://www.tuetbrute.blogspot.com

  3. #3
    Zarejestrowany
    Mar 2008
    Skąd
    tu i teraz
    Postów
    28

    Domyślnie

    Eragon, jeśli już to nie:
    Kod:
    Brak pakietu, nie mogę złorzyć pliku!!
    tylko:
    Kod:
    Brak pakietu, nie mogę złożyć pliku!!
    A twój podpis, to satyra, czy żart na Priama aprilis?

    Spox, ja też nie jestem dobry z ortografii

    Sorki za off-topic

  4. #4
    Zarejestrowany
    May 2007
    Skąd
    802.1 Wireless Wlan Card
    Postów
    552

    Domyślnie

    To i satyra i prima aprilis i błąd którego nie mam czasu poprawić

    Aha wpadłem na jeszcze jeden pomysł tylko nie mogę wyedytować tamtego posta(zgłoszone TQM i mateO) że na stronce www.bigfiles.yoyo.pl dorzuć (bo to chyba gogulas twoja stronka) plik index bo za pare dni strona zniknie
    o przemyśleniach w kontekście NLP... http://www.tuetbrute.blogspot.com

  5. #5
    Zarejestrowany
    Sep 2007
    Skąd
    Tu
    Postów
    1,236

    Domyślnie

    W razie nie wyslania ktoregos z fragmentow utworzy sie zmutowany plik, ktory nie bedzie mial prawa zyc, nie dorzucalem zadnych funkcji sprawdzjacych poprawnosc procesu laczenia, ale raczej tak zrobie.
    Biore sie za tworzenie skryptu, ktory bedzie w locie dzielil plik i wysylal te kawalki na FTP, nie wiem tylko czy kazdy tak ochoczo poda haslo do swojego FTP, najwyzej programu bede uzywal sam

    Oto wersja ktora robi wszystko dzieli, wysyla na FTP, tworzy na FTP caly plik

    Kod php:
    <?php
    # Big Files Uploader v1.1 by gogulas.pl  #
    @set_time_limit(0);
    $plik trim($_POST['plik']);
    $wielkosc trim($_POST['wielkosc']); 
    $host_ftp trim($_POST['host_ftp']); 
    $user_ftp trim($_POST['user_ftp']); 
    $pass_ftp trim($_POST['pass_ftp']); 
    //$passv = trim($_POST['passv']); 
    $passv "1";
    $www trim($_POST['www']);
    if(empty(
    $plik) or empty($wielkosc) or empty($host_ftp) or empty($user_ftp) or empty($pass_ftp) or empty($www))
    {
        echo 
    '<br><br><br><br><br><br><br><form action="" method="post"> 
    <input type="text" name="plik" value="Nazwa pliku do podzielenia" style="width: 250px;" maxlength="60" onFocus="this.value=\'\'"><br>
    <input type="text" name="wielkosc" value="Na jak duze party skrypt ma podzielic plik" style="width: 300px;" maxlength="4" onFocus="this.value=\'\'"><br><br>
    <input type="text" name="host_ftp" value="Host FTP" style="width: 300px;" maxlength="100" onFocus="this.value=\'\'"><br>
    <input type="text" name="user_ftp" value="Nazwa uzytkownika FTP" style="width: 300px;" maxlength="100" onFocus="this.value=\'\'"><br>
    <input type="password" name="pass_ftp" value="Haslo FTP" style="width: 300px;" maxlength="100" onFocus="this.value=\'\'"><br><br>
    <input type="text" name="www" value="Adres www strony" style="width: 300px;" maxlength="100" onFocus="this.value=\'\'">
    <br><input type="submit" value="Jedziesz!"></form>'
    ;
    }
        else
        {
            
    $id hash("crc32"mt_rand());
            
    $plikow floor(filesize($plik) / 1024 $wielkosc);
            
    $uchwyt fopen("$plikow plikow""w");
            
    fclose($uchwyt);
            
    $uchwyt fopen("./".$plik"r");
                for(
    $num="0";!feof($uchwyt);$num++)
                {
                    while(!
    feof($uchwyt) && $num_2 $wielkosc){$tresc.= fread($uchwyt1024);$num_2++;}
                    
    $num_2 "0";
                    
    $zapis fopen("./".$id."_".$num.".part""a+");
                    
    fwrite($zapis$tresc); 
                    
    $tresc "";
                    
    fclose($zapis);
                    
    $conn_id ftp_connect($host_ftp);
                    
    $login_result ftp_login($conn_id$user_ftp$pass_ftp);
                    if(
    $passv == "1")ftp_pasv($conn_idtrue);
                    if(!
    ftp_put($conn_id$id."_".$num.".part"$id."_".$num.".part"FTP_BINARY)) 
                    {echo 
    "Napotkano problemy w czasie przesyłania pliku $plik\n";exit;}
                    
    ftp_close($conn_id);
                    @
    unlink($id."_".$num.".part");
                }
            
    fclose($uchwyt);
            
    $tresc '<?php
    @set_time_limit(0);
    for ($num = "0"; file_exists("./'
    .$id.'_$num.part");$num++)
        {
            $odczyt = fopen("'
    .$id.'_$num.part", "r");
            while(!feof($odczyt)){$dane.= fread($odczyt, 1024);}
            $zapis = fopen("./'
    .$plik.'", "a+");
            @unlink("'
    .$id.'_$num.part");
            fwrite($zapis, $dane);
            $dane = "";
        }
    unlink("temp.php");
    ?>'
    ;
            
    $temp fopen("temp.temp""w");
            
    fwrite($temp$tresc); 
            
    fclose($temp);
            
    $conn_id ftp_connect($host_ftp);
            
    $login_result ftp_login($conn_id$user_ftp$pass_ftp);
            if(
    $passv == "1")ftp_pasv($conn_idtrue);
            if(!
    ftp_put($conn_id"temp.php""temp.temp"FTP_BINARY)) 
            {echo 
    "Napotkano problemy w czasie przesyłania pliku temp.php\n";exit;}
            
    ftp_close($conn_id);
            @
    unlink("temp.temp");
            
    $fp=fsockopen($www80);
            
    fwrite($fp"GET /temp.php HTTP/1.1
    User-Agent: Twoja stara (Windows 666; U; FY)
    Host: 
    $www
    Accept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1
    Accept-Language: pl-PL,pl;q=0.9,en;q=0.8
    Accept-Charset: iso-8859-1, utf-8, utf-16, *;q=0.1
    Accept-Encoding: identity, *;q=0
    Cache-Control: no-cache
    Connection: Close

    "
    );
            while(!
    feof($fp)){$dane.= fread($fp1024);}
            
    fclose($fp);
            if(
    stristr($dane"Location: "))
            {
                
    $przed explode("Location: "$dane);
                
    $po explode("/temp.php"$przed[1]);
                
    $www explode("http://"$po[0]);
                
    $www $www[1];
                unset(
    $przed);
                unset(
    $po);
                unset(
    $dane);
                
    $fp=fsockopen($www80);
                
    fwrite($fp"GET /temp.php HTTP/1.1
    User-Agent: Twoja stara (Windows 666; U; FY)
    Host: 
    $www
    Accept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1
    Accept-Language: pl-PL,pl;q=0.9,en;q=0.8
    Accept-Charset: iso-8859-1, utf-8, utf-16, *;q=0.1
    Accept-Encoding: identity, *;q=0
    Cache-Control: no-cache
    Connection: Close

    "
    );
                while(!
    feof($fp)){$dane.= fread($fp1024);}
                
    fclose($fp);
            }
            @
    unlink("$plikow plikow");
            echo 
    "na 99% wszystko poszlo ok:<br>";
            echo 
    "<html><body><a href=http://$www/$plik>http://$www/$plik</a></body></html>";
            exit;
        }
    ?>
    Niestety ma powazna wade, kazdy z kawalkow zapisuje na dysk i dopiero wysyla, nastepnie usuwa, bezsensowne meczenie dysku, nie wiem jak zrobic to w pamieci, ale kiedy sie dowiem na pewno zedytuje :P
    Ostatnio edytowane przez gogulas : 04-02-2008 - 15:30
    http://gogulas.yoyo.pl/h.gif

  6. #6
    Zarejestrowany
    Sep 2007
    Skąd
    Tu
    Postów
    1,236

    Domyślnie

    Sorki ze nie edytuje, ale wlasnie udalo mi sie zrobic EXE
    http://gogulas.yoyo.pl/bfu.rar
    Jest to versja spy_beta, jeszcze w fazie testow, wiec prosze o zakladanie nowych kont www, albo uzywanie takich, na ktorych Wam nie zalezy

    Pozdrowienia
    http://gogulas.yoyo.pl/h.gif

Podobne wątki

  1. sposob
    By hakeritoo in forum Hacking
    Odpowiedzi: 8
    Autor: 07-09-2007, 16:38
  2. Odpowiedzi: 2
    Autor: 04-21-2007, 15:03
  3. jak poznac strukture plikow
    By ironwall in forum Newbie - dla początkujących!
    Odpowiedzi: 4
    Autor: 03-25-2007, 18:01
  4. dostep do plikow na serwerze przez komponent joomla
    By ollie in forum Newbie - dla początkujących!
    Odpowiedzi: 5
    Autor: 01-16-2007, 17:09
  5. kompresja plikow
    By chillywilly in forum Delphi/Pascal/Lisp
    Odpowiedzi: 1
    Autor: 01-08-2007, 19:02

Zasady Postowania

  • Nie możesz zakładać nowych tematów
  • Nie możesz pisać wiadomości
  • Nie możesz dodawać załączników
  • Nie możesz edytować swoich postów
  •  
Subskrybuj