• Интернет-контрразведка в действии: создаем персональную систему менеджмента информационной безопасности
    –3
    Это всё полная туфта. Когда тебя взломают, ты вспомнишь, что я тебе говорил.
    И я не вижу атаки, при которой можно подменить бинарь на сайте.

    Потому что ты не знаешь нихрена, и вас таких тут большинство.
  • Интернет-контрразведка в действии: создаем персональную систему менеджмента информационной безопасности
    –2
    Для критично важных приложений должны быть не md5 или другие чексуммы, а gpg-подписи (криптостойкие).

    Ну, засунули тебе gpg-подпись, дальше что? Как ты читаешь gpg-попись? У тебя даже приём этой gpg-подписи никак не контролируется. Ты даже с уверенностью сказать не можешь, что тебе пришла по https та gpg-подпись, которую ты на сайте запрашивал. Почему? Потому что ты их не сравниваешь.
  • Интернет-контрразведка в действии: создаем персональную систему менеджмента информационной безопасности
    0
    Пароль нет смысла подбирать, потому что его поменяют. Ты подбирал их две недели, а их поменяли за один день — и ты просто идёшь лесом со всей проделанной работой двухнедельной. Если бы ты этим занимался когда-нибудь, ты бы через это прошёл один раз и больше бы никогда не подбирал бы ничего.

    В данном случае сразу две проблемы — нарушение принципа Керкго́ффса

    Теоретик виден сразу.
  • Интернет-контрразведка в действии: создаем персональную систему менеджмента информационной безопасности
    –2
    Он === KeePass, и он постоянно следит за своей базой — при открытии, при закрытии и т.д.

    Я имею в виду, что это всё можно изобразить. А то, что CRC там проверяешь, это тоже легко ломается. Типа «дорогой пользователь, у нас вышла новая версия KeePass, приглашаем вас её скачать», ты такой «ой, что-то я ссылку не помню на сайт их, а открою-ка я вот эту» — и всё, и пошёл ты и скачал то, что тебе зарядили. Там даже тебе повесят md5 на «сайте», чтобы ты проверил, что всё правильно и CRC себе новую сделал, но уже сам (об этом даже знать не надо, вот в чём фишка-то).
  • Интернет-контрразведка в действии: создаем персональную систему менеджмента информационной безопасности
    0
    Если целевая атака и предварительно уже разведано, что там внутри, то, конечно, никакого запуска эксплоита тупого не произойдёт. А то, что оно разведывается сначала, — это 100%. По случайным взломам, когда кто-то просто сканирует сеть на поиск любой жертвы, можно вообще минимально защищаться, так как вероятность проникновения довольно мала. В современном мире ты уже получаешь дистрибутив системы с настроенной минимальной защитой и даже не узнаёшь об этом. Это раньше было всё открыто, но сейчас есть талмуды по дырам, автоматическое ПО для тестирования на дыры и прочие фишки. Не так просто сейчас проникнуть в свежую систему, поставленную неспециалистом.
  • Интернет-контрразведка в действии: создаем персональную систему менеджмента информационной безопасности
    –3
    Шифрация в него прямо и встроена. Кроме того он постоянно проверяет консистентность базы.
    Не верите — посмотрите исходники — они лежат в открытом доступе.

    Речь о том, что никто не проверяет, что там куда сохраняется. Есть файл — значит, всё нормально. Он говорит «я вот в KeePass сохраню всё и оно будет защищено», а ты думаешь он проверяет целостность постоянно? Нет, он один раз при скачивании проверил (и то, если понимает), а потом на автомате по окну делает вывод, что перед ним всё та же проверенная программа (и то, если он проверял вообще). Любые известные программы (массовые), они все под прицелом.
  • Интернет-контрразведка в действии: создаем персональную систему менеджмента информационной безопасности
    0
    Я долго думал, как сделать у себя, в итоге пришёл к выводу, что надо комбинировать и то и это. А пароли не в программе хранятся, а в голове. Просто их надо помнить и для усложнения просто транслировать в сложную последовательность через какой-нибудь алгоритм (секретный), по которому в случае компрометации не поймёшь, как он составлен. Но, как известно, пароли сейчас не являются самым слабым звеном, потому что они легко тырятся, какие бы сложные они ни были, через сторонние дыры. Поэтому важно, чтобы при их получении в количестве десяти штук нельзя было понять, как они получены, иначе тогда откроются все неизвестные пароли сразу. Да и пароли уже не крадут, а крадут сразу данные, используемые для аутентификации, для получения которых и используются пароли. Так что вот эти все вещи типа брутфорса и прочая фигня уже давно устарели и считаются непрофессиональными.
  • Интернет-контрразведка в действии: создаем персональную систему менеджмента информационной безопасности
    0
    Такую базу паролей можно вести с помощью бесплатной утилиты KeePass. Сама база паролей конечно же шифруется, но для дополнительной защиты можно ее записать на надежный внешний носитель и работать с данными только на нем.

    Во-во, вот на эту KeePass и надо проводить атаку, dll-шку подменить, чтобы она шифровать перестала, а пользователь будет думать, что он защищён. Активности никакой, просто база вся в открытом виде лежит.

    А ещё на Excel, который помогает ему вычислять планы рисков и гипотезы, — самое то для прослушки. Или просто ради прикола программка типа Punto Switcher будет вносить изменения в эти планы.
  • Накануне дня рождения первой женщины-программиста: моя история
    –2
    Так она разместила, типа никто не будет читать, как она сама. Я думаю, надо вас отправить на Марс на космическом корабле, а прошивку его автопилота поручить ей написать. Думаю, тогда мы больше никогда не увидимся. А после этого уже можно дать ей новое задание, но уже в фартучке, и там, где надо.
  • Накануне дня рождения первой женщины-программиста: моя история
    –2
    Во-первых, стандарт допускает implementation-defined сигнатуру main (С99 5.1.2.2.1), у конкретных компиляторов может быть и void, шовинист вы наш.

    void main — это неправильно, и она написала неправильно. Поэтому борщ, только борщ.

    шовинист вы наш

    У тебя просто глюки, речь идёт конкретно о ней, тогда как шовинизм — это генерализованное отношение ко всем.

    Во-вторых, докапываться до кода на КДПВ (на левой картинке из интернета

    Левая картинка виновата в её некомпетентности. Мы поняли твою позицию. Ты будешь всё что угодно отмазывать, лишь бы она обратила на тебя внимание. Для тебя неважно программирование, ты можешь просто допустить неправильный код, исходя только из личной заинтересованности в чём-то. Поэтому я даже могу угадать, какой у тебя код.
  • Накануне дня рождения первой женщины-программиста: моя история
    –10
    Там на картинке
    void main() {
    

    а должно там быть
    int main(void) {
    

    Так что борщ, только борщ. С картошечкой.
    В mail.ru, конечно, у тебя будет сногсшибательная карьера, потому что там уже давно всё само работает. Я-то помню, когда оно только появилось со своим слоном и двухмеговым ящиком (когда у всех ящики были на пять мегов), но русскоязычных сервисов не было, на этом оно и выросло — типа сервис для тех, у кого с английским проблемы.
  • GDB оказался крепким орешком
    0
    Понятный код хотя бы можно понять. А вот копипаст с неправильным выравниванием («умные» однострочники) даже понять невозможно, да и смысл? понимать то, что тебе не нужно, чтобы понять то, что тебе нужно — сложно замотивироваться на такое, особенно когда есть, чем заняться, более интересным и полезным.
  • Emacs таинственный: Путешествие в калькулятор
    0
    Там пример про лису как раз это и делает — вычисляет корень на месте.
  • GDB оказался крепким орешком
    0
    он её позволяет прогнать до нужного момента и пошагать

    Отладчик шагает по чему? Правильно, по коду (по строкам или по вызовам функций). Если там мегабайт кода, который тебе не нужен вообще (даже если он хорошо написан, что обычно не так), то это хороший способ пройти к нужному участку КОДА. Ты просто физически его не прочитаешь, не говоря уже о том, что писал его какой-то тяп-ляп копипастер лишь бы работало.
  • GDB оказался крепким орешком
    –1
    Есть код, который просто нет времени читать. Недавно хотел отредактировать плагин к Firefox'у (исправить ошибку), так когда распаковал, там такой быдлокодище. И как в нём искать этот единственный фрагмент, который мне нужен? Вот для этого и нужен дебаггер — чтобы в него загрузить всё по-быстрому и пройти до нужного куска.
  • GDB оказался крепким орешком
    +5
    Но обратите внимание, что он избыточный. Если первый символ не является черточкой '-', то не важно, что это за символ. Всё равно, терминальный там ноль или любой другой символ. Поэтому мы можем упросить код следующим образом:

    Не надо его так упрощать. Проверяются разные условия для выхода, и сливание двух разных условий в одно — плохая привычка. Где это вылезет? Когда захочешь убрать чёрточку, потому что так надо, то забудешь вернуть обратно проверку на пустую строку, потому что нигде не видно, что она там вложена. А если это будешь делать вообще не ты, то тем более.

    Явный код лучше подразумеваемого.
  • Библиотека f для функционального программирования в Питоне
    +2
    Я ходил на PyPI, вот твоя ссылка https://pypi.python.org/pypi/f и там Python 2.7 выставлен. Не можешь заполнить информацию о пакете правильно? А зачем выкатил тогда?
  • Библиотека f для функционального программирования в Питоне
    0
    Я работал в компаниях, чей бизнес крутится исключительно на втором питоне.

    Да всем пофиг, где ты там работал. Тебе говорят про питон вообще. Ну, сдохнет твоя библиотека вместе со вторым питоном. Да она даже не оживёт, нечему подыхать будет.

    я этого не предлагал, где вы увидели?

    Ты занял имя, вместо того чтобы сделать, как все делают — уникальное имя, а дальше, кому надо, тот сократит до f.

    линтеры pylint и flake8 гибко настраиваются.

    Не, глупая идея. Предлагаешь из-за одного твоего модуля перенастраивать их и коснуться из-за этого всего остального. С какой стати? В том-то и дело, что ты выбрал имя неправильно.
  • Библиотека f для функционального программирования в Питоне
    –2
    Предлагаешь делать каждый раз
    import f as fun
    


    Примеры накладок
    def f(x):
        return x * x + 1
    

    f = open('lalala')
    f.close()
    


    Да и python-pylint реагирует на такие имена, говорит «нужно прорефакторить имя, слишком короткое».

    Написал бы программу чисто на ФП, чтобы можно было посмотреть на читаемость (на соответствие Zen'у).

    И да, ещё напишу: мы уже похоронили второй питон. Так что смотреть на этот дурацкий raw_input() в примерах, который вообще появился известно, по какой причине, было не очень комфортно.
  • Как изучать языки программирования
    0
    Одно только не понял: что ты написал в итоге и на чём?
    Я пользуюсь своими программами каждый день на протяжении лет. Дорабатываю их точно так же, периодически выделяя по несколько недель, чтобы не отвлекать мозги.
    И мой путь был C -> Python -> Asm с самого начала, исходя только из практических задач. На рынок и рейтинг TIOBE мне абсолютно наплевать. Для меня важно взять хороший инструмент и сделать с его помощью то, что надо для работы.

    Почему мне нравится C — потому что на нём очень коротко можно записать.
    Почему мне нравится Python — потому что на нём очень быстро можно записать.
    Asm — инструмент для ковыряния в уже готовых программах (когда нужно вклинить своё что-то).
  • Рудольф Сворень — человек легенда (автор книги «Электроника шаг за шагом»). Часть 2
    0
    У них и для взрослых книга есть «Программирование для математиков», там много вещей всяких узнал. Редко сейчас встретишь человека, который знает, как сделать цикл с инвариантом.
  • Макросы в Emacs'е: формируем отряды для обработки
    0
    Как-то на форуме сидели и зашёл слепой человек. Вот он рассказал, как он читает форум. После этого я стал писать с учётом для слепых. Если много картинок вставить, то потом надо ещё каждую описывать.
  • Макросы в Emacs'е: формируем отряды для обработки
    0
    Я думаю, ты не напишешь. Тут максимум конвертер нужен, а ты про какой-то редактор говоришь с костылями какими-то. Значит, ты не представляешь, что нужно хранить 1000 макросов в одном файле.
  • Макросы в Emacs'е: формируем отряды для обработки
    0
    Да, было бы неплохо, но то, что никто этого варианта не предлагает, говорит о том, что либо его нет, либо он какой-то не такой. В идеале, они должны храниться в режиме, но в виде текста для редактора. Я такой возможности не нашёл, поэтому даже писать не стал, что их можно в текстовых файлах хранить.
  • Макросы в Emacs'е: формируем отряды для обработки
    –3
    Недавно игра была — Go, вот в это я играю, потому что, несмотря на простоту, ты не можешь свести всё к трём навыкам, как в сапёре. А в шахматах можно свести всё просто к небольшому числу навыков, но даже не навыков, а заученных сценариев. Поэтому всё сводится к тому, насколько ты быстро считаешь. Поиграй в старкрафт, там на каждом шагу можно ноу-хау делать.
  • Кто самые известные хакеры в истории?
    0
    По Вашему мнению, кто самый Великий хакер?

    На той бумажке, где у тебя пароли все записаны, посмотри.
  • Emacs таинственный: Путешествие в калькулятор
    0
    Сегодня время выкроил и склеил строки через сочетание Ctrl + u + Alt + ^, записанное в макросе :)
  • Emacs таинственный: Путешествие в калькулятор
    0
    Markdown она как-то криво приняла, заголовки второго уровня не стала вообще выделять. Кстати, галки "запрещать склеивание строк" не стояло. Если в прошлый раз (прошлой статье) они склеились и смайлики удалились, то в этот раз ничего такого не произошло.
  • Emacs таинственный: Путешествие в калькулятор
    0
    Сначала в org-mode всё набрал, потом перевёл на хабра-стайл. Это надо было все лт гт менять, пробелы он тоже съедает (даже в тегах code). Благо в Emacs'е это всё делается быстро, учитывая то, что у меня сделан ещё режим для Хабры, в котором эти вещи автоматизированы. И, естественно, всё это под гитом.
  • Зачем программисту знать алгоритмы
    0
    Часто студенты делают интересные проекты в университете или для удовольствия

    Кстати, Gimp — как раз такой проект. Если сравнивать с фотошопом, очень бросается в глаза разница. Фотошоп делали, чтобы он продавался. Джимп (гимп) делали, чтобы он был удобным и максимально функциональным. Вот у меня фотошопа нет, потому что я всё рисую в Gimp'е (картинки для приложений).
  • Большой опрос по алгоритмам
    0
    это не алгоритм, а реализация

    Причём там могут применять несколько разных сортировок в зависимости от количества элементов.
  • А нужно ли знать программисту алгоритмы?
    +7
    Когда не пишешь нифига, знания не нужны. У меня друг (не программист вообще и не математик) сказал "зачем программировать, если все программы можно в интернете скачать?". Он просто не понимает, что такое программа, которой нет в мире и в которой всё есть.
    Я видел, как люди, знающие только регулярки, не могли исправить баги в своих собственных веб-приложениях, потому что там надо было знать грамматики и конечные автоматы, а у них мозгов хватило только на регулярки (уровень средней школы), которыми ничего не сделаешь.
  • MyHTML — HTML парсер на «голом» Си с поддержкой POSIX Threads
    0
    Аккуратность тут ни при чём. Ниоткуда не следует, что туда нельзя подавать структуру с выделенной памятью. Он просто это ПОМНИТ. Хорошо, когда у тебя только один проект и ты в нём только один разработчик. Но обычно разработчиков десятки (незнакомых друг с другом), а проекты похожи друг на друга, как капли воды.
    Так что он заложил мину, на которую сам же и наступит.

    Это дело либо должно быть хорошо и недвусмысленно названо, либо откомментировано, либо вообще находится в конструкторе этой структуры. Так же возникает вопрос: нахрена эта функция вообще нужна, если она — ни рыба, ни мясо?
  • MyHTML — HTML парсер на «голом» Си с поддержкой POSIX Threads
    0
    На данном этапе я активно ищу баги.

    source/myhtml/mystring.c
    void myhtml_string_clean_all(myhtml_string_t* str)
    {
        memset(str, 0, sizeof(myhtml_string_t));
    }
    

    В myhtml_string_t есть указатель data на выделенную память. Когда он затирается нулём, память остаётся выделенной и превращается в утечку.

    myhtml_string_init()
    char * myhtml_string_init(mchar_async_t *mchar, size_t node_idx, myhtml_string_t* str, size_t size)
    {
        str->data     = mchar_async_malloc(mchar, node_idx, size);
        str->size     = size;
        str->node_idx = node_idx;
        str->mchar    = mchar;
        
        myhtml_string_clean(str);
        
        return str->data;
    }
    


  • Критика статьи «Как писать на С в 2016 году»
    +1
    Эти функции имеют короткие имена из-за трансляторов тех времён (когда эти функции создавались), которые больше 6 символов не понимали и не различали регистр.
  • Критика статьи «Как писать на С в 2016 году»
    +1
    пускай почитает ядро линукса

    Ядро линукса, как и большинство программ GNU, написаны на достандартовом C (диалект K&R). Почитай новые программы типа Git'а, там увидишь нормальный, современный C.
  • Критика статьи «Как писать на С в 2016 году»
    +2
    Ну не пишут в книгах, а примеры кода на С — обычно поганейшие, потому что обычно там С 89 со всеми вытекающими. А Вот 99й стандарт просто прелесть

    Это ты путаешь диалект K&R со стандартом C89. C89 и C99 практически ничем не отличаются по своему внешнему виду.
    Первое издание книги «Язык программирования C» содержал примеры на том достандартовом диалекте, но есть второе издание книги, где примеры на ANSI С89.
  • Undefined behavior ближе, чем вы думаете
    0
    Этот код корректно работает, если собрать 32-битную версию программы.

    Этот код точно такой же некорректный и для 32-битной версии.
    Надо всегда помнить, что int не может быть короче short int'а (по стандарту C89), но легко может быть равен ему.
    Поэтому перебор миллиарда символов там тоже может привести к переполнению на ЛЮБОМ компиляторе.
  • 5 фактов о Википедии, которых вы не знали. Третий взорвёт ваш… ай, кого я обманываю
    0
    Как-то правил там быдлокодище одно, выравнивал отступы. А в другой раз нашёл логическую ошибку в коде, тоже поправил.
    А ещё добавлял актёру одному фильм, где он сыграл, но наши забыли указать.
    Орфографические или грамматические ошибки даже не считаю.
  • man!( C => D )
    +1
    Хоть я и не писал этого кода

    Да? Ну, значит, оттранслировал какую-то лажу. Тогда нельзя менять код, ведь нарушится идея того, кто это написал.
    Просто так получилось, что глупость автора выдаётся за несуразность C. Поэтому я тебе и предложил прочитать приличный код, где такой ерунды не встретишь.

    Без понятия, зачем там приведение.

    Такое приведение требуется в С++. Часто те, кто учил только C++, думают, что они автоматически узнают C таким образом, и тянут в него соответствующие конструкции.
    Особенно часто (практически всегда) распространена ошибка при определении функции main().

    memcpy гораздо быстрее, чем strcat, так что если длина первой строки заранее известна, то лучше использовать именно memcpy.

    Код должен быть ясным в первую очередь, а быстрым он должен быть во вторую.
    Если код неясный, то в нём легко закрадываются ошибки (ты пропустил такую ошибку, выделив на один байт больше).
    И что ты предлагаешь отказаться от strcat()? С какой стати?

    Было бы замечательно, чтобы вы вместо ты-ты-тыкания через каждое слово

    Я в инете больше 15 лет, ты ещё компа не знал, я уже чатился. Для того, чтобы следить за разговором, существуют модераторы. В инете всегда было обращение на ты, всегда. Только после 2000 в инет стали приходить всякие пенсионеры, которые требовали к себе особого отношения, не зная, где какая кнопка на клавиатуре. А молодняк, который приходил в то же время, думал, что это общепринято. Поэтому считай, что это проверка на опыт.