• XSS.stack #1 – первый литературный журнал от юзеров форума

Как работать с вебом по HTTPS ?

omar_hayat

CD-диск
Пользователь
Регистрация
26.08.2024
Сообщения
15
Реакции
14
Всем привет!

Штудирую интернет на предмет исходников и теоретических материалов по вопросу написания простого клиента HTTPS на плюсах. Вопрос оказался сложный и интересный. Информация разрозненная и многоплатформенная.

Для ускорения процесса основенния теоритичекой части решил поинтересоваться, может у кого есть инфа где где более-менее подробно изложено как вся эта технология работает под капотом (книжки, статьи) в приложении на Винде?

Интернеты (стоковерфлоу и подобные форумы) рекомендуют юзать библиотеки типа асио и либкурл. Исходники конечно под такое есть. Только билдятся они нормально под линукс. Так как на винде нужен спец.бубен чтобы установить библиотеку openssl (в виде какого то хитрого интерпритатора perl`a).

Кто как кодирует трафик при передаче данных?

На сейчас стало понятно что всё сводится к отправке зашифрованного пакета обычными стедствами (сокет или GET запрос). Осталось самая малость, понять как шифровать пакет:)
 
сокеты + ксор - самый хардкорный вариант, без лишних зависимостей
но я бы в сторону веб сокетов смотрел, т.к. меньше гемора с реализацией, ссл шифрование, хттп более легитимно выглядит для авира
неужели для плюсов нет нормального хттп клиента с поддержкой ссл?)
 
сокеты + ксор - самый хардкорный вариант, без лишних зависимостей
но я бы в сторону веб сокетов смотрел, т.к. меньше гемора с реализацией, ссл шифрование, хттп более легитимно выглядит для авира
неужели для плюсов нет нормального хттп клиента с поддержкой ссл?)
нашёл на хабре реализацию клиента через asio. При билде выскачила ошибка, что нет библиотеки openssl. Начал разбираться. Установка либы openssl на винду надо делать через скрипт на perl. А перед этим ещё и интерпритатор этого перла сначало в систему вкорячивать надо. Решил притормозить. Ещё инфу поискать.

Если сегодня ничего не удаться доброго найти, завтра буду пробовать через либу libcurl.

Хотчется именно полноценный ssl использовать, чтобы трафик от браузерного мало чем отличался.
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Wininet.dll, встроенный в Венду, умеет в HTTPS, но для поддержки современных стандартов TLS на семерках и ниже нужно отдельную KB'шку доставлять. С восьмерки в системе еще появились API для вебсокетов, но я не смотрел, есть ли там поддержка WSS.
 
Гуглить надо вам учиться.
Гуглить мы умеем. В самом начале обозначенной статьи автор благоразумно предупреждает о требуетмых библиотеках. Если с boost`ом вопрос решается легко, то с openssl под винду найденный в гугле вариант оказался достаточно трудоёмким. О чём и было сказано изначально.

Выходит это вам надо учиться внимательнее читать вопросы. Не придётся бессмысленные действия совершать с гуглом.
 
Гуглить мы умеем. В самом начале обозначенной статьи автор благоразумно предупреждает о требуетмых библиотеках. Если с boost`ом вопрос решается легко, то с openssl под винду найденный в гугле вариант оказался достаточно трудоёмким. О чём и было сказано изначально.

Выходит это вам надо учиться внимательнее читать вопросы. Не придётся бессмысленные действия совершать с гуглом.
Буду учиться. Спасибо сенсей.
 
Смотри по моему мнению самая лучшая и легковесная библиотека для работы с wss/https + она кроссплатформенная. Для работы с ssl для винды используется schannel api(что уменьшает вес, без никаких openssl тяжелых и т.д), для макос используется макось апи, ну а если линукс какой нужен то уже библиотеку mbedtls используешь. Несмотря на то что там много протоколов реализовано, ты все равно выбираешь через cmake параметры какие протоколы тебе нужны. К примеру можно скомпилить из всего что там есть только http client ssl с использованием schannel api и получится очень легковесный клиент. В итоге пользоваться очень удобно как в питоне:
C++:
#include "requests.h"

int main() {
    auto resp = requests::get("http://www.example.com");
    if (resp == NULL) {
        printf("request failed!\n");
    } else {
        printf("%s\n", resp->body.c_str());
    }
    return 0;
}
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Штудирую интернет на предмет исходников и теоретических материалов по вопросу написания простого клиента HTTPS на плюсах. Вопрос оказался сложный и интересный. Информация разрозненная и многоплатформенная.
Посмотри здесь, мб что полезное найдешь https://habr.com/ru/companies/infopulse/articles/226557/

Для ускорения процесса основенния теоритичекой части решил поинтересоваться, может у кого есть инфа где где более-менее подробно изложено как вся эта технология работает под капотом (книжки, статьи) в приложении на Винде?
TLS / SSL как работает? Да как и везде, "рукопожатие", обмен ключами и т.д. Или ты про лоу левел, как устроены сокеты ? Тогда читай Руссиновича.
Если просто по кодингу по винду, то мсдн + книга "джонс оланд программирование в сетях microsoft windows" - единственная по винсок2 (хоть ей и лет 20). Конкретно по устройстве SSL протокола глянь "рихтер кларк программирование серверных приложений для windows 2000"

Интернеты (стоковерфлоу и подобные форумы) рекомендуют юзать библиотеки типа асио и либкурл. Исходники конечно под такое есть. Только билдятся они нормально под линукс. Так как на винде нужен спец.бубен чтобы установить библиотеку openssl (в виде какого то хитрого интерпритатора perl`a).
Зависит, что ты пишешь. Если малварь - даже не смотри в сторону этого, учи вининет/винхттп. Если не малварь - вариантов дофига, лично мне нравится curl.
 
Посмотри здесь, мб что полезное найдешь https://habr.com/ru/companies/infopulse/articles/226557/


TLS / SSL как работает? Да как и везде, "рукопожатие", обмен ключами и т.д. Или ты про лоу левел, как устроены сокеты ? Тогда читай Руссиновича.
Если просто по кодингу по винду, то мсдн + книга "джонс оланд программирование в сетях microsoft windows" - единственная по винсок2 (хоть ей и лет 20). Конкретно по устройстве SSL протокола глянь "рихтер кларк программирование серверных приложений для windows 2000"


Зависит, что ты пишешь. Если малварь - даже не смотри в сторону этого, учи вининет/винхттп. Если не малварь - вариантов дофига, лично мне нравится curl.
Респект за ответ и за твой пост с роундмапом "как писать малварь"! Книжки оттуда на вес золота!

Можешь ещё подсказать книжки для освоения CryptoAPI и ему подобных? Где так же описываются функции как у Рихтера "Windows via C/C++". Билд с применением WinInet.h в первом приближении удалось запустить. Сейчас траф шифрованный летает через сеть. Хотел разобраться с шифрованием данных в памяти. Сейчас книжку читаю "о криптографии всерьёз" какого то француского автора. Там только теория. Для основ самое то. По практике пока только гугл и чатгпт. Но пока не всё получается.
 
Всем привет!

Штудирую интернет на предмет исходников и теоретических материалов по вопросу написания простого клиента HTTPS на плюсах. Вопрос оказался сложный и интересный. Информация разрозненная и многоплатформенная.

Для ускорения процесса основенния теоритичекой части решил поинтересоваться, может у кого есть инфа где где более-менее подробно изложено как вся эта технология работает под капотом (книжки, статьи) в приложении на Винде?

