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

ë
Y“<‹5ã
@sLdZddlZddlZddlZddlZddlZddlZddlZddlm	Z	mZddl
mZyHddlm
Z
mZmZmZmZmZmZddlmZddlmZmZmZWnLek
rìZz.ejdkrÆed	ƒn
ee›ƒe ej¡WddZ[XYnXd
dlm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'Gdd
„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)ÚDict)ÚDot11Ú	Dot11AuthÚDot11BeaconÚDot11EltÚDot11ProbeRespÚ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*Cs^| 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}|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||	|
|||||||||})|r>|)|})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-CSvHZ8/wlanpi-profiler-1.0.7~rc2/debian/wlanpi-profiler/opt/wlanpi-profiler/lib/python3.7/site-packages/profiler/fakeap.pyÚbuild_fake_frame_ies1sn

	.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:r.srcsFeZdZdZejdœ‡fdd„Zeddœdd„Zdd	œd
d„Z‡Z	S)Ú	TxBeaconszHandle Tx of fake AP frames)Ú	boot_timec		sPtt|ƒ ¡t t ¡dd d¡d¡|_|j 	dt
 ¡t
 ¡¡||_
||_||_| d¡ d¡|_| d¡ d¡|_| d¡ d	¡}|sštd
ƒ‚t|ƒ|_|jt_tj|jd|_|j 	|jj¡d|_|Tt |j¡|_tt t!d
|j|jd}t"dd}t #|j¡}t$ƒ||||_%WdQRX|j &d¡| '|j|j(¡dS)Nrrú/éÿÿÿÿzbeacon pid: %s; parent pid: %srrr<rz%cannot determine channel to beacon on)Úifaceg-Cëâ6º?zff:ff:ff:ff:ff:ff)ÚtypeÚsubtypeÚaddr1Úaddr2Úaddr3i)Úcapzstarting beacon transmissions))ÚsuperrNÚ__init__ÚloggingÚ	getLoggerÚinspectÚstackÚsplitÚlogÚdebugÚosÚgetpidÚgetppidrOr6rFr3rr<Ú
ValueErrorr4rÚ	scapyconfrRÚL2socketÚl2socketÚoutsZbeacon_intervalrrDrCrrrrr;r
Úbeacon_framer ÚeveryÚbeacon)	Úselfr6rOÚlockrFrZdot11Zdot11beaconZbeacon_frame_ies)Ú	__class__r9r:rZÈs:"


zTxBeacons.__init__N)ÚintervalrcCs,tƒ}x |ƒt|tƒ||ƒqWdS)zAttempt to address beacon driftN)rr)rmrpÚtaskÚ
start_timer9r9r:rkñszTxBeacons.every)rc
Cs’|j}|j ¡t |j¡|_WdQRXy|j |¡WnRtk
rŒ}z4x.dD]&}||jkrR|j	 
d¡t t
j¡qRWWdd}~XYnXdS)zUpdate and Tx Beacon FrameN)zNetwork is downzNo such devicez
exiting...)rjrFÚget_lockrrGrhÚsendÚOSErrorÚstrerrorr`Ú	exceptionÚsysÚexitÚsignalÚSIGTERM)rmr8ÚerrorÚeventr9r9r:rløs

zTxBeacons.beacon)
rHrIrJrKÚdatetimerZÚfloatrkrlÚ
__classcell__r9r9)ror:rNÅs&rNcs`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_tj|jd|_|j 	|jj¡|j |_!|j"|_#|j$|_%|j&|_'|lt( )|j¡}t( *|j¡|_+t,ƒt-t.|j+|j+dt/dd||_0t,ƒt-t1|j+|j+dt2dd|_3WdQRXt4|j|j!d|jddS)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Ú)rR)rTrVrWi)rXé)Zseqnum)rRZprnÚstoreÚfilter)5rYrrZr[r\r]r^r_r`rarbrcrdÚqueuerOr6rFr3rr<rer4rr‚Ú
assoc_reqsZ
bpf_filterZno_sniffer_filterrfrRrgrhriÚ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_framer)	rmr6rOrnrFr‡ÚargsrZprobe_resp_ies)ror9r:rZsF	"
(.zSniffer.__init__N)rcCsš|jtkr$|j|jkr–| |j¡nr|jtkr\|tj}||j	ksP|tj
dkr–| |¡n:|jtksp|jt
kr–|j|jkr†| |¡|jr–| |¡dS)z%Handle incoming packets for profilingrN)rTrrUrCrrVrrr rÚlenr‹rrrr‚)rmÚpacketrr9r9r:r‰\s





zSniffer.received_framec	CsF|j}|j ¡t |j¡|_WdQRX|j|t_|j 	|¡dS)z1Send probe resp to assist with profiler discoveryN)
rrFrsrrGrVrrUrhrt)rmZ
probe_requestr8r9r9r:rŠos
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)rmr8r9r9r:rŒxszSniffer.assoc_reqc	CsH|j}||t_|j ¡t |j¡d|_WdQRX|j |¡dS)zGSend authentication frame to get the station to prompt an assoc requestrN)	r‘rrUrFrsrrGrhrt)rmZreceiverr8r9r9r:rŽ~s

zSniffer.auth)rHrIrJrKr~rZr‰rŠrŒrŽr€r9r9)ror:rs<	r),rKr~r]r[ÚmultiprocessingrbrzrxrrÚtypingrZ	scapy.allrrrrr	r
rrrfr
rrÚModuleNotFoundErrorr|ÚnameÚprintryÚSIGABRTÚ	constantsrrrrrrrrrÚProcessrNrr9r9r9r:Ú<module>
s.$


(U