ESP32 တွင် Wifi ဖြင့် ဂိမ်းဆော့ခြင်း။

ESP32 တွင် Wifi ဖြင့် ဂိမ်းဆော့ခြင်း။

WiFi ကွန်ရက်များကို ပိုင်းခြားစိတ်ဖြာရန် အိတ်ဆောင်ကိရိယာတစ်ခု ပြုလုပ်ရန် စိတ်ကူးရလာရခြင်းမှာ၊ ဤဆောင်းပါးတွင်.

အကြံဥာဏ်အတွက် သူတို့ကို ကျေးဇူးတင်ပါတယ်။ ကိုယ့်မှာ ဘာမှလုပ်စရာမရှိဘူး။

ကွန်ရက်နည်းပညာနယ်ပယ်တွင် ကျွန်ုပ်၏ အသိပညာကို တိုးပွားစေသော ရည်ရွယ်ချက်ဖြင့် အလုပ်အားလုံးကို ဝါသနာ၏ တစ်စိတ်တစ်ပိုင်းအနေဖြင့် လုပ်ဆောင်ခဲ့ပါသည်။ ဒီနှစ်အစပိုင်းကစပြီး တစ်ပတ်ကို 1..4 နာရီ ဖြည်းဖြည်းလုပ်ပါ။
လက်တွေ့သုံးဖို့ မစီစဉ်ထားဘူး။ အဲဒါတွေ။ ၎င်းသည် ဟက်ကာ၏ ကိရိယာ မဟုတ်ပါ။

လောလောဆယ်တွင် စီစဉ်ထားသည့် လုပ်ဆောင်နိုင်စွမ်းအားလုံး အလုပ်လုပ်နေပါသည်။ အရင်းအမြစ်အားလုံး၊ စုဝေးရန်အတွက် အဆင်သင့်ဖြစ်နေပြီ၊ ဒီမှာတင်ထားတယ်။. တပ်ဆင်ခြင်းဆိုင်ရာ ညွှန်ကြားချက်များ စသည်တို့လည်း ရှိပါသည်။ ဤမှတ်စုတွင်၊ ကျွန်ုပ်သည် github တွင် တင်ထားသော အချက်အလက်ကို ပွားမည်မဟုတ်ပါ။ သီးခြားဖော်ပြရန် လိုအပ်သည်ဟု ထင်မြင်မိကြောင်းသာ ပြောပြပါမည်။

"universal tool" နှင့် ESP32 ကိုရွေးချယ်ရခြင်းအကြောင်း ကျွန်ုပ်၏အမြင်

အမှန်တရားလို့ မယူဆပါဘူး။ လူတိုင်းမှာ ရှိကြတယ်။ ကျွန်ုပ်သည် ကျွန်ုပ်၏ ဟာ့ဒ်ဝဲရွေးချယ်မှုကို တရားမျှတစေရန် ကြိုးစားပါမည်။

ဆောင်းပါးတွင် အဆိုပြုထားသည်။ Linux ပေါင်းစပ်မှု (အစပိုင်းတွင် Raspberry Pi) + ထိန်းချုပ်ကိရိယာ (STM32) + CC1110 (8051 core) အသွင်သဏ္ဍာန်နှင့် “125kHz၊ NFC၊ 433mHz၊ USB၊ iButton၊ bluetooth၊ ?) ငါ့အတွက် မသင့်တော်ဘူး သို့သော်၊ ဒီပရောဂျက် ၎င်းသည် သီးသန့်တည်ရှိနေပုံရပြီး ပိတ်ထားပုံရသည် (flipper-zero github “ဤအဖွဲ့အစည်းတွင် အများသူငှာ သိုလှောင်စရာများ မရှိပါ။”) နှင့် အလွန်အသုံးများသော ဟာ့ဒ်ဝဲများဆီသို့ ဦးတည်သွားပါသည်။

ငါမှားတာဖြစ်နိုင်တယ်၊ နောင်မှာ စာရေးသူတွေက ဆော့ဖ်ဝဲရင်းမြစ်တွေကို လူသိရှင်ကြားထုတ်ပြလိမ့်မယ်။ ဒါပေမယ့် မဟုတ်ရင်၊ source code မပါဘဲ ဒီလို hardware အပိုင်းကို မဝယ်ပါဘူး။

