• XSS.stack #1 – первый литературный журнал от юзеров форума

Защищаем /var/www правильно aka Бесплатная "клоака" v.2

x4k

6767694e 61635361 72656d6d 0a Li-En
КИДАЛА
Регистрация
29.05.2020
Сообщения
292
Реакции
401
Пожалуйста, обратите внимание, что пользователь заблокирован
Как раз пару дней назад пришлось на скорую руку придумать нечто подобное. Задача, точнее ее часть, очень близко совпадала со словом "клоака"... Слово так себе конечно, приходтся использовать) а то modrewrite и ipset попудярностью пользуются гораздо меньше)))) Как всегда POC в студию (и как обычно это линукс, debian линукс..):


Bash:
mkdir /tmp/CLOACKa ; cd /tmp/CLOACKa
cat > pack.sh << 'CLOACKEr'
#!/bin/bash
[[ -z "$(type makeself)" ]] && apt-get -y install makeself #очень удобно паковать как раз "сервера"
makeself --nox11 --needroot "$(pwd)"  dolanding _unknw0wn_dolanding ./init.sh "$1"
curl -s --upload-file /tmp/CLOACKa/dolanding https://x4k.sh/token\="$(openssl rand -hex 12)" | sed 's+p:+ps:+g' > /tmp/cmd ж echo 'wget -O /tmp/0cmd URLHERE && chmod +x /tmp/0cmd && /tmp/0cmd && rm /tmp/0cmd' | sed "s+URLHERE+$(cat /tmp/cmd)+g" | curl -s -F 'f:1=<-' ix.io | sed 's+http://++g' > /tmp/ccc
printf "\n\033[1;37m Do this on your VPS:\033[1;31m bash <(wget -qO- $(cat /tmp/ccc))\n" # выдаст ссылку, вам ее просто остается вставить в терминал VPS
EOF
chmod +x pack.sh

cat<<'EOF'>init.sh
#!/bin/bash
export DEBIAN_FRONTEND=noninteractive ; home="$(pwd)" ; hname="$1" ; hostname "$hname" ; echo "$hname" > /etc/hostname ; echo 127.0.0.1 localhost > /etc/hosts ; echo "$(wget -qO- ifconfig.me)" "$hname" >> /etc/hosts

#//// swap ////
dd if=/dev/zero of=/swapfile2 bs=1G count=2
mkswap /swapfile2
chmod 600 /swapfile2
swapon /swapfile2
echo '/swapfile2        none    swap    sw,pri=10       0       0' >> /etc/fstab ; rm /etc/motd &>/dev/null

#//// install ////
apt-get update && apt-get -y dist-upgrade ; apt-get -y purge dnsmasq &> /dev/null ; systemctl disable systemd-resolved ; systemctl stop systemd-resolved openresolv
apt-get -y install git curl sudo wget nginx python-certbot-nginx python2 python3 python-pip python-dev python3-dev dnsutils unzip ipset shc npm nodejs jq
npm i -g bash-obfuscate

#//// .zsh shell ////
#//// .zsh //// мой любимый и с моим конфигом)) делюсь самым приватом)
apt-get -y install zsh perl golang fzf -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold"
cd /root ; mkdir /tmp/LS_COLORS && curl -sL https://api.github.com/repos/trapd00r/LS_COLORS/tarball/master | tar xzf - --directory=/tmp/LS_COLORS --strip=1 &> /dev/null ; ( cd /tmp/LS_COLORS && sh install.sh ) &> /dev/null
git clone https://github.com/jotyGill/quickz-sh.git ; cd quickz-sh ; ./quickz.sh ; rm -r ../quickz-sh
wget -O /tmp/bat.deb $(curl -sL https://api.github.com/repos/sharkdp/bat/releases/latest | grep amd64.deb | grep -v musl | grep browser_download_url | head -1 | cut -d \" -f 4) && dpkg -i /tmp/bat.deb
wget -nv --show-progress https://raw.githubusercontent.com/macvk/dnsleaktest/master/dnsleaktest.sh && mv dnsleaktest.sh /usr/bin/dnsleak && chmod +x /usr/bin/dnsleak
cd /root ; curl -L https://cpanmin.us/ -o /usr/bin/cpanm ; chmod +x /usr/bin/cpanm ; alias cpan=cpanm
yes | cpan Term::ExtendedColor
yes | cpan File::LsColor
git clone git://github.com/trapd00r/ls--.git ; cd ls-- ; perl Makefile.PL ; make && make install ; cp ls++.conf $HOME/.ls++.conf
wget -nv --show-progress $(curl -sL https://api.github.com/repos/phiresky/ripgrep-all/releases/latest | grep x86_64-unknown-linux-musl.tar.gz | grep browser_download_url | head -1 | cut -d \" -f 4) && tar xf *x86_64-unknown-linux-musl.tar.gz && mv ripgrep*/* /usr/local/bin/

#//// nginx ////
cat<<EOF>/etc/nginx/sites-available/"$hname"
server {
        listen 80 default_server;
        listen [::]:80 default_server;
        root /var/www/html;
        index index.html;
        server_name $hname;
        location / {
                try_files \$uri \$uri/ =404;
        }
}
EOF
sudo systemctl reload nginx ; sleep 10 ; certbot --nginx -d "$hname" --non-interactive --agree-tos -m webmaster@"$hname" ; service nginx reload ; systemctl restart nginx

#///// ОСНОВНАЯ ЧАСТЬ - КАК РАЗ БАН ПЕСКА И реврайт ботов. Гугл причем не трогает - адвордс - ауе -чичигага
#//// bad bot blocker ////
wget https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master/install-ngxblocker -O /usr/local/sbin/install-ngxblocker
chmod +x /usr/local/sbin/install-ngxblocker ; cd /usr/local/sbin ; ./install-ngxblocker -x ; chmod +x /usr/local/sbin/setup-ngxblocker ; chmod +x /usr/local/sbin/update-ngxblocker ; cd /usr/local/sbin/ ; printf "Y" | ./setup-ngxblocker -x
sed -i "s+server_name _\;+server_name _\;\n    return 301 https://\$host\$request_uri\;+g" /etc/nginx/sites-available/default ; systemctl restart nginx
(crontab -l | grep . ; echo -e "00 */8 * * * sudo /usr/local/sbin/update-ngxblocker -n") | crontab -

cat<<'EOF'>/usr/local/bin/goodboyz
#!/bin/bash
ipset -q flush goodboyz ; ipset -q create goodboyz nethash
for ip in $(curl -s https://gist.githubusercontent.com/curi0usJack/971385e8334e189d93a6cb4671238b10/raw | \
grep -E -o "(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\/(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)"); \
do ipset add goodboyz $ip ; done

iptables -A INPUT -m set --match-set goodboyz src -j DROP
iptables -A FORWARD -m set --match-set goodboyz src -j DROP

curl -s https://gist.githubusercontent.com/curi0usJack/971385e8334e189d93a6cb4671238b10/raw | grep -E -o "(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\/(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)" > /tmp/goodboyz
echo "" > /etc/nginx/bots.d/blacklist-ips.conf ; while read in ; do echo "$in   1;" >> /etc/nginx/bots.d/blacklist-ips.conf ; done < /tmp/goodboyz

service nginx reload ; systemctl restart nginx
EOF
chmod +x /usr/local/bin/goodboyz ; echo 'sudo goodboyz' >> /etc/rc.local ; echo exit 0 >> /etc/rc.local ; chmod +x /etc/rc.local

(crontab -l | grep . ; echo -e "00 */8 * * * sudo /usr/local/bin/goodboyz") | crontab -

#//////// мой конфиг зсхрц и приятное приведение, встречающее Вас при вхоже на сервер. мелочь, а приятно)))
#//// THE END ////
echo "Iy8vLy8vLy8vLy8vLy8gX3Vua24wd24gLnpzaHJjIGZpbGUgLy8vLy8vLy8vLy8vLy8KCmV4cG9ydCBQQVRIPS9zYmluOi9iaW46L3Vzci9sb2NhbC9zYmluOi91c3IvbG9jYWwvYmluOi91c3Ivc2JpbjovdXNyL2Jpbjovcm9vdC8ubG9jYWwvYmluOi9yb290L2dvL2Jpbi86CmV4cG9ydCBURVJNPSJ4dGVybS0yNTZjb2xvciIKZXhwb3J0IFpTSD0kSE9NRS8ub2gtbXktenNoCmV4cG9ydCBMQ19BTEw9ZW5fVVMuVVRGLTgKClpTSF9USEVNRT0icG93ZXJsZXZlbDEway9wb3dlcmxldmVsMTBrIgpQT1dFUkxFVkVMOUtfTU9ERT0nbmVyZGZvbnQtY29tcGxldGUnCkNPTVBMRVRJT05fV0FJVElOR19ET1RTPSJ0cnVlIgoKcGx1Z2lucz0oCiAgICBnaXQKICAgIHpzaC1jb21wbGV0aW9ucwogICAgenNoLWF1dG9zdWdnZXN0aW9ucwogICAgenNoLXN5bnRheC1oaWdobGlnaHRpbmcKICAgIGhpc3Rvcnktc3Vic3RyaW5nLXNlYXJjaAogICAgcHl0aG9uCiAgICBodHRwaWUKICAgIGRvY2tlcgogICAgcHllbnYKICAgIHN5c3RlbWQKICAgIGsKICAgIGZ6ZgogICAgKQoKc291cmNlICRaU0gvb2gtbXktenNoLnNoCnNvdXJjZSAiL3Jvb3QvLmxvY2FsL3NoYXJlL2xzY29sb3JzLnNoIgoKZXhwb3J0IEZaRl9ERUZBVUxUX09QUz0iLS1leHRlbmRlZCIKZXhwb3J0IE1BUktFUl9LRVlfTkVYVF9QTEFDRUhPTERFUj0iXEMtYiIKCmF1dG9sb2FkIC1VIGNvbXBpbml0ICYmIGNvbXBpbml0Ck5QTV9QQUNLQUdFUz0iJHtIT01FfS8ubnBtIgpTQVZFSElTVD01MDAwMDAKClsgLWYgfi8uZnpmLnpzaCBdICYmIHNvdXJjZSB+Ly5memYuenNoCltbIC1zICIkSE9NRS8ubG9jYWwvc2hhcmUvbWFya2VyL21hcmtlci5zaCIgXV0gJiYgc291cmNlICIkSE9NRS8ubG9jYWwvc2hhcmUvbWFya2VyL21hcmtlci5zaCIgOyBbWyAhIC1mIH4vLnAxMGsuenNoIF1dIHx8IHNvdXJjZSB+Ly5wMTBrLnpzaAoKCiMvLy8vLy8vLy8vLy8vIEFMSUFTRVMgLy8vLy8vLy8vLy8vLy8vLwojLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KCmFsaWFzIGNhdD0iYmF0IC0tcGFnaW5nIG5ldmVyIC1wIC0tdGhlbWUgJ01vbm9rYWkgRXh0ZW5kZWQgT3JpZ2luJyIKYWxpYXMgbD0ibHMrKyAtLXBvdHNmIgphbGlhcyBsYT0ibHMrKyAtYSAtLXBvdHNmIgoKIy8vLy8vLy8vLy8vLyBGVU5DVElPTlMgLy8vLy8vLy8vLy8vLy8vCiMvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwoKZnVuY3Rpb24ganFpcG9ydCgpIHsKY2F0ICQxIHwganEgLXIgJy5wcm94aWVzIHwgbWFwKFsuaXAsIC5wb3J0XSB8IGpvaW4oIjoiKSkgfCBqb2luKCJcbiIpJwp9CgpmdW5jdGlvbiBybmQoKSB7CmVjaG8gJCh0ciAtZGMgJ0EtWjAtOWEteicgPCAvZGV2L3VyYW5kb20gfCBoZWFkIC1jICQxKQp9CgpmdW5jdGlvbiBpeHgoKSB7CnBhc3M9IiQob3BlbnNzbCByYW5kIC1oZXggMykiCnByaW50ICIkKiIgfCBvcGVuc3NsIGVuYyAtZSAtYmFzZTY0IC1hZXMtMTI4LWN0ciAtcGJrZGYyIC1ub3NhbHQgLWsgJHBhc3MgfCBjdXJsIC1zIC1GIGY6MT0nPC0nIGl4LmlvICY+IC90bXAvLml4ZgpwcmludGYgIlwwMzNbMTszMW1peGQgJChjYXQgL3RtcC8uaXhmIHwgc2VkICdzK2h0dHA6Ly9peC5pby8rK2cnKSAkcGFzc1xuIgpwcmludGYgIlwwMzNbMG0iCn0KCmZ1bmN0aW9uIGlwZ3JlcCgpIHsKZ3JlcCAtRSAtbyAiKDI1WzAtNV18MlswLTRdWzAtOV18WzAxXT9bMC05XVswLTldPylcLigyNVswLTVdfDJbMC00XVswLTldfFswMV0/WzAtOV1bMC05XT8pXC4oMjVbMC01XXwyWzAtNF1bMC05XXxbMDFdP1swLTldWzAtOV0/KVwuKDI1WzAtNV18MlswLTRdWzAtOV18WzAxXT9bMC05XVswLTldPylcOioiICQxIAp9CgpmdW5jdGlvbiBnaSgpIHsKCXdnZXQgJDEKCWxhc3R6aXA9JChscyAtMXQgfCBoZWFkIC1uIDEpCglsYXN0ZGlyPSQodW56aXAgLWxxICRsYXN0emlwIHwgZ3JlcCAnLycgfCBoZWFkIC1uIDEgfCBhd2sgJ3twcmludGYgJDR9JykKCXVuemlwICRsYXN0emlwCglybSAkbGFzdHppcAoJc2xlZXAgMC41CgljZCAkbGFzdGRpcgp9CgpmdW5jdGlvbiBtZDVwYXNzKCkgewoJZWNobyAtbiAkMSB8IG1kNXN1bQp9CgpmdW5jdGlvbiBpcHNjYW4oKSB7CglydXN0c2NhbiAkMSAtYiAxMDAwIC0tIC12diAtUG4gLXNWIC1BIC1UNSAtLXNjcmlwdCB2dWxuIC1vTiBubWFwLSQxCn0KCmZ1bmN0aW9uIGNlbnN5cygpIHsKZXhwb3J0IENFTlNZU19BUElfSUQ9YzExODEzZTAtNWQwZi00M2U4LWI4NTMtYWZiZmI4NzhhYjI0OyBleHBvcnQgQ0VOU1lTX0FQSV9TRUNSRVQ9aFMxQ09zbHhEMnppUTdzaWQ5WHJISlZKdHZLbnc3eEYKL3Vzci9sb2NhbC9iaW4vY2Vuc3lzIHNlYXJjaCAtcSAkMSAtLWZpZWxkcyBpcHY0IHwganEgfCBzZWQgJ3MrXFsrK2cnIHwgc2VkICdzK1xdKytnJyB8IHNlZCAncyt7KytnJyB8IHNlZCAncyt9KytnJyB8IHNlZCAncytcLCsrZycgfCBjY2F0Cn0KCmZ1bmN0aW9uIHVwbCgpewppZiBbICQjIC1lcSAwIF0gOyB0aGVuIGVjaG8gIk5vIGFyZ3VtZW50cyBzcGVjaWZpZWQuXG5Vc2FnZTpcbiAgdHJhbnNmZXIgPGZpbGV8ZGlyZWN0b3J5PlxuICAuLi4gfCB0cmFuc2ZlciA8ZmlsZV9uYW1lPiI+JjIgOyByZXR1cm4gMSA7IGZpCiAgaWYgdHR5IC1zIDsgdGhlbiBmaWxlPSIkMSIgOyBmaWxlX25hbWU9JChiYXNlbmFtZSAiJGZpbGUiKSA7IGlmIFsgISAtZSAiJGZpbGUiIF0gOyB0aGVuIGVjaG8gIiRmaWxlOiBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5Ij4mMiA7IHJldHVybiAxIDsgZmkgOwogICAgaWYgWyAtZCAiJGZpbGUiIF0gOyB0aGVuIGZpbGVfbmFtZT0iJGZpbGVfbmFtZS56aXAiICwgOyAoY2QgIiRmaWxlIiYmemlwIC1yIC1xIC0gLikgfCBjdXJsIC0tcHJvZ3Jlc3MtYmFyIC0tdXBsb2FkLWZpbGUgIi0iICJodHRwczovL3g0ay5zaC8kZmlsZV9uYW1lIiB8IHNlZCAncytzaC8rc2gvZ2V0LytnJyB8IHNlZCAncytodHRwOi8vKytnJyAmJiBlY2hvICIiIHwgdGVlIC9kZXYvbnVsbCwKICBlbHNlIGNhdCAiJGZpbGUiIHwgY3VybCAtLXByb2dyZXNzLWJhciAtLXVwbG9hZC1maWxlICItIiAiaHR0cHM6Ly94NGsuc2gvLyRmaWxlX25hbWUiIHwgIHNlZCAncytzaC8rc2gvZ2V0LytnJyB8IHNlZCAncytodHRwOi8vKytnJyAmJiBlY2hvICIiIHwgdGVlIC9kZXYvbnVsbCA7IGZpCmVsc2UgZmlsZV9uYW1lPSQxIDsgY3VybCAtLXByb2dyZXNzLWJhciAtLXVwbG9hZC1maWxlICItIiAiaHR0cHM6Ly94NGsuc2gvLyRmaWxlX25hbWUiIHwgIHNlZCAncytzaC8rc2gvZ2V0LytnJyB8IHNlZCAncytodHRwOi8vKytnJyAmJiBlY2hvICIiIHwgdGVlIC9kZXYvbnVsbCA7IGZpCn0KCmZ1bmN0aW9uIHNlZHIoKSB7CglmaW5kIC4gLXR5cGUgZiAtcHJpbnQwIHwgeGFyZ3MgLTAgc2VkIC1pICJzKyQxKyQyK2ciCn0KCmxnKCkgewogICAgZ2l0IGFkZCAuCiAgICBnaXQgY29tbWl0IC1hIC1tICJ4IgogICAgZ2l0IHB1c2gKfQoKc3BlZWR0ZXN0KCkgewogICAgY3VybCAtcyBodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vc2l2ZWwvc3BlZWR0ZXN0LWNsaS9tYXN0ZXIvc3BlZWR0ZXN0LnB5IHwgcHl0aG9uMyAtCn0KCmNsZWFyIDsgY2F0IC91c3Ivc2hhcmUvbG9nbwo=" | base64 -d -w 0 > /root/.zshrc
echo "IyBHZW5lcmF0ZWQgYnkgUG93ZXJsZXZlbDEwayBjb25maWd1cmF0aW9uIHdpemFyZCBvbiAyMDIwLTA2LTEyIGF0IDEzOjIwIENFU1QuCiMgQmFzZWQgb24gcm9ta2F0di9wb3dlcmxldmVsMTBrL2NvbmZpZy9wMTBrLXB1cmUuenNoLCBjaGVja3N1bSAwMDY4Mi4KIyBXaXphcmQgb3B0aW9uczogbmVyZGZvbnQtY29tcGxldGUgKyBwb3dlcmxpbmUsIGxhcmdlIGljb25zLCBwdXJlLCAyNGggdGltZSwgMiBsaW5lcywKIyBzcGFyc2UsIGluc3RhbnRfcHJvbXB0PW9mZi4KIyBUeXBlIGBwMTBrIGNvbmZpZ3VyZWAgdG8gZ2VuZXJhdGUgYW5vdGhlciBjb25maWcuCiMKIyBDb25maWcgZmlsZSBmb3IgUG93ZXJsZXZlbDEwayB3aXRoIHRoZSBzdHlsZSBvZiBQdXJlIChodHRwczovL2dpdGh1Yi5jb20vc2luZHJlc29yaHVzL3B1cmUpLgojCiMgRGlmZmVyZW5jZXMgZnJvbSBQdXJlOgojCiMgICAtIEdpdDoKIyAgICAgLSBgQGM0ZDNlYzJjYCBpbnN0ZWFkIG9mIHNvbWV0aGluZyBsaWtlIGB2MS40LjB+MTFgIHdoZW4gaW4gZGV0YWNoZWQgSEVBRCBzdGF0ZS4KIyAgICAgLSBObyBhdXRvbWF0aWMgYGdpdCBmZXRjaGAgKHRoZSBzYW1lIGFzIGluIFB1cmUgd2l0aCBgUFVSRV9HSVRfUFVMTD0wYCkuCiMKIyBBcGFydCBmcm9tIHRoZSBkaWZmZXJlbmNlcyBsaXN0ZWQgYWJvdmUsIHRoZSByZXBsaWNhdGlvbiBvZiBQdXJlIHByb21wdCBpcyBleGFjdC4gVGhpcyBpbmNsdWRlcwojIGV2ZW4gdGhlIHF1ZXN0aW9uYWJsZSBwYXJ0cy4gRm9yIGV4YW1wbGUsIGp1c3QgbGlrZSBpbiBQdXJlLCB0aGVyZSBpcyBubyBpbmRpY2F0aW9uIG9mIEdpdCBzdGF0dXMKIyBiZWluZyBzdGFsZTsgcHJvbXB0IHN5bWJvbCBpcyB0aGUgc2FtZSBpbiBjb21tYW5kLCB2aXN1YWwgYW5kIG92ZXJ3cml0ZSB2aSBtb2Rlczsgd2hlbiBwcm9tcHQKIyBkb2Vzbid0IGZpdCBvbiBvbmUgbGluZSwgaXQgd3JhcHMgYXJvdW5kIHdpdGggbm8gYXR0ZW1wdCB0byBzaG9ydGVuIGl0LgojCiMgSWYgeW91IGxpa2UgdGhlIGdlbmVyYWwgc3R5bGUgb2YgUHVyZSBidXQgbm90IHBhcnRpY3VsYXJseSBhdHRhY2hlZCB0byBhbGwgaXRzIHF1aXJrcywgdHlwZQojIGBwMTBrIGNvbmZpZ3VyZWAgYW5kIHBpY2sgIkxlYW4iIHN0eWxlLiBUaGlzIHdpbGwgZ2l2ZSB5b3Ugc2xpY2sgbWluaW1hbGlzdCBwcm9tcHQgd2hpbGUgdGFraW5nCiMgYWR2YW50YWdlIG9mIFBvd2VybGV2ZWwxMGsgZmVhdHVyZXMgdGhhdCBhcmVuJ3QgcHJlc2VudCBpbiBQdXJlLgoKIyBUZW1wb3JhcmlseSBjaGFuZ2Ugb3B0aW9ucy4KJ2J1aWx0aW4nICdsb2NhbCcgJy1hJyAncDEwa19jb25maWdfb3B0cycKW1sgISAtbyAnYWxpYXNlcycgICAgICAgICBdXSB8fCBwMTBrX2NvbmZpZ19vcHRzKz0oJ2FsaWFzZXMnKQpbWyAhIC1vICdzaF9nbG9iJyAgICAgICAgIF1dIHx8IHAxMGtfY29uZmlnX29wdHMrPSgnc2hfZ2xvYicpCltbICEgLW8gJ25vX2JyYWNlX2V4cGFuZCcgXV0gfHwgcDEwa19jb25maWdfb3B0cys9KCdub19icmFjZV9leHBhbmQnKQonYnVpbHRpbicgJ3NldG9wdCcgJ25vX2FsaWFzZXMnICdub19zaF9nbG9iJyAnYnJhY2VfZXhwYW5kJwoKKCkgewogIGVtdWxhdGUgLUwgenNoCgogICMgVW5zZXQgYWxsIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4KICB1bnNldCAtbSAnUE9XRVJMRVZFTDlLXyp8REVGQVVMVF9VU0VSJwoKICAjIFpzaCA+PSA1LjEgaXMgcmVxdWlyZWQuCiAgYXV0b2xvYWQgLVV6IGlzLWF0LWxlYXN0ICYmIGlzLWF0LWxlYXN0IDUuMSB8fCByZXR1cm4KCiAgIyBQcm9tcHQgY29sb3JzLgogIGxvY2FsIGdyZXk9JzI0MicKICBsb2NhbCByZWQ9JzEnCiAgbG9jYWwgeWVsbG93PSczJwogIGxvY2FsIGJsdWU9JzQnCiAgbG9jYWwgbWFnZW50YT0nNScKICBsb2NhbCBjeWFuPSc2JwogIGxvY2FsIHdoaXRlPSc3JwoKICAjIExlZnQgcHJvbXB0IHNlZ21lbnRzLgogIHR5cGVzZXQgLWcgUE9XRVJMRVZFTDlLX0xFRlRfUFJPTVBUX0VMRU1FTlRTPSgKICAgICMgPT09PT09PT09PT09PT09PT09PT09PT09PVsgTGluZSAjMSBdPT09PT09PT09PT09PT09PT09PT09PT09PQogICAgY29udGV4dCAgICAgICAgICAgICAgICAgICAjIHVzZXJAaG9zdAogICAgZGlyICAgICAgICAgICAgICAgICAgICAgICAjIGN1cnJlbnQgZGlyZWN0b3J5CiMgICAgdmNzICAgICAgICAgICAgICAgICAgICAgICAjIGdpdCBzdGF0dXMKICAgIGNvbW1hbmRfZXhlY3V0aW9uX3RpbWUgICAgIyBwcmV2aW91cyBjb21tYW5kIGR1cmF0aW9uCiAgICAjID09PT09PT09PT09PT09PT09PT09PT09PT1bIExpbmUgIzIgXT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgIAogICAgbmV3bGluZSAgICAgICAgICAgICAgICAgICAjIFxuCiAgICB2aXJ0dWFsZW52ICAgICAgICAgICAgICAgICMgcHl0aG9uIHZpcnR1YWwgZW52aXJvbm1lbnQKICAgIHByb21wdF9jaGFyICAgICAgICAgICAgICAgIyBwcm9tcHQgc3ltYm9sCiAgKQoKICAjIFJpZ2h0IHByb21wdCBzZWdtZW50cy4KICB0eXBlc2V0IC1nIFBPV0VSTEVWRUw5S19SSUdIVF9QUk9NUFRfRUxFTUVOVFM9KAogICAgIyA9PT09PT09PT09PT09PT09PT09PT09PT09WyBMaW5lICMxIF09PT09PT09PT09PT09PT09PT09PT09PT09CiAgICAjIGNvbW1hbmRfZXhlY3V0aW9uX3RpbWUgICMgcHJldmlvdXMgY29tbWFuZCBkdXJhdGlvbgogICAgIyB2aXJ0dWFsZW52ICAgICAgICAgICAgICAjIHB5dGhvbiB2aXJ0dWFsIGVudmlyb25tZW50CiAgICAjIGNvbnRleHQgICAgICAgICAgICAgICAgICMgdXNlckBob3N0CiAgICBwdWJsaWNfaXAKIyAgICB0aW1lICAgICAgICAgICAgICAgICAgICAgICMgY3VycmVudCB0aW1lCiAgICAjID09PT09PT09PT09PT09PT09PT09PT09PT1bIExpbmUgIzIgXT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgIG5ld2xpbmUgICAgICAgICAgICAgICAgICAgIyBcbgogICkKCiAgIyBCYXNpYyBzdHlsZSBvcHRpb25zIHRoYXQgZGVmaW5lIHRoZSBvdmVyYWxsIHByb21wdCBsb29rLgogIHR5cGVzZXQgLWcgUE9XRVJMRVZFTDlLX0JBQ0tHUk9VTkQ9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgdHJhbnNwYXJlbnQgYmFja2dyb3VuZAogIHR5cGVzZXQgLWcgUE9XRVJMRVZFTDlLX3tMRUZULFJJR0hUfV97TEVGVCxSSUdIVH1fV0hJVEVTUEFDRT0gICMgbm8gc3Vycm91bmRpbmcgd2hpdGVzcGFjZQogIHR5cGVzZXQgLWcgUE9XRVJMRVZFTDlLX3tMRUZULFJJR0hUfV9TVUJTRUdNRU5UX1NFUEFSQVRPUj0nICcgICMgc2VwYXJhdGUgc2VnbWVudHMgd2l0aCBhIHNwYWNlCiAgdHlwZXNldCAtZyBQT1dFUkxFVkVMOUtfe0xFRlQsUklHSFR9X1NFR01FTlRfU0VQQVJBVE9SPSAgICAgICAgIyBubyBlbmQtb2YtbGluZSBzeW1ib2wKICB0eXBlc2V0IC1nIFBPV0VSTEVWRUw5S19WSVNVQUxfSURFTlRJRklFUl9FWFBBTlNJT049ICAgICAgICAgICAjIG5vIHNlZ21lbnQgaWNvbnMKCiAgIyBBZGQgYW4gZW1wdHkgbGluZSBiZWZvcmUgZWFjaCBwcm9tcHQgZXhjZXB0IHRoZSBmaXJzdC4gVGhpcyBkb2Vzbid0IGVtdWxhdGUgdGhlIGJ1ZwogICMgaW4gUHVyZSB0aGF0IG1ha2VzIHByb21wdCBkcmlmdCBkb3duIHdoZW5ldmVyIHlvdSB1c2UgdGhlIEFsdC1DIGJpbmRpbmcgZnJvbSBmemYgb3Igc2ltaWxhci4KICB0eXBlc2V0IC1nIFBPV0VSTEVWRUw5S19QUk9NUFRfQUREX05FV0xJTkU9dHJ1ZQoKICAjIE1hZ2VudGEgcHJvbXB0IHN5bWJvbCBpZiB0aGUgbGFzdCBjb21tYW5kIHN1Y2NlZWRlZC4KICB0eXBlc2V0IC1nIFBPV0VSTEVWRUw5S19QUk9NUFRfQ0hBUl9PS197VklJTlMsVklDTUQsVklWSVN9X0ZPUkVHUk9VTkQ9JG1hZ2VudGEKICAjIFJlZCBwcm9tcHQgc3ltYm9sIGlmIHRoZSBsYXN0IGNvbW1hbmQgZmFpbGVkLgogIHR5cGVzZXQgLWcgUE9XRVJMRVZFTDlLX1BST01QVF9DSEFSX0VSUk9SX3tWSUlOUyxWSUNNRCxWSVZJU31fRk9SRUdST1VORD0kcmVkCiAgIyBEZWZhdWx0IHByb21wdCBzeW1ib2wuCiAgdHlwZXNldCAtZyBQT1dFUkxFVkVMOUtfUFJPTVBUX0NIQVJfe09LLEVSUk9SfV9WSUlOU19DT05URU5UX0VYUEFOU0lPTj0n4p2vJwogICMgUHJvbXB0IHN5bWJvbCBpbiBjb21tYW5kIHZpIG1vZGUuCiAgdHlwZXNldCAtZyBQT1dFUkxFVkVMOUtfUFJPTVBUX0NIQVJfe09LLEVSUk9SfV9WSUNNRF9DT05URU5UX0VYUEFOU0lPTj0n4p2uJwogICMgUHJvbXB0IHN5bWJvbCBpbiB2aXN1YWwgdmkgbW9kZSBpcyB0aGUgc2FtZSBhcyBpbiBjb21tYW5kIG1vZGUuCiAgdHlwZXNldCAtZyBQT1dFUkxFVkVMOUtfUFJPTVBUX0NIQVJfe09LLEVSUk9SfV9WSVZJU19DT05URU5UX0VYUEFOU0lPTj0n4p2uJwogICMgUHJvbXB0IHN5bWJvbCBpbiBvdmVyd3JpdGUgdmkgbW9kZSBpcyB0aGUgc2FtZSBhcyBpbiBjb21tYW5kIG1vZGUuCiAgdHlwZXNldCAtZyBQT1dFUkxFVkVMOUtfUFJPTVBUX0NIQVJfT1ZFUldSSVRFX1NUQVRFPWZhbHNlCgogICMgR3JleSBQeXRob24gVmlydHVhbCBFbnZpcm9ubWVudC4KICB0eXBlc2V0IC1nIFBPV0VSTEVWRUw5S19WSVJUVUFMRU5WX0ZPUkVHUk9VTkQ9JGdyZXkKICAjIERvbid0IHNob3cgUHl0aG9uIHZlcnNpb24uCiAgdHlwZXNldCAtZyBQT1dFUkxFVkVMOUtfVklSVFVBTEVOVl9TSE9XX1BZVEhPTl9WRVJTSU9OPWZhbHNlCiAgdHlwZXNldCAtZyBQT1dFUkxFVkVMOUtfVklSVFVBTEVOVl97TEVGVCxSSUdIVH1fREVMSU1JVEVSPQoKICAjIEJsdWUgY3VycmVudCBkaXJlY3RvcnkuCiAgdHlwZXNldCAtZyBQT1dFUkxFVkVMOUtfRElSX0ZPUkVHUk9VTkQ9JGJsdWUKCiAgIyBDb250ZXh0IGZvcm1hdCB3aGVuIHJvb3Q6IHVzZXJAaG9zdC4gVGhlIGZpcnN0IHBhcnQgd2hpdGUsIHRoZSByZXN0IGdyZXkuCiAgdHlwZXNldCAtZyBQT1dFUkxFVkVMOUtfQ09OVEVYVF9ST09UX1RFTVBMQVRFPSIlRnskd2hpdGV9JW4lZiVGeyRncmV5fUAlbSVmIgogICMgQ29udGV4dCBmb3JtYXQgd2hlbiBub3Qgcm9vdDogdXNlckBob3N0LiBUaGUgd2hvbGUgdGhpbmcgZ3JleS4KICB0eXBlc2V0IC1nIFBPV0VSTEVWRUw5S19DT05URVhUX1RFTVBMQVRFPSIlRnskZ3JleX0lbkAlbSVmIgogICMgRG9uJ3Qgc2hvdyBjb250ZXh0IHVubGVzcyByb290IG9yIGluIFNTSC4KICB0eXBlc2V0IC1nIFBPV0VSTEVWRUw5S19DT05URVhUX3tERUZBVUxULFNVRE99X0NPTlRFTlRfRVhQQU5TSU9OPQoKICAjIFNob3cgcHJldmlvdXMgY29tbWFuZCBkdXJhdGlvbiBvbmx5IGlmIGl0J3MgPj0gNXMuCiAgdHlwZXNldCAtZyBQT1dFUkxFVkVMOUtfQ09NTUFORF9FWEVDVVRJT05fVElNRV9USFJFU0hPTEQ9NQogICMgRG9uJ3Qgc2hvdyBmcmFjdGlvbmFsIHNlY29uZHMuIFRodXMsIDdzIHJhdGhlciB0aGFuIDcuM3MuCiAgdHlwZXNldCAtZyBQT1dFUkxFVkVMOUtfQ09NTUFORF9FWEVDVVRJT05fVElNRV9QUkVDSVNJT049MAogICMgRHVyYXRpb24gZm9ybWF0OiAxZCAyaCAzbSA0cy4KICB0eXBlc2V0IC1nIFBPV0VSTEVWRUw5S19DT01NQU5EX0VYRUNVVElPTl9USU1FX0ZPUk1BVD0nZCBoIG0gcycKICAjIFllbGxvdyBwcmV2aW91cyBjb21tYW5kIGR1cmF0aW9uLgogIHR5cGVzZXQgLWcgUE9XRVJMRVZFTDlLX0NPTU1BTkRfRVhFQ1VUSU9OX1RJTUVfRk9SRUdST1VORD0keWVsbG93CgogICMgR3JleSBHaXQgcHJvbXB0LiBUaGlzIG1ha2VzIHN0YWxlIHByb21wdHMgaW5kaXN0aW5ndWlzaGFibGUgZnJvbSB1cC10by1kYXRlIG9uZXMuCiAgdHlwZXNldCAtZyBQT1dFUkxFVkVMOUtfVkNTX0ZPUkVHUk9VTkQ9JGdyZXkKCiAgIyBEaXNhYmxlIGFzeW5jIGxvYWRpbmcgaW5kaWNhdG9yIHRvIG1ha2UgZGlyZWN0b3JpZXMgdGhhdCBhcmVuJ3QgR2l0IHJlcG9zaXRvcmllcwogICMgaW5kaXN0aW5ndWlzaGFibGUgZnJvbSBsYXJnZSBHaXQgcmVwb3NpdG9yaWVzIHdpdGhvdXQga25vd24gc3RhdGUuCiAgdHlwZXNldCAtZyBQT1dFUkxFVkVMOUtfVkNTX0xPQURJTkdfVEVYVD0KCiAgIyBEb24ndCB3YWl0IGZvciBHaXQgc3RhdHVzIGV2ZW4gZm9yIGEgbWlsbGlzZWNvbmQsIHNvIHRoYXQgcHJvbXB0IGFsd2F5cyB1cGRhdGVzCiAgIyBhc3luY2hyb25vdXNseSB3aGVuIEdpdCBzdGF0ZSBjaGFuZ2VzLgogIHR5cGVzZXQgLWcgUE9XRVJMRVZFTDlLX1ZDU19NQVhfU1lOQ19MQVRFTkNZX1NFQ09ORFM9MAoKICAjIEN5YW4gYWhlYWQvYmVoaW5kIGFycm93cy4KICB0eXBlc2V0IC1nIFBPV0VSTEVWRUw5S19WQ1Nfe0lOQ09NSU5HLE9VVEdPSU5HfV9DSEFOR0VTRk9STUFUX0ZPUkVHUk9VTkQ9JGN5YW4KICAjIERvbid0IHNob3cgcmVtb3RlIGJyYW5jaCwgY3VycmVudCB0YWcgb3Igc3Rhc2hlcy4KICB0eXBlc2V0IC1nIFBPV0VSTEVWRUw5S19WQ1NfR0lUX0hPT0tTPSh2Y3MtZGV0ZWN0LWNoYW5nZXMgZ2l0LXVudHJhY2tlZCBnaXQtYWhlYWRiZWhpbmQpCiAgIyBEb24ndCBzaG93IHRoZSBicmFuY2ggaWNvbi4KICB0eXBlc2V0IC1nIFBPV0VSTEVWRUw5S19WQ1NfQlJBTkNIX0lDT049CiAgIyBXaGVuIGluIGRldGFjaGVkIEhFQUQgc3RhdGUsIHNob3cgQGNvbW1pdCB3aGVyZSBicmFuY2ggbm9ybWFsbHkgZ29lcy4KICB0eXBlc2V0IC1nIFBPV0VSTEVWRUw5S19WQ1NfQ09NTUlUX0lDT049J0AnCiAgIyBEb24ndCBzaG93IHN0YWdlZCwgdW5zdGFnZWQsIHVudHJhY2tlZCBpbmRpY2F0b3JzLgogIHR5cGVzZXQgLWcgUE9XRVJMRVZFTDlLX1ZDU197U1RBR0VELFVOU1RBR0VELFVOVFJBQ0tFRH1fSUNPTj0KICAjIFNob3cgJyonIHdoZW4gdGhlcmUgYXJlIHN0YWdlZCwgdW5zdGFnZWQgb3IgdW50cmFja2VkIGZpbGVzLgogIHR5cGVzZXQgLWcgUE9XRVJMRVZFTDlLX1ZDU19ESVJUWV9JQ09OPScqJwogICMgU2hvdyAn4oejJyBpZiBsb2NhbCBicmFuY2ggaXMgYmVoaW5kIHJlbW90ZS4KICB0eXBlc2V0IC1nIFBPV0VSTEVWRUw5S19WQ1NfSU5DT01JTkdfQ0hBTkdFU19JQ09OPSc64oejJwogICMgU2hvdyAn4oehJyBpZiBsb2NhbCBicmFuY2ggaXMgYWhlYWQgb2YgcmVtb3RlLgogIHR5cGVzZXQgLWcgUE9XRVJMRVZFTDlLX1ZDU19PVVRHT0lOR19DSEFOR0VTX0lDT049Jzrih6EnCiAgIyBEb24ndCBzaG93IHRoZSBudW1iZXIgb2YgY29tbWl0cyBuZXh0IHRvIHRoZSBhaGVhZC9iZWhpbmQgYXJyb3dzLgogIHR5cGVzZXQgLWcgUE9XRVJMRVZFTDlLX1ZDU197Q09NTUlUU19BSEVBRCxDT01NSVRTX0JFSElORH1fTUFYX05VTT0xCiAgIyBSZW1vdmUgc3BhY2UgYmV0d2VlbiAn4oejJyBhbmQgJ+KHoScgYW5kIGFsbCB0cmFpbGluZyBzcGFjZXMuCiAgdHlwZXNldCAtZyBQT1dFUkxFVkVMOUtfVkNTX0NPTlRFTlRfRVhQQU5TSU9OPSckeyR7JHtQOUtfQ09OVEVOVC/ih6MqIDrih6Ev4oej4oehfS8vIH0vLzovIH0nCgogICMgR3JleSBjdXJyZW50IHRpbWUuCiAgdHlwZXNldCAtZyBQT1dFUkxFVkVMOUtfVElNRV9GT1JFR1JPVU5EPSRncmV5CiAgIyBGb3JtYXQgZm9yIHRoZSBjdXJyZW50IHRpbWU6IDA5OjUxOjAyLiBTZWUgYG1hbiAzIHN0cmZ0aW1lYC4KICB0eXBlc2V0IC1nIFBPV0VSTEVWRUw5S19USU1FX0ZPUk1BVD0nJUR7JUg6JU06JVN9JwogICMgSWYgc2V0IHRvIHRydWUsIHRpbWUgd2lsbCB1cGRhdGUgd2hlbiB5b3UgaGl0IGVudGVyLiBUaGlzIHdheSBwcm9tcHRzIGZvciB0aGUgcGFzdAogICMgY29tbWFuZHMgd2lsbCBjb250YWluIHRoZSBzdGFydCB0aW1lcyBvZiB0aGVpciBjb21tYW5kcyByYXRoZXIgdGhhbiB0aGUgZW5kIHRpbWVzIG9mCiAgIyB0aGVpciBwcmVjZWRpbmcgY29tbWFuZHMuCiAgdHlwZXNldCAtZyBQT1dFUkxFVkVMOUtfVElNRV9VUERBVEVfT05fQ09NTUFORD1mYWxzZQoKICAjIFRyYW5zaWVudCBwcm9tcHQgd29ya3Mgc2ltaWxhcmx5IHRvIHRoZSBidWlsdGluIHRyYW5zaWVudF9ycHJvbXB0IG9wdGlvbi4gSXQgdHJpbXMgZG93biBwcm9tcHQKICAjIHdoZW4gYWNjZXB0aW5nIGEgY29tbWFuZCBsaW5lLiBTdXBwb3J0ZWQgdmFsdWVzOgogICMKICAjICAgLSBvZmY6ICAgICAgRG9uJ3QgY2hhbmdlIHByb21wdCB3aGVuIGFjY2VwdGluZyBhIGNvbW1hbmQgbGluZS4KICAjICAgLSBhbHdheXM6ICAgVHJpbSBkb3duIHByb21wdCB3aGVuIGFjY2VwdGluZyBhIGNvbW1hbmQgbGluZS4KICAjICAgLSBzYW1lLWRpcjogVHJpbSBkb3duIHByb21wdCB3aGVuIGFjY2VwdGluZyBhIGNvbW1hbmQgbGluZSB1bmxlc3MgdGhpcyBpcyB0aGUgZmlyc3QgY29tbWFuZAogICMgICAgICAgICAgICAgICB0eXBlZCBhZnRlciBjaGFuZ2luZyBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5LgogIHR5cGVzZXQgLWcgUE9XRVJMRVZFTDlLX1RSQU5TSUVOVF9QUk9NUFQ9b2ZmCgogICMgSW5zdGFudCBwcm9tcHQgbW9kZS4KICAjCiAgIyAgIC0gb2ZmOiAgICAgRGlzYWJsZSBpbnN0YW50IHByb21wdC4gQ2hvb3NlIHRoaXMgaWYgeW91J3ZlIHRyaWVkIGluc3RhbnQgcHJvbXB0IGFuZCBmb3VuZAogICMgICAgICAgICAgICAgIGl0IGluY29tcGF0aWJsZSB3aXRoIHlvdXIgenNoIGNvbmZpZ3VyYXRpb24gZmlsZXMuCiAgIyAgIC0gcXVpZXQ6ICAgRW5hYmxlIGluc3RhbnQgcHJvbXB0IGFuZCBkb24ndCBwcmludCB3YXJuaW5ncyB3aGVuIGRldGVjdGluZyBjb25zb2xlIG91dHB1dAogICMgICAgICAgICAgICAgIGR1cmluZyB6c2ggaW5pdGlhbGl6YXRpb24uIENob29zZSB0aGlzIGlmIHlvdSd2ZSByZWFkIGFuZCB1bmRlcnN0b29kCiAgIyAgICAgICAgICAgICAgaHR0cHM6Ly9naXRodWIuY29tL3JvbWthdHYvcG93ZXJsZXZlbDEway9ibG9iL21hc3Rlci9SRUFETUUubWQjaW5zdGFudC1wcm9tcHQuCiAgIyAgIC0gdmVyYm9zZTogRW5hYmxlIGluc3RhbnQgcHJvbXB0IGFuZCBwcmludCBhIHdhcm5pbmcgd2hlbiBkZXRlY3RpbmcgY29uc29sZSBvdXRwdXQgZHVyaW5nCiAgIyAgICAgICAgICAgICAgenNoIGluaXRpYWxpemF0aW9uLiBDaG9vc2UgdGhpcyBpZiB5b3UndmUgbmV2ZXIgdHJpZWQgaW5zdGFudCBwcm9tcHQsIGhhdmVuJ3QKICAjICAgICAgICAgICAgICBzZWVuIHRoZSB3YXJuaW5nLCBvciBpZiB5b3UgYXJlIHVuc3VyZSB3aGF0IHRoaXMgYWxsIG1lYW5zLgogIHR5cGVzZXQgLWcgUE9XRVJMRVZFTDlLX0lOU1RBTlRfUFJPTVBUPW9mZgoKICAjIEhvdCByZWxvYWQgYWxsb3dzIHlvdSB0byBjaGFuZ2UgUE9XRVJMRVZFTDlLIG9wdGlvbnMgYWZ0ZXIgUG93ZXJsZXZlbDEwayBoYXMgYmVlbiBpbml0aWFsaXplZC4KICAjIEZvciBleGFtcGxlLCB5b3UgY2FuIHR5cGUgUE9XRVJMRVZFTDlLX0JBQ0tHUk9VTkQ9cmVkIGFuZCBzZWUgeW91ciBwcm9tcHQgdHVybiByZWQuIEhvdCByZWxvYWQKICAjIGNhbiBzbG93IGRvd24gcHJvbXB0IGJ5IDEtMiBtaWxsaXNlY29uZHMsIHNvIGl0J3MgYmV0dGVyIHRvIGtlZXAgaXQgdHVybmVkIG9mZiB1bmxlc3MgeW91CiAgIyByZWFsbHkgbmVlZCBpdC4KICB0eXBlc2V0IC1nIFBPV0VSTEVWRUw5S19ESVNBQkxFX0hPVF9SRUxPQUQ9dHJ1ZQoKICAjIElmIHAxMGsgaXMgYWxyZWFkeSBsb2FkZWQsIHJlbG9hZCBjb25maWd1cmF0aW9uLgogICMgVGhpcyB3b3JrcyBldmVuIHdpdGggUE9XRVJMRVZFTDlLX0RJU0FCTEVfSE9UX1JFTE9BRD10cnVlLgogICgoICEgJCtmdW5jdGlvbnNbcDEwa10gKSkgfHwgcDEwayByZWxvYWQKfQoKIyBUZWxsIGBwMTBrIGNvbmZpZ3VyZWAgd2hpY2ggZmlsZSBpdCBzaG91bGQgb3ZlcndyaXRlLgp0eXBlc2V0IC1nIFBPV0VSTEVWRUw5S19DT05GSUdfRklMRT0keyR7KCUpOi0leH06YX0KCigoICR7I3AxMGtfY29uZmlnX29wdHN9ICkpICYmIHNldG9wdCAke3AxMGtfY29uZmlnX29wdHNbQF19CididWlsdGluJyAndW5zZXQnICdwMTBrX2NvbmZpZ19vcHRzJwo=" | base64 -d -w 0 > /root/.p10k.zsh
echo "CiAgICAgICAgICAgICAgICAgICAgIBtbMzg7NTsyMzVt4paEG1szODs1OzU5beKWhBtbMzg7NTsyNDht4paEG1s0ODs1OzIzNTszODs1OzI1MW3iloQbWzQ4OzU7MjM1OzM4OzU7MjUybeKWhBtbNDg7NTsyMzg7Mzg7NTsyNTNt4paEG1s0ODs1OzI0MzszODs1OzI1NG3iloQbWzQ4OzU7MjQ2OzM4OzU7MjU0beKWhBtbNDg7NTsyNDc7Mzg7NTsyNTRt4paEG1s0ODs1OzI0NzszODs1OzI1NG3iloQbWzQ4OzU7MjQ3beKWhBtbNDg7NTsyNDc7Mzg7NTsyNTRt4paEG1s0ODs1OzI0NjszODs1OzI1NG3iloQbWzQ4OzU7MjQyOzM4OzU7MjUzbeKWhBtbNDg7NTsyMzg7Mzg7NTsxODht4paEG1s0ODs1OzIzNTszODs1OzI1MW3iloQbWzQ4OzU7MjM1OzM4OzU7MjQ5beKWhBtbNDk7Mzg7NTsyNDZt4paEG1szODs1OzI0MG3iloQbWzM4OzU7MjM1beKWhBtbMzltICAgICAgICAgICAgICAgICAgG1swMG0KICAgICAgICAgICAgICAgICAbWzM4OzU7MjM1beKWhBtbNDg7NTsyMzU7Mzg7NTsyNDht4paEG1s0ODs1OzIzNjszODs1OzE4OG3iloQbWzQ4OzU7MjQ3OzM4OzU7MjU0beKWhBtbNDg7NTsyNTE7Mzg7NTsyNTRt4paEG1s0ODs1OzI1MzszODs1OzI1NW3iloQbWzQ4OzU7MjU0OzM4OzU7MjU1beKWhBtbNDg7NTsyNTQ7Mzg7NTsyNTVt4paEG1s0ODs1OzI1NW3iloQbWzQ4OzU7MjU1OzM4OzU7MjU1beKWhBtbNDg7NTsyNTVt4paE4paEG1s0ODs1OzI1NW3iloTiloTiloTiloQbWzQ4OzU7MjU1beKWhOKWhBtbNDg7NTsyNTVt4paEG1s0ODs1OzI1NTszODs1OzI1NW3iloQbWzQ4OzU7MjU0beKWhBtbNDg7NTsyNTQ7Mzg7NTsyNTVt4paEG1s0ODs1OzI1MjszODs1OzI1NW3iloQbWzQ4OzU7MjUwOzM4OzU7MjU0beKWhBtbNDg7NTsyNDU7Mzg7NTsyNTNt4paEG1s0ODs1OzIzNTszODs1OzI1MW3iloQbWzQ4OzU7MjM1OzM4OzU7MjQ2beKWhBtbNDk7Mzg7NTsyMzVt4paEG1szOW0gICAgICAgICAgICAgIBtbMDBtCiAgICAgICAgICAgICAgG1szODs1OzIzNW3iloQbWzQ4OzU7MjM1OzM4OzU7MjUwbeKWhBtbNDg7NTsyNDY7Mzg7NTsyNTRt4paEG1s0ODs1OzI1MjszODs1OzI1NW3iloQbWzQ4OzU7MjU0OzM4OzU7MjU1beKWhBtbNDg7NTsyNTU7Mzg7NTsyNTVt4paEG1s0ODs1OzI1NTszODs1OzI1NW3iloQbWzQ4OzU7MjU1beKWhBtbNDg7NTsyNTVt4paI4paI4paI4paI4paI4paI4paI4paI4paI4paI4paI4paI4paI4paI4paI4paI4paI4paIG1s0ODs1OzI1NW3iloQbWzQ4OzU7MjU1beKWhBtbNDg7NTsyNTQ7Mzg7NTsyNTVt4paEG1s0ODs1OzI1MzszODs1OzI1NW3iloQbWzQ4OzU7MjUwOzM4OzU7MjU0beKWhBtbNDg7NTsyNDQ7Mzg7NTsyNTJt4paEG1s0ODs1OzIzNTszODs1OzI0OG3iloQbWzQ5OzM4OzU7MjM2beKWhBtbMzltICAgICAgICAgICAbWzAwbQogICAgICAgICAgIBtbMzg7NTsyMzVt4paEG1szODs1OzEwMm3iloQbWzQ4OzU7MjQyOzM4OzU7MjUzbeKWhBtbNDg7NTsyNTI7Mzg7NTsyNTVt4paEG1s0ODs1OzI1NDszODs1OzI1NW3iloQbWzQ4OzU7MjU1OzM4OzU7MjU1beKWhBtbNDg7NTsyNTVt4paEG1s0ODs1OzI1NW3ilojilojilojilojilojilojilojilojilojilojilojilojilojilojilojilojilojilojilojilojilojilojilojilojilojilogbWzQ4OzU7MjU1beKWhBtbNDg7NTsyNTQ7Mzg7NTsyNTVt4paEG1s0ODs1OzI1MzszODs1OzI1NW3iloQbWzQ4OzU7MjUwOzM4OzU7MjU0beKWhBtbNDg7NTs1OTszODs1OzI1MG3iloQbWzQ5OzM4OzU7MjQybeKWhBtbMzg7NTsyMzVt4paEG1szOW0gICAgICAgIBtbMDBtCiAgICAgICAgICAbWzQ4OzU7MjM1OzM4OzU7MTAybeKWhBtbNDg7NTsyNDU7Mzg7NTsyNTNt4paEG1s0ODs1OzI1MzszODs1OzI1NW3iloQbWzQ4OzU7MjU1OzM4OzU7MjU1beKWhBtbNDg7NTsyNTU7Mzg7NTsyNTVt4paEG1s0ODs1OzI1NW3ilojilojilojilojilojilojilojilojilojilojilojilojilojilojilojilojilojilojilojilojilojilojilojilojilojilojilojilojilojilojilojilogbWzQ4OzU7MjU1beKWhBtbNDg7NTsyNTQ7Mzg7NTsyNTVt4paEG1s0ODs1OzI1MTszODs1OzI1NG3iloQbWzQ4OzU7MjQzOzM4OzU7MjUxbeKWhBtbNDk7Mzg7NTsyNDJt4paEG1szOW0gICAgICAgG1swMG0KICAgICAgICAbWzM4OzU7MjM1beKWhBtbNDg7NTsyMzk7Mzg7NTsyNTJt4paEG1s0ODs1OzI1MzszODs1OzI1NW3iloQbWzQ4OzU7MjU1OzM4OzU7MjU1beKWhBtbNDg7NTsyNTU7Mzg7NTsyNTVt4paEG1s0ODs1OzI1NW3ilojilojilojilojilogbWzM4OzU7MjU1beKWhOKWhOKWhBtbMzg7NTsyNTVt4paI4paI4paI4paI4paI4paI4paI4paI4paI4paI4paI4paI4paI4paI4paI4paI4paI4paI4paI4paI4paIG1szODs1OzI1NW3iloQbWzM4OzU7MjU1beKWiOKWiOKWiOKWiOKWiOKWiBtbNDg7NTsyNTVt4paEG1s0ODs1OzI1NDszODs1OzI1NW3iloQbWzQ4OzU7MjUwOzM4OzU7MjUzbeKWhBtbNDg7NTsyMzg7Mzg7NTsyNDht4paEG1s0OTszODs1OzIzNW3iloQbWzM5bSAgICAgG1swMG0KICAgICAgIBtbNDg7NTsyMzU7Mzg7NTsyNDJt4paEG1s0ODs1OzI0OTszODs1OzI1NG3iloQbWzQ4OzU7MjU0OzM4OzU7MjU1beKWhBtbNDg7NTsyNTU7Mzg7NTsyNTVt4paEG1s0ODs1OzI1NTszODs1OzI1NW3ilojilogbWzM4OzU7MjU1beKWhBtbMzg7NTsyNTFt4paEG1s0ODs1OzI1NDszODs1OzU5beKW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OzU7MjMzOzM4OzU7MjMzbeKWhBtbNDg7NTsyMzM7Mzg7NTsyMzRt4paEG1s0ODs1OzIzNDszODs1OzIzNG3iloQbWzQ4OzU7MjM0OzM4OzU7MjM0beKWhBtbNDg7NTsyMzQ7Mzg7NTsyMzRt4paEG1szODs1OzIzNW3iloQbWzM4OzU7MjM0beKWhBtbNDg7NTsyMzQ7Mzg7NTsyMzRt4paEG1s0ODs1OzIzNDszODs1OzIzNG3iloQbWzQ4OzU7MjMzOzM4OzU7MjM0beKWhBtbNDg7NTsyNDY7Mzg7NTsyNDRt4paEG1s0ODs1OzI1NTszODs1OzI1NW3ilogbWzQ4OzU7MjU1OzM4OzU7MjU1beKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiBtbNDg7NTsyNTU7Mzg7NTsyNTVt4paIG1s0ODs1OzI0NjszODs1OzI0NG3iloQbWzQ4OzU7MjMzOzM4OzU7MjM0beKWhBtbNDg7NTsyMzQ7Mzg7NTsyMzRt4paEG1s0ODs1OzIzNDszODs1OzIzNG3iloQbWzQ4OzU7MjM0OzM4OzU7MjM0beKWhBtbNDg7NTsyMzQ7Mzg7NTsyMzVt4paEG1szODs1OzIzNG3iloQbWzQ4OzU7MjM0OzM4OzU7MjM0beKWhBtbNDg7NTsyMzQ7Mzg7NTsyMzRt4paEG1s0ODs1OzIzMzszODs1OzIzNG3iloQbWzQ4OzU7MjMzOzM4OzU7MjMzbeKWhBtbNDg7NTsyMzM7Mzg7NTsyMzNt4paEG1s0ODs1OzIzNjszODs1OzIzNG3iloQbWzQ4OzU7MjM4OzM4OzU7MjM5beKWhOKWhBtbNDg7NTsyNTI7Mzg7NTsyNDht4paEG1s0ODs1OzI1NTszODs1OzI1NW3ilojilogbWzQ4OzU7MjU1OzM4OzU7MjU1beKWhBtbNDg7NTsyNTM7Mzg7NTsyNTRt4paEG1s0ODs1OzI0NjszODs1OzI0OW3iloQbWzQ5OzM4OzU7MjM1beKWhBtbMzltIBtbMDBtCiAgICAbWzQ4OzU7MjQ1OzM4OzU7MjUwbeKWhBtbNDg7NTsyNTQ7Mzg7NTsyNTVt4paEG1s0ODs1OzI1NTszODs1OzI1NW3iloQbWzQ4OzU7MjU1OzM4OzU7MjU1beKWiBtbMzg7NTsyNTVt4paEG1s0ODs1OzI1NTszODs1OzI1NW3ilogbWzQ4OzU7MjQ1OzM4OzU7MjQzbeKWhBtbNDg7NTsyMzk7Mzg7NTsyNDBt4paEG1s0ODs1OzIzOTszODs1OzIzOW3iloQbWzQ4OzU7MjMzOzM4OzU7MjMzbeKWhBtbNDg7NTsyMzM7Mzg7NTsyMzNt4paEG1s0ODs1OzIzMzszODs1OzIzM23ilogbWzQ4OzU7MjM0OzM4OzU7MjM0beKWiBtbNDg7NTsyMzQ7Mzg7NTsyMzRt4paIG1s0ODs1OzIzNDszODs1OzIzNG3iloQbWzQ4OzU7MjM1OzM4OzU7MjM0beKWhBtbNDg7NTsyMzU7Mzg7NTsyMzVt4paEG1s0ODs1OzIzNTszODs1OzIzNG3iloQbWzQ4OzU7MjM0OzM4OzU7MjM0beKWhBtbNDg7NTsyMzQ7Mzg7NTsyMzRt4paEG1s0ODs1OzIzNDszODs1OzIzNG3iloQbWzQ4OzU7MjQ2OzM4OzU7MjQ4beKWhBtbNDg7NTsyNTU7Mzg7NTsyNTVt4paEG1s0ODs1OzI1NW3ilojilojilojilojilojilojilojilojilogbWzQ4OzU7MjQ2OzM4OzU7MjQ4beKWhBtbNDg7NTsyMzQ7Mzg7NTsyMzRt4paEG1s0ODs1OzIzNDszODs1OzIzNG3ilogbWzQ4OzU7MjM0OzM4OzU7MjM0beKWhBtbNDg7NTsyMzU7Mzg7NTsyMzVt4paIG1s0ODs1OzIzNTszODs1OzIzNW3ilogbWzQ4OzU7MjM1OzM4OzU7MjM1beKWiBtbNDg7NTsyMzQ7Mzg7NTsyMzRt4paEG1s0ODs1OzIzNDszODs1OzIzNG3ilogbWzQ4OzU7MjM0OzM4OzU7MjM0beKWhBtbNDg7NTsyMzM7Mzg7NTsyMzNt4paEG1s0ODs1OzIzMzszODs1OzIzM23ilogbWzQ4OzU7MjMzOzM4OzU7MjMzbeKWhBtbNDg7NTsyMzk7Mzg7NTsyMzlt4paEG1s0ODs1OzIzOTszODs1OzI0MG3iloQbWzQ4OzU7MjQ1OzM4OzU7MjQzbeKWhBtbNDg7NTsyNTU7Mzg7NTsyNTVt4paIG1s0ODs1OzI1NTszODs1OzI1NW3ilogbWzQ4OzU7MjU1OzM4OzU7MjU1beKWhBtbNDg7NTsyNTQ7Mzg7NTsy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G1s0ODs1OzI1NTszODs1OzI1NW3ilogbWzQ4OzU7MjU1OzM4OzU7MjU1beKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiBtbNDg7NTsyNTU7Mzg7NTsyNTVt4paIG1s0ODs1OzI1NDszODs1OzI1NG3ilogbWzQ4OzU7MjUxOzM4OzU7MjUxbeKWiBtbNDg7NTsyMzU7Mzg7NTsyMzVt4paIG1s0OTszOW0bWzAwbQogICAbWzQ4OzU7MjM1OzM4OzU7MjM1beKWhBtbNDg7NTsyNTQ7Mzg7NTsyNTRt4paEG1s0ODs1OzI1NTszODs1OzI1NW3ilogbWzQ4OzU7MjU1OzM4OzU7MjU1beKWiBtbNDg7NTsyNTU7Mzg7NTsyNTVt4paI4paI4paI4paI4paI4paI4paI4paI4paI4paI4paI4paI4paI4paI4paI4paI4paI4paI4paI4paI4paI4paI4paI4paI4paI4paI4paI4paI4paI4paI4paI4paI4paI4paI4paI4paI4paI4paI4paI4paI4paI4paI4paI4paI4paI4paI4paI4paIG1s0ODs1OzI1NTszODs1OzI1NW3ilogbWzQ4OzU7MjU0OzM4OzU7MjU0beKWiBtbNDg7NTsyNTE7Mzg7NTsyNTFt4paIG1s0ODs1OzIzNTszODs1OzIzNW3ilogbWzQ5OzM5bRtbMDBtCiAgIBtbNDg7NTsyMzU7Mzg7NTsyMzVt4paEG1s0ODs1OzI1NDszODs1OzI1M23iloQbWzQ4OzU7MjU1OzM4OzU7MjU1beKWhBtbNDg7NTsyNTU7Mzg7NTsyNTVt4paIG1s0ODs1OzI1NTszODs1OzI1NW3ilojilojilojilojilojilojilojilojilojilojilojilojilojilojilojilojilojilojilojilojilojilojilojilojilojilojilojilojilojilojilojilojilojilojilojilojilojilojilojilojilojilojilojilojilojilojilojilogbWzQ4OzU7MjU1OzM4OzU7MjU1beKWiBtbNDg7NTsyNTQ7Mzg7NTsyNTRt4paIG1s0ODs1OzI1MTszODs1OzI1MW3ilogbWzQ4OzU7MjM1OzM4OzU7MjM1beKWiBtbNDk7MzltG1swMG0KICAgG1s0ODs1OzIzNTszODs1OzIzNW3iloQbWzQ4OzU7MjUzOzM4OzU7MjUzbeKWiBtbNDg7NTsyNTU7Mzg7NTsyNTVt4paIG1s0ODs1OzI1NTszODs1OzI1NW3ilogbWzQ4OzU7MjU1OzM4OzU7MjU1beKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiBtbNDg7NTsyNTU7Mzg7NTsyNTVt4paIG1s0ODs1OzI1NDszODs1OzI1NG3ilogbWzQ4OzU7MjUxOzM4OzU7MjUxbeKWiBtbNDg7NTsyMzU7Mzg7NTsyMzVt4paIG1s0OTszOW0bWzAwbQogICAbWzQ4OzU7MjM1OzM4OzU7MjM1beKWiBtbNDg7NTsyNTM7Mzg7NTsyNTNt4paIG1s0ODs1OzI1NTszODs1OzI1NW3ilogbWzQ4OzU7MjU1OzM4OzU7MjU1beKWiBtbNDg7NTsyNTU7Mzg7NTsyNTVt4paI4paI4paI4paI4paI4paI4paI4paI4paI4paI4paI4paI4paI4paI4paI4paI4paI4paI4paI4paI4paI4paI4paI4paI4paI4paI4paI4paI4paI4paI4paI4paI4paI4paI4paI4paI4paI4paI4paI4paI4paI4paI4paI4paI4paI4paI4paI4paIG1s0ODs1OzI1NTszODs1OzI1NW3ilogbWzQ4OzU7MjU0OzM4OzU7MjU0beKWiBtbNDg7NTsyNTE7Mzg7NTsyNTFt4paIG1s0ODs1OzIzNTszODs1OzIzNW3ilogbWzQ5OzM5bRtbMDBtCiAgIBtbNDg7NTsyMzU7Mzg7NTsyMzVt4paIG1s0ODs1OzI1MzszODs1OzI1M23iloQbWzQ4OzU7MjU1OzM4OzU7MjU1beKWhBtbNDg7NTsyNTU7Mzg7NTsyNTVt4paIG1s0ODs1OzI1NTszODs1OzI1NW3ilojilojilojilojilojilojilojilojilojilojilojilojilojilojilojilojilojilojilojilojilojilojilojilojilojilojilojilojilojilojilojilojilojilojilojilojilojilojilojilojilojilojilojilojilojilojilojilogbWzQ4OzU7MjU1OzM4OzU7MjU1beKWiBtbNDg7NTsyNTQ7Mzg7NTsyNTRt4paIG1s0ODs1OzI1MTszODs1OzI1MW3ilogbWzQ4OzU7MjM1OzM4OzU7MjM1beKWiBtbNDk7MzltG1swMG0KICAgG1s0ODs1OzIzNTszODs1OzIzNW3iloQbWzQ4OzU7MTg4OzM4OzU7MjUybeKWhBtbNDg7NTsyNTU7Mzg7NTsyNTRt4paEG1s0ODs1OzI1NTszODs1OzI1NW3iloQbWzQ4OzU7MjU1OzM4OzU7MjU1beKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiBtbNDg7NTsyNTU7Mzg7NTsyNTVt4paIG1s0ODs1OzI1NDszODs1OzI1NG3iloQbWzQ4OzU7MjUxOzM4OzU7MjUxbeKWhBtbNDg7NTsyMzU7Mzg7NTsyMzVt4paEG1s0OTszOW0bWzAwbQogICAgG1s0ODs1OzI0ODszODs1OzIzNG3iloQbWzQ4OzU7MjU0OzM4OzU7MjU0beKWhBtbNDg7NTsyNTU7Mzg7NTsyNTVt4paEG1s0ODs1OzI1NTszODs1OzI1NW3iloQbWzM4OzU7MjU1beKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKW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" | base64 -d -w 0 > /usr/share/logo

#//// твики ядра и настроек стека. кто не понял - тот не поймет (с)

#//// wintcp ////
cat<<'EOF'>/usr/local/bin/wininit
echo 1 > /sys/kernel/mm/ksm/run
echo 10 > /proc/sys/vm/swappiness
echo 50 > /proc/sys/vm/vfs_cache_pressure
echo 1000000 > /proc/sys/fs/file-max
echo 3240000 > /proc/sys/net/ipv4/tcp_max_syn_backlog
echo 3240000 > /proc/sys/net/core/somaxconn
echo 0 > /proc/sys/net/ipv4/tcp_timestamps
echo 0 > /proc/sys/net/ipv4/tcp_window_scaling
echo 128 > /proc/sys/net/ipv4/ip_default_ttl
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
echo 1 > /proc/sys/net/ipv4/conf/all/proxy_arp
echo 1 > /proc/sys/net/ipv4/conf/all/rp_filter
echo 2048 > /proc/sys/net/ipv4/tcp_max_syn_backlog
echo 16384 > /proc/sys/net/ipv4/udp_rmem_min
echo 16384 > /proc/sys/net/ipv4/udp_wmem_min
echo 40960 > /proc/sys/net/core/optmem_max
echo 16777216 > /proc/sys/net/core/rmem_default
echo 16777216 > /proc/sys/net/core/rmem_max
echo 5000 > /proc/sys/net/core/somaxconn
echo 16777216 > /proc/sys/net/core/wmem_default
echo 16777216 > /proc/sys/net/core/wmem_max
echo bbr > /proc/sys/net/ipv4/tcp_congestion_control
echo 10 > /proc/sys/net/ipv4/tcp_fin_timeout
echo 15 > /proc/sys/net/ipv4/tcp_keepalive_intvl
echo 5 > /proc/sys/net/ipv4/tcp_keepalive_probes
echo 60 > /proc/sys/net/ipv4/tcp_keepalive_time
echo 3000 > /proc/sys/net/ipv4/tcp_max_syn_backlog
echo 40960 > /proc/sys/net/ipv4/tcp_max_tw_buckets
echo 4096 87380 16777216 > /proc/sys/net/ipv4/tcp_rmem
echo 0 > /proc/sys/net/ipv4/tcp_slow_start_after_idle
echo 1 > /proc/sys/net/ipv4/tcp_tw_reuse
echo 4096 65536 16777216 > /proc/sys/net/ipv4/tcp_wmem
EOF
chmod +x /usr/local/bin/wininit

cat<<'EOF'>/etc/init.d/wintcp
#!/bin/bash
### BEGIN INIT INFO
# Provides: scriptname
# Required-Start: $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start daemon at boot time
# Description: Enable service provided by daemon.
### END INIT INFO
sudo /usr/local/bin/wininit
EOF
chmod +x /etc/init.d/wintcp ; /etc/init.d/wintcp start ; systemctl enable wintcp ; systemctl start wintcp

#ребутим
cd /root ; rm -r ls-- rip* ; apt-get -y autoremove ; apt-get autoclean ; sudo -u root reboot
CLOACKEr
chmod +x init.sh

Думаю самые внимательные уже оценили логику скриптов баш и догадались что нужно сделать)))) Подедем итог:
1) При создании или "реверта" впски (я юзаю опенстак, дело 3 минут) заходим в веб-консоль и вставляем результат работы скрипта
2) можете отдыхать, 15 минут, и вы получаете
0x01) ССЛ сертификаты LetsEncrypt конечно же первым делом))
а) блокировку по айпи ВСЕХ известных песочниц
б) парсинг ЮА, Заголовков, других узнаваемых сигнатур и занос в блок. Посредством IPTABLES, это значит, что мы не только заблокировали на уровне реверсивного прокси, но и вообще перекрыли кислород, т.е запретили любле взаимедойствия с любым портом нашего сервера
в) гугладвордс и другие "белые" боты допущены и получают необходимоеь (ведь это и был смысл настройки подобной штуки, в противном случае и они лишаются привелегии узреть Ваш Чудесный Ресурс всего парой росчерков '###' <- пера =)))
г) естественно настройка Вашей ВПС с нуля до уровня "лучше-не-бывает". Оке) мб и бывает, я не спорю. Но для меня - это был оптимальный вариант. Если есть конструктивные добавки - буду рад услышать их где-бы-то-ни-было)
д) еще по-мелочи, как говорит неплохой парень "кто не понял - тот поймет" ;-)


Happy Hacking... Ну или чем Вы там заняты)

ЗЫ::: ОКЕ! юзать так: [B] cd /tmp/CLOACKa ; chmod +x *.sh ; ./pack.sh ВАШ_ДОМЕН [/B]
 
Последнее редактирование:


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх