-Âèäåî

Ãîíèì
Ñìîòðåëè: 39 (0)

 -Ïîäïèñêà ïî e-mail

 

 -Ïîèñê ïî äíåâíèêó

Ïîèñê ñîîáùåíèé â _Hacking_

 -Ñòàòèñòèêà

Ñòàòèñòèêà LiveInternet.ru: ïîêàçàíî êîëè÷åñòâî õèòîâ è ïîñåòèòåëåé
Ñîçäàí: 11.05.2006
Çàïèñåé:
Êîììåíòàðèåâ:
Íàïèñàíî: 4992


Èñïîëüçóåì ñëóæåáíûé èíòåðíåò ïî ìàêñèìóìó

Ïÿòíèöà, 12 Ìàÿ 2006 ã. 01:56 + â öèòàòíèê
:)
Ðóáðèêè:  Âçëîì

_Hacking_   îáðàòèòüñÿ ïî èìåíè Ïÿòíèöà, 12 Ìàÿ 2006 ã. 01:56 (ññûëêà)
 ëþáèìîì èíñòèòóòå (â øêîëå, íà ðàáîòå, â áîëüíè÷íîé ïàëàòå) íàêîíåö íàëàäèëè iNet. Ïîÿâèëñÿ ïîëíîöåííûé è øèðîêèé êàíàë. Êàçàëîñü áû, âîò îí, ðóëåç! Þçàé è íàñëàæäàéñÿ! Íî íå òóò-òî áûëî: îêàçûâàåòñÿ, ÷òî âñå ïîïûòêè äîñòóïà ê mp3, avi è mpg çëîñòíûì îáðàçîì ïðåñåêàþòñÿ è ëîãèðóþòñÿ. Îíî è ïîíÿòíî: áîëüøèå ñóðîâûå äÿäè (à òàêæå íå ìåíåå áîëüøèå è ñóðîâûå òåòè), âëîæèâøèå ñâîè äåíüãè â ñòîëü æåëàííûé êàíàë, ñîâñåì íå õîòÿò, ÷òîáû îí áûë èñïîëüçîâàí äëÿ ñêà÷èâàíèÿ ãèãîâ ìóçîíà è ôèëüìîâ. Ïîýòîìó è ïîëó÷àåòñÿ, ÷òî õîòü ýòîò Èíåò øèðîê è õàëÿâåí, à èñïîëüçîâàòü åãî â ñâîå óäîâîëüñòâèå íèêàê íåëüçÿ.

Çíàêîìàÿ ñèòóàöèÿ, äà?

Äàâàé äóìàòü: åñëè íå ïîëó÷àåòñÿ ñêà÷àòü mp3-øêó, çíà÷èò â êàêîé-òî ìîìåíò ôèëüòðóþùàÿ ñèñòåìà ïðèõîäèò ê âûâîäó, ÷òî ýòî èìåííî mp3, à íå html èëè, ñêàæåì, jpg. Îáðàòè âíèìàíèå: ìíå íå èíòåðåñíî, êàê èìåííî ýòî ïðîèñõîäèò. Ìîæåò áûòü àíàëèçèðóåòñÿ òîëüêî ðàñøèðåíèå ôàéëà (÷àùå âñåãî) èëè íàëè÷åñòâóåò ïîïûòêà îïîçíàòü åãî òèï ïî çàãîëîâêó, à ìîæåò áûòü èìÿ ñåðâàêà, íà êîòîðîì ëåæèò æåëàííûé ìóçîí, ïîïàëî â ÷åðíûé ñïèñîê. Èçîùðåííîñòü è êîëè÷åñòâî ïîäîáíûõ ïðîâåðîê îïðåäåëÿþòñÿ ëèøü êâàëèôèêàöèåé àäìèíà è åãî íåëþáîâüþ ê ñâîèì ïîäîïå÷íûì. Âàæíî çíàòü ëèøü òî, ÷òî, èçìåíèâ ðàñøèðåíèå ôàéëà è õîðîøåíüêî ïåðåâîðîøèâ åãî âíóòðåííîñòè, ìîæíî óñïåøíî ïðåîäîëåòü âñå ýòè ôèëüòðû è äàæå ïðîéòè ñàìóþ çëóþ è ñòðîãóþ ïðîâåðêó - ïðîâåðêó íåïîñðåäñòâåííî àäìèíîì (õîòÿ ïîäîáíóþ ÷åñòü íàäî åùå çàñëóæèòü). Íî ÿ íà÷íó ñ ñàìîãî ïðîñòîãî ñïîñîáà.

FTP => FTP

