He aha ka lolo o kahi haumāna e aʻo ai e pili ana i ka honua kamepiula?

Ka manawa maikaʻi o ka lā.

Ma hope o ke kākau ʻana i kahi palapala ʻē aʻe ma Bash, ʻike wau he ʻokoʻa loa nā mea āpau, akā ua hana nā mea āpau. Makemake wau e hōʻike iā ʻoe i nā mea ʻino a me nā koʻokoʻo aʻu i kākau ai i mea e hoʻoponopono ai i ka pilikia, akā ʻaʻole i loaʻa kahi kaʻa ʻike. I nā huaʻōlelo ʻē aʻe, he caricature o ka papahana.

Nń Pahuhopu


Ua pono kekahi mea e:

  • Hōʻike ʻia nā mele he nui no ka huaʻōlelo, koe naʻe nā ʻāpana
  • Ua ʻaʻa i nā mele he nui o nā huaʻōlelo ʻelua

He aha ke kumu? ʻAe, ʻo ia - a ʻo ia nō.
ʻO wai ka mea ʻike ʻole, ʻo kahi mele ʻahāhā (ma ka ʻōlelo maʻamau - a square) ʻelua mau huaʻōlelo nona nā hua hope ʻelua i loko o ka spelling coincide, a (pinepine, ʻo ia wale nō ka mea) e hoʻolilo iā lākou i mele. No ka laʻana, hauʻoli nā rosa; kaʻa - kaʻa. ʻAʻole ʻae ʻia ka hoʻohana ʻana i nā ʻāpana i ka hoʻololi hou ʻana e nā kānaka, ma muli o ko lākou primitiveness.

olelo hooholo


I koʻu manaʻo, ʻo ka mea maʻalahi loa ke kākau ʻana i kahi palapala ma Bash e hoʻohana ana i kahi haku mele mele - HOST, ka mea koho mua iā lākou ma ka consonance, ʻaʻole ma ka spelling. He aha ke ʻano o HOST? No ka mea inā ʻoe e hōʻike i ka inoa maoli o ka pūnaewele, e ʻōlelo lākou he hoʻolaha. No ke aha ʻaʻole e hoʻomau i ka hoʻohana ʻana? ʻO ka mea mua, ʻoiai ʻo ia ka pono o ke koho ʻana i nā mele e pili ana i nā consonances, hoʻopuka pinepine ʻo ia i nā ʻāpana. ʻO ka lua, pono ʻoe e noʻonoʻo me kou lolo, e hoʻolilo i ka manawa e hoʻololi ai ma waena o nā ʻaoʻao, a me ka ikaika e hoʻopaʻanaʻau i nā huaʻōlelo hou i loko o nā papa inoa e ʻimi ai i kahi mele no nā huaʻōlelo ʻelua.

Loaʻa i nā mele ikaika

He aha kaʻu ʻike? ʻIke wau e pili ana i ka pono wget, nāna e hoʻoiho i ka ʻaoʻao ma ka URL i kuhikuhi ʻia. ʻAe, e hoʻokō i ka noi - loaʻa iā mākou kahi ʻaoʻao HTML ma kahi faila i kapa ʻia me kahi huaʻōlelo puana. No ka laʻana, e ʻimi kākou i ka huaʻōlelo "ma ʻaneʻi":

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

Akā, makemake wau i kahi papa inoa o nā huaʻōlelo, pehea wau e hoʻopau ai i nā mea ʻē aʻe? Nānā mākou a ʻike ua hoʻopololei ʻia ka papa inoa o nā huaʻōlelo, ʻaʻohe mea ʻē aʻe paha, ma ke ʻano o ka papa inoa, a aia nā huaʻōlelo ma nā hōʻailona. . ʻAe, loaʻa iā mākou kahi mea hoʻohana nui. - e kākau kākou penei:

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

ʻO ka mea mua, mai ka faila huaʻōlelo, koho i nā laina i loaʻa ka hōʻailona - loaʻa iā mākou kahi pūʻulu o nā huaʻōlelo a me nā laina me nā huaʻōlelo. Wehe mākou i ka hōʻailona ponoʻī a me kāna pani pani ʻana - ma ʻaneʻi ke hoʻohana ʻia nā hōʻailona pākēneka ma kahi o nā ʻokiʻoki no ka mea ma ka tag ponoʻī aia nō he ʻāʻī, no ke aha? ʻaʻole maopopo iki iā ʻoe. A maikaʻi nā mea a pau me ka hoihoi. Wehe mākou i nā wahi āpau mai ka faila, wehe i nā laina ʻole. Voila - he papa inoa o nā huaʻōlelo.

No ka wehe ʻana i nā huaʻōlelo e like me ka hoʻohana ʻana i nā leka hope, koho i nā huaʻōlelo hope ʻelua mai ka huaʻōlelo kumu a holoi i ka papa inoa:

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

Nānā mākou, ho'āʻo mākou - hana nā mea a pau ... no laila, aia ka papa inoa no ka huaʻōlelo "pāʻani"? A no ka huaʻōlelo "E hele ana au"? Ua nele ka faila! A ʻo kēia wale nō no ka mea he mau huaʻōlelo kēia mau huaʻōlelo, a ʻike mākou i kā lākou hana i ka poʻe e hoʻolike me nā huaʻōlelo. ʻOi aku ka maikaʻi o ka huaʻōlelo huaʻōlelo ma mua o ka mele square, no ka mea, ʻoi aku ka nui o nā huaʻōlelo i ka ʻōlelo Lūkini, a ua like nā hopena o lākou a pau, ʻo ia ke kumu ʻaʻole lākou i ka faila hope ma hope o ka nānā ʻana i nā hopena.

Akā naʻe, ʻaʻole mākou wikiwiki. No kēlā me kēia huaʻōlelo, ʻaʻole wale nā ​​mele, akā ʻo nā assonances, i kekahi manawa ʻoi aku ka maikaʻi ma mua o ka mele - ʻo ia ke kumu he mau assonances (French assonance, mai Latin assono - kani au i ka harmoni).

Loaʻa iā mākou nā assonances

ʻO kēia kahi e hoʻomaka ai ka leʻaleʻa: ʻike ʻia nā assonances ma kahi URL ʻokoʻa, a ma ka ʻaoʻao hoʻokahi, ma ka hoʻokō ʻana i kahi palapala, hoʻouna ʻana i kahi noi HTTP a loaʻa kahi pane. Pehea wau e ʻōlelo ai wget'Pihi 'oe i ke pihi? Akā ʻaʻohe ala. Minamina.

I ka ʻike ʻana i ka loli ʻana o ka URL ma ka laina, ua kope wau i ka mea i laila ma hope o ka hoʻololi ʻana i nā assonances a hoʻopaʻa ʻia i loko o kahi pānaewele hou - wehe ʻia nā mele ikaika. ʻAʻole kēlā.

ʻO ka mea nui, manaʻo wau, ʻaʻole ia he mea nui i ka server inā ua hoʻokō ʻia ka palapala e hoʻouna ana i ka noi, a i ʻole ke kākau lima ʻana o ke kanaka. No laila? ʻO wai ka mea ʻike, e hele kāua e nānā.

Ma hea e hoʻouna ai? He aha ka mea e hoʻouna ai? Noi HTTP i ka IP server, aia kekahi mea e like me GET ... a laila aia kekahi mea HTTP / 1.1 ... Pono mākou e ʻike i ka mea a ka polokalamu kele pūnaewele e hoʻouna ai a ma hea. Hoʻokomo wireshark, e nānā i ke kaʻa:

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... he aha? ʻAe, loaʻa iā mākou HTTPS. He aha ka hana? Hoʻomaka i kahi hoʻouka MITM iā ʻoe iho? ʻO ke kūpono, ʻo ka mea i hoʻopilikia ʻia e kōkua iā mākou.

Ma ka laulā, ua hoʻoholo wau e heʻenalu i ka polokalamu kele pūnaewele, ua loaʻa iaʻu ka noi ponoʻī a me ka mea hoʻopuka. Hele:

Kūkākūkā me ka pahu

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.

ʻEā. Hehehe. ʻOiaʻiʻo, ʻo ia kaʻu mea i manaʻo ai i ka hoʻouna ʻana i kahi noi HTTP ʻole i kahi awa HTTPS. Pono mākou e hoʻopili i kēia manawa? ʻO kēia pilikia me nā kī RSA, a laila me SHA256. No ke aha, aia OpenSSL no ia mau mea. ʻAe, ua ʻike mua mākou i ka mea e hana ai, e wehe mua mākou i nā kahua Referer a me Kuki - Manaʻo wau ʻaʻole lākou e hoʻopilikia nui i ka mea:

Kūkākūkā me ka pahu

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

He aha ka lolo o kahi haumāna e aʻo ai e pili ana i ka honua kamepiula?

He aha kēia, hoʻohiki ma ke kikowaena? ʻAe, ma ka liʻiliʻi ua pane mai lākou iaʻu he 200 OK, ʻo ia hoʻi ʻaʻole pili nā kuki a me ka mea kuhikuhi i kekahi mea. He gzip ke kaomi, akā i ke kope ʻana, kope ʻia nā huaʻōlelo ASCII. Pono, hiki iā ʻoe ke wehe i ka laina E ʻae-hoʻopili. Maikaʻi nā mea a pau - loaʻa iā mākou kahi palapala HTML, i kēia manawa me nā assonances. Akā eia nā nīnau ʻelua: pehea e holo ai i ka OpenSSL a hoʻoili i ka ʻikepili iā ia me ka hoʻohana ʻana i kahi palapala? A pehea e heluhelu ai i ka hopena inā ma hope o ka loaʻa ʻana o ka pane e noho mākou, me he mea lā, i loko o kahi "shell" OpenSSL? Inā hiki iā ʻoe ke hele mai me kahi mea me ka lua, akā me ka mua ...

