книги хакеры / журнал хакер / 114_Optimized
.pdf
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|
|
||
|
|
X |
|
|
|
|
|
|
|
||
|
- |
|
|
|
|
d |
|
|
|||
|
F |
|
|
|
|
|
|
t |
|
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
|
r |
|
||
P |
|
|
|
|
|
NOW! |
o |
|
|||
|
|
|
|
|
|
|
Maximum upload rate: 20KB/s (DSL/cable 256k up) |
||||
|
|
|
|
|
BUY |
|
|
||||
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
to |
|
|
|
|
|
|
|
w Click |
|
|
|
|
|
m |
|
||||
|
|
|
|
|
|
|
|||||
w |
|
Example.e |
zip |
||||||||
|
. |
||||||||||
|
w |
|
|
|
|
|
|
|
o |
|
|
|
|
p |
df |
|
|
|
g |
.c |
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
n |
|
|
|
|
||
|
|
|
|
-xcha |
|
|
|
|
|
Search for torrents
Example. zip
|
|
|
|
|
|
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
|
|
|
|
|
|
X |
|
|
|
|
|
|||
|
|
|
|
|
|
|
- |
|
|
|
|
|
d |
|
||
|
|
|
|
|
|
|
F |
|
|
|
|
|
|
t |
|
|
|
|
|
|
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
r |
||
|
|
|
|
|
|
P |
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
Maximum upload rate: 20KB/s (DSL/cab |
||||||||||||||||
>> codingto |
BUY |
|
|
|
|
|
||||||||||
|
|
|
|
|
|
w Click |
|
|
|
|
|
|
m |
|||
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
|
|
|
|
|
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
|
|
|
|
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
|
|
|
|
|
|
-x cha |
|
|
|
|
+
+
+
+
|
|
|
|
|
|
|
|
+ |
|
|
|
||
|
Done, Share ratio: 0%, |
will seed for 4:59 hours |
|
|
i |
Done, Share ratio: 0%, |
|||||||
|
SystemTimeToFileTime(SystemTime, FileTime); |
|
begin |
|
|
|
|||||||
|
|
|
|
|
If (SaveDialog1.Execute) Then |
|
|
|
|
|
|
|
|
|
I := Integer(FileTime.dwHighDateTime) shl 32 |
|
begin |
|
|
|
|
|
|
|
|||
blue |
+ FileTime.dwLowDateTime; |
|
|
|
_NewFile := TFileStream.Create |
|
|
|
|
|
|||
-a-short-film |
|
|
|
(SaveDialog1.FileName+blue- -short'.torrent',-film |
|
|
|
|
|
||||
|
Result := (I — 116444736000000000) div |
|
|
|
|
|
|
|
|
||||
|
Int64(10000000); |
|
|
|
fmCreate); |
|
|
|
info |
|
|
|
|
|
end; |
|
|
|
|
|
|
|
|
Любой хакер должен |
|
||
|
|
|
|
|
if (ListView1.Items.Count = 1) Then |
|
представлять себе |
|
|||||
|
Кодфункции,выполняющейобратнуютрансформацию |
|
|
|
CreateTorrent(_NewFile, false) |
|
кодерские принципы |
|
|||||
|
времени,смотривисходнике,которыйдожидаетсятебяна |
|
|
|
else |
|
|
|
функционирования |
|
|||
ubuntu-5.10-install-i386.iso |
|
|
|
ubuntu-5.10-install-i386.iso |
p2p. Но лишь самые |
|
|||||||
|
нашемDVD.Послезаписивфайлосновныхдирективначи- |
|
|
|
|
||||||||
|
|
|
|
CreateTorrent(_NewFile, true); |
|
|
|||||||
|
наетсяпроцессописанияфайлов(записьдирективыinfo). |
3.7% |
|
end; |
|
|
|
злобные из них впос- |
|
||||
|
Тутмывстаемпередвыбором:еслисоздаемторрентстипом |
|
|
|
|
|
i |
+ |
|
|
3.7% |
||
|
|
|
|
end |
|
|
ледствии пишут p2p |
||||||
|
«смешанный»(multiFile),тонамнеобходимозапустить |
|
|
|
|
|
|
|
|
worm’ов :) |
|
||
|
|
Вэтомкодеяинициализируюпеременнуютипафайловый |
|
|
|||||||||
|
циклипробежатьсяповсемуспискувыбранныхфайловиза- |
|
|
|
|
|
|||||||
xlivecd-20041201.iso |
|
|
поток.Вызываяметод«Create»,япередаюдвапараметра: |
|
|
|
|
|
|||||
|
писатьвtorrentразмеры/путидлякаждогофайла.Вкачестве |
|
|
|
|
|
|||||||
|
|
|
|
|
xlivecd-20041201.iso |
|
|
|
|
|
|||
|
путей(директиваpath)указываетсянетотпуть,покоторому |
|
|
1—имяфайла(файлстакимименеммыбудемсоздавать); |
i |
+ |
|
|
|
||||
|
хранитсяфайлнадиске,атот,которыйопределяетместопо- ? |
2—режимдоступакфайлу.Посколькунамнужносоздать |
Help |
? |
|||||||||
|
ложениефайлаотносительноторрента.Например,формат |
|
|
новыйфайл,тоуказываемfmCreate. |
|
File |
V |
|
|||||
|
|
|
|
|
|
|
|
|
|
||||
|
файламетаданных(торрент)позволяетдобавлятькакфайлы, |
|
|
|
|
|
|
|
|
|
|
||
|
такидиректории.Предположим,чтопользовательвыбрал |
|
|
|
Тестирование |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|||
|
одинфайлиоднудиректориюснесколькимифайлами.Сразу |
На сегодня скучный урок программирования можно считать |
|
Maximum upload r |
|||||||||
|
возникаетвопрос:акакзаписатьфайлы,которыенаходятсяв |
оконченным, а значит, нужно протестировать наше творе- |
|
|
|
|
|
||||||
|
директории?Втакихслучаяхиприходитсяиспользоватьди- |
|
|
ние. Скомпилируй и запусти наш пример. Попробуй запол- |
dvd |
|
|
|
|||||
|
рективуpath.Всвоемпримереянереализовалвозможность |
|
|
|
|
Example. zip |
|
|
|
||||
|
нить все TEdit, добавить файлы в ListView и сохранить |
|
Весь необходимый |
|
|||||||||
|
добавкиотдельнойдиректории,новреальномприложении |
|
|
собранный проект в виде торрента. Если у тебя все прошло |
стафф для статьи ты |
|
|||||||
|
тыобязательнодолженучестьэтотнюанс.Еслимысоздаем |
|
|
без ошибок, то не спеши радоваться, так как основное тес- |
сможешь найти на |
D |
|||||||
|
торрент,вкоторомбудетопределенлишьодинфайл(такие |
|
|
тирование только начинается. Скачай какой-нибудь torrent |
нашем диске |
|
|||||||
|
торрент-файлыещеназываютклассическими),товсе,чтоот |
|
|
клиент (например, uTorrent) и попробуй открыть им получив- |
|
|
|
|
|||||
|
настребуется—записатьразмерфайла(указываетсяспомо- |
шийся у тебя файл. Если все тип-топ, то uTorrent пропарсит |
|
|
|
|
|||||||
|
щьюдирективыlength)исамоимяфайла.Записаввtorrent |
|
|
|
|
|
|
blue-a-short-film |
|
|
|
||
|
|
|
подсунутый ему файлик и предложит начать закачку. Но если |
|
|
|
|
||||||
|
необходимуюинформациюофайлах,которыемысобираемся |
uTorrent ругнется и сообщит ошибку, то значит, ты где-то |
|
|
|
|
|
||||||
|
раздавать,обязательнонужноразбитьвсефайлынасегменты |
накосячил и придется провести немало времени в играх с |
|
|
|
|
|
||||||
|
определенногоразмераипосчитатьиххэш-суммы.Всвоем |
|
|
отладчиком. Код чтения торрент-файла я приводить не стал |
|
|
|
|
|||||
|
примереразмерсегментаязадалжестко—вкоде.Онуменя |
|
|
— статья не резиновая. Зато на диске, ты найдешь полный |
|
|
|
|
|
||||
|
равен65536байтамили64килобайтам.Еслитыбудешьписать |
работоспособный исходник. В чтении файла нет ничего |
|
|
|
|
|
||||||
|
полноценнуюпрограммудлясозданияторрент-файлов,то |
|
|
|
|
|
|
ubuntu-5.10-install-i386.iso |
|
||||
|
|
|
сложного. Раз уж ты смог разобраться с созданием торрент- |
|
|
|
|
||||||
|
долженпредоставлятьпользователюсамостоятельноеправо |
файла, то с чтением проблем возникнуть не должно. |
|
|
|
|
|
||||||
|
выбораразмерасегмента,таккакэтотразмерзадаетсянеот |
|
|
|
|
|
|
|
|
|
|
|
|
|
балды(какуменявпримере),аотносительнообщегоразмера |
|
Заключение |
|
|
|
|
|
|
|
|||
|
файлов,длякоторыхмысоздаемторрент.Дляразбиения |
|
|
Уже не первый раз убеждаешься в том, что все нервные |
|
|
|
|
|
||||
|
файлапосегментамиполученияхэшейясоздалещеодну |
|
|
крики в сторону Delphi — это просто бред и комплексыxlivecd-20041201.iso |
|
||||||||
|
процедуру—GetPieces().Еесодержимоетыможешьувидеть |
|
|
фанатов С++ (данная фраза проверена этическим |
|
|
|
|
|
||||
|
надиске.Послевыполненияданнойпроцедурымассивpieces |
комитетом; выдана справка о том, что провокаци- |
|
|
|
|
|||||||
|
заполнитсяэлементамитипаTPieces,содержащимипосчи- |
|
|
онной она не является, будучи написанной автором |
|
|
|
|
|||||
|
танныехэш-суммысегментовфайлов. |
|
|
в состоянии аффекта — Прим. ред). На Delphi можно на- |
|
|
|
|
|||||
|
ПроцедураGetPieces()принимаетвсегоодинпараметр |
|
|
писать практически любую программу, будь то компактная |
|
|
|
|
|||||
|
—размерсегментафайла.Послеполученияинформации |
|
|
хакерская тулза или продвинутая программа для работы с |
|
|
|
|
|||||
|
оразмересегментавпроцедурезапускаетсяцикл,входе |
|
|
БД. Мне остается только попрощаться с тобой и пожелать |
|
|
|
|
|||||
|
которогоперебираютсявсефайлыизTListViewидля |
|
|
удачи в кодинге. Все свои вопросы ты можешь задать мне |
|
|
|
|
|||||
|
каждогоизнихвычисляетсяSHA1-хэш.Полученныеданные |
|
|
по мылу — буду рад пообщаться. До встречи! z |
|
|
|
|
|
||||
|
записываютсявдинамическиймассив_piecesтипаTPieces |
|
|
|
|
|
|
|
|
|
|
||
|
(структура,которуюмыопределиливсамомначале).Для |
|
|
|
|
|
|
|
|
|
|
|
|
|
вычисленияхэш-суммыявоспользовалсяобъектомTSha1из |
|
|
|
|
|
|
|
|
|
|
||
|
модуляMessageDigestотDaveShapiro.Работатьсалгорит- |
|
|
|
|
|
|
|
|
|
|
|
|
|
мамиSHA1,Md5(идругими)спомощьюэтогомодуляодно |
|
|
|
|
|
|
|
|
|
|
|
|
|
удовольствие.Все,чтотребуетсядляполученияхеша—вос- |
|
|
|
|
|
|
|
|
|
|
|
|
|
пользоватьсяметодомTransform(),послечеговсвойствах |
|
|
|
|
|
|
|
|
|
|
||
|
hashValueиhashValueBytesпоявитсярассчитанная |
|
|
|
|
|
|
|
|
|
|
|
|
|
хэш-сумма.Большевпроцедуреничегоинтересногонет, |
|
|
|
|
|
|
|
|
|
|
|
|
|
поэтомуперейдемсразукзавершающемушагу—наполним |
|
|
|
|
|
|
|
|
|
|
|
|
|
кнопкуSaveTorrentBtnжизнью.Создайдлянееобработчик |
|
|
|
|
|
|
|
|
|
|
||
|
событияOnClickинапишивнем: |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
_NewFile:TFileStream; |
|
|
Формабудущейпрограммы.Закладка2 |
|
Формабудущейпрограммы.Закладка1 |
|
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
xàêåð 06 /114/ 08 |
099 |