+
    WDj#                        ^ RI t ^ RIt^ RIt^ RIt^ RIt^ RIt^ RIHt / RRbRRbRRbR	R
bRRbRRbRRbRRbRRbRRbRRbRRbRRbRRbRRbRRbRRbRR R!R R"R#R$R%R&R'R(R'R)R'R*R'R+R'/	CtR, t	R- t
R. tRAR/ ltRBR0 ltR1 tR2 tR3 t]R48X  do   ]! R54       ]	! 4       t]! R6] 24       ]! 4       t]! R7]! ]4       R824       ] F3  t]! R9]R:,           R;]R<,           R=]R>,           R?]R@,           24       K5  	  R# R# )C    N)ThreadPoolExecutorz00:11:22zSimulated Devicez00:0c:29VMwarez00:15:5dzMicrosoft Hyper-Vz08:00:27zOracle VirtualBoxzfc:fb:fbApplez00:17:f2zb8:27:ebzRaspberry Pi Foundationzdc:a6:32zc4:ad:34Samsungz00:26:37z70:8b:cdzASUSTek Computerz00:14:22Dellzcc:96:e5zb8:cb:29ze0:db:55zTP-Linkz50:c7:bfzc8:3a:35Tendaz04:d6:aaXiaomiz50:4f:3bzac:cf:85Huaweiz00:0e:3bIntelzc4:70:abzRuijie Networksz10:5f:02z00:74:9cz70:85:c4z9c:2b:a6c                 z    \         P                   ! \         P                  \         P                  4      p V P                  R4       V P	                  4       ^ ,          pV P                  4        V#   \         dA     \         P                  ! \         P                  ! 4       4      u #   \         d      R# i ; ii ; i)z'Mengambil alamat IP lokal komputer ini.	127.0.0.1)z8.8.8.8P   )	socketAF_INET
SOCK_DGRAMconnectgetsocknameclose	Exceptiongethostbynamegethostname)slocal_ips     JC:\Users\sesar\.gemini\antigravity\scratch\lan-guardian\network_scanner.pyget_local_ipr   '   s    MM&..&*;*;<			/"==?1%		 	''(:(:(<== 			s0   A,A/ /B:;(B&#B:&B61B:5B66B:c                    V '       g   R# V P                  RR4      P                  4       pVR,          p\        P                  VR4      # )z.Mendeteksi vendor berdasarkan OUI MAC address.Unknown-::N   NUnknown Device/Vendor)replacelowerMAC_VENDORSget)mac_address	mac_cleanprefixs   &  r   get_mac_vendorr)   7   s>    ##C-335Ir]F??6#:;;    c                    . p \         P                  P                  \         P                  P                  \         P                  P	                  \
        4      4      R4      p\         P                  P                  V4      '       d    \        VR4      ;_uu_ 4       p\        P                  ! V4      pV Fn  pVP                  R4      R8X  g   K  VP                  R4      '       g   K4  VP                  R4      '       g   KM  V P                  VR,          VR,          34       Kp  	  RRR4       \        \        V 4      4      #   + '       g   i     L$; i  \         d     L4i ; i)zTMembaca berkas servers.json untuk mengumpulkan daftar kredensial SSH yang tersimpan.zservers.jsonrtypesshusernamepasswordN)ospathjoindirnameabspath__file__existsopenjsonloadr%   appendr   listset)credsservers_pathfserversr   s        r   load_ssh_credentialsrB   ?   s    E77<<0I JN[L	ww~~l##	lC((A))A, AuuV}-!%%
2C2CjHYHYa
mQz]%CD ! ) E
 )(
  		sB   E /EE(E%E&E E	E E E#"E#c                   a a R.oV V3R lp\         P                  ! VR7      pRVn        VP                  4        VP	                  V4       S^ ,          # )z`Mengeksekusi gethostbyaddr dengan batasan waktu (timeout) dalam detik menggunakan daemon thread.Nc                  `   <  \         P                  ! S 4      S^ &   R#   \         d     R# i ; i)r   N)r   gethostbyaddrr   )ipress   r   worker%gethostbyaddr_timeout.<locals>.workerQ   s.    	))"-CF 		s    --)targetT)	threadingThreaddaemonstartr3   )rF   timeoutrH   trG   s   f&  @r   gethostbyaddr_timeoutrQ   N   sE    &C
 	'AAHGGIFF7Oq6Mr*   c           	     0    \        V R4      pV'       d   V^ ,          pV'       d	   W@8w  d   V#  Rp\        P                  ! \        P                  \        P                  4      pTP                  R4       TP                  YP^34       TP                  R4      w  rx\        T4      ^98  dW   T^8,          p	T	^ 8  dG   T^9^H P                  RRR7      P                  4       p
RP                  R	 T
 4       4      pT'       d   T# T'       Ed$    \        P                  ! \        P                  \        P                  4      pTP                  R4       TP                  T ^34      pTP                  4        T^ 8X  d   T F  w  r ^ R
IpTP!                  4       pTP#                  TP%                  4       4       TP'                  YTRRR7       TP)                  R4      w  pppTP+                  4       P                  RRR7      P                  4       pTP                  4        T'       d   Tu # K  	  T P-                  R4      p\        T4      ^8X  d   T^,          R8X  d   R# T P-                  R4      R,          pT'       dM   TR8w  dF   TR8w  d?   TP-                  4       ^ ,          P/                  RR4      P/                  RR4      pT RT 2# RT 2#   \         d     ELi ; i  \         d     ELi ; i  \         d     EK  i ; i  \         d     Li ; i)zeMelakukan pencarian nama komputer menggunakan DNS, NetBIOS, SSH login, gateway check, dan OUI vendor.      ?s1            CKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA  ! g333333?i   zutf-8ignore)errors c              3   b   "   T F%  qP                  4       '       g
   VR 9   g   K!  Vx  K'  	  R# 5i)z-_N)isalnum).0cs   & r   	<genexpr>get_hostname.<locals>.<genexpr>s   s      $Q1		qDyQQs   /
/Ng      ?)r/   r0   rO   banner_timeouthostname.1zRouter-Gatewayr   r!   ,/r   z
Perangkat-)rQ   r   r   r   r   
settimeoutsendtorecvfromlendecodestripr3   SOCK_STREAM
connect_exr   paramiko	SSHClientset_missing_host_key_policyAutoAddPolicyr   exec_commandreadsplitr"   )rF   vendor	ssh_credsdns_resr^   querysockdata_	num_namesname
clean_namer   rG   userr0   rl   clientstdinstdoutstderrhnip_parts
last_octetclean_vendors   &&&                      r   get_hostnamer   \   s   'D1qzHHN
w}}V^^V->->?E9%--%t9r>RI1}Bu~,,WX,FLLNWW$Q$QQ
%%
 y	fnnf.@.@AALL,,Bx(CGGIax&/ND'!)!3!3!5::8;Q;Q;STr8UXilm060C0CJ0O-vv#[[]11'(1KQQS#%I  '0" xx}H
8}hqkS0 #r"J&I%&4K*K||~a(00b9AA#sKq--
|$$o  "  , %  		sf   $K K CK" A5L B%K4'L *L KK"K10K14L?L LL LLc                0   \         P                   ! \         P                  \         P                  4      pVP                  R4       \	        ^^4       F  pV  RV 2p VP                  RV^34       K!  	  VP                  4        R#   \         d     KC  i ; i)z\Melakukan UDP sweep cepat ke seluruh subnet /24 untuk memicu cache ARP sistem secara instan.g{Gz?r_   s   ARP_TRIGGERN)r   r   r   rd   rangere   r   r   )subnet_prefixrw   irF   s   &   r   
ping_sweepr      s~    ==):):;DOOD1c]as#	KKS	2	  	JJL  		s   BBBc                   . p Rp\         P                  R8X  d=   \        P                  ! 4       pV;P                  \        P
                  ,          un        \        P                  ! RR.RVR7      p\        P                  ! R\        P                  4      pVP                  V4      pVP                  RV R	R
RRR\        P                  ! 4       RRRR/4       V 0pV F  w  rxp	VR8X  g6   VP                  R4      '       g   VP                  R4      '       g   VR8X  d   KD  Wv9   d   KL  VP                  V4       VP!                  4       P#                  RR4      p
\%        V
4      pVP                  RVR	V
RVRRVP#                  RR4       2RV	RR/4       K  	  V#   \&         d   p\)        RT 24        Rp?T# Rp?ii ; i)z?Mengeksekusi 'arp -a' dan mem-parsing perangkat yang ditemukan.Nntarpz-aT)universal_newlinesstartupinfoz,^\s*([0-9\.]+)\s+([0-9a-fA-F\-]{17})\s+(\w+)rF   maczN/A (Host Lokal)rs   zPC Host Andar^   r-   z
Local Hostis_localz255.255.255.255z224.z239.r   r   r   zIP-r_   FzError parsing ARP table: )r1   r{   
subprocessSTARTUPINFOdwFlagsSTARTF_USESHOWWINDOWcheck_outputrecompile	MULTILINEfindallr;   r   r   
startswithaddr#   r"   r)   r   print)r   devicesr   outputpatternmatchesseen_ipsrF   r   	link_typer'   rs   es   &            r   parse_arp_tabler      s   G3/77d?$002K:#B#BB((DM##
 **Lbll[//&) 	(%n**,L
 	 :")BY&&"--*?*?2==QWCXCX\^bm\m~LL		++C5I#I.F NNby&c"**S#"6!78	E  #*. N  /)!-..N/s%   C<F F BF F?&F::F?c                     \        4       p V R8X  d   . # V P                  R4      p\        V4      ^8  d   . # RP                  VR,          4      p\	        V4       \        V 4      pV# )z8Fungsi utama untuk memindai jaringan lokal secara cepat.r   r_   :N   N)r   rr   rg   r3   r   r   )r   r   r   r   s       r   scan_networkr      sd    ~H;	 ~~c"H
8}q	HHXb\*M } h'GNr*   __main__z$Memulai pemindaian jaringan lokal...z
IP Lokal: z
Ditemukan z perangkat:z- IP: rF   z | MAC: r   z | Hostname: r^   z | Vendor: rs   )rS   )r   N)r1   r   r   r   rK   r9   concurrent.futuresr   r$   r   r)   rB   rQ   r   r   r   r   __name__r   r   resultsrg   dev r*   r   <module>r      s   	 	     1" # #	
   ) ) 	 	 "    	  	!" #$ !!!!!5: <@%D8t( z	
01~H	Jxj
!"nG	Js7|nK
01s4yk#e*]3z?BSS^_bck_l^mno  r*   