С Новым годом! Форум программистов, компьютерный форум, киберфорум
C++: Сети
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.85/13: Рейтинг темы: голосов - 13, средняя оценка - 4.85
Автор FAQ
Автор FAQ
 Аватар для REALIST07
644 / 199 / 21
Регистрация: 11.06.2010
Сообщений: 1,024

Нужна подсказка в создании сниффера

22.03.2011, 18:55. Показов 2839. Ответов 19
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Я должен написать программу в VS которая перехватывает http заголовки и сохраняет в базу данных,я не знаю даже за что взяться и с чего начать?помогите посоветуйте с чего начать!
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
22.03.2011, 18:55
Ответы с готовыми решениями:

Нужна подсказка
Есть готовый мини-проект, сделайнный с патерном MVC, может ли кто-нибудь просмотреть и безжалостно сказать о недочетах? Если есть...

Нужна подсказка
Обьясните пожалуйста что не так. При компилирование выводит ""Vam bilshe nizh sto rokiv"" ...

Нужна подсказка
Привожу ссылку на песочницу sql http://sqlfiddle.com/#!9/2e93df/3 Подскажите пожалуйста, почему, если ввести 1й запрос, то возвращается...

19
79 / 78 / 6
Регистрация: 04.11.2010
Сообщений: 249
22.03.2011, 19:09
Лучший ответ Сообщение было отмечено как решение

Решение

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
#include <conio.h>
#include <stdio.h>
#include <winsock2.h>
 
#define MAX_PACKET_SIZE    0x10000
#define SIO_RCVALL         0x98000001
// Буфер для приёма данных
char Buffer[MAX_PACKET_SIZE]; // 64 Kb
 
//Структура заголовка IP-пакета
 
typedef struct IPHeader {
  UCHAR   iph_verlen;   // версия и длина заголовка
  UCHAR   iph_tos;      // тип сервиса
  USHORT  iph_length;   // длина всего пакета
  USHORT  iph_id;       // Идентификация
  USHORT  iph_offset;   // флаги и смещения
  UCHAR   iph_ttl;      // время жизни пакета
  UCHAR   iph_protocol; // протокол
  USHORT  iph_xsum;     // контрольная сумма
  ULONG   iph_src;      // IP-адрес отправителя
  ULONG   iph_dest;     // IP-адрес назначения
} IPHeader;
 
char src[10];
char dest[10];
char ds[15];
unsigned short lowbyte;
unsigned short hibyte;
 
void main()
{
  WSADATA     wsadata;   // Инициализация WinSock.
  SOCKET      s;         // Cлущающий сокет.
  char        name[128]; // Имя хоста (компьютера).
  HOSTENT*    phe;       // Информация о хосте.
  SOCKADDR_IN sa;        // Адрес хоста
  IN_ADDR sa1;        //
  unsigned long        flag = 1;  // Флаг PROMISC Вкл/выкл.
 
  // инициализация
  WSAStartup(MAKEWORD(2,2), &wsadata);
  s = socket( AF_INET, SOCK_RAW, IPPROTO_IP );
  gethostname(name, sizeof(name));
  phe = gethostbyname( name );
  ZeroMemory( &sa, sizeof(sa) );
  sa.sin_family = AF_INET;
  sa.sin_addr.s_addr = ((struct in_addr *)phe->h_addr_list[0])->s_addr;
  bind(s, (SOCKADDR *)&sa, sizeof(SOCKADDR));
  
  // Включение promiscuous mode.
  ioctlsocket(s, SIO_RCVALL, &flag);
 
  // Бесконечный цикл приёма IP-пакетов.
  while( !_kbhit() )
  {
    int count;
    count = recv( s, Buffer, sizeof(Buffer), 0 );
    // обработка IP-пакета
    if( count >= sizeof(IPHeader) )
    {
      IPHeader* hdr = (IPHeader *)Buffer;
      //Начинаем разбор пакета...
 
    strcpy(src,"Пакет: ");
    CharToOem(src,dest);
    printf(dest);
    // Преобразуем в понятный вид адрес отправителя.
    printf("From ");
    sa1.s_addr = hdr->iph_src;
    printf(inet_ntoa(sa1));
 
    // Преобразуем в понятный вид адрес получателя.
    printf(" To ");
    sa1.s_addr = hdr->iph_dest;
    printf(inet_ntoa(sa1));
 
    // Вычисляем протокол. Полный список этих констант
    // содержится в файле winsock2.h
    printf(" Prot: ");
    if(hdr->iph_protocol == IPPROTO_TCP) printf("TCP ");
    if(hdr->iph_protocol == IPPROTO_UDP) printf("UDP ");
 
    // Вычисляем размер. Так как в сети принят прямой порядок
    // байтов, а не обратный, то прийдётся поменять байты местами.
    printf("Size: ");
    lowbyte = hdr->iph_length>>8;
    hibyte = hdr->iph_length<<8;
    hibyte = hibyte + lowbyte;
    printf("%s",itoa(hibyte,"",10));
 
    // Вычисляем время жизни пакета.
    printf(" TTL:%s",itoa(hdr->iph_ttl,"",10));
    printf("\n");
 
    }
  }
 
  closesocket( s );
  WSACleanup();
}
3
Автор FAQ
Автор FAQ
 Аватар для REALIST07
644 / 199 / 21
Регистрация: 11.06.2010
Сообщений: 1,024
22.03.2011, 19:16  [ТС]
Ого это что сниффер???

Добавлено через 32 секунды
А комментарии или откуда взяли или литература?хоть что-нибудь
0
79 / 78 / 6
Регистрация: 04.11.2010
Сообщений: 249
22.03.2011, 19:22
REALIST07, код и так, буквально, усыпан комментариями. Разбирайся.
0
Автор FAQ
Автор FAQ
 Аватар для REALIST07
644 / 199 / 21
Регистрация: 11.06.2010
Сообщений: 1,024
22.03.2011, 19:26  [ТС]
На счет этого спасибо,я понял,какую литературу посоветуете,чтобы разобраться в этом?ясам хочу разобраться во всем по порядку,а не копипастить чужой код
0
79 / 78 / 6
Регистрация: 04.11.2010
Сообщений: 249
22.03.2011, 19:27
русскоязычную литературу надо?
0
Автор FAQ
Автор FAQ
 Аватар для REALIST07
644 / 199 / 21
Регистрация: 11.06.2010
Сообщений: 1,024
22.03.2011, 19:33  [ТС]
Да,только не отправляйте в гугл,если знаете где именно,то целенаправленно укажите

Добавлено через 4 минуты
Кстати на 66 строчке вылазит ошибка!
cannot convert parameter 1 from 'char [10]
0
79 / 78 / 6
Регистрация: 04.11.2010
Сообщений: 249
22.03.2011, 19:38
http://articles.org.ru/cn/showdetail.php?cid=7782
0
Автор FAQ
Автор FAQ
 Аватар для REALIST07
644 / 199 / 21
Регистрация: 11.06.2010
Сообщений: 1,024
22.03.2011, 19:39  [ТС]
А на счет ошибки что делать?
0
79 / 78 / 6
Регистрация: 04.11.2010
Сообщений: 249
22.03.2011, 19:50
отключи юникод
0
Автор FAQ
Автор FAQ
 Аватар для REALIST07
644 / 199 / 21
Регистрация: 11.06.2010
Сообщений: 1,024
22.03.2011, 19:52  [ТС]
Каким образом?
0
375 / 322 / 32
Регистрация: 24.02.2011
Сообщений: 1,512
Записей в блоге: 1
22.03.2011, 20:25
Проект->Свойтсва в окне Свойства конфигурации->Общие->Набор знаков
Что кричать то
0
Автор FAQ
Автор FAQ
 Аватар для REALIST07
644 / 199 / 21
Регистрация: 11.06.2010
Сообщений: 1,024
22.03.2011, 20:40  [ТС]
Я не кричал,я сделал,программа компилиться,но ошибку выдает и закрывается,в чем проблема может быть?
0
79 / 78 / 6
Регистрация: 04.11.2010
Сообщений: 249
22.03.2011, 20:43
Цитата Сообщение от REALIST07 Посмотреть сообщение
но ошибку выдает и закрывается
слетает? на какой строчке?
0
Автор FAQ
Автор FAQ
 Аватар для REALIST07