Maikaʻi aia Habrkahi aʻu i heluhelu ai e pili ana i ka pono manaʻo, ka mea e hoʻokaʻawale i ke kaʻina hana o ka launa pū ʻana me nā polokalamu e manaʻo nei i ka pilina kanaka. ʻOi aku ka maikaʻi o ka loaʻa ʻana o kahi hui manaʻo auto, hana ana manaʻo palapala e pili ana i kāu mau hana. ʻAe, hoʻomaka mākou, hana i kēia mau mea a eia ka palapala i hoʻopau ʻia. ʻO ia wale nō ka nui loa, a no ka mea OpenSSL hōʻike i nā palapala hōʻoia, kī, a manaʻo ke kali nei i ka hopena o kēia mau mea a pau. Pono mākou i kēia? ʻAʻole. Wehe mākou i ka ʻōkuhi mua holoʻokoʻa, waiho wale i ka laina hope 'r'. Wehe pū mākou i nā kahua mea hoʻohana-Agent a ʻae mai kā mākou noi - ʻaʻole pili lākou i kekahi mea. No laila, e hoʻomaka kākou. Ua hoʻokō ʻia ka palapala, akā aia i hea ka palapala HTML waiwai? manaʻo ai ia mea. No ka hoʻokuʻu iā ia i waho, pono ʻoe e kau:

set results $expect_out(buffer)

ma mua o ka pau ʻana o ka palapala - ʻo ia ke ʻano e kākau ʻia ai ka puka o ka mea hoʻokō manaʻo'om kauoha a hōʻike ʻia ma ka pale. I ka hōʻuluʻulu ʻana, e like me kēia:

manaʻo i kahi palapala

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

Akā ʻaʻole ʻo ia wale nō! E like me kāu e ʻike ai, ma nā hiʻohiʻona a pau, ua paʻa ka URL noi, akā ʻo ka URL ke kuleana o ka huaʻōlelo e pili pū me nā assonances. A no laila ua ʻike mākou e ʻimi mau mākou i ka huaʻōlelo "%d0%b7%d0%b4%d0%b5%d1%81%d1%8c" ma ASCII a i ʻole "ma ʻaneʻi" ma UTF-8. He aha ka hana? ʻOiaʻiʻo, e hana wale i kahi palapala hou i kēlā me kēia manawa, e nā hoaaloha! ʻAʻole hou manaʻo auto'Auē, a me ke kōkua hoʻopiʻi, no ka mea I kā mākou mea hou, ʻaʻohe mea e loli koe wale nō ka huaʻōlelo. A e ola i ka pilikia hou: pehea e hiki ai iā mākou ke unuhi naʻauao i kahi huaʻōlelo mai Cyrillic i ka format URL? ʻAʻohe mea kūikawā no ka terminal. ʻAe, maikaʻi, hiki iā mākou ke hana, pololei? Hiki ke:

E nānā i ka mea hiki iaʻu ke hana!

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

Ma ka huina, loaʻa iā mākou kahi palapala e hoʻololi i kahi huaʻōlelo i ka kikokikona ASCII, e hana ana i kahi palapala ʻē aʻe e noi ana i kahi ʻaoʻao pūnaewele me nā assonances mai ke kikowaena ma o OpenSSL. A laila hoʻihoʻi hou mākou i ka hoʻopuka o ka palapala hope i kahi faila a, ma ke ʻano kahiko, e hele i loko "nā kānana" nā ʻāpana ʻokoʻa a kākau iā lākou i ka faila.

Huina o na mea he nui. laina lalo

ʻOiaʻiʻo, ʻo kēia ka mea e hoʻopiʻi ai i nā pilikia liʻiliʻi. Lawe mākou i nā kaʻina hana i luna no nā huaʻōlelo ʻelua, a laila mai nā papa inoa ʻelua mākou e hoʻohālikelike i kēlā me kēia huaʻōlelo me kēlā me kēia a inā loaʻa kahi pāʻani, hoʻopuka mākou. I kēia manawa, loaʻa iā mākou kahi palapala e lawe ana i ʻelua mau huaʻōlelo i mea hoʻokomo a hōʻike i kahi papa inoa o nā huaʻōlelo e like me nā mea ʻelua, a me ka noʻonoʻo ʻana i nā assonances, a me kēia mau mea āpau me ka ʻole o ka hoʻololi ʻana ma waena o nā ʻaoʻao ʻehā a me ka hoʻomanaʻo ʻana i nā huaʻōlelo "ma ka maka" - ʻohi ʻia, helu ʻia. no a hoolei aku. Kupaianaha.

ʻO ke kumu o kēia hoʻolaha ʻana, ʻo ia ka hōʻike ʻana inā pono ke kanaka i kekahi mea, e hana nō ʻo ia. ʻAʻole maikaʻi loa, kekee, weliweli, akā e hana.

Source: www.habr.com

Pākuʻi i ka manaʻo hoʻopuka