Kodi ubongo wa wophunzira akuphunzira chiyani za dziko la makompyuta?

Nthawi yabwino ya tsiku.

Nditamaliza kulemba script ina ku Bash, ndinazindikira kuti zonse ziyenera kukhala zosiyana, koma zonse zinayenda. Ndikufuna kukuwonetsani zonyansa ndi ndodo zomwe ndidalemba kuti ndithetse vutoli, koma osakhala ndi ngolo yachidziwitso. M'mawu ena, caricature ya mapulogalamu.

Cholinga


Chinachake chinakhala chofunikira kuti:

  • Amawonetsa nyimbo zambiri zamawu, kupatula mabwalo
  • Kuphatikizika kwa mitundu yambiri ya mawu

Zachiyani? Chabwino, ndi zimenezo - ndipo ndi zimenezo.
Ndani sadziwa, rhyme ya square (m'mawu ofala - lalikulu) ndi mawu awiri omwe zilembo ziwiri zomaliza mu kalembedwe zimagwirizana, zomwe (nthawi zambiri, izi ndizo zokha) zimawapangitsa kukhala nyimbo. Mwachitsanzo, maluwa a duwa amakhala achisanu; galimoto - galimoto. Kugwiritsa ntchito mabwalo pakutsimikizika kwamakono sikuvomerezedwa makamaka ndi anthu, chifukwa chakusakhazikika kwawo.

chisankho


Zinkawoneka kwa ine kuti yankho losavuta linali kulemba script mu Bash yomwe imagwiritsa ntchito jenereta ya nyimbo yomwe ilipo kale - HOST, yomwe imawasankha makamaka ndi consonance, osati ndi kalembedwe. Ndi HOST yamtundu wanji? Chifukwa ngati muwonetsa dzina lenileni la tsambalo, anganene kuti ndi malonda. Bwanji osapitiriza kuigwiritsa ntchito? Choyamba, ngakhale ali ndi mwayi wosankha nyimbo zochokera ku consonances, nthawi zambiri amapanga mabwalo. Kachiwiri, muyenera kuganiza ndi ubongo wanu, kuwononga nthawi kusinthana pakati pa tabu, ndi mphamvu kuloweza mawu obwerezabwereza pamndandanda kuti mupeze nyimbo ya mawu awiri.

Kupeza ma rhymes amphamvu

Nkaambo nzi? Ndikudziwa za zothandiza chotsani, yomwe imatsitsa tsambalo pa ulalo womwe watchulidwa. Chabwino, tiyeni tichite zomwe tapempha - timapeza tsamba la HTML mufayilo yomwe ili ndi mawu omveka. Mwachitsanzo, tiyeni tifufuze mawu oti "apa":

wget https://HOST/rifma/здесь

Koma ndikungofunika mndandanda wa mawu, ndingachotse bwanji china chilichonse? Timayang'ana ndikuwona kuti mndandanda wa mawu umapangidwa, ngakhale zitakhala zachilendo bwanji, ngati mndandanda, ndipo mawuwo ali m'ma tag. . Chabwino, tili ndi zothandiza kwambiri. ludzu -Tiyeni tilembe motere:

cat $word | grep '<li>' | sed -e "s%<li>%%" | sed -e "s%</li>%%" | sed -e "s/ //g" | sed -e "/^$/d" 1> $word

Choyamba, kuchokera pa fayilo ya mawu, sankhani mizere yomwe ili ndi tag - timapeza ma tag opanda kanthu ndi mizere yokhala ndi mawu. Timachotsa chilembocho ndi chotseka chake - apa maperesenti a zilembo amagwiritsidwa ntchito m'malo mwa kukwapula chifukwa mu tag yomwe. pali kale slash, bwanji? ludzu samakumvetsani pang'ono. Ndipo zonse zili bwino ndi chidwi. Timachotsa malo onse pafayilo, chotsani mizere yopanda kanthu. Voila - mndandanda wa mawu okonzeka.

Kuti muchotse mawu omveka pogwiritsa ntchito zilembo zomaliza, sankhani zilembo ziwiri zomaliza kuchokera m'mawu oyamba ndikuchotsa mndandandawo:

squad=${word:((${#word}-2)):2}
cat $word | sed -e "/.$squad$/d" 1> $word

Timayang'ana, timayesa - chirichonse chimagwira ntchito ... kotero, kodi mndandanda wa mawu oti "kusewera" uli kuti? Ndipo mawu akuti "ndikupita"? Fayiloyo ilibe kanthu! Ndipo zonsezi ndichifukwa chakuti mawuwa ndi maverebu, ndipo tikudziwa zomwe amachita kwa iwo omwe amangolankhula ndi maverebu. Chilankhulo cha Verb ndi choyipa kuposa ngakhale nyimbo ya square, chifukwa chinenero cha Chirasha chili ndi ziganizo zambiri, ndipo zonse zimakhala ndi mathero ofanana, chifukwa chake iwo sanali mu fayilo yomaliza atatha kufufuza mathero.

Komabe, sitikufulumira. Pa liwu lililonse palibe nyimbo zokha, komanso ma assonances, omwe nthawi zina amamveka bwino kuposa nyimbo - ndicho chifukwa chake ndi ma assonance (French assonance, kuchokera ku Latin assono - ndimamveka mogwirizana).

Timapeza ma assonance

Apa ndi pamene zosangalatsa zimayambira: ma assonances amawonekera pa URL yosiyana, ndipo pa tsamba lomwelo, polemba script, kutumiza pempho la HTTP ndi kulandira yankho. Ndinganene bwanji chotsani'Kodi mumasindikiza batani? Koma palibe njira. Zachisoni.

Ndikuwona kuti ulalo womwe uli pamzerewu ukusintha mwanjira ina, ndidakopera zomwe zidalipo nditasinthira ku ma assonances ndikuziika mu tabu yatsopano ya osatsegula - nyimbo zolimba zidatsegulidwa. Osati zimenezo.

Kwenikweni, ndimaganiza, siziyenera kukhala ndi kanthu kwa seva ngati script yomwe ikutumiza pemphoyo ichitidwa, kapena ngati munthuyo akulemba pamanja. Ndiye? Ndani akudziwa, tiyeni tifufuze.

Kutumiza kuti? kutumiza chiyani? Pempho la HTTP ku seva IP, pali chinachake chonga GET ... ndiye pali chinachake HTTP / 1.1 ... Tiyenera kuwona zomwe osatsegula amatumiza ndi kuti. Ikani wireshark, yang'anani kuchuluka kwa magalimoto:

0040 37 5d a3 84 27 e7 fb 13 6d 93 ed cd 56 04 9d 82 7]£.'çû.m.íÍV...
0050 32 7c fb 67 46 71 dd 36 4d 42 3d f3 62 1b e0 ad 2|ûgFqÝ6MB=ób.à.
0060 ef 87 be 05 6a f9 e1 01 41 fc 25 5b c0 77 d3 94 ï.¾.jùá.Aü%[ÀwÓ.

Um... chiyani? O inde, tili ndi HTTPS. Zoyenera kuchita? Yambitsani MITM kuwukira nokha? Moyenera, wozunzidwayo adzatithandiza.

Mwambiri, nditasankha kusefera pa msakatuli, pamapeto pake ndidapeza pempho lokha komanso woyankhayo. Pitani:

Kukambirana ndi terminal

telnet IP PORT
Trying IP...
Connected to IP.
Escape character is '^]'.
GET /rifma/%D0%BC%D0%B0%D1%82%D1%8C?mode=block&type=asn HTTP/1.1
Host: HOST
Accept-Language: en-US,en;q=0.5
X-Requested-With: XMLHttpRequest
Connection: close

HTTP/1.1 400 Bad Request
Server: nginx/1.8.0
Date: Sun, 03 Nov 2019 20:06:59 GMT
Content-Type: text/html; charset=utf-8
Content-Length: 270
Connection: close

<html>
<head><title>400 The plain HTTP request was sent to HTTPS port</title></head>
<body bgcolor="white">
<center><h1>400 Bad Request</h1></center>
<center>The plain HTTP request was sent to HTTPS port</center>
<hr><center>nginx/1.8.0</center>
</body>
</html>
Connection closed by foreign host.

Hei. Hehehe. Zowonadi, ndizomwe ndimayembekezera potumiza pempho la HTTP lopanda kanthu padoko la HTTPS. Kodi tiyenera kubisa tsopano? Kukangana konseku ndi makiyi a RSA, kenako ndi SHA256. Bwanji, alipo OpenSSL za zinthu zotere. Chabwino, tikudziwa kale zoyenera kuchita, tingochotsa magawo a Referer ndi Cookie kaye - ndikuganiza kuti sizikhudza nkhaniyi kwambiri:

Kukambirana ndi terminal

openssl s_client -connect IP:PORT
{Всякие ключи, сертификаты}
GET /rifma/%D0%B7%D0%B4%D0%B5%D1%81%D1%8C?mode=block&type=asn HTTP/1.1
Host: HOST
User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:70.0) Gecko/20100101 Firefox/70.0
Accept: text/javascript,text/html,application/xml,text/xml,*/*
Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate, br
X-Requested-With: XMLHttpRequest
Connection: keep-alive

HTTP/1.1 200 OK
Content-Type: text/html;charset=utf-8
Transfer-Encoding: chunked
Connection: keep-alive
Vary: Accept-Encoding
Status: 200 OK
Date: Sun, 03 Nov 2019 20:34:33 GMT
Set-Cookie: COOKIE
X-Powered-By: Phusion Passenger 5.0.16
Server: nginx/1.8.0 + Phusion Passenger 5.0.16
Expires: Thu, 01 Jan 1970 00:00:01 GMT
Cache-Control: no-cache
Strict-Transport-Security: max-age=31536000
Content-Security-Policy: block-all-mixed-content
Content-Encoding: gzip

Kodi ubongo wa wophunzira akuphunzira chiyani za dziko la makompyuta?

Ichi ndi chiyani, kulumbira pa seva? Chabwino, mwina adandiyankha 200 OK, zomwe zikutanthauza kuti ma cookie ndi omwe amawatumizira samakhudza chilichonse. Kuponderezana ndi gzip, koma pokopera, zilembo za ASCII zimakopera. Ndendende, mukhoza kuchotsa mzere Landirani-encoding. Chilichonse chili bwino - timapeza chikalata cha HTML, tsopano chokhala ndi ma assonances. Koma pali mafunso awiri: momwe mungayendetsere OpenSSL ndikusamutsa deta kwa iyo pogwiritsa ntchito script? Ndipo mungawerenge bwanji zotsatira ngati titalandira yankho tikhalabe, titero, mu "chipolopolo" cha OpenSSL? Ngati mungathe kubwera ndi china ndi chachiwiri, koma choyamba ...

Ndibwino kuti alipo Habrkumene ndinawerenga za zothandiza kuyembekezera, yomwe imapanga njira yolumikizirana ndi mapulogalamu omwe amayembekeza kuyanjana kwa anthu. Kukhala ndi timu ndikokongola kwambiri yembekezerani, генерирующей kuyembekezera script kutengera zochita zanu. Chabwino, tikuyambitsa, chitani zonsezi ndipo nayi script yomalizidwa. Iye yekha ndi wamkulu kwambiri, ndipo zonse chifukwa OpenSSL amawonetsa ziphaso, makiyi, ndi kuyembekezera akuyembekezera zotsatira za zonsezi. Kodi tiyenera izi? Ayi. Timachotsa kufulumira konse koyamba, ndikungosiya mzere womaliza 'r'. Timachotsanso magawo a User-Agent ndikuvomera pazopempha zathu - sizikhudza chilichonse. Kotero, tiyeni tiyambitse. Zolembazo zidachitidwa, koma chikalata chamtengo wapatali cha HTML chili kuti? Amafuna adadya. Kuti athetse vutoli, muyenera:

set results $expect_out(buffer)

mapeto a script asanafike - umu ndi momwe zotsatira za executable zidzalembedwera kuyembekezera'om command ndikuwonetsedwa pazenera. Mwachidule, chinthu chonga ichi:

kuyembekezera script

#!/usr/bin/expect -f

set timeout -1
spawn openssl s_client -connect IP:PORT
match_max 100000
expect -exact "
---r
"
send -- "GET /rifma/%d0%b7%d0%b4%d0%b5%d1%81%d1%8c?mode=block&type=asn HTTP/1.1rHost: HOSTrAccept-Language: en-US,en;q=0.5rX-Requested-With: XMLHttpRequestrConnection: close"
expect -exact "GET /rifma/%d0%b7%d0%b4%d0%b5%d1%81%d1%8c?mode=block&type=asn HTTP/1.1r
Host: HOSTr
Accept-Language: en-US,en;q=0.5r
X-Requested-With: XMLHttpRequestr
Connection: close"
send -- "r"
set results $expect_out(buffer)
expect -exact "r
"
send -- "r"
expect eof

Koma si zokhazo! Monga mukuwonera, m'zitsanzo zonse ulalo wopemphayo unali wosasunthika, koma ndi ulalo womwe umayang'anira mawu omwe angagwirizane ndi ma assonances. Ndipo zikuwonekeratu kuti nthawi zonse tidzafufuza mawu oti "%d0%b7%d0%b4%d0%b5%d1%81%d1%8c" mu ASCII kapena "pano" mu UTF-8. Zoyenera kuchita? Zachidziwikire, ingopangani zolemba zatsopano nthawi zonse, abwenzi! Osatinso pano yembekezerani'O, ndi chithandizo Tchulani, chifukwa Mwatsopano, palibe chomwe chimasintha kupatula mawu. Ndipo khalani ndi vuto latsopanolo: tingamasulire bwanji mawu mwanzeru kuchokera ku Cyrillic kupita ku mtundu wa URL? Palibe chapadera kwa terminal kaya. Chabwino, chabwino, titha kuchita, sichoncho? Mutha:

Penyani zomwe ine ndingachite!

function furl {
furl=$(echo "$word" | sed 's:А:%d0%90:g;s:Б:%d0%91:g;s:В:%d0%92:g;s:Г:%d0%93:g;s:Д:%d0%94:g;s:Е:%d0%95:g;s:Ж:%d0%96:g;s:З:%d0%97:g;s:И:%d0%98:g;s:Й:%d0%99:g;s:К:%d0%9a:g;s:Л:%d0%9b:g;s:М:%d0%9c:g;s:Н:%d0%9d:g;s:О:%d0%9e:g;s:П:%d0%9f:g;s:Р:%d0%a0:g;s:С:%d0%a1:g;s:Т:%d0%a2:g;s:У:%d0%a3:g;s:Ф:%d0%a4:g;s:Х:%d0%a5:g;s:Ц:%d0%a6:g;s:Ч:%d0%a7:g;s:Ш:%d0%a8:g;s:Щ:%d0%a9:g;s:Ъ:%d0%aa:g;s:Ы:%d0%ab:g;s:Ь:%d0%ac:g;s:Э:%d0%ad:g;s:Ю:%d0%ae:g;s:Я:%d0%af:g;s:а:%d0%b0:g;s:б:%d0%b1:g;s:в:%d0%b2:g;s:г:%d0%b3:g;s:д:%d0%b4:g;s:е:%d0%b5:g;s:ж:%d0%b6:g;s:з:%d0%b7:g;s:и:%d0%b8:g;s:й:%d0%b9:g;s:к:%d0%ba:g;s:л:%d0%bb:g;s:м:%d0%bc:g;s:н:%d0%bd:g;s:о:%d0%be:g;s:п:%d0%bf:g;s:р:%d1%80:g;s:с:%d1%81:g;s:т:%d1%82:g;s:у:%d1%83:g;s:ф:%d1%84:g;s:х:%d1%85:g;s:ц:%d1%86:g;s:ч:%d1%87:g;s:ш:%d1%88:g;s:щ:%d1%89:g;s:ъ:%d1%8a:g;s:ы:%d1%8b:g;s:ь:%d1%8c:g;s:э:%d1%8d:g;s:ю:%d1%8e:g;s:я:%d1%8f:g;s:ё:%d1%91:g;s:Ё:%d0%81:g')}

Pazonse, tili ndi script yomwe imatembenuza mawu kukhala mawu a ASCII, ndikupanga script ina yomwe imapempha tsamba latsamba lomwe lili ndi ma assonances kuchokera pa seva kudzera pa OpenSSL. Kenako timalozera zomwe zalembedwa zomaliza ku fayilo ndipo, mwachikale, ndikudutsamo "zosefera" mabwalo owonjezera ndikulemba ku fayilo.

Kuphatikizika kwa ambiri. Mzere wapansi

Kwenikweni, izi ndizomwe zimayambitsa zovuta zochepa. Timachita njira zomwe zili pamwambazi pamawu awiri, kenako kuchokera pamndandandawu timafanizira liwu lililonse ndi lililonse ndipo ngati machesi apezeka, timatulutsa. Tsopano tili ndi script yomwe imatenga mawu awiri ngati cholowetsa ndikuwonetsa mndandanda wa mawu omwe amagwirizana ndi onse awiri, komanso poganizira ma assonances, ndipo zonsezi popanda kusinthana pamanja pakati pa ma tabu anayi ndikukumbukira mawu "ndi diso" - zonse zosonkhanitsidwa, zowerengera. chifukwa ndi kutayidwa basi. Zodabwitsa.

Cholinga cha bukuli chinali kusonyeza kuti ngati munthu akufunikira chinachake, amachichitabe. Zosathandiza kwambiri, zokhotakhota, zowopsya, koma zidzagwira ntchito.

Source: www.habr.com

Kuwonjezera ndemanga