Re[9]: DoS
От: Аноним  
Дата: 16.07.08 09:30
Оценка:
RO>Хотя ошибка авторизации — это вовсе не исключительная ситуация.
Вы хотите сказать что вызов ядра — это чуть чуть медленнее retn 'а?
Боюсь я вас разочарую.
__declspec(dllexport) void __cdecl func_throw()
{

    throw (int)0;
}

#pragma optimize("", off)
__declspec(dllexport) int __cdecl func_ret()
{
    return 0;
}
#pragma optimize("", on)

int main(int argc, char * argv[])
{   
#define LOOP_COUNT 0x100000
    ::SetThreadPriority(::GetCurrentThread(), THREAD_PRIORITY_HIGHEST);
    __int64 i;
    LARGE_INTEGER tm0, tm1 ,tm2 ,tm3, freq;
    QueryPerformanceFrequency(&freq);
    QueryPerformanceCounter(&tm0);

    for(i=0;i<LOOP_COUNT;i++)
    {
        try
        {
            func_throw();
        }
        catch(int)
        {

        }    
    }
    QueryPerformanceCounter(&tm1);
    
    for(i=0;i<LOOP_COUNT;i++)
    {
        try
        {
            func_ret();
        }
        catch(int)
        {
            
        }    
    }
    QueryPerformanceCounter(&tm2);
    for(i=0;i<LOOP_COUNT;i++)
    {
        func_ret();
    }    
    QueryPerformanceCounter(&tm3);
    printf("throw: %I64u (%I64u msec)\nno throw: %I64u (%I64u msec)\nreturn: %I64u (%I64u msec)\n", 
        tm1.QuadPart-tm0.QuadPart, (tm1.QuadPart-tm0.QuadPart)*1000/freq.QuadPart,
        tm2.QuadPart-tm1.QuadPart, (tm2.QuadPart-tm1.QuadPart)*1000/freq.QuadPart,
        tm3.QuadPart-tm2.QuadPart, (tm3.QuadPart-tm2.QuadPart)*1000/freq.QuadPart);

    return 0;
};

MSVS6:

throw: 24922021515 (8277 msec)
no throw: 7474005 (2 msec)
return: 5956568 (1 msec)



MSVS8 (2005):

throw: 22129733512 (7350 msec)
no throw: 25230900 (8 msec)
return: 20586413 (6 msec)

Re[10]: DoS
От: gear nuke  
Дата: 16.07.08 10:38
Оценка:
Здравствуйте, <Аноним>, Вы писали:

А>Вы хотите сказать что вызов ядра — это чуть чуть медленнее retn 'а?


Нет, что в так называемом "обычно" до авторизации дойдёт, если пользовать prolexic.
People who are more than casually interested in computers should have at least some idea of what the underlying hardware is like. Otherwise the programs they write will be pretty weird (c) D.Knuth
Re[10]: DoS
От: Roman Odaisky Украина  
Дата: 16.07.08 14:27
Оценка:
Здравствуйте, Аноним, Вы писали:

RO>>Хотя ошибка авторизации — это вовсе не исключительная ситуация.

А>Вы хотите сказать что вызов ядра — это чуть чуть медленнее retn 'а?

Я хотел сказать, что при ошибке авторизации нечего бросаться исключениями.

А>MSVS6:


А>

А>throw: 24922021515 (8277 msec)
А>no throw: 7474005 (2 msec)
А>return: 5956568 (1 msec)



А>MSVS8 (2005):


А>

А>throw: 22129733512 (7350 msec)
А>no throw: 25230900 (8 msec)
А>return: 20586413 (6 msec)


Интересно.

Вот что получается у GCC 4.2:
#include <iostream>

void success();
void failure();

inline volatile unsigned long long rdtsc()
{
    register unsigned long long tsc asm("eax");
    asm volatile (".byte 15, 49" : : : "eax", "edx");
    return tsc;
}

int main()
{
    unsigned const n = 1000;

    unsigned long long const start1 = rdtsc();
    for(unsigned i = 0; i < n; ++i)
    {
        success();
    }
    unsigned long long const finish1 = rdtsc();

    unsigned long long const start2 = rdtsc();
    for(unsigned i = 0; i < n; ++i)
    {
        try
        {
            success();
        }
        catch(...)
        {
        }
    }
    unsigned long long const finish2 = rdtsc();

    unsigned long long const start3 = rdtsc();
    for(unsigned i = 0; i < n; ++i)
    {
        try
        {
            failure();
        }
        catch(...)
        {
        }
    }
    unsigned long long const finish3 = rdtsc();


    std::cout << (finish1 - start1) << std::endl;
    std::cout << (finish2 - start2) << std::endl;
    std::cout << (finish3 - start3) << std::endl;
}

