Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
wlanpi-profiler / opt / wlanpi-profiler / lib / python3.7 / site-packages / scapy / __pycache__ / automaton.cpython-37.pyc
Size: Mime:
B

^jа ë%ã@s|dZddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlm
Z
ddlmZddlmZddlmZmZddlmZddlmZdd	lmZdd
lmZddlmmZGdd„de ƒZ!d
d„Z"Gdd„de!ƒZ#Gdd„dƒZ$Gdd„dƒZ%Gdd„dƒZ&Gdd„dƒZ'Gdd„dee!ƒZ(Gdd„dƒZ)Gdd„de*ƒZ+Gdd „d e ,e+¡ƒZ-dS)!zn
Automata with states, transitions and actions.

TODO:
    - add documentation for ioevent, as_supersocket...
éN)Údeque)Úconf)Údo_graph)Úlog_runtimeÚwarning)Ú
PacketList)ÚMTU)ÚSuperSocket)ÚWINDOWSc@sJeZdZer.dd„Zdd„Zdd„Zdd„Znd	d„Zd
d„Zdd
„Z	dS)ÚSelectableObjectcCs"tjj ddddt ¡¡|_dS)NrzSelectableObject %s)ÚctypesÚwindllÚkernel32ZCreateEventAÚrandomÚ_fd)Úself©rú/build/wlanpi-profiler-8o1rr4/wlanpi-profiler-1.0.9/debian/wlanpi-profiler/opt/wlanpi-profiler/lib/python3.7/site-packages/scapy/automaton.pyÚ__init__(szSelectableObject.__init__cCs*tjj t |j¡¡dkr&tt ¡ƒdS)Nr)rr
rZ
PulseEventÚc_void_prrÚFormatError)rrrrÚcall_release.szSelectableObject.call_releasecCs6|jr2tjj t |j¡¡dkr2tt ¡ƒd|_dS)Nr)rrr
rZCloseHandlerrr)rrrrÚ	_close_fd3szSelectableObject._close_fdcCst|dƒr| ¡dS)Nr)Úhasattrr)rrrrÚ__del__9s
zSelectableObject.__del__cCsdS)Nr)rrrrr=scCsdS)Nr)rrrrÚclose@szSelectableObject.closecCsdS)NFr)rrrrÚ
check_recvCszSelectableObject.check_recvN)
Ú__name__Ú
__module__Ú__qualname__r
rrrrrrrrrrr&s
rcCs6tst |gg|¡dSg}g}g}xZt|ƒD]N}t|ddƒrJ| |¡q.t|tƒrt| ¡rh| |¡q|| |¡q.tdƒ‚q.W|rž| 	t |gg|¡d¡|r2t
|p¬ddƒ}t|ƒdkràtj
j t |d ¡¡|¡}n0tj
j t|ƒtjt|ƒdd„|DƒŽd|¡}|d	kr2|d
kr2| ||¡|S)zð
    Select SelectableObject objects. Same than:
    ``select.select(inputs, [], [], remain)``
    But also works on Windows, only on SelectableObject.

    :param inputs: objects to process
    :param remain: timeout. If 0, return [].
    rZ__selectable_force_select__Fz/Invalid type: %s (must extend SelectableObject)ièécSsg|]}| ¡‘qSr)Úfileno)Ú.0Úxrrrú
<listcomp>nsz"select_objects.<locals>.<listcomp>lÿÿi)r
ÚselectÚlistÚgetattrÚappendÚ
isinstancerrÚ	TypeErrorÚextendÚintÚlenrr
rZWaitForSingleObjectrr!ZWaitForMultipleObjects)ÚinputsÚremainZnativesÚeventsÚresultsÚiZremainmsÚresrrrÚselect_objectsGs>	

r4c@sreZdZdd„Zdd„Zdd„Zdd„Zd	d
„Zdd„Zddd„Z	ddd„Z
dd„Zdd„Ze
ejfdd„ƒZdS)Ú
ObjectPipecCs,d|_t ¡\|_|_tƒ|_t |¡dS)NF)	Ú_closedÚosÚpipeÚ_ObjectPipe__rdÚ_ObjectPipe__wrrÚ_ObjectPipe__queuerr)rrrrryszObjectPipe.__init__cCstr
|jS|jSdS)N)r
rr9)rrrrr!szObjectPipe.filenocCs&|j |¡t |jd¡| ¡dS)NóX)r;r(r7Úwriter:r)rÚobjrrrÚsend…szObjectPipe.sendcCs| |¡dS)N)r?)rr>rrrr=ŠszObjectPipe.writecCsdS)Nr)rrrrÚflushszObjectPipe.flushcCs
t|jƒS)N)Úboolr;)rrrrrszObjectPipe.check_recvrcCs4|jr| ¡r|j ¡SdSt |jd¡|j ¡S)Nr )r6rr;Úpopleftr7Úreadr9)rÚnrrrÚrecv“s
zObjectPipe.recvcCs
| |¡S)N)rE)rrDrrrrC›szObjectPipe.readcCs>|js:d|_t |j¡t |j¡|j ¡tr:| ¡dS)NT)	r6r7rr9r:r;Úclearr
r)rrrrržs
zObjectPipe.closecCs| ¡dS)N)r)rrrrr§szObjectPipe.__del__cCs8g}x|D]}|jr
| |¡q
W|r.|dfSt||ƒS)N)Úclosedr(r4)Úsocketsr/r1Úsrrrr%ªs
zObjectPipe.selectN)r)r)rrrrr!r?r=r@rrErCrrÚstaticmethodrÚrecv_poll_rater%rrrrr5xs

	r5c@seZdZdd„Zdd„ZdS)ÚMessagecKs|j |¡dS)N)Ú__dict__Úupdate)rÚargsrrrr·szMessage.__init__cCs dd dd„t |j¡Dƒ¡S)Nz<Message %s>ú css(|] \}}| d¡sd||fVqdS)Ú_z%s=%rN)Ú