644 / 199 / 21
Регистрация: 11.06.2010
Сообщений: 1,024
22.03.2011, 21:31  [ТС]
та самая 66,дело в том,что отключить юникод нельзя по ходу
0
79 / 78 / 6
Регистрация: 04.11.2010
Сообщений: 249
22.03.2011, 21:37
странно...
0
Заблокирован
23.03.2011, 14:36
REALIST07,
когда-то давно писал что-то такое:
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
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
#include "Include\pcap.h"
#include "Include\remote-ext.h"
#include <iostream>
#define LINE_LEN 16
using namespace std;
char* ip6tos(struct sockaddr *sockaddr, char *address, int addrlen);
char *iptos(u_long in);
void ifprint(pcap_if_t *d);
int f1();
int f2();
int main(){
    int i;
l1: cout<<endl<<"\t1 - reception "<<endl<<"\t2 - dispatch "<<endl; cin>>i;
    switch(i){
        case 1:     return f1();
        case 2:     f2();goto l1;
        default:    goto l1;
    }
}
int f2(){
    /*******ПЕРЕМЕННЫЕ*/
    pcap_t *fp;
    char errbuf[PCAP_ERRBUF_SIZE];
    u_char packet[42];
    int i,inum;
    pcap_if_t *alldevs,*d;
    /*****************ИЩЕМ УСТРОЙСТВА*/
    if(pcap_findalldevs(&alldevs, errbuf) == -1){//находим все устройства.  
        cout<<stderr<<"Error in pcap_findalldevs: "<<errbuf<<endl;
        exit(1);
    }  
    for(d=alldevs,i=0;d;d=d->next){// выводим информацию на экран                   
        cout<<++i<<" ";ifprint(d);
    }
    if(i==0){
        cout<<endl<<"No interfaces found! Make sure WinPcap is installed."<<endl;
        return -1;
    }
    cout<<"Enter the interface number:"; cin >> inum; //вводим номер устройства.
    if(inum < 1 || inum > i){
        cout<<endl<<"Interface number out of range."<<endl;
        pcap_freealldevs(alldevs);/* Free the device list */
        return -1;
    }
    for(d=alldevs,i=0;i<inum-1;d=d->next,i++);  // прыжок к выбранному устройству.
    //cout<<d->name<<endl; //в d->name имя устройства,которое можно использовать
    /********ПОЛУЧАЮ ДЕСКРИПТОР СТРУКТУРЫ ЗАХВАТА ПАКЕТОВ*/
    if (NULL==(fp=pcap_open_live(d->name,   // имя устройства
                             65536,         // максимальное число захватываемых байт(большое число-для любого пакета)
                             1,             // promiscuous mode(перевод адаптера на прием всех входящих пакетов)
                             1000,          // время ожидания пакета(в милисекундах)
                             errbuf))){     // при ошибке вернет NULL и в errbuf запишет характеристики ошибки
        cout<<stderr<<endl<<"Unable to open the adapter. %s is not supported by WinPcap"<<endl<<d->name;
        pcap_freealldevs(alldevs);/* Free the device list */
        return -1;
    }
 
    packet[0]=255;  packet[1]=255;  packet[2]=255;  packet[3]=255;  packet[4]=255;  packet[5]=255;
    packet[6]=0;    packet[7]=0;    packet[8]=0;    packet[9]=0;    packet[10]=0;   packet[11]=0;
    packet[12]=8;   packet[13]=6;   packet[14]=0;   packet[15]=1;   packet[16]=8;   packet[17]=0;
    packet[18]=0;   packet[19]=0;   packet[20]=0;   packet[21]=0;   packet[22]=0;   packet[23]=0;
    packet[24]=0;   packet[25]=0;   packet[26]=0;   packet[27]=0;   packet[28]=0;   packet[29]=0;
    packet[30]=0;   packet[31]=0;   packet[32]=0;   packet[33]=0;   packet[34]=0;   packet[35]=0;
    packet[36]=0;   packet[37]=0;   packet[38]=0;   packet[39]=0;   packet[40]=0;   packet[41]=0;
    /* Send down the packet */
l2: if (0!=pcap_sendpacket(fp,  // Adapter
        packet,                 // buffer with the packet
        42                      // size
        )){
        fprintf(stderr,"\nError sending the packet: \n", pcap_geterr(fp));
        return 3;
    } 
    pcap_close(fp); 
    return 0;
}
int f1(){
    /*******ПЕРЕМЕННЫЕ*/
    pcap_if_t *alldevs,*d;
    char errbuf[PCAP_ERRBUF_SIZE],*filter;
    pcap_t *adhandle;
    int inum,i;
    pcap_dumper_t *dumpfile;
    struct pcap_pkthdr *header;
    /*
    struct pcap_pkthdr {
        struct timeval ts;  // временная метка
        bpf_u_int32 caplen;     // длина захваченных данных
        bpf_u_int32 len;    // размер этого пакета
    };
    Где struct timeval содержит поля:
       long    tv_sec;    -- число целых секунд
       long    tv_usec;   -- число микросекунд
 
    */
    const u_char *pkt_data;
    bpf_u_int32 NetMask;
    struct bpf_program fcode;
    /*****************ИЩЕМ УСТРОЙСТВА*/
    if(pcap_findalldevs(&alldevs, errbuf) == -1){//находим все устройства.  
        cout<<stderr<<"Error in pcap_findalldevs: "<<errbuf<<endl;
        exit(1);
    }  
    for(d=alldevs,i=0;d;d=d->next){// выводим информацию на экран                   
        cout<<++i<<" ";ifprint(d);
    }
    if(i==0){
        cout<<endl<<"No interfaces found! Make sure WinPcap is installed."<<endl;
        return -1;
    }
    cout<<"Enter the interface number:"; cin >> inum; //вводим номер устройства.
    if(inum < 1 || inum > i){
        cout<<endl<<"Interface number out of range."<<endl;
        pcap_freealldevs(alldevs);/* Free the device list */
        return -1;
    }
    for(d=alldevs,i=0;i<inum-1;d=d->next,i++);  // прыжок к выбранному устройству.
    //cout<<d->name<<endl; //в d->name имя устройства,которое можно использовать
    /********ПОЛУЧАЮ ДЕСКРИПТОР СТРУКТУРЫ ЗАХВАТА ПАКЕТОВ*/
    if (NULL==(adhandle=pcap_open_live(d->name, // имя устройства
                             65536,         // максимальное число захватываемых байт(большое число-для любого пакета)
                             1,             // promiscuous mode(перевод адаптера на прием всех входящих пакетов)
                             1000,          // время ожидания пакета(в милисекундах)
                             errbuf))){     // при ошибке вернет NULL и в errbuf запишет характеристики ошибки
        cout<<stderr<<endl<<"Unable to open the adapter. %s is not supported by WinPcap"<<endl<<d->name;
        pcap_freealldevs(alldevs);/* Free the device list */
        return -1;
    }
    /*******Настрою фильтр*/
    NetMask=0xffffff, filter="arp";
    if(pcap_compile(adhandle, &fcode, filter, 1, NetMask) < 0){//compile the filter
        fprintf(stderr,"\nError compiling filter: wrong syntax.\n");
        pcap_close(adhandle);
        return -3;
    }
    if(pcap_setfilter(adhandle, &fcode)<0){//set the filter
        fprintf(stderr,"\nError setting the filter\n");
        pcap_close(adhandle);
        return -4;
    }
    /*******ТКРЫВАЮ ФАЙЛ ДЛЯ ЗАПИСИ ВСЕХ ПРИНЯТЫХ ПАКЕТОВ
    if (NULL==(dumpfile=pcap_dump_open(adhandle,"-"))){
        fprintf(stderr,"\nError opening output file\n");
        pcap_close(adhandle);
        return -5;
    }
    while((i = pcap_next_ex( adhandle, &header, &pkt_data)) >= 0){
        if(i == 0)//Timeout elapsed 
            continue;
        cout<<endl;
        pcap_dump((unsigned char *) dumpfile, header, pkt_data);//save the packet on the dump file
    }*/
 
    /*********************/
    while((i = pcap_next_ex( adhandle, &header, &pkt_data)) >= 0){
        if(i == 0)/* Timeout elapsed */
            continue;
        /* print pkt timestamp and pkt len */       
        cout<<"length of the captured data : "<<header->caplen<<endl;
        cout<<"packet length : "<<header->len<<endl;
        cout<<"time in seconds : "<<header->ts.tv_sec<<endl;
        /* Print the packet */
        for (unsigned char i=1; (i < header->caplen + 1 ) ; i++){
            printf("%.2x ", pkt_data[i-1]); //%.2 - 2 символа x -16ичная форма
            if ( (i % LINE_LEN) == 0) printf("\n");
        }
        printf("\n\n");     
    }pcap_close(adhandle); pcap_close(adhandle); return 0;
}
/*******************************************НАЧАЛО Вывод информации о устройствах*/
void ifprint(pcap_if_t *d){
    pcap_addr_t *a;
    char ip6str[128];
    cout<<endl<<d->name; //вывод имени
    if (d->description) cout<<endl<<"\tDescription:"<<d->description<<endl;
    /*IP-адрес, определяемый направления выходящих пакетов обратно на исходный компьютер)*/
    cout<<"\tLoopback: "<<((d->flags & PCAP_IF_LOOPBACK)?"yes":"no")<<endl;
    /* IP addresses */
    for(a=d->addresses;a;a=a->next) {
        switch(a->addr->sa_family){
            case AF_INET:
                cout<<"\tAddress Family Name: AF_INET"<<endl;
                if (a->addr)
                cout<<"\tAddress: "<<iptos(((struct sockaddr_in *)a->addr)->sin_addr.s_addr)<<endl;
                if (a->netmask)
                  cout<<"\tNetmask: "<<iptos(((struct sockaddr_in *)a->netmask)->sin_addr.s_addr)<<endl;
                if (a->broadaddr)
                  cout<<"\tBroadcast Address: "<<iptos(((struct sockaddr_in *)a->broadaddr)->sin_addr.s_addr)<<endl;
                if (a->dstaddr)
                  cout<<"\tDestination Address: "<<iptos(((struct sockaddr_in *)a->dstaddr)->sin_addr.s_addr)<<endl;
            break;
            case AF_INET6:
                cout<<"\tAddress Family Name: AF_INET6"<<endl;
                #ifndef __MINGW32__ /* Cygnus doesn't have IPv6 */
                    if (a->addr) cout<<"\tAddress: "<<endl<< ip6tos(a->addr, ip6str, sizeof(ip6str));
                #endif
            break;
            default:
                cout<<"\tAddress Family Name: Unknown"<<endl;
            break;
        }
    }
    cout<<endl;
}
 
