Hapchwarae gyda Wifi ar ESP32

Hapchwarae gyda Wifi ar ESP32

Yr hyn a roddodd y syniad i mi wneud teclyn poced ar gyfer dadansoddi rhwydweithiau WiFi oedd yr erthygl hon.

Diolch iddyn nhw am y syniad. Doedd gen i ddim byd i'w wneud.

Gwnaethpwyd yr holl waith fel rhan o hobi er mwyn cael hwyl ac ehangu fy ngwybodaeth ym maes technolegau rhwydwaith. Yn araf bach, 1..4 awr yr wythnos, ers dechrau'r flwyddyn hon.
Ni chynlluniais unrhyw ddefnydd ymarferol. Y rhai. NID offeryn haciwr yw hwn.

Ar hyn o bryd, mae'r holl swyddogaethau a gynlluniwyd yn gweithio. Pob ffynhonnell, yn gwbl barod ar gyfer cynulliad, postio yma. Mae yna hefyd gyfarwyddiadau cynulliad, ac ati. Yn y nodyn hwn, ni fyddaf yn dyblygu'r wybodaeth a bostiwyd ar github. Ni fyddaf ond yn dweud wrthych yr hyn yr wyf yn ei ystyried yn angenrheidiol i'w ddisgrifio ar wahân.

Fy marn ar yr “offeryn cyffredinol” a’r rheswm dros ddewis yr ESP32

Dydw i ddim yn honni i fod y gwir. Mae gan bawb eu hunain. Byddaf yn ceisio cyfiawnhau fy newis o galedwedd.

Cynigir yn yr erthygl achos defnydd cyfuniad o Linux (Raspberry Pi i ddechrau) + “perifferolion” ar ffurf rheolydd (STM32) + CC1110 (8051 craidd) a'r cynllun i gyfyngu ar bopeth posibl yno (125kHz, NFC, 433mHz, USB, Nid oedd iButton, bluetooth, ?) yn ymddangos yn addas i mi. Fodd bynnag, y prosiect hwn Mae'n edrych yn debyg y bydd yn aros yn breifat ac ar gau (flipper-zero github “Nid oes gan y sefydliad hwn unrhyw ystorfeydd cyhoeddus.”) ac aeth tuag at galedwedd nad yw'n gyffredin iawn.

Efallai fy mod yn anghywir, ac yn y dyfodol bydd yr awduron yn sicrhau bod y ffynonellau meddalwedd ar gael i'r cyhoedd. Ond os na, yna ni fyddwn yn prynu darn o galedwedd o'r fath heb y cod ffynhonnell.

Fy ngofynion ar gyfer yr "offeryn"

Dylai'r blwch fod yn fach (y lleiaf yw'r gorau).

Felly:

  • Nid oes angen batri adeiledig. Gyda cherrynt > 100 mA wrth weithio gyda Wifi, bydd y batri adeiledig naill ai'n fawr neu ddim yn para'n hir. Felly, gadewch i'r “blwch” gael ei bweru gan fanc pŵer safonol. Beth bynnag, mae gen i fanc pŵer yn fy mhoced/car bob amser.
  • Cadwch “blwch” Linux gydag offer y tu mewn, wedi ei hysgrifenu dros lawer o flynyddoedd yn mhob iaith Gyda sgrin fach a set fach o fotymau rheoli, nid yw'n gwneud unrhyw synnwyr. Gellir gweld/prosesu'r canlyniadau ar liniadur arferol gyda bysellfwrdd a sgrin lawn.
  • Dylai cydrannau fod yn hawdd eu cyrraedd ac yn hysbys iawn (SDK ar gael, llawer o enghreifftiau a dogfennaeth).

O ganlyniad, i mi, roedd y dewis yn amlwg - ESP32.

Ar gyfer yr holl dasgau a nodir yn yr erthygl a ysgogodd fi i weithredu, mae galluoedd yr ESP32 yn eithaf digonol. Er mai'r mwyaf dwi dal eisiau ei wneud yw:

  • Chwarae o gwmpas gyda Bluetooth.
  • Chwarae o gwmpas gyda'r ystod 433mHz gyda'r caledwedd symlaf (dim ond modiwleiddio amplitude, sy'n ddigon ar gyfer anghenion ymarferol).

Plu yn yr eli yn ESP32

  • Mae'r ESP32 SDK (IDF) braidd yn drwsgl.
  • Daw rhai o'r swyddogaethau (pentwr WiFi, er enghraifft) heb god ffynhonnell ar ffurf llyfrgelloedd sefydlog wedi'u cydosod.
  • Nid yw'r band 5gHz yn cael ei gefnogi ac mae rhai cyfyngiadau a lletchwithdod wrth weithio gyda WiFi.

Ond mae'r pris / maint yn gwneud iawn am y diffygion hyn yn llwyr.

Prif swyddogaeth meddalwedd

Byddaf yn disgrifio'n fyr y swyddogaeth a fy marn am ...

Rheoli gosodiadau a lanlwytho ffeiliau o SD

Gwneir yr holl reolaeth allanol trwy dudalen we syml, a lansiwyd mewn eitem dewislen ar wahân. Mae'r ESP32 yn cychwyn yn y modd AP WiFi ac yn arddangos tudalen mewn cyfeiriad IP sefydlog.

Er bod creiddiau ESP32 yn eithaf cyflym, fel y mae arbrofion wedi dangos, nid yw gweithrediad cydamserol y gwasanaeth Gwe adeiledig ac, er enghraifft, y modd llwybrydd yn gydnaws iawn. Felly, nid oes rheolaeth ddeinamig ac nid yw'r dudalen ar gael ym mhob modd arall.
At hynny, nid oes angen rheolaeth ddeinamig at ddibenion ymchwil.

Dull o weithio gyda phecynnau Beacon

Mae'r modiau yn banal ac nid yn ddiddorol iawn. Wedi'i wneud "oherwydd ei fod yn bosibl." Am siec.
Ceir enghreifftiau yn enghreifftiau swyddogol Espressif.

Modd sganio rhestr AP.
Mewn gwirionedd, gall unrhyw ffôn clyfar wneud hyn.
Wel, yn y modd hwn bydd y rhestr AP yn cael ei gadw.
sbamiwr Beacon.
Mae'r ESP32 yn dechrau fel AP gyda SSID cudd a MAC ar hap ac yn dechrau anfon [ffrâm beacon] yn unol â rhestr o SSIDs a grëwyd ymlaen llaw (a grëwyd â llaw neu a gafwyd yn gynharach trwy sganio'r rhestr AP)

Modd sniffian pecyn WiFi

Mae datblygwyr Espressif wedi ychwanegu'r gallu i feddalwedd cymhwysiad dderbyn yr holl becynnau WiFi “yn hedfan yn yr awyr” trwy'r swyddogaeth galw'n ôl. Mewn gwirionedd nid pob un, gan mai dim ond ar gyfer un sianel sefydlog y gallwch chi osod y modd.

Gosodir cyfyngiadau amser llym iawn ar brosesu swyddogaeth galw'n ôl. Os nad yw hyn yn achosi problemau i'r dull casglu ystadegau syml, yna ar gyfer y modd recordio ffeiliau PCAP ar y cerdyn SD roedd yn rhaid i mi dinceri, gan drefnu'r recordiad trwy giw yn y cof a semaffores. Gan gymryd i ystyriaeth yr hynodrwydd bod y broses o alw'r alwad yn ôl yn rhedeg ar un craidd, a'r broses sy'n ysgrifennu at DC mewn un arall.

Yn ystod “aer swnllyd”, mae rhai pecynnau'n cael eu colli (does dim lle yn y ciw ac maen nhw'n cael eu taflu), ond gydag “aer” nodweddiadol o fflat gyda'r nos (5..7 AP o fewn gwelededd), gan gofnodi yn PCAP yn cael ei gwblhau heb golli pecyn.

Yn ogystal, ar gyfer monitro a chofnodi PCAP, mae modd hidlo yn seiliedig ar y rhestr MAC ym mhenawdau'r pecyn.

Er enghraifft, gallwch olrhain ymddangosiad person mewn clwb / caffi cyn iddo hyd yn oed fynd i mewn neu ymddangos yn y golwg. Ychydig iawn o bobl sy'n analluogi WiFi a chysylltiadau awtomatig i AP hysbys. (Rwy'n ei ddiffodd nawr ..)

Mae gwylio traffig a gofnodwyd yn Wireshark yn addysgiadol ac yn ddiddorol ar gyfer deall mapiau - mae'r cyfan yn gweithio.

Modd ar gyfer gweithio gyda phecynnau deauth

Yn ddiofyn, gwaherddir anfon y pecynnau hyn yn y llyfrgell libnet80211.a, sy'n dod heb ffynonellau. Ond mae'n hawdd ei drwsio trwy newid ychydig o ddarnau. Ar y dechrau roeddwn yn amau ​​a oedd yn werth postio patch. Ond ar ôl cerdded o gwmpas gwahanol leoedd gyda'r modd sganio ffrâm dad-ddilysu wedi'i droi ymlaen, meddyliais: “beth yw'r uffern.” At hynny, yn esp8266 nid yw danfoniad y pecynnau hyn ar gau ac mae cynulliadau ar github ar gyfer esp8266.

Mewn llawer o leoedd (ni ddywedaf ymhle) defnyddir atal APs diangen drwy'r dull hwn. Ac nid “bwlis” yw'r rhain...

Ac roeddwn i hefyd yn synnu nad oedd fy dosbarthiad Rhyngrwyd o fy ffôn yn gweithio mewn rhai mannau ...

Mae'r modd olrhain nifer a RSSI pecynnau o'r fath yn ddefnyddiol iawn i ddeall “lle nad yw'r APs chwith yn ei hoffi.”

modd llwybrydd

Mae'n debyg mai'r nodwedd hon yw'r mwyaf diddorol i'w harchwilio.

Mae ESP32 yn cefnogi gweithrediad ar yr un pryd yn y modd STA + SoftAP. Felly, gallwch chi weithredu llwybrydd NAT clasurol arno.

I gefnogi'r pentwr rhwydwaith, mae Espressif yn defnyddio fforc (bron heb ei newid) o'r llyfrgell lwip.

Ond, yn ddiofyn, yn yr adeilad safonol, nid yw'r llyfrgell esp-lwip yn darparu blaenyrru rhwng y rhyngwynebau netif 'ap' (SoftAP) ac 'st' (STA).

Wrth gwrs, gallwch chi ei wneud heb NAT, ond mae problem gyda chysylltu dau STA neu fwy â'r rhyngwyneb 'ap' ar yr un pryd a chydamseru cyfeiriadau IP o'r rhyngwyneb rhwydwaith 'st' i 'ap'. Felly nid yw'r anawsterau yn werth chweil ac mae'n haws trwy NAT.

Ar ben hynny, mae fforch esp-lwip gan martin-ger, sy'n ychwanegu gweithrediad syml o NAT ar gyfer IP4.

Er bod fy nwylo'n cosi i'w ail-wneud yn gosmetig yn unig (yn fy marn i, roedd yn haws heb fforch o'r prosiect, ond trwy LWIPHOOK swyddogaethau a ddiffiniwyd yn ystod y cynulliad), ond diogi oedd yn drech a defnyddir yr opsiwn o martin-ger fel y mae.

Yn y modd llwybrydd, edrychir ar draffig IP4 sy'n dod i mewn ac allan.

Yn benodol, mae'r canlynol yn cael ei dynnu ohono i'w arddangos ar y sgrin a chasglu ystadegau mewn ffeil:

  • Enw'r ddyfais a gysylltodd â SoftAP ESP32 (pecynnau DHCP)
  • URL o geisiadau DNS (porthladd CDU 53) o ddyfais sy'n gysylltiedig â SoftAP ESP32.

Yn ogystal, gallwch alluogi recordio traffig i ffeil PCAP.

Mae'r modd hwn yn ddefnyddiol iawn, er enghraifft, i ddeall, er enghraifft, beth mae'ch ffôn yn ei anfon i'r rhwydwaith a ble mae'n mynd.

Gallwch feddwl am ffyrdd eraill o ddefnyddio'r modd hwn, gan ystyried y gallu i reoli traffig sy'n dod i mewn ac allan o'r rhaglen ESP32 meddal yn llwyr ar lefel rhyngwyneb y rhwydwaith: pennawd Ehernet (destMAC[6]+srcMAC[6]+math[2]) + llwyth tâl (IP4, IP6, DCHP, ac ati math).

Mewn egwyddor, mae'r ESP32 yn ymdopi'n eithaf da â swyddogaeth llwybrydd WiFi-> WiFi, gan fynd trwy draffig arferol heb unrhyw oedi arbennig. Yn oddrychol, nid yw oedi cyn cysylltu ffôn trwy lwybrydd ar ESP32 yn amlwg.

Yn anffodus, nid oes gan API Espressif y gallu i osod hidlydd ar gyfer MAC sy'n gysylltiedig â SoftAP EPS32. Yn lle hynny, cynigir dweud “hwyl fawr” (esp_wifi_deauth_sta) i STAs sydd eisoes wedi’u cysylltu “na ddymunir”.

Roedd yn rhaid hidlo gan MAC ar gyfer STAs cysylltiedig trwy'r alwad esp_wifi_deauth_sta()

I gloi

Er na wnes i feddwl am unrhyw beth newydd o fewn y fframwaith o weithio gydag ESP32, efallai y bydd y canlyniad (cod ffynhonnell) yn ddiddorol i rywun.

Hoffwn nodi bod y cod wedi’i ysgrifennu at ddibenion addysgol yn unig. Ar gyfer “hacio”, ac ati, fe'i gwnaed yn fwriadol heb fod yn gyfleus iawn.

Wnes i ddim bwrdd cylched printiedig oherwydd fe gymerodd 1.5-2 awr i sodro'r sgarffiau gorffenedig â gwifren.

Ac os gwnewch chi, mae angen i chi ei gydosod nid o fyrddau parod, ond o gydrannau unigol. Yna bydd y dimensiynau hyd yn oed yn llai.

Ffynhonnell: hab.com

Ychwanegu sylw