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