Po Canonicalu oznámilo také SUSE, že bude podporovat a distribuovat toolkit NVIDIA CUDA (Wikipedie).
Laboratoře CZ.NIC vydaly novou verzi 4.27.0 aplikace Datovka, tj. svobodné multiplatformní desktopové aplikace pro přístup k datovým schránkám a k trvalému uchovávání datových zpráv v lokální databázi. Přidány byly funkce pro přerazítkování datových zpráv systémem ISDS. Uživatel muže zvolit zprávy, jejichž časová razítka má aplikace sledovat. Aplikace jej upozorní na časová razítka, která lze přerazítkovat. Uživatel pak může
… více »Bylo představeno all-in-one PC aneb mechanická podsvícená klávesnice s Raspberry Pi 5 uvnitř Raspberry Pi 500+. S 256 GB Raspberry Pi SSD a 16 GB RAM za 200 dolarů.
Google, potažmo YouTube umožní návrat tvůrcům, kteří byli zablokováni kvůli údajnému šíření dezinformací souvisejících s COVID-19 a volbami. Tvůrci teď mohou požádat o navrácení přístupu. Společnost Alphabet v této souvislosti uvedla, že zákazy byly uděleny kvůli tlaku tehdejší Bidenovy administrativy.
Vývojári z distribúcie Artix, ktorá je postavená na Arch Linuxe, alebo skôr jeho forkom, už skôr prešli na Open-RC init systém, stále však niektoré projekty ako GNOME boli závislé na systemd. Teraz pretiekol pohár trpezlivosti a počnúc GNOME 49, kvôli ktorému komponenta gnome-session je úplne závislá na systemd-init, padlo rozhodnutie na odstránenie GNOME z repozitárov Artixu. Táto zmena sa podľa všetkého týka viac než 90 distribúcií, ktoré tiež nepoužívajú systemd. Viac v príspevku na DistroWatch.
Magazín IEEE Spectrum opět po roce publikoval svůj žebříček programovacích jazyků. Vedou Python, Java, C++, SQL a C#.
Repozitáře pro spolupráci v rámci projektu Fedora se přesunou z Pagure na nově vzniklý Fedora Forge. Ten stejně jako třeba Codeberg běží na softwaru Forgejo, které bylo už před časem vybráno jako náhrada za Pagure. Pagure pochází z dílny Fedory, ale mimo ni se příliš neuchytil. Jeho vývoj a údržba byly náročné a Fedora se rozhodla jít cestou úspěšnějšího projektu, který má větší základnu přispěvatelů.
Byla vydána (𝕏) nová verze 2025.3 linuxové distribuce navržené pro digitální forenzní analýzu a penetrační testování Kali Linux (Wikipedie). Přehled novinek se seznamem nových nástrojů v oficiálním oznámení na blogu.
V IT4Innovations národním superpočítačovém centru byl dnes slavnostně spuštěn první český kvantový počítač VLQ disponující 24 fyzickými qubity s unikátní hvězdicovou topologií. Systém dodala společnost IQM Quantum Computers a jeho celková pořizovací cena činila přibližně 125 milionů korun.
Výrobce čipů Nvidia chce investovat až 100 miliard dolarů (přes dva biliony Kč) do společnosti zaměřené na umělou inteligenci OpenAI. Firmy o tom informují v tiskové zprávě. Oznámené partnerství přichází v době, kdy se mezi technologickými giganty a start-upy zostřuje konkurence o zajištění přístupu k energii a čipům potřebným pro rozvoj umělé inteligence (AI).
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
Tiskni
Sdílej:
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
giftopnm captcha.gif | ppmtoterm
Inak celkom zaujímavý (a funkčný) je aj tento javascript: Megaupload auto-fill captcha