Êàê ÿ óæå ñêàçàë, ýòî - ñàìûé ïðîñòîé ìåòîä ðåøåíèÿ íàñóùíîé ïðîáëåìû (â òîì ïëàíå, ÷òî íå íóæíî ïèñàòü íèêàêèõ ñêðèïòîâ), íî, ê ñîæàëåíèþ, åãî ïðèìåíèìîñòü ñèëüíî îãðàíè÷åíà. Îí ñîñòîèò â ñëåäóþùåì. Î÷åíü ÷àñòî âñåì ïîëüçîâàòåëÿì (â øêîëå, èíñòèòóòå, â îáùåì, â ðàññìàòðèâàåìîé îðãàíèçàöèè) ïðåäîñòàâëÿþò ftp-äîñòóï èçâíå, ÷òîáû îíè ìîãëè ðàáîòàòü ñî ñâîèì ôàéëàìè, íàïðèìåð, èç äîìà. Åñëè ýòî òàê è, êðîìå òîãî, åñëè íóæíûé ôàéë (æåëàííûé ìóçîí èëè âèäåî) ëåæèò íà êàêîì-ëèáî ftp-ñåðâåðå, òî ìîæíî ïîïðîáîâàòü ïåðåäàòü ôàéë îò èñõîäíîãî ftp-ñåðâåðà ñâîåìó. Åñëè ïîëó÷èòñÿ - ïðîáëåìà áóäåò ðåøåíà, ò.ê. ôèëüòðû, óïîìèíàâøèåñÿ âûøå, êàê ïðàâèëî, àíàëèçèðóþò òîëüêî HTTP-òðàôôèê. Îäíàêî, ÷òîáû îñóùåñòâèòü òàêîé òðàíñôåðò, íåîáõîäèìî ðàçîáðàòüñÿ ñ ïðîòîêîëîì FTP (ïîñòàðàéñÿ âíèêíóòü - ýòî ïîíàäîáèòñÿ â äàëüíåéøåì). Èòàê, FTP. Ýòîò ïðîòîêîë ïðåäíàçíà÷åí äëÿ ïåðåäà÷è ôàéëîâ (÷òî, â îáùåì, íåóäèâèòåëüíî, ò.ê. FTP - File Transfer Protocol) è ÿâëÿåòñÿ ïðîòîêîëîì ïðèêëàäíîãî óðîâíÿ. Ðàçóìååòñÿ, ïåðâîå, ÷òî íóæíî ñäåëàòü, - ýòî ïðèêîííåêòèòüñÿ íà 21 ïîðò (ïîðò ftp ïî óìîë÷àíèþ) ñîîòâåòñòâóþùåãî ñåðâåðà. Óñòàíîâëåííîå ïðè ýòîì ñîåäèíåíèå ïðåäíàçíà÷åíî äëÿ ïåðåäà÷è êîìàíä íà ñåðâåð è ïðèíÿòèÿ îòêëèêà íà íèõ. ×òîáû ïåðåäàòü äàííûå, ñëåäóåò îòêðûòü åùå îäíî ñîåäèíåíèå. Òóò âîçíèêàåò âîïðîñ: êòî ê êîìó áóäåò êîííåêòèòüñÿ? Êàê íè ñòðàííî, âîçìîæíû òîëüêî äâà âàðèàíòà: ëèáî êëèåíò ê ñåðâåðó (ïàññèâíûé ðåæèì ñåðâåðà), ëèáî íàîáîðîò (àêòèâíûé ðåæèì).  ïåðâîì ñëó÷àå, ïîñëå òîãî êàê êëèåíò ñîîáùèò ñåðâåðó î ñâîåì æåëàíèè îòêðûòü ñîåäèíåíèå äàííûõ, ñåðâåð óêàçûâàåò êëèåíòó àäðåñ è ïîðò, êóäà êëèåíòó ñëåäóåò êîííåêòèòüñÿ (î÷åíü ÷àñòî óêàçûâàåìûé àäðåñ ÿâëÿåòñÿ àäðåñîì ñåðâåðà). Âî âòîðîì ñëó÷àå êëèåíò óêàçûâàåò ñåðâåðó àäðåñ è ïîðò, êóäà òîò äîëæåí êîííåêòèòüñÿ. Ïîñëå ýòîãî óñòàíàâëèâàåòñÿ ñîåäèíåíèå äàííûõ è ìîæíî îòäàâàòü ñåðâåðó êîìàíäû ðàáîòû ñ ôàéëàìè. Îáðàòè âíèìàíèå: ñïîñîá óñòàíîâêè ñîåäèíåíèÿ äàííûõ (êòî ê êîìó êîííåêòèòñÿ) è íàïðàâëåíèå ïåðåäà÷è ôàéëà ÷åðåç íåãî (ò.å. îò ñåðâåðà èëè íàîáîðîò) íèêàê íå ñâÿçàíû. Ñîåäèíåíèå äàííûõ ìîæåò óñòàíàâëèâàòüñÿ è ðàçðûâàòüñÿ íåñêîëüêî ðàç çà îäíó ñåññèþ; íàïðèìåð, êîãäà òû þçàåøü CuteFTP, FAR èëè äðóãóþ ïðîãðàììó-êëèåíò, òî êàæäûé ðàç ïðè ïåðåõîäå èç îäíîãî êàòàëîãà â äðóãîé îíè çàïðàøèâàþò ñïèñîê ôàéëîâ â òåêóùåé äèðåêòîðèè, ïðè ýòîì óñòàíàâëèâàåòñÿ ñîåäèíåíèå äàííûõ, îòïðàâëÿåòñÿ íà ñåðâåð ñîîòâåòñòâóþùàÿ êîìàíäà, åå ðåçóëüòàò (ñïèñîê ôàéëîâ) ïðèíèìàåòñÿ ÷åðåç ñîåäèíåíèå äàííûõ è çàòåì îíî ðàçðûâàåòñÿ. Âåðíåìñÿ òåïåðü ê äâóì ftp-ñåðâåðàì, ìåæäó êîòîðûìè íóæíî ïåðåäàòü ôàéë. Åñëè îäèí èç íèõ ïåðåâåñòè â ïàññèâíûé ðåæèì (îí ñîîáùèò àäðåñ è ïîðò), à äðóãîé - â àêòèâíûé (óêàçàâ òîëüêî ÷òî ïîëó÷åííûå îò ïåðâîãî ñåðâåðà àäðåñ è ïîðò), òî ìåæäó íèìè óñòàíîâèòñÿ ñîåäèíåíèå è ìîæíî áóäåò ïåðåäàòü ôàéë. Íè÷åãî íå ïîíÿë? ÎÊ, ïîåõàëè ïîäðîáíî. Ïðåæäå âñåãî ñëåäóåò ïðèêîííåêòèòüñÿ ê îáîèì ñåðâåðàì (èñïîëüçóÿ ëþáîé telnet) è çàëîãèíèòüñÿ, èñïîëüçóÿ êîìàíäû USER è PASS, íàïðèìåð:
USER ivanov
PASS qwerty
Ñêîðåå âñåãî, íà ñåðâåð, ñîäåðæàùèé íóæíûé ôàéë, òåáå ïðèäåòñÿ êîííåêòèòüñÿ àíîíèìíî, ò.å. èñïîëüçóÿ â êà÷åñòâå èìåíè ïîëüçîâàòåëÿ "anonymous", à â êà÷åñòâå ïàðîëÿ - ëþáîå ìûëî. Çàòåì ñëåäóåò êîìàíäîé "TYPE I" óêàçàòü, ÷òî òû ñîáèðàåøüñÿ ïåðåäàâàòü ôàéë êàê áèíàðíûå äàííûå. Äàëåå íàäî ââåñòè êîìàíäû PASV èëè PORT, êîòîðûå ïåðåâåäóò ñåðâåð â ïàññèâíûé èëè àêòèâíûé ðåæèì ñîîòâåòñòâåííî. Ïåðåâåäåì îäèí èç ñåðâåðîâ â ïàññèâíûé ðåæèì:
PASV
227 Entering passive mode (213,180,190,56,222,116)
(Ïåðâàÿ ñòðîêà - ýòî ââåäåííàÿ êîìàíäà, âòîðàÿ - îòâåò ñåðâåðà.)
À äðóãîé - â àêòèâíûé, èñïîëüçóÿ ïîëó÷åííûå òîëüêî ÷òî àäðåñ è ïîðò (213.180.190.56:56948, ãäå íîìåð ïîðòà åñòü 222 * 256 + 116):
PORT 213,180,190,56,222,116
200 PORT command OK
Ðåæèì, àäðåñ è ïîðò, óñòàíàâëèâàåìûå ýòèìè êîìàíäàìè, íå ìåíÿþòñÿ äî òåõ ïîð, ïîêà îäíà èç íèõ íå áóäåò âûçâàíà ñíîâà. Äàëåå, êîìàíäà "CWD <ïóòü ê ôàéëó>" èçìåíèò òåêóùóþ äèðåêòîðèþ (ïðè ýòîì, ÷òîáû íå çàáëóäèòñÿ, ìîæíî èñïîëüçîâàòü êîìàíäó PWD, êîòîðàÿ âîçâðàùàåò òåêóùèé êàòàëîã). Îäíàêî äåëî îñëîæíÿåòñÿ òåì, ÷òî êîìàíäà, âîçâðàùàþùàÿ ñïèñîê ôàéëîâ â òåêóùåé äèðåêòîðèè (êîìàíäà "LIST") ïåðåäàåò ðåçóëüòàò â ñîåäèíåíèå äàííûõ, è óâèäåòü åãî íå òàê ïðîñòî. Ïîýòîìó íàäî ñíà÷àëà êàêèì-ëèáî ñïîñîáîì âûÿñíèòü òî÷íûé ïóòü ê ôàéëó, êîòîðûé íóæíî ñêà÷àòü, íàïðèìåð, "/pub/R/Robert_Miles/mp3/fable.mp3", è òîãäà îñòàíåòñÿ âûïîëíèòü íà ñåðâåðå òîëüêî îäíó êîìàíäó: "CWD /pub/R/Robert_Miles/mp3". Íàêîíåö êîìàíäû îòïðàâêè è ïðèåìà ôàéëà: "RETR <èìÿ ôàéëà>" è "STOR <èìÿ ôàéëà>". È êîððåêòíûé âûõîä: "QUIT". Êàê ÿ óæå ãîâîðèë, ýòîò ñïîñîá ÿâëÿåòñÿ ñàìûì ïðîñòûì, íî èìååò ñóùåñòâåííûå íåäîñòàòêè. Òàê, âî-ïåðâûõ, â ðàññìàòðèâàåìîé îðãàíèçàöèè ftp-äîñòóïà èçâíå ìîæåò íå áûòü âîîáùå. Âî-âòîðûõ, íóæíûé ôàéë ìîæåò íå ëåæàòü íè íà îäíîì ftp-ñåðâåðå, è â òðåòüèõ, ìíîãèå ftp-ñåðâåðà ìîãóò ðàáîòàòü òîëüêî â ïàññèâíîì ðåæèìå (ëèáî ìîãóò íå ïîçâîëèòü ïåðåâåñòè ñåáÿ â àêòèâíûé ðåæèì ñ àäðåñîì, îòëè÷íûì îò àäðåñà êëèåíòà).

Åñòü ñïîñîá ëó÷øå

 ñàìîì íà÷àëå ñòàòüè ÿ ãîâîðèë î òîì, ÷òî, èçìåíèâ èìÿ, ðàñøèðåíèå è ñîäåðæèìîå ôàéëà, åãî ìîæíî âûäàòü çà äðóãîé ôàéë è ïðîéòè âñå ôèëüòðû. Ýòî îçíà÷àåò, ÷òî ãäå-íèáóäü â Èíåòå íà êàêîì-íèáóäü ñåðâàêå íóæíî ïîëó÷èòü îïðåäåëåííûì îáðàçîì èçìåíåííóþ êîïèþ ôàéëà, ïðè÷åì òàêóþ, êîòîðàÿ íå âûçîâåò ïîäîçðåíèÿ ó ôèëüòðóþùåé ñèñòåìû, êîãäà òû áóäåøü åå êà÷àòü. Ïðåäëàãàþ äåëàòü ýòî òàê: êóïèòü 2-3 ìåòðà ó õîñòèíã-ïðîâàéäåðà (åäèíñòâåííîå òðåáîâàíèå: perl + èñõîäÿùèå ñîêåòû), çàðåãèñòðèðîâàòü ëþáîå äîìåííîå èìÿ (åãî òîæå íóæíî âûáèðàòü ñ óìîì) è ðàçìåñòèòü òàì ñêðèïò, êîòîðûé ñêà÷àåò íóæíûé ôàéë è ñîõðàíèò â èçìåíåííîì âèäå. Äàëåå áóäåò ñêà÷èâàòüñÿ ýòîò ôàéë, ÷òî è ðåøèò ïðîáëåìó. Ðàçóìååòñÿ, ïîêóïàòü ìåñòî âîâñå íåîáÿçàòåëüíî, äîñòàòî÷íî ÷òîáû áûëè óäîâëåòâîðåíû ýòè óñëîâèÿ. Òàê ÷òî åñëè ðåøèøü èñïîëüçîâàòü êàêîé-ëèáî õàëÿâíûé õîñòèíã, óòî÷íè âîçìîæíîñòü ðàçìåùåíèÿ ñîáñòâåííûõ pelr-ñêðèïòîâ, ñîçäàþùèõ èñõîäÿùèå ñîêåòû. Îäíàêî â êðàéíåì ñëó÷àå âñå ýòî ìîæíî è êóïèòü (íàñêîëüêî ìíå èçâåñòíî, ñåé÷àñ ìîæíî çà 3$ â ìåñÿö êóïèòü 2 ìåòðà, ê êîòîðûì áóäåò ïðèëàãàòüñÿ áåñïëàòíîå äîìåííîå èìÿ â çîíå spb.ru èëè msk.ru + perl + ñîêåòû). Èìÿ õîñòà, êàê ÿ óæå ãîâîðèë, íàäî âûáèðàòü ñ óìîì. Íèêàêèå "31337.spb.ru" èëè "www.admin_pridurok.narod.ru" íå ãîäÿòñÿ, èáî áóäóò âûçûâàòü ïîäîçðåíèå, à çíà÷èò âåëèêà âåðîÿòíîñòü òîãî, ÷òî â îäèí ïðåêðàñíûé ìîìåíò ýòî èìÿ áóäåò âíåñåíî â ÷åðíûé ñïèñîê è áîëüøàÿ ÷àñòü òðóäîâ ïîéäåò êîòó ïîä õâîñò. Ñàìûé ëó÷øèé âàðèàíò - ýòî âûäàâàòü ñêà÷èâàåìûé ôàéë çà ÷òî-ëèáî, îòíîñÿùååñÿ ê ó÷åáå/ðàáîòå, ïîýòîìó èìÿ ñåðâàêà òîæå äîëæíî èìåòü ê ýòîìó êàêîå-ëèáî îòíîøåíèå. Çäåñü, íàäåþñü, ïðîáëåì âîçíèêíóòü íå äîëæíî, òàê ÷òî ïåðåéäåì ê ñàìîìó îòâåòñòâåííîìó - íàïèñàíèþ ñêðèïòà, êîòîðûé ñêà÷àåò íóæíûé ôàéë, ïåðåâîðîøèò åãî ñîäåðæèìîå è ñîõðàíèò ïîä äðóãèì èìåíåì.
HTTP => http
Èòàê, ñàìîå âàæíîå - perl-ñêðèïò. ×òîáû ïîíÿòü íàïèñàííîå íèæå, òåáå ïîòðåáóåòñÿ êàê ìèíèìóì çíàòü îñíîâû Perl. Ýòîò ÿçûê äîâîëüíî ðàñïðîñòðàíåí, ïîýòîìó íàéòè ñîîòâåòñòâóþùóþ èíôîðìàöèþ òðóäà íå ñîñòàâèò. Îäíàêî áëèæå ê òåëó. Âñå ñêðèïòû, èñïîëüçóþùèå ñîêåòû, äîëæíû ñîäåðæàòü â íà÷àëå ñëåäóþùóþ ñòðîêó:
use Socket;
êîòîðàÿ óêàçûâàåò íà òî, ÷òî äëÿ ðàáîòû ñêðèïòà íåîáõîäèìî ïîäêëþ÷åíèå ñîîòâåòñòâóþùåãî ìîäóëÿ. Êðîìå ýòîé êîìàíäû, íèêàêèõ äðóãèõ ñïåöèàëüíûõ äèðåêòèâ äëÿ ðàáîòû íå ïîòðåáóåòñÿ.
Ïåðâîå, ÷òî íóæíî íàó÷èòñÿ äåëàòü, - ýòî êîííåêòèòüñÿ ê ïðîèçâîëüíîìó ñåðâàêó íà ïðîèçâîëüíûé ïîðò. Äåëàåòñÿ ýòî òàêèì îáðàçîì:
$sin=sockaddr_in($xport, inet_aton($xhost));
socket(HTTPCMD, PF_INET, SOCK_STREAM, getprotobyname('tcp'));
if (!connect(HTTPCMD, $sin)) {<ñîîáùàåì, ÷òî êîííåêò íå óäàëñÿ>exit;}
 ïåðåìåííûõ $xport è $xhost äîëæíû íàõîäèòüñÿ íîìåð ïîðòà è èìÿ õîñòà èëè åãî ip-àäðåñ. Ôóíêöèÿ connect ïûòàåòñÿ ñäåëàòü íå÷òî ñîîòâåòñòâóþùåå åå íàçâàíèþ, è åñëè ýòî íå óäàåòñÿ, îíà âîçâðàùàåò 0. Åñëè æå âñå õîðîøî, òî HTTPCMD áóäåò äåñêðèïòîðîì ñîçäàííîãî ñîåäèíåíèÿ. Ðàçðûâ ñîåäèíåíèÿ áóäåò âûãëÿäåòü ïîäîáíî çàêðûòèþ ôàéëà: close(HTTPCMD); Ïîñûëàòü äàííûå ïî óñòàíîâëåííîìó ñîåäèíåíèþ áóäåì òàê:
send HTTPCMD, "$mydata", 0;
À ïðèíèìàòü äàííûå áóäåì, ÷èòàÿ èç ñîåäèíåíèÿ êàê èç ôàéëà:
$newline = ;
Òåïåðü ïîïðîáóé ñàìîñòîÿòåëüíî íàïèñàòü ñêðèïò, êîòîðûé êîííåêòèòñÿ íà êàêîé-íèáóäü ñåðâåð, ÷èòàåò/ïèøåò îòòóäà/òóäà ÷òî-íèáóäü, à çàòåì çàêðûâàåò ñîåäèíåíèå, ÷òîáû ýòîò ïðîöåññ ñòàë äëÿ òåáÿ ñîâñåì ïðîçðà÷íûì. Åñëè òû ïîïðîáîâàë ýòî ñäåëàòü, òî, âåðîÿòíî, óæå óñïåë îùóòèòü âñþ ìîùü, êîòîðóþ ïðåäîñòàâëÿþò ñêðèïòû, ñîçäàþùèå ñîåäèíåíèÿ. Êàéô çàêëþ÷àåòñÿ â òîì, ÷òî âñå ýòè ñîåäèíåíèÿ îñóùåñòâëÿþòñÿ îò èìåíè ñåðâàêà õîñòèíã-ïðîâà, íà êîòîðîì îíè çàïóñêàþòñÿ, à ýòîò ñåðâàê, â îòëè÷èå îò äîìàøíåãî êîìïà, èìååò ñîâåðøåííî íåìåðåíûé êàíàë, íå ãîâîðÿ óæå ïðî òî, ÷òî ðàáîòàåò ïîñòîÿííî. Ïîýòîìó âñå ïðîãè, òðåáóþùèå áîëüøîé êàíàë èëè ìíîãî on-line âðåìåíè (íàïðèìåð, áðóòôîðñåðû), âî ìíîãèõ ñëó÷àÿõ âûãîäíåå ñîçäàâàòü íà ïåðëå ñ ñîêåòàìè. Îäíàêî ïîñïåøó òåáÿ ïðåäóïðåäèòü: çëîóïîòðåáëÿÿ èñïîëüçîâàíèåì èñõîäÿùèõ ñîêåòîâ, òû ðèñêóåøü íàâëå÷ü íà ñåáÿ ïðàâåäíûé ãíåâ ïðîâà. Âåðíåìñÿ ê íàøåé ïðîáëåìå. Ïëàí äåéñòâèÿ òàêîâ: êîííåêòèìñÿ íà íóæíûé http-ñåðâåð, çàêà÷èâàåì îòòóäà ôàéë, ñîõðàíÿåì åãî ïîä äðóãèì èìåíåì (òåìó ìàñêèðîâêè è øèôðîâêè ñîäåðæèìîãî ôàéëà ðàññìîòðèì ïîçæå) è ðàäóåìñÿ æèçíè. Íàïèñàòü êóñîê êîäà, êîòîðûé îñóùåñòâèò óñòàíîâêó êîííåêòà, ÿ äóìàþ, òû óæå ñìîæåøü (åñëè íåò - âåðíèñü íà äâà àáçàöà íàçàä). Äàëåå íóæíî íåìíîãî ïîîáùàòüñÿ ñ âåá-ñåðâåðîì, ïîýòîìó çàìîëâëþ ïàðó ñëîâ î HTTP (Hypertext Transfer Protocol). Ïîñìîòðè êàê âûãëÿäèò ñòàíäàðòíûé çàïðîñ êëèåíòà âåá-ñåðâåðó:

GET /xxx.jpg HTTP/1.0
User-Agent: Mozilla
Accept: */*
Host: www.super-site.bjg.sg.jtr.ck
Range: bytes=110-3548790

 ðàññìàòðèâàåìîì ñëó÷àå îñîáóþ âàæíîñòü èìåþò ïåðâàÿ è ïîñëåäíÿÿ ñòðîêè, ïîòîìó ÷òî èìåííî îíè îïðåäåëÿþò òî, ÷òî áóäåò âîçâðàùåíî ñåðâåðîì. Íàçíà÷åíèå ïåðâîé ñòðîêè â çàïðîñå, íàäåþñü, î÷åâèäíî. Ïîñëåäíÿÿ ñòðîêà îïðåäåëÿåò, êàêîé èìåííî êóñîê ôàéëà íóæåí. Åñëè òðåáóåòñÿ çàêà÷àòü âåñü ôàéë öåëèêîì, òî åå óêàçûâàòü íå íàäî.  ïðèâåäåííîì ïðèìåðå êëèåíò ïðîñèò ñåðâåð âåðíóòü åìó êóñîê ôàéëà xxx.jpg ñî 110-ãî ïî 3548790-é áàéòû âêëþ÷èòåëüíî. Êñòàòè ãîâîðÿ, äàëåêî íå âñå ñåðâåðà ïîääåðæèâàþò ÷àñòè÷íóþ çàêà÷êó ôàéëà. Òåáå ïðèõîäèëîñü ñòàëêèâàòüñÿ ñ ñåðâàêàìè, íå ïîääåðæèâàþùèìè ò.í. "äîêà÷êó"? Òàê âîò, ýòî îíè è åñòü. ×òîáû íå îñëîæíÿòü ñèòóàöèþ, ÿ áóäó ðàññìàòðèâàòü òîëüêî õîðîøèå ñåðâåðà, êîòîðûå åå ïîääåðæèâàþò (áëàãî â ñåòè èõ áîëüøèíñòâî).  íàøåì ñëó÷àå ÷àñòè÷íàÿ çàêà÷êà ôàéëà ìîæåò áûòü èñïîëüçîâàíà, åñëè òðåáóåòñÿ ñêà÷àòü ôàéë, ïðåâûøàþùèé êóïëåííîå (âçÿòîå íàïðîêàò) ìåñòî ó õîñòèíã-ïðîâà. Êðîìå òîãî, îíà ìîæåò îêàçàòüñÿ ïîëåçíîé â òîì ñëó÷àå, åñëè òû ñîáèðàåøüñÿ íåñòè ñêà÷àííûé ôàéë äîìîé íà äèñêåòàõ. Åñëè âäðóã îäíà èç ïÿòèäåñÿòè äèñêåò äîìà íå ïðî÷èòàåòñÿ, òî ìîæíî áóäåò òóò æå èç äîìà ñêà÷àòü íåäîñòàþùèå ïîëòîðà ìåòðà. Åñëè æå åñòü âîçìîæíîñòü íàðåçàòü áîëâàíêó íà ìåñòå, òî ïîäîáíîãî ãåìîððîÿ óäàñòñÿ èçáåæàòü, õîòÿ ìíå, ïðèçíàþñü, â ñâîå âðåìÿ ïðèøëîñü èì èçðÿäíî ïîñòðàäàòü (ÿ èìåþ â âèäó âîçíþ ñ äèñêåòàìè). Òàêèì îáðàçîì, ñêðèïò äîëæåí ñôîðìèðîâàòü è îòïðàâèòü íà ñåðâåð çàïðîñ, ïîäîáíûé òîìó, ÷òî ÿ ïðèâåë â êà÷åñòâå ïðèìåðà. Îáðàùàþ òâîå âíèìàíèå íà òî, ÷òî â äàííîì ñëó÷àå ñèìâîëîì ïåðåâîäà ñòðîêè ñëóæèò êîìáèíàöèÿ "\r\n", à íå ñòàíäàðòíûé þíèõîâñêèé "\n". Çàïðîñ îáÿçàòåëüíî äîëæåí çàêàí÷èâàòüñÿ ïóñòîé ñòðîêîé (ò.å. â êîíöå ïîñëåäíåé ñòðîêè áóäåò èäòè "\r\n\r\n"). Åñëè ýòîãî íå ñäåëàòü, ñåðâåð íå ïîéìåò, ÷òî çàïðîñ çàêîí÷åí, è áóäåò æäàòü ñòîëüêî, ñêîëüêî ïîçâîëÿåò òàéìàóò. Ïîñëå îòïðàâêè çàïðîñà ñëåäóåò íà÷àòü ïðèíèìàòü äàííûå, äëÿ ïåðåäà÷è êîòîðûõ, â îòëè÷èå îò ftp, íå òðåáóåòñÿ ñîçäàíèå íîâîãî ñîåäèíåíèÿ (ò.å. ïåðåäà÷à áóäåò ïðîèñõîäèòü â óæå óñòàíîâëåííîì ñîåäèíåíèè). Äàííûå áóäóò ñîñòîÿòü èç çàãîëîâêà, ïðåäñòàâëÿþùåãî ñîáîé íåñêîëüêî ñòðîê, ðàçäåëåííûõ "\r\n", ïîñëå êîòîðîãî áóäåò èäòè ïóñòàÿ ñòðîêà è çàòåì - òðåáóåìûå äàííûå.  çàãîëîâêå óêàçûâàåòñÿ ðàçìåð ïåðåäàâàåìûõ äàííûõ, êîä îòâåòà ñåðâåðà è åùå ìíîãî äîïîëíèòåëüíîé èíôîðìàöèè. Âñå ýòî ïðèìåðíî â òàêîì äóõå:
HTTP/1.1 200 OK
Date: Tue, 29 Jan 2002 16:10:59 GMT
Server: Apache/1.3.6 (Win32)
Last-Modified: Sun, 07 Oct 2001 00:23:46 GMT
ETag: "0-8e7b0c-3bbda092"
Accept-Ranges: bytes
Content-Length: 9358092
Connection: close
Content-Type: audio/mpeg
<Ñàìè äàííûå>

Ïåðâàÿ ñòðîêà ñîäåðæèò êðàòêèé îòâåò ñåðâåðà íà êîìàíäó, ïîýòîìó ïîëåçíî åãî àíàëèçèðîâàòü. Íàïðèìåð, åñëè áóäåò íå "200 OK", à "404 Not Found", òî, âèäèìî, äàííûå áóäóò íå î÷åíü ñîäåðæàòåëüíû.
Perl-êîä, îïóñêàþùèé çàãîëîâîê è ñîõðàíÿþùèé äàííûå â ôàéë, âûãëÿäèò òàê:

while ( ) {
if ($_ eq "\r\n") {last;}
}
while ( ) {
print NF;
}

Ãäå HTTPCMD - äåñêðèïòîð òåêóùåãî ñîåäèíåíèÿ, à NF - äåñêðèïòîð ôàéëà, â êîòîðûé áóäóò ñîõðàíåíû äàííûå. Òàêèì îáðàçîì, ôàéë ïîëó÷åí è ñîõðàíåí íà èñïîëüçóåìîì ñåðâåðå ïîä ëþáûì óäîáíûì èìåíåì, ò.å. ìîæíî êà÷àòü, áèòü â òàìòàìû è êðè÷àòü "Óðà!". Òåïåðü ïàðà ñëîâ î òîì, êàê èñïîëüçîâàòü ýòîò ìåòîä â ñâîå óäîâîëüñòâèå è ïðè ýòîì íå íàâëå÷ü íà ñåáÿ ãíåâ àäìèíà. Õîðîøî çàðåêîìåíäîâàëà ñåáÿ ñëåäóþùàÿ ñõåìà ðàáîòû: âûáèðàåòñÿ ðàçìåð ñêà÷èâàåìîãî êóñêà, ëåæàùèé â ðàçóìíûõ ïðåäåëàõ. Åñëè ïðåäïîëàãàåòñÿ èñïîëüçîâàòü óïîìÿíóòóþ âûøå ñõåìó âîçíè ñ äèñêåòàìè ïîä íàçâàíèåì "ãåìîððîé", òî ýòî çíà÷åíèå áóäåò ðàâíî 1400000 (÷óòü ìåíüøå ðàçìåðà äèñêåòû, ò.ê. ïîñëåäíÿÿ ìîæåò áûòü ñëåãêà áèòîé). Åñëè ñõåìà "ãåìîððîé" èñïîëüçîâàòüñÿ íå áóäåò, òî ðàçìåð êóñêà ñëåäóåò âûáðàòü ÷óòü áîëüøå, îäíàêî óêàçàííîå çíà÷åíèå (1400000) íà ïðàêòèêå çàðåêîìåíäîâàëî ñåáÿ íåïëîõî. Äàëåå, ñêðèïòó ÷åðåç URL ïåðåäàåòñÿ íîìåð êóñêà, êîòîðûé òðåáóåòñÿ ñêà÷àòü, îí, ïóòåì íåõèòðûõ ìàòåìàòè÷åñêèõ îïåðàöèé, ïîëó÷àåò äèàïàçîí òðåáóþùèõñÿ áàéò, ñîçäàåò è îòïðàâëÿåò ñîîòâåòñòâóþùèé çàïðîñ ñåðâåðó, ñîõðàíÿåò ïåðåäàííûå èì äàííûå (æåëàòåëüíî íå â cgi-bin, à òóäà, ãäå ëåæàò html-êè), çàòåì âîò òàêèì êîäîì:

print "Content-type: */*\r\n";
print "Location: $newfilelocation\r\n";
print "\r\n";

ïåðåíàïðàâëÿåò çàïðîñ íà òîëüêî ÷òî ñêà÷àííûé ôàéë. Ò.å. òåáå íóæíî áóäåò ââåñòè â àäðåñíîé ñòðîêå îñëà èëè îïåðû ÷òî-òî âðîäå:
http://www.mycoolsite.ru/cgi-bin/script.cgi?n=4. Ýòîò ñêðèïò ñêà÷àåò 4-é êóñîê è ñîõðàíèò åãî, íàïðèìåð, â "/tmp/xe-xe-xe.004", à çàòåì ïåðåíàïðàâèò áðàóçåð íà ñêà÷àííûé ôàéë, ò.å. íà htpp://www.mycoolsite.ru/tmp/xe-xe-xe.004. Áðîäèëêà êèíåòñÿ åãî êà÷àòü, è â èòîãå òû ïîëó÷èøü òî, ÷òî òðåáîâàëîñü. "Çà÷åì æå òàêîé ãåìîð ñ êóñêàìè. Ìîæåò áûòü ñòîèò çàëèòü ôàéëî öåëèêîì?" - ñïðîñèøü òû. "Íå ñòîèò" - îòâå÷ó ÿ. Ïîòîìó ÷òî åñëè ôàéë áîëüøîé (> 3-5 mb), òî âåðîÿòíîñòü òîãî, ÷òî àäìèí îáíàðóæèò è çàèíòåðåñóåòñÿ åãî ñîäåðæèìûì, âåëèêà è âîçðàñòàåò ñ ðîñòîì åãî ðàçìåðà. Åñëè æå ôàéë áóäåò ðàçáèò íà íåáîëüøèå êóñêè, òî îí íå áóäåò ñèëüíî âûäåëÿòüñÿ â àäìèíñêèõ ëîãàõ. Ïîýòîìó åãî è ñëåäóåò êà÷àòü ïî êóñêàì. Ðàññìîòðåííûé òîëüêî ÷òî ñïîñîá îòíîñèëñÿ ê ñëó÷àþ, êîãäà èñõîäíûé ôàéë ëåæàë íà êàêîì-ëèáî http-ñåðâåðå. Åñëè ôàéë ëåæèò íà ftp-ñåðâåðå, òî, íåìíîãî ïåðåäåëàâ ñêðèïò, ìîæíî ðåøèòü è ýòó ïðîáëåìó.
FTP => http
Èäåÿ îñòàåòñÿ òîé æå, íóæíî ëèøü ïåðåïèñàòü êóñêè êîäà, îòâå÷àþùèå çà ðàáîòó ñ ñåðâåðîì. Äåéñòâóåì òàê: âíà÷àëå êîííåêòèìñÿ ê íóæíîìó ñåðâàêó, çàòåì îòïðàâëÿåì åìó ñëåäóþùèå êîìàíäû:

USER anonymous
PASS my@e-mail.address.ru
TYPE I
CWD /pub/mp3/Robert_Miles
REST 1400001
PASV RETR fable.mp3

Êîìàíäà REST óêàçûâàåò: ñ êàêîãî áàéòà (çäåñü ïðàâèëüíåå ãîâîðèòü - "îêòåòà" = 8 áèò) ñëåäóåò ïåðåäàâàòü ôàéëî. Îáðàùàþ òâîå âíèìàíèå íà òî, ÷òî, â îòëè÷èå îò http, âåðõíþþ ãðàíèöó òðåáóåìîãî êóñêà íèãäå óêàçàòü íåëüçÿ, ïîýòîìó ïðèäåòñÿ ñàìîñòîÿòåëüíî êîíòðîëèðîâàòü ñêà÷àííûé îáúåì è â íóæíûé ìîìåíò ðàçðûâàòü ñîåäèíåíèå. Ðàáîòà îñòàëüíûõ êîìàíä óæå áûëà ðàññìîòðåíà âûøå. Êàê è â http, çäåñü ñèìâîëîì ïåðåâîäà ñòðîêè ñëóæèò ïîñëåäîâàòåëüíîñòü "\r\n", îäíàêî ïóñòóþ ñòðîêó â êîíöå çàïðîñà ïåðåäàâàòü íå íàäî (â http ôîðìèðîâàëñÿ çàïðîñ, çàâåðøàþùèéñÿ ïóñòîé ñòðîêîé, à â ftp çàïðîñîâ íåò êàê òàêîâûõ, íà êàæäóþ êîìàíäó ñåðâåð îòâå÷àåò ñðàçó). ×òîáû íå óñëîæíÿòü è áåç òîãî íåïðîñòîé ñêðèïò, ÿ çäåñü íå ïðåäóñìàòðèâàþ ïðîâåðêó îòâåòà ñåðâåðà íà êàæäóþ êîìàíäó, õîòÿ ýòî, âîîáùå ãîâîðÿ, äåëàòü ñëåäóåò, ò.ê. ïðàêòè÷åñêè íà êàæäóþ èç íèõ ñåðâåð ìîæåò îòâåòèòü îòðèöàòåëüíî, è òîãäà äàëüíåéøèå äåéñòâèÿ ñòàíîâÿòñÿ áåññìûñëåííûìè.  áîëüøèíñòâå ñëó÷àåâ âñå äîëæíî ðàáîòàòü, íî, ïåðåä òåì êàê çàïóñêàòü ñêðèïò, ÿ ðåêîìåíäóþ âðó÷íóþ (ò.å. þçàÿ telnet) ïîïðîáîâàòü ïðèêîííåêòèòüñÿ ê ñåðâåðó è ââåñòè ýòè êîìàíäû. Ëèáî ñäåëàé òàê, ÷òîáû ñêðèïò ëîãèðîâàë âñå êîìàíäû è îòâåòû íà íèõ. Ïîñëå îòïðàâêè óêàçàííûõ âûøå êîìàíä íóæíî èç âñåõ îòâåòîâ ñåðâåðà íà íèõ âû÷ëåíèòü îòâåò íà êîìàíäó PASV, ò.ê. îíà ïåðåâîäèò ñåðâåð â ïàññèâíûé ðåæèì, è â îòâåòå íà íåå ñåðâåð óêàçûâàåò àäðåñ è ïîðò, êóäà íóæíî áóäåò êîííåêòèòüñÿ äëÿ óñòàíîâêè ñîåäèíåíèÿ äàííûõ. Ýòî òðóäà íå ñîñòàâèò, åñëè çíàòü, ÷òî îòâåò ñåðâåðà íà PASV â ñëó÷àå óñïåõà íà÷èíàåòñÿ ñ ÷èñëà 227:

227 Entering passive mode (213,180,190,56,222,116)
Èç ýòîé ñòðîêè ëåãêî èçâëåêàþòñÿ IP-àäðåññ è ïîðò:
$ans=~/(\d+),(\d+),(\d+),(\d+),(\d+),(\d+)\)/;
$dhost="$1.$2.$3.$4";
$dport=$5*256+$6;

Ò.å. â äàííîì ñëó÷àå áóäåò 213.180.190.56:56948. Êîííåêòèìñÿ òóäà è ñðàçó íà÷èíàåì ÷èòàòü èç ñîêåòà äàííûå, íå çàáûâàÿ ñîõðàíÿòü èõ â ôàéë. Òóò, êàê ÿ óæå ãîâîðèë, ïðèäåòñÿ ñëåäèòü çà òåì, ñêîëüêî èíôû óæå ïðèíÿòî, ÷òîáû âîâðåìÿ ðàçîðâàòü ñîåäèíåíèå äàííûõ. (Õèíò: ôóíêöèÿ sysread(FTPDATA, $buf, $n) ïûòàåòñÿ ïåðåìåñòèòü â áóôåð $buf èç ñîêåòà FTPDATA $n áàéòîâ è âîçâðàùàåò êîëè÷åñòâî ðåàëüíî çàïèñàííûõ áàéòîâ.)
Ìàñêèðîâêà è øèôðîâêà äàííûõ
Äëÿ îòâîäà ãëàç íàçûâàé âñå ôàéëû ñ óìîì. Íàïðèìåð, åñëè â äàííûé ìîìåíò èçó÷àåòñÿ WinAPI, òî ôàéë, íà êîòîðûé ñêðèïò ïåðåíàïðàâèò áðîäèëêó, ìîæíî íàçâàòü, íàïðèìåð, winapihelp.001. Òàêæå ïîëåçíî äîáàâëÿòü â óðëó âûçûâàåìîãî ñêðèïòà ïàðàìåòðû, êîòîðûå â ñàìîì ñêðèïòå èñïîëüçîâàòüñÿ íå áóäóò, íî óðë óêðàñÿò, ò.å. ÷òî-òî âðîäå:
http://www.allforstudents.box.sk/cgi-bin/getfile.cgi?
n=4&fname=winapihelp&vers=last&user=&requeststring=win+api&a=0
(èìååò ñìûñë òîëüêî "n=4", âñå îñòàëüíîå - ôëóä) è
http://www.allforstudents.box.sk/files/win/help/splited/winapihelp.001

Åñòåñòâåííî âûãëÿäèò, äà?


ß ëè÷íî íà ìåñòå àäìèíà ïîëåíèëñÿ áû ïðîâåðÿòü ïîäîáíûå óðëû. Ðàçäóìûâàÿ íàä ïðîáëåìîé ìàñêèðîâêè äàííûõ, ÿ ïðèäóìàë êàê ìîæíî âûäàâàòü ëþáûå ñêà÷èâàåìûå äàííûå çà àðõèâ: ñ ïîìîùüþ ëþáîãî àðõèâàòîðà ñîçäàåøü ñàìîðàñïàêîâûâàþùèéñÿ àðõèâ, â êîòîðûé ïîìåùàåøü íåáîëüøîé ôàéë (< 1kb) ñ êðàòêèì îïèñàíèå òîãî, çà ÷òî òû ñîáèðàåøüñÿ âûäàâàòü ñêà÷àííûå ôàéëû, èëè ñ ÷åì-íèáóäü åùå. Îí áóäåò âåñèòü ãäå-òî 50êá. Äàëåå, åãî ñëåäóåò çàëèòü íà ñåðâåð, ãäå ëåæèò ñêðèïò, à ñàì ñêðèïò ïåðåäåëàòü òàê, ÷òîáû îí â íà÷àëî êàæäîãî ïåðåäàâàåìîãî êóñêà ñòàâèë ýòîò àðõèâ (ðàñøèðåíèå íàäî îñòàâèòü exe). Òîãäà äàæå åñëè êòî-íèáóäü î÷åíü ëþáîïûòíûé çàïóñòèò òàêîé ôàéëèê, îí íàéäåò òîëüêî òî, ÷òî òû çàïàêîâàë, à òåáå, çíàÿ òî÷íûé ðàçìåð ýêçåøíîé äîáàâêè, íå ñîñòàâèò òðóäà îòäåëèòü íóæíûå äàííûå. Åñëè æå òåáÿ ïðèïðóò ê ñòåíêå è ñïðîñÿò: ÷òî ýòî òàêîå, òî ñòîèò îòâåòèòü, ÷òî, ìîë, êà÷àë àðõèâ, à îí îêàçàëñÿ áèòûì. Êñòàòè ãîâîðÿ, â êà÷åñòâå ýòîãî exe-øíèêà íå îáÿçàòåëüíî èñïîëüçîâàòü self-ex àðõèâ, ìîæíî ñàìîñòîÿòåëüíî íàêîäèòü ÷òî-íèáóäü ïîäõîäÿùåå. Òåïåðü, êàê è îáåùàë, íåñêîëüêî ñëîâ î òîì, êàê èçìåíÿòü ñîäåðæèìîå ôàéëà. Äåëàòü ýòî, âîîáùå ãîâîðÿ, íå îáÿçàòåëüíî, íî æåëàòåëüíî, ò.ê. ìàñêèðîâêà, îïèñàííàÿ âûøå, ïðîñòî äåëàåò ôàéë íåçàìåòíûì (äëÿ àäìèíà) â îáùåì ïîòîêå, è åñëè îíà íå ñðàáîòàåò è òî, ÷òî òû êà÷àåøü, íà÷íóò èçó÷àòü, òî øèôðîâêà ïåðåäàâàåìûõ äàííûõ ñêîðåå âñåãî ñïàñåò ëþáèìóþ ìîçîëü îò ñêîðîé àäìèíñêîé ðàñïðàâû. Ïåðâîå è ñàìîå ýëåìåíòàðíîå - ýòî ïðîñòî ïðîêñîðèòü âåñü ôàéë îäíèì ÷èñëîì (ò.å. ïðîèçâåñòè îïåðàöèþ xor íàä êàæäûì ýëåìåíòîì). Êàê èçâåñòíî, åñëè ýòîò àëãîðèòì ïðèìåíèòü ïîâòîðíî ê óæå îáðàáîòàííûì äàííûì, òî íà âûõîäå ïîëó÷èì èñõîäíûå. Êñòàòè ãîâîðÿ, íà ïåðëå ýòî îñóùåñòâèòü íå òàê ïðîñòî èç-çà òîãî, ÷òî â íåì íåò òèïîâ è ïðî÷èòàííûé áàéò èíòåðïðåòèðóåòñÿ êàê ñèìâîë, à íå êàê ÷èñëî. Íî íå ìíå ó÷èòü òåáÿ Perl-ó, ïîýòîìó ïðîñòî ïðèâîæó êîä, êîòîðûé ôàéë 1.dat êñîðèò ÷èñëîì 5 è ðåçóëüòàò ñîõðàíÿåò â 2.dat:
open(F1, "1.dat");
open(F2, ">2.dat");
binmode F1;
binmode F2;
$t = 0;
$nofp = sysread(F1, $t, 1);
while ($nofp) {
print F2 chr(ord($t) ^ 5);
$nofp = sysread(F1, $t, 1);
}
close(F1);
close(F2);
Õîòÿ ëó÷øå êñîðèòü íå îäíèì ÷èñëîì, à ïîñëåäîâàòåëüíîñòüþ èç íåñêîëüêèõ ÷èñåë. Îòìå÷ó, ÷òî â ðàññìàòðèâàåìîì êîíòåêñòå ýòè îïåðàöèè ñëåäóåò ïðîèçâîäèòü "íà ëåòó" áåçî âñÿêèõ ïðîìåæóòî÷íûõ ñîõðàíåíèé (ýêîíîìÿ ìåñòî è âðåìÿ). Ò.å. ïîëó÷èë n áàéò èç ñîåäèíåíèÿ, ïðîêñîðèë èõ è çàïèñàë â ôàéë. Äëÿ ñàìûõ ýêñòðåìàëüíûõ òîâàðèùåé ïðåäëàãàþ ñëåäóþùèé ïåð÷åíûé ñïîñîá: êñîðèòü íåòðèâèàëüíîé ïîñëåäîâàòåëüíîñòüþ, ðàçìåð êîòîðîé ðàâåí ðàçìåðó ôàéëà. Ïîñêîëüêó ïîñëåäîâàòåëüíîñòü òàêîãî ðàçìåðà õðàíèòü íåðåàëüíî (à òðåáóåòñÿ îíà â äâóõ ìåñòàõ: íà òâîåì ñåðâåðå äëÿ øèôðîâêè è äîìà - äëÿ ðàñøèôðîâêè), åå ïðåäñòîèò ñãåíåðèòü, âçÿâ â êà÷åñòâå ïðîèçâîäÿùåé ôóíêöèè, íàïðèìåð, ñèíóñ (ýòà ôóíêöèÿ îò ïîñëåäîâàòåëüíîñòè öåëûõ ÷èñåë äàåò ïîñëåäîâàòåëüíîñòü íåïîâòîðÿþùèõñÿ ÷èñåë). Ò.å. íàäî âñåãî ëèøü âçÿòü ñèíóñ îò íîìåðà òåêóùåãî áàéòà â ôàéëå, âûòÿíóòü èç ýòîãî âåùåñòâåííîãî ÷èñëà, äîïóñòèì, 2-þ öèôðó ïîñëå çàïÿòîé è ïðîêñîðèòü òåêóùèé áàéò ñ íåé. Ðàñøèôðîâêà áóäåò ïðîèñõîäèò òî÷íî òàê æå. Õîòü ýòîò ìåòîä è êàæåòñÿ î÷åíü ìóäðåíûì, îí òåì íå ìåíåå îáëàäàåò î÷åíü âûñîêîé êðèïòîñòîéêîñòüþ.

Ôèíàë

Îïèñàííûå âûøå ñïîñîáû îáõîäà áûëè ïðîâåðåíû íà ïðàêòèêå, ïîýòîìó, åñëè, êîíå÷íî, íå äåëàòü ãëóïîñòåé, èõ ìîæíî èñïîëüçîâàòü áåçîïàñíûì äëÿ ñåáÿ îáðàçîì. Íî ïîìíè: âñåãäà è âî âñåì íóæíî çíàòü ìåðó. Åñëè ïîëüçîâàíèå òàêèìè âåùàìè ñòàíåò äëÿ òåáÿ ïðàâèëîì, à íå èñêëþ÷åíèåì, òî ðàíî èëè ïîçäíî òåáÿ âñå ðàâíî çàñåêóò, óëûáíóòñÿ è ñêàæóò "Íàãèáàéñÿ!". Óäà÷è òåáå!

ÂÍÈÌÀÍÈÅ: Àâòîð ñòàòüè íå íåñåò íèêàêîé îòâåòñòâåííîñòè çà ïîñëåäñòâèÿ, êîòîðûå ìîãóò âîçíèêíóòü ó òåáÿ â ðåçóëüòàòå èñïîëüçîâàíèÿ èçëîæåííîãî ìàòåðèàëà!
Îòâåòèòü Ñ öèòàòîé Â öèòàòíèê
 

Äîáàâèòü êîììåíòàðèé:
Òåêñò êîììåíòàðèÿ: ñìàéëèêè

Ïðîâåðêà îðôîãðàôèè: (íàéòè îøèáêè)

Ïðèêðåïèòü êàðòèíêó:

 Ïåðåâîäèòü URL â ññûëêó
 Ïîäïèñàòüñÿ íà êîììåíòàðèè
 Ïîäïèñàòü êàðòèíêó