Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
StalkerSmerch
1 / 1 / 2
Регистрация: 04.03.2012
Сообщений: 159
#1

Как узнать откуда интернет пакет? - C++

11.04.2013, 22:57. Просмотров 303. Ответов 0
Метки нет (Все метки)

Есть программа которая может узнать длину пакета, и время. Что мне нужно переделать чтобы узнавать больше информации о пакете?(например куда адресован пакет?)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
#include <stdio.h>
#include <locale.h>
 
 
#include "pcap.h"
#include <remote-ext.h>
 
void packet_handler(u_char *param, const struct pcap_pkthdr *header, const u_char *pkt_data);
 
int main()
{
pcap_if_t *alldevs;
pcap_if_t *d;
int inum;
int i=0;
pcap_t *adhandle;
char errbuf[PCAP_ERRBUF_SIZE];
    
    /* Retrieve the device list on the local machine */
    if (pcap_findalldevs_ex(PCAP_SRC_IF_STRING, NULL, &alldevs, errbuf) == -1)
    {
        fprintf(stderr,"Error in pcap_findalldevs: %s\n", errbuf);
        exit(1);
    }
    
    /* Print the list */
    for(d=alldevs; d; d=d->next)
    {
        printf("%d. %s \n", ++i, d->description);
/*        if (d->description)
            printf(" (%s)\n", d->description);
        else
            printf(" (No description available)\n");*/
    }
    
    if(i==0)
    {
        printf("\nNo interfaces found! Make sure WinPcap is installed.\n");
        return -1;
    }
    
    printf("Enter the interface number (1-%d):",i);
    scanf_s("%d", &inum);
    
    if(inum < 1 || inum > i)
    {
        printf("\nInterface number out of range.\n");
        /* Free the device list */
        pcap_freealldevs(alldevs);
        return -1;
    }
    
    /* Jump to the selected adapter */
    for(d=alldevs, i=0; i< inum-1 ;d=d->next, i++);
    
    /* Open the device */
    if ( (adhandle= pcap_open(d->name,          // name of the device
                              65536,            // portion of the packet to capture
                                                // 65536 guarantees that the whole packet will be captured on all the link layers
                              PCAP_OPENFLAG_PROMISCUOUS,    // promiscuous mode
                              1000,             // read timeout
                              NULL,             // authentication on the remote machine
                              errbuf            // error buffer
                              ) ) == NULL)
    {
        fprintf(stderr,"\nUnable to open the adapter. %s is not supported by WinPcap\n", d->name);
        /* Free the device list */
        pcap_freealldevs(alldevs);
        return -1;
    }
    
    printf("\nlistening on %s...\n", d->description);
    
    /* At this point, we don't need any more the device list. Free it */
    pcap_freealldevs(alldevs);
    
    /* start the capture */
    pcap_loop(adhandle, 0, packet_handler, NULL);
    
    return 0;
}
 
 
/* Callback function invoked by libpcap for every incoming packet */
void packet_handler(u_char *param, const struct pcap_pkthdr *header, const u_char *pkt_data)
{
    struct tm ltime;
    char timestr[16];
    time_t local_tv_sec;
 
    /*
     * unused variables
     */
    (VOID)(param);
    (VOID)(pkt_data);
 
    /* convert the timestamp to readable format */
    local_tv_sec = header->ts.tv_sec;
    localtime_s(&ltime, &local_tv_sec);
    strftime( timestr, sizeof timestr, "%H:%M:%S", &ltime);
    printf("%s\t%d\tlen=%d\n", timestr, header->ts.tv_usec, header->len);
    
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.04.2013, 22:57
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как узнать откуда интернет пакет? (C++):

Как getline() определяет откуда продолжать вывод - C++
Пусть есть такой файл Эта программа выведет на экран содержимое файла #include &lt;iostream&gt; #include &lt;string&gt; #include...

Как узнать откуда интернет пакет? - C++
Есть программа которая может узнать длину пакета, и время. Что мне нужно переделать чтобы узнавать больше информации о пакете?(например...

Как узнать откуда пришел человек? - C# ASP.NET
Какая функция позволяет узнать URL - откуда пришел человек на страницу. Спасибо.

Как узнать, откуда пришел посетитель? - C# ASP.NET
Подскажите, можно ли при регистрации клиента на сайте (заполнении им формы) как-то узнавать и сохранять в базе адрес сайта, откуда он...

Как узнать, откуда пришел посетитель? - C# ASP.NET
Есть чУдные функции javascript: document.referrer - показывает страницу, с которой пришли history.go(-1) А могу ли я из...

Как узнать, откуда пришел запрос? - PHP
Здравствуйте, собственно вопрос в названии темы)))

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.04.2013, 22:57
Привет! Вот еще темы с ответами:

как узнать откуда пришол посититель - PHP
Например кто-то в яндексе набрал &quot;погода в Египте&quot; как мне узнать, что он пришол из яндекса по запросу &quot;погода в Египте&quot;. Тоесть надо...

Как узнать откуда запущена прога? - Assembler
напишите пожалуйста код ассемблерной вставки для делфи, например функцию, определяющую откуда запущена программа Добавлено через 15...

Как узнать откуда запущен процесс - Delphi
Как можно узнать папку, откуда работает процесс. Например фаил dllhost.exe запущен с папки c:/windows/system32/dllhost.exe. Возможно ли как...

Как узнать, успешно ли установлен пакет xhprof на linux? - Ubuntu Linux
С линуксом знаком пару дней. Устанавливал пакет xhprof (профилирование для php) по вот этой инструкции -...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru