1. 程式人生 > >TDI過濾驅動分析

TDI過濾驅動分析

轉自:http://www.longene.org/forum/viewtopic.php?t=446

目錄

0 介紹
0.1 TDI驅動作用
0.2 Windows NT網路總體結構

1. 過濾裝置
1.1 繫結目標
1.2 分發函式
1.3 過濾地址
1.4 過濾內容
1.4.1 過濾HTTP
1.4.2 過濾DNS

2. VISTA網路結構

3. 驅動程式碼分析
3.1 主要資料結構分析
3.2 主要演算法分析

4. 附屬內容
4.1 HTTP協議GET請求資料
4.2 HTTP協議POST請求資料



0. 介紹


0.1 TDI驅動作用

TDI協議驅動主要應用於版本號在nt4至nt5之間的作業系統,本文件對TDI驅動的分析主要參考nt4所提供
的TDI驅動。TDI是Transport Driver Interface首字母縮寫,主要提供網路層協議和傳輸層協議的實現。

0.2 Windows NT網路總體結構

網路應用程式一般通過MSDN提供的ws2_32.dll的文件使用winsock網路介面。如果在登錄檔裡設定了其它
的SPI服務,Windows NT會載入相映的動態連線庫實現應用層的winsock API過濾。ws2_32.dll通過查詢
登錄檔裡的服務提供者資訊,呼叫不同服務提供者的實現介面。相對於TCP/IP,程式會進入msafd.dll和
wshtcpip.dll中。在wshtcpip.dll中,通過呼叫ntdll.dll中的Native API把請求傳送到afd.sys中。AFD
是一個檔案系統驅動,所以Windows NT的網路驅動和檔案密切相關。然後請求到達TDI驅動,對於TCP/IP
對應的驅動是tcpip.sys。最後請求會傳遞到NDIS中通過miniport驅動傳送或接收網絡卡資料。以上是網路
資料包的大致流程。值得說明的是AFD(Ancillary Function Driver)的設計,通過設計統一的介面和註冊
表中的資訊達到實現不同協議棧的目的。不過這部分設計也有intel公司功勞,因為程式碼中有很多intel
公司工程師的署名:-)。


1. 過濾裝置


1.1 繫結目標

TDI會建立四個網路裝置而不是三個。它們是\Device\Tcp、\Device\Udp、\Device\RawIp、\Device\Ip,
其中的\Device\Ip我們不必關心。真正的傳送IP資料的是\Device\RawIp。就我們的過濾目的而言,IP設
備都不用關心。這樣,我們使用IoCreateDevice建立兩個我們自己的裝置,並通過IoAttachDevice放到
\Device\Tcp和\Device\Udp之上。對IoAttachDevice的使用要小心,IoAttachDevice會用IoCreateFile
開啟目的裝置,繫結裝置之後在關閉,但那時我們的裝置已經在裝置棧之上,所以也會收到close IRP。
同時為了以後使用方便我們儲存了TDI裝置的地址。建立的裝置要設定Flags為DO_DIRECT_IO,因為TDI設
備都使用這個方式。

1.2 分發函式

除了IRP_MJ_INTERNAL_DEVICE_CONTROL之外,其它的IRP都被髮送到TCPDispatch之中。在TCPDispatch裡
有如下幾種情況:

1. \Device\Ip的IRP被送到IPDispatch之中。這些IRP可能是從ipconfig、ping、route中發出的。

1.1 IPCleanup負責清理未處理IRP。

1.2 IPDispatchDeviceControl中先處理IOCTL_ICMP_ECHO_REQUEST呼叫關係如下:
DispatchEchoRequest->ICMPEchoRequest->ICMPEcho->SendEcho->IPTransmit->SendIPPacket。
IOCTL_ICMP_ECHO_REQUEST支援了SDK中提供的icmp.dll的介面實現。ICMPEchoRequest可以被
核心協議棧直接使用也可以接受使用者請求。IOCTL_IP_GET_NTE_INFO、IOCTL_IP_ADD_NTE、
IOCTL_IP_DELETE_NTE提供路由表設定功能。IOCTL_IP_SET_DHCP_INTERFACE提供DHCP設定功能。
IOCTL_IP_SET_ADDRESS提供地址設定功能。使用者可以通過interface系列API使用以上功能。
IOCTL_IP_SET_FILTER_POINTER提供對IP過濾驅動的支援。

2. 其它三個裝置統一在TCPDispatch中得到分配。

2.1 處理IRP_MJ_DEVICE_CONTROL時先使用TdiMapUserRequest把使用者I/O Control code 轉化成內部
成MinorFunction。比如IOCTL_TDI_CONNECT變成TDI_CONNECT。呼叫TCPDispatchDeviceControl
和TCPDispatchInternalDeviceControl。前者是用來實現IOCTL_TCP_QUERY_INFORMATION_EX和
IOCTL_TCP_SET_INFORMATION_EX的。不過在windows 2000之後IRP_MJ_DEVICE_CONTROL並不再需
要轉換了。

2.2 為IRP_MJ_QUERY_SECURITY保留介面。看來微軟早意識到RawIP的安全問題,不過這個介面在XP的
SP2補丁之後才起作用。

2.3 TCPCreate、TCPClose、TCPCleanup幾個分派函式處理TDI_CONTROL_CHANNEL_FILE、
TDI_CONNECTION_FILE和TDI_TRANSPORT_ADDRESS_FILE。TDI_CONTROL_CHANNEL_FILE對應EA為空
的情況。TCPCreate實現如下:得到從NtCreateFile中的Ea(extra縮寫)引數,如果為空,則要
建立的是TDI_CONTROL_CHANNEL_FILE。如果不為空,用FindEA查詢TdiTransportAddress,如果
找到用TdiOpenAddress建立地址物件。傳輸地址物件是三個裝置都可以有的。再用FindEA查詢
TdiConnectionContext,如果找到則用TdiOpenConnection建立連線物件,並且只有Tcp裝置可以
建立。

2.4 TCPDispatchInternalDeviceControl實現了TDI的大多數功能。和常見的檔案系統驅動類似,TDI
驅動使用由AFD檔案系統驅動建立的FsContext檔案控制塊,而FsContext2儲存了地址物件型別。
如果FsContext2為TDI_CONNECTION_FILE,也就是連線物件,有這幾種IRP處理TDI_RECEIVE、
TDI_DISASSOCIATE_ADDRESS、TDI_CONNECTTDI_DISCONNECT、TDI_LISTENTDI_ACCEPT、TDI_SEND、
TDI_ASSOCIATE_ADDRESS。
如果FsContext2為TDI_TRANSPORT_ADDRESS_FILE,要處理TDI_SET_EVENT_HANDLER、
TDI_SEND_DATAGRAM、TDI_RECEIVE_DATAGRAM。
最後兩種TDI_QUERY_INFORMATION和TDI_SET_INFORMATION三個裝置都可以處理。

TdiMapUserRequest用於把IRP_MJ_DEVICE_CONTROL對映為IRP_MJ_INTERNAL_DEVICE_CONTROL。
通過AFD.sys傳送的網路請求被轉化成IRP_MJ_INTERNAL_DEVICE_CONTROL,所以可以先不考慮
IRP_MJ_DEVICE_CONTROL。另外,WinNT元件內部使用IOCTL_TDI_QUERY_DIRECT_SEND_HANDLER
和IOCTL_TDI_QUERY_DIRECT_SENDDG_HANDLER來直接傳送資料包,這個未公開的機制可以繞過
我們的過濾。在必要時也要考慮在內。

1.3 過濾地址

1.3.1 本地地址

本地地址放在EAName之後,TRANSPORT_ADDRESS結構裡的TDI_ADDRESS_IP中的sin_port和in_addr。

