powered by simpleCommunicator - 2.0.35     © 2025 Programmizd 02
Форумы / Unix-системы [игнор отключен] [закрыт для гостей] / Изменение данных пакета и пересчет контрольной суммы
1 сообщений из 1, страница 1 из 1
Изменение данных пакета и пересчет контрольной суммы
    #39964080
_WeSTMan_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем привет. Пишу модуль для ядра Linux. Перехватываю пакет через хук, меняю данные и хочу отправить в сеть. Проблема в том, что после изменения данных и пересчета контрольной суммы - пакет не отправляется. Помогите, пожалуйста. разобраться. Код:

Получаю адрес начала данных:

user_data_ptr = (char *)(skb->data + sizeof(struct iphdr) + sizeof(struct udphdr));

Вычисляю длину данных:

unsigned long iLenData = skb->len - (sizeof(struct iphdr) + sizeof(struct udphdr));

Модифицирую данные, например так:

user_data_ptr[iLenData-2] = ‘k’;

Пересчитываю контрольные суммы:

udp->check = 0;

udp->check = csum((uint16_t*) udp, (iLenData+sizeof(struct udphdr)));

ip->check = 0;

ip->check = csum((uint16_t*) ip, (ip->ihl << 1));


Если ничего не трогать, то пакет отправляется в сеть, но я хочу его модифицировать.
Пакет отправится, если я поставлю контрольную сумму в udp в 0.


Еще вопросик: Как добавить свои данные к эти данным? Нужно ли менять tot_len и len в заголовках?


Спасибо за ответы!
...
Рейтинг: 0 / 0
1 сообщений из 1, страница 1 из 1
Форумы / Unix-системы [игнор отключен] [закрыт для гостей] / Изменение данных пакета и пересчет контрольной суммы
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]