Atong ihap ang mga ahente nga "Inspector"

Dili sekreto nga ang pagkontrolar sa pagbabag sa listahan sa gidili nga impormasyon sa Russia gibantayan sa automated system nga "Inspector". Giunsa kini pagtrabaho maayo ang pagkasulat dinhi niini artikulo sa Habr, hulagway gikan sa samang dapit:

Atong ihap ang mga ahente nga "Inspector"

Gi-install direkta sa provider module nga "Agent Inspector":

Ang module nga "Agent Inspector" usa ka elemento sa istruktura sa automated system nga "Inspector" (AS "Inspector"). Kini nga sistema gidesinyo sa pagmonitor sa pagsunod sa mga operator sa telecom nga adunay mga kinahanglanon sa pagpugong sa pag-access sulod sa gambalay sa mga probisyon nga gitukod sa Artikulo 15.1-15.4 sa Federal Law sa Hulyo 27, 2006 No. 149-FZ "Sa Impormasyon, Teknolohiya sa Impormasyon ug Pagpanalipod sa Impormasyon. ”

Ang nag-unang katuyoan sa paghimo sa AS "Revizor" mao ang pagsiguro sa pag-monitor sa telecom operators 'pagsunod sa mga kinahanglanon nga gitukod sa Artikulo 15.1-15.4 sa Federal nga Balaod sa Hulyo 27, 2006 No. 149-FZ "Sa Impormasyon, Information Technologies ug Information Protection " sa mga termino sa pag-ila sa mga kamatuoran sa pag-access sa gidili nga impormasyon ug pagkuha sa pagsuporta sa mga materyales (data) mahitungod sa mga paglapas aron higpitan ang pag-access sa gidili nga impormasyon.

Gikonsiderar ang kamatuoran nga, kung dili tanan, daghang mga provider ang nag-install niini nga aparato, kinahanglan nga adunay usa ka dako nga network sa mga probe sa beacon sama sa RIPE Atlas ug labi pa, apan adunay sirado nga pag-access. Bisan pa, ang usa ka beacon usa ka beacon aron magpadala mga signal sa tanan nga direksyon, apan unsa man kung makuha naton kini ug makita kung unsa ang atong nakuha ug pila?

Sa dili pa kita mag-ihap, atong tan-awon kung ngano nga posible pa kini.

Usa ka teoriya

Gisusi sa mga ahente ang pagkaanaa sa usa ka kapanguhaan, lakip ang pinaagi sa HTTP(S) nga mga hangyo, sama niini:

TCP, 14678  >  80, "[SYN] Seq=0"
TCP, 80  >  14678, "[SYN, ACK] Seq=0 Ack=1"
TCP, 14678  >  80, "[ACK] Seq=1 Ack=1"

HTTP, "GET /somepage HTTP/1.1"
TCP, 80  >  14678, "[ACK] Seq=1 Ack=71"
HTTP, "HTTP/1.1 302 Found"

TCP, 14678  >  80, "[FIN, ACK] Seq=71 Ack=479"
TCP, 80  >  14678, "[FIN, ACK] Seq=479 Ack=72"
TCP, 14678  >  80, "[ACK] Seq=72 Ack=480"

Dugang sa payload, ang hangyo naglangkob usab sa usa ka hugna sa pagtukod sa koneksyon: pagbayloay SYN ΠΈ SYN-ACK, ug mga hugna sa pagkompleto sa koneksyon: FIN-ACK.

Ang rehistro sa gidili nga impormasyon naglangkob sa pipila ka mga matang sa blocking. Dayag nga, kung ang usa ka kapanguhaan gibabagan sa IP address o ngalan sa domain, nan dili kami makakita sa bisan unsang mga hangyo. Kini ang labing makadaot nga mga matang sa pag-block, nga mosangput sa pagkadili maabut sa tanan nga mga kapanguhaan sa usa ka IP address o tanan nga kasayuran sa usa ka domain. Adunay usab usa ka "pinaagi sa URL" nga matang sa pag-block. Sa kini nga kaso, ang sistema sa pagsala kinahanglan nga mag-parse sa header sa hangyo sa HTTP aron mahibal-an kung unsa gyud ang babagan. Ug sa wala pa kini, ingon sa makita sa ibabaw, kinahanglan adunay usa ka yugto sa pagtukod sa koneksyon nga mahimo nimong sulayan nga masubay, tungod kay lagmit nga ang pagsala mawad-an niini.

