mò "á¸Ec@s1dkZdkZdkZdkZdkZdkZdkZdkZdkZdei fd„ƒYZ dei fd„ƒYZ de fd„ƒYZ d„Zedjo~eeiƒd jo!d eid GHeid ƒnd eijod Zeiid ƒnd Zeiid ƒeiiƒdkZzeidƒeƒZHWdeidƒXe d ƒZeeiƒd jo€eoIe eeid eieidƒfƒZdkZeieeƒqe eeid eieidƒfƒZn e eƒZee_ ei!ƒndS(Nt stdin_channelcBs#tZd„Zd„Zd„ZRS(NcCsm|idƒ}|p.dGH|iiƒy|iƒWqDqDXntidd|ƒ}|ii|ƒdS(Nis closed.s s (tselftrecvtdatat sock_channeltclosetregsubtgsubtpush(RR((t</data/zmath/zope/lib/python/ZServer/medusa/monitor_client.pyt handle_reads cCsdS(Ni((R((R twritablescGsdS(N((Rtignore((R tlog!s(t__name__t __module__R R R (((R Rs tmonitor_clientcBs>tZdeid„Zd„Zd„Zd„Zd„ZRS( NtiWcCsXtii|ƒ|i|tiƒd|_|i |ƒd|_ d|_ ||_ dS(Ns iR(tasynchatt async_chatt__init__Rt create_sockett socket_typetsockett SOCK_STREAMt terminatortconnecttaddrt sent_autht timestamptpassword(RRRR((R R%s    cCs?|ip|i||_ntii|ƒtiiƒdS(N(RRRRtsyststdouttwritetflush(RR((R tcollect_incoming_data.s cCs=|ip.|it|i|iƒdƒd|_nHdS(Ns i(RRRt hex_digestRR(R((R tfound_terminator5s ! cCstd„tiiƒƒdS(NcCs |iƒS(N(txR(R&((R t?s(tmaptasyncoret socket_maptvalues(R((R t handle_close<scGsdS(N((RR ((R R As(RiW( RRRtAF_INETRR#R%R,R (((R R$s    tencrypted_monitor_clientcBs)tZdZd„Zd„Zd„ZRS(s+Wrap push() and recv() with a stream ciphercCs(|i|ƒ|_|i|ƒ|_dS(N(tciphertnewtkeyRtoutgoingtincoming(RR/R1((R t init_cipherGscCsti||ii|ƒƒS(N(RRRR2tencryptR(RR((R RKscCs5ti||ƒ}|o|ii|ƒSn|SdS(N(RRRt block_sizeRR3tdecrypt(RR6R((R ROs(RRt__doc__R4RR(((R R.Ds   cCsDtiƒ}|i|ƒtitd„td|iƒƒƒdƒS(NcCstt|ƒƒdS(Ni(thextordR&(R&((R R'ZsR( tmd5tmtupdatetststringtjoinR(tNonetdigest(R>R<((R R$Vs  $t__main__isUsage: %s host portis-esEnter Password: s stty -echos stty echoi("R)RRRR?RtosR;ttimetfile_dispatcherRRRR.R$RtlentargvtexitR5tremovetstderrR!R"tsystemt raw_inputtptstdintatoitclienttsapphireR4Rtloop(RR)RR$RRRR5RQR.RRRERNRR;RDROR?((R t?sN                 , 0