Форум программистов, компьютерный форум, киберфорум
Программирование драйверов
Войти
Регистрация
Восстановить пароль
Другие темы раздела
Программирование драйверов Mmap буфера из пространства ядра в пространство пользователя https://www.cyberforum.ru/ drivers-programming/ thread1288503.html
Добрый день/вечер. При написании символьного драйвера для Debian, столкнулся с задачей применения mmap из пространства ядра в пространство пользователя. Прочитал LDD3, но всё равно остался без чёткого понимания реализации этой задачи. При инициализации модуля, создаётся файл устройства в /dev с помощью демона udev и read/write работающие с этим файлом работают хорошо, но вот только хочеться...
Не работает DbgView в виртуалке (Virtual Box) Программирование драйверов
Здравствуйте. Работаю в виртаальной Собственно проблема - не работает отладочный вывод DbgPrint. Или программа DbgView его не видит. Хост система: Windows 7. Гостевая - Windows XP. Думал, может сообщения в хостовскую систему транслируются. Посмотрел там - тоже не проходят.
Программирование драйверов Формирование сетевой информации, NDIS Добрый всем день, хочу попросить помощи в следующем вопросе: каким образом происходит общение между NDIS и остальными драйверами (соответственно смежными с NDIS)? С помощью каких пакетов, структур? Вообще интересна вся стадия от и до. Как пользователь может общаться с NDIS? На msdn`е конечно полно информации, но мне, как несведущему в этом вопросе, очень сложно разобраться и структурировать все... https://www.cyberforum.ru/ drivers-programming/ thread1284188.html Программирование драйверов WinUsb Microsoft provides a set of proprietary device classes and USB descriptors, which are called Microsoft OS Descriptors (MODs). When a new device is attached to a computer for the first time, an operating system that supports Microsoft OS Descriptors will request the string descriptor that is at index 0xEE. The Microsoft OS String Descriptor contains an embedded signature field that the operating... https://www.cyberforum.ru/ drivers-programming/ thread1283492.html
Прочитать Физическую память Программирование драйверов
В написании драйверов я новичок, постала передо мной задача: Нужно прочитать физическую память по адресам 0х000F0000 to 0х000FFFFFh (SmBios) подскажите какими функциями это(именно прочитать память всё остальное я реализовал) можно сделать? Система: windows NT
Программирование драйверов Виртуальный принтер для проги flagship Всем привет. Друзья помогите проблемой пожалуйста у нас в Узбекистане имеется платежный агент flagship это программа для него требуется пост принтер ну что бы печатала чеки, но у нас эти чеки не кому не нужны, можно как нибудь вирнуальный принтер создать ? пробовал почти все проги они уже не работают есть какие то варианты ? ПОМОГИТЕ ПОЖАЛУЙСТА Добавлено через 11 минут для windows. ... https://www.cyberforum.ru/ drivers-programming/ thread1280020.html
Программирование драйверов Отображение виртуального устройства в Диспетчере устройств Драйвер создает виртуальное устройство (FDO). Как добиться его отображения в "Диспетчере устройств"? Спасибо! https://www.cyberforum.ru/ drivers-programming/ thread1278120.html Послать сообщение kernel mode -> user mode Программирование драйверов
Здравствуйте. В процессе разработки драйвера столкнулся с необходимостью посылать события/сообщения из kernel mode в user mode (из драйвера в управляющую программу). Есть пример, где сделано так: KeSetEvent(DeviceExtension->pEventObject, 0, FALSE); KeClearEvent(DeviceExtension->pEventObject); Для чего событие вначале создаётся, а затем сразу уничтожается? Правда ли, что если...
Программирование драйверов Не создаётся хэндл драйвера https://www.cyberforum.ru/ drivers-programming/ thread1276207.html
Здравствуйте. Есть пример драйвера, скачанный с сайта PCPORTS. Это пример, показывающий работу прерывания от LPT порта. При регистрации он работает (запускаю через KmdManager.exe, кнопка "Register"). Но при старте (кнопка "Start" выдаётся сообщение - "не могу создать файл". Соответственно нет и хэндла, через который можно послать IOCTL запрос. Вот код драйвера: #include "wdm.h"
Программирование драйверов Изменение размера файла при чтении https://www.cyberforum.ru/ drivers-programming/ thread1271949.html
Есть ли такая возможность в режиме ядра, что бы при обработки IRP_MJ_READ пакета, т.е. при чтении файла "сказать" системе, что размер файла, например, не 64 байта, а 55 байт. И все последующие операции будут с 55 байтами.
Программирование драйверов Вывести PUNICODE STRING
Здравствуйте. Помогите, пожалуйста, вывести PUNICODE STRING. Приведенный код выводит пустоту... NTSTATUS PreSetValueKey(IN PREG_SET_VALUE_KEY_INFORMATION info) { CHAR temp; NTSTATUS status; PCUNICODE_STRING pObjectName; status = CmCallbackGetKeyObjectID( &Cookie, info, NULL, &pObjectName );
Программирование драйверов Записать информацию в файл из kernel mode https://www.cyberforum.ru/ drivers-programming/ thread1268995.html
14 / 13 / 1
Регистрация: 30.09.2011
Сообщений: 160
03.11.2014, 22:18  [ТС] 0

Сетевая фильтрация url и ip адресов в wfp - Программирование драйверов - Ответ 6804057

03.11.2014, 22:18. Показов 7197. Ответов 22
Метки (Все метки)

Ответ

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
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
filterID = AddFilter(subLayerGUID,engineHandle,buffer,"IP");
 
if(filterID!=-1)
 
fprintf(filterFile,"%d\n",filterID);
 
}
 
fgets(buf,bufSize,f);//Считываем пустую строку
 
//Блокировка по порту
 
for(i=0; i < portCount; i++)
 
{
 
fscanf(f,"%d",&buffer);//cчитываем i-ый порт БД
 
filterID = AddFilter(subLayerGUID,engineHandle,buffer,"Port");
 
if(filterID!=-1)
 
fprintf(filterFile,"%d\n",filterID);
 
}
 
fgets(buf,bufSize,f);//Считываем пустую строку
 
//Блокировка по приложениям
 
for(i=0; i < appCount; i++)
 
{
 
fgets(buf,bufSize,f);//cчитываем i-ое приложение БД
 
buf[strlen(buf)-1]='\0';
 
filterID = AddFilter(subLayerGUID,engineHandle,0,buf);
 
if(filterID!=-1)
 
fprintf(filterFile,"%d\n",filterID);
 
}
 
fclose(filterFile);
 
fclose(f);
 
#pragma endregion
 
}
 
//Добавление фильтра на подуровень
 
UINT64 AddFilter(GUID subLayerGUID, HANDLE engineHandle, UINT32 cond, char * str)
 
{
 
DWORD result = NULL;
 
#pragma region Создание фильтра
 
FWPM_FILTER0_ myFilter={0};
 
UINT64 id=NULL;
 
RtlZeroMemory(&myFilter,sizeof(myFilter));
 
FWPM_FILTER_CONDITION0 condition;
 
myFilter.action.type= FWP_ACTION_BLOCK;
 
myFilter.subLayerKey = subLayerGUID;
 
myFilter.weight.type = FWP_EMPTY;
 
myFilter.layerKey = FWPM_LAYER_ALE_AUTH_CONNECT_V4;
 
myFilter.displayData.description=L"Filter";
 
myFilter.displayData.name=L"Filter";
 
if(str=="All")
 
{
 
myFilter.numFilterConditions = 0;
 
printf("Added all blocked filter.\n");
 
}
 
else
 
{
 
myFilter.numFilterConditions = 1;
 
myFilter.filterCondition = &condition;
 
if(str=="IP")
 
{
 
FWP_V4_ADDR_AND_MASK addr;//адрес, который нужно добавить в фильтр
 
addr.addr=cond;
 
addr.mask=0xffffffff;
 
printf("Added IP: %d\n",addr.addr);
 
condition.fieldKey = FWPM_CONDITION_IP_REMOTE_ADDRESS;
 
condition.matchType=FWP_MATCH_EQUAL;
 
condition.conditionValue.type=FWP_V4_ADDR_MASK;
 
condition.conditionValue.v4AddrMask = &addr;
 
}
 
else
 
{
 
if(str=="Port")
 
{
 
UINT16 port = cond;//порт, который нужно добавить в фильтр
 
printf("Added port: %d\n",port);
 
condition.fieldKey = FWPM_CONDITION_IP_REMOTE_PORT;
 
condition.matchType=FWP_MATCH_EQUAL;
 
condition.conditionValue.type=FWP_UINT16;
 
condition.conditionValue.uint16=port;
 
}
 
else
 
{
 
wchar_t *app = new wchar_t[bufSize];
 
swprintf(app,L"%S",str);//приложение, которое нужно добавить в фильтр
 
FWP_BYTE_BLOB *applicationID = NULL;
 
result = FwpmGetAppIdFromFileName0(app,&applicationID);
 
if(result != ERROR_SUCCESS)
 
{
 
printf("Add application \"%s\" failed with error: %d.\n\n",str,result);
 
return -1;
 
}
 
printf("Added application: %s\n",str);
 
condition.fieldKey = FWPM_CONDITION_ALE_APP_ID;
 
condition.matchType=FWP_MATCH_EQUAL;
 
condition.conditionValue.type=FWP_BYTE_BLOB_TYPE;
 
condition.conditionValue.byteBlob=applicationID;
 
}
 
}
 
}
 
#pragma endregion
 
#pragma region Добавление фильтра
 
result = FwpmFilterAdd0(engineHandle,&myFilter,NULL,&id);
 
if(result != ERROR_SUCCESS)
 
{
 
printf("Filter Added failed with error: %d\n\n",result);
 
return -1;
 
}
 
#pragma endregion
 
return id;
 
}
 
//Добавление вспомогательного фильтра на подуровень
 
void AddFilter(GUID subLayerGUID, HANDLE engineHandle, GUID guid)
 
{
 
DWORD result = NULL;
 
#pragma region Создание фильтра
 
FWPM_FILTER0_ myFilter={0};
 
RtlZeroMemory(&myFilter,sizeof(myFilter));
 
myFilter.action.type= FWP_ACTION_BLOCK;
 
myFilter.subLayerKey = subLayerGUID;
 
myFilter.weight.type = FWP_EMPTY;
 
myFilter.layerKey = FWPM_LAYER_ALE_AUTH_CONNECT_V4;
 
myFilter.displayData.description = L"Secondary filter";
 
myFilter.displayData.name = L"Secondary filter";
 
myFilter.filterKey = guid;
 
myFilter.numFilterConditions = 0;
 
#pragma endregion
 
#pragma region Добавление фильтра
 
result = FwpmFilterAdd0(engineHandle,&myFilter,NULL,NULL);
 
if(result != ERROR_SUCCESS)
 
printf("Secondary filter added failed with error: %d\n\n",result);
 
else
 
printf("Secondary filter added successfully!\n");
 
#pragma endregion
 
}
 
//Удаление фильтров по сохраненным ID
 
void DelFilter(HANDLE engineHandle)
 
{
 
#pragma region Удаление фильтров по сохраненным ID
 
FILE *filterFile = fopen("C:\\Program Files\\Filter\\FilterList.iff","r");
 
if(!filterFile)
 
{
 
printf("File \"FilterList.iff\" dosen't exist!\n");
 
return;
 
}
 
UINT64 id = NULL;
 
DWORD result = NULL;
 
while(!feof(filterFile))
 
{
 
fscanf(filterFile,"%d",&id);//cчитываем i-ый адрес
 
//Если последняя строка, то выходим из цикла
 
if(feof(filterFile))
 
break;
 
if(id==0)
 
continue;
 
result = FwpmFilterDeleteById0(engineHandle,id);
 
if(result!=ERROR_SUCCESS)
 
printf("Filter (ID=%d) close failed with error: %s\n",id,result);
 
}
 
fclose(filterFile);
 
printf("Filters closed successfully!\n");
 
#pragma endregion
 
}
 
//Удаление фильтра по GUID
 
void DelFilter(HANDLE engineHandle, GUID ID)
 
{
 
#pragma region Удаление фильтра по GUID
 
DWORD result = FwpmFilterDeleteByKey0(engineHandle,&ID);
 
if(result != ERROR_SUCCESS)
 
{
 
if(result == FWP_E_FILTER_NOT_FOUND)
 
printf("Secondary filter doesn't exist.\n");
 
else
 
printf("Secondary filter closed failed with error: %d\n",result);
 
return;
 
}
 
printf("Secondary filter closed successfully!\n");
 
#pragma endregion
 
}
 
//Удаление подуровня
 
void DelSubLayer(HANDLE engineHandle, GUID _idSubLayer)
 
{
 
#pragma region Удаление подуровня
 
DWORD result = FwpmSubLayerDeleteByKey0(engineHandle,&_idSubLayer);
 
if(result != ERROR_SUCCESS)
 
printf("SubLayer closed failed with error: %d\n",result);
 
else
 
printf("SubLayer closed successfully!\n");
 
#pragma endregion
 
}
 
//Закрытие сеанса
 
void CloseSeans(HANDLE engineHandle)
 
{
 
#pragma region Закрытие сеанса
 
DWORD result = FwpmEngineClose0(engineHandle);
 
if(result != ERROR_SUCCESS)
 
printf("Engine close failed with error: %d\n",result);
 
else
 
printf("Engine closed successfully!\n");
 
system("pause");
 
#pragma endregion
 
}
 
//Запись в автозапуск
 
void AutoStart()
 
{
 
#pragma region Запись в автозапуск
 
DWORD result=NULL;
 
HKEY hKey = NULL;
 
result = RegCreateKeyEx(HKEY_LOCAL_MACHINE,
 
L"Software\\Microsoft\\Windows\\CurrentVersion\\Run",
 
NULL,
 
NULL,
 
REG_OPTION_VOLATILE,
 
KEY_ALL_ACCESS,
 
NULL,
 
&hKey,
 
NULL);
 
if(result!=ERROR_SUCCESS)
 
printf("Open failed with error: %d\n",result);
 
else
 
{
 
byte * buf = new byte[100];
 
buf = (LPBYTE)L"\"C:\\Program Files\\Filter\\ConsoleFilter.exe\"";
 
result = RegSetValueEx(hKey,
 
L"ConsoleFilter.exe",
 
NULL,
 
REG_SZ,
 
buf,
 
100);
 
if(result!=ERROR_SUCCESS)
 
printf("Add failed with error: %d\n",result);
 
result = RegCloseKey(hKey);
 
if(result!=ERROR_SUCCESS)
 
printf("Close failed with error: %d\n",result);
 
}
 
#pragma endregion
 
}


Вернуться к обсуждению:
Сетевая фильтрация url и ip адресов в wfp Программирование драйверов
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.11.2014, 22:18
Готовые ответы и решения:

Фильтрация и сравнение IP wia WFP
Доброго времени суток! Благодаря товарищу Убежденный, разобрался немного в теме и наваял код....

Фильтрация URL адресов в Cisco 2911
Есть access-list. Нужно ограничить доступ в социальные сети определенным ip адресам данного ACL....

Сколько можно добавить URL адресов в свою созданную Группу URl?
Добрый день. Подскажите пожалуйста, сколько можно добавить URL адресов в свою созданную Группу...

Сетевая фильтрация
Есть электромагнитная катушка от бытового прибора. Потребляемая мощность прибора 15 ватт. Прибор...

22
03.11.2014, 22:18
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.11.2014, 22:18
Помогаю со студенческими работами здесь

Организация URL адресов
Добрый день. Столкнулся с такой проблемой ... Как правильно организовать URL ? Допустим есть...

Фильтрация MAC адресов в модеме DLINK 2540U
Добрый день. Есть модем DLINK 2540U, настроенный в режиме роутера. Возможно ли в настройках модема...

Смена URL адресов страниц
Имеется сайт (интернет-магазин) В индекс попал порядка месяца назад... постепенно дорабатывается....

Создание дружественных адресов URL
Добрый день Пытаюсь на сайте с помощью mod_rewrite переделать URL. RewriteRule...

0
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru