Dab tsi yog lub hlwb ntawm cov tub ntxhais kawm kawm txog lub ntiaj teb lub computer muaj peev xwm?

Ib hnub zoo.

Tom qab ua tiav sau lwm tsab ntawv hauv Bash, kuv pom tau tias txhua yam yuav tsum sib txawv kiag li, tab sis txhua yam ua haujlwm. Kuv xav qhia rau koj paub qhov kev qias neeg thiab cov ntoo khaub lig uas kuv tau sau los daws qhov teeb meem, tab sis tseem tsis tau muaj lub wagon ntawm kev paub. Hauv lwm lo lus, caricature ntawm programming.

Hom phiaj


Ib yam dab tsi los ua tsim nyog rau:

  • Tso tawm ntau rhymes rau lo lus, tsuas yog rau squares
  • Hla qhov ntau rhymes ntawm ob lo lus

Rau dab tsi? Zoo, qhov ntawd yog nws - thiab qhov ntawd yog nws.
Leej twg tsis paub, ib tug square rhyme (nyob rau hauv ntau parlance - ib square) yog ob lo lus uas nws ob tsab ntawv kawg nyob rau hauv spelling coincide, uas (feem ntau, qhov no yog tib yam) ua rau lawv ib tug rhyme. Piv txwv li, roses yog frosty; log tsheb. Kev siv cov squares nyob rau hauv niaj hnub versification tsis tshwj xeeb yog pom zoo los ntawm cov neeg, vim lawv primitiveness.

kev txiav txim siab


Nws zoo nkaus li kuv tias qhov kev daws teeb meem yooj yim tshaj plaws yog sau tsab ntawv hauv Bash uas siv lub tshuab hluav taws xob uas twb muaj lawm - HOST, uas feem ntau xaiv lawv los ntawm consonance, thiab tsis yog sau ntawv. HOST yam twg? Vim yog tias koj qhia lub npe tiag tiag ntawm lub xaib, lawv yuav hais tias nws yog kev tshaj tawm. Vim li cas ho tsis siv nws ntxiv? Ua ntej, txawm tias nws qhov zoo ntawm kev xaiv cov lus sib dhos raws li consonances, nws tseem feem ntau tsim cov squares. Qhov thib ob, koj tseem yuav tsum xav nrog koj lub hlwb, siv sij hawm hloov ntawm tabs, thiab lub zog nco cov lus rov qab hauv cov npe kom pom cov lus sib dhos rau ob lo lus.

Tau txais cov lus sib dhos

Kuv paub dab tsi? Kuv paub txog kev siv hluav taws xob wget, uas downloads nplooj ntawv ntawm qhov URL teev. Okay, cia peb ua qhov kev thov - peb tau txais nplooj ntawv HTML hauv cov ntaub ntawv muaj npe nrog cov lus sib dhos. Piv txwv li, cia peb tshawb nrhiav lo lus "no":

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

Tab sis kuv tsuas xav tau ib daim ntawv teev cov lus, yuav ua li cas kuv thiaj li tshem tau txhua yam? Peb saib thiab pom tias cov npe ntawm cov lus raug formatted, txawm li cas los xij nws yuav txawv txawv, nyob rau hauv daim ntawv teev npe, thiab cov lus nyob rau hauv cov cim npe . Zoo, peb muaj cov khoom siv zoo heev. sed - Cia peb sau nws li no:

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

Ua ntej, los ntawm cov ntaub ntawv lo lus, xaiv cov kab uas muaj cov cim npe - Peb tau txais ib pawg ntawm cov ntawv khoob thiab kab nrog cov lus. Peb tshem tag nws tus kheej thiab nws kaw ib qho - ntawm no feem pua ​​​​cov cim yog siv es tsis txhob slashes vim nyob rau hauv daim ntawv nws tus kheej twb muaj tus swb lawm, vim li cas? sed tsis nkag siab koj me ntsis. Thiab txhua yam zoo nrog kev txaus siab. Peb tshem tawm txhua qhov chaw ntawm cov ntaub ntawv, tshem tawm cov kab khoob. Voila - ib daim ntawv teev cov lus npaj txhij.

Txhawm rau tshem tawm cov lus uas sib dhos siv cov ntawv kawg, xaiv ob tsab ntawv kawg ntawm lo lus qub thiab tshem tawm cov npe:

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

Peb saib, peb sim - txhua yam ua haujlwm ... yog li, qhov twg yog cov npe rau lo lus "ua si"? Thiab rau lo lus "Kuv mus"? Cov ntaub ntawv yog khoob! Thiab qhov no yog tag nrho vim hais tias cov lus no yog cov lus qhia, thiab peb paub tias lawv ua dab tsi rau cov neeg uas sib dhos nrog cov lus qhia. Verb rhyme yog qhov phem dua li cov lus sib dhos, vim hais tias cov lus Lavxias muaj cov lus qhia feem ntau, thiab txhua tus ntawm lawv muaj qhov xaus, yog li ntawd lawv tsis nyob hauv cov ntaub ntawv kawg tom qab kuaj xyuas qhov xaus.

Txawm li cas los xij, peb tsis nrawm. Rau txhua lo lus tsis yog tsuas yog rhymes xwb, tab sis kuj assonances, uas qee zaum suab zoo dua li rhyme - yog vim li cas lawv yog assonances (Fabkis assonance, los ntawm Latin assono - kuv suab hauv suab).

Peb tau txais assonances

Qhov no yog qhov kev lom zem pib: kev sib koom ua ke tshwm sim ntawm qhov sib txawv URL, thiab ntawm tib nplooj ntawv, los ntawm kev ua tiav tsab ntawv, xa HTTP thov thiab tau txais cov lus teb. Kuv yuav hais li cas wget'Koj puas nias lub pob? Tab sis tsis muaj txoj kev. Tu siab kawg.

Pom tias qhov URL hauv kab tau hloov pauv li cas, kuv tau theej qhov muaj nyob ntawd tom qab hloov mus rau kev sib koom ua ke thiab muab tso rau hauv qhov browser tshiab tab - muaj zog rhymes qhib. Tsis yog li ntawd.

Qhov tseem ceeb, kuv xav tias, nws yuav tsum tsis muaj teeb meem rau tus neeg rau zaub mov txawm tias tsab ntawv xa nws qhov kev thov raug tua, lossis seb tus neeg ntaus nws los ntawm tes. Yog li ntawd? Leej twg paub, cia peb mus xyuas.

xa qhov twg? Yuav xa dab tsi? HTTP thov rau tus neeg rau zaub mov IP, muaj qee yam zoo li GET ... ces muaj qee yam HTTP / 1.1... Peb yuav tsum saib seb qhov browser xa thiab qhov twg. Nruab wireshark, saib cov tsheb khiav:

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... dab tsi? Yog lawm, peb muaj HTTPS. Yuav ua li cas? Tua tawm MITM nres ntawm koj tus kheej? Qhov zoo tshaj plaws, tus neeg raug tsim txom nws tus kheej yuav pab peb.

Feem ntau, tau txiav txim siab mus nthwv dej browser, thaum kawg kuv pom qhov kev thov nws tus kheej thiab tus neeg nyob hauv. Mus:

Kev sib tham nrog lub davhlau ya nyob twg

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.

Hav. Hehehe. Qhov tseeb, qhov ntawd yog qhov kuv xav tau thaum xa HTTP liab qab thov mus rau HTTPS chaw nres nkoj. Peb puas yuav tsum tau encrypt tam sim no? Tag nrho cov no fuss nrog RSA yuam sij, ces nrog SHA256. Yog vim li cas, muaj OpenSSL rau tej yam zoo li no. Zoo, peb twb paub yuav ua li cas, peb tsuas yog tshem tawm Cov Lus Qhia thiab Khoom Qab Zib ua ntej - Kuv xav tias lawv yuav tsis cuam tshuam qhov teeb meem ntau:

Kev sib tham nrog lub davhlau ya nyob twg

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

Dab tsi yog lub hlwb ntawm cov tub ntxhais kawm kawm txog lub ntiaj teb lub computer muaj peev xwm?

Qhov no yog dab tsi, cog lus ntawm server? Zoo, yam tsawg kawg lawv teb kuv 200 OK, uas txhais tau hais tias ncuav qab zib thiab tus xa mus tsis cuam tshuam dab tsi. Compression yog gzip, tab sis thaum luam, cov cim ASCII raug theej. Raws nraim, koj tuaj yeem tshem tawm txoj kab Txais-encoding. Txhua yam yog zoo - peb tau txais ib daim ntawv HTML, tam sim no nrog assonances. Tab sis ntawm no yog ob lo lus nug: yuav ua li cas khiav OpenSSL thiab hloov cov ntaub ntawv mus rau nws siv tsab ntawv? Thiab yuav ua li cas nyeem cov zis yog tias tom qab tau txais cov lus teb peb tseem nyob, zoo li nws yog, hauv OpenSSL "plhaub"? Yog tias koj tuaj yeem tuaj nrog qee yam nrog qhov thib ob, tab sis nrog thawj ...

Nws yog qhov zoo uas muaj Habqhov twg kuv nyeem txog cov khoom siv hluav taws xob cia siab tias, uas automates tus txheej txheem ntawm interacting nrog cov kev pab cuam uas xav kom tib neeg kev sib raug zoo. Muaj ib pab neeg yog qhov ntxim nyiam dua autoexpect, tsim cia siab tias tsab ntawv raws li koj ua. Zoo, peb tso nws, ua txhua yam no thiab ntawm no yog cov ntawv tiav. Tsuas yog nws loj heev, thiab tag nrho vim OpenSSL qhia cov ntawv pov thawj, cov yuam sij, thiab cia siab tias tos qhov tso zis ntawm tag nrho cov no. Peb puas xav tau qhov no? Tsis muaj. Peb tshem tag nrho cov lus ceeb toom thawj zaug, tawm hauv kab kawg nkaus xwb 'r'. Peb kuj tshem tawm Cov Neeg Siv-Agent thiab Txais cov teb los ntawm peb qhov kev thov - lawv tsis cuam tshuam dab tsi. Yog li, cia peb pib. Tsab ntawv raug tua, tab sis qhov twg yog cov ntaub ntawv HTML khoom muaj nqis? Cia siab tias noj nws. Yuav kom nws ntog tawm, koj yuav tsum muab:

set results $expect_out(buffer)

ua ntej qhov kawg ntawm tsab ntawv - qhov no yog li cas cov zis ntawm lub executable yuav raug sau cia siab tias'om hais kom ua thiab tso tawm kom pom ntawm qhov screen. Hauv kev xaus, qee yam zoo li no:

expect'ib tsab ntawv

#!/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

Tab sis tsis yog tag nrho! Raws li koj tuaj yeem pom, hauv txhua qhov piv txwv qhov kev thov URL yog zoo li qub, tab sis nws yog qhov URL uas yog lub luag haujlwm rau lo lus twg yuav cuam tshuam nrog kev sib raug zoo. Thiab yog li nws hloov tawm tias peb yuav niaj hnub tshawb rau lo lus "%d0%b7%d0%b4%d0%b5%d1%81%d1%8c" hauv ASCII lossis "no" hauv UTF-8. Yuav ua li cas? Tau kawg, tsuas yog tsim cov ntawv tshiab txhua zaus, cov phooj ywg! Tsis yog lawm autoexpect'Auj, thiab nrog kev pab Ncha, vim Hauv peb qhov tshiab, tsis muaj dab tsi hloov tsuas yog lo lus. Thiab ua neej nyob ntev qhov teeb meem tshiab: yuav ua li cas peb thiaj txawj txhais ib lo lus los ntawm Cyrillic rau hauv URL hom? Tsis muaj dab tsi tshwj xeeb rau lub davhlau ya nyob twg. Zoo, nws zoo, peb tuaj yeem ua nws, txoj cai? Ua tau:

Saib seb kuv yuav ua li cas!

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')}

Nyob rau hauv tag nrho, peb muaj ib tsab ntawv uas hloov ib lo lus rau hauv ASCII ntawv, tsim lwm tsab ntawv uas thov ib tug site nplooj ntawv nrog assonances los ntawm lub server ntawm OpenSSL. Thiab ces peb redirect cov zis ntawm tsab ntawv kawg mus rau ib cov ntaub ntawv thiab, nyob rau hauv lub qub fashioned txoj kev, hla nws los ntawm "filters" ntxiv squares thiab sau rau hauv cov ntaub ntawv.

Kev sib tshuam ntawm ntau yam. Hauv qab kab

Qhov tseeb, qhov no yog qhov ua rau muaj teeb meem tsawg kawg nkaus. Peb ua cov txheej txheem saum toj no rau ob lo lus, tom qab ntawd los ntawm ob lub npe peb sib piv txhua lo lus nrog txhua tus thiab yog tias pom qhov sib tw, peb tso tawm. Tam sim no peb muaj ib tsab ntawv uas siv ob lo lus los ua kev tawm tswv yim thiab qhia cov npe ntawm cov lus uas sib dhos nrog ob qho tib si, thiab txawm hais txog kev sib koom ua ke, thiab tag nrho cov no yam tsis muaj manually hloov ntawm plaub tabs thiab nco ntsoov cov lus "los ntawm qhov muag" - uas yog tag nrho sau, accounted rau thiab muab pov tseg cia. Zoo kawg.

Lub hom phiaj ntawm qhov kev tshaj tawm no yog qhia tias yog tus neeg xav tau ib yam dab tsi, nws yuav ua li cas. Tsis zoo heev, nkhaus, creepy, tab sis nws yuav ua haujlwm.

Tau qhov twg los: www.hab.com

Ntxiv ib saib