ОБСУЖДЕНИЕ На проверке 

Первый язык для входа в ИБ: Python или сразу C

3 ответов 263
AI-выжимка обсуждения скоро

Краткие тезисы обсуждения со ссылками на ключевые ответы появятся здесь.

Автор темы
Python или сразу C? Начни с C или Начни с Python


В чатах для новичков этот спор возникает регулярно, и обе стороны приводят сильные аргументы.

Сторона «начни с C»
Без понимания стека, кучи и указателей ты не разберёшь ни один таск по pwn и не прочитаешь дизассемблерный листинг осмысленно. Минимальный порог: написать простой сетевой сервер на C, руками выделить и освободить память, воспроизвести переполнение буфера на учебном примере. Если это освоено, дальше реверс и эксплойты идут на порядок легче.

Сторона «начни с Python»
C бросает новичка в борьбу с сегфолтами ещё до того, как он понял, что вообще хочет ломать. Python позволяет за вечер написать сканер портов, парсер логов или скрипт для автоматизации разведки. Первая рабочая утилита через пару дней мотивирует сильнее, чем месяц отладки утечек памяти. А к C можно вернуться позже, когда станет ясно, что именно pwn и реверс интересны.

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

Ты за какой путь и почему: сначала Python, сначала C или оба параллельно?
 
на мой взгляд, самым первым языком должен быть самый простой по синтаксису язык, но содержащий в себе и сложные компоненты. такие как указатели, стеки, и т.д. единственным подходящим для начала языком, является Pascal. синтаксис простой как у питона, при этом компилируемый, и содержит в составе указатели, как в Си.
 
  • Нравится
Реакции: delifer
1
Начнем с того-что си и питон это вообще разные языки, для разных целей...

Собственно и изучать надо в зависимости от того-чем хотите заниматься.

Если ваш стек это низкоуровневое программирование, писать какие-то драйвера для линукс, винды.
Делать какие-то низкоуровневые вещи, такие-как если про пентест, это-да написание эксплойтоа, шелл-кодов и т.к.
Однозначно си, а ещё и ассемблер...)

Питон, это интерпритируемый язык, т.е. вы пишите скрипт, он на лету исполняется интерпритатором питон.
Это другой уровень и другие задачи, можно на питоне написать сервер, можно много чего делать...

Но в отличие от си, на таком языке нельзя написать драйвер например для линукс, нельзя написать шелл код и т.д.

Но зато проще написать например тот-же сервер, какой-то парсер и т.д.

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

Т.е. языки дополняют друг-друга, в зависимости от задачи.
 
на мой взгляд, самым первым языком должен быть самый простой по синтаксису язык, но содержащий в себе и сложные компоненты. такие как указатели, стеки, и т.д. единственным подходящим для начала языком, является Pascal. синтаксис простой как у питона, при этом компилируемый, и содержит в составе указатели, как в Си.
Вот паскаль изучать вредно.)

Я-бы начал с си, либо С++...

После паскаля будет тяжело переходить на C/C++.