/* From tcptraceroute, convert a numeric IP address to a string */
#define IPTOSBUFFERS    12
char *iptos(u_long in){ //преобразование IP в строку
    static char output[IPTOSBUFFERS][3*4+3+1];
    static short which= (which + 1 == IPTOSBUFFERS ? 0 : which + 1);;
    u_char *p=(u_char *)&in;
    sprintf(output[which], "%d.%d.%d.%d", p[0], p[1], p[2], p[3]);
    return output[which];
}
#ifndef __MINGW32__ /* Cygnus doesn't have IPv6 */
char* ip6tos(struct sockaddr *sockaddr, char *address, int addrlen){
    socklen_t sockaddrlen;
    #ifdef WIN32
        sockaddrlen = sizeof(struct sockaddr_in6);
    #else
        sockaddrlen = sizeof(struct sockaddr_storage);
    #endif
    if(getnameinfo(sockaddr, sockaddrlen, address, addrlen, NULL, 0, NI_NUMERICHOST) != 0) 
        address = NULL;
    return address;
}
#endif /* __MINGW32__ */
/*****************************************КОНЕЦ ВЫВОДА ИНФОРМАЦИИ ОБ УСТРОЙСТВАХ*/
используется WINPCAP. Надо изменить вам фильтр будет, сейчас там фильтруются arp пакеты. Вобщем если загляните в справку или, хотя бы, статьи по PCAP - то найдете то что вам нужно )
1
Автор FAQ
Автор FAQ
 Аватар для REALIST07
