
    h                         S SK r S SKrS SKrS SKrS SKrS SKrS SKJrJr  S SK	J
r
Jr  S SKJr  \R                  " \R                  SS9  \R                   " \5      r " S S\5      r " S	 S
\5      rg)    N)
HTTPServerSimpleHTTPRequestHandler)DictAny)DriverPluginz4%(asctime)s - %(name)s - %(levelname)s - %(message)s)levelformatc                   :   ^  \ rS rSrSrSS.U 4S jjrS rSrU =r$ )StaticFileHTTPRequestHandler   u;   
自定义请求处理器，用于提供静态文件服务
N)	directoryc                b   > Uc  [         R                  " 5       nXl        [        TU ]  " U0 UD6  g N)osgetcwdr   super__init__)selfr   argskwargs	__class__s       &drivers/static_file_honeypot/driver.pyr   %StaticFileHTTPRequestHandler.__init__   s+    		I"$)&)    c                     [         R                  U R                  5       < SU R                  5       < SX-  < S35        g )Nz - - [z] 
)loggerinfoaddress_stringlog_date_time_string)r   r	   r   s      r   log_message(StaticFileHTTPRequestHandler.log_message   s+    $*=*=*?AZAZA\^d^klmr   )	__name__
__module____qualname____firstlineno____doc__r   r!   __static_attributes____classcell__)r   s   @r   r   r      s#     )- * *n nr   r   c                       \ rS rSrSrS rS\\\4   S\4S jr	S\S\
4S jrS\S\
4S	 jrS\S\
4S
 jrS\S\4S jrS\\\4   4S jrSrg)StaticFileHoneypotDriver   u&   
静态文件蜜罐驱动插件实现
c                      0 U l         0 U l        g r   environmentsserversr   s    r   r   !StaticFileHoneypotDriver.__init__$   s    r   
env_configreturnc                     S[         R                  " 5       R                   3nUUSS.U R                  U'   [        R                  SU SU 35        U$ )u   创建静态文件蜜罐环境static_env_created)idconfigstatusz)Created Static File Honeypot environment z with config )uuiduuid4hexr/   r   r   )r   r3   env_ids      r   create_environment+StaticFileHoneypotDriver.create_environment(   s[     tzz|//01 %
&!
 	?x}U_T`abr   r>   c                 ~  ^ U R                   R                  U5      nU(       d  [        R                  SU S35        gUS   S:X  a  [        R	                  SU S35        g US   nUR                  SS	5      nUR                  S
S5      nUR                  SS5      mUR                  SS5      nU4S jn[        XE4U5      nU(       a  UR                  S5      n	UR                  S5      n
U	(       a  U
(       a  [        R                  R                  U	5      (       ac  [        R                  R                  U
5      (       a?  [        R                  " UR                  U	U
SS9Ul        [        R                  SU 35        O[        R	                  SU S35        [        R                  " UR                  SS9nUR!                  5         UUS.U R"                  U'   SUS'   [        R                  SU SU SU ST SU(       a  SOS  3
5        g! [$         a%  n[        R                  S!U S"U 35         SnAgSnAff = f)#u   启动静态文件蜜罐环境Environment 
 not foundFr:   runningz is already runningr9   hostz0.0.0.0porti  static_root.sslNc                     > [        U ST0UD6$ )Nr   )r   )r   r   rG   s     r   <lambda><StaticFileHoneypotDriver.start_environment.<locals>.<lambda>H   s    4PRV4xbm4xqw4xr   certfilekeyfileT)rM   rN   server_sidezSSL enabled for environment z*Invalid SSL configuration for environment z. Starting without SSL.)targetdaemon)serverthreadz)Started Static File Honeypot environment z on :z serving files from ''z (HTTPS)z (HTTP)z1Failed to start Static File Honeypot environment : )r/   getr   errorwarningr   r   pathexistsrI   wrap_socketsocketr   	threadingThreadserve_foreverstartr0   	Exception)r   r>   envr9   rE   rF   
ssl_confighandler_classrR   rM   rN   server_threaderG   s                @r   start_environment*StaticFileHoneypotDriver.start_environment4   s%   ##F+LL<xz:;x=I%NN\&1DEF)	]F::fi0D::fd+D **]C8KE40J yM  m<F %>>*5$..3BGGNN8,D,DX_I`I`$'OOFMM<D;B?C%EFM KK">vh GHNN%OPVxWn#op%,,F4H4HQUVM! !'$DLL 
 &CMKKCF84PTvUVW[V\\qr}q~~  OY  AK  _h  @i  j  k 	LLLVHTVWXVYZ[	s   "F*H 
H<H77H<c                 
   U R                   R                  U5      nU(       d  [        R                  SU S35        gUS   S:w  a  [        R	                  SU S35        g U R
                  R                  U5      nU(       a2  US   nUR                  5         UR                  5         U R
                  U	 SUS'   [        R                  S	U 35        g
! [         a%  n[        R                  SU SU 35         SnAgSnAff = f)u   停止静态文件蜜罐环境rB   rC   Fr:   rD   z is not runningrR   stoppedz)Stopped Static File Honeypot environment Tz0Failed to stop Static File Honeypot environment rV   N)
r/   rW   r   rX   rY   r0   shutdownserver_closer   rb   )r   r>   rc   server_inforR   rg   s         r   stop_environment)StaticFileHoneypotDriver.stop_environmentj   s    ##F+LL<xz:;x=I%NN\&AB	,,**62K$X.!##%LL(%CMKKCF8LM 	LLKF8SUVWUXYZ	s   !A1C 
DC==Dc                     U R                   R                  U5      nU(       d  [        R                  SU S35        gUS   S:X  a  U R	                  U5        U R                   U	 [        R                  SU 35        g)u   删除静态文件蜜罐环境rB   rC   Fr:   rD   z)Deleted Static File Honeypot environment T)r/   rW   r   rX   ro   r   r   r>   rc   s      r   delete_environment+StaticFileHoneypotDriver.delete_environment   st    ##F+LL<xz:; x=I%!!&)f%?xHIr   c                 R    U R                   R                  U5      nU(       d  gUS   $ )u   获取环境状态	not_foundr:   )r/   rW   rr   s      r   get_environment_status/StaticFileHoneypotDriver.get_environment_status   s(    ##F+8}r   c                     U R                   $ )u   列出所有环境)r/   r1   s    r   list_environments*StaticFileHoneypotDriver.list_environments   s       r   r.   N)r#   r$   r%   r&   r'   r   r   strr   r?   boolrh   ro   rs   rw   rz   r(    r   r   r+   r+      s    
T#s(^ 
 
4 4 4ls t 4  S S !4S> !r   r+   )r^   timeloggingrI   r   r;   http.serverr   r   typingr   r   pluginsr   basicConfigINFO	getLoggerr#   r   r   r+   r~   r   r   <module>r      sd       
 	  <      ',,/e f			8	$n#; n }!| }!r   