Aron mahimo kini, kinahanglan ka nga magpili usa ka angay nga libre nga domain nga adunay "URL" ug tipo sa pag-block sa HTTP aron mapadali ang trabaho sa sistema sa pagsala, labi nga dugay nga gibiyaan, aron maminusan ang pagsulod sa gawas nga trapiko gawas sa mga Ahente. Kini nga buluhaton nahimo nga dili gyud lisud; adunay daghang mga libre nga domain sa rehistro sa gidili nga kasayuran ug alang sa matag lami. Busa, ang domain gipalit ug nalambigit sa mga IP address sa usa ka VPS nga nagdagan tcpdump ug nagsugod ang pag-ihap.

Pag-audit sa "Mga Auditor"

Naglaum ko nga makita ang mga pana-panahong pagbuto sa mga hangyo, nga sa akong opinyon magpakita sa kontroladong aksyon. Imposible nga isulti nga wala gyud nako kini nakita, apan wala’y klaro nga litrato:

Atong ihap ang mga ahente nga "Inspector"

Dili ikatingala, bisan sa usa ka domain nga wala’y kinahanglan ug sa usa ka wala pa magamit nga IP, adunay usa ka tonelada nga wala gipangayo nga kasayuran, sama sa modernong Internet. Apan maayo na lang, nagkinahanglan lang ko og mga hangyo alang sa usa ka piho nga URL, mao nga ang tanang mga scanner ug password crackers daling nakit-an. Dugang pa, dali ra sabton kung diin gibase ang baha sa daghang parehas nga mga hangyo. Sunod, gihugpong nako ang kasubsob sa pagtungha sa mga adres sa IP ug gisusi ang tibuuk nga tumoy nga mano-mano, nga gibulag ang mga wala niini sa miaging mga yugto. Dugang pa, akong giputol ang tanan nga mga tinubdan nga gipadala sa usa ka pakete, wala nay daghan niini. Ug mao kini ang nahitabo:

Atong ihap ang mga ahente nga "Inspector"

Usa ka gamay nga lyrical digression. Usa ka gamay nga labaw pa sa usa ka adlaw ang milabay, ang akong hosting provider nagpadala usa ka sulat nga adunay usa ka labi ka streamline nga sulud, nga nag-ingon nga ang imong mga pasilidad adunay usa ka kapanguhaan gikan sa lista nga gidili sa RKN, mao nga kini gibabagan. Sa una abi nakog na block akong account, dili diay to. Unya naghunahuna ko nga gipasidan-an lang nila ako bahin sa usa ka butang nga nahibal-an ko na. Apan kini nahimo nga ang tig-host gi-on ang pagsala niini sa atubangan sa akong domain ug ingon usa ka sangputanan naa ako sa ilawom sa doble nga pagsala: gikan sa mga taghatag ug gikan sa host. Gipasa lang sa filter ang mga tumoy sa mga hangyo: FIN-ACK ΠΈ RST pagputol sa tanan nga HTTP sa usa ka gidili nga URL. Sama sa imong makita gikan sa graph sa ibabaw, pagkahuman sa unang adlaw nagsugod ako sa pagdawat og gamay nga datos, apan nadawat gihapon nako kini, nga igo na alang sa buluhaton sa pag-ihap sa mga tinubdan sa hangyo.

Adto sa punto. Sa akong opinyon, duha ka pagbuto ang tin-aw nga makita matag adlaw, ang una nga gamay, pagkahuman sa tungang gabii sa oras sa Moscow, ang ikaduha nga hapit sa 6 sa buntag nga adunay ikog hangtod sa 12 sa udto. Ang peak dili mahitabo sa eksaktong parehas nga oras. Sa sinugdan, gusto ko nga mopili sa mga IP address nga nahulog lamang niining mga panahona ug matag usa sa tanang mga panahon, base sa pangagpas nga ang mga pagsusi sa mga Ahente gihimo matag karon ug unya. Apan sa mabinantayon nga pagrepaso, dali nakong nakit-an ang mga panahon nga nahulog sa ubang mga agwat, uban ang ubang mga frequency, hangtod sa usa ka hangyo matag oras. Dayon naghunahuna ko mahitungod sa mga time zone ug nga tingali kini adunay kalabutan niini, unya naghunahuna ko nga sa kinatibuk-an ang sistema mahimong dili ma-synchronize sa tibuok kalibutan. Dugang pa, ang NAT lagmit adunay papel ug ang parehas nga Ahente makahimo sa mga hangyo gikan sa lainlaing mga publiko nga IP.

