LINUX.ORG.RU

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

 


0

2

Здравствуйте! Несколько месяцев назад, я решил изучить сетевое программирование,GNU/Linux и криптографию, желательно всё в комплексе. Разобраться с GNU/Linux мне помогла установки Gentoo и несколько месяцев настройки. Изучил основную теорию по сетям (протоколы TCP/IP,UDP,... SSL/TLS, структуру пакетов). Изучил BSD Socket API и основы криптографии (симметричное и ассимитричное шифрование, сертификаты/подписи) . Чтобы закрепить знания я написал на С простого клиента и сервера TCP/IP, пересылающих символьную строку, по средством сокетов. После некоторого времени гугления, я решил двигаться в сторону написания снифера. При его написании я изучил структуру пакетов, что такое SOCK_PACKET. Но мне все равно кажется это недостаточным. Я также написал на С клиента и сервера, передающих данные по TLS 1.2, с использованием библиотеки OpenSSL. Я не нашел в сети подходящие для меня задачи. В основном советы ,по дальнейшему развитию навыком, касаются добавления дополнительного функционала в простые клиент серверные приложения (добавить кеширование, обработка нескольких клиентов одновременно, добавить хэндлы для ошибок). После гугления, из идей только написание своего sanbox'a (как раз тут С пригодится и возможно криптография), но это не сильно относится к сетям, и программу по примеру SSLstrip (для MITM атак). Не считаю эти идеи перспективными для вливания энергии (а может я ошибаюсь?).

Подскажите пример задачи (или ресурсы где их можно найти), которая будет достаточной сложной, лежать в области сетевого программирования и включать в себя использование языка С, GNU/Linux'а и прикладной криптографии )

(чисто как хобби. английский знаю. во времени не ограничен)



Последнее исправление: cetjs2 (всего исправлений: 1)
Ответ на: комментарий от anonymous

Дело в том, что я уже работаю программистом. На работе хоть и присутствует сетевое программирование, но с использованием Java/Delphi и под винду, к тому же enterprise.

chocobo
() автор топика

Напиши распределенный отказоустойчивый масштабируемый программно-аппаратный комплекс для создания резервных копий асинхронной NoSQL-базы данных, поддерживающий онлайн-миграцию и облачную синхронизацию, с использованием событийно-ориентированного программирования и технологии map-reduce.

anonymous
()
Ответ на: комментарий от anonymous

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

chocobo
() автор топика
Ответ на: комментарий от chocobo

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

это все не мотивация

проверить свой интеллект и силы

вот только тут маячит в тумане удовлетворение потребности в самоутверждении, подтверждении своей самооценки, но все равно выглядит как демагогия, поскольку все эти высшие мотивации не достаточно сильные, чтобы только ради них затрачивать столько усилий, поэтому как только возникнет сколько-нибудь серьезная проблема при изучении/реализации, легче будет все бросить, чем продираться с боем дальше;
сравни: чтобы не умереть, нужно работать — это сильная мотивация, а вот где именно работать: тупо сидеть в офисе без развития, или параллельно познавать мир, работая программистом/исследователем, или спасать людей — пожарным/врачем

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

anonymous
()

А с чего ты решил, что вообще есть задачи на овер5% большие, чем ты уже освоил? Нет ничего конструктивно сложного в сетевом программировании и прикладной криптографии, почти все сложности находятся в тормозах и способах их преодоления. Форфан их реализовывать будет только мазохист.

anonymous
()

Напиши убийцу скайпа

zolden ★★★★★
()

Освой CERT C Secure Coding Standards. Расти над собой можно не только путём активного кодинга с дальнейшем набиванием шишек, но и изучением чужого опыта и теории.

А вообще «навык программирования на Си» - сетевого ли, иного ли - сам по себе не такой уж бином Ньютона. Сишника за одну сишку кормить не будут, сишник должен хорошо разбираться в предметных областях, которым посвящён проект.

Krieger_Od ★★
()
Ответ на: комментарий от chocobo

Я хочу больше программировать и больше писать кода.

да, но зачем?

anonymous
()

Вон, намедни кто-то хотел веб-морду к ФС. Мой велосипед не понравился, т.к. функционала почти нет.

Запили — все будут рады.

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от chocobo

я хочу больше готовить и варить больше борща
я хочу больше копать и выращивать больше овощей
я хочу больше воевать и убивать больше врагов
я хочу больше шить и выпускать больше платьев
я хочу больше ремонтировать и больше чинить унитазов

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

anonymous
()
Ответ на: комментарий от chocobo

Я хочу больше программировать и больше писать кода.

А девушку уже советовали завести? =)

Zhbert ★★★★★
()

Ну а если по сабжу - то тебе надо не «советовать задачу», а придумать самому ее себе, решив сделать то, что тебе НУЖНО, а не просто абы что. Тогда будет интерес и мотивация.

Zhbert ★★★★★
()
Ответ на: комментарий от Eddy_Em

веб-морду к ФС.

Веб-морду к файловой системе? Мое воображение сейчас начинает конвульсионно пульсировать и пытаться нарисовать такую картинку...

Zhbert ★★★★★
()
Ответ на: комментарий от Zhbert

В том то и дело, что зашел в тупик ) Поэтому и обращаюсь. За место девушки, у меня Гента ^^. Возможно, Вы правы, в том что мне необходимо сделать что-то нужное для себя или заняться одним из open source проектов. Но хотелось бы именно с нуля что-то сделать и не могу представить какой софт я могу написать для себя)

chocobo
() автор топика
Ответ на: комментарий от Zhbert

Отвечаю тебе и chocobo.

Имеется в виду элементарный интерфейс удаленного доступа к файловой системе по http. Это бывает полезно, когда закрыты всякие ftp/ssh.

Еще из плюсов: не надо физически заводить толпу пользователей, все решается на основе БД.

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от chocobo

Но хотелось бы именно с нуля что-то сделать и не могу представить какой софт я могу написать для себя)

Фишка в том, что тебе надо просто подумать, чего тебе не хватает. Я по такому принципу свой GrabVK писать начал в свое время...

Zhbert ★★★★★
()

Чтобы закрепить знания я написал на С простого клиента и сервера TCP/IP, пересылающих символьную строку

а теперь то же самое, но с другими моделями сетевого I/O.

vvviperrr ★★★★★
()

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

vvviperrr ★★★★★
()
Ответ на: комментарий от Krieger_Od

должен хорошо разбираться в предметных областях, которым посвящён проект

Два чая этому сэру.

У мну в листе ожидания много чего любопытного, каждое - это тонны знаний.

Deleted
()
Ответ на: комментарий от vvviperrr

С андроидом никогда не работал. У Вас есть сроки? Я возможно возмусь, но мне понадобится время на изучение.

chocobo
() автор топика

Напиши децентрализованный, криптографический свободный мессенджер под кроссплатформу. Это сейчас в тренде.

amomymous ★★★
()
Ответ на: комментарий от chocobo

да нет никаких сроков. просто пришла в голову такая идея. хотя в гугле плее уже 3 таких приложения, все они с закрытым кодом. вот и подумал об опенсорсном варианте. скайп vvviperrr00 если что.

vvviperrr ★★★★★
()
Ответ на: комментарий от chocobo

ну CERT C. эта мессага не тебе адресовывалась, если что)

vvviperrr ★★★★★
()
Ответ на: комментарий от vvviperrr

оно в онлайне, открытое, и каменты к страницам тоже рулят

Krieger_Od ★★
()

Напиши ftp или http сервер с epoll/select. Там и криптография есть, и мозги поразмять можно асинхронным программированием на C.

Moncruist
()

Спускайся ниже, там тебе будет интересно.
А вообще плюсую убивца скайпа

anonymous
()

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

uber_cat
()
Ответ на: комментарий от chocobo

Хм, пока не вижу как песочница оградит и спасет. Может лучше лабиринт? И нормальный фаервол к нему

anonymous
()
Ответ на: комментарий от chocobo

1. Напиши TURN сервер и интегрируй его поддержку в любой XMPP клиент.

2. Напиши реализацию qos для inbound трафика, лучше в виде отдельного демона и модуля ядра. По умолчанию классификация по IP адресам, далее по PID, GID, UID. Правила обработки: приоритеты, лимиты по скорости с заимствованием.

3. Напиши торрент-клиент на ncurses, для практики. Реализуй все фичи uTorrent.

fank
()
Последнее исправление: fank (всего исправлений: 2)

перепиливать i2p с явы на с/плюсы?

arkhnchul ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.