Модераторы: feodorv
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> проблема с посылкой ip-пакета(с подменённым ip), снифер не видит посылаемого пакета 
:(
    Опции темы
connector
Дата 22.6.2008, 18:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 22.6.2008

Репутация: нет
Всего: нет



Код

//main.cpp
#include <winsock2.h>
#pragma comment(lib, "ws2_32.lib")
#include <windows.h>
#include <iostream>
using std::cin;
using std::cout;

#define IP_HDRINCL 2

struct IPHDR {
 unsigned char ip_hl:4, ip_v:4;
 unsigned char ip_tos;
 unsigned short int ip_len;
 unsigned short int ip_id;
 unsigned short int ip_off;
 unsigned char ip_ttl;
 unsigned char ip_p;
 unsigned short int ip_sum;
 unsigned int ip_src;
 unsigned int ip_dst;
};

struct TCPHDR {
 unsigned short int th_sport;
 unsigned short int th_dport;
 unsigned int th_seq;
 unsigned int th_ack;
 unsigned char th_x2:4, th_off:4;
 unsigned char th_flags;
 unsigned short int th_win;
 unsigned short int th_sum;
 unsigned short int th_urp;
};
int optval=1;
int main()
{
    LPSTR szIP = (LPSTR)malloc(20);
    int nPort, nCount;
    cout << "Address:"; gets(szIP);
    cout << "Port:"; cin >> nPort;
    cout << "Packets:"; cin >> nCount; //количество пакетов

    WSADATA wsadata;
    WSAStartup(0x0202, &wsadata);

    SOCKADDR_IN socketaddr;
    socketaddr.sin_family = AF_INET;
    socketaddr.sin_addr.s_addr = inet_addr(szIP); 
    socketaddr.sin_port = htons((WORD)nPort);

    SOCKET sock = socket(AF_INET, SOCK_RAW, 0);
if(sock==INVALID_SOCKET) return 0;
    
    if ((setsockopt(sock, IPPROTO_IP, IP_HDRINCL, (char *)&optval, sizeof(optval)))<0) cout << "Error: setsockopt IP_HDRINCL\n";

    struct IPHDR *ipheader;
    struct TCPHDR *tcpheader;
    char *buffer;
    buffer = (char *)malloc(sizeof(struct IPHDR)+sizeof(struct TCPHDR)+10);
    ipheader = (struct IPHDR *)buffer;
    tcpheader = (struct TCPHDR *)(buffer+sizeof(struct IPHDR));

    //адрес отправителя и получателя
    ipheader-> ip_src = inet_addr(szIP); //пробовал ставить сюда реальный сорс-ип - один хер=(
    ipheader-> ip_dst = inet_addr(szIP);
    //порт отправителя и получателя
    tcpheader-> th_sport = socketaddr.sin_port;
    tcpheader-> th_dport = socketaddr.sin_port;

    while(nCount >= 0)
    {
        if(sendto(sock, buffer, sizeof(buffer),0,(LPSOCKADDR)&socketaddr,sizeof(SOCKADDR))==sizeof(buffer))
            cout << "1"; //отправился
        else cout << "0"; 
        nCount--;
    }
    free(buffer);
    system("pause");
    return 0;
}


Трабла в том, что снифер не видит пакетов, посылаемых этой прогой. Пробовал слать как на свой ip, так и на другие в локалке, в проге пишет, что пакеты отослались, но снифер этого не видит. Мож если кому не лень, помогите.. так по моему не должно быть.. (снифер с его исходником в аттаче положил)

Присоединённый файл ( Кол-во скачиваний: 2 )
Присоединённый файл  sniffer.rar 6,45 Kb
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Сети | Следующая тема »


 




[ Время генерации скрипта: 0.0659 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.