
    jK                        d dl Z d dlZd dlZd dlZd dlmZ d dlmZ d dlm	Z	 d dl
mZ d dlmZ d dlmZ d dlmZmZ d d	lmZmZ d d
lmZ d dlmZ d dlmZ d dlmZmZmZ 	 d7de dee df         dee df         ddfdZ!	 	 	 	 d8dedee df         dee df         dee df         dee df         ddfdZ"	 	 	 	 d9de dede dee df         de#dee df         dee df         ddfd Z$d!e de fd"Z%d#e ddfd$Z&d%ede ddfd&Z'd'e(e          d(e d)e#d*e#ddf
d+Z)d,e*d-e*d.e ddfd/Z+	 	 d:d0e d1e(e          d2e#d3e#ddf
d4Z,d5e d1e(e          ddfd6Z-dS );    N)Union)logger)etree)	highlight)TerminalFormatter)get_lexer_by_name)	androconfapk)
ARSCParserAXMLPrinter)get_bytecodes_methodSession)	DynamicUI)calculate_fingerprintparse_publicreadFileinpoutpresourcereturnc                    t          j        |           }|dk    rt          j        |           }|r||j        vrGt          j        d                    |          t          j	                   t          j
        d           t          |                    |                                                    }np|                                }n[d| v r/t          t          |                                                     }n(t          j        d           t          j
        d           t!          j        |dd	          }|r@t%          |d
          5 }|                    |           d d d            d S # 1 swxY w Y   d S t          j                            t+          |                    d          t/          d          t1                                           d S )NAPKz+The APK does not contain a file called '{}'file   z.xmlzUnknown file typeTzutf-8pretty_printencodingwbUTF-8xml)r	   
is_androidr
   r   filesr   errorformatsysstderrexitr   get_fileget_xml_objget_android_manifest_xmlr   r   tostringopenwritestdoutr   decoder   r   )r   r   r   ret_typeaaxmlbufffds           Z/home/ubuntu/.hermes/hermes-agent/venv/lib/python3.11/site-packages/androguard/cli/main.pyandroaxml_mainr8      s    #C((H5GCLL 	0qw&&AHH   	    qzz(3344@@BBDD--//DD	38C==))5577()))>$TGDDDD 

$ 	HHTNNN	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	
G$$!%((!## 	
 	
 	
 	
 	
s   E22E69E6arscobjpackagetyplocalec                    |p|                                  d         }|pd}|pd}t          | d                    |                    sBt          d                    |          t          j                   t	          j        d            t          | d|z   d	z             ||          }t          j	        t          j
        |          d
d          }|r@t          |d          5 }|                    |           d d d            d S # 1 swxY w Y   d S t          j                            t          |                    d          t!          d          t#                                           d S )Nr   publicz  zget_{}_resourcesz:No decoder found for type: '{}'! Please open a bug report.r   r   get_
_resourcesTr!   r   r    r"   )get_packages_nameshasattrr&   printr'   r(   r)   getattrr   r-   
fromstringr.   r/   r0   r   r1   r   r   )	r9   r   r:   r;   r<   ttypexr5   r6   s	            r7   androarsc_mainrH   B   s    83355a8GO8E!zF 7.55e<<== HOO  		
 	
 	
 	
 	7%,677HHA>$  D  

$ 	HHTNNN	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	
G$$!%((!## 	
 	
 	
 	
 	
s   %DDDFfilenamesoutputmethods_filterjardecompiler_typeformc                    ddl m}m} ddlm}	 ddlm}
 t          d                    | |                     t          j
                            |          s't          d|z             t          j        |           n	 t          d| d	                                                                          }|d
k    r8t          d           t!          j        |           t          j        |           n&|dk    rt          d           nt          d           d }|rt%          j        |          }g }|                                D ]\  }}}t          dd           t*          j                                         |dk    r]|                    |	                    |t           j        d         t           j        d         t           j        d                              n%|dk    r\|                    |	                    |t           j        d         t           j        d         t           j        d                              n|dk    rK|                    |	                    |t           j        d         t           j        d                              nr|dk    rl|                    |	                    |t           j        d         t           j        d         t           j        d         t           j        d                              t          d           |rt          dd           |	                    |t           j        d         t           j        d                                                   }tA          j!        |t          j
        "                    |d                     t          d           |#                                D ]6}|rcd                     |$                                |%                                |&                                          }|'                    |          shtQ          tS          |$                                                    }t          j
        "                    ||          }tU          |           t          d!                    |$                                |%                                |&                                          d            |
t          j
        "                    ||+                                                    }  ||,                    |                    }|r(t          d"|z  d            || d#z   |z   |d |           tS          |$                                          |vrt          d$d           |-                    |$                                          }tQ          tS          |%                                                    }t          j
        "                    ||d%z             }t]          |d&          5 }|/                    |0                                           d d d            n# 1 swxY w Y   |1                    |$                                           t          d'd           te          |||          }t]          | d(z   d&          5 }|/                    |           d d d            n# 1 swxY w Y   t                       8d S ))Nr   )
method2dotmethod2format)
decompiler)clean_file_namezDump information {} in {}zCreate directory %sTz#Do you want to clean the directory z	? (Y/N): yzDeleting...nzNot deleting.z#Invalid input. Please enter Y or N.zDecompilation ... enddex2jadBIN_DEX2JARBIN_JADTMP_DIRECTORYdex2winejadBIN_WINEJADdedBIN_DEDdex2fernflowerBIN_FERNFLOWEROPTIONS_FERNFLOWEREndzjar ...zclasses.jarz{}{}{}zDump {} {} {} ...z%s ....zsource codes ...z.javawzbytecodes ...z.ag)3androguard.core.bytecoderQ   rR   androguard.decompilerrS   androguard.miscrT   rC   r&   ospathexistsmakedirsinputstriplowerr	   rrmdirrecompileget_objects_dexr'   r0   flushset_decompilerDecompilerDex2JadCONFDecompilerDex2WineJadDecompilerDedDecompilerDex2FernflowerDex2Jarget_jarshutilmovejoinget_encoded_methodsget_class_nameget_nameget_descriptorsearchvalid_class_namestrcreate_directoryget_short_string
get_method	get_classr.   r/   
get_sourceappendr   )rI   rJ   rK   rL   rM   rN   rO   rQ   rR   rS   rT   
user_inputmethods_filter_exprdump_classes_vmvmxfilenamejarmethodmsigfilename_classr5   current_classcurrent_filename_classr6   bytecode_buffs                             r7   export_apps_to_formatr   n   sZ    CBBBBBBB000000//////	
%
,
,Xv
>
>???7>>&!! =#f,---
F	=MFMMMNN  S  m$$$ (((F###s""o&&&;<<<!	=$  9 j88L'')) k k
2s!s++++
i'',,N=1N9-N?3	     --00N=1N=1N?3	     %%((N9-N?3      00033N=1N#34N#78N?3    	e 	)%%%%$,,}-/  gii	 
 KRW\\&-%H%HIII%LLL,,.. 6	 6	F" ))++OO%%))++ 
 +11$77  .c&2G2G2I2I.J.JKKNW\\&.AAN^,,,#**))++OO%%))++ 
     '^V-D-D-F-FGG H :cnnV4455D Gho3////hnt3T4FFF 6((**++<??(c2222 "V-B-B-D-D E E)9..0011* *& *,2W<* *& 0#66 9"HH]55778889 9 9 9 9 9 9 9 9 9 9 9 9 9 9##F$9$9$;$;<<< /s++++0S&AAMh&,, ('''( ( ( ( ( ( ( ( ( ( ( ( ( ( (GGGGm6	kk ks$   '(YY"Y[$$[(+[(
class_namec                 z    | d         dk    r
| dd         } t          j        j        |                     d           S )N;r   /)rk   rl   r   split)r   s    r7   r   r     s<    "~"%
7<))#..//    pathdirc                 p    t           j                            |           st          j        |            d S d S )N)rk   rl   rm   rn   )r   s    r7   r   r     s8    7>>'"" 
G r   sessionc                 R   ddl }ddl}ddlm} ddlm} ddlm} ddlm}m	} ddl
m}	 |                                 | r(t          j        d                    |                      n |	d	
          x|d<   |rd                    t           j                            |                     t          j        d           t'          j        |          }
t          j        d                    |
                     |
dvrt          j        |j        dz   |j        z   t0          j                   t          j        d           t          j        d           t          j        t5          |                     t7                       nt9          |d          5 }|                                }ddd           n# 1 swxY w Y                       ||          }t          j        d                    |                     |
dk    rt          j        d                               |          \  }}}t7          d           t7          |           t7          d           t7          |           t7          d           t7          |           t7          d           t7          |           t7                       n|
dv rt          j        d                                            D ]\  }}}||k    r nt7          d           t7          |           t7          d           t7          |           t7                       d#fd} |            }d                     |          } ||d!                    |          "          }|!                    |            |             dS )$z
    Start an interactive shell

    :param session: Session file to load
    :param filename: File to analyze, can be APK or DEX (or ODEX)
    r   N)Fore)embed)Config)ANDROGUARD_VERSIONry   r   zTODO: Restoring session '{}'...T)export_ipythonSESSIONzLoading apk {}...z+Please be patient, this might take a while.z'Found the provided file is of type '{}')DEXDEYr   zHThis file type is not supported by androlyze for auto loading right now!r   z!But your file is still available:z>>> filenamerb!Added file to session: SHA256::{}r   zLoaded APK file...)digestz>>> az>>> dz>>> dx)r   r   zLoaded DEX file...r   c                  $                                    sdS 	 t          d                                          } | dk    r8                                }t	          d                    |                     dS dS # t          t          f$ r Y dS w xY w)z#Save the session on exit, if wantedNz)Do you want to save the session? (y/[n])?rU   zSaved Session to file: '{}')isOpenro   rq   saverC   r&   EOFErrorKeyboardInterrupt)resfnamerJ   s     r7   shutdown_hookz%androlyze_main.<locals>.shutdown_hook`  s    xxzz 	F		CCDDJJLLC czz 3::5AABBBBB	 z +, 	 	 	DD	s   !A: :BBzAndroguard version {}z
{} started)configbanner1)r   N)"atexitcoloramar   IPython.terminal.embedr   traitlets.configr   androguard.core.androconfr   ry   androguard.sessionr   initr   infor&   rk   rl   basenamer	   r#   r%   REDRESETr'   r(   reprrC   r.   readaddget_objects_apkru   register)r   rI   r   r   r   r   r   r   ry   r   filetypefprawhr3   ddxh_r   cfg_version_stringipshellrJ   s                         @r7   androlyze_mainr     s    MMMOOO,,,,,,''''''BBBBBBBB******MMOOO ;5<<WEEFFFF
 &gT::::DO 1		#	#BG$4$4X$>$>	?	?	?ABBB'11=DDXNNOOO000L\]* Z	    L<===L(((Lh(((GGGG h%%  ggii                              h$$AK;BB1EEFFF5  0111,,A,661bn%%%hgagahb			^++0111!"!2!2!4!4  IB2Bww gahb			C C C C C C  &((C-445GHHOe3(;(;O(L(LMMMG
OOM"""GIIIIIs   F;;F?F?args_apk	args_hashargs_allshowc                    dd l }dd l}dd l}ddlm}m} ddlm}	m}
 ddl	m
} ddlm} t          |j        |j        |j        |j                  }|                                |vrt'          d                    |                                          t*          j                   t'          d	                    d
                    |                                                    t*          j                   t+          j        d           | D ]3}	  ||          t'          d                    t2          j                            |                                                               t'          d                                                                         t'          d                                                                         t'          d                                                                         tA          !                                "                                z   fd#                                D             z             }tA          $                                %                                z             }tM          |          dk    r/t'          d                    tM          |                               |D ]}|r|j'        (                    |          }t'          d ||j)        d                     t'          d ||j*        d                     t'          dtW          |j,                             t'          d|j-                   t'          d|j.                   t'          d|d         d         d         j/                   t'          d|d         d         d         j/                   |sit'          d                    |                                 ||                                         |          0                                                     nX|1                                D ]C\  }}t'          d                    | ||          0                                                     Dt'                       tM          |          dk    r/t'          d                     tM          |                               |D ]}|rte          |          }t'          d!|j3                    t'          d"|j4                    t'          d#tk          |          +                                            	 t'          d$|j-                    n# tl          $ r
}Y d }~nd }~ww xY wt'                       n#  t'          |	j7        d%                    t2          j                            |                    z   |
j8        z   t*          j                   |9                    t*          j                   Y nxY wtM          |           dk    rt'                       5d S )&Nr   )keysx509)r   Style)r   )get_certificate_name_string)md5sha1sha256sha512zHash function {} not supported!r   zUse one of {}z, r   z{}, package: '{}'zIs signed v1: {}zIs signed v2: {}zIs signed v3: {}c                 :    g | ]}                     |          S  )get_certificate_der).0rG   r3   s     r7   
<listcomp>z"androsign_main.<locals>.<listcomp>  s'    MMM1((++MMMr   zFound {} unique certificateszIssuer:T)shortzSubject:zSerial Number:zHash Algorithm:zSignature Algorithm:zValid not before:tbs_certificatevalidity
not_beforezValid not after:	not_afterz{} {}z5Found {} unique public keys associated with the certszAlgorithm: z
Bit size: zFingerprint: zHash Algorithm: zError in {}):binasciihashlib	traceback
asn1cryptor   r   r   r   r   androguard.core.apkr   androguard.utilr   dictr   r   r   r   rq   rC   r&   r'   r(   r   r)   rk   rl   r   get_packageis_signed_v1is_signed_v2is_signed_v3setget_certificates_der_v3get_certificates_der_v2get_signature_namesget_public_keys_der_v3get_public_keys_der_v2lenCertificateloadissuersubjecthexserial_number	hash_algosignature_algonative	hexdigestitemsr   	algorithmbit_sizer   
ValueErrorr   	RESET_ALL	print_exc)r   r   r   r   r   r   r   r   r   r   r   r   r   hashfunctionsrl   certspkeyscert	x509_certkv
public_key
parsed_keyver3   s                           @r7   androsign_mainr  w  s    OOONNN%%%%%%%%$$$$$$$$'''''';;;;;; K\~~	  M ---44Y__5F5FGG	
 	
 	
 	
 	""499]-?-?-A-A#B#BCC	
 	
 	
 	
 	 d d`	1D		A#**G$$T**AMMOO   
 $++ANN,<,<==>>>$++ANN,<,<==>>>$++ANN,<,<==>>>))++++--.MMMMQ5J5J5L5LMMMN E
 ((**Q-E-E-G-GG E 5zzA~~4;;CJJGGHHH ) )  $ 0 5 5d ; ;I!33%,D     "33%-T     *C	0G,H,HIII+Y-@AAA0)2JKKK+!"34Z@( 	   *!"34Z@' 	     	F%OO--<M)//*;*;<TBBLLNN     !. 3 3 5 5 F F1gnnQ$0A0A0C0CDDEEEE5zzA~~KRRE

    $  
 !-j!9!9J>
(<>>???<z':<<===Q(=j(I(I(M(M(O(OQQ  G1EGGHHHH%    	1&&rw'7'7'='=>>?/" Z	    SZ00000x==1GGGId ds2   QV !U98V 9
VV VV  A=Xoffsetsizedex_filec           
      :   ddl m} t          |d          5 }|                                }d d d            n# 1 swxY w Y    ||          }|dk    r2| dk    r+|                                D ]}t          d                    |                                                     |                                D ]}t          d                    |	                                |                                |
                                                     |                                D ]:\  }	}
t          d                    |	|
                                                     ;t                       t                       d S |dk    rt          |          }|r{| }	t          |                    | |                    D ]W\  }}t          d||	fz  d	           |                    |	           t                       |	|                                z  }	Vd S d S )
Nr   )r   r   z# CLASS: {}z## METHOD: {} {} {}z
{:08x}  {}z
%-8d(%08x)rW   rX   )androguard.core.dexr   r.   r   get_classesrC   r&   r   get_methodsget_access_flags_stringr   get_instructions_idxdisasmr   	enumeratedisassembler   
get_length)r  r  r  r   r   bufr   clsmidxinsnbis                r7   androdis_mainr0    sY   ''''''	h		 ggii               	CAqyyVq[[==?? 	 	C-&&s||~~66777__&&  )001133

((**    !" 6 6 8 8 B BHC,--c3::<<@@AAAAGGGG	 	  199s88D 	&C"1==#>#>?? & &Alb#Y.C8888sq||~~%	& 	&& &s   8<<apk_filelist_moduleslive	enable_uic                 |   ddl m} ddlm}  |            }|syt	          | d          5 }|                                }d d d            n# 1 swxY w Y   |                    | |          }	t          j        d	                    |	                      |            }
|

                                 |
                                 |
                    | |||           |r{t          j        d           dd lddlm dd	lm}m}                     d           t+          |
j                  d
|ffd} ||                                            d S t          j        d           d}|dk    r?|
                                s/t5          d          }|dk    r|
                                )d S d S d S d S )Nr   Pentestr   r   r   )r3  r   )get_app)InputHookContextset_eventloop_with_inputhookinputhook_contextc                     |                                  s\                                r                                              n                    d           |                                  Zd S d S )Ng?)input_is_readyprocess_data
invalidatesleep)r;  r8  timeuis    r7   	inputhookz"androtrace_main.<locals>.inputhookJ  s}    '6688 $??$$ $GII((****JJsOOO	 (6688 $ $ $ $ $r   )rC  zType 'e' to exit the strace  ezType 'e' to exit:)androguard.pentestr7  r   r   r.   r   r   r   r   r&   print_devicesconnect_default_usbstart_traceremoverA  prompt_toolkit.applicationr8  "prompt_toolkit.eventloop.inputhookr9  r:  r@  r   message_queuerunwarningis_detachedro   )r1  r2  r3  r4  r7  r   rJ   r   r   r   pr9  r:  rC  r8  rA  rB  s                 @@@r7   androtrace_mainrR  %  s[    +***********		A C(D!! 	R''))C	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 EE(C  7>>qAABBB		AOOMM(A|$M777 +a666666	
 	
 	
 	
 	
 	
 	
 	

 	

1q''	$)9 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	%$y9999
5666Cxx!--//x)**A Cxx!--//xxxxxxxxxs   AAApackage_namec                     ddl m} ddlm}  |            } |            }|                                 |                                 |                    | ||dd           d S )Nr   r6  r   T)r3  dump)rF  r7  r   r   rG  rH  rI  )rS  r2  r7  r   rJ   rQ  s         r7   androdump_mainrV  [  s    ************		A		AOOMM,<dMFFFFFr   )NN)NNNN)NFNN)FF).rk   rs   r   r'   typingr   logurur   lxmlr   pygmentsr   pygments.formatters.terminalr   pygments.lexersr   androguard.corer	   r
   androguard.core.axmlr   r   r   r   r   r   androguard.uir   r   r   r   r   r   r8   rH   boolr   r   r   r   listr  intr0  rR  rV  r   r   r7   <module>rc     s   				 				  



                         : : : : : : - - - - - - * * * * * * * * 9 8 8 8 8 8 8 8 4 4 4 4 4 4 & & & & & & # # # # # # I I I I I I I I I I KO%
 %
	%
#t)$%
7<S$Y7G%
	%
 %
 %
 %
T " $ #)
 )
)

T	
)
 39)
 
sDy		)

 #t))
 
)
 )
 )
 )
` (,(,!V VVV V #t)$	V
 
V 39%V T	
V 
V V V Vr0 0 0 0 0 0c d    
bG bs bt b b b bJD3iD$'D37D?CD	D D D DN$&# $&S $&C $&D $& $& $& $&T 	3+ 3+3+s)3+ 3+ 	3+
 
3+ 3+ 3+ 3+l	G 	GDI 	G$ 	G 	G 	G 	G 	G 	Gr   