Skip to content
KitploitKITPLOIT
ИнструментыЭксплойтыБлог
Log in
Отправить
ИнструментыЭксплойтыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

ЛентыКонтактыКонфиденциальность© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
Harald — Минимальный процессор в памяти для агностического создания протоколов на лету | Kitploit
Инструменты/GitHubGitHub/gmh5225/harald
ЭксплуатацияОбход IDS/IPSСкриптинг и автоматизацияСетевая безопасностьТестирование на ПроникновениеКомандование и УправлениеУтилиты и фреймворкиRed TeamingРазработка Полезной Нагрузки
GitHubgmh5225/harald

Harald

Минимальный процессор в памяти для агностического создания протоколов на лету

171 год назадЕщё не проверено
Репозиторий

Популярное

Смотреть все →

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

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

Harald CPU

Harald — это крошечный высокоуровневый CPU, работающий в памяти и способный обрабатывать набор инструкций для генерации протоколов прикладного уровня, используемых поверх заданного сетевого протокола (TCP/UDP).

Harald потребляет поток OPCODE и применяет различные преобразования к полезной нагрузке, чтобы она соответствовала определённому протоколу прикладного уровня.

[!TIP] Почему Harald? Возможно, вы знаете Харальда Гормссона, короля Дании, по его прозвищу: Blátǫnn, или, как мы произносим его сегодня, Bluetooth. Технология была названа в честь прозвища Харальда, поскольку он соединил датское и викингское королевства в те времена. Поэтому я назвал это в честь его имени.

Диаграмма

Harald ведёт себя как CPU. Он следует набору OPCODE, которые определяют действия. PROTOCOL. Harald выполнит необходимые операции, чтобы создать требуемый протокол на лету.

После того как PROTOCOL задан, Harald будет итерироваться по PAYLOAD, который нужно отправить, проходя весь PROTOCOL один раз для каждого фрагмента. То есть: если полезную нагрузку пришлось разбить на несколько фрагментов, Harald будет использовать один и тот же протокол для каждого фрагмента, выполняя каждое действие, определённое в протоколе, над текущим фрагментом полезной нагрузки.

Harald хранит ряд регистров, которые протокол может использовать для хранения значений. Эти регистры можно использовать для выполнения множества операций, таких как сложение, вычитание, кодирование и декодирование... и т. д.

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

Harald high-level diagram

Опкоды

Harald поддерживает множество опкодов, которые можно задать как протокол. Harald выполняет набор высокоуровневых операций при получении заданного опкода. Каждый опкод ожидает предопределённый набор аргументов с предопределённой длиной.

OPCODE::NºDescriptionARGS::Size
H_F_APPEND::0x01Appends the following N Bytes to the end payloadSize::4, NBytes::N
H_F_PREPEND::0x02Prepends the following N Bytes to the end payloadSize::4, NBytes::N
H_F_SPLIT::0x03Splits the Payload in fragments of the given sizeSize::4
H_F_PAYLOAD_INJECT::0x04Injects the Payload fragment into the End Payload-
H_F_SOCK_INIT::0x05Initializes the socket connectionIsIPAddress:1, SSL_Enabled::1, TCP/UDP::1, [(HostLen::4,HostName:N)/IPAddress::4], Port::2
H_F_SEND::0x06Sends the constructed End Payload-
H_F_RECV::0x07Receives up to N BytesSize::4
H_F_CLOSE::0x08Closes the socket and cleans-
H_F_INJECT::0x09Injects the requested registry into the End PayloadReg::1
H_F_ENCODE_STR::0x0AEncodes a Payload field to its string representationIsReg::1, [(Payload::1, Field::1)/Reg::1], Format::1
H_F_DECODE_STR::0xA0Decodes the contents of a registry to its numeric representationReg::1
H_F_ENCODE_STRB64::0x0BEncodes a Payload field to its B64string representationPayload::1, Field::1
H_F_COMPUTE_FRAG_LENGTH::0x0DCalculates the next fragment to be sent length-
H_F_SEARCH::0x0ESearches for a given byte pattern of a given N size in a given registryReg::1, Size::4, NBytes::N
H_F_SEEK::0x0FMoves the cursor in a given payload by a given number of bytesPayload::1, Offset::4
H_F_PUSH::0x10Pushes a number of bytes or the contents of a registry into another registryIsReg::1, [Size::4, NBytes::N]/SrcReg::1, DstReg::2
H_F_ADD::0x12Adds two registries or a number to a registryIsReg::1, [Size::4, NBytes::N]/SrcReg::1, DstReg::2
H_F_SUBSTRACT::0x13Substracts two registries or a number to a registryIsReg::1, [Size::4, NBytes::N]/SrcReg::1, DstReg::2
H_F_READ::0x14Reads from a given registry up to the length stored in another registryFromReg::1, SizeReg::1
H_F_STORE::0x15Stores a registry value into Harald's StorageReg::1

Пример HTTP

Следующий поток опкодов сгенерирует необходимые данные для отправки, чтобы связь была распознана как HTTP. Он инициирует соединение, изменит полезную нагрузку так, чтобы она выглядела как HTTP-трафик, отправит её через SSL/TLS-соединение и закроет соединение в конце.

H_F_SPLIT, 0x00, 0x00, 0x00, 0xFF,                         // Splits the Payload
H_F_APPEND, 0x00, 0x00, 0x00, 0x46,                           // Appends...
  'P', 'O', 'S', 'T', ' ', '/', ' ',                              // POST / 
  'H', 'T', 'T', 'P', '/', '1', '.', '1', '\r', '\n',             // HTTP/1.1
  'H', 'o', 's', 't', ':', ' ',                                   // Host: 
    'd', 'o', 'm', 'a', 'i', 'n', '.', 'c', 'o', 'm', '\r', '\n', // domain.com
  'C', 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', ':', ' ',     // Connection: 
    'c', 'l', 'o', 's', 'e', '\r', '\n',                          // close
  'C', 'o', 'n', 't', 'e', 'n', 't', '-',                         // Content-
    'L', 'e', 'n', 'g', 't', 'h', ':', ' ',                       // Length: 
H_F_COMPUTE_FRAG_LENGTH,                                 // Next Fragment's size
H_F_ENCODE_STR, H_PAY_END_PAYLOAD, H_PAY_FRAGMENT_SIZE, 'u',  // FragSize encode
H_F_INJECT, H_REG_RET,                   // Inject the Fragment Size encoded str
H_F_APPEND, 0x00, 0x00, 0x00, 0x04, '\r', '\n', '\r', '\n', // Append Body begin
H_F_PAYLOAD_INJECT,                                        // Inject the Payload
H_F_SOCK_INIT, 0x01, 0x01, 0x7F, 0x00, 0x00, 0x01, 0x04, 0xD2,    // Init Socket
H_F_SEND,                                    // Send the Payload over the socket
H_F_CLOSE                                        // Close the socket and cleanup 
Скачать инструмент