644 / 199 / 21
Регистрация: 11.06.2010
Сообщений: 1,024
23.03.2011, 16:04  [ТС]
Щас посмотрю,но мне не нужно анализировать весь траффик начаная с ип заканчивая размером пакета,мне нужно создать программку,которая будет скидывать в базу данных адреса сайтов на которые заходил пользователь,и то просто для того,чтобы научиться всему этому самому

Добавлено через 7 минут
Не компилиться проектчто делать?
0
Заблокирован
23.03.2011, 18:46
установить pcap.
прикрепил проект, файлы для установки библиотеки(версии 4 - щас уже наверное новее), документацию(старую - для версии 3.0) и всякие статьи по этой теме(тоже наверное морально устаревшие xD)
Лучше посмотреть примеры программ на официальном сайте - там и версия новее, и с большей вероятностью все работать будет(т.к. я свой код писал давно и криво )
Вложения
Тип файла: 7z фыва.7z (2.04 Мб, 21 просмотров)
0
Автор FAQ
Автор FAQ
 Аватар для REALIST07
644 / 199 / 21
Регистрация: 11.06.2010
Сообщений: 1,024
23.03.2011, 19:29  [ТС]
Все-таки если конкретнее что мне нужно на ваш взгляд для своей программы?Мне кажется тут не столько сеть сколько перехват сообщений я или ошибаюсь?Примерно хоть какой-нить код сможете накидать?буду благодарен да и после меня людям поможет
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
23.03.2011, 19:29
Помогаю со студенческими работами здесь

Нужна подсказка)
Здравствуйте! В андроид я новичок. Нужно реализовать следующий алгоритм: Приложение при старте должно соединяться с удаленным...

Нужна подсказка
Паскаль, 9 класс. позор мне :( Итак, собственно, вопрос 1) Дано следующее : Type Tablou = array of integer; Var x, y :...

Нужна подсказка!
задание звучит так: После завершения шахматной партии, на доске осталось какое-то количество фигур. Матрица desk содержит информацию о...

нужна подсказка
What is the purpose of the curly braces in Line 24 of mystring.h? size_t length( ) const { return current_length; }

нужна подсказка
помогите написать программы в VBA 1. Даны две точки А(x1, y1) и В(x2, y2). Составить алгоритм, оп¬ределяющий, которая из точек находится...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru