cari
Rumahpembangunan bahagian belakangTutorial PythonFlipper Zero NFC Hacking - pemakan meriam

Flipper Zero NFC Hacking - cannon fooder

Dalam siaran sebelumnya, kami melihat cara melaksanakan pembaca telus dengan Flipper Zero. Bagaimana jika kita mengambil konsep yang sama tetapi kali ini untuk melaksanakan emulator kad telus? Kami boleh menggunakan Flipper Zero kami seperti meriam untuk menyerang kubu digital, seperti pembaca atau telefon pintar, dengan menghantar permintaan yang salah. Perintah cacat, perintah tidak dijangka dalam kitaran hayat, kabur, limpahan penimbal—langit adalah hadnya!

1 - Konteks

Sama seperti pembaca kad lutsinar, saya ingin berkomunikasi dengan Flipper menggunakan CLI bersiri dari komputer saya. Komputer mengendalikan semua logik, bermakna ia memutuskan tindak balas yang perlu diberikan bergantung pada arahan, menggunakan skrip Python, sebagai contoh.

Sekarang, mengenai pelaksanaan perintah emulator kad, pada asasnya ia adalah sejenis mod cermin berbanding pembaca:

  • Kami perlu mengesan apabila medan RF diaktifkan oleh terminal.
  • Kami perlu mengesan apabila medan RF dinyahaktifkan oleh terminal.
  • Kita perlu boleh menerima/menghantar bit ke terminal.
  • Kita perlu boleh menerima/menghantar bait ke terminal.

Kecuali ada butiran kecil yang merumitkan perkara. Ingat bahawa semasa komunikasi kad/pembaca, pembacalah yang bertindak sebagai tuan, bermakna pembacalah yang memulakan komunikasi dan menghantar arahan.

Jadi, jika kita mencipta emulator kad, ia mesti menunggu acara daripada pembaca. Anda boleh menganggapnya seperti pelayan, dengan pembaca bertindak sebagai pelanggan. Kami perlu memasukkan kod ini ke dalam Flipper Zero.

Baiklah, pertama sekali, mari kita buat imbasan ringkas tentang pertukaran komunikasi antara pembaca dan kad menggunakan ISO 14443-A.

2 - Pertukaran komunikasi antara pembaca dan kad menggunakan ISO 14443-A

Berikut ialah rajah yang meringkaskan pertukaran utama antara pembaca dan kad yang berkomunikasi melalui ISO 14443-A.

+----------------+                                  +----------------+
|   Reader       |                                  |   Card         |
+----------------+                                  +----------------+
        |                                                  |
    Field activation                                       |
        |                                                  |
        | --- REQA (Request Command Type A) -------------> |
        |                   26                             |
        |                                                  |
        | |
        |                                                  |
        | |
        |                                                  |
        | |
        | E0 50 BC A5                                      |
        |                                                  |
        | |    
        | D0 73 87                                         |
        |                                                  |
        | |
        | 0200A404000E325041592E5359532E444446303100E042   |
        |                                                  |
        | 



<p>Sekarang persoalannya ialah, "Bagaimana kita melaksanakan semua ini pada Flipper?"</p>

<h2>
  
  
  4 - Pelaksanaan Flipper Zero
</h2>

<p>Seperti dalam artikel saya sebelum ini, saya akan terus mengembangkan aplikasi fail/main/nfc/nfc_cli.c (lihat fail di cawangan saya).</p>

<p>Pertama, titik perkakasan pantas. Untuk pengurusan NFC, Flipper Zero menggunakan cip ST25R3916. Ini bagus kerana ia membolehkan kami mencipta kedua-dua pembaca tanpa sentuh dan emulator kad. Cip secara automatik mengendalikan penghantaran arahan yang terlibat daripada pengaktifan medan kepada antiperlanggaran. Apa yang perlu kita lakukan ialah menentukan ATQA, SAK, UID dan panjangnya yang ingin kita hantar semula.</p>

<p>Flipper menyediakan fungsi furi_hal_nfc_iso14443a_listener_set_col_res_data untuk mengendalikan semua ini.</p>

<p>Itulah sebabnya saya menambah 3 arahan pada NFC CLI Flipper untuk mengkonfigurasi elemen ini:</p>
  • set_atqa
  • set_sak
  • set_uid

Dan sejurus sebelum memulakan emulasi, kami akan memanggil furi_hal_nfc_iso14443a_listener_set_col_res_data dengan parameter ini.

