Firmware untuk lelucon berteknologi tinggi pada Perangkat M5Stack ESP32
Logo oleh @unagironin
Seperti yang diumumkan awal tahun ini, M5Stick-NEMO telah diarsipkan dan tidak lagi dalam pengembangan aktif. Proyek ini melampaui semua tujuan pribadi saya dan sungguh menakjubkan melihat komunitas berkumpul, bersemangat dengan proyek ini, berkontribusi, dan mendapatkan inspirasi darinya.
Sejauh yang saya ketahui, proyek ini mencapai batas kemampuan keluarga M5Stick, untuk trik dan lelucon semacam ini, tanpa menambahkan perangkat keras eksternal seperti Kartu SD, modem radio, LED yang lebih besar, modul RFID, atau hal lainnya. Masa pakai baterai juga kurang optimal untuk menggerakkan periferal eksternal ini. Banyak permintaan fitur berkisar pada dukungan untuk perangkat eksternal ini, dan saya tidak memiliki sumber daya atau waktu untuk menambahkannya, namun kabar baiknya adalah perangkat lain telah meneruskan semangat tersebut dengan, sejujurnya, fitur yang lebih baik. Salah satu proyek yang banyak menjanjikan adalah CatHack.
Sampai jumpa, dan terima kasih untuk semua ikannya!
NEMO memulai proyek pribadi untuk membantu saya mempelajari lebih lanjut tentang pengembangan ESP32 dengan Arduino IDE. Saya memutuskan untuk meniru beberapa lelucon umum dan sedang tren yang mendapat banyak perhatian di komunitas teknologi, sebagai tantangan bagi diri saya sendiri, dan juga untuk lebih memahami serangan ini.
Nama NEMO diambil dari nama ikan kecil, pintar, dan keras kepala di Finding Nemo. Proyek ini berbeda dengan gadget berteknologi tinggi lainnya yang dikaitkan dengan makhluk laut tertentu. Saya ingin membuktikan bahwa ada banyak hal yang dapat Anda lakukan dengan kit pengembangan kecil dan rasa ingin tahu. Saya tidak mempunyai khayalan untuk menggantikan kemampuan perangkat serupa dengan proyek ini. Itu hanya untuk bersenang-senang, dan pendidikan saya sendiri.
Menyesuaikan .github/workflow/compile.yml untuk dikompilasi dengan fungsi DEAUTH.
Menambahkan dukungan ke SONG di StickC Plus dan Plus2
Menambahkan "Menu Serangan" ketika melihat detail Titik Akses
Clone Portal (Membuat portal Jahat dengan SSID yang sama dengan target)
Serangan deauth (menyiarkan frame deauthentication ke perangkat yang terhubung ke Access Point ini)
Deauth+Clone (Membuat portal jahat dengan SSID yang sama dan mengirimkan frame deauthentication ke AP tersebut)
Opsi tambahan di Pengaturan untuk Memasang/Melepas Kartu SD saat menggunakan perangkat M5StickC
Membuat file baru untuk menangani SPI/SD jika tidak menggunakan CARDPUTER
SDCARD sekarang bekerja pada M5StickC Plus2
ide?
Port TV B-Gone (berkat HAKRWATCH MrArm) untuk mematikan banyak TV, proyektor, dan perangkat lain yang dikontrol inframerah
Spam pemasangan perangkat Bluetooth iOS AppleJuice
Spam notifikasi perangkat Bluetooth untuk SwiftPair (Windows) dan Android
Spam WiFi - SSID lucu, WiFi Rickrolling, dan mode Acak yang menghasilkan ratusan SSID dengan nama acak per menit
WiFi NEMO Portal - Portal captive yang mencoba kredensial email insinyur sosial - menyimpan nama pengguna dan kata sandi ke Kartu SD (jika dimasukkan ke pembaca yang didukung)
Pemindai SSID WiFi - Menampilkan SSID 2,4 GHz di sekitar, mendapatkan informasi tentangnya, dan bahkan mengkloning SSID di Portal NEMO
Jam digital 24 Jam yang dapat disesuaikan pengguna dan didukung oleh M5 Stick RTC sehingga memiliki waktu yang relatif stabil bahkan dalam mode tidur nyenyak dan mode baterai lemah
Pengaturan yang didukung EEPROM untuk rotasi, kecerahan, peredupan otomatis, dan SSID Portal NEMO
Level baterai dan kredit di menu pengaturan
Ada tiga kontrol utama:
Beranda - Menghentikan proses saat ini dan mengembalikan Anda ke menu hampir dari mana saja di NEMO
Berikutnya - Memindahkan kursor ke opsi menu berikutnya. Dalam mode fungsi, ini biasanya menghentikan proses dan mengembalikan Anda ke menu sebelumnya.
Pilih - Mengaktifkan pilihan menu yang sedang dipilih, dan mengaktifkan layar redup dalam mode fungsi
StickC dan StickC-Plus
Daya: Tekan lama tombol daya selama 6 detik untuk mematikan unit
Beranda: Ketuk tombol daya (paling dekat dengan port USB)
Berikutnya: Ketuk tombol samping
Pilih: Ketuk tombol M5 di bagian depan unit
Cardputer
Beranda: Ketuk tombol Esc/~/` atau tombol Panah Kiri/,
Berikutnya/Sebelumnya: Ketuk Panah Bawah/. kunci dan Panah Atas/; tombol untuk bernavigasi
Pilih: Ketuk tombol OK/Enter atau Panah Kanan/? kunci
Dalam mode Portal NEMO, NEMO mengaktifkan Hotspot WiFi terbuka bernama "Nemo Free WiFi" (dapat dikonfigurasi di portal.h) dengan DNS, DHCP, dan server Web diaktifkan.
Portal NEMO menyajikan halaman login palsu yang mengklaim menyediakan akses internet jika Anda login.
Ini adalah serangan rekayasa sosial, dan akan mencatat nama pengguna dan kata sandi yang dimasukkan pada halaman.
Dari detail Pemindaian Wifi, Anda dapat mengkloning SSID yang ada dari daftar pemindaian. Keluar dari Portal NEMO akan menghapus SSID Evil Twin
Anda dapat melihat kredensial yang diambil dengan menghubungkan ke portal dari perangkat Anda sendiri dan menjelajah ke http://172.0.0.1/creds
Anda dapat mengatur SSID khusus dengan menghubungkan ke portal dari perangkat Anda sendiri dan menjelajah ke http://172.0.0.1/ssid
Jika perangkat Anda mendukung EEPROM untuk pengaturan, SSID khusus yang Anda masukkan akan disimpan sebagai default, meskipun dimatikan.
Jika perangkat Anda memiliki pembaca Kartu SD dengan kartu berformat sistem file FAT yang dimasukkan, nama pengguna dan kata sandi akan dicatat ke nemo-portal-creds.txt di Kartu SD untuk Anda baca nanti.
Dukungan Kartu SD hanya diaktifkan secara default pada platform M5Stack Cardputer. Ini dapat diaktifkan pada perangkat M5Stick tetapi pembaca Kartu SD harus terpasang dan dipasang ke header pin panel depan.
Portal NEMO hanya untuk digunakan pada penugasan profesional dengan lingkup pekerjaan, pendidikan, atau tujuan demonstrasi yang valid. Penyimpanan, penjualan, atau penggunaan informasi pribadi tanpa persetujuan adalah melanggar hukum. ?
Ini adalah cara termudah untuk mendapatkan NEMO
M5Stick C Plus Quick Start memiliki tautan ke aplikasi M5Burner untuk Linux, MacOS, dan Windows. Ini adalah alat resmi untuk menginstal UIFlow dan firmware resmi lainnya. Saya menyediakan binari terkini untuk NEMO di sana.
Luncurkan M5Burner
Pilih "StickC" dari menu di sebelah kiri (atau StampS3 untuk Cardputer)
Gunakan pencarian di bagian atas aplikasi untuk mencari "NEMO". Bangunan resmi saya akan diunggah oleh "4x0nn" dan memiliki foto.
Klik Unduh
Klik Bakar
Instal alat ESP-IDF sesuai Panduan Memulai Espressif
Buka alat CMD esp-idf (di Windows) - di Mac atau Linux, esp-idf.py dan esptool.py harus berada di jalur sistem.
esptool.py --port COMPORT -b 115200 write_flash -z 0x0 M5Nemo-VERSION.bin
port mungkin merupakan port COM misalnya COM4, COM11 pada Windows. Di Mac dan Linux biasanya berada di /dev seperti /dev/ttyUSB0, /dev/ttyACM0 atau /dev/cu.usbserial-3
M5Nemo-VERSION.bin harus merupakan versi yang Anda unduh dari Rilis GitHub -- sebaiknya versi terbaru yang tersedia.
Jika Anda ingin menyesuaikan NEMO atau berkontribusi pada proyek, Anda harus terbiasa membangun NEMO dari sumbernya.
Instal Arduino IDE. Saya telah menggunakan Arduino 1.8 di Linux dan Windows, dan Arduino 2.2 di Windows berhasil.
Instal papan M5Stack untuk Arduino IDE: Di File -> Preferences, tempelkan URL ini ke dalam kotak teks "Boards Manager URLs". Gunakan koma di antara URL jika sudah ada URL. https://m5stack.oss-cn-shenzhen.aliyuncs.com/resource/arduino/package_m5stack_index.json
Jika M5Stack -> M5Stick-C-Plus tidak muncul di Tools -> Boards, gunakan Tools -> Boards -> Boards Manager dan cari M5Stack. Ini akan menginstal dukungan untuk sebagian besar papan M5Stack termasuk Stick C Plus.
Pastikan model perangkat yang benar (misalnya M5Stick-C, M5Stick-C-Plus atau M5Cardputer) dipilih di menu papan.
Instal perpustakaan yang diperlukan. Di Sketsa -> Sertakan Perpustakaan -> Manajer Perpustakaan, cari dan instal perpustakaan berikut dan dependensi apa pun yang diperlukan:
M5StickCPlus, M5StickC atau M5Cardputer
IRRemoteESP8266
Hapus komentar pada baris #define
yang sesuai di dekat bagian atas untuk platform Anda (STICK_C, STICK_C_PLUS atau CARDPUTER)
Ganti skema partisi. Tools
-> Partition Scheme
-> No OTA (Large APP)
- terkadang opsi ini diberi label Huge APP
Konfigurasi
Kode harus dikompilasi dengan rapi dan berfungsi pada M5Stick C Plus langsung dari cabang master atau tag rilis.
Batalkan komentar hanya pada satu opsi #define
yang sesuai atau kesalahan kompiler akan terjadi.
Jika karena alasan tertentu layar berubah dari sangat redup pada level 0 menjadi hampir terang sepenuhnya pada level 1 dan tingkat kecerahan selanjutnya tidak memengaruhi apa pun, setel variabel pct_brightness ke false.
Kompilasi dan unggah proyek
Instal Arduino CLI
Tambahkan Indeks M5Stack ke Arduino Core
Tambahkan Perpustakaan M5Stack
# Instal m5stack boardarduino-cli core instal m5stack:esp32 --additional-urls https://m5stack.oss-cn-shenzhen.aliyuncs.com/resource/arduino/package_m5stack_index.json --log-level warning --verbose# Instal diperlukan perpustakaanarduino-cli lib instal M5Cardputer --peringatan tingkat log --verbose arduino-cli lib install IRRemoteESP8266 --log-level warning --verbose# Kompilasi sketsaarduino-cli kompilasi --fqbn m5stack:esp32:m5stack_cardputer -e --build-property build.partitions=huge_app --build-property upload.maximum_size= 3145728 ./m5stick-nemo.ino
Ini akan membuat beberapa biner berdasarkan sketsa partisi, Anda dapat menggabungkan satu biner menggunakan esptool
Instal esptool - pip install -U esptool
esptool.py --chip esp32s3 merge_bin --output final.bin 0x0000 m5stick-nemo.ino.bootloader.bin 0x8000 m5stick-nemo.ino.partitions.bin 0x10000 m5stick-nemo.ino.bin
Anda sekarang dapat mem-flash firmware biner gabungan menggunakan esptool
esptool.exe write_flash -z 0 final.bin
Instal Docker
Jalankan ./scripts/docker-build.sh
Jalankan ./scripts/flash.sh --device=
# Ini akan membangun sebuah gambar akan semua perpustakaan yang diperlukan berdasarkan platform yang dikonfigurasi, dan itu akan mengkompilasi, mengeluarkan dan menggabungkan binari# Secara default ini akan mengkompilasi untuk M5Cardputer di lokal en-us, ./config/.env.M5Cardputer./ skrip/docker-build.sh # Jika Anda ingin memilih konfigurasi build yang berbeda, Anda dapat meneruskannya sebagai parameter. Lihat ./configs/ untuk berbagai konfigurasi./scripts/docker-build.sh ./config/.env.M5Cardputer# File biner akan di-output ke ./buildls ./build# Ini akan mem-flash output build dari langkah build, itu menggunakan kembali gambar container dari langkah sebelumnya.# Secara default ini akan dikompilasi untuk M5Cardputer di lokal en-us, ./config/.env.M5Cardputer./scripts/flash.sh --device=/dev/ttyusb0 # Jika Anda meneruskan konfigurasi build yang berbeda, pastikan untuk meneruskannya ke skrip flash./scipts/flash.sh --device=/dev/ttyusb0 --build-config=./config/.env.M5Cardputer
Beberapa fitur mengeluarkan informasi debugging ke monitor serial. Gunakan fitur Serial Monitor di Arduino IDE atau M5Burner untuk mengumpulkan informasi ini. Ini mungkin memiliki petunjuk yang berguna. Saat mengajukan laporan bug, sering kali ada gunanya menyertakan keluaran monitor serial.
Setel ulang EEPROMnya. Pada model dengan dukungan pengaturan EEPROM, gunakan "Hapus Pengaturan" dari menu pengaturan, atau tahan tombol "Berikutnya" (tombol Samping pada model StickC, Tab atau Panah Bawah pada Cardputer) sambil menghidupkan.
LED IR TV-B-Gone dapat diamati melalui kamera ponsel pintar, memancarkan sinar cahaya ungu pucat. Jika TV-B-Gone menyala terus-menerus, atau tidak berkedip sama sekali selama pengoperasian TV-B-Gone, berarti ada sesuatu yang salah. Laporkan bug. Ada masalah umum dengan TVBG yang tidak berfungsi setelah menggunakan spam Bluetooth atau spam wifi acak.
Coba lihat daftar wifi dari beberapa perangkat berbeda jika Anda menduga spam wifi tidak berfungsi. Terkadang, manajer jaringan Linux dapat melihat jaringan yang tidak dapat dilihat oleh ponsel pintar. Harap sertakan hasil pengujian ini jika melaporkan masalah spam wifi.
Apple telah menambal banyak perangkat Bluetooth sejak musim panas 2023. Saat menguji AppleJuice, cobalah beberapa jenis perangkat AppleTV, karena perangkat tersebut cenderung lebih andal karena Apple tidak memfilter sinyal bluetooth yang lebih lemah untuk platform tersebut.
Silakan laporkan bug melalui Masalah GitHub. Ini lebih mudah dilacak daripada komentar di postingan media sosial, entri M5Burner, dll. Jika ada yang tidak berfungsi, harap sertakan:
Versi firmware
Bagaimana Anda menginstalnya (M5Burner, kompilasi sendiri, esptool.py)
Perangkat keras
Khususnya fitur dan opsi apa yang tidak berfungsi
Bagaimana Anda menentukan bahwa itu tidak berfungsi dan pengujian apa yang Anda lakukan. Sertakan model perangkat dan sistem operasi yang Anda uji, dan kesalahan atau keluaran apa pun yang relevan dari Serial Monitor, jika ada.
Jika Anda mengetahui cara memperbaiki bug yang Anda identifikasi, PR dipersilakan!
Kontribusi dipersilahkan.
Silakan lihat Masalah GitHub untuk proyek tersebut. Ada saran fitur dan bug yang dilaporkan di sana, dan saya menghargai PR yang mengatasinya.
Saat mengirimkan Permintaan Tarik, harap targetkan cabang pengembangan. Cara termudah untuk melakukan ini adalah dengan melakukan fork SEMUA cabang, atau cukup membuat cabang "pengembangan" di fork Anda sendiri, lalu gunakan GitHub untuk Menyinkronkan cabang pengembangan Anda.
Catat bagaimana perangkat keras tertentu (seperti LED dan RTC) didefinisikan dan diberi gerbang dalam kode dan cobalah untuk tetap berpegang pada pola tersebut. Selain itu, gunakan definisi untuk FGCOLOR, BGCOLOR, TEXT_SIZE* dan alias DISP saat mengeluarkan sesuatu ke tampilan internal.
Jangan ragu untuk menambahkan github Anda ke array kontributor sebagai bagian dari permintaan penarikan Anda.
Hal-hal yang saya perlukan bantuannya:
Peningkatan lokalisasi/terjemahan menu, bukan hanya NEMO Portal HTML.
Mungkin memerlukan file .h baru
Dapat dikonfigurasi dalam pengaturan dan menggunakan byte eeprom untuk menyimpan pengaturan
Manfaatkan const
secara serampangan dalam implementasinya sehingga string lokalisasi hanya disimpan di, dan direferensikan langsung dari, penyimpanan flash dibandingkan menggunakan banyak SRAM.
Inframerah
"Wilayah" baru TV-B-Gone yang penuh dengan kode IR tambahan yang dapat menghidupkan dan mematikan strip LED RGB, AC, kipas angin, sound bar, dan sejenisnya
Sebuah cara untuk mengkonversi atau menggunakan kode IR flipper zero dari dalam basis kode NEMO
Temukan cara untuk membaca dan menampilkan level baterai pada model Cardputer dan StickC-Plus2 yang tidak memiliki PMU AXP192. Kode baterai di demo pabrik Cardputer mungkin merupakan awal yang baik.
TARGETED Deauthentication terhadap titik akses tertentu saja. PR yang melakukan spamming akan ditolak.
Hal-hal yang mungkin tidak akan saya gabungkan:
Spam deautentikasi wifi massal
Spam Bluetooth yang berpotensi mengganggu pelacak kesehatan dan kebugaran, jam tangan pintar, dll.