వైఫై నెట్వర్క్లను విశ్లేషించడానికి పాకెట్ టూల్ను తయారు చేయాలనే ఆలోచన నాకు వచ్చింది
ఆలోచన చేసినందుకు వారికి ధన్యవాదాలు. నేను చేసేదేమీ లేదు.
నెట్వర్క్ టెక్నాలజీల రంగంలో సరదాగా గడపడం మరియు నా పరిజ్ఞానాన్ని విస్తరించుకోవడం కోసం అన్ని పనులు ఒక అభిరుచిలో భాగంగా జరిగాయి. ఈ సంవత్సరం ప్రారంభం నుండి నెమ్మదిగా, వారానికి 1..4 గంటలు.
నేను ఎటువంటి ఆచరణాత్మక ఉపయోగాన్ని ప్లాన్ చేయలేదు. ఆ. ఇది హ్యాకర్ల సాధనం కాదు.
ప్రస్తుతానికి, అన్ని ప్రణాళికాబద్ధమైన కార్యాచరణ పని చేస్తోంది. అన్ని మూలాధారాలు, అసెంబ్లీకి పూర్తిగా సిద్ధంగా ఉన్నాయి,
"యూనివర్సల్ టూల్" పై నా అభిప్రాయం మరియు ESP32ని ఎంచుకోవడానికి గల కారణం
నేను నిజం అని చెప్పుకోను. ప్రతి ఒక్కరికి వారి స్వంతం ఉంటుంది. నేను హార్డ్వేర్ ఎంపికను సమర్థించుకోవడానికి ప్రయత్నిస్తాను.
బహుశా నేను తప్పు చేసి ఉండవచ్చు మరియు భవిష్యత్తులో రచయితలు సాఫ్ట్వేర్ మూలాలను పబ్లిక్గా అందుబాటులో ఉంచుతారు. కాకపోతే, సోర్స్ కోడ్ లేకుండా నేను అలాంటి హార్డ్వేర్ను కొనుగోలు చేయను.
"సాధనం" కోసం నా అవసరాలు
పెట్టె చిన్నదిగా ఉండాలి (చిన్నది మంచిది).
అందువలన:
- అంతర్నిర్మిత బ్యాటరీ అవసరం లేదు. Wifiతో పని చేస్తున్నప్పుడు ప్రస్తుత > 100 mAతో, అంతర్నిర్మిత బ్యాటరీ పెద్దదిగా ఉంటుంది లేదా ఎక్కువ కాలం ఉండదు. అందువల్ల, "బాక్స్" ప్రామాణిక పవర్ బ్యాంక్ ద్వారా శక్తిని పొందనివ్వండి. ఏమైనా, నా జేబులో/కారులో ఎప్పుడూ పవర్ బ్యాంక్ ఉంటుంది.
- లోపల సాధనాలతో Linux “బాక్స్” ఉంచండి, అన్ని భాషలలో చాలా సంవత్సరాలుగా వ్రాయబడింది చిన్న స్క్రీన్ మరియు తక్కువ నియంత్రణ బటన్లతో, ఇది అర్ధవంతం కాదు. పూర్తి కీబోర్డ్ మరియు స్క్రీన్తో సాధారణ ల్యాప్టాప్లో ఫలితాలను వీక్షించవచ్చు/ప్రాసెస్ చేయవచ్చు.
- భాగాలు సులభంగా అందుబాటులో ఉండాలి మరియు విస్తృతంగా తెలిసినవి (అందుబాటులో ఉన్న SDK, అనేక ఉదాహరణలు మరియు డాక్యుమెంటేషన్).
ఫలితంగా, నాకు, ఎంపిక స్పష్టంగా ఉంది - ESP32.
చర్య తీసుకోవడానికి నన్ను ప్రేరేపించిన కథనంలో పేర్కొన్న అన్ని పనులకు, ESP32 సామర్థ్యాలు సరిపోతాయి. నేను ఇంకా ఎక్కువగా చేయాలనుకున్నప్పటికీ:
- బ్లూటూత్తో ఆడుకోండి.
- సరళమైన హార్డ్వేర్తో 433mHz పరిధితో ఆడుకోండి (ఆంప్లిట్యూడ్ మాడ్యులేషన్ మాత్రమే, ఇది ఆచరణాత్మక అవసరాలకు సరిపోతుంది).
ESP32లో లేపనంలో ఫ్లై చేయండి
- ESP32 SDK (IDF) కొంత వికృతంగా ఉంది.
- కొన్ని ఫంక్షనాలిటీ (WiFi స్టాక్, ఉదాహరణకు) అసెంబుల్డ్ స్టాటిక్ లైబ్రరీల రూపంలో సోర్స్ కోడ్ లేకుండా వస్తుంది.
- 5gHz బ్యాండ్కు మద్దతు లేదు మరియు WiFiతో పని చేయడంలో కొన్ని పరిమితులు మరియు వికృతం ఉన్నాయి.
కానీ ధర/పరిమాణం ఈ లోపాలను పూర్తిగా భర్తీ చేస్తుంది.
ప్రధాన సాఫ్ట్వేర్ కార్యాచరణ
నేను కార్యాచరణ మరియు నా అభిప్రాయాన్ని క్లుప్తంగా వివరిస్తాను...
సెట్టింగ్లను నిర్వహించడం మరియు SD నుండి ఫైల్లను అప్లోడ్ చేయడం
అన్ని బాహ్య నియంత్రణ ఒక సాధారణ వెబ్ పేజీ ద్వారా చేయబడుతుంది, ప్రత్యేక మెను ఐటెమ్లో ప్రారంభించబడింది. ESP32 WiFi AP మోడ్లో ప్రారంభమవుతుంది మరియు స్థిర IP చిరునామాలో పేజీని ప్రదర్శిస్తుంది.
ESP32 కోర్లు చాలా వేగంగా ఉన్నప్పటికీ, ప్రయోగాలు చూపినట్లుగా, అంతర్నిర్మిత వెబ్ సేవ యొక్క ఏకకాల ఆపరేషన్ మరియు, ఉదాహరణకు, రూటర్ మోడ్ చాలా అనుకూలంగా లేవు. అందువల్ల, డైనమిక్ నియంత్రణ లేదు మరియు అన్ని ఇతర మోడ్లలో పేజీ అందుబాటులో లేదు.
అంతేకాకుండా, పరిశోధన ప్రయోజనాల కోసం డైనమిక్ నియంత్రణ అవసరం లేదు.
బీకాన్ ప్యాకేజీలతో పని చేసే విధానం
మోడ్లు సామాన్యమైనవి మరియు చాలా ఆసక్తికరంగా లేవు. "ఇది సాధ్యమే కాబట్టి." చెక్ కోసం.
అధికారిక ఎస్ప్రెస్సిఫ్ ఉదాహరణలలో ఉదాహరణలు ఉన్నాయి.
AP జాబితా స్కానింగ్ మోడ్.
వాస్తవానికి, ఏదైనా స్మార్ట్ఫోన్ దీన్ని చేయగలదు.
సరే, ఈ మోడ్లో AP జాబితా సేవ్ చేయబడుతుంది.
బెకన్ స్పామర్.
ESP32 దాచిన SSID మరియు యాదృచ్ఛిక MACతో AP వలె ప్రారంభమవుతుంది మరియు ముందుగా రూపొందించిన SSIDల జాబితా ప్రకారం [బీకాన్ ఫ్రేమ్] పంపడం ప్రారంభిస్తుంది (మాన్యువల్గా సృష్టించబడింది లేదా AP జాబితాను స్కాన్ చేయడం ద్వారా ముందుగా పొందబడింది)
WiFi ప్యాకెట్ స్నిఫింగ్ మోడ్
Espressif డెవలపర్లు కాల్బ్యాక్ ఫంక్షన్ ద్వారా "గాలిలో ఎగురుతున్న" అన్ని WiFi ప్యాకెట్లను స్వీకరించడానికి అప్లికేషన్ సాఫ్ట్వేర్ సామర్థ్యాన్ని జోడించారు. వాస్తవానికి అన్నీ కాదు, ఎందుకంటే మీరు ఒక స్థిర ఛానెల్ కోసం మాత్రమే మోడ్ను సెట్ చేయగలరు.
కాల్బ్యాక్ ఫంక్షన్ను ప్రాసెస్ చేయడంపై చాలా కఠినమైన సమయ పరిమితులు విధించబడతాయి. ఇది సాధారణ గణాంకాల సేకరణ మోడ్కు సమస్యలను కలిగించకపోతే, SD కార్డ్లోని PCAP ఫైల్ రికార్డింగ్ మోడ్ కోసం నేను టింకర్ చేయాల్సి వచ్చింది, మెమరీ మరియు సెమాఫోర్స్లో క్యూ ద్వారా రికార్డింగ్ను నిర్వహించడం. కాల్బ్యాక్కి కాల్ చేసే ప్రక్రియ ఒక కోర్లో మరియు మరొక కోర్లో SDకి వ్రాసే ప్రక్రియ యొక్క విశిష్టతను పరిగణనలోకి తీసుకుంటుంది.
“ధ్వనించే గాలి” సమయంలో, కొన్ని ప్యాకెట్లు పోతాయి (క్యూలో స్థలం లేదు మరియు అవి విస్మరించబడతాయి), కానీ సాయంత్రం అపార్ట్మెంట్ యొక్క సాధారణ “గాలి”తో (విజిబిలిటీ లోపల 5..7 APలు), PCAPలో రికార్డింగ్ ప్యాకెట్ నష్టం లేకుండా పూర్తవుతుంది.
అదనంగా, PCAP పర్యవేక్షణ మరియు రికార్డింగ్ కోసం, ప్యాకెట్ హెడర్లలో MAC జాబితా ఆధారంగా ఫిల్టరింగ్ మోడ్ ఉంది.
ఉదాహరణకు, క్లబ్/కేఫ్లో ఒక వ్యక్తి ప్రవేశించే ముందు లేదా కనపడక ముందే అతని రూపాన్ని మీరు ట్రాక్ చేయవచ్చు. తెలిసిన APలకు WiFi మరియు ఆటోమేటిక్ కనెక్షన్లను కొంతమంది వ్యక్తులు నిలిపివేస్తారు. (నేను ఇప్పుడు ఆఫ్ చేస్తున్నాను..)
వైర్షార్క్లో రికార్డ్ చేయబడిన ట్రాఫిక్ను వీక్షించడం అనేది విద్యాపరమైనది మరియు మ్యాప్లను అర్థం చేసుకోవడానికి ఆసక్తికరంగా ఉంటుంది - ఇవన్నీ పని చేస్తాయి.
డెయుత్ ప్యాకేజీలతో పని చేయడానికి మోడ్
డిఫాల్ట్గా, ఈ ప్యాకేజీలను పంపడం libnet80211.a లైబ్రరీలో నిషేధించబడింది, ఇది మూలాధారాలు లేకుండా వస్తుంది. కానీ రెండు బిట్లను ట్వీక్ చేయడం ద్వారా పరిష్కరించడం సులభం. ప్యాచ్ని పోస్ట్ చేయడం విలువైనదేనా అని నేను మొదట సందేహించాను. కానీ డీఆథెంటికేషన్ ఫ్రేమ్ స్కానింగ్ మోడ్ ఆన్తో వివిధ ప్రదేశాలలో నడిచిన తర్వాత, నేను ఇలా అనుకున్నాను: "ఏమిటి నరకం." అంతేకాకుండా, esp8266లో ఈ ప్యాకేజీల డెలివరీ మూసివేయబడలేదు మరియు esp8266 కోసం గితుబ్లో అసెంబ్లీలు ఉన్నాయి.
చాలా చోట్ల (నేను ఎక్కడ చెప్పను) ఈ పద్ధతి ద్వారా అవాంఛిత APలను అణచివేయడం ఉపయోగించబడుతుంది. మరియు ఇవి "వేధించేవి" కాదు ...
మరియు నా ఫోన్ నుండి నా ఇంటర్నెట్ పంపిణీ కొన్ని చోట్ల పని చేయకపోవడంతో నేను కూడా ఆశ్చర్యపోయాను...
అటువంటి ప్యాకెట్ల సంఖ్య మరియు RSSIని ట్రాక్ చేసే మోడ్ "ఎడమవైపు APలు ఎక్కడ ఇష్టపడవు" అని అర్థం చేసుకోవడానికి చాలా ఉపయోగకరంగా ఉంటుంది.
రూటర్ మోడ్
ఈ ఫీచర్ బహుశా అన్వేషించడానికి అన్నింటికంటే చాలా ఆసక్తికరంగా ఉంటుంది.
ESP32 STA + SoftAP మోడ్లో ఏకకాల ఆపరేషన్కు మద్దతు ఇస్తుంది. అందువల్ల, మీరు దానిపై క్లాసిక్ NAT రౌటర్ను అమలు చేయవచ్చు.
నెట్వర్క్ స్టాక్కు మద్దతు ఇవ్వడానికి, Espressif lwip లైబ్రరీ యొక్క ఫోర్క్ (వాస్తవంగా మారదు) ఉపయోగిస్తుంది.
కానీ, డిఫాల్ట్గా, స్టాండర్డ్ బిల్డ్లో, esp-lwip లైబ్రరీ netif ఇంటర్ఫేస్లు 'ap' (SoftAP) మరియు 'st' (STA) మధ్య ఫార్వార్డింగ్ను అందించదు.
అయితే, మీరు దీన్ని NAT లేకుండా చేయవచ్చు, అయితే ఏకకాలంలో రెండు లేదా అంతకంటే ఎక్కువ STAలను 'ap' ఇంటర్ఫేస్కి కనెక్ట్ చేయడంలో మరియు IP చిరునామాలను 'st' నుండి 'ap' నెట్వర్క్ ఇంటర్ఫేస్కి సమకాలీకరించడంలో సమస్య ఉంది. కాబట్టి ఇబ్బందులు విలువైనవి కావు మరియు NAT ద్వారా ఇది సులభం.
అంతేకాకుండా, మార్టిన్-గర్ నుండి ఫోర్క్ esp-lwip ఉంది, ఇది IP4 కోసం NAT యొక్క సాధారణ అమలును జోడిస్తుంది.
నా చేతులు పూర్తిగా కాస్మెటిక్గా రీమేక్ చేయడానికి దురద ఉన్నప్పటికీ (నా అభిప్రాయం ప్రకారం, ప్రాజెక్ట్ యొక్క ఫోర్క్ లేకుండా, కానీ LWIP ద్వారా ఇది సులభంHOOK అసెంబ్లీ సమయంలో విధులు నిర్వచించబడ్డాయి), కానీ సోమరితనం ప్రబలంగా ఉంది మరియు మార్టిన్-గర్ నుండి ఎంపిక అలాగే ఉపయోగించబడుతుంది.
రూటర్ మోడ్లో, ఇన్కమింగ్ మరియు అవుట్గోయింగ్ IP4 ట్రాఫిక్ వీక్షించబడుతుంది.
ప్రత్యేకించి, స్క్రీన్పై ప్రదర్శించడానికి మరియు ఫైల్లో గణాంకాలను సేకరించడం కోసం కిందివి దాని నుండి సంగ్రహించబడ్డాయి:
- SoftAP ESP32 (DHCP ప్యాకెట్లు)కి కనెక్ట్ చేయబడిన పరికరం పేరు
- SoftAP ESP53కి కనెక్ట్ చేయబడిన పరికరం నుండి DNS అభ్యర్థనల (UDP పోర్ట్ 32) నుండి URL.
అదనంగా, మీరు PCAP ఫైల్కి ట్రాఫిక్ రికార్డింగ్ని ప్రారంభించవచ్చు.
ఈ మోడ్ చాలా ఉపయోగకరంగా ఉంటుంది, ఉదాహరణకు, అర్థం చేసుకోవడానికి, ఉదాహరణకు, మీ ఫోన్ నెట్వర్క్కు ఏమి పంపుతుందో మరియు అది ఎక్కడికి వెళ్తుందో.
నెట్వర్క్ ఇంటర్ఫేస్ స్థాయిలో softAP ESP32 ఇన్కమింగ్ మరియు అవుట్గోయింగ్ ట్రాఫిక్ను పూర్తిగా నియంత్రించగల సామర్థ్యాన్ని పరిగణనలోకి తీసుకుని మీరు ఈ మోడ్ను ఉపయోగించడానికి ఇతర మార్గాల గురించి ఆలోచించవచ్చు: Ehernet హెడర్ (destMAC[6]+srcMAC[6]+టైప్[2]) + పేలోడ్ (IP4, IP6, DCHP, మొదలైనవి రకం).
సూత్రప్రాయంగా, ESP32 WiFi->WiFi రూటర్ ఫంక్షన్తో చాలా బాగా ఎదుర్కుంటుంది, ఎటువంటి ప్రత్యేక ఆలస్యం లేకుండా సాధారణ ట్రాఫిక్ను దాటుతుంది. సబ్జెక్ట్గా, ESP32లో రూటర్ ద్వారా కనెక్ట్ చేయబడిన ఫోన్లో ఆలస్యం గమనించదగినది కాదు.
దురదృష్టవశాత్తూ, SoftAP EPS32కి కనెక్ట్ చేయబడిన MAC కోసం ఫిల్టర్ని సెట్ చేసే సామర్థ్యం Espressif APIకి లేదు. బదులుగా, "కావాల్సిన అవసరం లేని" ఇప్పటికే కనెక్ట్ చేయబడిన STAలకు "వీడ్కోలు" (esp_wifi_deauth_sta) చెప్పాలని ప్రతిపాదించబడింది.
కనెక్ట్ చేయబడిన STAల కోసం MAC ద్వారా ఫిల్టర్ చేయడం esp_wifi_deauth_sta() కాల్ ద్వారా చేయాలి
ముగింపులో
ESP32తో పని చేసే ఫ్రేమ్వర్క్లో నేను కొత్తగా ఏమీ రానప్పటికీ, బహుశా ఫలితం (సోర్స్ కోడ్) ఎవరికైనా ఆసక్తికరంగా ఉంటుంది.
కోడ్ కేవలం విద్యా ప్రయోజనాల కోసం వ్రాయబడిందని నేను గమనించాలనుకుంటున్నాను. "హ్యాకింగ్" మొదలైన వాటి కోసం, ఇది ఉద్దేశపూర్వకంగా చాలా సౌకర్యవంతంగా లేదు.
నేను ప్రింటెడ్ సర్క్యూట్ బోర్డ్ను తయారు చేయలేదు ఎందుకంటే పూర్తి చేసిన స్కార్ఫ్లను వైర్తో టంకము చేయడానికి 1.5-2 గంటలు పట్టింది.
మరియు మీరు అలా చేస్తే, మీరు దానిని రెడీమేడ్ బోర్డుల నుండి కాకుండా, వ్యక్తిగత భాగాల నుండి సమీకరించాలి. అప్పుడు కొలతలు కూడా చిన్నవిగా ఉంటాయి.
మూలం: www.habr.com