+----------------+                                  +----------------+
|   Reader       |                                  |   Card         |
+----------------+                                  +----------------+
        |                                                  |
    Field activation                                       |
        |                                                  |
        | --- REQA (Request Command Type A) -------------> |
        |                   26                             |
        |                                                  |
        | |
        |                                                  |
        | |
        |                                                  |
        | |
        | E0 50 BC A5                                      |
        |                                                  |
        | |    
        | D0 73 87                                         |
        |                                                  |
        | |
        | 0200A404000E325041592E5359532E444446303100E042   |
        |                                                  |
        | 



<p>Seterusnya, menetapkan Flipper Zero kepada mod emulator kad dilakukan menggunakan fungsi furi_hal_nfc_set_mode. Kali ini, kami menentukan mod FuriHalNfcModeListener, dan untuk teknologi, kami menggunakan nilai standard: FuriHalNfcTechIso14443a, FuriHalNfcTechIso14443b dan FuriHalNfcTechIso15693.</p>

<p>Akhir sekali, untuk memulakan emulasi, saya melaksanakan perintah run_emu, yang akan memulakan gelung tak terhingga menunggu pembaca berdekatan. Pemantauan acara dikendalikan oleh fungsi furi_hal_nfc_listener_wait_event.<br>
</p>

<pre class="brush:php;toolbar:false">    if(g_NfcTech == FuriHalNfcTechIso14443a) {
        furi_hal_nfc_iso14443a_listener_set_col_res_data(g_uid, g_uid_len, g_atqa, g_sak);
        fdt = ISO14443_3A_FDT_LISTEN_FC;
    }

Seterusnya, acara boleh mengambil beberapa nilai bergantung pada perkara yang telah dikesan:

  • FuriHalNfcEventFieldOn menunjukkan bahawa pengaktifan medan telah dikesan.
  • FuriHalNfcEventFieldOff menunjukkan bahawa medan telah dimatikan.
  • Acara yang paling penting ialah FuriHalNfcEventRxEnd, yang menunjukkan bahawa arahan daripada terminal telah diterima. Pada ketika ini, kami perlu menghantar jawapan kami. Sekali lagi, adalah penting untuk ambil perhatian bahawa semua pengendalian penghantaran arahan, sehingga dan termasuk antiperlanggaran, dilakukan secara automatik. Jadi, pada dasarnya kita boleh mula memproses arahan seperti pilih, sebagai contoh.
FuriHalNfcEvent event = furi_hal_nfc_listener_wait_event(100);

5 - Mengendalikan penerimaan arahan dan menghantar respons