startswith)r"ÚkÚvrrrú	<genexpr>»sz#Message.__repr__.<locals>.<genexpr>)ÚjoinÚsixÚ	iteritemsrM)rrrrÚ__repr__ºszMessage.__repr__N)rrrrrYrrrrrL¶srLc@sDeZdZdd„Zdd„Zdd„Zdd„Zd	d
„Zdd„Zd
d„Z	dS)Ú_instance_statecCs |j|_|j|_|jj|j_dS)N)Ú__self__Ú__func__Ú	__class__)rÚinstancerrrrÁsz_instance_state.__init__cCst|j|ƒS)N)r'r\)rÚattrrrrÚ__getattr__Æsz_instance_state.__getattr__cOs|j|jf|ž|ŽS)N)r\r[)rrOÚkargsrrrÚ__call__Ész_instance_state.__call__cCs|j |j¡S)N)r[Úadd_breakpointsr\)rrrrÚbreaksÌsz_instance_state.breakscCs|j |j¡S)N)r[Úadd_interception_pointsr\)rrrrÚ
interceptsÏsz_instance_state.interceptscCs|j |j¡S)N)r[Úremove_breakpointsr\)rrrrÚunbreaksÒsz_instance_state.unbreakscCs|j |j¡S)N)r[Úremove_interception_pointsr\)rrrrÚuninterceptsÕsz_instance_state.uninterceptsN)
rrrrr`rbrdrfrhrjrrrrrZÀsrZc@s†eZdZdZdZdZdZdZdZGdd„de	ƒZ
edd
d„ƒZeddd
„ƒZ
eddd„ƒZeddd„ƒZeddd„ƒZedd„ƒZdS)ÚATMTÚStateÚActionÚ	ConditionzReceive conditionzTimeout conditionz	I/O eventc@s,eZdZdd„Zdd„Zdd„Zdd„Zd	S)
zATMT.NewStateRequestedcOs^||_|j|_|j|_|j|_|j|_|j	|_
t |d|j¡||_
||_||_| ¡dS)NzRequest state [%s])ÚfuncÚ
atmt_stateÚstateÚatmt_initialÚinitialÚ
atmt_errorÚerrorÚ	atmt_stopÚstopÚ
atmt_finalÚfinalÚ	ExceptionrÚ	automatonrOraÚaction_parameters)rZ
state_funcr{rOrarrrræszATMT.NewStateRequested.__init__cOs||_||_|S)N)Úaction_argsÚaction_kargs)rrOrarrrr|ósz(ATMT.NewStateRequested.action_parameterscCs|j|jf|jž|jŽS)N)ror{rOra)rrrrÚrunøszATMT.NewStateRequested.runcCs
d|jS)NzNewStateRequested(%s))rq)rrrrrYûszATMT.NewStateRequested.__repr__N)rrrrr|rrYrrrrÚNewStateRequestedås
r€rcs||f‡‡fdd„	}|S)Ncsrtjˆ_ˆjˆ_|ˆ_|ˆ_ˆˆ_ˆˆ_‡fdd„}dˆj|_tj|_ˆj|_||_||_ˆ|_ˆ|_ˆ|_	|S)Ncstjˆ|f|ž|ŽS)N)rkr€)rrOra)ÚfrrÚ
state_wrappersz/ATMT.state.<locals>.deco.<locals>.state_wrapperz
%s_wrapper)
rkÚSTATEÚ	atmt_typerrprrrxrvrtÚ
atmt_origfunc)rrsryr‚)rurw)rrÚdecos zATMT.state.<locals>.decor)rsryrwrur†r)rurwrrqþsz
ATMT.statecs|f‡fdd„	}|S)Ncs(t|dƒsi|_tj|_ˆ|j|j<|S)Nr„)rÚ	atmt_condrkÚACTIONr„Ú
atmt_condname)rÚcond)Úpriorrr†s

zATMT.action.<locals>.decor)rŠr‹r†r)r‹rÚactionszATMT.actioncs|f‡fdd„	}|S)Ncs"tj|_|j|_|j|_ˆ|_|S)N)rkÚ	CONDITIONr„rprr‰Ú	atmt_prio)rrq)r‹rrr†"s
zATMT.condition.<locals>.decor)rqr‹r†r)r‹rÚ	condition szATMT.conditioncs|f‡fdd„	}|S)Ncs"tj|_|j|_|j|_ˆ|_|S)N)rkÚRECVr„rprr‰rŽ)rrq)r‹rrr†,s
z$ATMT.receive_condition.<locals>.decor)rqr‹r†r)r‹rÚreceive_condition*szATMT.receive_conditionNcs|f‡‡‡fdd„	}|S)Ncs.tj|_|j|_|j|_ˆ|_ˆ|_ˆ|_|S)N)	rkÚIOEVENTr„rprr‰Úatmt_ionamerŽÚatmt_as_supersocket)rrq)Úas_supersocketÚnamer‹rrr†6szATMT.ioevent.<locals>.decor)rqr–r‹r•r†r)r•r–r‹rÚioevent4szATMT.ioeventcCs||fdd„}|S)NcSs"tj|_|j|_||_|j|_|S)N)rkÚTIMEOUTr„rpÚatmt_timeoutrr‰)rrqÚtimeoutrrrr†Bs
zATMT.timeout.<locals>.decor)rqršr†rrrrš@szATMT.timeout)rrrr)r)r)r)rN)rrrrƒrˆrrr˜r’rzr€rJrqrŒrr‘r—ršrrrrrkÝs$			rkc@s@eZdZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZ
dZd
ZdS)Ú
_ATMT_CommandÚRUNÚNEXTÚFREEZEÚSTOPÚ	FORCESTOPÚENDÚ	EXCEPTIONÚ
SINGLESTEPÚ
BREAKPOINTÚ	INTERCEPTÚACCEPTÚREPLACEÚREJECTN)rrrrœrržrŸr r¡r¢r£r¤r¥r¦r§r¨rrrrr›Ksr›c@sReZdZdd„Zdd„Zdd„Zdd„Zefd	d
„Zdd„Z	e
ejfd
d„ƒZ
dS)Ú_ATMT_supersocketcOsZ||_||_||_tƒtƒ|_|_||j|jfi|d<d|d<|||Ž|_|j ¡dS)NÚexternal_fdTÚis_atmt_socket)r–r—Úprotor5ÚspaÚspbÚatmtÚrunbg)rr–r—r{r¬rOrarrrr\sz_ATMT_supersocket.__init__cCs"t|tƒst|ƒ}|j |¡dS)N)r)Úbytesr­r?)rrIrrrr?gs
z_ATMT_supersocket.sendcCs
|j ¡S)N)r®r)rrrrrlsz_ATMT_supersocket.check_recvcCs
|j ¡S)N)r®r!)rrrrr!osz_ATMT_supersocket.filenocCs$|j |¡}|jdk	r | |¡}|S)N)r®rEr¬)rrDÚrrrrrErs

z_ATMT_supersocket.recvcCs.|js*|j ¡|j ¡|j ¡d|_dS)NT)rGr¯rwr­rr®)rrrrrxs



z_ATMT_supersocket.closecCs
t||ƒS)N)r4)rHr/rrrr%sz_ATMT_supersocket.selectN)rrrrr?rr!rrErrJrrKr%rrrrr©[sr©c@seZdZdd„Zdd„ZdS)Ú_ATMT_to_supersocketcCs||_||_||_dS)N)r–r—r{)rr–r—r{rrrr…sz_ATMT_to_supersocket.__init__cOst|j|j|j|f|ž|ŽS)N)r©r–r—r{)rr¬rOrarrrrbŠsz_ATMT_to_supersocket.__call__N)rrrrrbrrrrr³„sr³cs,eZdZ‡fdd„Zdd„Zdd„Z‡ZS)ÚAutomaton_metaclasscs.tt|ƒ ||||¡}i|_d|_i|_i|_i|_i|_i|_	g|_
g|_g|_g|_
i}|g}xJ|r¬| d¡}|t|jƒ7}x(t |j¡D]\}}||krŽ|||<qŽWqdWdd„t |¡Dƒ}	x¢|	D]š}
|
jtjkr<|
j}|
|j|<g|j|<g|j|<g|j|<g|j|<|
jr&|j
 |
¡|
jrb|j |
¡qÈ|
jtjtjtjtjgkrÈg|j	|
j <qÈWxò|	D]ê}
|
jtjkr’|j|
j |
¡nÂ|
jtjkr´|j|
j |
¡n |
jtjkrü|j|
j |
¡|j |
j!¡|
j"dk	rT|j
 |
¡nX|
jtjkr$|j|
j |
j#|
f¡n0|
jtj$krlx |
j%D]}|j	| |
¡q:WqlWx0t |j¡D] }|j&dd„d| d¡qhWx@t' (t |j¡t |j¡t |j¡¡D]}|j&dd„dq´Wx.t |j	¡D]\‰}|j&‡fd	d„dqÜWx*|j
D] }
t)||
j"t*|
j"|
j!|ƒƒqW|S)
NrcSs&g|]}t|tjƒrt|dƒr|‘qS)r„)r)ÚtypesÚFunctionTyper)r"rTrrrr$©sz/Automaton_metaclass.__new__.<locals>.<listcomp>cSs|dS)Nrr)r#rrrÚ<lambda>Ìóz-Automaton_metaclass.__new__.<locals>.<lambda>)Úkey)NNcSs|jS)N)rŽ)r#rrrr·Ñr¸cs
|jˆS)N)r‡)r#)Úcondnamerrr·Ór¸)+Úsuperr´Ú__new__ÚstatesrqÚrecv_conditionsÚ
conditionsÚioeventsršÚactionsÚinitial_statesÚstop_statesÚionamesZiosupersocketsÚpopr&Ú	__bases__rWrXrMÚ
itervaluesr„rkrƒrprrr(rvrrr˜r’r‰r“r”r™rˆr‡ÚsortÚ	itertoolsÚchainÚsetattrr³)Úclsr–ÚbasesÚdctÚmembersÚclassesÚcrSrTZ	decoratedÚmrIZactlstÚioev)r])rºrr¼’s|








 zAutomaton_metaclass.__new__c	CsRd|jj}d}xjt |j¡D]Z}|jr8d|j|}q|jrN|d|j7}q|jrd|d|j7}q|j	r|d|j7}qW||7}xNt |j¡D]>}x8|j
jj|j
jj
D] }||jkr¬|d|j|f7}q¬Wq’WxÄdd	„|j ¡Dƒd
d	„|j ¡Dƒdd	„|j ¡DƒD]„\}}}xv|D]n}xf|jj|jj
D]R}||jkr8|j}	x$|j|jD]}
|	d|
j7}	q\W|d
|||	|f7}q8Wq"WqWxªt |j¡D]š\}}xŽ|D]†\}}|dkr̐q¶xl|jj|jj
D]X}||jkrÞd|j|f}	x$|j|jD]}
|	d|
j7}	q
W|d|||	f7}qÞWq¶Wq¨W|d7}|S)Nzdigraph "%s" {
Úz=	"%s" [ style=filled, fillcolor=blue, shape=box, root=true];
z8	"%s" [ style=filled, fillcolor=green, shape=octagon ];
z6	"%s" [ style=filled, fillcolor=red, shape=octagon ];
z@	"%s" [ style=filled, fillcolor=orange, shape=box, root=true ];
z	"%s" -> "%s" [ color=green ];
cSsg|]\}}d||f‘qS)Zpurpler)r"rSrTrrrr$îsz3Automaton_metaclass.build_graph.<locals>.<listcomp>cSsg|]\}}d||f‘qS)Úredr)r"rSrTrrrr$ïscSsg|]\}}d||f‘qS)Zoranger)r"rSrTrrrr$ðsz\l>[%s]z&	"%s" -> "%s" [label="%s", color=%s];
z%s/%.1fsz'	"%s" -> "%s" [label="%s",color=blue];
z}
)r]rrWrÇr½rrrprxrtrvr…Ú__code__Úco_namesÚ	co_constsr¿Úitemsr¾rÀr‰rÁrXrš)rrIÚseÚstrDrÑrSrTrÚliner#ÚtrrrÚbuild_graphÚsL
& 
&
$zAutomaton_metaclass.build_graphcKs| ¡}t|f|ŽS)N)rÞr)rrarIrrrÚgraphszAutomaton_metaclass.graph)rrrr¼rÞrßÚ
__classcell__rr)r]rr´‘sH+r´c@s¢eZdZdRdd„Zdd„Zdd„ZGd	d
„d
eƒZGdd„deƒZGd
d„de	ƒZ
Gdd„de
ƒZGdd„de
ƒZGdd„de
ƒZ
Gdd„de
ƒZGdd„deƒZGdd„deƒZGdd„deƒZGdd„de
ƒZdd „Zd!d"„Zd#d$„Zd%d&„Zd'd(„Zd)d*„Zd+d,„Zd-d.„Zd/d0„Zd1d2„Zd3d4„Zd5d6„Zd7d8„Zd9d:„Z d;d<„Z!dSd?d@„Z"dTdBdC„Z#dDdE„Z$e$Z%dFdG„Z&dHdI„Z'dJdK„Z(dLdM„Z)dUdNdO„Z*dVdPdQ„Z+d=S)WÚ	Automatonrr cKs"||_|rtjt_||_||_dS)N)Údebug_levelÚloggingÚDEBUGrZlogLevelÚsocket_kargsÚ
store_packets)rÚdebugÚstorerarrrÚ
parse_argss
zAutomaton.parse_argscCsdS)NTr)rÚpktrrrÚ
master_filterszAutomaton.master_filtercCs|j |¡dS)N)Ú	send_sockr?)rrêrrrÚmy_sendszAutomaton.my_sendc@sHeZdZdd„Zdd„Zdd„Zddd	„Zd
d„Zddd
„Zdd„Z	dS)zAutomaton._IO_fdwrappercCsV|dk	rt|ttfƒs| ¡}|dk	r<t|ttfƒs<| ¡}||_||_t |¡dS)N)r)r,r5r!ÚrdÚwrrr)rrîrïrrrrsz Automaton._IO_fdwrapper.__init__cCst|jtƒr|j ¡S|jS)N)r)rîr5r!)rrrrr!#s
zAutomaton._IO_fdwrapper.filenocCs
|j ¡S)N)rîr)rrrrr(sz"Automaton._IO_fdwrapper.check_recvéÿÿcCs&t|jtƒr|j |¡St |j|¡S)N)r)rîr5rEr7rC)rrDrrrrC+szAutomaton._IO_fdwrapper.readcCs*t|jtƒr|j |¡dSt |j|¡S)N)r)rïr5r?r7r=)rÚmsgrrrr=0szAutomaton._IO_fdwrapper.writecCs
| |¡S)N)rC)rrDrrrrE6szAutomaton._IO_fdwrapper.recvcCs
| |¡S)N)r=)rrñrrrr?9szAutomaton._IO_fdwrapper.sendN)rð)rð)
rrrrr!rrCr=rEr?rrrrÚ
_IO_fdwrappers	

ròc@sHeZdZdd„Zdd„Zdd„Zddd	„Zdd
d„Zdd
„Zdd„Z	dS)zAutomaton._IO_mixercCs||_||_t |¡dS)N)rîrïrr)rrîrïrrrr=szAutomaton._IO_mixer.__init__cCst|jtƒr|jS|j ¡S)N)r)rîr,r!)rrrrr!BszAutomaton._IO_mixer.filenocCs
|j ¡S)N)rîr)rrrrrGszAutomaton._IO_mixer.check_recvNcCs|j |¡S)N)rîrE)rrDrrrrEJszAutomaton._IO_mixer.recvcCs
| |¡S)N)rE)rrDrrrrCMszAutomaton._IO_mixer.readcCs|j |¡S)N)rïr?)rrñrrrr?PszAutomaton._IO_mixer.sendcCs
| |¡S)N)r?)rrñrrrr=SszAutomaton._IO_mixer.write)N)N)
rrrrr!rrErCr?r=rrrrÚ	_IO_mixer<s

róc@seZdZddd„ZdS)zAutomaton.AutomatonExceptionNcCst ||¡||_||_dS)N)rzrrqÚresult)rrñrqrôrrrrWsz%Automaton.AutomatonException.__init__)NN)rrrrrrrrÚAutomatonExceptionVsrõc@seZdZdS)zAutomaton.AutomatonErrorN)rrrrrrrÚAutomatonError\sröc@seZdZdS)zAutomaton.ErrorStateN)rrrrrrrÚ
ErrorState_sr÷c@seZdZdS)zAutomaton.StuckN)rrrrrrrÚStuckbsrøc@seZdZdS)zAutomaton.AutomatonStoppedN)rrrrrrrÚAutomatonStoppedesrùc@seZdZdS)zAutomaton.BreakpointN)rrrrrrrÚ
Breakpointhsrúc@seZdZdS)zAutomaton.SinglestepN)rrrrrrrÚ
Singlestepksrûc@seZdZddd„ZdS)zAutomaton.InterceptionPointNcCstjj||||d||_dS)N)rqrô)rárùrÚpacket)rrñrqrôrürrrrosz$Automaton.InterceptionPoint.__init__)NNN)rrrrrrrrÚInterceptionPointnsrýc@seZdZdS)zAutomaton.CommandMessageN)rrrrrrrÚCommandMessagessrþcCs|j|krt |¡dS)N)rârrç)rZlvlrñrrrrçws
zAutomaton.debugcCsü|jj|jkrÄ| dd| ¡¡||_ttj|j|d}|j 	|¡|j
 ¡}d|_|jtj
krr| dd¡dS|jtjkrš|j}| dd| ¡¡n*|jtjkr´| dd¡n| d|j¡‚| |¡| dd| ¡¡|jrø|j | ¡¡dS)	Néz!INTERCEPT: packet intercepted: %s)ÚtyperqrêzINTERCEPT: packet rejectedz!INTERCEPT: packet replaced by: %szINTERCEPT: packet acceptedzINTERCEPT: unknown verdict: %rz	SENT : %s)rqÚinterception_pointsrçÚsummaryÚintercepted_packetrLr›r¥Úcmdoutr?ÚcmdinrErr¨r§rêr¦röríræÚpacketsr(Úcopy)rrêÚcmdrrrr?{s(

zAutomaton.sendc	Os¾| di¡}| dtj¡|_| dtj¡|_| dd¡|_t ¡|_	d|_
d|_tƒ|_
tƒ|_d|_d|_||_||_t tddi¡|_t tddi¡|_tƒ|_tƒ|_i|_i|_xÐ|jD]Æ}| |¡}t|tƒsà||f}|\}}|dkrøtƒ}nt|t ƒs| !|d¡}|dkr"tƒ}nt|t ƒs:| !d|¡}||j|<||j|<||_"||_"t#|j|| $||¡ƒt#|j|| $||¡ƒqÀWx&|j%D]}t#||t&t'||ƒƒƒq’W| (¡dS)	NrªZllZrecvsockr«FrZIOnamespacer))rÅrZL3socketÚsend_sock_classZL2listenÚrecv_sock_classr«Ú	threadingÚLockÚstartedÚthreadidÚbreakpointedÚsetÚbreakpointsrrrâÚ	init_argsÚ
init_kargsrr¼ÚioZoir5rrÚioinÚiooutrÄÚgetr)ÚtuplerròÚionamerËrór½rZr'Ústart)	rrOrarªrDZextfdrrZstnamerrrr”sT





zAutomaton.__init__cCs|S)Nr)rrrrÚ__iter__ÃszAutomaton.__iter__cCs| ¡dS)N)rw)rrrrrÆszAutomaton.__del__c
Os(y,| dd|j|jf¡||f|ž|ŽWnÞtjk
rÌ}z€| dd|j|j|jf¡|jtjkr~|jr~|j 	|d¡x:|j
|jD]*}| dd|j¡||f|jž|j
ŽqŒW‚Wdd}~XYnXtk
r
}z | dd|j|j|f¡‚Wdd}~XYnX| dd|j|jf¡dS)	NézTrying %s [%s]éz%s [%s] taken to state [%s]rz   + Running action [%s]z%s [%s] raised exception [%s]z%s [%s] not taken)rçr„r‰rkr€rqrrærr(rÁrr}r~rz)rrŠrOraÚ	state_reqrŒÚerrrÚ_run_conditionÉs zAutomaton._run_conditioncOs@t ¡}tj|j|f||dd}| d¡| ¡| ¡dS)Nzscapy.automaton _do_start)ÚtargetrOÚkwargsr–T)rÚEventÚThreadÚ_do_controlÚ	setDaemonrÚwait)rrOraÚreadyZ_trrrÚ	_do_startÜs
zAutomaton._do_startc
Osˆ|jvt ¡j|_||jt|ƒd…}|j ¡}| 	|¡|j
||Ž|jd|ƒ|_|j
f|jŽ|_|jf|jŽ|_td|jjd|_d}| ¡}| dd|j¡| ¡yx|j ¡}| dd|j¡|jtjkrìd	}nh|jtjkrþd}nV|jtjkrq¾nD|jtj krD|j!r@|j!d|ƒ|_| ¡}nPn|jtj"krTPxlt#|ƒ}	t$|	|j%ƒrpPn*t$|	|j&ƒršt'tj(|	d
}|j) *|¡P|rVt'tj+|	d
}|j) *|¡PqVWq¾WWn˜t,t-fk
rþt'tj.|j/d}|j) *|¡Yndt0k
r`}
zDt1 2¡}| dd|jt3j4|Žf¡t'tj5|
|d
}|j) *|¡Wdd}
~
XYnX| dd|j¡d|_WdQRXdS)Nrzsession[%s])r–Trÿz Starting control thread [tid=%i]rzReceived command %sF)rrq)rrôz&Transferring exception from tid=%i:
%s)rÚ	exceptionÚexc_infoz Stopping control thread (tid=%i))6r
rÚ
currentThreadÚidentrrr-rrrNrérÂrqr	rårìr
Úlisten_sockrr]rrÚ_do_iterrçrrrErr›rœrržrŸrÃr Únextr)rþrúrLr¤rr?r£Ú
StopIterationÚRuntimeErrorr¡Úfinal_state_outputrzÚsysr+Ú	tracebackÚformat_exceptionr¢)
rr(rOraÚarSZ
singlestepÚiteratorrÑrqrr+rÒrrrr%èsl





zAutomaton._do_controlc
csАxȐyt| dd|jj¡|jj|jkr^|jj|jkr^|jj|_|jd|jj|jjdVd|_|j ¡}|jjr–|jd|jj|f||jjd‚|jjr¨||_	dS|dkr¶d}nt
|tƒsÆ|f}t|j
gdƒsbx&|j|jjD]}|j|f|žŽqæWt|j|jjƒdkrbt|j|jjƒdkrbt|j|jjƒdkrb|jd	|jj|jj|d
‚t|j|jjƒ}t|ƒ\}}t ¡}|j
g}t|j|jjƒdkr´| |j¡x*|j|jjD]}| |j|j¡qÄWx”t ¡|}	|dk	r ||	kr |j|f|žŽt|ƒ\}}|dkr0d}
n||	}
| dd|¡t||
ƒ}| dd
|¡x|D]}| dd|¡||j
krš| d¡VnÒ||jkr |j t¡}
|
dk	rl| |
¡r
| dd|
  ¡¡x@|j|jjD]}|j||
f|žŽqìWn| dd|
  ¡¡nL| dd|j!¡x8|j|jjD]&}|j|j!krB|j||f|žŽqBWqjWqäWWqt"j#k
rÆ}z*| dd|jj|jf¡||_|VWdd}~XYqXqWdS)Nr z
## state=[%s]z breakpoint triggered on state %s)rqzReached %s: [%r])rôrqrrz
stuck in [%s])rqrôrzSelect on %rzSelected %rz
Looking at %rzReceived command messagerÿz	RECVD: %séz	FILTR: %sz
IOEVENT on %srzswitching from [%s] to [%s])$rçrqrrrúrrur÷ryr3r)r&r4rr¿r r-r¾rÀršrøÚiterr0Útimer(r.rr“rþrErrërrrkr€)rZstate_outputrŠZexpirationsZnext_timeoutZtimeout_funcÚt0ZfdsrÓrÝr/r²ÚfdrêZrcvcondZioevtrrrrr/)sˆ







(zAutomaton._do_itercCsd|jjddg|j ¡fS)Nz<Automaton %s [%s]>ZHALTEDÚRUNNING)r]rr
Úlocked)rrrrrY€szAutomaton.__repr__cGs.x(|D] }t|dƒr|j}|j |¡qWdS)Nrp)rrprÚadd)rÚiptsÚiptrrrre‡s

z!Automaton.add_interception_pointscGs.x(|D] }t|dƒr|j}|j |¡qWdS)Nrp)rrprÚdiscard)rrArBrrrris

z$Automaton.remove_interception_pointscGs.x(|D] }t|dƒr|j}|j |¡qWdS)Nrp)rrprr@)rÚbpsÚbprrrrc“s

zAutomaton.add_breakpointscGs.x(|D] }t|dƒr|j}|j |¡qWdS)Nrp)rrprrC)rrDrErrrrg™s

zAutomaton.remove_breakpointscOs|j ¡s|j||ŽdS)N)r
r?r))rrOrarrrrŸs
zAutomaton.startNTcCs|dkrttjd}|j |¡|ry|j ¡}Wn(tk
r\|j ttjd¡dSX|j	tj
krp|jS|j	tjkr”|j
d|jj|jd‚n~|j	tjkr¼|jd|jj|jjd‚nV|j	tjkrä|jd|jj|jjd‚n.|j	tjkrt |jd|jd|jd	¡dS)
N)rzpacket intercepted)rqrüzsinglestep state=[%s])rqz"breakpoint triggered on state [%s]rr r)rLr›rœrr?rrEÚKeyboardInterruptržrr¡rôr¥rýrqrêr£rûr¤rúr¢rWÚreraiser+)rÚresumer'rÑrrrr£s&z
Automaton.runFcCs| ||¡dS)N)r)rrHr'rrrr°¸szAutomaton.runbgcCs|jttjddS)N)r)rH)rrLr›r)rrrrr0»szAutomaton.nextc	CsJ|j:x2t|j|jgdƒ}|s"Px|D]}| ¡q(Wq
WWdQRXdS)Nr)r
r4rrrE)rr²r=rrrÚ_flush_inout¿s
zAutomaton._flush_inoutcCs |j ttjd¡| ¡dS)N)r)rr?rLr›rŸrI)rrrrrwÉszAutomaton.stopcCs |j ttjd¡| ¡dS)N)r)rr?rLr›r rI)rrrrÚ	forcestopÍszAutomaton.forcestopcOs| ¡|j||ŽdS)N)rwr)rrOrarrrÚrestartÑszAutomaton.restartcCs4tƒ}|dkrtj|_ntj|_||_|j||dS)N)rHr')rLr›r¦rr§rêr)rrêr'ÚrsmrrrÚ
accept_packetÕs
zAutomaton.accept_packetcCsttjd}|j||dS)N)r)rHr')rLr›r¨r)rr'rLrrrÚ
reject_packetÞszAutomaton.reject_packet)rr )NT)NF)NF)F),rrrrérërírròrórzrõrör÷rørùrúrûrýrþrçr?rrrr r)r%r/rYrerircrgrrr°r0Ú__next__rIrwrJrKrMrNrrrrrá
sN
#/AW



	rá).Ú__doc__rrÉrãr7rr4rr;r5rµr%ÚcollectionsrZscapy.configrZscapy.utilsrZscapy.errorrrZscapy.plistrZ
scapy.datarZscapy.supersocketr	Zscapy.constsr
Zscapy.modules.sixÚmodulesrWÚobjectrr4r5rLrZrkr›r©r³rr´Úwith_metaclassrárrrrÚ<module>s>!1>
n)
y