1.3.2 遠端地址

TCP協議的遠端地址在(PTDI_REQUEST_KERNEL_CONNECT)&(IrpSp->Parameters)之中。
而RawIp和UDP協議的遠端地址在(PTDI_REQUEST_KERNEL_SENDDG)&(IrpSp->Parameters)之中。

1.4 過濾內容

過濾TDI_SEND、TDI_RECEIVE、TDI_SEND_DATAGRAM、TDI_RECEIVE_DATAGRAM時檢視irp->MdlAddress。

1.4.1 過濾HTTP

本節參考RFC1945、2068、2616關於HTTP 1.0/1.1版本的協議標準和RFC2518、3253關於WebDav的描述。

1. 過濾請求。需要過濾的請求報文有GET和POST兩種。請求行格式為:請求 URI HTTP版本。
例項中的GET請求為: GET /cgi-bin/cvstrac/NetWorkAudit/wiki HTTP/1.1\r\n
例項中的POST請求為:POST /cgi-bin/cvstrac/NetWorkAudit/login HTTP/1.1\r\n
報文頭部主要有:
Accept: image/gif, image/x-xbitmap, image/jpeg, ......application/msword, */*\r\n
Referer:
http://192.168.0.8/cgi-bin/cvstrac/NetW ... Audit/wiki
\r\n
Accept-Language: zh-cn\r\n
Content-Type: application/x-www-form-urlencoded\r\n
Accept-Encoding: gzip, deflate\r\n
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NE......7)\r\n
Host: 192.168.0.8\r\n
Content-Length: 80\r\n
Connection: Keep-Alive\r\n
Cache-Control: no-cache\r\n
比較重要的是Content-Length,冒號後面是body部分的長度。
身體部分。只有POST請求有body部分。body跟在頭部之後並多空一行。比如POST表單引數:
nxp=%2Fcgi-bin%2Fcvstrac%2FNetWorkAudit%2Fwiki&u=welear&p=welfar&in=%B5%C7%C2%BC

2. 過濾響應。響應行格式為HTTP版本號 狀態碼 狀態碼解釋。頭部與身體和請求一樣。例如:
HTTP/1.1 302 Moved Temporarily\r\n
Date: Tue, 11 Mar 2008 09:32:00 GM\r\n
Server: Apache/1.3.19 (Unix) (Red-Hat/Linux)\r\n
Location: /cgi......\r\n
Content-Length: 106\r\n
Keep-Alive: timeout=15, max=100\r\n
Connection: Keep-Alive\r\n
Content-Type: text/html; charset=GB2312\r\n
其中比較重要的是Content-Type和Content-Length。過濾時判斷狀態碼為200即可。
不過過濾斷點續傳還需要進一步研究。

過濾需要根據需求判斷頭部資訊,儲存身體部分內容。用可選欄位Host可以得到使用者鍵入瀏覽器URI地址。
判斷使用者意圖還需要過濾GET請求的檔案的字尾名。一般用html和htm作為網頁的預設字尾名,用
asp、aspx、php、jsp作為動態網頁的預設字尾名。POST請求並不過濾字尾和post引數。如果Host欄位不可
用,那麼就必須使用下面的《過濾DNS》一節的方法。

1.4.2 過濾DNS

過濾DNS資料包是為還原域名功能所做的必要準備。DNS查詢和響應有可能使用UDP協議也有可能使用
TCP協議,在實際測試中發現傳送DNS資料包時並不使用Connect。DNS的查詢和響應使用統一的包格式,
各欄位含義如下:

1. 標識。2位元組,用來確定查詢和響應的對應關係。

2. 標誌。2位元組,表示協議包含義細節。
OR(1bit):0代表查詢,1代表響應。
opcode(4bit):0代表標準查詢,1代表反向查詢,2代表伺服器狀態請求。
AA(1bit):名字伺服器授權該域。
TC(1bit):代表超過512位元組可以被截斷。
RD(1bit):代表期望查詢。
RA(1bit):代表遞迴查詢。
zero(3bit):0。
rcode(4bit):0代表沒有差錯,3代表名字差錯。

3. 問題數、資源記錄數、授權資源記錄數、額外資源記錄數。它們每個欄位佔2位元組,代表各種
記錄數。一般問題數或資源數為1,其它都是0。


2. VISTA網路結構


Vista在網路部分做了比較大的改動。用WSK(Winsock Kernel)和WFP(Windows Filtering Platform)代替
TDI驅動。

2.1 Winsock Kernel

由ISO的7個分層協議到絕大多數現實使用的4層簡化網路協議為作業系統的網路實現奠定了設計基礎。
在WinNT的網路中,設計者又把問題分為兩個方面來看,也就是TDI和NDIS。NDIS實現了標準網路協議
和網絡卡的結合問題,也就是網路層和傳輸層與資料鏈路層和物理層的銜接問題。以前的TDI主要包括
Socket Emulator、NetBios Emulator、Redirector等。這樣一來,Socket介面只是在應用層起作用。
這些TDI最後依然要使用以socket為介面的網路協議,而且TDI中有一些介面完全可以放在一起,減少
程式碼量。在Vista的設計中,socket被放在核心中用作TDI和NDIS的介面,而原來的TDI有了新的位置,
就是WSK Application,實現WSK Client NPI。下面是Vista DDK原文:
"WSK applications discover and attach to the WSK subsystem by using a set of WSK
registration functions. Applications can use these functions to dynamically detect
when the WSK subsystem is available and to exchange dispatch tables that constitute
the provider and client side implementations of the WSK NPI."
這裡的WSK subsystem就是socket在核心部分的實現者。
WSK Client使用Network Module Registrar(NMR)提供的介面向Provider Module註冊自己。最重要的是
WSK Client必須使用address family、socket type、protocol引數轉換為TDI Transports的裝置名字,
呼叫WSK Subsystem提供的WskControlClient,並設定好WSK_TDI_DEVICENAME_MAPPING引數。
最後,微軟這麼設計可能還有一個原因:Unix系列作業系統都是在核心實現socket網路介面,這樣做也算
和別人一樣了,還有大量的開源作業系統可以參考。以socket為介面的網路設計已經被實現的很好了。

2.2 Windows Filtering Platform

WFP是TDI Filter Driver的替代者。vista提供了統一介面實現過濾引擎,而我們又變成了它的客戶。:-(


4. 附屬內容


4.1 HTTP協議GET請求資料

0000 00 11 09 8d ec 80 00 0a eb 86 d9 d4 08 00 45 00 ........ ......E.
0010 02 0a 11 38 40 00 40 06 a6 2a c0 a8 00 33 c0 a8
[email protected]
@. .*...3..
0020 00 08 05 8e 00 50 3b 50 27 49 10 ed e2 31 50 18 .....P;P 'I...1P.
0030 fa 84 d6 0d 00 00 47 45 54 20 2f 63 67 69 2d 62 ......GE T /cgi-b
0040 69 6e 2f 63 76 73 74 72 61 63 2f 4e 65 74 57 6f in/cvstr ac/NetWo
0050 72 6b 41 75 64 69 74 2f 6c 6f 67 69 6e 3f 6e 78 rkAudit/ login?nx
0060 70 3d 2f 63 67 69 2d 62 69 6e 2f 63 76 73 74 72 p=/cgi-b in/cvstr
0070 61 63 2f 4e 65 74 57 6f 72 6b 41 75 64 69 74 2f ac/NetWo rkAudit/
0080 77 69 6b 69 20 48 54 54 50 2f 31 2e 31 0d 0a 41 wiki HTT P/1.1..A
0090 63 63 65 70 74 3a 20 69 6d 61 67 65 2f 67 69 66 ccept: i mage/gif
00a0 2c 20 69 6d 61 67 65 2f 78 2d 78 62 69 74 6d 61 , image/ x-xbitma
00b0 70 2c 20 69 6d 61 67 65 2f 6a 70 65 67 2c 20 69 p, image /jpeg, i
00c0 6d 61 67 65 2f 70 6a 70 65 67 2c 20 61 70 70 6c mage/pjp eg, appl
00d0 69 63 61 74 69 6f 6e 2f 78 2d 73 68 6f 63 6b 77 ication/ x-shockw
00e0 61 76 65 2d 66 6c 61 73 68 2c 20 61 70 70 6c 69 ave-flas h, appli
00f0 63 61 74 69 6f 6e 2f 76 6e 64 2e 6d 73 2d 65 78 cation/v nd.ms-ex
0100 63 65 6c 2c 20 61 70 70 6c 69 63 61 74 69 6f 6e cel, app lication
0110 2f 76 6e 64 2e 6d 73 2d 70 6f 77 65 72 70 6f 69 /vnd.ms- powerpoi
0120 6e 74 2c 20 61 70 70 6c 69 63 61 74 69 6f 6e 2f nt, appl ication/
0130 6d 73 77 6f 72 64 2c 20 2a 2f 2a 0d 0a 52 65 66 msword, */*..Ref
0140 65 72 65 72 3a 20 68 74 74 70 3a 2f 2f 31 39 32 erer: ht
tp://192

0150 2e 31 36 38 2e 30 2e 38 0d 0a 41 63 63 65 70 74 .168.0.8 ..Accept
0160 2d 4c 61 6e 67 75 61 67 65 3a 20 7a 68 2d 63 6e -Languag e: zh-cn
0170 0d 0a 41 63 63 65 70 74 2d 45 6e 63 6f 64 69 6e ..Accept -Encodin
0180 67 3a 20 67 7a 69 70 2c 20 64 65 66 6c 61 74 65 g: gzip, deflate
0190 0d 0a 55 73 65 72 2d 41 67 65 6e 74 3a 20 4d 6f ..User-A gent: Mo
01a0 7a 69 6c 6c 61 2f 34 2e 30 20 28 63 6f 6d 70 61 zilla/4. 0 (compa
01b0 74 69 62 6c 65 3b 20 4d 53 49 45 20 36 2e 30 3b tible; M SIE 6.0;
01c0 20 57 69 6e 64 6f 77 73 20 4e 54 20 35 2e 31 3b Windows NT 5.1;
01d0 20 53 56 31 3b 20 2e 4e 45 54 20 43 4c 52 20 32 SV1; .N ET CLR 2
01e0 2e 30 2e 35 30 37 32 37 29 0d 0a 48 6f 73 74 3a .0.50727 )..Host:
01f0 20 31 39 32 2e 31 36 38 2e 30 2e 38 0d 0a 43 6f 192.168 .0.8..Co
0200 6e 6e 65 63 74 69 6f 6e 3a 20 4b 65 65 70 2d 41 nnection : Keep-A
0210 6c 69 76 65 0d 0a 0d 0a live....

4.2 HTTP協議POST請求資料

0000 00 11 09 8d ec 80 00 0a eb 86 d9 d4 08 00 45 00 ........ ......E.
0010 02 dc 19 b7 40 00 40 06 9c d9 c0 a8 00 33 c0 a8 [email protected]@. .....3..
0020 00 08 05 94 00 50 35 a6 5d ad 4c c0 7c 0c 50 18 .....P5. ].L.|.P.
0030 fa f0 81 bb 00 00 50 4f 53 54 20 2f 63 67 69 2d ......PO ST /cgi-
0040 62 69 6e 2f 63 76 73 74 72 61 63 2f 4e 65 74 57 bin/cvst rac/NetW
0050 6f 72 6b 41 75 64 69 74 2f 6c 6f 67 69 6e 20 48 orkAudit /login H
0060 54 54 50 2f 31 2e 31 0d 0a 41 63 63 65 70 74 3a TTP/1.1. .Accept:
0070 20 69 6d 61 67 65 2f 67 69 66 2c 20 69 6d 61 67 image/g if, imag
0080 65 2f 78 2d 78 62 69 74 6d 61 70 2c 20 69 6d 61 e/x-xbit map, ima
0090 67 65 2f 6a 70 65 67 2c 20 69 6d 61 67 65 2f 70 ge/jpeg, image/p
00a0 6a 70 65 67 2c 20 61 70 70 6c 69 63 61 74 69 6f jpeg, ap plicatio
00b0 6e 2f 78 2d 73 68 6f 63 6b 77 61 76 65 2d 66 6c n/x-shoc kwave-fl
00c0 61 73 68 2c 20 61 70 70 6c 69 63 61 74 69 6f 6e ash, app lication
00d0 2f 76 6e 64 2e 6d 73 2d 65 78 63 65 6c 2c 20 61 /vnd.ms- excel, a
00e0 70 70 6c 69 63 61 74 69 6f 6e 2f 76 6e 64 2e 6d pplicati on/vnd.m
00f0 73 2d 70 6f 77 65 72 70 6f 69 6e 74 2c 20 61 70 s-powerp oint, ap
0100 70 6c 69 63 61 74 69 6f 6e 2f 6d 73 77 6f 72 64 plicatio n/msword
0110 2c 20 2a 2f 2a 0d 0a 52 65 66 65 72 65 72 3a 20 , */*..R eferer:
0120 68 74 74 70 3a 2f 2f 31 39 32 2e 31 36 38 2e 30 http://1 92.168.0
0130 2e 38 2f 63 67 69 2d 62 69 6e 2f 63 76 73 74 72 .8/cgi-b in/cvstr
0140 61 63 2f 4e 65 74 57 6f 72 6b 41 75 64 69 74 2f ac/NetWo rkAudit/
0150 6c 6f 67 69 6e 3f 6e 78 70 3d 2f 63 67 69 2d 62 login?nx p=/cgi-b
0160 69 6e 2f 63 76 73 74 72 61 63 2f 4e 65 74 57 6f in/cvstr ac/NetWo
0170 72 6b 41 75 64 69 74 2f 77 69 6b 69 0d 0a 41 63 rkAudit/ wiki..Ac
0180 63 65 70 74 2d 4c 61 6e 67 75 61 67 65 3a 20 7a cept-Lan guage: z
0190 68 2d 63 6e 0d 0a 43 6f 6e 74 65 6e 74 2d 54 79 h-cn..Co ntent-Ty
01a0 70 65 3a 20 61 70 70 6c 69 63 61 74 69 6f 6e 2f pe: appl ication/
01b0 78 2d 77 77 77 2d 66 6f 72 6d 2d 75 72 6c 65 6e x-www-fo rm-urlen
01c0 63 6f 64 65 64 0d 0a 41 63 63 65 70 74 2d 45 6e coded..A ccept-En
01d0 63 6f 64 69 6e 67 3a 20 67 7a 69 70 2c 20 64 65 coding: gzip, de
01e0 66 6c 61 74 65 0d 0a 55 73 65 72 2d 41 67 65 6e flate..U ser-Agen
01f0 74 3a 20 4d 6f 7a 69 6c 6c 61 2f 34 2e 30 20 28 t: Mozil la/4.0 (
0200 63 6f 6d 70 61 74 69 62 6c 65 3b 20 4d 53 49 45 compatib le; MSIE
0210 20 36 2e 30 3b 20 57 69 6e 64 6f 77 73 20 4e 54 6.0; Wi ndows NT
0220 20 35 2e 31 3b 20 53 56 31 3b 20 2e 4e 45 54 20 5.1; SV 1; .NET
0230 43 4c 52 20 32 2e 30 2e 35 30 37 32 37 29 0d 0a CLR 2.0. 50727)..
0240 48 6f 73 74 3a 20 31 39 32 2e 31 36 38 2e 30 2e Host: 19 2.168.0.
0250 38 0d 0a 43 6f 6e 74 65 6e 74 2d 4c 65 6e 67 74 8..Conte nt-Lengt
0260 68 3a 20 38 30 0d 0a 43 6f 6e 6e 65 63 74 69 6f h: 80..C onnectio
0270 6e 3a 20 4b 65 65 70 2d 41 6c 69 76 65 0d 0a 43 n: Keep- Alive..C
0280 61 63 68 65 2d 43 6f 6e 74 72 6f 6c 3a 20 6e 6f ache-Con trol: no
0290 2d 63 61 63 68 65 0d 0a 0d 0a 6e 78 70 3d 25 32 -cache.. ..nxp=%2
02a0 46 63 67 69 2d 62 69 6e 25 32 46 63 76 73 74 72 Fcgi-bin %2Fcvstr
02b0 61 63 25 32 46 4e 65 74 57 6f 72 6b 41 75 64 69 ac%2FNet WorkAudi
02c0 74 25 32 46 77 69 6b 69 26 75 3d 77 65 6c 65 61 t%2Fwiki &u=welea
02d0 72 26 70 3d 77 65 6c 66 61 72 26 69 6e 3d 25 42 r&p=welf ar&in=%B
02e0 35 25 43 37 25 43 32 25 42 43 5%C7%C2% BC

相關推薦

TDI過濾驅動分析

轉自:http://www.longene.org/forum/viewtopic.php?t=446 目錄 0 介紹 0.1 TDI驅動作用 0.2 Windows NT網路總體結構 1. 過濾裝置 1.1 繫結目標 1.2 分發函式 1.3 過濾地址 1.4 過濾內容

關於TDI過濾驅動中的TDI_SEND

現在只能獲取到資料,現在我想重新構造這個包,然後再發送出去,有什麼辦法呢?最好有碼了。 如果直接修改原來的地方的話 那肯定是非常的麻煩的,會涉及到資料包變大或者變小的問題。還有就是核心中有什麼函式可以

TDI FILTER 網路過濾驅動完全解析

      TDI FILTER 過濾驅動的功能一般用來進行整個系統中的所有網路流量的分析,記錄和管理,可以實現非常強大的管理功能,這裡就將討論它的設計架構,和具體實現的方法。        進行

TDI Filter 過濾驅動

                                                                           By Fanxiushu  2013, 引用和轉載請註明原作者 為了讓大家有興趣閱讀下去, 舉個正在使用的可能大家都比較熟悉

19.Linux-USB總線驅動分析

kmalloc 開發 硬件 ctrl 地址 allow end 處理 interface 如下圖所示,以windows為例,我們插上一個沒有USB設備驅動的USB,就會提示你安裝驅動程序 為什麽一插上就有會提示信息? 是因為windows自帶了USB總線驅動程序

Kernel的IIC驅動分析

loss amp 支持 ice from see ots eno ado 涉及到的文件: drivers/i2c/i2c-core.c drivers/i2c/i2c-dev.c drivers/i2c/busses/i2c-imx.c 等等 在下面分析的代碼中,不想關

linux音頻alsa-uda134x驅動分析之二(時鐘)

lin pen play 個數 inter and 文本 ted word Audio Clocking音頻時鐘==============This text describes the audio clocking terms in ASoC and digital au

Linux 8250驅動分析

com for 目前 lin .html www. http ibm mat 1. 介紹 8250是IBM PC及兼容機使用的一種串口芯片; 16550是一種帶先進先出(FIFO)功能的8250系列串口芯片; 16550A則是16550的升級版本, 修復了FIFO相關BUG

SQL注入的過濾程式碼分析

SQL注入:在使用者的輸入沒有為轉義字元過濾時,就會發生這樣這種形式的注入式攻擊。所以在在有SQL查詢語句的網頁中對字元的過濾時很重要的。 在沒有任何過濾時,是很危險的,使用者可以在提交的資料中,插入自己想要插入攻擊程式碼。 mysql_real_escape_strin

S3C2440 linux LCD驅動分析

環境: 硬體平臺 TQ2440            東華3.5 inch  TFT LCD       

ehci及其伴隨ohci主機控制器驅動分析

1. 正常插入 插上U盤產生中斷呼叫usb_hcd_irq: usb_hcd_irq ehci_irq usb_hcd_resume_root_hub queue_work(pm_wq, &hcd->wakeup_work); //hcd.

ThoughtSpot宣佈推出面向企業的新型語音驅動分析工具SearchIQ

即將到來的頻譜授權中規定的授權條件可能阻礙對消費者和企業做出的5G承諾   倫敦--(美國商業資訊)--GSMA今日對德國政府推出整個3.4至3.8 GHz頻段(C頻段)的決定表示歡迎,該決定對全球5G業務的未來發展至關重要。及時為5G提供這一關鍵頻段內的所有頻譜,顯示出德國對躋身歐洲

camera驅動分析

1. 核心的 camera 控制器驅動 和 sensor 驅動是基於 v4l2 驅動架構編寫的,應用程式可以使用 cimutils 進行測試   CIM 控制器驅動,基於 V4L2 架構,並採用 videobuf2。便於上層開發 drivers/media/platform

NDIS6過濾驅動的編寫

NDIS6是在WINDOWS VISTA及之後版本的WINDOWS引入的,這時NDIS5的HOOK方式是無法使用的,MSDN推薦的方式是使用過濾驅動,其實也可以使用Intermediate(中間層驅動),下面談一下它們的利弊,還有一些原理性的東西:1.為什麼NDIS6不動NDIS5的HOOK:

Linux核心啟動過程分析(十)-----RTC驅動分析

參考https://blog.csdn.net/xuao20060793/article/details/46433263這篇博文 RTC驅動分析: Class.c (drivers\rtc):subsys_initcall(rtc_init); static int __init

Loongson 2K1000B IRQ驅動分析

前言 龍芯2K1000B SoC目前主要用在2K PC樣機和龍芯派上。龍芯派2代日前已經發布,將PCIE等介面引出,採用了固態硬碟作為主儲存,比先前SD卡或者USB啟動速度和穩定性均有所提高,只是暫時還不知道採用的什麼核心版本。 本文簡單分析一下龍芯派的IRQ驅

Linux SD/MMC/SDIO驅動分析

一、SD/MMC/SDIO概念區分 SD(SecureDigital)與 MMC(MultimediaCard) SD 是一種 flash memory card 的標準,也就是一般常見的 SD 記憶卡,而 MMC 則是較早的一種記憶卡標準,目前已經被 SD 標準所取代。

高通Camera驅動分析【轉】

1、Sensor slave配置 結構體msm_camera_sensor_slave_info定義在media/msm_cam_sensor.h中: struct msm_camera_sensor_slave_info { char sensor_name[32];

Linux--核心---I2C匯流排驅動分析 以linux3.10.0 RK3288為例

Linux 3.10.0 iic匯流排註冊過程 I2C匯流排驅動包括I2C介面卡驅動載入與解除安裝以及I2C匯流排通訊方法 I2C核心提供了i2c_adapter的增加和刪除函式、i2c_driver的增加和刪除函式、i2c_client的依附和脫離函式 以及i2c傳輸、傳送

Linux I2C驅動分析與實現--例子

通過上篇《Linux I2C驅動分析與實現(二)》,我們對Linux子系統已經不陌生,那麼如何實現I2C驅動呢? 編寫客戶驅動的方法 在核心中有兩種方式的i2c客戶驅動的編寫方法,一種叫legacy傳統方式,另一種是newstyle方式. 前 一種legacy是一種舊式的方法,在2.