Получается, если с -O3, так:

12210 (эта не бросается)
12180 (эта не бросается, но ее ловят)
24958478 (а эта еще и как бросается)

Так что, исходный тезис — исключения, пока их никто не бросает, дают очень малый оверхед — принимается?
До последнего не верил в пирамиду Лебедева.
Re[11]: DoS
От: Аноним  
Дата: 16.07.08 14:48
Оценка:
RO>Так что, исходный тезис — исключения, пока их никто не бросает, дают очень малый оверхед — принимается?
Ну да. Но если в проекте появляются исключения их обычно начинают бросать все по любому поводу. Вы не подумайте что я против них, проекты разные бывают, многим это пофиг (те же СУБД, UI). Но тезис "исключения мона юзать, если их не юзать" несколько нелогичен, не правда ли?
Re[12]: DoS
От: VoidEx  
Дата: 16.07.08 15:15
Оценка: -1
Здравствуйте, Аноним, Вы писали:

А>Но тезис "исключения мона юзать, если их не юзать" несколько нелогичен, не правда ли?


У вас подушка безопасности в машине есть?
Это я к вопросу логичности тезиса.
Re[13]: DoS
От: Аноним  
Дата: 16.07.08 15:18
Оценка:
VE>У вас подушка безопасности в машине есть?
VE>Это я к вопросу логичности тезиса.
Как мне самому когдато сказали — доказательства построенные на аналогиях идут далеко и лесом
Re[14]: DoS
От: VoidEx  
Дата: 16.07.08 22:02
Оценка:
Здравствуйте, Аноним, Вы писали:

VE>>У вас подушка безопасности в машине есть?

VE>>Это я к вопросу логичности тезиса.
А>Как мне самому когдато сказали — доказательства построенные на аналогиях идут далеко и лесом
А вы приняли на веру. Похвально.
Re[14]: DoS
От: gear nuke  
Дата: 17.07.08 05:27
Оценка:
Здравствуйте, <Аноним>, Вы писали:

А>Как мне самому когдато сказали — доказательства построенные на аналогиях идут далеко и лесом


Программа — абстракция мира; случай с подушками — не аналогия, а частный случай. Конечно, верность в частном случае не доказывает верность утверждения в общем, если не применить индукцию. Но это и не требуется, мы же понимаем, что серебрянной пули нет. Достаточно посмотреть, подходит ли какой-то конкретный частный случай под правило. Если да, то в этом случае можно им пользоваться.

А вот пример с авторизацией, извините, ерунда полная. Что он доказывает, что в сферическом коне нельзя использовать исключения? Глупо с этим спорить. Нужно взять этот конкретный случай и разобраться в нем.

Если есть специфические требования, в которых прикладник не силён — этим должны заниматься специалисты. Повторю — ни до какой авторизации дело не дойдёт, гораздо проще убьют сервер синфлудом, т.к мощностей для этого требуется на порядки меньше. Любой вменяемый HTTP сервер имеет ограничения на кол-во коннектов с одного IP, так что предположение о рандомных логинах — нонсенс. Если у кого-то есть достаточное кол-во хостов, что бы выполнить количество запросов, с которым не справится сервер — это значит что сервер не расчитан на такую нагрузку; нельзя заранее отличить эти запросы от легальных, сервер упадёт независимо от правильностей паролей.
People who are more than casually interested in computers should have at least some idea of what the underlying hardware is like. Otherwise the programs they write will be pretty weird (c) D.Knuth
Re[15]: DoS
От: Roman Odaisky Украина  
Дата: 17.07.08 08:25
Оценка:
Здравствуйте, gear nuke, Вы писали:

GN>Повторю — ни до какой авторизации дело не дойдёт, гораздо проще убьют сервер синфлудом, т.к мощностей для этого требуется на порядки меньше.


А разве современные серверные ОС подвержены таким примитивным атакам?
До последнего не верил в пирамиду Лебедева.
Re[14]: DoS
От: VoidEx  
Дата: 17.07.08 08:47
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Как мне самому когдато сказали — доказательства построенные на аналогиях идут далеко и лесом

Вы, кстати, доказательство с опровержением не спутали?
Re[16]: DoS
От: gear nuke  
Дата: 17.07.08 09:19
Оценка:
Здравствуйте, Roman Odaisky, Вы писали:

RO>А разве современные серверные ОС подвержены таким примитивным атакам?


Если с одного хоста идут пакеты — то нет, а есть ведь IP spoofing... MS даже предпринял специальные усилия, что бы было невозможно слать с Windows-хостов.
People who are more than casually interested in computers should have at least some idea of what the underlying hardware is like. Otherwise the programs they write will be pretty weird (c) D.Knuth
Re[17]: DoS
От: Roman Odaisky Украина  
Дата: 17.07.08 11:41
Оценка:
Здравствуйте, gear nuke, Вы писали:

RO>>А разве современные серверные ОС подвержены таким примитивным атакам?


GN>Если с одного хоста идут пакеты — то нет, а есть ведь IP spoofing... MS даже предпринял специальные усилия, что бы было невозможно слать с Windows-хостов.


Так сама суть SYN flood — заставить ОС выделить слишком много ресурсов на полуоткрытые сокеты. Вроде современные ОС, получив SYN, просто делают маленькую заметку где-нибудь, а начинают шевелиться уже позже? Пусть себе шлют SYN тысячами, ядро потолстеет на сколько-то килобайт, и всё.
До последнего не верил в пирамиду Лебедева.
Re[15]: DoS
От: Аноним  
Дата: 17.07.08 11:51
Оценка:
VE>>>У вас подушка безопасности в машине есть?
VE>>>Это я к вопросу логичности тезиса.
А>>Как мне самому когдато сказали — доказательства построенные на аналогиях идут далеко и лесом
VE>А вы приняли на веру. Похвально.
Да. Не люблю демагогов, спорящих на основе постулатов женской логики. Мы про софт говорим, а не про машины.
Re[15]: DoS
От: Аноним  
Дата: 17.07.08 11:58
Оценка:
GN>А вот пример с авторизацией, извините, ерунда полная. Что он доказывает, что в сферическом коне нельзя использовать исключения? Глупо с этим спорить. Нужно взять этот конкретный случай и разобраться в нем.

GN>Если есть специфические требования, в которых прикладник не силён — этим должны заниматься специалисты. Повторю — ни до какой авторизации дело не дойдёт, гораздо проще убьют сервер синфлудом, т.к мощностей для этого требуется на порядки меньше. Любой вменяемый HTTP сервер имеет ограничения на кол-во коннектов с одного IP, так что предположение о рандомных логинах — нонсенс. Если у кого-то есть достаточное кол-во хостов, что бы выполнить количество запросов, с которым не справится сервер — это значит что сервер не расчитан на такую нагрузку; нельзя заранее отличить эти запросы от легальных, сервер упадёт независимо от правильностей паролей.


Разница есть. Она измеряется N запросов/в секунду которые требуется послать хакеру для того чтобы (N+1)й запрос в туже секунду получил отлуп от сервера. В случае большего количества накладных расходов на обработку некорректного запроса — N будет меньше. Соответственно это определяет количество $$$, которые потребуется заплатить нехорошему человеку владельцам ботсети для успешной атаки. И если эта сумма будет больше потециальной выгоды нехорошего человека от вашему мертвого в течении часа сервера, он этого делать не будет. Рассуждать надо понятиями немного более общими, нежели "все равно ниче не поможет".
Кстати ХР и 2к3 спокойно выносят флуд syn пакетами от совершенно рандомных ипшников по 100мбит локалке. Загрузка ЦП ( в пару ггц) выше десятка процентов даже не поднимается, если сервер хорошо написан. Попробуйте подосить стандартные виндовые сервисы, висящие на портах 135, 445 etc. Более того они при этом умудряются принимать и обрабатывать новые коннекты. Подумайте на досуге как у них это получилось.
Re[16]: DoS
От: gear nuke  
Дата: 17.07.08 13:21
Оценка:
Здравствуйте, <Аноним>, Вы писали:

А>Рассуждать надо понятиями немного более общими, нежели "все равно ниче не поможет".


Именно так я и делаю, рекомендуя использовать пролексик и не морочить голову.

А>Кстати ХР и 2к3 спокойно выносят флуд syn пакетами от совершенно рандомных ипшников по 100мбит локалке. Загрузка ЦП ( в пару ггц) выше десятка процентов даже не поднимается, если сервер хорошо написан. Попробуйте подосить стандартные виндовые сервисы, висящие на портах 135, 445 etc. Более того они при этом умудряются принимать и обрабатывать новые коннекты. Подумайте на досуге как у них это получилось.


