a h'@s2ddlZddlZddlZddlZddlZddlZddlZddlmZm Z m Z m Z ddl m Z deeee edddZdd eee ed d d Zdd eee ed d dZdddeeee edddZeeeddddZe eeddddZe eeddddZddddZedkr.edS) N)IOListSequenceTuple)make_bootloaderF)localttyshreturncCsD|r tjnd}|r|df}n |ddf}|r@ddd|Df}|S)NZpython3z-iqz-icz8" - beiboot - "; import sys; sys.ps1 = ''; sys.ps2 = ''; css|]}t|VqdS)N)shlexquote).0argr?/usr/lib/python3.9/site-packages/cockpit/_vendor/bei/beiboot.py .z%get_python_command..)sys executablejoin)rr r Z interpretercommandrrrget_python_commands rr )argsr r cGs&dg|rdgnd|t|ddRS)Nsshz-trTr r rr rrrrget_ssh_command3s  r cGs(dddg|rdgnd|t|dRS)NZpodmanexecz --interactivez--ttyrrrrrrrget_container_command:s r"r)rr r r cGsg|td||dRS)NT)rr r r)r r rrrr get_commandAsr#)srcdstr cs*ddfdd }tj|dddS)Nr csR:d}t|}|sq0|q Wdn1sD0YdS)Ni)osreadwriteflush)Z block_sizedatar%r$rr_threadFs  z!splice_in_thread.._threadT)targetdaemon) threadingThreadstart)r$r%r-rr,rsplice_in_threadEs r3)rscriptr cCshtj|tjdD}|jdus J|j|td|jt|Wdn1sZ0YdS)N)stdinr) subprocessPopenPIPEr5r)r3rexitwait)rr4procrrrsend_and_spliceTs   r<c sddl}Gfddd|j}||}tj|tj|d|jdusNJjtddt gdffg|j d j t |tdjtWdn1s0YdS) Nrcs,eZdZeeeeeddfdd ZdS)z%send_xz_and_splice..ResponderN)rrfdsstderrr cs0jdusJ|dkr,jjdS)Nzbeiboot.provide)r5r)r*)selfrrr=r>r;r4rrdo_custom_commandas z7send_xz_and_splice..Responder.do_custom_command)__name__ __module__ __qualname__strrrintrArr@rr Responder`s rG)r5r>Zboot_xzz script.py.xzT)Zgadgets)fernyZInteractionResponderZInteractionAgentr6r7r8r5r)rlenZBEIBOOT_GADGETSencoder*asynciorunZ communicater3rr9r:)rr4rHrGZagentrr@rsend_xz_and_splice]s    rMr&cCst}|jdddd|jddd|jdd d|jd d d |}|j oZtd }|jgkrrt|d}nd|jd dkrt |jddd|i}n<|jd dkrt |jddd|i}nt |j||j d}|jr t |jd}|}Wdn1s 0Yt||n`|jrjt |jd}|}Wdn1sT0Yt||ntj|d g|RdS)Nz--sh store_truez/Pass Python interpreter command as shell-script)actionhelpz--xzzthe xz to run remotely)rPz--scriptz2the script to run remotely (must be repl-friendly)r*)nargsrrrrr containerrrb)argparseArgumentParser add_argument parse_argsr4r'isattyrrr r"r#r openr(r<xzrMexeclp)parserrr rfiler4rrrmainxs6  ( ( r___main__)FFF)rUrKr'r r6rr0typingrrrrZ bootloaderrboolrErr r"r#rFbytesr3r<rMr_rBrrrrs0    '