Sekarang, mari lihat cara mengendalikan penerimaan arahan dan menghantar respons.

    while(true) {
        FuriHalNfcEvent event = furi_hal_nfc_listener_wait_event(100);
        if(event == FuriHalNfcEventTimeout) {
            if(cli_cmd_interrupt_received(cli)) {
                break;
            }
        }
        if(event & FuriHalNfcEventAbortRequest) {
            break;
        }
        if(event & FuriHalNfcEventFieldOn) {
            printf("on\r\n");
        }
        if(event & FuriHalNfcEventFieldOff) {
            furi_hal_nfc_listener_idle();
            printf("off\r\n");
        }
        if(event & FuriHalNfcEventListenerActive) {
            // Nothing
        }
        if(event & FuriHalNfcEventRxEnd) {
  • Penerimaan data dikendalikan melalui furi_hal_nfc_listener_rx(rx_data, rx_data_size, &rx_bits);. Kami memaparkan data yang diterima menggunakan printf, yang menghantar respons kepada terminal yang disambungkan ke Flipper. Perkara penting untuk difahami ialah sebaik sahaja kami menerima arahan, kami mesti bertindak balas dengan cepat. Ini bermakna kita tidak boleh menulis respons secara manual dalam shell-ia akan terlambat. Inilah sebabnya satu-satunya cara untuk berkomunikasi dengan Flipper adalah dengan menggunakan skrip Python dengan penghantar yang menentukan respons yang akan diberikan untuk setiap arahan yang diterima.
  • Kemudian, terminal menghantar respons yang kami dapat semula menggunakan fungsi nfc_emu_get_resp(cli, rx_cmd). Bahagian ini agak rumit kerana, dalam arahan shell, anda biasanya tidak mempunyai pertukaran bolak-balik. Jadi, saya menggunakan fungsi cli_getc(cli) untuk membaca aksara.

    • Kadangkala, saya mendapat watak yang tidak diingini 0xA. Jika ia adalah watak pertama yang diterima, saya melangkaunya, kerana saya membaca watak demi watak.
    • Watak pertama menunjukkan sama ada Flipper Zero perlu mengira dan menambah CRC pada perintah itu sendiri (0x31 bermakna ya, jika tidak tidak).
    • Kemudian, saya membaca aksara jawapan dalam format rentetan heksadesimal. Apabila kita menerima aksara 0xA, ia menunjukkan penerimaan telah selesai.
  • Akhir sekali, kami menukar rentetan perenambelasan kepada tatasusunan uint8_t menggunakan unhexify(tmp, (uint8_t*)bit_buffer_get_data(rx_data), len);.

  • Jika perlu, kami menambah CRC menggunakan add_crc.

  • Akhir sekali, kami boleh menghantar respons kepada pembaca menggunakan:

    FuriHalNfcError r = furi_hal_nfc_listener_tx(rx_data, bit_buffer_get_size(rx_cmd));.

Dan sekarang, bagaimanakah kita hendak mengesahkan semua ini?

6 - Pengesahan emulasi kad

6.1 - Bagaimana ia bermula ... (Hydra NFC v2)

Flipper Zero NFC Hacking - cannon fooder

Nah, kami boleh menggunakan pembaca telus kami dari siaran sebelumnya untuk mengesahkan emulator kami. Jadi, kami memerlukan dua Flipper Zero... yang saya tidak ada. Walau bagaimanapun, saya mempunyai Hydra NFC v2, yang membolehkan persediaan pembaca telus.

Flipper Zero NFC Hacking - cannon fooder

Saya hanya perlu menggunakan skrip daripada pynfc.

+----------------+                                  +----------------+
|   Reader       |                                  |   Card         |
+----------------+                                  +----------------+
        |                                                  |
    Field activation                                       |
        |                                                  |
        | --- REQA (Request Command Type A) -------------> |
        |                   26                             |
        |                                                  |
        | |
        |                                                  |
        | |
        |                                                  |
        | |
        | E0 50 BC A5                                      |
        |                                                  |
        | |    
        | D0 73 87                                         |
        |                                                  |
        | |
        | 0200A404000E325041592E5359532E444446303100E042   |
        |                                                  |
        | 



<p>Ia sangat praktikal kerana ia membolehkan kami menghantar arahan satu demi satu untuk mengesahkan segala-galanya:</p>

  • Menghantar REQA
  • Antiperlanggaran
  • Pilih
  • PPS
  • Menghantar TPDU

6.2 - Bagaimana ia selesai... (pembaca PC/SC).

Namun, pada hakikatnya, komunikasi agak rumit. Jadi, saya menggunakan pembaca PC/SC, ACR122U, untuk menghantar/menerima arahan APDU penuh, digabungkan dengan skrip Python (menggunakan pyscard ) untuk membuat ujian dunia sebenar.

Flipper Zero NFC Hacking - cannon fooder

Dalam kes saya, saya hanya memilih aplikasi PPSE.

    if(g_NfcTech == FuriHalNfcTechIso14443a) {
        furi_hal_nfc_iso14443a_listener_set_col_res_data(g_uid, g_uid_len, g_atqa, g_sak);
        fdt = ISO14443_3A_FDT_LISTEN_FC;
    }

Jadi sekarang, emulator kad perlu mengendalikan lebih banyak acara. Oleh itu, saya mencipta skrip Python di bawah untuk menguruskan kes ini. Terdapat banyak perkara yang perlu dijelaskan, seperti jenis TPDU yang berbeza (i-block, r-block, s-block), tetapi itu akan ada dalam catatan blog akan datang.

FuriHalNfcEvent event = furi_hal_nfc_listener_wait_event(100);

Dengan ini, ia berfungsi dengan baik, dan emulasinya sangat stabil. Saya boleh meletakkan atau mengalih keluar Flipper daripada pembaca dan menghantar arahan beberapa kali, dan ia berfungsi setiap kali. Sekali lagi, Flipper mempunyai pelaksanaan yang sangat baik bagi lapisan NFCnya, dan APInya membolehkan banyak fungsi dengan usaha yang minimum dalam pelaksanaannya.

Di bawah, anda mempunyai sampel output daripada skrip Python.

+----------------+                                  +----------------+
|   Reader       |                                  |   Card         |
+----------------+                                  +----------------+
        |                                                  |
    Field activation                                       |
        |                                                  |
        | --- REQA (Request Command Type A) -------------> |
        |                   26                             |
        |                                                  |
        | |
        |                                                  |
        | |
        |                                                  |
        | |
        | E0 50 BC A5                                      |
        |                                                  |
        | |    
        | D0 73 87                                         |
        |                                                  |
        | |
        | 0200A404000E325041592E5359532E444446303100E042   |
        |                                                  |
        | 



<h3>
  
  
  6.3 Sedikit Proxmark juga
</h3>

<p><img src="/static/imghwm/default1.png" data-src="https://img.php.cn/upload/article/000/000/000/172964254814325.jpg?x-oss-process=image/resize,p_40" class="lazy" alt="Flipper Zero NFC Hacking - cannon fooder"></p>

<p>Menggunakan Proxmark 3 berguna untuk menyahpepijat komunikasi dalam mod menghidu: Saya meletakkannya di antara pembaca dan kad (yang boleh menjadi kad tulen atau Flipper), dan saya dapat menyemak pertukaran data.<br>
</p>

<pre class="brush:php;toolbar:false">    if(g_NfcTech == FuriHalNfcTechIso14443a) {
        furi_hal_nfc_iso14443a_listener_set_col_res_data(g_uid, g_uid_len, g_atqa, g_sak);
        fdt = ISO14443_3A_FDT_LISTEN_FC;
    }

Apa seterusnya?

Baik, apa seterusnya?

  • Pertama, saya boleh memberikan lebih banyak penjelasan tentang skrip Python emulasi kad.
  • Selain itu, saya harus melaksanakan cara untuk menghentikan emulasi kad apabila butang ditekan, kerana pada masa ini gelung menunggu acara tidak pernah selesai. Satu-satunya cara untuk keluar adalah dengan memulakan semula Flipper.
  • Selain itu, kami boleh melakukan beberapa perkara yang menyeronokkan dengan menggunakan kedua-dua pembaca telus dan emulator kad pada masa yang sama, contohnya, untuk melakukan serangan lelaki di tengah dan mengubah suai komunikasi secara langsung!

Atas ialah kandungan terperinci Flipper Zero NFC Hacking - pemakan meriam. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Cara Menggunakan Python untuk Mencari Pengagihan Zipf Fail TeksCara Menggunakan Python untuk Mencari Pengagihan Zipf Fail TeksMar 05, 2025 am 09:58 AM

Tutorial ini menunjukkan cara menggunakan Python untuk memproses konsep statistik undang -undang ZIPF dan menunjukkan kecekapan membaca dan menyusun fail teks besar Python semasa memproses undang -undang. Anda mungkin tertanya -tanya apa maksud pengedaran ZIPF istilah. Untuk memahami istilah ini, kita perlu menentukan undang -undang Zipf. Jangan risau, saya akan cuba memudahkan arahan. Undang -undang Zipf Undang -undang Zipf hanya bermaksud: Dalam korpus bahasa semulajadi yang besar, kata -kata yang paling kerap berlaku muncul kira -kira dua kali lebih kerap sebagai kata -kata kerap kedua, tiga kali sebagai kata -kata kerap ketiga, empat kali sebagai kata -kata kerap keempat, dan sebagainya. Mari kita lihat contoh. Jika anda melihat corpus coklat dalam bahasa Inggeris Amerika, anda akan melihat bahawa perkataan yang paling kerap adalah "th

Bagaimana saya menggunakan sup yang indah untuk menghuraikan html?Bagaimana saya menggunakan sup yang indah untuk menghuraikan html?Mar 10, 2025 pm 06:54 PM

Artikel ini menerangkan cara menggunakan sup yang indah, perpustakaan python, untuk menghuraikan html. Ia memperincikan kaedah biasa seperti mencari (), find_all (), pilih (), dan get_text () untuk pengekstrakan data, pengendalian struktur dan kesilapan HTML yang pelbagai, dan alternatif (sel

Cara memuat turun fail di pythonCara memuat turun fail di pythonMar 01, 2025 am 10:03 AM

Python menyediakan pelbagai cara untuk memuat turun fail dari Internet, yang boleh dimuat turun melalui HTTP menggunakan pakej Urllib atau Perpustakaan Permintaan. Tutorial ini akan menerangkan cara menggunakan perpustakaan ini untuk memuat turun fail dari URL dari Python. Permintaan Perpustakaan Permintaan adalah salah satu perpustakaan yang paling popular di Python. Ia membolehkan menghantar permintaan HTTP/1.1 tanpa menambahkan rentetan pertanyaan secara manual ke URL atau pengekodan data pos. Perpustakaan Permintaan boleh melaksanakan banyak fungsi, termasuk: Tambah data borang Tambah fail berbilang bahagian Akses data tindak balas python Buat permintaan kepala

Penapisan gambar di pythonPenapisan gambar di pythonMar 03, 2025 am 09:44 AM

Berurusan dengan imej yang bising adalah masalah biasa, terutamanya dengan telefon bimbit atau foto kamera resolusi rendah. Tutorial ini meneroka teknik penapisan imej di Python menggunakan OpenCV untuk menangani isu ini. Penapisan Imej: Alat yang berkuasa Penapis Imej

Cara Bekerja Dengan Dokumen PDF Menggunakan PythonCara Bekerja Dengan Dokumen PDF Menggunakan PythonMar 02, 2025 am 09:54 AM

Fail PDF adalah popular untuk keserasian silang platform mereka, dengan kandungan dan susun atur yang konsisten merentasi sistem operasi, peranti membaca dan perisian. Walau bagaimanapun, tidak seperti Python memproses fail teks biasa, fail PDF adalah fail binari dengan struktur yang lebih kompleks dan mengandungi unsur -unsur seperti fon, warna, dan imej. Mujurlah, tidak sukar untuk memproses fail PDF dengan modul luaran Python. Artikel ini akan menggunakan modul PYPDF2 untuk menunjukkan cara membuka fail PDF, mencetak halaman, dan mengekstrak teks. Untuk penciptaan dan penyuntingan fail PDF, sila rujuk tutorial lain dari saya. Penyediaan Inti terletak pada menggunakan modul luaran PYPDF2. Pertama, pasangkannya menggunakan PIP: Pip adalah p

Cara Cache Menggunakan Redis dalam Aplikasi DjangoCara Cache Menggunakan Redis dalam Aplikasi DjangoMar 02, 2025 am 10:10 AM

Tutorial ini menunjukkan cara memanfaatkan caching redis untuk meningkatkan prestasi aplikasi python, khususnya dalam rangka kerja Django. Kami akan merangkumi pemasangan Redis, konfigurasi Django, dan perbandingan prestasi untuk menyerlahkan bene

Memperkenalkan Toolkit Bahasa Alam (NLTK)Memperkenalkan Toolkit Bahasa Alam (NLTK)Mar 01, 2025 am 10:05 AM

Pemprosesan bahasa semulajadi (NLP) adalah pemprosesan bahasa manusia secara automatik atau separa automatik. NLP berkait rapat dengan linguistik dan mempunyai hubungan dengan penyelidikan dalam sains kognitif, psikologi, fisiologi, dan matematik. Dalam sains komputer

Bagaimana untuk melakukan pembelajaran mendalam dengan Tensorflow atau Pytorch?Bagaimana untuk melakukan pembelajaran mendalam dengan Tensorflow atau Pytorch?Mar 10, 2025 pm 06:52 PM

Artikel ini membandingkan tensorflow dan pytorch untuk pembelajaran mendalam. Ia memperincikan langkah -langkah yang terlibat: penyediaan data, bangunan model, latihan, penilaian, dan penempatan. Perbezaan utama antara rangka kerja, terutamanya mengenai grap pengiraan

See all articles

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Alat panas

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Penyesuai Pelayan SAP NetWeaver untuk Eclipse

Penyesuai Pelayan SAP NetWeaver untuk Eclipse

Integrasikan Eclipse dengan pelayan aplikasi SAP NetWeaver.

mPDF

mPDF

mPDF ialah perpustakaan PHP yang boleh menjana fail PDF daripada HTML yang dikodkan UTF-8. Pengarang asal, Ian Back, menulis mPDF untuk mengeluarkan fail PDF "dengan cepat" dari tapak webnya dan mengendalikan bahasa yang berbeza. Ia lebih perlahan dan menghasilkan fail yang lebih besar apabila menggunakan fon Unicode daripada skrip asal seperti HTML2FPDF, tetapi menyokong gaya CSS dsb. dan mempunyai banyak peningkatan. Menyokong hampir semua bahasa, termasuk RTL (Arab dan Ibrani) dan CJK (Cina, Jepun dan Korea). Menyokong elemen peringkat blok bersarang (seperti P, DIV),

Muat turun versi mac editor Atom

Muat turun versi mac editor Atom

Editor sumber terbuka yang paling popular