"ကိရိယာ" အတွက် ကျွန်ုပ်၏လိုအပ်ချက်များ၊

အကွက်ငယ် (သေးငယ်လေ ပိုကောင်းလေ)။

ထို့ကြောင့်:

  • Built-in ဘက်ထရီ မလိုအပ်ပါ။ Wifi နှင့်အလုပ်လုပ်သောအခါတွင် လက်ရှိ > 100 mA ဖြင့်၊ built-in ဘက်ထရီသည် ကြီးသည် သို့မဟုတ် ကြာရှည်မခံပါ။ ထို့ကြောင့်၊ "ဘောက်စ်" ကို စံပါဝါဘဏ်ဖြင့် ပါဝါသုံးပါစေ။ ဘာပဲဖြစ်ဖြစ် ငါ့အိတ်ဆောင်/ကားထဲမှာ power bank အမြဲရှိတယ်။
  • အထဲမှာ Tools တွေနဲ့ Linux “box” တစ်ခုကို သိမ်းဆည်းထားပါ၊ ဘာသာစကားအားလုံးဖြင့် နှစ်ပေါင်းများစွာ ရေးသားခဲ့သည်။ သေးငယ်သောစခရင်နှင့် ထိန်းချုပ်ခလုတ်များ သေးငယ်သောကြောင့် ၎င်းသည် အဓိပ္ပါယ်မရှိပေ။ ရလဒ်များကို ကီးဘုတ်နှင့် မျက်နှာပြင်အပြည့်ဖြင့် သာမန်လက်ပ်တော့တစ်လုံးတွင် ကြည့်ရှု/လုပ်ဆောင်နိုင်သည်။
  • အစိတ်အပိုင်းများကို အလွယ်တကူ ရယူအသုံးပြုနိုင်ပြီး ကျယ်ကျယ်ပြန့်ပြန့် သိထားသင့်သည် (ရနိုင်သော SDK၊ ဥပမာများနှင့် စာရွက်စာတမ်းများစွာ)။

ထို့ကြောင့်၊ ကျွန်ုပ်အတွက်၊ ရွေးချယ်မှုမှာ ထင်ရှားသည် - ESP32။

ကျွန်ုပ်အား အရေးယူရန် လှုံ့ဆော်ပေးသည့် ဆောင်းပါးတွင် ဖော်ပြထားသည့် အလုပ်များအားလုံးအတွက်၊ ESP32 ၏ စွမ်းရည်များသည် လုံလောက်ပါသည်။ ငါလုပ်ချင်ဆုံးအရာက-

  • Bluetooth ဖြင့် ကစားပါ။
  • အရိုးရှင်းဆုံး ဟာ့ဒ်ဝဲဖြင့် 433mHz အကွာအဝေးဖြင့် ကစားပါ (လက်တွေ့လိုအပ်ချက်များအတွက် လုံလောက်သော amplitude modulation သာ)။

ESP32 တွင် ဆီမွှေးပျံပါ။

  • ESP32 SDK (IDF) သည် အနည်းငယ်မိုက်သည်။
  • လုပ်ဆောင်နိုင်စွမ်းအချို့ (ဥပမာ၊ WiFi အစုအဝေး) သည် စုစည်းထားသော static libraries ပုံစံဖြင့် အရင်းအမြစ်ကုဒ်မပါဘဲ လာပါသည်။
  • 5gHz လှိုင်းကို ပံ့ပိုးမထားပါ။ WiFi ဖြင့် လုပ်ဆောင်ရာတွင် ကန့်သတ်ချက်များနှင့် အဆင်မပြေမှုအချို့ရှိသည်။

သို့သော် စျေးနှုန်း/အရွယ်အစားသည် ဤချို့ယွင်းချက်များအတွက် လုံးဝလျော်ကြေးပေးပါသည်။

အဓိကဆော့ဖ်ဝဲလ်လုပ်ဆောင်ချက်

လုပ်ဆောင်ချက်တွေနဲ့ ပတ်သက်ပြီး ကျွန်တော့်ရဲ့ အမြင်ကို အတိုချုံးပြီး ပြောပြပေးပါ့မယ်။

ဆက်တင်များကို စီမံခန့်ခွဲခြင်းနှင့် SD မှ ဖိုင်များတင်ခြင်း။

ပြင်ပထိန်းချုပ်မှုအားလုံးကို သီးခြား မီနူးအကြောင်းအရာတစ်ခုဖြင့် စတင်သည့် ရိုးရှင်းသော ဝဘ်စာမျက်နှာမှတစ်ဆင့် လုပ်ဆောင်သည်။ ESP32 သည် WiFi AP မုဒ်တွင် စတင်ပြီး သတ်မှတ်ထားသော IP လိပ်စာတွင် စာမျက်နှာတစ်ခုကို ပြသသည်။

ESP32 cores များသည် အလွန်လျင်မြန်သော်လည်း လက်တွေ့စမ်းသပ်မှုများတွင် ပြသထားသည့်အတိုင်း၊ built-in ဝဘ်ဝန်ဆောင်မှု၏ တပြိုင်နက်တည်း လုပ်ဆောင်မှုများနှင့် ဥပမာအားဖြင့်၊ router မုဒ်သည် အလွန်သဟဇာတမဖြစ်ပါ။ ထို့ကြောင့်၊ ရွေ့လျားထိန်းချုပ်မှု မရှိသည့်အပြင် စာမျက်နှာကို အခြားမုဒ်များအားလုံးတွင် မရရှိနိုင်ပါ။
ထို့အပြင်၊ သုတေသနရည်ရွယ်ချက်အတွက် dynamic control မလိုအပ်ပါ။

Beacon ပက်ကေ့ဂျ်များနှင့်အလုပ်လုပ်သည့်မုဒ်

Modes တွေက banal ဖြစ်ပြီး သိပ်စိတ်ဝင်စားစရာမရှိပါဘူး။ “ဖြစ်နိုင်လို့ပါ” တဲ့။ စစ်ဆေးရန်။
တရားဝင် Espressif ဥပမာများတွင် ဥပမာများရှိသည်။

AP စာရင်းစကင်န်ဖတ်ခြင်းမုဒ်။
တကယ်တော့ ဘယ်စမတ်ဖုန်းမဆို ဒီလိုလုပ်နိုင်ပါတယ်။
ကောင်းပြီ၊ ဤမုဒ်တွင် AP စာရင်းကို သိမ်းဆည်းမည်ဖြစ်သည်။
Beacon spammer
ESP32 သည် လျှို့ဝှက် SSID နှင့် ကျပန်း MAC ဖြင့် AP တစ်ခုအနေဖြင့် စတင်ပြီး ကြိုတင်ဖန်တီးထားသော SSIDs စာရင်းတစ်ခုအရ [beacon frame] ကို စတင်ပေးပို့သည် (AP စာရင်းကို စကင်န်ဖတ်ခြင်းဖြင့် ကိုယ်တိုင်ဖန်တီးထားသည် သို့မဟုတ် အစောပိုင်းတွင် ရယူထားသည်)

WiFi packet sniffing မုဒ်

Espressif developer များသည် callback လုပ်ဆောင်ချက်မှတစ်ဆင့် WiFi packets အားလုံးကို လက်ခံရရှိရန် အပလီကေးရှင်းဆော့ဖ်ဝဲလ်အတွက် စွမ်းရည်ကို ထည့်သွင်းထားပါသည်။ အမှန်တော့ အားလုံးမဟုတ်ပါ၊ အဘယ်ကြောင့်ဆိုသော် သင်သည် ပုံသေချန်နယ်တစ်ခုအတွက် မုဒ်ကို သတ်မှတ်နိုင်သည်။

ပြန်ခေါ်သည့် လုပ်ဆောင်ချက်ကို လုပ်ဆောင်ရာတွင် အလွန်တင်းကျပ်သော အချိန်ကန့်သတ်ချက်များ ချမှတ်ထားသည်။ ၎င်းသည် ရိုးရှင်းသော ကိန်းဂဏန်းများ စုဆောင်းခြင်းမုဒ်အတွက် ပြဿနာမဖြစ်စေပါက၊ ထို့နောက် SD ကတ်ရှိ PCAP ဖိုင်မှတ်တမ်းတင်ခြင်းမုဒ်အတွက် ကျွန်ုပ်သည် မှတ်ဉာဏ်နှင့် semaphores တန်းစီဖြင့် အသံဖမ်းခြင်းကို စုစည်းရန် လိုအပ်သည်။ ပြန်ခေါ်ခြင်းလုပ်ငန်းစဉ်သည် core တစ်ခုတွင်အလုပ်လုပ်ပြီး SD သို့ အခြားတစ်ခုသို့ စာရေးသည့်လုပ်ငန်းစဉ်ကို ထည့်သွင်းစဉ်းစားခြင်း။

“ဆူညံသောလေ” ကာလအတွင်း၊ အချို့သော packet များ ပျောက်ဆုံးသွားသည် (တန်းစီရာတွင် နေရာမရှိသဖြင့် ၎င်းတို့ကို စွန့်ပစ်လိုက်သည်)၊ သို့သော် ညနေပိုင်းတွင် တိုက်ခန်းတစ်ခု၏ ပုံမှန် “လေ” ဖြင့် (မြင်နိုင်မှုအတွင်း 5..7 APs) PCAP တွင် မှတ်တမ်းတင်ခြင်း packet ဆုံးရှုံးမှုမရှိဘဲ ပြီးမြောက်သည်။

ထို့အပြင်၊ PCAP စောင့်ကြည့်ခြင်းနှင့် မှတ်တမ်းတင်ခြင်းအတွက်၊ packet ခေါင်းစီးများရှိ MAC စာရင်းအပေါ်အခြေခံ၍ စစ်ထုတ်ခြင်းမုဒ်တစ်ခု ရှိပါသည်။

ဥပမာအားဖြင့်၊ ကလပ်/ကဖေးတွင် လူတစ်ဦး၏အသွင်အပြင်ကို သူဝင်ရောက်ခြင်း သို့မဟုတ် မျက်မြင်တွင်ပင် မပေါ်လာမီ သင်ခြေရာခံနိုင်သည်။ လူအနည်းငယ်က လူသိများသော AP များသို့ WiFi နှင့် အလိုအလျောက်ချိတ်ဆက်မှုများကို ပိတ်သည်။ (အခုပိတ်လိုက်ပါပြီ..)

Wireshark တွင် မှတ်တမ်းတင်ထားသော အသွားအလာကို ကြည့်ခြင်းသည် မြေပုံများကို နားလည်ရန်အတွက် ပညာပေးနှင့် စိတ်ဝင်စားဖွယ်ဖြစ်သည် - အားလုံးအဆင်ပြေပါသည်။

Deauth ပက်ကေ့ဂျ်များနှင့် အလုပ်လုပ်ရန်အတွက် မုဒ်

မူရင်းအားဖြင့်၊ ဤပက်ကေ့ဂျ်များ ပေးပို့ခြင်းကို အရင်းအမြစ်မပါဘဲ ဝင်လာသော libnet80211.a စာကြည့်တိုက်တွင် တားမြစ်ထားသည်။ ဒါပေမယ့် bit နှစ်ခုကို tweak လုပ်ခြင်းအားဖြင့် ပြင်ရတာ လွယ်ပါတယ်။ ပထမတော့ patch တင်ရတာ တန်သလားလို့ သံသယဖြစ်မိတယ်။ ဒါပေမယ့် အထောက်အထားစိစစ်ခြင်းဘောင်စကင်ဖတ်ခြင်းမုဒ်ကိုဖွင့်ထားတဲ့ မတူညီတဲ့နေရာတွေတဝိုက်မှာ လမ်းလျှောက်ပြီးနောက်၊ "ဘာကြီးလဲ" လို့ တွေးခဲ့တယ်။ ထို့အပြင်၊ esp8266 တွင် ဤပက်ကေ့ဂျ်များပေးပို့ခြင်းကို ပိတ်မထားဘဲ esp8266 အတွက် github တွင် စည်းဝေးမှုများရှိသည်။

နေရာများစွာတွင် (ကျွန်တော်မပြောလိုပါ) ဤနည်းလမ်းမှတစ်ဆင့် မလိုလားအပ်သော AP များကို နှိမ်နင်းခြင်းကို အသုံးပြုပါသည်။ ဒါတွေက "အနိုင်ကျင့်သူ" တွေမဟုတ်ဘူး...

တစ်ချို့နေရာတွေမှာ ငါ့ဖုန်းကနေ အင်တာနက်ဖြန့်ချီတာ အလုပ်မလုပ်တဲ့အတွက်လည်း အံ့သြမိတယ်...

အဆိုပါပက်ကတ်များ၏ နံပါတ်နှင့် RSSI ကိုခြေရာခံသည့်မုဒ်သည် "ဘယ်ဘက် AP များမကြိုက်သည့်နေရာ" ကိုနားလည်ရန် အလွန်အသုံးဝင်ပါသည်။

router မုဒ်

ဤအင်္ဂါရပ်သည် စူးစမ်းလေ့လာရန် စိတ်ဝင်စားစရာအကောင်းဆုံးဖြစ်နိုင်သည်။

ESP32 သည် STA + SoftAP မုဒ်တွင် တစ်ပြိုင်နက်လုပ်ဆောင်မှုကို ပံ့ပိုးပေးသည်။ ထို့ကြောင့်၊ သင်သည် ၎င်းပေါ်တွင် ဂန္တဝင် NAT router ကို အကောင်အထည်ဖော်နိုင်သည်။

ကွန်ရက်အစုအဝေးကို ပံ့ပိုးရန်၊ Espressif သည် lwip စာကြည့်တိုက်၏ ခက်ရင်းကို အသုံးပြုသည်။

သို့သော် ပုံမှန်အားဖြင့်၊ စံတည်ဆောက်မှုတွင်၊ esp-lwip စာကြည့်တိုက်သည် netif အင်တာဖေ့စ် 'ap' (SoftAP) နှင့် 'st' (STA) အကြား ထပ်ဆင့်ပို့ခြင်းကို ပေးစွမ်းမည်မဟုတ်ပေ။

NAT မပါဘဲ သင်လုပ်နိုင်သည်၊ သို့သော် STA နှစ်ခု သို့မဟုတ် ထို့ထက်ပိုသော STA များကို 'ap' interface သို့ တစ်ပြိုင်နက်ချိတ်ဆက်ပြီး 'st' network interface မှ 'ap' သို့ IP လိပ်စာများကို တစ်ပြိုင်တည်းလုပ်ဆောင်ရာတွင် ပြဿနာရှိနေပါသည်။ ထို့ကြောင့် အခက်အခဲများသည် မထိုက်တန်ဘဲ NAT မှတဆင့် ပိုမိုလွယ်ကူပါသည်။

ထို့အပြင်၊ IP4 အတွက် NAT ၏ရိုးရှင်းသောအကောင်အထည်ဖော်မှုကိုထပ်လောင်းသည့် martin-ger မှလမ်းဆုံ esp-lwip တစ်ခုရှိသည်။

အလှကုန်သက်သက်ပြန်လုပ်ဖို့အတွက် လက်တွေယားယံနေပေမယ့် (ကျနော့်အမြင်အရတော့ ပရောဂျက်ရဲ့လမ်းခွဲမပါပဲ ပိုလွယ်ပေမယ့် LWIP မှတဆင့်Hook စည်းဝေးပွဲအတွင်း သတ်မှတ်ထားသည့် လုပ်ဆောင်ချက်များ)၊ သို့သော် ပျင်းရိခြင်းကို အောင်နိုင်ခဲ့ပြီး martin-ger မှ ရွေးချယ်မှုကို ယခင်အတိုင်း အသုံးပြုသည်။

Router မုဒ်တွင် IP4 အဝင်အထွက် လမ်းကြောင်းကို ကြည့်ရှုသည်။

အထူးသဖြင့်၊ မျက်နှာပြင်ပေါ်တွင်ပြသရန်နှင့် ဖိုင်တစ်ခုသို့ စာရင်းအင်းများစုဆောင်းရန်အတွက် အောက်ပါတို့မှ ထုတ်ယူထားသည်-

  • SoftAP ESP32 (DHCP ပက်ကတ်များ) နှင့် ချိတ်ဆက်ထားသော စက်အမည်
  • SoftAP ESP53 နှင့် ချိတ်ဆက်ထားသော စက်မှ DNS တောင်းဆိုမှုများ (UDP အပေါက် 32) မှ URL။

ထို့အပြင်၊ သင်သည် PCAP ဖိုင်တစ်ခုသို့ အသွားအလာမှတ်တမ်းတင်ခြင်းကို ဖွင့်နိုင်သည်။

ဤမုဒ်သည် အလွန်အသုံးဝင်သည်၊ ဥပမာ၊ ဥပမာ၊ သင့်ဖုန်းက ကွန်ရက်သို့ ပေးပို့သည့်အရာနှင့် ၎င်းသွားသည့်နေရာကို နားလည်ရန် အလွန်အသုံးဝင်သည်။

ကွန်ရက်ချိတ်ဆက်မှုအဆင့်တွင် softAP ESP32 အဝင်အထွက်လမ်းကြောင်းကို လုံးလုံးလျားလျား ထိန်းချုပ်နိုင်စေရန်အတွက် ဤမုဒ်ကိုအသုံးပြုရန် အခြားနည်းလမ်းများကို သင်စဉ်းစားနိုင်သည်- Ehernet ခေါင်းစီး (destMAC[6]+srcMAC[6]+type[2]) + payload (IP4၊ IP6၊ DCHP စသည်ဖြင့်) အမျိုးအစား။

မူအရ၊ ESP32 သည် အထူးနှောင့်နှေးမှုမရှိဘဲ ပုံမှန်အသွားအလာကိုဖြတ်သန်းကာ WiFi->WiFi router လုပ်ဆောင်ချက်ကို ကောင်းစွာကိုင်တွယ်ဖြေရှင်းနိုင်သည်။ သဘောတရားအရ၊ ESP32 ရှိ router မှတစ်ဆင့် ချိတ်ဆက်ထားသော ဖုန်းတွင် နှောင့်နှေးမှုများမှာ သိသာထင်ရှားခြင်းမရှိပေ။

ကံမကောင်းစွာဖြင့်၊ Espressif API သည် SoftAP EPS32 နှင့် ချိတ်ဆက်ထားသော MAC အတွက် စစ်ထုတ်မှုတစ်ခု သတ်မှတ်နိုင်စွမ်း မရှိပါ။ ယင်းအစား၊ ၎င်းသည် "မနှစ်သက်သော" ချိတ်ဆက်ထားပြီးသော STA များကို "နှုတ်ဆက်ရန်" (esp_wifi_deauth_sta) ဟု အဆိုပြုထားသည်။

ချိတ်ဆက်ထားသော STA များအတွက် MAC မှ စစ်ထုတ်ခြင်းကို esp_wifi_deauth_sta() ခေါ်ဆိုမှုမှတစ်ဆင့် လုပ်ဆောင်ရမည်ဖြစ်ပါသည်။

နိဂုံးချုပ်

ESP32 နဲ့ အလုပ်လုပ်တဲ့ မူဘောင်အတွင်းမှာ အသစ်အဆန်းတွေ မတွေ့ခဲ့ရပေမယ့် ရလဒ် (အရင်းအမြစ်ကုဒ်) က တစ်စုံတစ်ယောက်အတွက် စိတ်ဝင်စားစရာ ဖြစ်ကောင်းဖြစ်နိုင်ပါတယ်။

ကုဒ်ကို ပညာရေးအတွက်သာ ရေးသားထားခြင်းဖြစ်သည်ကို သတိပြုစေလိုပါသည်။ “hacking” စသည်တို့အတွက်၊ ၎င်းကို တမင်တကာ ဖန်တီးထားခြင်းသည် အလွန်အဆင်ပြေမည်မဟုတ်ပေ။

ပြီးသွားသော ပဝါများကို ဝါယာကြိုးဖြင့် ဂဟေဆော်ရန် ၁.၅-၂ နာရီ အချိန်ယူရသောကြောင့် ပုံနှိပ်ဆားကစ်ဘုတ်ကို မပြုလုပ်ခဲ့ပါ။

သင်လုပ်ပါက၊ အသင့်လုပ်ဘုတ်များမှမဟုတ်ဘဲ အစိတ်အပိုင်းတစ်ခုချင်းစီမှ စုစည်းရန် လိုအပ်သည်။ ထိုအခါအတိုင်းအတာများသည် ပို၍သေးငယ်လာလိမ့်မည်။

source: www.habr.com

မှတ်ချက် Add