Quid est cerebrum discipuli discendi de mundo computatorio capax?

Bonus dies.

Finito scripto aliud scriptum in Bash, intellexi omnia prorsus diversa esse, sed omnia operata esse. Cupio tibi ostendere quid obscoenitatis et fusum scripsi ut problema solvendum sit, sed nondum cognitionis plaustrum habens. Id est, Mimorum programmatio.

negotium


Necesse est aliquid factum;

  • Plures rithimos ad verbum exhibuit, exceptis quadratis
  • Transgressus multa rithimorum duo verba

Quod? Bene est, id est.
Quis nescit, rhyme quadratus (in vulgari voce - quadratus) duo verba sunt quorum postremae duae litterae in orthographia coincidunt, quae (saepe hoc solum est) metrum reddit. Puta rosae sunt pruinae; fatigare — car. Usus quadratorum in recentiore versione ab hominibus non maxime approbatur, ob earum primitivam.

arbitrium


Simplicissima solutio mihi visum erat scribere scriptionem in Bash qui utitur rithimo iam exsistente generante - HOST, quae imprimis consonantia eas eligit, non per orthographiam. Qualis HOSTES? Quod si verum nomen situs indicas, tabulam esse dicent. Cur non utens? Uno modo, quamvis utilitas rithimorum ex consonantiis seligat, tamen saepe quadrata generat. Secundo, adhuc cogitandum est cum cerebro tuo, tempus terere mutandi inter tabs, ac strenue memoriter repetita verba in lists ut rithimum duobus verbis invenias.

Questus fortis rithimos

Quid novi? Scio de utilitate wget, quae pagina in URL determinato downloads. Bene, petitionem faciamus - paginam HTML in tabella nominata cum rithimo verbo accipimus. Exempli gratia, verbum "hic" quaeramus:

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

Sed tantum verborum indice opus est, quonam modo omnia exuere possum? Spectamus et videmus formari verborum album, quantumvis mirum sit, in forma indici, et verba in tags . Bene magnam utilitatem habemus. but - sic scribemus:

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

Primum, ex verbi fasciculo, lego lineas quae tag . continentes — fasciculum inanis tags ac lineas verbis dabimus. Tag ipsum removemus et eius occlusionem unum - hic cento symbola pro virgulis adhibentur quia in ipso tag Cur iam Micae? but Non intelligitis vos aliquantulus. Omnia denique cum faenore. Omnia spatia a tabella removemus, lineas vacuas removemus. Voila — indicem verborum prompto confectum.

Ut verba rithimi utentes postremis litteris tollantur, duas ultimas litteras ex verbo originali eligunt et indicem enucleant;

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

Spectamus, conamur - omnia opera... sic, ubi est index verbi "fabulae"? Et pro verbo "Eo"? Tabella vacua est! Et hoc totum est, quia verba ista sunt verba, et scimus quid faciant his qui rithimi sunt verbis. Rhymum verbi peius est quam etiam rithimum quadratum, quia lingua Russica pleraque verba habet, et omnes terminationes eandem habent, quam ob causam in fasciculo finali post terminationes iniectae non fuerunt.

Sed non properamus. Singula enim verba non solum rithimorum sunt, sed etiam consonantiae, quae interdum multo melius quam rithimo sonant - propterea quod consonantiae sunt (gallice consonantia, ex latino assono - sono consonantia).

Nos adepto assonantiae

Inde est quod incipit fun: consonantiae in domicilio separato apparent, et in eadem pagina, scriptum capiens, HTTP peticionem mittens responsionem accipiens. Quomodo dico? wget'Tu premere puga? Sed nullo modo. Triste.

Animadvertens Domicilium in linea aliquo modo mutatum esse, exscripsi quod ibi erat cum mutandis consonantiis et conglutinatis in novo navigatro tab - rhymis validis apertis. Quod non.

Per se, cogitabam, non referret servo utrum scriptura mittendo petitio fiat, an persona manu exarata. Sic? Qui scit, eamus reprehendo.

Vbi mitteret? Quid mittis? HTTP petentibus IP servo, aliquid simile GET... tunc aliquid est HTTP/1.1... Videre debemus quid navigatrum mittit et ubi. install Wiresharkvide negocii;

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... quid? Immo habemus HTTPS. Quid facere? MITM in te impetum mitte? Optime, ipsa victima nos adiuvabit.

In genere, cum superficies pasco constituisset, tandem ipsam petitionem et inscriptionem inveni. Perge:

Dialogus cum termino

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.

Heus. Hehehe. Immo illud est quod exspectavi cum nudum HTTP peticionem ad portum HTTPS mittens. Nunc encrypt debemus? Haec omnia fuss cum RSA clavibus, tunc cum SHA256. Quid est? OpenSSL talium rerum. Bene, iam scimus quid faciendum, mox referer et Cookie agros primo removebimus - Puto eos rem multum non afficere:

Dialogus cum termino

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

Quid est cerebrum discipuli discendi de mundo computatorio capax?

Quid est hoc, iurans in servo? Bene, saltem responderunt mihi 200 OK, quod significat crustulum et auctor nihil afficere. Compressio gzip est, sed cum exscribenda, ASCII exscripta sunt. Etiam lineam tollere potes Accipere, modum translitterandi. Omnia praeclara sunt - documentum HTML accipimus, nunc cum consonantiis. Sed hic duae quaestiones sunt: ​​quomodo currere OpenSSL et datam transferre ad eam utens scripto? Et quomodo legere output si post acceptam responsionem quasi in OpenSSL "crusta" manemus? Si aliquid cum secundo, sed cum primis potest ascendere.

Hoc est bonum quod est Habrubi de utilitate lego expectoquae automates processum mutuationis cum programmatis quae hominum commercium exspectant. Habens quadrigis etiam pulchrius autoexpect, generans expecto scriptum in actibus tuis fundatur. Bene deducimus, haec omnia et hic est scriptor perfectus. Solus est valde ingens, et omnia, quia OpenSSL ostentationes testimoniales, claves, et expecto Exspectatio haec omnia expectat. Num hoc opus est? Nec. Totam primam promptam tollimus, ultimam solam relinquens lineam irrumpere 'r'. Usor-Agentum etiam removemus et agros rogamus accipientes - nihil afficiunt. Lorem ergo. Scriptum supplicium est, sed ubi est documentum thesauri HTML? expecto comedit eum. Ut eum exspuant, necesse est ut eum exspuant;

set results $expect_out(buffer)

ante finem scripti - ita scribetur constitutio exsecutabilis expectoom- nium et in scrinio exhiberi. In summa aliquid simile;

expect'a scriptor

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

Sed non omnes! Ut videre potes, in omnibus exemplis petitio URL erat stabilis, sed domicilium id est cuius verbum cum consonantiis coniungetur. Itaque evenit ut constanter verbum "%d0%b7%d0%b4%d0%b5%d1%81%d1%8c" in ASCII quaereremus vel "hic" in UTF-8. Quid facere? Scilicet, modo simpliciter novam scriptionem omni tempore generant, amici! Non ultra autoexpect'O et ope Echo, quod In novo nostro nihil mutatur praeter verbum. Et novam quaestionem vivemus: quomodo intelligenter possumus verbum e cyrilliano in URL forma transferre? Nihil speciale terminatio vel. Bene, bene est, facere possumus, recte? Potest:

Vide quid possum!

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

In summa, habemus scriptum qui verbum in ASCII vertit, alterum scriptum generans qui paginam locum cum sonis a servo per OpenSSL petit. Et tunc ad limam ultimi scripti outputum redigimus et, more prisco, transimus "filter" extra tabellam quadratam scribe eas.

Intersectio multorum. Solum versus

Prorsus hoc ipsum est quod minimas difficultates efficit. Processus praedictas duas voces explicamus, deinde e binis tabulis quae singula verba cum singulis comparamus et si par inuenitur, id outputamus. Scriptum nunc habemus, quod duo verba pro inputatione sumit et elenchum verborum rithimorum cum utroque, et etiam ratione assonantiarum habita, et haec omnia sine manuali commutatione inter quattuor tabs et verba recordans "per oculum" - omnia collecta, computata. nam et abiecta automatice. Mirum.

Finis huius publicationis erat ut ostenderet quod si quis aliquid indiget, id certe faciet. Ipsum inefficax, crooked, creepy, sed operabitur.

Source: www.habr.com

Add a comment