[14889] 2019-12-02_自己动手制作一个恶意流量检测系统(附源码)

文档创建者:s7ckTeam
浏览次数:3
最后更新:2025-01-18
2019-12-02_自己动手制作一个恶意流量检测系统(附源码)   h u o j i 1 2 0   F r e e B u f   2 0 1 9 - 1 2 - 0 2 0 x 0   C 2 C I P 2 2 0 . 1 8 1 . 3 8 . 1 4 8 ( ) , ? ?   ? ?   ? ?   ? ? ( ?   ) 2 2 0 . 1 8 1 . 3 8 . 1 4 8 I P   I P , , : : , ? ?   d r o p  
p i n g ( d r o p I P . ,   D D O S , D D O S , A M P . G i t H u b : h t t p s : / / g i t h u b . c o m / h u o j i 1 2 0 / N e t W a t c h 0 x 1   , , . 0 x 2   西 西 w i n d o w s 使 W F P N D I S , , : N D I S , , , . N D I S , . W F P 便 , F i l t e   E n g i n e , . 便 . , t c p i p . s y s , 西 . N D I S . W I N 2 0 0 3 , 便 W F P W F P : 0 x 3   d e m o : R 3 p i p e e n u m   R e p o r t T y p e {         r _ i n c o m e ,   / / a u t h         r _ o u t p u t ,   / / a u t h         r _ s t r e a m _ i n c o m e ,     / / T C P         r _ s t r e a m _ o u t p u t } ; e n u m   P r o t o c o l t y p e {         P r o _ I C M P   =   1 ,         P r o _ I G M P   =   2 ,         P r o _ T C P   =   6 ,
        P r o _ T C P   =   6 ,         P r o _ U D P   =   1 7 ,         P r o _ R D P   =   2 7 ,         P r o _ U N K N O W N } ; s t r u c t   N e t w o r k r e p o r t   {         R e p o r t T y p e   t y p e ;         P r o t o c o l t y p e   P r o t o c o l ;         D W O R D   I P a d d r ;         D W O R D   B u f f D a t a L e n ;         c h a r *   B u f f D a t a ; } ; s t d : : s t r i n g   G e t S i g H e x ( c h a r *   d a t a ,   i n t   l e n ) {         c h a r   b u f [ 0 x F F F F ]   =   {   0   } ;         f o r   ( i n t   i   =   0 ;   i   <   l e n ;   i + + )         {                 c h a r   t e s t [ 8 ]   =   {   0   } ;                 i f   ( i   = =   l e n   -   1 )                 {                         s p r i n t f _ s ( t e s t ,   " % 0 2 X " ,   ( B Y T E ) d a t a [ i ] ) ;                         s t r c a t _ s ( b u f ,   t e s t ) ;                 }                 e l s e                 {                         s p r i n t f _ s ( t e s t ,   " % 0 2 X   " ,   ( B Y T E ) d a t a [ i ] ) ;                         s t r c a t _ s ( b u f ,   t e s t ) ;                 }         }         r e t u r n   s t d : : s t r i n g ( b u f ) ; } i n t   m a i n ( ) {         H A N D L E   h P i p e   =   C r e a t e N a m e d P i p e (                 T E X T ( " . P i p e E z F i r e W a l l " ) ,                 P I P E _ A C C E S S _ D U P L E X   |   F I L E _ F L A G _ O V E R L A P P E D ,                 P I P E _ T Y P E _ M E S S A G E   |   P I P E _ R E A D M O D E _ M E S S A G E   |   P I P E _ W A I T ,                 P I P E _ U N L I M I T E D _ I N S T A N C E S ,                 0 ,                 0 ,                 N M P W A I T _ W A I T _ F O R E V E R ,                 N U L L ) ;         i f   ( I N V A L I D _ H A N D L E _ V A L U E   = =   h P i p e )                 r e t u r n   f a l s e ;         s t d : : c o u t   < <   " , . . . n " ;         c o n s t   i n t   s i z e   =   1 0 2 4   *   1 0 ;         c h a r   b u f [ s i z e ] ;         D W O R D   r l e n   =   0 ;         w h i l e   ( t r u e )         {                 i f   ( C o n n e c t N a m e d P i p e ( h P i p e ,   N U L L )   ! =   N U L L )                 {                         i f   ( R e a d F i l e ( h P i p e ,   b u f ,   s i z e ,   & r l e n ,   N U L L )   = =   F A L S E )                                 c o n t i n u e ;                         e l s e                         {                                 / /                                 N e t w o r k r e p o r t *   b u f f e r _ t m p   =   ( N e t w o r k r e p o r t * ) & b u f ;                                 S I Z E _ T   b u f f e r _ l e n   =   s i z e o f ( N e t w o r k r e p o r t )   +   b u f f e r _ t m p - > B u f f D a t a L e n ;                                 N e t w o r k r e p o r t *   b u f f e r   =   ( N e t w o r k r e p o r t * ) m a l l o c ( b u f f e r _ l e n ) ;                                 m e m c p y ( b u f f e r ,   b u f f e r _ t m p ,   b u f f e r _ l e n ) ;                                 c h a r *   d a t a   =   ( c h a r * ) m a l l o c ( b u f f e r - > B u f f D a t a L e n ) ;                                 B Y T E *   t m p   =   ( B Y T E * ) b u f f e r   +   s i z e o f ( N e t w o r k r e p o r t ) ;                                 m e m c p y ( d a t a ,   t m p ,   b u f f e r - > B u f f D a t a L e n ) ;                                 D W O R D   R e m o t e I P   =   b u f f e r - > I P a d d r ;                                 p r i n t f ( " I P : % u . % u . % u . % u   :   % d   :   % d   :   % d   n " ,   ( R e m o t e I P   > >   2 4 )   &   0 x F F ,   ( R e m o t e I P   > >   1 6 )   &   0 x F F ,   ( R e m o t e I P   > >   8 )   &   0 x F F ,   R e m o t e I P   &   0 x F F ,   b u f f e r - > P r o t o c o l ,   b u f f e r - > t y p e ,   b u f f e r - > B u f f D a t a L e n ) ;                                 i f   ( b u f f e r - > t y p e   = =   r _ s t r e a m _ i n c o m e   | |   b u f f e r - > t y p e   = =   r _ s t r e a m _ o u t p u t )                                 {                                         p r i n t f ( " :   % s   n " ,   G e t S i g H e x ( d a t a , b u f f e r - > B u f f D a t a L e n ) . c _ s t r ( ) ) ;                                 }                                 f r e e ( d a t a ) ;                                 f r e e ( b u f f e r ) ;                         }                 }         }         s t d : : c o u t   < <   "   n " ;         s y s t e m ( " p a u s e " ) ;         r e t u r n   0 ; }
e n t r y p i p e : W F P , , : F W P M L A Y E R A L E A U T H C O N N E C T V 4 F W P M L A Y E R A L E A U T H R E C V A C C E P T _ V 4   , o u t i n c o m e F W P M L A Y E R S T R E A M _ V 4   ,   F W P M L A Y E R A L E C O N N E C T R E D I R E C T _ V 4 , , . . S F A L E C o n n e c t C l a s s i f y S F A L E R e c v A c c e p t C l a s s i f y , I P , : H A N D L E     g _ h C l i e n t ; I O _ S T A T U S _ B L O C K   g _ i o S t a t u s B l o c k ; K E V E N T     g _ e v e n t ; V O I D   R e p o r t T o R 3 ( N e t w o r k r e p o r t *   m _ p a r a m e t e r , i n t   l e n t ) { i f   ( ! N T _ S U C C E S S ( Z w W r i t e F i l e ( g _ h C l i e n t ,   N U L L ,   N U L L ,   N U L L ,   & g _ i o S t a t u s B l o c k ,   ( v o i d * ) m _ p a r a m e t e r ,   l e n t ,   N U L L ,   N U L L ) ) ) D P R I N T ( " [ D e b u g M e s s a g e ]   E r r o r   C a n n o t   W i r t e   P i p e !   n " ) , g _ h C l i e n t   =   0 ; }                 R t l I n i t U n i c o d e S t r i n g ( & u n i N a m e ,   L " D o s D e v i c e s P i p e E z F i r e W a l l " ) ;         I n i t i a l i z e O b j e c t A t t r i b u t e s ( & o b j A t t r ,   & u n i N a m e , O B J _ C A S E _ I N S E N S I T I V E   |   O B J _ K E R N E L _ H A N D L E , N U L L ,   N U L L ) ;         S t a t u s   =   Z w C r e a t e F i l e ( & g _ h C l i e n t ,                 G E N E R I C _ R E A D   |   G E N E R I C _ W R I T E ,                 & o b j A t t r ,   & g _ i o S t a t u s B l o c k ,                 N U L L ,                 F I L E _ A T T R I B U T E _ N O R M A L ,                 0 ,                 F I L E _ O P E N ,                 F I L E _ S Y N C H R O N O U S _ I O _ N O N A L E R T ,                 N U L L ,   0 ) ;         i f   ( ! N T _ S U C C E S S ( S t a t u s )   | |   ! g _ h C l i e n t )         {                 D P R I N T ( " [ D e b u g M e s s a g e ]   C a n n o t   p i p e   F a i l !   0 x % 0 8 X   n " ,   S t a t u s ) ;                 r e t u r n   S t a t u s ;         }         D P R I N T ( " [ D e b u g M e s s a g e ]   C o n n e c t   p i p e   S u c c e s s ! n " ) ;         K e I n i t i a l i z e E v e n t ( & g _ e v e n t ,   S y n c h r o n i z a t i o n E v e n t ,   T R U E ) ;         i f   ( I s E q u a l G U I D ( l a y e r K e y ,   & F W P M _ L A Y E R _ A L E _ A U T H _ C O N N E C T _ V 4 ) )         {                 D P R I N T ( " [ D e b u g M e s s a g e ]     F W P M _ L A Y E R _ A L E _ A U T H _ C O N N E C T _ V 4 !   n " ) ;                 s C a l l o u t . c l a s s i f y F n   =   S F A L E C o n n e c t C l a s s i f y ;   / /                 s C a l l o u t . n o t i f y F n   =   S F A L E C o n n e c t N o t i f y ;         }         e l s e   i f   ( I s E q u a l G U I D ( l a y e r K e y ,   & F W P M _ L A Y E R _ A L E _ A U T H _ R E C V _ A C C E P T _ V 4 ) )         {                 D P R I N T ( " [ D e b u g M e s s a g e ]     F W P M _ L A Y E R _ A L E _ A U T H _ R E C V _ A C C E P T _ V 4 !   n " ) ;                 s C a l l o u t . c l a s s i f y F n   =   S F A L E R e c v A c c e p t C l a s s i f y ;   / /                 s C a l l o u t . n o t i f y F n   =   S F A L E R e c v A c c e p t N o t i f y ;         }         e l s e   i f   ( I s E q u a l G U I D ( l a y e r K e y ,   & F W P M _ L A Y E R _ S T R E A M _ V 4 ) )         {                 D P R I N T ( " [ D e b u g M e s s a g e ]     F W P M _ L A Y E R _ S T R E A M _ V 4 !   n " ) ;                 s C a l l o u t . c l a s s i f y F n   =   S F A L E R e c v D a t a C l a s s i f y ;   / /                 s C a l l o u t . n o t i f y F n   =   S F A L E R e c v D a t a N o t i f y ;         }         S t a t u s   =   F w p s C a l l o u t R e g i s t e r 0 ( D e v i c e O b j e c t ,                 & s C a l l o u t ,                 c a l l o u t I d ) ; / / I P v o i d   S F A L E C o n n e c t C l a s s i f y (         _ _ i n   c o n s t   F W P S _ I N C O M I N G _ V A L U E S 0 *   i n F i x e d V a l u e s ,         _ _ i n   c o n s t   F W P S _ I N C O M I N G _ M E T A D A T A _ V A L U E S 0 *   i n M e t a V a l u e s ,         _ _ i n o u t   v o i d *   l a y e r D a t a ,         _ _ i n   c o n s t   F W P S _ F I L T E R 0 *   f i l t e r ,         _ _ i n   U I N T 6 4   f l o w C o n t e x t ,         _ _ i n   F W P S _ C L A S S I F Y _ O U T 0 *   c l a s s i f y O u t )
F W P M L A Y E R A L E A U T H R E C V A C C E P T V 4   , b u g , b u g : ) {         i f   ( c l a s s i f y O u t - > r i g h t s   &   F W P S _ R I G H T _ A C T I O N _ W R I T E )         {                 F W P _ A C T I O N _ T Y P E   A c t i o n   =   ( C a n I F i l t e r T h i s R e q u e s t ( i n F i x e d V a l u e s , i n M e t a V a l u e s ,   l a y e r D a t a , f l o w C o n t e x t )   ?   F W P _ A C T I O N _ B L O C K   :   F W P _ A C T I O N _ P E R M I T ) ;                 P e r f o r m B a s i c A c t i o n ( i n F i x e d V a l u e s ,                         i n M e t a V a l u e s ,                         l a y e r D a t a ,                         f i l t e r ,                         f l o w C o n t e x t ,                         c l a s s i f y O u t ,                         A c t i o n ) ;         } } / / I P v o i d   S F A L E R e c v A c c e p t C l a s s i f y (         _ _ i n   c o n s t   F W P S _ I N C O M I N G _ V A L U E S 0 *   i n F i x e d V a l u e s ,         _ _ i n   c o n s t   F W P S _ I N C O M I N G _ M E T A D A T A _ V A L U E S 0 *   i n M e t a V a l u e s ,         _ _ i n o u t   v o i d *   l a y e r D a t a ,         _ _ i n   c o n s t   F W P S _ F I L T E R 0 *   f i l t e r ,         _ _ i n   U I N T 6 4   f l o w C o n t e x t ,         _ _ i n o u t   F W P S _ C L A S S I F Y _ O U T 0 *   c l a s s i f y O u t ) {         i f   ( c l a s s i f y O u t - > r i g h t s   &   F W P S _ R I G H T _ A C T I O N _ W R I T E )         {                 F W P _ A C T I O N _ T Y P E   A c t i o n   =   ( C a n I F i l t e r T h i s R e q u e s t ( i n F i x e d V a l u e s , i n M e t a V a l u e s ,   l a y e r D a t a ,   f l o w C o n t e x t )   ?   F W P _ A C T I O N _ B L O C K   :   F W P _ A C T I O N _ P E R M I T ) ;                 P e r f o r m B a s i c A c t i o n ( i n F i x e d V a l u e s ,                         i n M e t a V a l u e s ,                         l a y e r D a t a ,                         f i l t e r ,                         f l o w C o n t e x t ,                         c l a s s i f y O u t ,                         A c t i o n ) ;         } } v o i d   S F A L E R e c v D a t a C l a s s i f y (         _ _ i n   c o n s t   F W P S _ I N C O M I N G _ V A L U E S 0 *   i n F i x e d V a l u e s ,         _ _ i n   c o n s t   F W P S _ I N C O M I N G _ M E T A D A T A _ V A L U E S 0 *   i n M e t a V a l u e s ,         _ _ i n o u t   v o i d *   l a y e r D a t a , / /         _ _ i n   c o n s t   F W P S _ F I L T E R 0 *   f i l t e r ,         _ _ i n   U I N T 6 4   f l o w C o n t e x t ,         _ _ i n o u t   F W P S _ C L A S S I F Y _ O U T 0 *   c l a s s i f y O u t ) {         i f   ( K e G e t C u r r e n t I r q l ( )   >   D I S P A T C H _ L E V E L )         {                 D P R I N T ( " [ D e b u g M e s s a g e ]   E r r o   i n   P a s s I v e :   % d   n " ,   K e G e t C u r r e n t I r q l ( ) ) ;                 r e t u r n   F A L S E ;         }         F W P S _ S T R E A M _ C A L L O U T _ I O _ P A C K E T *   s t r e a m P a c k e t   =   ( F W P S _ S T R E A M _ C A L L O U T _ I O _ P A C K E T * ) l a y e r D a t a ;         D W O R D   R e m o t e I P   =   i n F i x e d V a l u e s - > i n c o m i n g V a l u e [ F W P S _ F I E L D _ A L E _ A U T H _ C O N N E C T _ V 4 _ I P _ R E M O T E _ A D D R E S S ] . v a l u e . u i n t 3 2 ;         D W O R D   L o c a l I P   =   i n F i x e d V a l u e s - > i n c o m i n g V a l u e [ F W P S _ F I E L D _ A L E _ A U T H _ C O N N E C T _ V 4 _ I P _ L O C A L _ A D D R E S S ] . v a l u e . u i n t 3 2 ;         i f   ( s t r e a m P a c k e t   & &   s t r e a m P a c k e t - > s t r e a m D a t a   ! =   N U L L   & &   s t r e a m P a c k e t - > s t r e a m D a t a - > d a t a L e n g t h   ! =   0     & &   R e m o t e I P   ! =   L o c a l I P   & &   g _ S t a r t F i l t e r )         {                 S I Z E _ T   s t r e a m L e n g t h   =   s t r e a m P a c k e t - > s t r e a m D a t a - > d a t a L e n g t h ;                 B O O L E A N   i n b o u n d   =   ( B O O L E A N ) ( ( s t r e a m P a c k e t - > s t r e a m D a t a - > f l a g s   &   F W P S _ S T R E A M _ F L A G _ R E C E I V E )   = =   F W P S _ S T R E A M _ F L A G _ R E C E I V E ) ;                 B Y T E *   s t r e a m   =   E x A l l o c a t e P o o l W i t h T a g ( N o n P a g e d P o o l ,   s t r e a m L e n g t h ,   T A G _ N A M E _ N O T I F Y ) ;                 S I Z E _ T   b y t e _ c o p i e d   =   0 ;                 i f   ( s t r e a m )                 {                         R t l Z e r o M e m o r y ( s t r e a m ,   s t r e a m L e n g t h ) ;                         F w p s C o p y S t r e a m D a t a T o B u f f e r (                                 s t r e a m P a c k e t - > s t r e a m D a t a ,                                 s t r e a m ,                                 s t r e a m L e n g t h ,                                 & b y t e _ c o p i e d ) ;                         N T _ A S S E R T ( b y t e s C o p i e d   = =   s t r e a m L e n g t h ) ;                         D P R I N T ( " [ D e b u g M e s s a g e ]   i n b o u n d :   % d   s t r e a m B u f f e r :   % s   " ,   i n b o u n d ,   s t r e a m ) ;                         S I Z E _ T   b u f f s i z e   =   s t r e a m L e n g t h   +   s i z e o f ( N e t w o r k r e p o r t ) ;                         i n b o u n d   =   ( B O O L E A N ) ( ( s t r e a m P a c k e t - > s t r e a m D a t a - > f l a g s   &   F W P S _ S T R E A M _ F L A G _ R E C E I V E )   = =   F W P S _ S T R E A M _ F L A G _ R E C E I V E ) ;                         N e t w o r k r e p o r t *   r e p o r t   =   ( N e t w o r k r e p o r t * ) E x A l l o c a t e P o o l W i t h T a g ( N o n P a g e d P o o l ,   b u f f s i z e ,   T A G _ N A M E _ R E P O R T ) ;                         i f   ( r e p o r t )                         {                                 R t l Z e r o M e m o r y ( r e p o r t ,   b u f f s i z e ) ;
: : , : :                                 R t l Z e r o M e m o r y ( r e p o r t ,   b u f f s i z e ) ;                                 r e p o r t - > t y p e   =   i n b o u n d   ?   r _ s t r e a m _ i n c o m e   :   r _ s t r e a m _ o u t p u t ;                                 r e p o r t - > P r o t o c o l   =   i n F i x e d V a l u e s - > i n c o m i n g V a l u e [ F W P S _ F I E L D _ A L E _ A U T H _ C O N N E C T _ V 4 _ I P _ P R O T O C O L ] . v a l u e . u i n t 1 6 ;                                 r e p o r t - > I P a d d r   =   R e m o t e I P ;                                 r e p o r t - > B u f f D a t a L e n   =   s t r e a m L e n g t h ;                                 / / b u f f e r s i z e o f ( N e t w o r k r e p o r t )                                 B Y T E *   t m p   =   ( B Y T E * ) r e p o r t   +   s i z e o f ( N e t w o r k r e p o r t ) ;                                 m e m c p y ( t m p ,   s t r e a m ,   s t r e a m L e n g t h ) ;                                 R e p o r t T o R 3 ( r e p o r t ,   b u f f s i z e ) ;                                 E x F r e e P o o l ( r e p o r t ) ;                         }                         E x F r e e P o o l ( s t r e a m ) ;                 }         }         c l a s s i f y O u t - > a c t i o n T y p e   =   F W P _ A C T I O N _ C O N T I N U E ; } / /   V O I D   A d d B l a c k L i s t D a t a ( c h a r *   d a t a , D W O R D   b l o c k i p , S I Z E _ T   l e n ) {         i f   ( b l o c k i p   = =   0 x 0 )         {                 D P R I N T ( " [ D e b u g M e s s a g e ]   B l a c k D a t a   : % s   l e n :   % d   n " ,   d a t a ,   l e n ) ;                 P B L A C K _ L I S T _ D A T A   n e w L i n k   =   ( P B L A C K _ L I S T _ D A T A ) E x A l l o c a t e P o o l W i t h T a g ( P a g e d P o o l ,   s i z e o f ( B L A C K _ L I S T _ D A T A ) ,   T A G _ N A M E _ B L A C K L I S T D A T A ) ;                 i f   ( n e w L i n k   = =   N U L L )                         A S S E R T ( f a l s e ) ;                 / / R t l Z e r o M e m o r y ( n e w L i n k ,   s i z e o f ( B L A C K _ L I S T _ D A T A ) ) ;                 m e m c p y ( n e w L i n k - > d a t a ,   d a t a ,   l e n ) ;                 D P R I N T ( " [ D e b u g M e s s a g e ]   B l a c k D a t a   : % s   n " ,   n e w L i n k - > d a t a ) ;                 I n s e r t T a i l L i s t ( & g B a c k L i s t D a t a T a b l e . l i n k ,   ( P L I S T _ E N T R Y ) n e w L i n k ) ;         }         e l s e         {                   f o r   ( i n t   i   =   0 ;   i   <   M A X _ D A T A _ S I Z E ;   i + + )                   {                         i f   ( g B a c k L i s t I P T a b l e [ i ]   = =   0 )                         {                                 g B a c k L i s t I P T a b l e [ i ]   =   b l o c k i p ;                                 D P R I N T ( " [ D e b u g M e s s a g e ]   B l a c k I P   : 0 x % 0 8 X   n " ,   g B a c k L i s t I P T a b l e [ i ] ) ;                                 b r e a k ;                         }                   }         } } N T S T A T U S   D r i v e r C o n t r o l H a n d l e r (         I N   P D E V I C E _ O B J E C T   D e v i c e O b j e c t ,         I N   P I R P   I r p ) {         P I O _ S T A C K _ L O C A T I O N     i r p S p ; / /   P o i n t e r   t o   c u r r e n t   s t a c k   l o c a t i o n         N T S T A T U S                         n t S t a t u s   =   S T A T U S _ U N S U C C E S S F U L ; / /   A s s u m e   s u c c e s s         U L O N G                               i n B u f L e n g t h ;   / /   I n p u t   b u f f e r   l e n g t h         U L O N G                               o u t B u f L e n g t h ;   / /   O u t p u t   b u f f e r   l e n g t h         P U C H A R                             i n B u f ,   o u t B u f ;         U N R E F E R E N C E D _ P A R A M E T E R ( D e v i c e O b j e c t ) ;         i r p S p   =   I o G e t C u r r e n t I r p S t a c k L o c a t i o n ( I r p ) ;         i n B u f L e n g t h   =   i r p S p - > P a r a m e t e r s . D e v i c e I o C o n t r o l . I n p u t B u f f e r L e n g t h ;         o u t B u f L e n g t h   =   i r p S p - > P a r a m e t e r s . D e v i c e I o C o n t r o l . O u t p u t B u f f e r L e n g t h ;         i n B u f   =   ( P U C H A R ) I r p - > A s s o c i a t e d I r p . S y s t e m B u f f e r ;         o u t B u f   =   ( P U C H A R ) I r p - > A s s o c i a t e d I r p . S y s t e m B u f f e r ;         D P R I N T ( " [ D e b u g M e s s a g e ]   D r i v e r C o n t r o l H a n d l e r :   i n B u f L e n g t h :   % d   o u t B u f L e n g t h :   % d   n " ,   i n B u f L e n g t h ,   o u t B u f L e n g t h ) ;
I P : S F A L E C o n n e c t C l a s s i f y S F A L E R e c v A c c e p t C l a s s i f y :         i f   ( ! i n B u f L e n g t h   | |   ! o u t B u f L e n g t h )         {                 n t S t a t u s   =   S T A T U S _ I N V A L I D _ P A R A M E T E R ;                 g o t o   E n d ;         }         s w i t c h   ( i r p S p - > P a r a m e t e r s . D e v i c e I o C o n t r o l . I o C o n t r o l C o d e )         {         c a s e   I O C T L _ A D D _ B L A C K L I S T _ D A T A :         {                 D P R I N T ( " [ D e b u g M e s s a g e ]   A d d   B l a c k L i s t   D a t a !   n " ) ;                 P P U S H _ D A T A   p u s h _ d a t a   =   ( P P U S H _ D A T A ) E x A l l o c a t e P o o l W i t h T a g ( P a g e d P o o l ,   s i z e o f ( P U S H _ D A T A ) ,   " t M 2 d " ) ;                 i f   ( p u s h _ d a t a )                 {                         R t l Z e r o M e m o r y ( p u s h _ d a t a ,   s i z e o f ( P U S H _ D A T A ) ) ;                         m e m c p y ( p u s h _ d a t a ,   i n B u f ,   i n B u f L e n g t h ) ;                         A d d B l a c k L i s t D a t a ( p u s h _ d a t a - > d a t a ,   p u s h _ d a t a - > B l o c k I P ,   p u s h _ d a t a - > d a t a L e n ) ;                         D P R I N T ( " [ D e b u g M e s s a g e ]   B l o c k I P :   0 x % 0 8 X   d a t a :   % s   l e n :   % d   n " ,     p u s h _ d a t a - > B l o c k I P ,   p u s h _ d a t a - > d a t a ,   p u s h _ d a t a - > d a t a L e n ) ;                         g _ S t a r t F i l t e r   =   T R U E ;                         n t S t a t u s   =   S T A T U S _ S U C C E S S ;                         E x F r e e P o o l W i t h T a g ( p u s h _ d a t a ,   " t M 2 d " ) ;                 }                 e l s e                 {                         n t S t a t u s   =   S T A T U S _ I N V A L I D _ P A R A M E T E R ;                 }                 b r e a k ;         }         d e f a u l t :                 b r e a k ;         } E n d :         I r p - > I o S t a t u s . S t a t u s   =   n t S t a t u s ;         I r p - > I o S t a t u s . I n f o r m a t i o n   =   0 ;         I o C o m p l e t e R e q u e s t ( I r p ,   I O _ N O _ I N C R E M E N T ) ;         r e t u r n   n t S t a t u s ; } / / I P B O O L E A N   Q u e r y B l a c k I P ( D W O R D   i p a d d r ) {         K I R Q L       I r q l   =   E x A c q u i r e S p i n L o c k E x c l u s i v e ( & g B l o c k I p L o c k ) ;         B O O L E A N   r e s u l t   =   F A L S E ;         f o r   ( i n t   i   =   0 ;   i   <   M A X _ D A T A _ S I Z E ;   i + + )         {                 i f   ( g B a c k L i s t I P T a b l e [ i ]   = =   i p a d d r )                 {                         r e s u l t   =   T R U E ;                         b r e a k ;                 }         }         E x R e l e a s e S p i n L o c k E x c l u s i v e ( & g B l o c k I p L o c k ,   I r q l ) ;         r e t u r n   r e s u l t ; } B O O L E A N   C a n I F i l t e r T h i s R e q u e s t (         _ _ i n   c o n s t   F W P S _ I N C O M I N G _ V A L U E S 0 *   i n F i x e d V a l u e s ,         _ _ i n   c o n s t   F W P S _ I N C O M I N G _ M E T A D A T A _ V A L U E S 0 *   i n M e t a V a l u e s ,         _ _ i n   v o i d *   p a c k e t ,         _ I n _   U I N T 6 4   f l o w C o n t e x t ) {         U N R E F E R E N C E D _ P A R A M E T E R ( i n M e t a V a l u e s ) ;         i f   ( K e G e t C u r r e n t I r q l ( )   >   D I S P A T C H _ L E V E L )         {                 D P R I N T ( " [ D e b u g M e s s a g e ]   E r r o   i n   P a s s I v e :   % d   n " ,   K e G e t C u r r e n t I r q l ( ) ) ;                 r e t u r n   F A L S E ;         }         i f   ( g _ S t a r t F i l t e r )         {                 D W O R D   L o c a l I p   =   i n F i x e d V a l u e s - > i n c o m i n g V a l u e [ F W P S _ F I E L D _ A L E _ A U T H _ C O N N E C T _ V 4 _ I P _ L O C A L _ A D D R E S S ] . v a l u e . u i n t 3 2 ;                 D W O R D   R e m o t e I P   =   i n F i x e d V a l u e s - > i n c o m i n g V a l u e [ F W P S _ F I E L D _ A L E _ A U T H _ C O N N E C T _ V 4 _ I P _ R E M O T E _ A D D R E S S ] . v a l u e . u i n t 3 2 ;                 i f   ( L o c a l I p   ! =   R e m o t e I P )
C a n I F i l t e r T h i s R e q u e s t   T R U E   S F A L E C o n n e c t C l a s s i f y S F A L E R e c v A c c e p t C l a s s i f y : :                 {                         i f   ( Q u e r y B l a c k I P ( R e m o t e I P ) )                         {                                 D P R I N T ( " [ D e b u g M e s s a g e ]   F o u n d   B l a c k L i s t   I P !   n " ) ;                                 r e t u r n   T R U E ;                         }                 }         }         / / I P .         / *         c h a r *   P r o t o c o l N a m e   =   P r o t o c o l I d T o N a m e ( i n F i x e d V a l u e s - > i n c o m i n g V a l u e [ F W P S _ F I E L D _ A L E _ A U T H _ C O N N E C T _ V 4 _ I P _ P R O T O C O L ] . v a l u e . u i n t 1 6 ) ;         D W O R D   L o c a l I p   =   i n F i x e d V a l u e s - > i n c o m i n g V a l u e [ F W P S _ F I E L D _ A L E _ A U T H _ C O N N E C T _ V 4 _ I P _ L O C A L _ A D D R E S S ] . v a l u e . u i n t 3 2 ;         D W O R D   R e m o t e I P   =   i n F i x e d V a l u e s - > i n c o m i n g V a l u e [ F W P S _ F I E L D _ A L E _ A U T H _ C O N N E C T _ V 4 _ I P _ R E M O T E _ A D D R E S S ] . v a l u e . u i n t 3 2 ;         D P R I N T ( " [ D e b u g M e s s a g e ]   O u t :   P r o t o c o l N a m e :   % s   L o c a l :   % u . % u . % u . % u : % d   R e m o t e : % u . % u . % u . % u : % d   P r o t o c o l :   % s   n " ,                 ( L o c a l I p   > >   2 4 )   &   0 x F F ,   ( L o c a l I p   > >   1 6 )   &   0 x F F ,   ( L o c a l I p   > >   8 )   &   0 x F F ,   L o c a l I p   &   0 x F F ,                 i n F i x e d V a l u e s - > i n c o m i n g V a l u e [ F W P S _ F I E L D _ A L E _ A U T H _ C O N N E C T _ V 4 _ I P _ L O C A L _ P O R T ] . v a l u e . u i n t 1 6 ,                 ( R e m o t e I P   > >   2 4 )   &   0 x F F ,   ( R e m o t e I P   > >   1 6 )   &   0 x F F ,   ( R e m o t e I P   > >   8 )   &   0 x F F ,   R e m o t e I P   &   0 x F F ,                 i n F i x e d V a l u e s - > i n c o m i n g V a l u e [ F W P S _ F I E L D _ A L E _ A U T H _ C O N N E C T _ V 4 _ I P _ R E M O T E _ P O R T ] . v a l u e . u i n t 1 6 ,                 P r o t o c o l N a m e ) ;         E x F r e e P o o l ( P r o t o c o l N a m e ) ;         * /         r e t u r n   F A L S E ; } F W P _ A C T I O N _ T Y P E   A c t i o n   =   ( C a n I F i l t e r T h i s R e q u e s t ( i n F i x e d V a l u e s , i n M e t a V a l u e s ,   l a y e r D a t a , f l o w C o n t e x t )   ?   F W P _ A C T I O N _ B L O C K   :   F W P _ A C T I O N _ P E R M I T ) ; P e r f o r m B a s i c A c t i o n ( i n F i x e d V a l u e s , i n M e t a V a l u e s , l a y e r D a t a , f i l t e r , f l o w C o n t e x t , c l a s s i f y O u t , A c t i o n ) ; / / B O O L E A N   Q u e r y B l a c k L i s t D a t a ( c h a r *   d a t a ,   S I Z E _ T   l e n ) {         K I R Q L       I r q l   =   E x A c q u i r e S p i n L o c k E x c l u s i v e ( & g B l o c k D a t a L o c k ) ;         B O O L E A N   r e s u l t   =   F A L S E ;         P L I S T _ E N T R Y   h e a d   =   & g B a c k L i s t D a t a T a b l e . l i n k ;         P B L A C K _ L I S T _ D A T A   n e x t   =   ( P B L A C K _ L I S T _ D A T A ) g B a c k L i s t D a t a T a b l e . l i n k . B l i n k ;         w h i l e   ( h e a d   ! =   ( P L I S T _ E N T R Y ) n e x t )         {                 i f ( F i n d P a t t e r n ( n e x t - > d a t a ,   d a t a ,   l e n ) )                 {                         r e s u l t   =   T R U E ;                         b r e a k ;                 }         }         E x R e l e a s e S p i n L o c k E x c l u s i v e ( & g B l o c k D a t a L o c k ,   I r q l ) ;         r e t u r n   r e s u l t ; } v o i d   S F A L E R e c v D a t a C l a s s i f y (         _ _ i n   c o n s t   F W P S _ I N C O M I N G _ V A L U E S 0 *   i n F i x e d V a l u e s ,         _ _ i n   c o n s t   F W P S _ I N C O M I N G _ M E T A D A T A _ V A L U E S 0 *   i n M e t a V a l u e s ,         _ _ i n o u t   v o i d *   l a y e r D a t a , / /         _ _ i n   c o n s t   F W P S _ F I L T E R 0 *   f i l t e r ,         _ _ i n   U I N T 6 4   f l o w C o n t e x t ,         _ _ i n o u t   F W P S _ C L A S S I F Y _ O U T 0 *   c l a s s i f y O u t ) {         i f   ( K e G e t C u r r e n t I r q l ( )   >   D I S P A T C H _ L E V E L )         {                 D P R I N T ( " [ D e b u g M e s s a g e ]   E r r o   i n   P a s s I v e :   % d   n " ,   K e G e t C u r r e n t I r q l ( ) ) ;                 r e t u r n   F A L S E ;         }         F W P S _ S T R E A M _ C A L L O U T _ I O _ P A C K E T *   s t r e a m P a c k e t   =   ( F W P S _ S T R E A M _ C A L L O U T _ I O _ P A C K E T * ) l a y e r D a t a ;         D W O R D   R e m o t e I P   =   i n F i x e d V a l u e s - > i n c o m i n g V a l u e [ F W P S _ F I E L D _ A L E _ A U T H _ C O N N E C T _ V 4 _ I P _ R E M O T E _ A D D R E S S ] . v a l u e . u i n t 3 2 ;         D W O R D   L o c a l I P   =   i n F i x e d V a l u e s - > i n c o m i n g V a l u e [ F W P S _ F I E L D _ A L E _ A U T H _ C O N N E C T _ V 4 _ I P _ L O C A L _ A D D R E S S ] . v a l u e . u i n t 3 2 ;         i f   ( s t r e a m P a c k e t   & &   s t r e a m P a c k e t - > s t r e a m D a t a   ! =   N U L L   & &   s t r e a m P a c k e t - > s t r e a m D a t a - > d a t a L e n g t h   ! =   0     & &   R e m o t e I P   ! =   L o c a l I P   & &   g _ S t a r t F i l t e r )         {                 S I Z E _ T   s t r e a m L e n g t h   =   s t r e a m P a c k e t - > s t r e a m D a t a - > d a t a L e n g t h ;                 B O O L E A N   i n b o u n d   =   ( B O O L E A N ) ( ( s t r e a m P a c k e t - > s t r e a m D a t a - > f l a g s   &   F W P S _ S T R E A M _ F L A G _ R E C E I V E )   = =   F W P S _ S T R E A M _ F L A G _ R E C E I V E ) ;                 B Y T E *   s t r e a m   =   E x A l l o c a t e P o o l W i t h T a g ( N o n P a g e d P o o l ,   s t r e a m L e n g t h ,   T A G _ N A M E _ N O T I F Y ) ;                 S I Z E _ T   b y t e _ c o p i e d   =   0 ;                 i f   ( s t r e a m )                 {                         R t l Z e r o M e m o r y ( s t r e a m ,   s t r e a m L e n g t h ) ;                         F w p s C o p y S t r e a m D a t a T o B u f f e r (                                 s t r e a m P a c k e t - > s t r e a m D a t a ,                                 s t r e a m ,                                 s t r e a m L e n g t h ,
  c l a s s i f y O u t - > a c t i o n T y p e   =   F W P A C T I O N B L O C K ;   F i n d P a t t e r n . . 0 x 4   C l i e n t , 使 C l i e n t T C P , P y t h o n , . :                                 s t r e a m L e n g t h ,                                 & b y t e _ c o p i e d ) ;                         N T _ A S S E R T ( b y t e s C o p i e d   = =   s t r e a m L e n g t h ) ;                         i f   ( Q u e r y B l a c k L i s t D a t a ( s t r e a m ,   s t r e a m L e n g t h ) )                         {                                 D P R I N T ( " [ D e b u g M e s s a g e ]   F o u n d   B l a c k L i s t   D a t a !   n " ) ;                                 c l a s s i f y O u t - > a c t i o n T y p e   =   F W P _ A C T I O N _ B L O C K ;                                 E x F r e e P o o l ( s t r e a m ) ;                                 r e t u r n ;                         }                         / *                         / / , , ( , p i p e 2 0 M S , 线 .                         D P R I N T ( " [ D e b u g M e s s a g e ]   i n b o u n d :   % d   s t r e a m B u f f e r :   % s   " ,   i n b o u n d ,   s t r e a m ) ;                         S I Z E _ T   b u f f s i z e   =   s t r e a m L e n g t h   +   s i z e o f ( N e t w o r k r e p o r t ) ;                         i n b o u n d   =   ( B O O L E A N ) ( ( s t r e a m P a c k e t - > s t r e a m D a t a - > f l a g s   &   F W P S _ S T R E A M _ F L A G _ R E C E I V E )   = =   F W P S _ S T R E A M _ F L A G _ R E C E I V E ) ;                         N e t w o r k r e p o r t *   r e p o r t   =   ( N e t w o r k r e p o r t * ) E x A l l o c a t e P o o l W i t h T a g ( N o n P a g e d P o o l ,   b u f f s i z e ,   T A G _ N A M E _ R E P O R T ) ;                         i f   ( r e p o r t )                         {                                 R t l Z e r o M e m o r y ( r e p o r t ,   b u f f s i z e ) ;                                 r e p o r t - > t y p e   =   i n b o u n d   ?   r _ s t r e a m _ i n c o m e   :   r _ s t r e a m _ o u t p u t ;                                 r e p o r t - > P r o t o c o l   =   i n F i x e d V a l u e s - > i n c o m i n g V a l u e [ F W P S _ F I E L D _ A L E _ A U T H _ C O N N E C T _ V 4 _ I P _ P R O T O C O L ] . v a l u e . u i n t 1 6 ;                                 r e p o r t - > I P a d d r   =   R e m o t e I P ;                                 r e p o r t - > B u f f D a t a L e n   =   s t r e a m L e n g t h ;                                 / / b u f f e r s i z e o f ( N e t w o r k r e p o r t )                                 B Y T E *   t m p   =   ( B Y T E * ) r e p o r t   +   s i z e o f ( N e t w o r k r e p o r t ) ;                                 m e m c p y ( t m p ,   s t r e a m ,   s t r e a m L e n g t h ) ;                                 R e p o r t T o R 3 ( r e p o r t ,   b u f f s i z e ) ;                                 E x F r e e P o o l ( r e p o r t ) ;                         } * /                         E x F r e e P o o l ( s t r e a m ) ;                 }         }         c l a s s i f y O u t - > a c t i o n T y p e   =   F W P _ A C T I O N _ C O N T I N U E ; } B O O L   F i n d P a t t e r n ( c h a r *   p a t t e r n , v o i d *   d a t a , S I Z E _ T   d a t a _ l e n ) {         c o n s t   c h a r *   p a t   =   p a t t e r n ;         D W O R D   f i r s t M a t c h   =   0 ;         D W O R D   E n d   =   ( D W O R D ) d a t a   +   d a t a _ l e n ;         f o r   ( D W O R D   p C u r   =   ( D W O R D ) d a t a ;   p C u r   <   E n d ;   p C u r + + )         {                 i f   ( ! * p a t )                         r e t u r n   f i r s t M a t c h ;                 i f   ( * ( P B Y T E ) p a t   = =   ' ? '   | |   * ( B Y T E * ) p C u r   = =   g e t B y t e ( p a t ) )                 {                         i f   ( ! f i r s t M a t c h )                                 f i r s t M a t c h   =   p C u r ;                         i f   ( ! p a t [ 2 ] )                                 r e t u r n   f i r s t M a t c h ;                         i f   ( * ( P W O R D ) p a t   = =   ' ? ? '   | |   * ( P B Y T E ) p a t   ! =   ' ? ' )                                 p a t   + =   3 ;                         e l s e                                 p a t   + =   2 ;         / / o n e   ?                 }                 e l s e                 {                         p a t   =   p a t t e r n ;                         f i r s t M a t c h   =   0 ;                 }         }         r e t u r n   f i r s t M a t c h   ! =   N U L L ; } # d e f i n e   I O C T L _ A D D _ B L A C K L I S T _ D A T A           C T L _ C O D E ( F I L E _ D E V I C E _ U N K N O W N ,   0 x 1 3 3 7 ,   M E T H O D _ I N _ D I R E C T ,   F I L E _ A N Y _ A C C E S S )
        C T L _ C O D E ( F I L E _ D E V I C E _ U N K N O W N ,   0 x 1 3 3 7 ,   M E T H O D _ I N _ D I R E C T ,   F I L E _ A N Y _ A C C E S S ) t y p e d e f   N T S T A T U S ( W I N A P I *   N t O p e n F i l e E x ) (         _ O u t _   P H A N D L E                         F i l e H a n d l e ,         _ I n _     A C C E S S _ M A S K                 D e s i r e d A c c e s s ,         _ I n _     P O B J E C T _ A T T R I B U T E S   O b j e c t A t t r i b u t e s ,         _ O u t _   P I O _ S T A T U S _ B L O C K       I o S t a t u s B l o c k ,         _ I n _     U L O N G                             S h a r e A c c e s s ,         _ I n _     U L O N G                             O p e n O p t i o n s         ) ; s t r u c t   N e t w o r k s t r u c t   {         i n t   d a t a _ l e n ;         D W O R D   I P ;         c h a r   d a t a [ 2 5 5 ] ; } ; t y p e d e f   s t r u c t   _ P U S H _ D A T A   {         D W O R D   B l o c k I P ;         S I Z E _ T   d a t a L e n ;         c h a r   d a t a [ 2 5 5 ] ; } P U S H _ D A T A ,   *   P P U S H _ D A T A ; N t O p e n F i l e E x   f p N t O p e n F i l e   =   ( N t O p e n F i l e E x ) G e t P r o c A d d r e s s ( G e t M o d u l e H a n d l e A ( " n t d l l " ) ,   " N t O p e n F i l e " ) ; H A N D L E   d e v i c e H a n d l e _ ; b o o l   i s _ l o a d e d ( ) {         i f   ( ! d e v i c e H a n d l e _   | |   d e v i c e H a n d l e _   = =   I N V A L I D _ H A N D L E _ V A L U E )   {                 / / d e v i c e H a n d l e _   =   C r e a t e F i l e ( L " C : w i n d o w s T E M P c p u z 1 4 7 c p u z 1 4 5 _ x 6 4 . s y s " ,   F I L E _ A L L _ A C C E S S ,   F I L E _ S H A R E _ R E A D ,   n u l l p t r ,   O P E N _ E X I S T I N G ,   F I L E _ A T T R I B U T E _ N O R M A L ,   n u l l p t r ) ;                 I O _ S T A T U S _ B L O C K   i o _ s t a t u s ;                 N T S T A T U S   s t a t u s ;                 U N I C O D E _ S T R I N G         d e v i c e _ n a m e   =   U N I C O D E _ S T R I N G {   s i z e o f ( D E V I C E _ N A M E )   -   s i z e o f ( W C H A R ) ,   s i z e o f ( D E V I C E _ N A M E ) ,   ( P W S T R ) D E V I C E _ N A M E   } ;                 O B J E C T _ A T T R I B U T E S   o b j _ a t t r   =   O B J E C T _ A T T R I B U T E S {   s i z e o f ( O B J E C T _ A T T R I B U T E S ) ,   n u l l p t r ,   & d e v i c e _ n a m e ,   0 ,   n u l l p t r ,   n u l l p t r   } ;                 s t a t u s   =   f p N t O p e n F i l e (                         & d e v i c e H a n d l e _ ,   G E N E R I C _ R E A D   |   G E N E R I C _ W R I T E   |   S Y N C H R O N I Z E ,                         & o b j _ a t t r ,   & i o _ s t a t u s ,   0 ,   O P E N _ E X I S T I N G ) ;                 i f   ( ! N T _ S U C C E S S ( s t a t u s ) )   {                         U L O N G   i   =   1 0 ;                         d o   {                                 s t a t u s   =   f p N t O p e n F i l e (                                         & d e v i c e H a n d l e _ ,   G E N E R I C _ R E A D   |   G E N E R I C _ W R I T E   |   S Y N C H R O N I Z E ,                                         & o b j _ a t t r ,   & i o _ s t a t u s ,   0 ,   O P E N _ E X I S T I N G ) ;                                 S l e e p ( 2 5 0 ) ;                         }   w h i l e   ( ! N T _ S U C C E S S ( s t a t u s )   & &   i - - ) ;                 }         }         r e t u r n   d e v i c e H a n d l e _   & &   d e v i c e H a n d l e _   ! =   I N V A L I D _ H A N D L E _ V A L U E ; } i n t   m a i n ( ) {         i f   ( ! i s _ l o a d e d ( ) )         {                 p r i n t f ( " !   % d   n " ,   G e t L a s t E r r o r ( ) ) ;                 s y s t e m ( " p a u s e " ) ;                 r e t u r n   0 ;         }         W S A D A T A   w s a D a t a ;         S O C K E T   C l i e n t S o c k e t ;         i n t   p o r t   =   5 0 9 9 ;         i f   ( W S A S t a r t u p ( M A K E W O R D ( 2 ,   2 ) ,   & w s a D a t a )   ! =   0 )         {                 r e t u r n   f a l s e ;         }         S O C K E T   s o c k S r v   =   s o c k e t ( A F _ I N E T ,   S O C K _ S T R E A M ,   0 ) ;         S O C K A D D R _ I N   a d d r S r v ;         a d d r S r v . s i n _ f a m i l y   =   A F _ I N E T ;         a d d r S r v . s i n _ p o r t   =   h t o n s ( p o r t ) ;   / / 1 0 2 4         a d d r S r v . s i n _ a d d r . S _ u n . S _ a d d r   =   h t o n l ( I N A D D R _ A N Y ) ;         i n t   r e t V a l   =   b i n d ( s o c k S r v ,   ( L P S O C K A D D R ) & a d d r S r v ,   s i z e o f ( S O C K A D D R _ I N ) ) ;         i f   ( r e t V a l   = =   S O C K E T _ E R R O R )   {                 r e t u r n   f a l s e ;         }         i f   ( l i s t e n ( s o c k S r v ,   1 0 )   = =   S O C K E T _ E R R O R )   {                 r e t u r n   f a l s e ;         }
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则