Tungod kay dili eksakto ang akong una nga katuyoan, giihap nako ang tanan nga mga adres nga akong nakit-an sa usa ka semana ug nakuha - 2791. Ang gidaghanon sa mga sesyon sa TCP nga gitukod gikan sa usa ka adres kay kasagarang 4, nga may median nga 2. Nanguna nga mga sesyon kada adres: 464, 231, 149, 83, 77. Ang kinatas-an gikan sa 95% sa sample mao ang 8 ka sesyon kada adres. Ang median dili kaayo taas, pahinumdoman ko ikaw nga ang graph nagpakita sa usa ka tin-aw nga adlaw-adlaw nga periodicity, aron ang usa makadahom sa usa ka butang sa palibot sa 4 ngadto sa 8 sa 7 ka adlaw. Kung atong ilabay ang tanan nga mga sesyon nga mahitabo kausa, makakuha kita ug median nga katumbas sa 5. Apan dili nako kini iapil base sa usa ka klaro nga sukdanan. Sa kasukwahi, ang usa ka random nga pagsusi nagpakita nga sila adunay kalabutan sa mga hangyo alang sa usa ka gidili nga kapanguhaan.

Ang mga adres mao ang mga adres, apan sa Internet, autonomous nga mga sistema - AS, nga nahimong mas importante 1510, sa aberids nga 2 ka adres matag AS nga adunay median nga 1. Nanguna nga mga adres matag AS: 288, 77, 66, 39, 27. Ang kinatas-an nga 95% sa sample mao ang 4 ka adres matag AS. Dinhi gipaabot ang median - usa ka Ahente matag tighatag. Gipaabot usab namo ang kinatas-an - adunay dagkong mga magdudula niini. Sa usa ka dako nga network, ang mga Ahente kinahanglan tingali nga nahimutang sa matag rehiyon sa presensya sa operator, ug ayaw kalimti ang bahin sa NAT. Kung atong kuhaon kini sa nasud, ang maximum mao ang: 1409 - RU, 42 - UA, 23 - CZ, 36 gikan sa ubang mga rehiyon, dili RIPE NCC. Ang mga hangyo gikan sa gawas sa Russia nakadani sa atensyon. Mahimo kini nga ipasabut sa mga sayup sa geolocation o mga sayup sa registrar kung gipuno ang datos. O ang kamatuoran nga ang usa ka Russian nga kompanya mahimong walay Russian nga mga gamot, o adunay usa ka langyaw nga representante nga buhatan tungod kay kini mao ang mas sayon, nga mao ang natural nga sa diha nga nakig-atubang sa usa ka langyaw nga organisasyon RIPE NCC. Ang pila ka bahin sa walay duhaduha sobra, apan masaligan nga lisud ang pagbulag niini, tungod kay ang kapanguhaan gibabagan, ug gikan sa ikaduha nga adlaw ubos sa doble nga pag-block, ug kadaghanan sa mga sesyon usa ra ka pagbinayloay sa daghang mga pakete sa serbisyo. Magkasabot ta nga kini gamay nga bahin.

Kini nga mga numero mahimo nang itandi sa gidaghanon sa mga provider sa Russia. Sumala sa RKN mga lisensya alang sa "Mga serbisyo sa komunikasyon alang sa pagpasa sa datos, wala'y labot ang tingog" - 6387, apan kini usa ka taas kaayo nga banabana gikan sa itaas, dili tanan niini nga mga lisensya espesipikong magamit sa mga Internet providers nga kinahanglan mag-install ug Ahente. Sa RIPE NCC zone adunay susama nga gidaghanon sa mga ASes nga narehistro sa Russia - 6230, diin dili tanan mga providers. Naghimo ang UserSide og mas estrikto nga kalkulasyon ug nakadawat sa 3940 nga mga kompanya sa 2017, ug kini usa ka banabana gikan sa taas. Sa bisan unsa nga kaso, kami adunay duha ug tunga ka pilo nga mas gamay nga gidaghanon sa mga nalamdagan nga AS. Apan dinhi angay nga sabton nga ang AS dili estrikto nga katumbas sa provider. Ang ubang mga provider walay kaugalingong AS, ang uban adunay labaw pa sa usa. Kung atong hunahunaon nga ang tanan adunay mga Ahente, nan adunay usa nga nagsala nga labi ka kusog kaysa sa uban, aron ang ilang mga hangyo dili mailhan gikan sa basura, kung maabot nila kini. Apan alang sa usa ka kasarangan nga pagtimbang-timbang kini maagwanta, bisan kung adunay nawala tungod sa akong pagdumala.

Mahitungod sa DPI

Bisan pa sa kamatuoran nga ang akong hosting provider mibalik sa iyang filter sugod sa ikaduhang adlaw, base sa impormasyon gikan sa unang adlaw kita makahinapos nga ang blocking nagtrabaho nga malampuson. 4 lang ka tinubdan ang nakalusot ug nakakompleto sa HTTP ug TCP sessions (sama sa pananglitan sa ibabaw). Laing 460 mahimong ipadala GET, apan ang sesyon gitapos dayon sa RST. paminaw sa TTL:

TTL 50, TCP, 14678  >  80, "[SYN] Seq=0"
TTL 64, TCP, 80  >  14678, "[SYN, ACK] Seq=0 Ack=1"
TTL 50, TCP, 14678  >  80, "[ACK] Seq=1 Ack=1"

HTTP, "GET /filteredpage HTTP/1.1"
TTL 64, TCP, 80  >  14678, "[ACK] Seq=1 Ack=294"

#Π’ΠΎΡ‚ это прислал Ρ„ΠΈΠ»ΡŒΡ‚Ρ€
TTL 53, TCP, 14678  >  80, "[RST] Seq=3458729893"
TTL 53, TCP, 14678  >  80, "[RST] Seq=3458729893"

HTTP, "HTTP/1.1 302 Found"

#А это ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ° исходного ΡƒΠ·Π»Π° ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΏΠΎΡ‚Π΅Ρ€ΡŽ
TTL 50, TCP ACKed unseen segment, 14678 > 80, "[ACK] Seq=294 Ack=145"

TTL 50, TCP, 14678  >  80, "[FIN, ACK] Seq=294 Ack=145"
TTL 64, TCP, 80  >  14678, "[FIN, ACK] Seq=171 Ack=295"

TTL 50, TCP Dup ACK 14678 > 80 "[ACK] Seq=295 Ack=145"

#Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉ ΡƒΠ·Π΅Π» ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅Ρ‚ Ρ‡Ρ‚ΠΎ сСссия Ρ€Π°Π·Ρ€ΡƒΡˆΠ΅Π½Π°
TTL 50, TCP, 14678  >  80, "[RST] Seq=294"
TTL 50, TCP, 14678  >  80, "[RST] Seq=295"

Ang mga kalainan niini mahimong lahi: dili kaayo RST o daghan pa nga mga retransmit - depende usab kung unsa ang ipadala sa filter sa gigikanan nga node. Sa bisan unsang kaso, kini ang labing kasaligan nga template, diin klaro nga kini usa ka gidili nga kapanguhaan nga gihangyo. Dugang pa adunay kanunay nga tubag nga makita sa sesyon nga adunay TTL mas dako kay sa nangagi ug sunod nga mga pakete.

Dili nimo kini makita gikan sa uban GET:

TTL 50, TCP, 14678  >  80, "[SYN] Seq=0"
TTL 64, TCP, 80  >  14678, "[SYN, ACK] Seq=0 Ack=1"

#Π’ΠΎΡ‚ это прислал Ρ„ΠΈΠ»ΡŒΡ‚Ρ€
TTL 53, TCP, 14678  >  80, "[RST] Seq=1"

O sa ingon:

TTL 50, TCP, 14678  >  80, "[SYN] Seq=0"
TTL 64, TCP, 80  >  14678, "[SYN, ACK] Seq=0 Ack=1"
TTL 50, TCP, 14678  >  80, "[ACK] Seq=1 Ack=1"

#Π’ΠΎΡ‚ это прислал Ρ„ΠΈΠ»ΡŒΡ‚Ρ€
TTL 53, TCP, 14678  >  80, "[RST, PSH] Seq=1"

TTL 50, TCP ACKed unseen segment, 14678 > 80, "[FIN, ACK] Seq=89 Ack=172"
TTL 50, TCP ACKed unseen segment, 14678 > 80, "[FIN, ACK] Seq=89 Ack=172"

#ΠžΠΏΡΡ‚ΡŒ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€, ΠΌΠ½ΠΎΠ³ΠΎ Ρ€Π°Π·
TTL 53, TCP, 14678  >  80, "[RST, PSH] Seq=1"
...

Ang kalainan klaro nga makita TTL kung adunay gikan sa filter. Apan sa kasagaran walay moabut sa tanan:

TCP, 14678  >  80, "[SYN] Seq=0"
TCP, 80  >  14678, "[SYN, ACK] Seq=0 Ack=1"
TCP Retransmission, 80 > 14678, "[SYN, ACK] Seq=0 Ack=1"
...

O sa ingon:

TCP, 14678  >  80, "[SYN] Seq=0"
TCP, 80  >  14678, "[SYN, ACK] Seq=0 Ack=1"
TCP, 14678  >  80, "[ACK] Seq=1 Ack=1"

#ΠŸΡ€ΠΎΡˆΠ»ΠΎ нСсколько сСкунд Π±Π΅Π· Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ°

TCP, 80  >  14678, "[FIN, ACK] Seq=1 Ack=1"
TCP Retransmission, 80 > 14678, "[FIN, ACK] Seq=1 Ack=1"
...

Ug kining tanan gisubli ug gisubli ug gisubli, ingon sa makita sa graph, labaw sa kausa, matag adlaw.

Mahitungod sa IPv6

Ang maayong balita mao nga kini anaa. Masaligan ko nga isulti nga ang matag karon nga mga hangyo sa usa ka gidili nga kapanguhaan mahitabo gikan sa 5 nga lainlaing mga adres sa IPv6, nga mao gyud ang pamatasan sa mga Ahente nga akong gipaabut. Dugang pa, ang usa sa mga adres sa IPv6 dili mahulog sa ilawom sa pagsala ug nakita nako ang usa ka bug-os nga sesyon. Gikan sa duha pa akong nakita usa ra ka wala mahuman nga sesyon, usa niini nabalda sa RST gikan sa filter, ikaduha sa panahon. Kinatibuk-ang kantidad 7.

Tungod kay gamay ra ang mga adres, akong gitun-an ang tanan sa detalye ug nahimo nga 3 ra ang mga providers didto, mahimo silang hatagan og standing ovation! Ang laing adres mao ang cloud hosting sa Russia (wala magsala), ang lain usa ka research center sa Germany (adunay filter, asa?). Apan nganong gisusi nila ang pagkaanaa sa gidili nga mga kapanguhaan sa usa ka iskedyul usa ka maayong pangutana. Ang nahabilin nga duha naghimo sa usa ka hangyo ug nahimutang sa gawas sa Russia, ug ang usa niini gisala (sa transit, pagkahuman sa tanan?).

Ang Pag-block ug Ahente usa ka dakong babag sa IPv6, ang pagpatuman niini dili kaayo paspas. Makasubo kini. Kadtong nakasulbad niini nga problema mahimong bug-os nga mapahitas-on sa ilang kaugalingon.

Sa konklusyon

Wala ako maningkamot alang sa 100% nga katukma, palihug pasayloa ako alang niini, nanghinaut ko nga adunay gusto nga sublion kini nga buhat nga adunay labi ka tukma. Mahinungdanon alang kanako nga masabtan kung kini nga pamaagi molihok sa prinsipyo. Ang tubag kay oo. Ang nakuha nga mga numero, ingon usa ka una nga gibanabana, sa akong hunahuna, kasaligan kaayo.

Unsa pa unta ang mahimo ug kung unsa ang akong tapulan nga buhaton mao ang pag-ihap sa mga hangyo sa DNS. Wala sila gisala, apan wala usab sila maghatag ug daghang katukma tungod kay nagtrabaho lamang sila alang sa domain, ug dili alang sa tibuuk nga URL. Ang frequency kinahanglan nga makita. Kung imong isagol kini sa kung unsa ang direkta nga makita sa mga pangutana, kini magtugot kanimo sa pagbulag sa wala kinahanglana ug makakuha dugang nga kasayuran. Posible pa nga mahibal-an ang mga nag-develop sa DNS nga gigamit sa mga provider ug daghan pa.

Wala gyud ko magdahom nga ang tigdumala maglakip usab sa kaugalingon nga filter alang sa akong VPS. Tingali kini komon nga praktis. Sa katapusan, ang RKN nagpadala usa ka hangyo nga papason ang kapanguhaan sa host. Apan kini wala makapakurat kanako ug sa pipila ka mga paagi milampos pa gani sa akong kaayohan. Epektibo kaayo nga nagtrabaho ang filter, giputol ang tanan nga husto nga mga hangyo sa HTTP sa usa ka gidili nga URL, apan dili husto ang mga naagi sa filter sa mga provider nga nakaabot kanila, bisan pa sa porma sa mga katapusan: FIN-ACK ΠΈ RST - minus alang sa minus ug kini hapit nahimo nga usa ka plus. Pinaagi sa dalan, ang IPv6 wala gisala sa host. Siyempre, kini nakaapekto sa kalidad sa nakolekta nga materyal, apan kini nagpaposible gihapon nga makita ang frequency. Nahibal-an nga kini usa ka hinungdanon nga punto kung nagpili usa ka site alang sa pagbutang sa mga kahinguhaan; ayaw kalimti ang interes sa isyu sa pag-organisar sa trabaho nga adunay lista sa mga gidili nga mga site ug mga hangyo gikan sa RKN.

Sa sinugdanan, gikumpara nako ang AS "Inspector" sa RIPE Atlas. Kini nga pagtandi makatarunganon ug usa ka dako nga network sa mga Ahente mahimong mapuslanon. Pananglitan, ang pagtino sa kalidad sa pagkaanaa sa kapanguhaan gikan sa lain-laing mga provider sa lain-laing mga bahin sa nasud. Mahimo nimong kuwentahon ang mga paglangan, makahimo ka og mga graph, mahimo nimong analisahon ang tanan ug makita ang mga pagbag-o nga nahitabo sa lokal ug sa tibuok kalibutan. Dili kini ang labing direkta nga paagi, apan ang mga astronomo naggamit sa "standard nga mga kandila", nganong dili gamiton ang mga Ahente? Nahibal-an (nakaplagan) ang ilang sumbanan nga pamatasan, mahimo nimong mahibal-an ang mga pagbag-o nga nahitabo sa ilang palibot ug kung giunsa kini makaapekto sa kalidad sa mga serbisyo nga gihatag. Ug sa samang higayon, dili nimo kinahanglan nga independente nga ibutang ang mga pagsusi sa network; Gi-install na kini sa Roskomnadzor.

Ang laing punto nga gusto nakong hikap mao nga ang matag himan mahimong hinagiban. AS "Inspector" usa ka sirado nga network, apan ang mga Ahente nagtugyan sa tanan pinaagi sa pagpadala sa mga hangyo alang sa tanan nga mga kapanguhaan gikan sa gidili nga listahan. Ang pagbaton sa ingon nga kapanguhaan wala gayoy bisan unsang mga problema. Sa kinatibuk-an, ang mga providers pinaagi sa mga Ahente, nga wala tuyoa, nagsulti sa daghan pa mahitungod sa ilang network kay sa lagmit nga bili niini: DPI ug DNS nga mga matang, lokasyon sa Ahente (sentro nga node ug network sa serbisyo?), Mga marka sa network sa mga paglangan ug pagkawala - ug kini mao ang lamang ang labing klaro. Sama nga ang usa ka tawo makamonitor sa mga aksyon sa mga Ahente aron mapaayo ang pagkaanaa sa ilang mga kahinguhaan, adunay makahimo niini alang sa ubang mga katuyoan ug wala’y mga babag niini. Ang resulta mao ang usa ka double-edged ug kaayo multifaceted instrumento, bisan kinsa makakita niini.

Source: www.habr.com

Idugang sa usa ka comment