
    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BaseHTTPRequestHandler)DictAny)DriverPluginz4%(asctime)s - %(name)s - %(levelname)s - %(message)s)levelformatc                   <    \ rS rSrSrS rS rS rS rS r	S r
S	rg
)HTTPHoneypotHandler   u   HTTP 蜜罐请求处理器c                 &    U R                  S5        g )NGET_handle_requestselfs    drivers/http_honeypot/driver.pydo_GETHTTPHoneypotHandler.do_GET       U#    c                 &    U R                  S5        g )NPOSTr   r   s    r   do_POSTHTTPHoneypotHandler.do_POST   s    V$r   c                 &    U R                  S5        g )NPUTr   r   s    r   do_PUTHTTPHoneypotHandler.do_PUT   r   r   c                 &    U R                  S5        g )NDELETEr   r   s    r   	do_DELETEHTTPHoneypotHandler.do_DELETE   s    X&r   c           	      H   [         R                  SU SU R                   SU R                  S    35        U R	                  S5        U R                  SS5        U R                  5         SU R                   S	3nU R                  R                  UR                  S
5      5        g)u   处理请求并记录日志z	Received z request for z from r      zContent-typeztext/html; charset=utf-8uB   <html><body><h1>欢迎访问蜜罐!</h1><p>您请求的路径是: z</p></body></html>zutf-8N)
loggerinfopathclient_addresssend_responsesend_headerend_headerswfilewriteencode)r   methodresponse_contents      r   r   #HTTPHoneypotHandler._handle_request   s     	ix}TYYKvdFYFYZ[F\E]^_ 	3)CD_`d`i`i_jj|}

)009:r   c                     [         R                  U R                  5       < SU R                  5       < SX-  < S35        g )Nz - - [z] 
)r&   r'   address_stringlog_date_time_string)r   r	   argss      r   log_messageHTTPHoneypotHandler.log_message+   s+    $*=*=*?AZAZA\^d^klmr    N)__name__
__module____qualname____firstlineno____doc__r   r   r   r"   r   r8   __static_attributes__r:   r   r   r   r      s$    $$%$';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)HTTPHoneypotDriver/   u   
HTTP 蜜罐驱动插件实现
c                      0 U l         0 U l        g )Nenvironmentsserversr   s    r   __init__HTTPHoneypotDriver.__init__4   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   创建HTTP蜜罐环境	http_env_created)idconfigstatusz"Created HTTP honeypot environment z with config )uuiduuid4hexrF   r&   r'   )r   rJ   env_ids      r   create_environment%HTTPHoneypotDriver.create_environment8   sY     TZZ\--./ %
&!
 	8j\Z[r   rU   c           	      L   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      n[        XE4[        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 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   启动HTTP蜜罐环境Environment 
 not foundFrQ   runningz is already runningrP   hostz0.0.0.0porti  sslNcertfilekeyfileT)r_   r`   server_sidezSSL enabled for environment z*Invalid SSL configuration for environment z. Starting without SSL.)targetdaemon)serverthreadz"Started HTTP honeypot environment z on :z (HTTPS)z (HTTP)z*Failed to start HTTP honeypot environment : )rF   getr&   errorwarningr   r   osr(   existsr^   wrap_socketsocketr'   	threadingThreadserve_foreverstartrG   	Exception)r   rU   envrP   r\   r]   
ssl_configrd   r_   r`   server_threades               r   start_environment$HTTPHoneypotDriver.start_environmentD   s   ##F+LL<xz:;x=I%NN\&1DEF$	]F::fi0D::fd+DE40J  .ABF %>>*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<VHDaPTvdnV`t}U~  A 	LLEfXRPQsST	s   !FG4 4
H#>H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   停止HTTP蜜罐环境rY   rZ   FrQ   r[   z is not runningrd   stoppedz"Stopped HTTP honeypot environment Tz)Failed to stop HTTP honeypot environment rg   N)
rF   rh   r&   ri   rj   rG   shutdownserver_closer'   rs   )r   rU   rt   server_inford   rw   s         r   stop_environment#HTTPHoneypotDriver.stop_environmentu   s    ##F+LL<xz:;x=I%NN\&AB	,,**62K$X.!##%LL(%CMKK<VHEF 	LLDVHBqcRS	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   删除HTTP蜜罐环境rY   rZ   FrQ   r[   z"Deleted HTTP honeypot environment T)rF   rh   r&   ri   r   r'   r   rU   rt   s      r   delete_environment%HTTPHoneypotDriver.delete_environment   st    ##F+LL<xz:; x=I%!!&)f%8ABr   c                 R    U R                   R                  U5      nU(       d  gUS   $ )u   获取环境状态	not_foundrQ   )rF   rh   r   s      r   get_environment_status)HTTPHoneypotDriver.get_environment_status   s(    ##F+8}r   c                     U R                   $ )u   列出所有环境)rF   r   s    r   list_environments$HTTPHoneypotDriver.list_environments   s       r   rE   N)r;   r<   r=   r>   r?   rH   r   strr   rV   boolrx   r   r   r   r   r@   r:   r   r   rB   rB   /   s    
T#s(^ 
 
/ / /bs t 4  S S !4S> !r   rB   )ro   timeloggingr^   rk   rR   http.serverr   r   typingr   r   pluginsr   basicConfigINFO	getLoggerr;   r&   r   rB   r:   r   r   <module>r      se       
 	  :      ',,/e f			8	$n0 n@x! x!r   