Что там было насчёт "доказательств на аналогиях"? Dedicated servers обычно расположены не в локалке, а интернете на 10Mb канале (даже в ряде случаев, где пишут 100). И специалисты утверждают, что достаточно сотни-другой хостов. Я верю им, а не анониман на rsdn. Стандартные виндовые сервисы не знают о SYN пакетах.
People who are more than casually interested in computers should have at least some idea of what the underlying hardware is like. Otherwise the programs they write will be pretty weird (c) D.Knuth
Re[18]: DoS
От: gear nuke  
Дата: 17.07.08 13:23
Оценка:
Здравствуйте, Roman Odaisky, Вы писали:

RO> Пусть себе шлют SYN тысячами, ядро потолстеет на сколько-то килобайт, и всё.


А как быть с забиванием канала?
People who are more than casually interested in computers should have at least some idea of what the underlying hardware is like. Otherwise the programs they write will be pretty weird (c) D.Knuth
Re[17]: DoS
От: Аноним  
Дата: 17.07.08 13:26
Оценка:
GN>Что там было насчёт "доказательств на аналогиях"? Dedicated servers обычно расположены не в локалке, а интернете на 10Mb канале (даже в ряде случаев, где пишут 100). И специалисты утверждают, что достаточно сотни-другой хостов. Я верю им, а не анониман на rsdn.
По вашему мнению специалисты отличаются от неспициалистов наличием логина на рсдн и накручиванием на нем рейтинга?

GN>Стандартные виндовые сервисы не знают о SYN пакетах.

Сделайте флуд коннектам с рандомных адресов и последующими рандомными данными на виндовый сервис и на ваш, построенный на throw на инвалидный пакет. Сравните загрузку CPU.
Re[18]: DoS
От: gear nuke  
Дата: 17.07.08 14:40
Оценка:
Здравствуйте, <Аноним>, Вы писали:

А>По вашему мнению специалисты отличаются от неспициалистов наличием логина на рсдн и накручиванием на нем рейтинга?


Логин на RSDN нужен, что бы можно было не тратить время на отслеживание ответов

GN>>Стандартные виндовые сервисы не знают о SYN пакетах.

А>Сделайте флуд коннектам с рандомных адресов и последующими рандомными данными на виндовый сервис и на ваш, построенный на throw на инвалидный пакет. Сравните загрузку CPU.

Какие данные Мне, даже как неспециалисту в этой области, понятно, что будет пакет SYN и все. TCP соединение не установлено.
People who are more than casually interested in computers should have at least some idea of what the underlying hardware is like. Otherwise the programs they write will be pretty weird (c) D.Knuth
Re[16]: DoS
От: VoidEx  
Дата: 17.07.08 14:45
Оценка:
Здравствуйте, Аноним, Вы писали:

VE>>А вы приняли на веру. Похвально.

А>Да. Не люблю демагогов, спорящих на основе постулатов женской логики. Мы про софт говорим, а не про машины.

Про женскую логику:

В женской логике каждое утверждение может быть не только опровергнуто, но и отвергнуто. Отвергая высказывание, вы признаете его бессмысленным и оставляете без внимания. Если вы отвергли последнее высказывание собеседницы, ваше предпоследнее утверждение остается без ответа и, таким образом, становится доказанным. Например, самые основательные соображения можно отвергнуть словами "Ну и что?" или "А больше ничего не смог придумать?".

Так что прежде, чем упрекать собеседника в демагогии и "женской логике", советую последить за собой.


Вы сделали частное утверждение "исключения мона юзать, если их не юзать".
Я его обобщил до "что-то мона юзать, если его не юзать" и опроверг примером его "нелогичность".
Таким образом, у меня нет оснований считать это (обобщенноё) утверждение нелогичным, так как хотя бы один логичный пример есть. Это не говорит, что исходное утверждение логично, но в исходном сообщении нет никакой привязки к "исключениям". Упор сделан именно на "мона юзать, если не юзать", или я что-то упустил?
Вопрос: чем исключения в данном случае особенны (чтобы обобщение исключить) и почему исходное утверждение должно казаться нелогичным?
Re[19]: DoS
От: Аноним  
Дата: 17.07.08 14:48
Оценка:
GN>Логин на RSDN нужен, что бы можно было не тратить время на отслеживание ответов
Во первых у анонимов есть номера. Во вторых — слабо отвечать на конкретную мессагу, не вспоминая что этот человек писал 10 дней назад?

GN>Какие данные Мне, даже как неспециалисту в этой области, понятно, что будет пакет SYN и все. TCP соединение не установлено.

Я уже не про син флуд, раз он вам не понравился парой мессаг выше, а про фазинг.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.