Интернеты (стоковерфлоу и подобные форумы) рекомендуют юзать библиотеки типа асио и либкурл. Исходники конечно под такое есть. Только билдятся они нормально под линукс. Так как на винде нужен спец.бубен чтобы установить библиотеку openssl (в виде какого то хитрого интерпритатора perl`a).

Кто как кодирует трафик при передаче данных?

На сейчас стало понятно что всё сводится к отправке зашифрованного пакета обычными стедствами (сокет или GET запрос). Осталось самая малость, понять как шифровать пакет:)
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Можешь ещё подсказать книжки для освоения CryptoAPI и ему подобных?
Книжек по CryptoAPI нет и не будет, по причине что эта технология 20 лет как устаревшая (начиная с висты следует юзать CNG). По CNG правда тоже инфы мало. Но там только поначалу сложно, надо понять принцип, и дальше дело пойдет.
Для ознакомления, советую посмотреть статьи здесь:
https://rsdn.org/summary/825.xml или на хабре. Из книжек она косвенно упоминалась например https://rutracker.org/forum/viewtopic.php?t=1037541 ну и несколько подобных "общих".

Но я не советую им увлекаться, а все же изучать CNG. Во-первых, там больше всего доступно, во-вторых в CAPI могут быть какие-то моменты как
https://stackoverflow.com/questions/4495247/ms-crypto-api-behavior-on-windows-xp-vs-vista-7 , и тебе придется это учитывать, разбирая старый код.

Если есть вопросы по криптоапи, так пиши на форуме, даже если совсем непонятно. Не надо бояться спрашивать, это нормально, m$ действительно сделали их немного через 1 место (криптопровайдеры эти, и т.д.).
 
Пожалуйста, обратите внимание, что пользователь заблокирован
99% логов W10 x64
1% логов W11 x64
Не думал об ошибке выжившего никогда? Может быть, семерок нет в твоей статистике только потому, что стиллер на них не функционирует.
 
Не думал об ошибке выжившего никогда? Может быть, семерок нет в твоей статистике только потому, что стиллер на них не функционирует.
Даже если и так.
Врядли что-то можно найти на семерке.
Уже все прилки съехали с поддержки этой Оси.
Ничего не установить, особенно всякие криптокошелечки.
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Уже все прилки съехали с поддержки этой Оси.
Ничего не установить, особенно всякие криптокошелечки
А причем тут "прилки" и "криптокошельки"? Если для тебя в целом мире существуют исключительно стиллеры, то другие люди то в этом не виноваты.
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Врядли что-то можно найти на семерке.
Говорят в крупных сетях попадаются даже 2003 винды, т.е. для рансома такое актуальное. Для стилака понятно что нет.

А вообще да, тема о другом же. О кодинге, а не где оно применяется.
 
Зависит, что ты пишешь. Если малварь - даже не смотри в сторону этого, учи вининет/винхттп. Если не малварь - вариантов дофига, лично мне нравится curl.
А в чем собсна проблема использовать удобные либы, я конечно понимаю суровый настрой малварекодеров из 2000х, тогда можно было встретить много софта написанного полностью на ассемблере, все вручную, винапи, nt апи, хардкор, я сам там был, но это пережитки прошлого, и очень часто так задрачивались только что бы помериться письками с другими кодерами той эпохи. В опредеденных случаях это было оправдано, потому что в те времена было построено много морф-движков к ассемблерному коду, но были они не у всех, и пошел слушок - на ассемблере, значит что-то крутое, и автор шарит. А скрипткидди расценили это как модный тренд и давай пилить на ассемблере все подряд, а потом пишут об этом, как о величайшем достижении. А что толку, в руках кидса ассемблер это просто потеря времени, а для него это магия. Тудаже относится и малый размер билда, к которому все стремятся, и отсутствие crt. Практической пользы это не имеет никакой, но все об этом говорят, устраивая крысиные бега, у кого же меньше стаб.
Ладно что то я отвлекся, вернемся к библиотекам. Не вижу ничего плохого в использовании готовых решений в малвари, это сокращает время разработки, отладки, тестирования, малварь это такое же ПО как и любой другой софт. Ну напишет кодер что-то с нуля, может этим похвастаться, на этом все, а другой кодер не будет изобретать велосипед и закроет потребности клиента быстрее, и по качеству скорее всего даже лучше. Вопрос эффективности бизнеса и временных затрат.
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Не вижу ничего плохого в использовании готовых решений в малвари, это сокращает время разработки, отладки, тестирования, малварь это такое же ПО как и любой другой софт
Wininet - тоже готовое решение так-то. Может быть и не нужно, но вопрос в понимании того, что ты делаешь и зачем. Вот затащил ты себе в экзешник готовых библиотек, слинковал статически экзешник в 10мб, а потом он куда-то не прокачался, тк канал был херовый, или где-то он не заработал потому, что библиотека слишком модная и молодежная, чтобы на старой системе работать. Если самоцель выйти в продакшн быстрее, и ты готов какими-то такими моментами пренебречь, ну окей, тебе - не нужно. Потом можно будет уверено писать, что у твоего стиллера в живой природе никогда не встречалась семерка, и смеяться на "старечками", которые о ней зачем-то думают, глупенькие.
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх