abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    dnes 13:33 | Nová verze

    Mastodon (Wikipedie) - sociální síť, která není na prodej - byl vydán ve verzi 4.6. Přehled novinek s náhledy v oznámení na blogu.

    Ladislav Hagara | Komentářů: 0
    dnes 12:44 | IT novinky

    V Edici CZ.NIC, knižní řady správce české národní domény, vychází nová kniha Martina Malého Kódy, buildy, firmwary. Autor po půl roce od vydání předchozího titulu přichází se svou již sedmou knihou, tentokrát zaměřenou na vývoj programového vybavení pro embedded zařízení. Publikace s podtitulem Základy vývojářského řemesla pro tvůrce hobby elektroniky nabízí praktického průvodce pro všechny, kdo své projekty vytvořené s Arduinem

    … více »
    Ladislav Hagara | Komentářů: 0
    dnes 11:44 | Komunita

    V Brně na FIT VUT probíhá dvoudenní open source komunitní konference DevConf.CZ 2026. Na programu je celá řada zajímavých přednášek, lightning talků, meetupů a workshopů. Přednášky lze sledovat i online na YouTube kanálu konference. Aktuální dění lze sledovat na Matrixu, 𝕏 nebo Mastodonu.

    Ladislav Hagara | Komentářů: 0
    dnes 04:22 | Nová verze

    Byla vydána nová verze 15.1 svobodného unixového operačního systému FreeBSD. Podrobný přehled novinek v poznámkách k vydání.

    Ladislav Hagara | Komentářů: 0
    včera 19:11 | Zajímavý projekt

    Vývojáři Ubuntu představili projekt Myna, tj. iniciativu zaměřenou na přidání funkce převodu řeči na text do prostředí desktopu Ubuntu. Dle plánu již v Ubuntu 26.10.

    Ladislav Hagara | Komentářů: 2
    včera 18:33 | Zajímavý software

    Společnost Epic Games představila nový open source systém pro správu verzí Lore navržený pro "bezprecedentní škálovatelnost dat i týmů a optimalizovaný pro projekty, včetně her a zábavy, které kombinují kód s velkými binárními soubory, aby uspokojil potřeby vývojářů i umělců". Zdrojové kódy jsou k dispozici na GitHubu pod licencí MIT.

    Ladislav Hagara | Komentářů: 0
    včera 15:33 | IT novinky

    Úřad pro ochranu hospodářské soutěže (ÚOHS) provedl v říjnu 2024 místní šetření u společnosti Seznam.cz. Úřad prověřoval důvodné podezření na možné protisoutěžní jednání, konkrétně zneužití dominantního postavení. Krajský soud v Brně v květnu 2025 konstatoval, že toto šetření bylo nezákonné. Nejvyšší správní soud (NSS) včera rozhodl, že šetření bylo provedeno v souladu se zákonem. Krajský soud bude muset případ posoudit znovu.

    Ladislav Hagara | Komentářů: 0
    včera 12:22 | IT novinky

    Byl představen skládací telefon Commodore Callback 8020. Ani hloupý, ani chytrý. Pro fanoušky Commodore a digitálního minimalismu. Bez webového prohlížeče a sociálních sítí. S předinstalovaným WhatsAppem. S operačním systémem Sailfish OS.

    Ladislav Hagara | Komentářů: 5
    včera 08:22 | Bezpečnostní upozornění

    V OpenBSD byla objevena 27 let stará chyba v ppp pomocí níž lze vzdáleně obejít autentifikaci. Chyba byla nahlášena 12.6. a 14.6. byla opravena. Bližší info v článku A 27-Year-Old Authentication Bypass in OpenBSD's PPP Stack.

    Max | Komentářů: 6
    včera 05:22 | Zajímavý článek

    Odpověď Evropské komise (pdf) k evropské občanské iniciativě Stop Destroying Videogames, jež je součástí hnutí Stop Killing Games: "Komise se domnívá, že v této fázi nemůže navrhnout právní povinnost zachovat hratelnost videoher poté, co přestaly být poskytovány komerčně. Důvodem jsou i stávající práva duševního vlastnictví. Podle autorského práva EU mají nositelé práv výlučná práva ke svým výtvorům. Kromě autorských práv mohou být

    … více »
    Ladislav Hagara | Komentářů: 20
    Které desktopové prostředí na Linuxu používáte?
     (11%)
     (8%)
     (2%)
     (16%)
     (31%)
     (3%)
     (6%)
     (3%)
     (15%)
     (26%)
    Celkem 1933 hlasů
     Komentářů: 30, poslední 3.4. 20:20
    Rozcestník

    down-megaupload

    16.12.2008 20:40 | Přečteno: 2404× | Stahovaci skripty

    Mám sice doma rozepsaný blog post pro down-rapid, ale nejsem teď momentálně doma, ale mám teď zrovna čas, tak sem dám stahovací skript na www.megaupload.com. Zrovna jsem s ním tahal a jelo to docela rychle, takže by měl být 100% funkční.

    Pár slov ke skriptíku. Je podobný jako down-rapid, využívá stejný kód pro zobrazení captcha obrázku a čtení kódu z klávesnice, takže to popíšu spíš letmo, nějaké další detaily budou u skriptu down-rapid.

    Skript čte seznam proxy serverů z externího souboru, který sdílí s dalšími skripty. Zkusí stáhnout zadaný odkaz. Pokud stránka obsahuje nějaký text ve smyslu, že má uživatel čekat, protože již vyplýtval časový nebo bytový limit, zkusí to přes jinou proxy. Skript umožnuje ignorovat některé proxy, použít jen zvolené proxy ze seznamu, nebo zadat přímo jednu proxy mimo seznam, umožňuje zadat rychlost stahování.

    Pro psaní captcha kódu z obrázku se používá buď Xdialog (dependence!) v X módu, nebo pomocí "read" v console módu nebo když je vynucené zadávání kódu z konzole. Konzolový mód je vhodný při spouštění skriptu na vzdáleném serveru bez X a Xforwardingu. Captcha kód je case insensitive, takže je možné zadávat kód velkými nebo malými písmeny.

    Captcha obrázek se stáhne do /tmp/ do náhodného adresáře (mktemp -d) a zobrazuje se v X módu pomocí gqview (můžete si opravit na cokoliv jiného) - gqview je spuštěn na pozadí, je zaznamenán PID a po načtení kódu je zabit. Pokud neběží Xka, je obrázek stažen, ale není zobrazen. Jsou tři možnosti, jak zobrazit obrázek:

    Stahování s down-megaupload umí navazovat, takže dejte akorát pozor, když budete stahovat dva různé, ale stejně pojmenované soubory.

    Skript obsahuje jednoduchý javascript parser a interpret. Nejsem si jistý, jestli je ještě potřeba, ale funguje to s ním, tak ho tam nechávám. Byl/je tam potřeba kvůli výpočtu doby čekání před stahováním.

    Snad je to vše. Upozornění na nefungující skript (chyba, změna na www.megaupload.com) zapisujte buď do diskuze nebo pošlete emailem, ale vždy nezapomeňte přidat URL, ať to můžu otestovat. Odkazy, které byly zrušeny na megaupload.com sem nepište - to řešit nebudu (ani nemůžu). Námitky ke skriptu psát můžete, ale měnit to budu jenom z opravdu dobrého důvodu. Skript si můžete stáhnout a měnit jak chcete. Už někdo psal, že takovýhle skripty dává pod BSD nebo public domain. Já mám rád GPL, takže to dávám pod GPL. Pokud se vám to nelíbí, nápad můžete načerpat ze skriptu a pak si napsat vlastní program a vydat pod licencí, jakou budete chtít. Dotazy k funkci kódu psát můžete, pokud to nebudou dotazy odpovězené v nějakém manuálu (alá RTFM), tak rád odpovím a vysvětlím.

    Tak, titulky na Heroes s03e13 jsou hotový, tak jdu čumět. Hezký Vánoce.

    #!/bin/bash
    
    proxiesfile="$HOME/.download-proxies"
    
    if ! [ -e "$proxiesfile" ];then
      echo "Please, create file $proxiesfile"
      exit
    fi
    
    allproxylist="$( awk -F '|' '{print $2;}' "$proxiesfile" | tr '\n' ' ' )"
    sshtunnels="$( awk -F '|' '$1~/^.+$/{print "  " $1,$2;}' "$proxiesfile" )"
    sshtunservers="$( awk -F '|' '$1~/^.+$/{print $1;}' "$proxiesfile" | tr '\n' ' ' )"
    
    agent="Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.7) Gecko/20070914 Firefox/2.0.0.7"
    
    console=0
    
    if [ $# -gt 0 ];then
    
      i=$#
      while [ $i -gt 0 ];do
        case "$1" in
          -a)
            if [ $# -gt 1 ];then
              id="$[$2+1]"
              proxylist="$proxylist $( echo "$allproxylist" | tr -s '[[:space:]]' '\n' | sed -n "${id}p" )"
              i=$[$i-1]
              shift 2
            else
              echo "value please"
              exit
            fi
          ;;
          -d)
            if [ $# -gt 1 ];then
              id="$[$2+1]"
              if [ -z "$proxylist" ] ;then proxylist="$allproxylist";fi
              proxylist="$( echo "$proxylist" | tr -s '[[:space:]]' '\n' | sed "${id}d" )"
              i=$[$i-1]
              shift 2
            else
              echo "value please"
              exit
            fi
          ;;
          -r)
            if [ $# -gt 1 ];then
              rate="--limit-rate=$2"
              i=$[$i-1]
              shift 2
            else
              echo "value please"
              exit
            fi
          ;;
          -p) 
            if [ $# -gt 1 ];then
              proxylist="$2"
              shift 2
              i=$[$i-1]
            else
              echo "value please"
              exit
            fi
          ;;
          -c)
            console=1
            shift
          ;;
          -x)
            console=0
            shift
          ;;
          *)
            v="$1"
            shift 1
            set "$@" "$v"
          ;;
        esac
        i=$[$i-1]
      done
    
      if [ -z "$proxylist" ] ;then proxylist="$allproxylist";fi
    
      tmpdir="$( mktemp -d )"
      echo "TMPDIR: $tmpdir"
    
      while [ $# -gt 0 ];do
    
        echo "Downloading URL $1"
    
          for proxy in $proxylist ;do
            if [ "$proxy" = "NONE" ];then
              unset http_proxy
            else
              export http_proxy="$proxy"
            fi
    
            echo "HTTP PROXY: $http_proxy"
            wget $rate -U "$agent" -nv -O "$tmpdir"/p1.o --save-cookies="$tmpdir"/p1.c --keep-session-cookies "$1"
            eval "$( perl -e '
    undef $/;
    $a=<STDIN>;
    print sprintf("export captcha=\"http://www.megaupload.com%s\"\n",$captcha) if (($captcha)=($a=~m#<img[^>]*src=["\x27](/capgen\.php[^"\x27]+)["\x27]#i));
    print sprintf("export url=\"%s\"\n",$url)
        if (($t1)=($a=~m/(<form[^>]*id=["\x27]captchafrm["\x27][^>]*>)/i)) and ($t1=~/method=["\x27]post["\x27]/i) and (($url)=($t1=~m/action=["\x27]([^"\x27]+)["\x27]/i));
    while (($t1)=($a=~m/(<input[^>]*type=["\x27]hidden["\x27][^>]*>)/i)) {
      if ((($field)=($a=~m/name=["\x27](d|imagecode|megavar)["\x27]/i)) and (($val)=($a=~m/value=["\x27]([^"\x27]*)["\x27]/i))) { $val=~s/(.)/"%".unpack("H2",$1)/ge; print sprintf("export post_%s=\"%s\"\n",$field,$val) }
      $a=~s/<input[^>]*type=["\x27]hidden["\x27][^>]*>//i
    }' < "$tmpdir"/p1.o )"
    
    echo "captcha: $captcha"
    echo "url: $url"
    echo "post_d: $post_d"
    echo "post_imagecode: $post_imagecode"
    echo "post_megavar: $post_megavar"
    
            if [ -n "$captcha" ] && [ -n "$url" ];then
    
              wget $rate -U "$agent" -nv -O "$tmpdir"/cap.gif --load-cookies="$tmpdir"/p1.c --save-cookies="$tmpdir"/p2.c --keep-session-cookies "$captcha"
              if [ -n "$DISPLAY" ];then gqview "$tmpdir"/cap.gif >/dev/null 2>&1 & pid="$!" ; fi
              code=""
              if [ -n "$DISPLAY" ] && [ $console -eq 0 ];then
                while [ -z "$code" ];do code="$( Xdialog --no-cancel --title 'Megaupload downloader' --screen-center --stdout --inputbox 'Enter the CAPTCHA code' 10 40 )" ; if [ $? -eq 1 ];then code="-";fi;done
              else
                while [ -z "$code" ];do read -p 'Code ["-" for stop]: ' code;done
              fi
              if [ -n "$DISPLAY" ];then kill "$pid" ; fi
              if [ "$code" != "-" ];then
                code="$( echo "$code" | tr 'a-z' 'A-Z' )"
                wget $rate -O "$tmpdir"/p3.o -U "$agent" -nv --load-cookies="$tmpdir"/p2.c --save-cookies="$tmpdir"/p3.c --keep-session-cookies --post-data="d=${post_d}&imagecode=${post_imagecode}&megavar=${post_megavar}&imagestring=$code" "$url"
                eval "$( 
                perl -e '
    use Data::Dumper;
    $Data::Dumper::Indent=1;
    undef $/;
    $a=<STDIN>;
    (($v1)=($a=~/\b([0-9a-z_]+)--\s*;/i)) and (($v2)=($a=~/Please\s+wait[^+]+\+([a-z0-9_]+)\+[^+]+seconds/i)) and ($v1 eq $v2) and (($cek)=($a=~/\b$v1\s*=\s*(\d+)\s*;/i));
    if (($url)=($a=~m,document\.getElementById\("dlbutton"\)\.innerHTML\s*=\s*((?:"[^"]*"|\x27[^\x27]*\x27|[^"\x27;]*)*);,i)) { 
      @str=(["e",$url]);
      do {
        @nstr=();
        $eval=0;
        for ($i=0;$i<scalar(@str);$i++) {
          if ($str[$i][0] eq "e") {
            $eval=1;
            $exp=$str[$i][1];
            while ($exp=~m,(String|Math)\.(fromCharCode|sqrt|abs)\([^()]+\),i) {
              $exp=~s/(String|Math)\.(fromCharCode|sqrt|abs)\(([^()]+)\)/eval_js($1,$2,$3)/ei;
            }
            while (length($exp)>0) {
              if ((($q,$v)=($exp=~m,^\s*(\x27)([^\x27]*)\x27\s*,)) or (($q,$v)=($exp=~m,^\s*(")([^"]*)"\s*,))) {
                push @nstr,["s",$v];
                if ($q eq "\x27") { $exp=~s,^\s*\x27[^\x27]*\x27\s*,,; } elsif ($q eq "\"") {  $exp=~s,^\s*"[^"]*"\s*,,; }
              } elsif ($exp=~m,^\s*\+\s*,) {
                $exp=~s/^\s*\+\s*//;
              } elsif (($v)=($exp=~m/^\s*([a-z0-9_]+)\s*/i)) {
                push @nstr,["v",$v];
                $exp=~s/^\s*(\w+)\s*//i;
              } else {
                print sprintf("Unknown expression: <<%s>>\n",$exp);
                die;
              }
            }
          } elsif ($str[$i][0] eq "s") {
            push @nstr,[$str[$i][0],$str[$i][1]];
          } elsif ($str[$i][0] eq "v") {
            $eval=1;
            if (($val)=($a=~m/var\s+\b$str[$i][1]\b\s*=\s*((?:"[^"]*"|\x27[^\x27]*\x27|[^"\x27;]*)*);/i)) {
              push @nstr,["e",$val];
            }
          }
        }
        @str=@nstr;
      } while ($eval);
      $str="";
      for ($i=0;$i<scalar(@str);$i++) {
        $str.=$str[$i][1] if ($str[$i][0] eq "s");
      }
      if (($url)=($str=~m,<a.*?href=["\x27]([^"\x27]+)["\x27],i) and (($file)=($url=~m,^.*/([^/]+)\s*$,))) {
        print sprintf("export link=\"%s\"\n",$url);
        $file=~s/&#(\d+);/chr($1)/eg;
        print sprintf("export file=\"%s\"\n",$file);
      }
      print sprintf("export delay=\"%s\"\n",$cek) if (length($cek)>0);
    }
    sub eval_js {
      my ($o,$m,$v)=@_;
      my ($r);
      $r=sprintf("\"<nothing done with (%s,%s,%s)>\"",$o,$m,$v);
      if (lc($o) eq "string") {
        if (lc($m) eq "fromcharcode") {
          $r=sprintf("\"%s\"",chr(eval($v)));
        } else {
          $r="\"<unknown method $m for object $o>\"";
        }
      } elsif (lc($o) eq "math") {
        if (lc($m) eq "abs") {
          $r=sprintf("\"%s\"",abs($v));
        } elsif (lc($m) eq "sqrt") {
          $r=sprintf("\"%s\"",sqrt($v));
        } else {
          $r="\"<unknown method $m for object $o>\"";
        }
      } else {
        $r="\"<unknown object $o>\"";
      }
      return($r);
    }
                ' < "$tmpdir"/p3.o )"
                echo "Link: $link"
                echo "File: $file"
                echo "Delay: $delay"
                if [ -n "$delay" ];then for i in `seq $delay -1 1`;do echo -en "waiting $delay seconds [ $i ]     \r";sleep 1;done;echo;fi
                if [ -z "$link" ];then
                  echo "Link '$link' is empty"
                  echo "TMPDIR: $tmpdir"
                  exit 1
                elif  [ -z "$file" ];then
                  echo "Output file '$file' is empty"
                  echo "TMPDIR: $tmpdir"
                  exit 1
                else
                  echo "wget $rate -U '$agent' --load-cookies="$tmpdir"/p3.c -c -O '$file' '$link'"
                  if wget $rate -U "$agent" --load-cookies="$tmpdir"/p3.c -c -O "$file" "$link"; then break;fi
                fi
              else
                echo "TMPDIR: $tmpdir"
                exit 1
              fi
            elif grep -Ei 'All[[:space:]]+download[[:space:]]+slots[[:space:]]+assigned[[:space:]]+to[[:space:]]+your[[:space:]]+country[[:space:]]+\([^)]+\)[[:space:]]+are[[:space:]]+currently[[:space:]]+in[[:space:]]+use[[:space:]]*\.[[:space:]]*Please[[:space:]]+try[[:space:]]+again[[:space:]]+in[[:space:]]+a[[:space:]]+few[[:space:]]+hours' "$tmpdir"/p1.o;then
              echo "Trying next proxy"
            else
              echo "Unknown error"
              echo "TMPDIR: $tmpdir"
              exit 1
            fi
    
          done
    
        shift
      done
    
      rm -rf "$tmpdir"
    
    
    else
      cat <<EndOfInfo
    
    ssh tunnels:
    $sshtunnels
    
    proxy list:
    $( echo "$allproxylist" | tr -s '[[:space:]]' '\n' | nl -v0 -w4 -s' -- ' )
    
    $sshtunservers
    
    Usage: $0 [ -a proxynum ] [ -d proxynum ] [ -r rate-limit ] [ -p proxyurl ] [ { -c | -x } ] URL ...
    -a proxynum
        add proxy at line proxynum
    -d proxynum
        delete proxy at line proxynum in ACTUAL proxy list
    -r rate-limit
        limit wget download rate
    -p proxyurl
        insert proxy specified by proxyurl
    -c
        use console to enter captcha code
    -x
        use X dialog to enter captcha code (this is default)
    URL
        URL to download
    EndOfInfo
    fi
    
           

    Hodnocení: 100 %

            špatnédobré        

    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    Komentáře

    Vložit další komentář

    16.12.2008 21:34 Semo | skóre: 45 | blog: Semo
    Rozbalit Rozbalit vše Re: down-megaupload
    Moj skript pre rapidshare pouzival (ked este bolo CAPTCHA) cacaview. Pri mensom fonte na terminali alebo po zvacsani obrazku (cacaview vie zoomovat) sa to dalo slusne precitat a potom cez read zadat.
    If you hold a Unix shell up to your ear, you can you hear the C.
    16.12.2008 21:44 RoboShim | skóre: 13 | blog: RoboShim
    Rozbalit Rozbalit vše Re: down-megaupload

    Hehe, když mi Pev psal o přidání captcha na uloz.to, tak jsem mu aalib navrhoval jako šílenou myšlenku na zobrazování captcha:-) A vida, nebyl jsem jedinej a dokonce je vidět, že to tak šílenej nápad není:-) Akorát jsem mu psal o aalib a bblib, ale samozřejmě místo bblib jsem měl na mysli libcaca. No, takže zobrazování captcha v ASCII-art by šlo:-)

    17.12.2008 18:53 Andrej Herceg | skóre: 43
    Rozbalit Rozbalit vše Re: down-megaupload
    Ak je nainštalované NetPBM dá sa použiť aj giftopnm captcha.gif | ppmtoterm

    Inak celkom zaujímavý (a funkčný) je aj tento javascript: Megaupload auto-fill captcha
    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.