Tribunál Soudního dvora Evropské unie dnes zamítl několik žalob, v nichž se americká společnost Apple ohrazovala proti pravidlům fungování velkých technologických společností na unijním trhu. Applu se nelíbilo, že jeho obchod s aplikacemi a operační systém iOS mají podléhat přísnějším povinnostem jen proto, že Brusel firmu považuje za takzvaného gatekeepera, tedy strážce přístupu.
Na WhatsAppu budou postupně v průběhu následujících měsíců zavedena uživatelská jména. Telefonní čísla tak mohou zůstat soukromá. Aktuálně si lze uživatelské jméno rezervovat.
Byl aktualizován TIOBE Index (Wikipedie). Programovací jazyk Rust se poprvé dostal do první desítky tohoto žebříčku popularity programovacích jazyků. Vede Python následovaný C, C++, Java, C#, …
Proton (Wikipedie), tj. fork Wine integrovaný ve Steamu umožňující na Linuxu hrát hry určené pouze pro Windows, byl vydán ve verzi 11.0-1. Přehled novinek se seznamem nově podporovaných her na GitHubu. Aktuální přehled všech podporovaných her na stránkách ProtonDB
Byly publikovány zdrojové kódy počítačové hry Unturned. Pro nekomerční účely. V plánu je přelicencování pod MIT. Hra Unturned je postavena nad multiplatformním herním enginem Unity.
První česká družice navržená a sestavená výhradně studenty se dostala na oběžnou dráhu Země. Družice KOSTKA, kterou vyvinul studentský tým YSpace z Vysokého učení technického v Brně (VUT), dnes odstartovala na palubě rakety Falcon 9 společnosti SpaceX v rámci mise Transporter-17 z kalifornské základny Vandenberg Space Force Base.
Po nákresech ovladače Steam Controller a puku společnost Valve na svém GitLabu publikovala projekt Inkterface, tj. podrobný návod (PDF, video v mp4) na sestavení předního panelu s e-papírovým displejem pro Steam Machine pro zobrazování systémových informací. Použity jsou součástky od společnosti Adafruit.
V jádře Linux byla nalezena a v dubnu letošního roku v upstreamu opravena kritická zranitelnost Bad Epoll aneb CVE-2026-46242. Jedná se o zranitelnost typu "race-condition use-after-free", která běžnému uživateli umožňuje získat práva roota. Na distribucích Linuxu i na Androidu. Dokonce i zevnitř sandboxu prohlížeče Chrome. Chyba byla do Linuxu zavedena v dubnu 2023, tj. Linux 6.4.
Byla vydána nová verze 10.4 sady aplikací pro SSH komunikaci OpenSSH. Přináší řadu důležitých bezpečnostních oprav, vylepšení funkcí a oprav chyb. Vyzkoušet lze experimentální podporu postkvantového algoritmu mldsa44-ed25519.
Open Printer je otevřená kompaktní tiskárna od Open Tools. Brzy by měla být spuštěna kampaň na její podporu na Crowd Supply. Současně by měly být uvolněny zdrojové kódy. Postavena je na Raspberry Pi Zero W a STM32. Používá inkoustové kazety HP 302.
Tak jsem splodil další stahovací skripty, tentokrát to jsou iskladka.cz, ulozisko.sk a subory.sk.
Protože je to převážně výsledek copy&paste z předchozích skriptů a protože už se mi chce spát, tak se k tomu nebudu rozepisovat. Jenom poznámka, ulozisko.sk funguje jenom z ČR nebo SR.
#!/bin/bash
if [ $# -eq 0 ];then
cat <<EndHelp
Usage: $0 URL ...
EndHelp
else
tmpdir="$( mktemp -d )"
while [ $# -gt 0 ];do
url1="$1"
shift
output1="$( wget -O - -q --keep-session-cookies --save-cookies="$tmpdir/cookies" "$url1" )"
url2="$( dirname "$url1" )/$( echo "$output1" | perl -e '
undef $/;
$a=<STDIN>;
if ((($url)=($a=~m,<iframe[^>]+src="(iCopy/index.php[^"]+)",is)) and (($path,$param)=($url=~m,^(.*)\?file=(.*)$,i))) {
$param=unpack("H*",$param);
$param=~s/(..)/%$1/g;
print sprintf("%s?file=%s",$path,$param);
};
'
)"
output2="$( wget -O - -q --keep-session-cookies --save-cookies="$tmpdir/cookies" --load-cookies="$tmpdir/cookies" --referer "$url1" "$url2" )"
data3="$( echo "$output2" | perl -e '
undef $/;
$a=<STDIN>;
($link)=($a=~m,var\s+downloadCounterLink\s*=\s*[\x27"]([^\x27"]+)[\x27"]\s*;,is);
($counter)=($a=~m,var\s+downloadCounter\s*=\s*(\d+)\s*;,is);
if (($url)=($a=~m,^\s+document\.getelementbyid\("downloadstatus"\)\.innerhtml\s*=\s*"\s*<iframe[^>]+src=\x27(http.*/icopy/downloadbalancer[^\x27]+)\x27,im)) {
$url=~s,"\+downloadCounterLink\+",$link,is;
}
$link=~tr/+/ /;
$link=~s/%(..)/chr(hex($1))/ge;
print sprintf("%s\\%s\\%s",$counter,$link,$url);
'
)"
url3="${data3##*\\}"
delay="${data3%%\\*}"
file="${data3%\\*}"
file="${file#*\\}"
echo "URL: $url3"
echo "FILE: $file"
if [ -e "$file" ];then
echo "SKIP: the file $file exists"
else
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 [ -n "$url3" ];then
wget -O "$file" -c --load-cookies="$tmpdir/cookies" --referer="$url2" "$url3"
else
echo "ERROR: no url to download"
exit 1
fi
fi
done
rm -rf "$tmpdir"
fi
#!/bin/bash
console=0
if [ $# -eq 0 ];then
cat <<EndHelp
Usage: $0 URL ...
EndHelp
else
tmpdir="$( mktemp -d )"
while [ $# -gt 0 ];do
case "$1" in
"-c")
console=1
;;
"-x")
console=0
;;
* )
url1="$1"
shift
output1="$( wget -O - -q --keep-session-cookies --save-cookies="$tmpdir/cookies" "$url1" )"
data="$( echo "$output1" | perl -e '
undef $/;
$a=<STDIN>;
($delay)=($a=~m,^\bcislo\s*=\s*(\d+)\s*;,im);
($form)=($a=~m,(<form[^>]+name=captchaform[^>]*>.*?</form>),is);
($img)=($form=~m,<img[^>]+src="(/captcha3/captcha\.php\?id=[^"]+)"[^>]*>,is);
($url)=($form=~m,<form[^>]+action="([^"]+)",is);
print sprintf("%s\\%s\\%s",$delay,$img,$url);
'
)"
echo "$data"
baseurl="${url1%/download/*}"
url2="$baseurl${data##*\\}"
captchaimg="${data#*\\}"
captchaimg="$baseurl${captchaimg%\\*}"
wait="${data%%\\*}"
echo "URL: $url2"
echo "captcha: $captchaimg"
echo "wait: $wait"
waitstart="$( date +"%s" )"
if [ -n "$url2" ] && [ -n "$captchaimg" ];then
wget $rate -U "$agent" -nv -O "$tmpdir"/cap.jpg --load-cookies="$tmpdir"/cookies --save-cookies="$tmpdir"/cookies --keep-session-cookies "$captchaimg"
if [ -n "$DISPLAY" ];then gqview "$tmpdir"/cap.jpg >/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
if [ -n "$wait" ]; then
realwait="$(( $( date +"%s" ) - ( $waitstart + $wait ) ))"
if [ $( date +"%s" ) -le $(( $waitstart + $wait )) ] ; then while [ $( date +"%s" ) -le $(( $waitstart + $wait )) ];do echo -en "waiting $wait seconds [ $(( $waitstart + $wait - $( date +"%s" ) )) ] \r";sleep 1; done ; echo ; fi
fi
postdata="submitted=1&str=$code"
wget --load-cookies="$tmpdir/cookies" --post-data="$postdata" --referer="$url1" "$url2"
fi
fi
;;
esac
done
rm -rf "$tmpdir"
fi
#!/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' ' ' )"
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"
url1="$1"
output1="$( wget -O - -q --keep-session-cookies --save-cookies="$tmpdir/cookies" "$url1" )"
data="$( echo "$output1" | perl -e '
undef $/;
$a=<STDIN>;
($form)=($a=~m,(<form[^>]+name\s*=\s*"formular"[^>]*>.*?</form>),is);
($delay)=($form=~m,function\s+set\s*\(\s*\)\s*\{\s*cas_\d+\s*=\s*(\d+)\s*;\s*\},is);
($img)=($form=~m,<img[^>]+src="(/obrazky/obrazky\.php\?[^"]+)"[^>]*>,is);
($url)=($form=~m,<form[^>]+action\s*=\s*"([^"]+)",is);
while (($hidden)=($form=~m,(<input[^>]+type\s*=\s*"hidden"[^>]*>),is)) {
$form=~s,(<input[^>]+type\s*=\s*"hidden"[^>]*>),,is;
($name)=($hidden=~m,name\s*=\s*"([^"]+)",is);
($val)=($hidden=~m,value\s*=\s*"([^"]+)",is);
$file=$val if ($name eq "name");
$val=unpack("H*",$val);
$val=~s/(..)/%$1/g;
push @hidden,sprintf("%s=%s",$name,$val);
}
print sprintf("%s\n%s\n%s\n%s\n%s",$delay,$img,$url,join("&",@hidden),$file);
'
)"
baseurl="http://www.ulozisko.sk"
wait="$( echo "$data" | sed -n -e '1p;' )"
captchaimg="$( echo "$data" | sed -n -e '2p;' )"
url2="$( echo "$data" | sed -n -e '3p;' )"
postdata="$( echo "$data" | sed -n -e '4p;' )"
filename="$( echo "$data" | sed -n -e '5p;' )"
echo "URL: $baseurl$url2"
echo "captcha: $baseurl$captchaimg"
echo "wait: $wait"
waitstart="$( date +"%s" )"
if [ -n "$url2" ] && [ -n "$captchaimg" ];then
url2="$baseurl$url2"
captchaimg="$baseurl$captchaimg"
wget $rate -U "$agent" -nv -O "$tmpdir"/cap.png --load-cookies="$tmpdir"/cookies --save-cookies="$tmpdir"/cookies --keep-session-cookies "$captchaimg"
if [ -n "$DISPLAY" ];then gqview "$tmpdir"/cap.png >/dev/null 2>&1 & pid="$!" ; fi
code=""
if [ -n "$DISPLAY" ] && [ $console -eq 0 ];then
while [ -z "$code" ];do code="$( Xdialog --no-cancel --title 'Ulozisko.Sk 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
if [ -n "$wait" ]; then
realwait="$(( $( date +"%s" ) - ( $waitstart + $wait ) ))"
if [ $( date +"%s" ) -le $(( $waitstart + $wait )) ] ; then while [ $( date +"%s" ) -le $(( $waitstart + $wait )) ];do echo -en "waiting $wait seconds [ $(( $waitstart + $wait - $( date +"%s" ) )) ] \r";sleep 1; done ; echo ; fi
fi
postdata="$postdata&antispam=$code"
wget -c --load-cookies="$tmpdir/cookies" --post-data="$postdata" --referer="$url1" "$url2"
fi
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:
dobra prace, jen bych z toho udelal jeden skript, kterej by to detekoval podle URL
jojo, uz jsme o tom u jednoho blogu premyslel, ze bych to trosku sjednotil do jednoho skriptu, udelal funkce a detekoval URL. Ale nevim, jestli by to nebylo zbytecne prace. Uz i takhle by se to dalo hodne optimalizovat. Ale nechci u toho travit vsechen cas, uz takhle to sezere nejakej ten cas zjistovani, ze ktery stranky na kterou stranku, ktery udaje vytahnout a pak pripadny upravy, kdyz neco zmeni. Takze nevim, mozna kdyz se budu nudit, ze z toho jeden skript udelam (je zase pravda, ze by se pak neopakoval kod na zobrazeni capcha a zadani hesla a pod). No, uvidime ...