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    
Size: Mime:
B

ž5ÜuLj]ã
@sxdZddlZddlZddlZddlZddlZddlZddlZddlm	Z	mZddl
mZe d¡ 
ej¡y`ddlmZddlmZddlmZdd	lmZmZmZmZdd
lmZddlmZmZmZWnNek
rZz.ejdkròed
ƒn
ee›ƒe  ej!¡WddZ[XYnXddl"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*Gdd„dƒZ+Gdd„dej,ƒZ-Gdd„dej,ƒZ.dS)z`
profiler.fakeap
~~~~~~~~~~~~~~~

fake ap code handling beaconing and sniffing for the profiler
éN)ÚsleepÚtime)ÚDictz
scapy.runtime)ÚDot11Beacon)ÚDot11Elt)ÚDot11ProbeResp)ÚDot11Ú	Dot11AuthÚRadioTapÚScapy_Exception)Úconf)Ú
get_if_hwaddrÚget_if_raw_hwaddrÚsniffZscapyz required module scapy not found.é)ÚCHANNELSÚDOT11_SUBTYPE_ASSOC_REQÚDOT11_SUBTYPE_AUTH_REQÚDOT11_SUBTYPE_BEACONÚDOT11_SUBTYPE_PROBE_REQÚDOT11_SUBTYPE_PROBE_RESPÚDOT11_SUBTYPE_REASSOC_REQÚDOT11_TYPE_MANAGEMENTc@sHeZdZdZeedœdd„ƒZeeedœdd„ƒZee	dœdd	„ƒZ
d
S)Ú_UtilszFake AP helper functions)Úreturnc*Csb| d¡ d¡}t| d¡ d¡ƒ}d}|tdkr8d}| d¡ d¡}| d¡ d¡}t|d	ƒ}td
|d}dd
ddddddg}tdt|ƒd}	t|gƒ}td|d}
d}td|d}d}
td|
d}|rÒd}nd}td|d}d}td|d}t|ƒd}td |d}d!}td"|d}d#}td$|d}d%}td&|d}d'}td(|d}d)}td*|d}d+}td,|d} d-}!td,|!d}"d.}#td,|#d}$d/}%td,|%d}&d0}'td,|'d}(|rÎ||	|
||||})nd|r||	|
||||||||})n0||	|
|||||||||})|rB|)|})n|)| |"|$|&|(|})|)S)1z*Build base frame for beacon and probe respÚGENERALÚssidÚchannelFZ6GTÚft_disabledÚhe_disabledzutf-8ZSSID)ZIDÚinfoéŒéé˜é$é°éHé`élZRatesZDSsetsZTIMsïÿÿÿÿ é-s¬¬¬€sEÂé6s¬¬¬¬Œé0sé=séFs@és2€ªÿªÿé¿s$éÀsPòФ'¤BC^b2/éÝs##
@p‰€ªªªª{ÇqÇqÇqÇqéÿs$ô?üÿs's&	¤('¤(Bs(br(s;)ÚgetÚintrÚbytesr)*ÚconfigrrZis_6ghzrrZ
ssid_bytesZessidZ
rates_dataZratesZdssetZ	dtim_dataZdtimZht_cap_dataZht_capabilitiesZrsn_dataZmobility_domain_dataZmobility_domainZrsnZht_info_dataZht_informationZrm_enabled_dataZrm_enabled_capZ
extended_dataÚextendedZvht_cap_dataZvht_capabilitiesZvht_op_dataZ
vht_operationZwmm_dataZwmmZhe_cap_dataZhe_capabilitiesZ
he_op_dataZhe_operationZspatial_reuse_dataZ
spatial_reuseZmu_edca_dataZmu_edcaZsix_ghz_cap_dataZsix_ghz_capÚframe©r9úŽ/build/wlanpi-profiler-7IIg1Q/wlanpi-profiler-1.0.11/debian/wlanpi-profiler/opt/wlanpi-profiler/lib/python3.7/site-packages/profiler/fakeap.pyÚbuild_fake_frame_ies<sn

	.0

z_Utils.build_fake_frame_ies)Ú	interfacercCsByt|ƒ}Wn0tk
r<d dd„t|ƒdDƒ¡}YnX|S)z-Get the mac address for a specified interfaceú:css|]}t|dƒVqdS)Z02xN)Úformat)Ú.0Úxr9r9r:ú	<genexpr>Æsz!_Utils.get_mac.<locals>.<genexpr>r)r
rÚjoinr)r<Úmacr9r9r:Úget_macÀs
"z_Utils.get_maccCs|jdd|_|jS)z6Update a sequence number of type multiprocessing Valueri)Úvalue)Úsequence_numberr9r9r:Únext_sequence_numberÉsz_Utils.next_sequence_numberN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ústaticmethodrr;ÚstrrDr4rGr9r9r9r:r9srcsFeZdZdZejdœ‡fdd„Zeddœdd„Zdd	œd
d„Z‡Z	S)Ú	TxBeaconszHandle Tx of fake AP frames)Ú	boot_timec

sÌtt|ƒ ¡t t ¡dd d¡d¡|_|j 	dt
 ¡t
 ¡¡||_
||_||_| d¡ d¡|_| d¡ d¡|_| d¡ d	¡}|sštd
ƒ‚t|ƒ|_|jt_d|_ytj|jd|_WnLtk
r}z,d|jkr|j d
|j¡t tj ¡Wdd}~XYnX|js8|j !d|j¡t tj ¡|j 	|jj"¡d|_#|Tt$ %|j¡|_&t't(t)d|j&|j&d}t*dd}t$ +|j¡}	t,ƒ|||	|_-WdQRX|j .d¡| /|j#|j0¡dS)Nrrú/éÿÿÿÿzbeacon pid: %s; parent pid: %srrr<rz%cannot determine channel to beacon on)ÚifacezNo such devicez.TxBeacons: no such device (%s) ... exiting ...z>TxBeacons(): unable to create L2socket with %s ... exiting ...g-Cëâ6º?zff:ff:ff:ff:ff:ff)ÚtypeÚsubtypeÚaddr1Úaddr2Úaddr3i)Úcapzstarting beacon transmissions)1ÚsuperrNÚ__init__ÚloggingÚ	getLoggerÚinspectÚstackÚsplitÚlogÚdebugÚosÚgetpidÚgetppidrOr6rFr3rr<Ú
ValueErrorr4rÚ	scapyconfrRÚl2socketÚL2socketÚOSErrorÚstrerrorÚwarningÚsysÚexitÚsignalÚSIGALRMÚerrorÚoutsZbeacon_intervalrrDrCrrrrr;r
Úbeacon_framer ÚeveryÚbeacon)
Úselfr6rOÚlockrFrrpZdot11Zdot11beaconZbeacon_frame_ies)Ú	__class__r9r:rZÓsR"



zTxBeacons.__init__N)ÚintervalrcCs,tƒ}x |ƒt|tƒ||ƒqWdS)zAttempt to address beacon driftN)rr)rurxÚtaskÚ
start_timer9r9r:rs
szTxBeacons.every)rc
Cs–|j}|j ¡t |j¡|_WdQRXy|j |¡WnVtk
r}z8x2dD]*}||jkrR|j	 
d|j¡t 
tj¡qRWWdd}~XYnXdS)zUpdate and Tx Beacon FrameN)zNetwork is downzNo such devicez@beacon(): network is down or no such device (%s) ... exiting ...)rrrFÚget_lockrrGrgÚsendrirjr`rkr<rlrmrnro)rur8rpÚeventr9r9r:rts

zTxBeacons.beacon)
rHrIrJrKÚdatetimerZÚfloatrsrtÚ
__classcell__r9r9)rwr:rNÐs4rNcs`eZdZdZejdœ‡fdd„Zddœdd„Zddœd	d
„Zddœdd„Zddœd
d„Z	‡Z
S)ÚSnifferz/Handle sniffing probes and association requests)rOc

s˜tt|ƒ ¡t t ¡dd d¡d¡|_|j 	dt
 ¡t
 ¡¡||_
||_||_||_| d¡ d¡|_| d¡ d¡|_| d¡ d	¡}|s td
ƒ‚t|ƒ|_| d¡ d¡|_i|_d|_|jrÔd
|_|jt_d|_ytj|jd|_WnLtk
rB}z,d|j kr2|j !d|j¡t" #t$j%¡Wdd}~XYnX|jsh|j &d|j¡t" #t$j%¡|j 	|jj'¡|j(|_)|j*|_+|j,|_-|j.|_/|lt0 1|j¡}	t0 2|j¡|_3t4ƒt5t6|j3|j3dt7dd|	|_8t4ƒt5t9|j3|j3dt:dd|_;WdQRXyt<|j|j)d|jdWnjt=k
r’}zJdt>|ƒkrl|jj?d|jdd|j @d¡n|jj?dddt$j%Wdd}~XYnXdS)NrrrPrQzsniffer pid: %s; parent pid: %srrr<rz!cannot determine channel to sniffÚlisten_onlyzqtype mgt subtype probe-req or type mgt subtype auth or type mgt subtype assoc-req or type mgt subtype reassoc-reqÚ)rRzNo such devicez,Sniffer: No such device (%s) ... exiting ...z<Sniffer(): unable to create L2socket with %s ... exiting ...)rTrVrWi)rXé)Zseqnum)rRZprnÚstoreÚfilterzailed to compile filterz4we had a problem creating BPF filters on L2socket/%sT)Úexc_infoz!try running with --no_bpf_filtersz1scappy.sniff() problem in fakeap.py sniffer(): %s)ArYrrZr[r\r]r^r_r`rarbrcrdÚqueuerOr6rFr3rr<rer4rr‚Ú
assoc_reqsZ
bpf_filterZno_bpf_filtersrfrRrgrhrirjrkrlrmrnrorprqÚreceived_frameZreceived_frame_cbÚprobe_responseÚdot11_probe_request_cbÚ	assoc_reqÚdot11_assoc_request_cbÚauthÚ
dot11_auth_cbrr;rDrCr
rrrÚprobe_response_framerr	Ú
auth_framerrrMÚ	exceptionr )
rur6rOrvrFrˆÚargsrrpZprobe_resp_ies)rwr9r:rZ9sv	"

(.zSniffer.__init__N)rcCs¢|jtkr$|j|jkrž| |j¡nz|jtkrdt|krž|tj}||j	ksX|tj
dkrž| |¡n:|jtksx|jt
krž|j|jkrŽ| |¡|jrž| |¡dS)z%Handle incoming packets for profilingrN)rTrrUrCrrVrrr rÚlenrŒrrrŽr‚)ruÚpacketrr9r9r:rŠ–s





zSniffer.received_framec
Csž|j}|j ¡t |j¡|_WdQRX|j|t_y|j 	|¡WnRt
k
r˜}z4x.dD]&}||jkr^|j 
d¡t tj¡q^WWdd}~XYnXdS)z1Send probe resp to assist with profiler discoveryN)zNetwork is downzNo such devicezCprobe_response(): network is down or no such device ... exiting ...)r‘rFr{rrGrVrrUrgr|rirjr`r“rlrmrnro)ruZ
probe_requestr8rpr}r9r9r:rܻs

zSniffer.probe_responsecCs,||j|j<|j d|j¡|j |¡dS)z1Put association request on queue for the Profilerz!adding assoc req from %s to queueN)r‰rVr`rarˆÚput)rur8r9r9r:r»szSniffer.assoc_reqc
Cs |j}||t_|j ¡t |j¡d|_WdQRXy|j |¡WnRt	k
rš}z4x.dD]&}||j
kr`|j d¡t
 tj¡q`WWdd}~XYnXdS)zGSend authentication frame to get the station to prompt an assoc requestrN)zNetwork is downzNo such devicez9auth(): network is down or no such device ... exiting ...)r’rrUrFr{rrGrgr|rirjr`rkrlrmrnro)ruZreceiverr8rpr}r9r9r:rÁs


zSniffer.auth)rHrIrJrKr~rZrŠr‹rrr€r9r9)rwr:r6sZr)/rKr~r]r[ÚmultiprocessingrbrnrlrrÚtypingrr\ÚsetLevelÚERRORZ	scapy.allrrrrr	r
rrrfr
rrÚModuleNotFoundErrorrpÚnameÚprintrmÚSIGABRTÚ	constantsrrrrrrrrrÚProcessrNrr9r9r9r:Ú<module>
s6


(f