ИНТЕРВЕНЦИЯ НАЧАЛАСЬ, РАЗНОСИМ ПО ПРОСТОРАМ СЕТИ ВСЮДУ, КУДА МОГУТ ДОТЯНУТЬСЯ НАШИ КРЕПКИЕ И ЭСТЕТИЧНЫЕ МУЖСКИЕ РУКИ
ПРОЦЕСС ДЕФЕКАЦИИ ТНЕЙ грязный, отвратительный, полная АНТИСАНИТАРИЯ 1. Забегает в туалет. Срывает труселя. Какие-то говняные полосы еще до начала сранья. 2. Серет и мочится одновременно, обоссывая жёппу, ляжки, пол и все вокруг. 3. Не закончив процесс, встает на ноги, оставляя между булками шматки висячего дерьма и измазывают им свою жопу. 4. Комкают туалетную бумагу и стоя на ногах, шоркают ей между булок. Для подтирания используют всего один-два таких комка. Не очистив свое очко, одним из этих грязных комков, подтирают вонючую пизду. 5. Надевают трусы на обоссанную и плохо вычищенную жопу и с невозмутимым еблетом возвращаются за столик в кафе, за парту или на рабочее место. а еще они в сортире нюхают свои труханы .
ПРОЦЕСС ДЕФЕКАЦИИ КУНОВ церемониальный, эстетичный, последовательный, ГИГИЕНИЧНЫЙ 1. Кун по-царски восседает на трон. 2. Аккуратно писает в унитаз и только после этого начинает какать, размышляя о судьбах мироздания. 3. После, складывает из туалетной бумаги многослойную салфетку и сидя подтирает попу. Одна салфетка – одно движение, и так до тех пор, пока очередная салфетка не останется чистой и сухой. 4. Надевает брюки, нажимает слив новой салфеткой, моет руки, покидает сан.узел. Блять, грязные шлюхи, ну почему вы не следите за своей гигиеной и чистотой, почему вы такие нечистоплотные?
FAQ для новоприбывших
Q: Что за хуйня тут происходит? A: Совершенно случайно была вскрыта ужасающая правда: тян (селёдки) совершенно не умеют соблюдать личную гигиену. После того как посрут и поссут, едва вытирают свои дырки подручными средствами: фантиками от конфет, руками, своими трусами и колготками. Это мерзко и совершенно несовместимо с их серьезными лицами после того, как они выходят из туалетов и строят из себя принцесс…с обосранными жопами.
Q: Вы что тут делаете вообще? Дрочите на видео как селёдки срут? А: Нет, мы насмехаемся над грязными серушками, формируем анти-селёдочную риторику и ниспровергаем глупые мифы, которые породили о себе селёдки.
Q: Кто вайпает тред? А: Селёдки которым НЕПРИЯТНО. Они визжат, что тут копрофилы дрочат на говно, при это не желая воспринимать правды. Типичное поведение рыбы: подменять понятия и переводить тему в отсутствии аругментов.
Q: ко-ко-ко, листва узнала, что шкуры срут A: Еще раз для даунов: Обсуждается не факт сранья, а его процесс и его последствия.
Q: Я чистоплотная сельдь, моюсь постоянно, два раза в день меняю белье, что насчет меня? A: Это лишь показывает, что ты от природы – смердящая дырка! Чтоб не вонять и не быть свиньей, тебе приходится оттирать свои клоаки с особой тщательностью по несколько раз в день. Мужчина же, может это делать лишь один раз в день, а то и раз в два дня оставаясь чистым и привлекательным.
Q: И чего вы добились? А: Как минимум, выработан новый категоричный императив: если селедка начинает умничать, всегда можно беспроигрышно апеллировать к тому, что она даже срать не умеет и у нее вся жопа в говне. При этом контраргументы в стиле «тебе просто не дают», лишь показательно утверждают неадекватность тупого инкубатора.
Q: Почему вы не расширите тему и не говорите, что тян уебища и мерзкие шлюхи? А: Потому, что эти призывы – ревизионизм и попытка селёдок извратить суть учения. Сделать перевод обсуждения вполне конкретной, подтвержденной пруфами проблемы, на пространные визги «тян не нужны» и «все тян шлюхи», чтобы потом объявить движение «очередными сексистами которым просто не дают». Не ведись анон!
Q: Не стоит тогда унижать их, раз они по своей природе грязные уебища, ведь не можешь ты упрекнуть свинью в том что она валяется в грязи? А: Мы смеемся и насмехаемся, потому что нам смешно. Смех – естественное состояние человека. Мы насмехаемся над неумытыми селедками, точно так же как ты насмехаешься над обезьянами в цирке.
Помните! ТНУС - это отрезвляющий глоток истины для каждой заблудшей овцы! Философия ТНУСа поведет за собой миллионы, воспитает ваших детей, задавит гнусную змею матриархальной лжи!
Половина треда моя. Охуенно. Никогда не думал что сосачеры оказывается такие дауны. Ладно там в /po/, /a/, /vn/, /vg/, но тут. Двач уже не тот, ох не тот.
>>113114366 > Ну, будут пруфы то? Значит балабол. Я другой анон, не тот который ставил теги, но по моему за твоими постами довольно мило наблюдать, ты делаешь очень полезную работу, доводишь тнус треды до номера 100, возможно без твоего здесь присутствия они бы так и загнулись. В общем, лично от меня тебе только благодарность за такую грязную работу.
>>113114574 Школьник не знает других слов кроме "подгорело". Дети мдк, хули с них взять.
>>113114606 Прочитай мой пост. Может быть такой тупой что не видишь аргументов? Я конечно всегда знал что хуеносцы тупые, но чтобы настолько...
>>113114732 Мне тоже весело. Пусть он дойдет до сотки. Мне похуй на ущербных. Сосач посешает даже на 0.0000000001% от населения Москвы. Делай выводы. А этот тред ещё меньше.
>>113114978 Боже как же я проиграл с тебя, чмошник. Дрожащими ручонками настрочил аутотренинг для своей пылащей сраки на ночь, сам же прикрепил картинку со своим ужином и пошёл спать в обосранных труханах. Максимум обиженное уёбище, омежнее тебя в этом треде никого нет. Это как же тебе жжёт жопу от альфахики, если у тебя даже мозг перегревается и ты не замечаешь как ты ссышь себе в штанишки. Подумай сам, Маня, если он такой убогий, нищеброд, шизофреник, фантазёр, но при этом ты ни на секунду не забываешь про него и не упускаешь не малейшей возможности его дискредитировать, то кто ты сам есть? Убожество в кубе. Выпились уже, порватка, и избавь тред от своего идиотизма в виде двузначного айкью и унылого самоподдува.
>>113114829 Пиздец. Три раза одной и той же бумажкой(несмотря даже на то что разными сторонами) тиранула и всё типо, жопа чиста и свежа. И правда мрази.
>>113114366 >у меня тех. вышка, квартира, машина, красивое тело, девушка. то там ещё нужно? Ах да, ничего А вот тут ты шлюха объебалась. Селедка, плес.
>>113114366 Ну давай разберем по частям, тобою написанное )) Складывается впечатление что ты реально контуженный , обиженный жизнью имбицил )) Могу тебе и в глаза сказать, готов приехать послушать?) Вся та хуйня тобою написанное это простое пиздабольство , рембо ты комнатный)) от того что ты много написал, жизнь твоя лучше не станет)) пиздеть не мешки ворочить, много вас таких по весне оттаяло )) Про таких как ты говорят: Мама не хотела, папа не старался) Вникай в моё послание тебе< постарайся проанализировать и сделать выводы для себя)
>>113115297 >ТАК ПОХУЙ НА ТЕБЯ, НА ТЕБЯ И НА ТЕБЯ! СЛЫШЬ КАК МНЕ ПОХУЙ НА ТЕБЯ? ЭЙ, МНЕ ОЧЕНЬ-ОЧЕНЬ ПОХУЙ НА ТЕБЯ. МНЕ ВЕСЕЛО С ТЕБЯ, А ЕЩЕ МНЕ СОВСЕМ ПОХУЙ НА ТЕБЯ
>>113115187 КАРИНОЧКА ОБОССАЛАСЬ! ВСЕ! ПОСЛЕДНИЕ БАСТИОНЫ РУХНУЛИ! ТЕПЕРЬ Я НЕ ВЕРЮ В ЧИСТОПЛОТНЫХ ТЯН! ЗАСРАНКИ-ОБОССАНКИ! ВАС ЖЕ НЕ ТО ЧТО ЕБАТЬ ТЕПЕРЬ, О ВАС ДУМАТЬ ПРОТИВНООО!
>Совершенно случайно была вскрыта ужасающая правда: тян (селёдки) совершенно не умеют соблюдать личную гигиену. После того как посрут и поссут, едва вытирают свои дырки подручными средствами: фантиками от конфет, руками, своими трусами и колготками. Как? Где пруф?
>>113115586 Ололо, даун потратил 5 лет жизни ради ДИПЛОМА, чтобы зарабатывать меньше, чем я. Вот это лох. Уж лучше бы ты писал какие-нибудь сетевые сканеры и рогалики, набирая опыт, но ты, убогий, повелся на форс и просто въебал годы жизни зря.
Поддержу жидокрысу - все покупается. У шкур один аргумент - НЕ ДАЮТ. Блять, да я каждые выходные снимаю разных сучек и никакая обосратка мне в моей келье даже близко не нужна.
>>113115361 Цену то назови, я подумаю. И сиськи с пиздой с супом. Если договоримся о встрече, то предварительный осмотр на чистоту. Иначе нет, заразы мне еще не хватало.
Анон, а тебе не кажется,что первые треды информативнее были? Там и ВБМКи и стихи и пикчи, каждый тред анон приносил годноту. А сейчас контента все меньше, только говном друг в друга кидаетесь, типа: >вы ебанутые, 50 тредов >+ 2 рулона Позавчера вечером зашел - насмеялся вдоволь с контента. Вчера - уже чуть меньше лулзов, меньше творчества. А за сегодня только Берия из ОП-поста, и пара тредшотов в прошлом треде. Скатываемя-с.
>>113116224 >мне тибя жаль) Раздался пронзительный голос со стороны параши.
Но пацаны, как всегда, не обратили внимания на это визгливое кукареканье. Пусть кукарекает, что с него взять?
Петух — не человек, и сегодня ему предстоит очень трудная ночь. У него уже в течение полутора лет каждая ночь была очень трудной, и теперь его анус был разработан настолько, что он без труда мог спрятать в нём банку сгущёнки.
>>113116309 Раздался пронзительный голос со стороны параши.
Но пацаны, как всегда, не обратили внимания на это визгливое кукареканье. Пусть кукарекает, что с него взять?
Петух — не человек, и сегодня ему предстоит очень трудная ночь. У него уже в течение полутора лет каждая ночь была очень трудной, и теперь его анус был разработан настолько, что он без труда мог спрятать в нём банку сгущёнки.
>>113115780 >>113115187 Кстати, анонимы. Подоный обоссывос или это выделения полезли. В общем, подобное свидетельствует о возможном венерическом заболевании. Кариночка больна скорее всего нехорошей болезнью.
>>113116500 Ты ебаный уродец, обиженка, который в самом начале начал какие то хуепроекции выдвигать, вместо нормальной реакции олдфага, то бишь ты уродливый плешивый общажный омежка. И сейчас ты сделал то же самое. И нет у тебя никакого пассивного дохода и 100к, есть мамка которая пиццу приносит своему донателле.
>>113116275 Ты охуел, щенок! Я сука, уже 8 с лишним лет пилю контент на двачах. 8 ЛЕТ. У тебя на винчестере сохранена моя копипаста, и не одна. А ты, блядь, еще больше требуешь! Нет, уж, форси говно сам.
>>113116589 > Значит у тебя его нет, тупая пизда. Это кровь. Это краска. Я мать её худ. школу закончил и знаю как выглядит кровь. Плюс потеря крови слишком большая для тян. Из них столько не выливается в короткий период. А фото явно сделано за короткий период. Учи мат. часть.
>>113116793 Лол, еблан обосрался с детектом и пытается теперь переложить говно из своих портков в чужие. Даже не знаю скринить тебя чмошника или просто обоссать.
Вы что, блять, ебанутые?Нахуй вы 50+ тредов сделали?Вы блять поехавшие сука, нахуй вы говно жрете?Контент унылый и мерзкий, тема унылая и мерзкая. Пиздец нахуй. Спасибо что напомнили что я живу в отвратительной и мерзкой реальности. Могли бы еще и про смерть напомнить и 100000 тредов с расчлененкой под названием "ВМС" Все мы смертны. Нахуй
А сейчас послушайте меня: суть в том, что нет в этом вопросе правых и виноватых. Все легко сводится к очень простому заключению: как среди тян, так и среди кунов есть грязнули (вспомните куда который не мылся, собирал грязь с тела и лепил из него шар). Главное, что многие избавились от иллюзий что тян полные няшки и принцессы. Есть исключения, но не больше и не меньше чем среди кунов. Подводить под это целую научную базу, а смысл? За такое количество тредов анону не удалось по сути ничего, вы так и варитесь в своём треде, не создав не резонанса, не контента, который бы полетел бы по интернету. Толку ноль. Но спасибо за то что сняли розовые очки с пиздолизов и пиздострадальцев. Тему можно закрывать.
>>113116977 >Почему вы не хотите разговаривать со мной, а просто ссыте на меня?
Проиграл. Опять униженное прыщавое уёбище лопнуло и начало размахивать своим сломанным детектором по всему треду. Пиздили твою мамашу на обочине, раз она высрала такого дегенерата ущербного. Пиздуй нахуй роллтоны жрать, ущербище, фотографируй себя, подписывайся альфа-хиккой, давай, давай, чмо обоссанное, давай сри себе в рот животное.
>>113117214 Про то что это стопроцентно кровь я и не утверждаю, ты уже совсем ебанулся тут кормиться вниманиеблядствовать. Хорошо хоть обосрамс не отрицаешь.
>>113117481 Даунёнок понял что обосрался и решил выехать на упорстве, отрицая здравый смысл, обманывая самого себя и стараясь не замечать запашка говнеца из его просранных труханов. Бедная убогая униженная хикка, лол. Поскорее бы тебя усыпили.
Я одного не понимаю, если тан таки розовые, чистые и пушистые, то то почему им так бомбит от треда? Если ты моешься и следишь за гигиеной, то, казалось бы, не о чем волноваться...
>>113117532 На дваче тянок нет, если что. Все тянки - это приглашенные их кунами "актрисы". Тяночки думают о будущем и не тратят врмени на хуиту вроде игорей, двачей и прочего говна.
>>113117007 Ну так если по твоему мнению среди кунов тоже есть засери, то тащи сюда видео которое это докажет. А пока видео нет принимай струю урины в лицо.
>>113117532 Бомбит не у тян, а у других битардов, которые охуевают от школодаунов, создавших полсотки тредов про говно. Ну еще тут пара троллей, мимикрирующих под тян.
>>113117442 Из любопытства, один раз, в сосничестве. А тянки на видео говно зачем трогают и пальцы в рот суют? Из любопытства тоже? Узнать какова земля на вкус?
>>113117861 >создавших полсотки тредов про говно И что в этом плохого? Видел бы ты не прекращающийся неделями вайп /b/ гомониграми... Есть мааааленькая надежда, что после ТНУСа рака на Двачх станет меньше.
Боже, пока вы ущербы тут хйней маетесь со своими комплексами и тараканами, обычные парни, которым на это плевать, просто берут, и , простите мой французкий, ебт нас. А потом вы же и ноете что, мол, "изменила и променяла меня на другого!" - а потому что "другой" был самцом, у которого желание есть и член стоит независимо от 200% чистоты. Вообще секрет открою - человеческое тело не всегда идеально, это вам не как в порнухе. Убейтесь пожалуйста короче.
>>113118051 >>113118051 Oh, while you're here hyney damages toils with their complexes and cockroaches, ordinary guys who do not care, just take, and, excuse my French, ebt us. And then you also, and whining that supposedly "changed and exchanged me for another!" - And because "other" was a male who has the desire to eat, and is a member independently from 200% pure. Generally open secret - the human body is not always perfect, you do not like in porn. Please ubeytes shorter.
>>113117967 Лучше скажи, что теперь сделать, чтобы мог дрочить? Фапать на цп? Кстати, еще не пробовал. Кунов? Не особо привлекают, хотя как вариант. О, может на расчлененку?
>>113118207 В таком случае, с тобой что-то не так. И не в прикольна-циничном смысле. б/ в такое говно превратился. Когда мне было 14 лет, он был интереснее.
>>113118285 У тебя выводы неверные, сельдедаун, это говорит о твоём долбоебстве. Попробовать не равно жрать постоянно, как это делают с говном три на вебмках. И вообще иди нахуй, знать ему надо. Надрочи себе и ешь.
>>113118689 Еще один дефектный с пиздой под носом решил поделиться своим охуенно нужным и важным мнением. Такое озлобленное говно нужно в гуманных целях пристрелить, как блохастого пса, что бы не вертелся под ногами.
ДА ВЫ ТУТ СОВСЕМ БЛЯДЬ ПИЗДАНУЛИСЬ >Бомбит не у тян, а у других битардов, которые охуевают от школодаунов, создавших полсотки тредов про говно. >Бомбит у битардов от тредов про говно
>>113118314 Увидев несколько вебмок со свиньями, считать, что вся тян такие. Распидорасить это на 50+ тредов. На высказывания, аргументы против тнус, взахлеб кукарекать "РУЛОНЫ РУЛОНЫ НАУЧИСЬ СРАТЬ СЕЛЬДЬ СЕЛДЬ ПОДОТРИСЬ ГЫГЫГГЫГ" Типичное поведение школьников, листвы и омежек.
>>113118695 Ну не знаю, не сижу в ваших тредах сутками. Да и вебмки со срущими людьми не интересуют. Пусть лучше аноны рисуют срущих тней, хоть какое-то разнообразие.
>>113119075 У имбецила окончательно взорвалась жопа и теперь он во мне видит всех своих обидчиков, которые протыкали его на протяжении всей его жизни в дотатреде. Ебаный шизоид.
>>113119030 >о ТНУС никто не знает Это ты так думаешь. 2 года назад было всего 6 ДЕД ДОЕСТ тредов. Анон запомнил. А тут за 60 тредов будет. Кстати, я тут не сижу. Захожу вечером ловить лулзы.
>>113119544 Ох лол, откуда только этот даунёнок высрался? Из /b/, судя по всему, если не знает, что в треде только один совершенно неграмотный даун и этот даун — он. Его кривые посты я детекчу на раз, поэтому вдвойне выходит смешно, когда он пытается семенить и насасывать самому себе.
>>113119691 А больное шизоуёбище всё тужилось и тужилось зафорсить свое новое говно. Жалко твоих родителей, хотели себе нормального сына, а в итоге им такой дефектный ущерб высрался на голову.
This paper details many of the techniques used to determine what ports (or similar protocol abstraction) of a host are listening for connections. These ports represent potential communication channels. Mapping their existence facilitates the exchange of information with the host, and thus it is quite useful for anyone wishing to explore their networked environment, including hackers. Despite what you have heard from the media, the Internet is NOT all about TCP port 80. Anyone who relies exclusively on the WWW for information gathering is likely to gain the same level of proficiency as your average AOLer, who does the same. This paper is also meant to serve as an introduction to and ancillary documentation for a coding project I have been working on. It is a full featured, robust port scanner which (I hope) solves some of the problems I have encountered when dealing with other scanners and when working to scan massive networks. The tool, nmap, supports the following:
- vanilla TCP connect() scanning, - TCP SYN (half open) scanning, - TCP FIN (stealth) scanning, - TCP ftp proxy (bounce attack) scanning - SYN/FIN scanning using IP fragments (bypasses packet filters), - UDP recvfrom() scanning, - UDP raw ICMP port unreachable scanning, - ICMP scanning (ping-sweep), and - reverse-ident scanning.
The freely distributable source code is appended to this paper.
[ Introduction ]
Scanning, as a method for discovering exploitable communication channels, has been around for ages. The idea is to probe as many listeners as possible, and keep track of the ones that are receptive or useful to your particular need. Much of the field of advertising is based on this paradigm, and the "to current resident" brute force style of bulk mail is an almost perfect parallel to what we will discuss. Just stick a message in every mailbox and wait for the responses to trickle back.
Scanning entered the h/p world along with the phone systems. Here we have this tremendous global telecommunications network, all reachable through codes on our telephone. Millions of numbers are reachable locally, yet we may only be interested in 0.5% of these numbers, perhaps those that answer with a carrier.
The logical solution to finding those numbers that interest us is to try them all. Thus the field of "wardialing" arose. Excellent programs like Toneloc were developed to facilitate the probing of entire exchanges and more. The basic idea is simple. If you dial a number and your modem gives you a CONNECT, you record it. Otherwise the computer hangs up and tirelessly dials the next one.
While wardialing is still useful, we are now finding that many of the computers we wish to communicate with are connected through networks such as the Internet rather than analog phone dialups. Scanning these machines involves the same brute force technique. We send a blizzard of packets for various protocols, and we deduce which services are listening from the responses we receive (or don't receive).
[ Techniques ]
Over time, a number of techniques have been developed for surveying the protocols and ports on which a target machine is listening. They all offer different benefits and problems. Here is a line up of the most common:
- TCP connect() scanning : This is the most basic form of TCP scanning. The connect() system call provided by your operating system is used to open a connection to every interesting port on the machine. If the port is listening, connect() will succeed, otherwise the port isn't reachable. One strong advantage to this technique is that you don't need any special privileges. Any user on most UNIX boxes is free to use this call. Another advantage is speed. While making a separate connect() call for every targeted port in a linear fashion would take ages over a slow connection, you can hasten the scan by using many sockets in parallel. Using non-blocking I/O allows you to set a low time-out period and watch all the sockets at once. This is the fastest scanning method supported by nmap, and is available with the -t (TCP) option. The big downside is that this sort of scan is easily detectable and filterable. The target hosts logs will show a bunch of connection and error messages for the services which take the connection and then have it immediately shutdown.
- TCP SYN scanning : This technique is often referred to as "half-open" scanning, because you don't open a full TCP connection. You send a SYN packet, as if you are going to open a real connection and wait for a response. A SYN|ACK indicates the port is listening. A RST is indicative of a non- listener. If a SYN|ACK is received, you immediately send a RST to tear down the connection (actually the kernel does this for us). The primary advantage to this scanning technique is that fewer sites will log it. Unfortunately you need root privileges to build these custom SYN packets. SYN scanning is the -s option of nmap.
- TCP FIN scanning : There are times when even SYN scanning isn't clandestine enough. Some firewalls and packet filters watch for SYNs to an unallowed port, and programs like synlogger and Courtney are available to detect these scans. FIN packets, on the other hand, may be able to pass through unmolested. This scanning technique was featured in detail by Uriel Maimon in Phrack 49, article 15. The idea is that closed ports tend to reply to your FIN packet with the proper RST. Open ports, on the other hand, tend to ignore the packet in question. This is a bug in TCP implementations and so it isn't 100% reliable (some systems, notably Micro$oft boxes, seem to be immune). It works well on most other systems I've tried. FIN scanning is the -U (Uriel) option of nmap.
- Fragmentation scanning : This is not a new scanning method in and of itself, but a modification of other techniques. Instead of just sending the probe packet, you break it into a couple of small IP fragments. You are splitting up the TCP header over several packets to make it harder for packet filters and so forth to detect what you are doing. Be careful with this! Some programs have trouble handling these tiny packets. My favorite sniffer segmentation faulted immediately upon receiving the first 36-byte fragment. After that comes a 24 byte one! While this method won't get by packet filters and firewalls that queue all IP fragments (like the CONFIG_IP_ALWAYS_DEFRAG option in Linux), a lot of networks can't afford the performance hit this causes. This feature is rather unique to scanners (at least I haven't seen any others that do this). Thanks to daemon9 for suggesting it. The -f instructs the specified SYN or FIN scan to use tiny fragmented packets.
- TCP reverse ident scanning : As noted by Dave Goldsmith in a 1996 Bugtraq post, the ident protocol (rfc1413) allows for the disclosure of the username of the owner of any process connected via TCP, even if that process didn't initiate the connection. So you can, for example, connect to the http port and then use identd to find out whether the server is running as root. This can only be done with a full TCP connection to the target port (i.e. the -t option). nmap's -i option queries identd for the owner of all listen()ing ports.
- FTP bounce attack : An interesting "feature" of the ftp protocol (RFC 959) is support for "proxy" ftp connections. In other words, I should be able to connect from evil.com to the FTP server-PI (protocol interpreter) of target.com to establish the control communication connection. Then I should be able to request that the server-PI initiate an active server-DTP (data transfer process) to send a file ANYWHERE on the internet! Presumably to a User-DTP, although the RFC specifically states that asking one server to send a file to another is OK. Now this may have worked well in 1985 when the RFC was just written. But nowadays, we can't have people hijacking ftp servers and requesting that data be spit out to arbitrary points on the internet. As Hobbit wrote back in 1995, this protocol flaw "can be used to post virtually untraceable mail and news, hammer on servers at various sites, fill up disks, try to hop firewalls, and generally be annoying and hard to track down at the same time." What we will exploit this for is to (surprise, surprise) scan TCP ports from a "proxy" ftp server. Thus you could connect to an ftp server behind a firewall, and then scan ports that are more likely to be blocked (139 is a good one). If the ftp server allows reading from and writing to a directory (such as /incoming), you can send arbitrary data to ports that you do find open.
For port scanning, our technique is to use the PORT command to declare that our passive "User-DTP" is listening on the target box at a certain port number. Then we try to LIST the current directory, and the result is sent over the Server-DTP channel. If our target host is listening on the specified port, the transfer will be successful (generating a 150 and a 226 response). Otherwise we will get "425 Can't build data connection: Connection refused." Then we issue another PORT command to try the next port on the target host. The advantages to this approach are obvious (harder to trace, potential to bypass firewalls). The main disadvantages are that it is slow, and that some FTP servers have finally got a clue and disabled the proxy "feature". For what it is worth, here is a list of banners from sites where it does/doesn't work:
220 xxxxxxx.com FTP server (Version wu-2.4(3) Wed Dec 14 ...) ready. 220 xxx.xxx.xxx.edu FTP server ready. 220 xx.Telcom.xxxx.EDU FTP server (Version wu-2.4(3) Tue Jun 11 ...) ready. 220 lem FTP server (SunOS 4.1) ready. 220 xxx.xxx.es FTP server (Version wu-2.4(11) Sat Apr 27 ...) ready. 220 elios FTP server (SunOS 4.1) ready
Bounce attack failed:
220 wcarchive.cdrom.com FTP server (Version DG-2.0.39 Sun May 4 ...) ready. 220 xxx.xx.xxxxx.EDU Version wu-2.4.2-academ[BETA-12](1) Fri Feb 7 220 ftp Microsoft FTP Service (Version 3.0). 220 xxx FTP server (Version wu-2.4.2-academ[BETA-11](1) Tue Sep 3 ...) ready. 220 xxx.unc.edu FTP server (Version wu-2.4.2-academ[BETA-13](6) ...) ready.
The 'x's are partly there to protect those guilty of running a flawed server, but mostly just to make the lines fit in 80 columns. Same thing with the ellipse points. The bounce attack is available with the -b <proxy_server> option of nmap. proxy_server can be specified in standard URL format, username:password@server:port , with everything but server being optional.
- UDP ICMP port unreachable scanning : This scanning method varies from the above in that we are using the UDP protocol instead of TCP. While this protocol is simpler, scanning it is actually significantly more difficult. This is because open ports don't have to send an acknowledgement in response to our probe, and closed ports aren't even required to send an error packet. Fortunately, most hosts do send an ICMP_PORT_UNREACH error when you send a packet to a closed UDP port. Thus you can find out if a port is NOT open, and by exclusion determine which ports which are. Neither UDP packets, nor the ICMP errors are guaranteed to arrive, so UDP scanners of this sort must also implement retransmission of packets that appear to be lost (or you will get a bunch of false positives). Also, this scanning technique is slow because of compensation for machines that took RFC 1812 section 4.3.2.8 to heart and limit ICMP error message rate. For example, the Linux kernel (in net/ipv4/icmp.h) limits destination unreachable message generation to 80 per 4 seconds, with a 1/4 second penalty if that is exceeded. At some point I will add a better algorithm to nmap for detecting this. Also, you will need to be root for access to the raw ICMP socket necessary for reading the port unreachable. The -u (UDP) option of nmap implements this scanning method for root users.
Some people think UDP scanning is lame and pointless. I usually remind them of the recent Solaris rcpbind hole. Rpcbind can be found hiding on an undocumented UDP port somewhere above 32770. So it doesn't matter that 111 is blocked by the firewall. But can you find which of the more than 30,000 high ports it is listening on? With a UDP scanner you can!
- UDP recvfrom() and write() scanning : While non-root users can't read port unreachable errors directly, Linux is cool enough to inform the user indirectly when they have been received. For example a second write() call to a closed port will usually fail. A lot of scanners such as netcat and Pluvius' pscan.c does this. I have also noticed that recvfrom() on non-blocking UDP sockets usually return EAGAIN ("Try Again", errno 13) if the ICMP error hasn't been received, and ECONNREFUSED ("Connection refused", errno 111) if it has. This is the technique used for determining open ports when non-root users use -u (UDP). Root users can also use the -l (lamer UDP scan) options to force this, but it is a really dumb idea.
- ICMP echo scanning : This isn't really port scanning, since ICMP doesn't have a port abstraction. But it is sometimes useful to determine what hosts in a network are up by pinging them all. the -P option does this. Also you might want to adjust the PING_TIMEOUT #define if you are scanning a large network. nmap supports a host/bitmask notation to make this sort of thing easier. For example 'nmap -P cert.org/24 152.148.0.0/16' would scan CERT's class C network and whatever class B entity 152.148.* represents. Host/26 is useful for 6-bit subnets within an organization.
Prior to writing nmap, I spent a lot of time with other scanners exploring the Internet and various private networks (note the avoidance of the "intranet" buzzword). I have used many of the top scanners available today, including strobe by Julian Assange, netcat by Hobbit, stcp by Uriel Maimon, pscan by Pluvius, ident-scan by Dave Goldsmith, and the SATAN tcp/udp scanners by Wietse Venema. These are all excellent scanners! In fact, I ended up hacking most of them to support the best features of the others. Finally I decided to write a whole new scanner, rather than rely on hacked versions of a dozen different scanners in my /usr/local/sbin. While I wrote all the code, nmap uses a lot of good ideas from its predecessors. I also incorporated some new stuff like fragmentation scanning and options that were on my "wish list" for other scanners. Here are some of the (IMHO) useful features of nmap:
- dynamic delay time calculations: Some scanners require that you supply a delay time between sending packets. Well how should I know what to use? Sure, I can ping them, but that is a pain, and plus the response time of many hosts changes dramatically when they are being flooded with requests. nmap tries to determine the best delay time for you. It also tries to keep track of packet retransmissions, etc. so that it can modify this delay time during the course of the scan. For root users, the primary technique for finding an initial delay is to time the internal "ping" function. For non-root users, it times an attempted connect() to a closed port on the target. It can also pick a reasonable default value. Again, people who want to specify a delay themselves can do so with -w (wait), but you shouldn't have to.
- retransmission: Some scanners just send out all the query packets, and collect the responses. But this can lead to false positives or negatives in the case where packets are dropped. This is especially important for "negative" style scans like UDP and FIN, where what you are looking for is a port that does NOT respond. In most cases, nmap implements a configurable number of retransmissions for ports that don't respond.
- parallel port scanning: Some scanners simply scan ports linearly, one at a time, until they do all 65535. This actually works for TCP on a very fast local network, but the speed of this is not at all acceptable on a wide area network like the Internet. nmap uses non-blocking i/o and parallel scanning in all TCP and UDP modes. The number of scans in parallel is configurable with the -M (Max sockets) option. On a very fast network you will actually decrease performance if you do more than 18 or so. On slow networks, high values increase performance dramatically.
- Flexible port specification: I don't always want to just scan all 65535 ports. Also, the scanners which only allow you to scan ports 1 - N sometimes fall short of my need. The -p option allows you to specify an arbitrary number of ports and ranges for scanning. For example, '-p 21-25,80,113, 60000-' does what you would expect (a trailing hyphen means up to 65536, a leading hyphen means 1 through). You can also use the -F (fast) option, which scans all the ports registered in your /etc/services (a la strobe).
- Flexible target specification: I often want to scan more then one host, and I certainly don't want to list every single host on a large network to scan. Everything that isn't an option (or option argument) in nmap is treated as a target host. As mentioned before, you can optionally append /mask to a hostname or IP address in order to scan all hosts with the same initial <mask> bits of the 32 bit IP address.
- detection of down hosts: Some scanners allow you to scan large networks, but they waste a huge amount of time scanning 65535 ports of a dead host! By default, nmap pings each host to make sure it is up before wasting time on it. It is also capable of bailing on hosts that seem down based on strange port scanning errors. It is also meant to be tolerant of people who accidentally scan network addresses, broadcast addresses, etc.
- detection of your IP address: For some reason, a lot of scanners ask you to type in your IP address as one of the parameters. Jeez, I don't want to have to 'ifconfig' and figure out my current address every time I scan. Of course, this is better then the scanners I've seen which require recompilation every time you change your address! nmap first tries to detect your address during the ping stage. It uses the address that the echo response is received on, as that is the interface it should almost always be routed through. If it can't do this (like if you don't have host pinging enabled), nmap tries to detect your primary interface and uses that address. You can also use -S to specify it directly, but you shouldn't have to (unless you want to make it look like someone ELSE is SYN or FIN scanning a host.
-v (verbose): This is highly recommended for interactive use. Among other useful messages, you will see ports come up as they are found, rather than having to wait for the sorted summary list.
-r (randomize): This will randomize the order in which the target host's ports are scanned.
-q (quash argv): This changes argv[0] to FAKE_ARGV ("pine" by default). It also eliminates all other arguments, so you won't look too suspicious in 'w' or 'ps' listings.
-h for an options summary.
Also look for http://www.dhp.com/~fyodor/nmap/, which is the web site I plan to put future versions and more information on. In fact, you would be well advised to check there right now.
[ Greets ]
Of course this paper would not be complete without a shout out to all the people who made it possible.
Congratulations to the people at Phrack for getting this thing going again! Greets to the whole dc-stuff crew. Greets to the STUPH, Turntec, L0pht, TACD, the Guild, cDc, and all the other groups who help keep the scene alive. Shout out to _eci for disclosing the coolest Windows bug in recent history. Thanks to the Data Haven Project (dhp.com) admins for providing such great service for $10/month. And a special shout out goes to all my friends. You know who you are and some of you (wisely) stay out of the spotlight, so I'll keep you anonymous ... except of course for Ken and Jay, and Avenger, Grog, Cash Monies, Ethernet Kid, Zos, JuICe, Mother Prednisone, and Karen.
And finally, we get to ...
[ The code ]
This should compile fine on any Linux box with 'gcc -O6 -o nmap nmap.c -lm'. It is distrubuted under the terms of the GNU GENERAL PUBLIC LICENSE. If you have problems or comments, feel free to mail me ([email protected]).
<++> nmap/Makefile # A trivial makefile for Network Mapper nmap: nmap.c nmap.h gcc -Wall -O6 -o nmap nmap.c -lm <-->
/ #define to zero if you don't want to ignore hosts of the form xxx.xxx.xxx.{0,255} (usually network and broadcast addresses) / #define IGNORE_ZERO_AND_255_HOSTS 1
/ Default number of ports in paralell. Doesn't always involve actual sockets. Can also adjust with the -M command line option. / #define MAX_SOCKETS 36 / If reads of a UDP port keep returning EAGAIN (errno 13), do we want to count the port as valid? / #define RISKY_UDP_SCAN 0 / This ideally should be a port that isn't in use for any protocol on our machine or on the target / #define MAGIC_PORT 49724 / How many udp sends without a ICMP port unreachable error does it take before we consider the port open? / #define UDP_MAX_PORT_RETRIES 4 /How many seconds before we give up on a host being alive? / #define PING_TIMEOUT 2 #define FAKE_ARGV "pine" / What ps and w should show if you use -q / / How do we want to log into ftp sites for / #define FTPUSER "anonymous" #define FTPPASS "-wwwuser@" #define FTP_RETRIES 2 / How many times should we relogin if we lose control connection? /
typedef struct port { unsigned short portno; unsigned char proto; char owner; struct port next; } port;
struct ftpinfo { char user[64]; char pass[256]; / methinks you're paranoid if you need this much space / char server_name[MAXHOSTNAMELEN + 1]; struct in_addr server; unsigned short port; int sd; / socket descriptor / };
typedef port portlist;
/PROTOTYPES/
/ print usage information / void printusage(char name);
/ our scanning functions / portlist tcp_scan(struct in_addr target, unsigned short portarray, portlist ports); portlist syn_scan(struct in_addr target, unsigned short portarray, struct in_addr source, int fragment, portlist ports); portlist fin_scan(struct in_addr target, unsigned short portarray, struct in_addr source, int fragment, portlist ports); portlist udp_scan(struct in_addr target, unsigned short portarray, portlist ports); portlist lamer_udp_scan(struct in_addr target, unsigned short portarray, portlist ports); portlist bounce_scan(struct in_addr target, unsigned short portarray, struct ftpinfo ftp, portlist ports);
/ Scan helper functions / unsigned long calculate_sleep(struct in_addr target); int check_ident_port(struct in_addr target); int getidentinfoz(struct in_addr target, int localport, int remoteport, char owner); int parse_bounce(struct ftpinfo ftp, char url); int ftp_anon_connect(struct ftpinfo ftp);
/ port manipulators / unsigned short getpts(char expr); / someone stole the name getports()! / unsigned short getfastports(int tcpscan, int udpscan); int addport(portlist ports, unsigned short portno, unsigned short protocol, char owner); int deleteport(portlist ports, unsigned short portno, unsigned short protocol); void printandfreeports(portlist ports); int shortfry(unsigned short ports);
/ socket manipulation functions / void init_socket(int sd); int unblock_socket(int sd); int block_socket(int sd); int recvtime(int sd, char buf, int len, int seconds);
/ RAW packet building/dissasembling stuff / int send_tcp_raw( int sd, struct in_addr source, struct in_addr victim, unsigned short sport, unsigned short dport, unsigned long seq, unsigned long ack, unsigned char flags, unsigned short window, char data, unsigned short datalen); int isup(struct in_addr target); unsigned short in_cksum(unsigned short ptr,int nbytes); int send_small_fragz(int sd, struct in_addr source, struct in_addr victim, int sport, int dport, int flags); int readtcppacket(char packet, int readdata); int listen_icmp(int icmpsock, unsigned short outports[], unsigned short numtries[], int num_out, struct in_addr target, portlist ports);
/ general helper functions / void hdump(unsigned char packet, int len); void safe_malloc(int size); #endif / NMAP_H /
/ global options / short debugging = DEBUGGING; short verbose = 0; int number_of_ports = 0; / How many ports do we scan per machine? / int max_parallel_sockets = MAX_SOCKETS; extern char optarg; extern int optind; short isr00t = 0; short identscan = 0; char current_name[MAXHOSTNAMELEN + 1]; unsigned long global_delay = 0; unsigned long global_rtt = 0; struct in_addr ouraddr = { 0 };
int main(int argc, char argv[]) { int i, j, arg, argvlen; short fastscan=0, tcpscan=0, udpscan=0, synscan=0, randomize=0; short fragscan = 0, finscan = 0, quashargv = 0, pingscan = 0, lamerscan = 0; short bouncescan = 0; short ports = NULL, mask; struct ftpinfo ftp = { FTPUSER, FTPPASS, "", { 0 }, 21, 0}; portlist openports = NULL; struct hostent target = 0; unsigned long int lastip, currentip, longtmp; char target_net, p; struct in_addr current_in, source=NULL; int hostup = 0; char fakeargv[argc + 1];
/ OK, lets parse these args! / while((arg = getopt(argc,fakeargv,"b:dFfhilM:Pp:qrS:stUuw:v")) != EOF) { switch(arg) { case 'b': bouncescan++; if (parse_bounce(&ftp, optarg) < 0 ) { fprintf(stderr, "Your argument to -b is fucked up. Use the normal url style: user:pass@server:port or just use server and use default anon login\n Use -h for help\n"); } break; case 'd': debugging++; break; case 'F': fastscan++; break; case 'f': fragscan++; break; case 'h': case '?': printusage(argv[0]); case 'i': identscan++; break; case 'l': lamerscan++; udpscan++; break; case 'M': max_parallel_sockets = atoi(optarg); break; case 'P': pingscan++; break; case 'p': if (ports) fatal("Only 1 -p option allowed, seperate multiple ranges with commas."); ports = getpts(optarg); break; case 'r': randomize++; break; case 's': synscan++; break; case 'S': if (source) fatal("You can only use the source option once!\n"); source = safe_malloc(sizeof(struct in_addr)); if (!inet_aton(optarg, source)) fatal("You must give the source address in dotted deciman, currently.\n"); break; case 't': tcpscan++; break; case 'U': finscan++; break; case 'u': udpscan++; break; case 'q': quashargv++; break; case 'w': global_delay = atoi(optarg); break; case 'v': verbose++; } }
/ Take care of user wierdness / isr00t = !(geteuid()|geteuid()); if (tcpscan && synscan) fatal("The -t and -s options can't be used together.\ If you are trying to do TCP SYN scanning, just use -s.\ For normal connect() style scanning, use -t"); if ((synscan || finscan || fragscan || pingscan) && !isr00t) fatal("Options specified require r00t privileges. You don't have them!"); if (!tcpscan && !udpscan && !synscan && !finscan && !bouncescan && !pingscan) { tcpscan++; if (verbose) error("No scantype specified, assuming vanilla tcp connect()\ scan. Use -P if you really don't want to portscan."); if (fastscan && ports) fatal("You can use -F (fastscan) OR -p for explicit port specification.\ Not both!\n"); } / If he wants to bounce of an ftp site, that site better damn well be reachable! / if (bouncescan) { if (!inet_aton(ftp.server_name, &ftp.server)) { if ((target = gethostbyname(ftp.server_name))) memcpy(&ftp.server, target->h_addr_list[0], 4); else { fprintf(stderr, "Failed to resolve ftp bounce proxy hostname/IP: %s\n", ftp.server_name); exit(1);
} } else if (verbose) printf("Resolved ftp bounce attack proxy to %s (%s).\n", target->h_name, inet_ntoa(ftp.server)); } printf("\nStarting nmap V 1.21 by Fyodor ([email protected], www.dhp.com/~fyodor/nmap/\n"); if (!verbose) error("Hint: The -v option notifies you of open ports as they are found.\n"); if (fastscan) ports = getfastports(synscan|tcpscan|fragscan|finscan|bouncescan, udpscan|lamerscan); if (!ports) ports = getpts("1-1024");
/ more fakeargv junk, BTW malloc'ing extra space in argv[0] doesn't work / if (quashargv) { argvlen = strlen(argv[0]); if (argvlen < strlen(FAKE_ARGV)) fatal("If you want me to fake your argv, you need to call the program with a longer name. Try the full pathname, or rename it fyodorssuperdedouperportscanner"); strncpy(argv[0], FAKE_ARGV, strlen(FAKE_ARGV)); for(i = strlen(FAKE_ARGV); i < argvlen; i++) argv[0] = '\0'; for(i=1; i < argc; i++) { argvlen = strlen(argv); for(j=0; j <= argvlen; j++) argv[j] = '\0'; } }
srand(time(NULL));
while(optind < argc) {
/ Time to parse the allowed mask / target = NULL; target_net = strtok(strdup(fakeargv[optind]), "/"); mask = (p = strtok(NULL,""))? atoi(p) : 32; if (debugging) printf("Target network is %s, scanmask is %d\n", target_net, mask);
if (!inet_aton(target_net, ¤t_in)) { if ((target = gethostbyname(target_net))) memcpy(¤tip, target->h_addr_list[0], 4); else { fprintf(stderr, "Failed to resolve given hostname/IP: %s\n", target_net); } } else currentip = current_in.s_addr;
longtmp = ntohl(currentip); currentip = longtmp & (unsigned long) (0 - pow(2,32 - mask)); lastip = longtmp | (unsigned long) (pow(2,32 - mask) - 1); while (currentip <= lastip) { openports = NULL; longtmp = htonl(currentip); target = gethostbyaddr((char ) &longtmp, 4, AF_INET); current_in.s_addr = longtmp; if (target) strncpy(current_name, target->h_name, MAXHOSTNAMELEN); else current_name[0] = '\0'; current_name[MAXHOSTNAMELEN + 1] = '\0'; if (randomize) shortfry(ports); #ifdef IGNORE_ZERO_AND_255_HOSTS if (IGNORE_ZERO_AND_255_HOSTS && (!(currentip % 256) || currentip % 256 == 255)) { printf("Skipping host %s because IGNORE_ZERO_AND_255_HOSTS is set in the source.\n", inet_ntoa(current_in)); hostup = 0; } else{ #endif if (isr00t) { if (!(hostup = isup(current_in))) { if (!pingscan) printf("Host %s (%s) appears to be down, skipping scan.\n", current_name, inet_ntoa(current_in)); else printf("Host %s (%s) appears to be down\n", current_name, inet_ntoa(current_in)); } else if (debugging || pingscan) printf("Host %s (%s) appears to be up ... good.\n", current_name, inet_ntoa(current_in)); } else hostup = 1; / We don't really check because the lamer isn't root./ }
/ Time for some actual scanning! */ if (hostup) { if (tcpscan) tcp_scan(current_in, ports, &openports);
if (synscan) syn_scan(current_in, ports, source, fragscan, &openports);
if (finscan) fin_scan(current_in, ports, source, fragscan, &openports);
if (bouncescan) { if (ftp.sd <= 0) ftp_anon_connect(&ftp); if (ftp.sd > 0) bounce_scan(current_in, ports, &ftp, &openports); } if (udpscan) { if (!isr00t || lamerscan) lamer_udp_scan(current_in, ports, &openports);
else udp_scan(current_in, ports, &openports); }
if (!openports && !pingscan) printf("No ports open for host %s (%s)\n
inet_ntoa(current_in)); if (openports) { printf("Open ports on %s (%s):\n", current_name, inet_ntoa(current_in)); printandfreeports(openports); } } currentip++; } optind++; }
return 0; }
__inline__ int unblock_socket(int sd) { int options; /Unblock our socket to prevent recvfrom from blocking forever on certain target ports. / options = O_NONBLOCK | fcntl(sd, F_GETFL); fcntl(sd, F_SETFL, options); return 1; }
__inline__ int block_socket(int sd) { int options; options = (~O_NONBLOCK) & fcntl(sd, F_GETFL); fcntl(sd, F_SETFL, options); return 1; }
/ Currently only sets SO_LINGER, I haven't seen any evidence that this helps. I'll do more testing before dumping it. / __inline__ void init_socket(int sd) { struct linger l;
/ Convert a string like "-100,200-1024,3000-4000,60000-" into an array of port numbers/ unsigned short getpts(char origexpr) { int exlen = strlen(origexpr); char p,q; unsigned short tmp, ports; int i=0, j=0,start,end; char expr = strdup(origexpr); ports = safe_malloc(65536 sizeof(short)); i++; i--; for(;j < exlen; j++) if (expr[j] != ' ') expr[i++] = expr[j]; expr = '\0'; exlen = i + 1; i=0; while((p = strchr(expr,','))) { p = '\0'; if (expr == '-') {start = 1; end = atoi(expr+ 1);} else { start = end = atoi(expr); if ((q = strchr(expr,'-')) && (q+1) ) end = atoi(q + 1); else if (q && !(q+1)) end = 65535; } if (debugging) printf("The first port is %d, and the last one is %d\n", start, end); if (start < 1 || start > end) fatal("Your port specifications are illegal!"); for(j=start; j <= end; j++) ports[i++] = j; expr = p + 1; } if (expr == '-') { start = 1; end = atoi(expr+ 1); } else { start = end = atoi(expr); if ((q = strchr(expr,'-')) && (q+1) ) end = atoi(q+1); else if (q && !(q+1)) end = 65535; } if (debugging) printf("The first port is %d, and the last one is %d\n", start, end); if (start < 1 || start > end) fatal("Your port specifications are illegal!"); for(j=start; j <= end; j++) ports[i++] = j; number_of_ports = i; ports[i++] = 0; tmp = realloc(ports, i sizeof(short)); free(expr); return tmp; }
unsigned short getfastports(int tcpscan, int udpscan) { int portindex = 0, res, lastport = 0; unsigned int portno = 0; unsigned short ports; char proto[10]; char line[81]; FILE fp; ports = safe_malloc(65535 sizeof(unsigned short)); proto[0] = '\0'; if (!(fp = fopen("/etc/services", "r"))) { printf("We can't open /etc/services for reading! Fix your system or don't use -f\n"); perror("fopen"); exit(1); }
void printusage(char name) { printf("%s [options] [hostname[/mask] . . .] options (none are required, most can be combined): -t tcp connect() port scan -s tcp SYN stealth port scan (must be root) -u UDP port scan, will use MUCH better version if you are root -U Uriel Maimon (P49-15) style FIN stealth scan. -l Do the lamer UDP scan even if root. Less accurate. -P ping \"scan\". Find which hosts on specified network(s) are up. -b <ftp_relay_host> ftp \"bounce attack\" port scan -f use tiny fragmented packets for SYN or FIN scan. -i Get identd (rfc 1413) info on listening TCP processes. -p <range> ports: ex: \'-p 23\' will only try port 23 of the host(s) \'-p 20-30,63000-\' scans 20-30 and 63000-65535 default: 1-1024 -F fast scan. Only scans ports in /etc/services, a la strobe(1). -r randomize target port scanning order. -h help, print this junk. Also see http://www.dhp.com/~fyodor/nmap/ -S If you want to specify the source address of SYN or FYN scan. -v Verbose. Its use is recommended. Use twice for greater effect. -w <n> delay. n microsecond delay. Not recommended unless needed. -M <n> maximum number of parallel sockets. Larger isn't always better. -q quash argv to something benign, currently set to \"%s\". Hostnames specified as internet hostname or IP address. Optional '/mask' specifies subnet. cert.org/24 or 192.88.209.5/24 scan CERT's Class C.\n", name, FAKE_ARGV); exit(1); }
portlist tcp_scan(struct in_addr target, unsigned short portarray, portlist ports) {
int starttime, current_out = 0, res , deadindex = 0, i=0, j=0, k=0, max=0; struct sockaddr_in sock, stranger, mysock; int sockaddr_in_len = sizeof(struct sockaddr_in); int sockets[max_parallel_sockets], deadstack[max_parallel_sockets]; unsigned short portno[max_parallel_sockets]; char owner[513], buf[65536]; int tryident = identscan, current_socket /actually it is a socket INDEX/; fd_set fds_read, fds_write; struct timeval nowait = {0,0}, longwait = {7,0};
else if(FD_ISSET(sockets[k], &fds_write)) { /printf("Socket at port %hi is selectable for w only.VERIFYING\n", portno[k]);/ res = send(sockets[k], buf, 0, 0); if (res < 0 ) { signal(SIGPIPE, SIG_IGN); if (debugging > 1) printf("Bad port %hi caught by 0-byte write!\n", portno[k]); } else { if (debugging || verbose) printf("Adding TCP port %hi due to successful 0-byte write!\n", portno[k]); if (tryident) { if ( getsockname(sockets[k], (struct sockaddr ) &mysock , &sockaddr_in_len ) ) { perror("getsockname"); exit(1); } tryident = getidentinfoz(target, ntohs(mysock.sin_port), portno[k], owner); } addport(ports, portno[k], IPPROTO_TCP, owner); } if (max == sockets[k]) max--; FD_CLR(sockets[k], &fds_write); deadstack[++deadindex] = k; current_out--; portno[k] = 0; close(sockets[k]); } else if ( FD_ISSET(sockets[k], &fds_read) ) { printf("Socket at port %hi is selectable for r only. This is very wierd.\n", portno[k]); if (max == sockets[k]) max--; FD_CLR(sockets[k], &fds_read); deadstack[++deadindex] = k; current_out--; portno[k] = 0; close(sockets[k]); } else { /printf("Socket at port %hi not selecting, readding.\n",portno[k]);/ FD_SET(sockets[k], &fds_write); FD_SET(sockets[k], &fds_read); } } } }
if (debugging || verbose) printf("Scanned %d ports in %ld seconds with %d parallel sockets.\n", number_of_ports, time(NULL) - starttime, max_parallel_sockets); return ports; }
/ gawd, my next project will be in c++ so I don't have to deal with this crap ... simple linked list implementation / int addport(portlist ports, unsigned short portno, unsigned short protocol, char owner) { struct port current, tmp; int len;
if (ports) { current = ports; / case 1: we add to the front of the list / if (portno <= current->portno) { if (current->portno == portno && current->proto == protocol) { if (debugging || verbose) printf("Duplicate port (%hi/%s)\n", portno , (protocol == IPPROTO_TCP)? "tcp": "udp"); return -1; } tmp = current; ports = safe_malloc(sizeof(struct port)); (ports)->next = tmp; current = ports; current->portno = portno; current->proto = protocol; if (owner && owner) { len = strlen(owner); current->owner = malloc(sizeof(char) * (len + 1)); strncpy(current->owner, owner, len + 1); } else current->owner = NULL;
Горе пограмист, кончай свой быдло-код постить плиз.
А я в очередной раз поясняю залетным безмозглым малолетним долбоебам в тысячный раз вопрощающим А ШО ВЫ ТУТ ДЕЛАЕТ 50 ТРЕДОВ СМОТРИТЕ КАК ТНИ СРУТ ЕБАТЬ ВЫ ТУПЫЕ)))
Так вот. Смысл всего этого форса в том что:
— когда в очередной раз зеленый или петян или малолетная дура решит создат тред наберет 300 постов покажу писечку)) — когда зеленая жабка создаст очередной как тян же хочется (( — когда очередняра малолетняя со спермотоксикозом создаст тред безвкусной порнухи
Чтобы вот во всех этих случаях адекватный анон грамотно слил все это засилье рачья. Вот собственно для чего ТНУС и форсится. Причем совершенно случайно и спонтанно. Вопросы?
Всегда так, с наступлением поздней ночи этот ваш тред умирает? Или они все такие и днем тоже? Если только ночью, то это понятно. Мамка своих мальчиков спатки погнала, в школу утром.
Сегодня рассказал приятелю про ТНУС. Он охуел конечно сначала, но потом преодолев стыд мы с ним разговорились Он еще тот эстет, но вот жена у него даже дома воняет. Лол. Я тогда подумал, что да, бывет, что шлюхи ухаживают за собой, но это только для того, чтобы пустить в пыль в глаза, а потом, когда цель достигнута, то можно уже срать, не снимая свитер.
что если мрази с пиздой не читают освежители и инструкции на влажных салфетках, а предпочитают изучать чиркаши на трусах и говно на бумаге, только потому, что не умеют читать?
>>113121795 >ДНУС. И треды с баттхёртами в духе: АХАХАХ ДА ТЕБЯ ПРОСТО ДВАЧЕРЫ НЕ ЕБАЛИ, ФРИГИДНАЯ КЛИМАКСОМРАЗЬ! В ОТЧАЯНИИ ШЛИКАЕШЬ ПОЧАТКОМ КУКУРУЗЫ ТАМ НЕБОСЬ!
>>113122583 Читать то они умеют, но ты понимаешь, они же ленивые бляди. Они даже посрать не планирую, а когда мочатся в холосую пукаом подергают, и если гавно вылезает, то ок, посрала, если нет - то на следующем пересыкон снова дергуют анусом. Это брат, психолгия.
>>113122768 Рачье со своим говнофорсом, сэр. Пора бы уже понять, что нынешний /b состоит из залётных вконтактодаунов, поэтому надо переходить в тематические доски.
>>113122847 >2016 год >илита обсуждает как срут тяночки >предел развития мозга достигнут пойду открывать шампанское в честь знаменательного дня в истории!
Маман работает с инфекциями любит пиздеть про гигиену как то раз пизданула что у себя дизенфецирующим (предварительно промыв в душе) все вообще прохуяривает после туалета
ТРЕД#54
ИНТЕРВЕНЦИЯ НАЧАЛАСЬ, РАЗНОСИМ ПО ПРОСТОРАМ СЕТИ ВСЮДУ, КУДА МОГУТ ДОТЯНУТЬСЯ НАШИ КРЕПКИЕ И ЭСТЕТИЧНЫЕ МУЖСКИЕ РУКИ
ПРОЦЕСС ДЕФЕКАЦИИ ТНЕЙ грязный, отвратительный, полная АНТИСАНИТАРИЯ
1. Забегает в туалет. Срывает труселя. Какие-то говняные полосы еще до начала сранья.
2. Серет и мочится одновременно, обоссывая жёппу, ляжки, пол и все вокруг.
3. Не закончив процесс, встает на ноги, оставляя между булками шматки висячего дерьма и измазывают им свою жопу.
4. Комкают туалетную бумагу и стоя на ногах, шоркают ей между булок. Для подтирания используют всего один-два таких комка. Не очистив свое очко, одним из этих грязных комков, подтирают вонючую пизду.
5. Надевают трусы на обоссанную и плохо вычищенную жопу и с невозмутимым еблетом возвращаются за столик в кафе, за парту или на рабочее место. а еще они в сортире нюхают свои труханы .
ПРОЦЕСС ДЕФЕКАЦИИ КУНОВ церемониальный, эстетичный, последовательный, ГИГИЕНИЧНЫЙ
1. Кун по-царски восседает на трон.
2. Аккуратно писает в унитаз и только после этого начинает какать, размышляя о судьбах мироздания.
3. После, складывает из туалетной бумаги многослойную салфетку и сидя подтирает попу. Одна салфетка – одно движение, и так до тех пор, пока очередная салфетка не останется чистой и сухой.
4. Надевает брюки, нажимает слив новой салфеткой, моет руки, покидает сан.узел.
Блять, грязные шлюхи, ну почему вы не следите за своей гигиеной и чистотой, почему вы такие нечистоплотные?
FAQ для новоприбывших
Q: Что за хуйня тут происходит?
A: Совершенно случайно была вскрыта ужасающая правда: тян (селёдки) совершенно не умеют соблюдать личную гигиену. После того как посрут и поссут, едва вытирают свои дырки подручными средствами: фантиками от конфет, руками, своими трусами и колготками. Это мерзко и совершенно несовместимо с их серьезными лицами после того, как они выходят из туалетов и строят из себя принцесс…с обосранными жопами.
Q: Вы что тут делаете вообще? Дрочите на видео как селёдки срут?
А: Нет, мы насмехаемся над грязными серушками, формируем анти-селёдочную риторику и ниспровергаем глупые мифы, которые породили о себе селёдки.
Q: Кто вайпает тред?
А: Селёдки которым НЕПРИЯТНО. Они визжат, что тут копрофилы дрочат на говно, при это не желая воспринимать правды. Типичное поведение рыбы: подменять понятия и переводить тему в отсутствии аругментов.
Q: ко-ко-ко, листва узнала, что шкуры срут
A: Еще раз для даунов: Обсуждается не факт сранья, а его процесс и его последствия.
Q: Я чистоплотная сельдь, моюсь постоянно, два раза в день меняю белье, что насчет меня?
A: Это лишь показывает, что ты от природы – смердящая дырка! Чтоб не вонять и не быть свиньей, тебе приходится оттирать свои клоаки с особой тщательностью по несколько раз в день. Мужчина же, может это делать лишь один раз в день, а то и раз в два дня оставаясь чистым и привлекательным.
Q: И чего вы добились?
А: Как минимум, выработан новый категоричный императив: если селедка начинает умничать, всегда можно беспроигрышно апеллировать к тому, что она даже срать не умеет и у нее вся жопа в говне. При этом контраргументы в стиле «тебе просто не дают», лишь показательно утверждают неадекватность тупого инкубатора.
Q: Почему вы не расширите тему и не говорите, что тян уебища и мерзкие шлюхи?
А: Потому, что эти призывы – ревизионизм и попытка селёдок извратить суть учения. Сделать перевод обсуждения вполне конкретной, подтвержденной пруфами проблемы, на пространные визги «тян не нужны» и «все тян шлюхи», чтобы потом объявить движение «очередными сексистами которым просто не дают». Не ведись анон!
Q: Не стоит тогда унижать их, раз они по своей природе грязные уебища, ведь не можешь ты упрекнуть свинью в том что она валяется в грязи?
А: Мы смеемся и насмехаемся, потому что нам смешно. Смех – естественное состояние человека. Мы насмехаемся над неумытыми селедками, точно так же как ты насмехаешься над обезьянами в цирке.
Помните! ТНУС - это отрезвляющий глоток истины для каждой заблудшей овцы! Философия ТНУСа поведет за собой миллионы, воспитает ваших детей, задавит гнусную змею
матриархальной лжи!
АРХИВ:
https://arhivach.org/thread/136794/
https://arhivach.org/thread/137117/
https://arhivach.org/thread/137147/
https://arhivach.org/thread/137149/
https://arhivach.org/thread/137212/
https://arhivach.org/thread/137256/
https://arhivach.org/thread/137292/
https://arhivach.org/thread/137338/
https://arhivach.org/thread/137367/
https://arhivach.org/thread/137381/
https://arhivach.org/thread/137416/
https://arhivach.org/thread/137460/
https://arhivach.org/thread/137507/
https://arhivach.org/thread/137528/
https://arhivach.org/thread/137574/
https://arhivach.org/thread/137604/
https://arhivach.org/thread/137618/
https://arhivach.org/thread/137626/
https://arhivach.org/thread/137640/
https://arhivach.org/thread/137650/
https://arhivach.org/thread/137663/
https://arhivach.org/thread/137685/
https://arhivach.org/thread/137703/
https://arhivach.org/thread/137733/
https://arhivach.org/thread/137759/
https://arhivach.org/thread/137778/
https://arhivach.org/thread/137800/
https://arhivach.org/thread/137822/
https://arhivach.org/thread/137890/
https://arhivach.org/thread/137929/
https://arhivach.org/thread/137930/
https://arhivach.org/thread/137944/
https://arhivach.org/thread/137964/
https://arhivach.org/thread/137980/
https://arhivach.org/thread/137995/
https://arhivach.org/thread/138005/
https://arhivach.org/thread/138023/
https://arhivach.org/thread/138028/
https://arhivach.org/thread/138090/
-"-
https://arhivach.org/thread/138139/
https://arhivach.org/thread/138141/
https://arhivach.org/thread/138166/
https://arhivach.org/thread/138174/
https://arhivach.org/thread/138190/
https://arhivach.org/thread/138208/
https://arhivach.org/thread/138214/
https://arhivach.org/thread/138235/
https://arhivach.org/thread/138263/
-"-
https://arhivach.org/thread/138322/
https://arhivach.org/thread/138327/
Шаблон с разметкой: http://pastebin.com/jHnfbFpX
Перекатываясь соблюдайте каноничность и блюдите список архивача.