|
|
| Line 39: |
Line 39: |
| </composediagram> | | </composediagram> |
|
| |
|
| ==== Level 1, Firmware at level 2 — <code>level="1" level5="2"</code> ==== | | ==== Level 1, Physical Analysis at level 2 — <code>level="1" level1="2"</code> ==== |
| <composediagram direction="TD" level="1" level5="2" | | <composediagram direction="TD" level="1" level5="2" |
| id1="RE_Physical-Analysis" title1="Physical Analysis" page1="Mermaid:RE Physical Analysis" | | id1="RE_Physical-Analysis" title1="Physical Analysis" page1="Mermaid:RE Physical Analysis" |
| Line 52: |
Line 52: |
| RE_Microscope-Extraction --> RE_Firmware | | RE_Microscope-Extraction --> RE_Firmware |
| </composediagram> | | </composediagram> |
|
| |
|
| |
|
| === Individual Components === | | === Individual Components === |
Testing Ground
A semi-private place where I can test out wiki functionality as new features are added.
Original RE Flowchart Overview
The hand-maintained version, kept untouched as the reference to compare against.
flowchart TD
subgraph RE_Physical-Analysis [Physical Analysis]
direction LR
Target_Selection([Target\n Selection]); click Target_Selection "https://www.mediawiki.org"
Identify_Components[Identify\n Components]; click Identify_Components "/view/Main_Page"
Create_Block_Diagram[/Create\n Block\n Diagram/]
Contains_Prog_IC{Contains\n Programmable\n IC?}
Complete_Documentation([Complete\n Documentation])
End_Phase1((Extract Data))
Target_Selection --> Identify_Components
Identify_Components --> Create_Block_Diagram --> Contains_Prog_IC -->|No| Complete_Documentation
Contains_Prog_IC -->|Yes| End_Phase1
end
subgraph RE_Prog-Extraction [Programmable Device Extraction]
direction LR
Start_Phase2((Extract Data))
Chip_Locked{Chip\n Locked?}
Read_Chip_Memory[/Extract\n Chip\n Memory/]
Vulnerability_Exists{Vulnerability\n Exists?}
Exploit_Chip[Exploit\n Chip]
Find_Vuln[Find\n Vulnerability]
Start_Phase2 --> Chip_Locked
Chip_Locked -->|No| Read_Chip_Memory
Chip_Locked -->|Yes| Vulnerability_Exists
Vulnerability_Exists -->|Yes| Exploit_Chip
Vulnerability_Exists -->|No| Find_Vuln
end
subgraph RE_Induced-Fault [Fault Injection Workflow]
direction LR
subgraph FI_Side-Channel [Side Channel Analysis]; end
subgraph FI_Voltage [Voltage Fault Injection]; end
subgraph FI_EM [Electromagnetic Fault Injection]; end
FI_Side-Channel --> FI_Voltage
FI_Side-Channel --> FI_EM
end
subgraph RE_Microscope-Extraction [Microscope Workflow]
direction LR
ME_Sample-Preparation[Sample Preparation]
subgraph ME_Optical-Extraction [Optical Microscope]; end
subgraph ME_Electron-Extraction [Electron Microscope]; end
ME_Sample-Preparation --> ME_Optical-Extraction
ME_Sample-Preparation --> ME_Electron-Extraction
end
subgraph RE_Firmware [Firmware Reverse Engineering]
direction LR
subgraph FW_Tool-Selection [Tool Selection]; end
subgraph FW_Tool-Configuration [Tool Configuration]; end
subgraph FW_AI-Usage [Using AI]; end
subgraph FW_Beginner [Getting Started]; end
subgraph FW_Intermediate [Intermediate]; end
subgraph FW_Advanced [Advanced Techniques]; end
FW_Tool-Selection --> FW_Tool-Configuration --> FW_Beginner --> FW_Intermediate --> FW_Advanced
FW_Beginner --> FW_AI-Usage
end
RE_Physical-Analysis --> RE_Prog-Extraction
RE_Prog-Extraction --> RE_Induced-Fault
RE_Prog-Extraction --> RE_Microscope-Extraction
RE_Induced-Fault --> RE_Firmware
RE_Microscope-Extraction --> RE_Firmware
Assembled RE Flowchart Overview
The same diagram, assembled at page-render time from the five part pages below by the <composediagram> tag. Nothing here is hand-maintained except the five edges joining the parts — edit any part page and this updates by itself.
flowchart TD
%% ___ begin Mermaid:RE Physical Analysis ___
subgraph RE_Physical-Analysis [Physical Analysis]
direction LR
Target_Selection([Target\n Selection]); click Target_Selection "https://www.mediawiki.org"
Identify_Components[Identify\n Components]; click Identify_Components "/view/Flash_Extraction"
Create_Block_Diagram[/Create\n Block\n Diagram/]
Contains_Prog_IC{Contains\n Programmable\n IC?}
Complete_Documentation([Complete\n Documentation])
PA_Extract_Data((Extract Data))
Target_Selection --> Identify_Components
Identify_Components --> Create_Block_Diagram --> Contains_Prog_IC -->|No| Complete_Documentation
Contains_Prog_IC -->|Yes| PA_Extract_Data
end
%% ___ end Mermaid:RE Physical Analysis ___
%% ___ begin Mermaid:RE Programmable Device Extraction ___
subgraph RE_Prog-Extraction [Programmable Device Extraction]
direction LR
PDE_Extract_Data((Extract Data))
Chip_Locked{Chip\n Locked?}
Read_Chip_Memory[/Extract\n Chip\n Memory/]
Vulnerability_Exists{Vulnerability\n Exists?}
Exploit_Chip[Exploit\n Chip]
Find_Vuln[Find\n Vulnerability]
PDE_Memory_File((IC Data))
PDE_Extract_Data --> Chip_Locked
Chip_Locked -->|No| Read_Chip_Memory --> PDE_Memory_File
Chip_Locked -->|Yes| Vulnerability_Exists
Vulnerability_Exists -->|Yes| Exploit_Chip
Vulnerability_Exists -->|No| Find_Vuln
end
%% ___ end Mermaid:RE Programmable Device Extraction ___
%% ___ begin Mermaid:RE Fault Injection Workflow ___
subgraph RE_Induced-Fault [Fault Injection Workflow]
direction LR
FIW_Memory_File((IC Data))
subgraph FI_Side-Channel [Side Channel Analysis]; end
subgraph FI_Voltage [Voltage Fault Injection]; end
subgraph FI_EM [Electromagnetic Fault Injection]; end
FI_Side-Channel --> FI_Voltage --> FIW_Memory_File
FI_Side-Channel --> FI_EM --> FIW_Memory_File
end
%% ___ end Mermaid:RE Fault Injection Workflow ___
%% ___ begin Mermaid:RE Microscope Workflow ___
subgraph RE_Microscope-Extraction [Microscope Workflow]
direction LR
MW_Memory_File((IC Data))
MW_Sample-Preparation[Sample Preparation]
subgraph MW_Optical-Extraction [Optical Microscope]; end
subgraph MW_Electron-Extraction [Electron Microscope]; end
MW_Sample-Preparation --> MW_Optical-Extraction --> MW_Memory_File
MW_Sample-Preparation --> MW_Electron-Extraction --> MW_Memory_File
end
%% ___ end Mermaid:RE Microscope Workflow ___
%% ___ begin Mermaid:RE Firmware Reverse Engineering ___
subgraph RE_Firmware [Firmware Reverse Engineering]
direction LR
FRE_Memory_File((IC Data))
subgraph FW_Tool-Selection [Tool Selection]; end
subgraph FW_Tool-Configuration [Tool Configuration]; end
subgraph FW_AI-Usage [Using AI]; end
subgraph FW_Beginner [Getting Started]; end
subgraph FW_Intermediate [Intermediate]; end
subgraph FW_Advanced [Advanced Techniques]; end
FRE_Memory_File --> FW_Tool-Selection --> FW_Tool-Configuration --> FW_Beginner --> FW_Intermediate --> FW_Advanced
FW_Beginner --> FW_AI-Usage
end
%% ___ end Mermaid:RE Firmware Reverse Engineering ___
%% ___ edges between parts ___
RE_Physical-Analysis --> RE_Prog-Extraction
RE_Prog-Extraction --> RE_Induced-Fault
RE_Prog-Extraction --> RE_Microscope-Extraction
RE_Induced-Fault --> RE_Firmware
RE_Microscope-Extraction --> RE_Firmware
Depth levels
The same five parts, drawn at different depths with level (every part) and levelN (part N only). Level 1 draws each part as one block, level 2 draws the part with its inner subgraphs as blocks, and each level after that opens one more layer. Empty subgraphs are placeholders and simply stay blocks.
Level 1 — level="1"
flowchart LR
%% ___ begin Mermaid:RE Physical Analysis ___
RE_Physical-Analysis[Physical Analysis]
%% ___ end Mermaid:RE Physical Analysis ___
%% ___ begin Mermaid:RE Programmable Device Extraction ___
RE_Prog-Extraction[Programmable Device Extraction]
%% ___ end Mermaid:RE Programmable Device Extraction ___
%% ___ begin Mermaid:RE Fault Injection Workflow ___
RE_Induced-Fault[Fault Injection Workflow]
%% ___ end Mermaid:RE Fault Injection Workflow ___
%% ___ begin Mermaid:RE Microscope Workflow ___
RE_Microscope-Extraction[Microscope Workflow]
%% ___ end Mermaid:RE Microscope Workflow ___
%% ___ begin Mermaid:RE Firmware Reverse Engineering ___
RE_Firmware[Firmware Reverse Engineering]
%% ___ end Mermaid:RE Firmware Reverse Engineering ___
%% ___ edges between parts ___
RE_Physical-Analysis --> RE_Prog-Extraction
RE_Prog-Extraction --> RE_Induced-Fault
RE_Prog-Extraction --> RE_Microscope-Extraction
RE_Induced-Fault --> RE_Firmware
RE_Microscope-Extraction --> RE_Firmware
Level 1, Physical Analysis at level 2 — level="1" level1="2"
flowchart TD
%% ___ begin Mermaid:RE Physical Analysis ___
RE_Physical-Analysis[Physical Analysis]
%% ___ end Mermaid:RE Physical Analysis ___
%% ___ begin Mermaid:RE Programmable Device Extraction ___
RE_Prog-Extraction[Programmable Device Extraction]
%% ___ end Mermaid:RE Programmable Device Extraction ___
%% ___ begin Mermaid:RE Fault Injection Workflow ___
RE_Induced-Fault[Fault Injection Workflow]
%% ___ end Mermaid:RE Fault Injection Workflow ___
%% ___ begin Mermaid:RE Microscope Workflow ___
RE_Microscope-Extraction[Microscope Workflow]
%% ___ end Mermaid:RE Microscope Workflow ___
%% ___ begin Mermaid:RE Firmware Reverse Engineering ___
subgraph RE_Firmware [Firmware Reverse Engineering]
direction LR
FRE_Memory_File((IC Data))
FW_Tool-Selection[Tool Selection]
FW_Tool-Configuration[Tool Configuration]
FW_AI-Usage[Using AI]
FW_Beginner[Getting Started]
FW_Intermediate[Intermediate]
FW_Advanced[Advanced Techniques]
FRE_Memory_File --> FW_Tool-Selection --> FW_Tool-Configuration --> FW_Beginner --> FW_Intermediate --> FW_Advanced
FW_Beginner --> FW_AI-Usage
end
%% ___ end Mermaid:RE Firmware Reverse Engineering ___
%% ___ edges between parts ___
RE_Physical-Analysis --> RE_Prog-Extraction
RE_Prog-Extraction --> RE_Induced-Fault
RE_Prog-Extraction --> RE_Microscope-Extraction
RE_Induced-Fault --> RE_Firmware
RE_Microscope-Extraction --> RE_Firmware
Individual Components
Each part is an ordinary diagram page with its own editor, preview and history, and each renders on its own as well as inside the assembled overview above.
Physical Analysis
Mermaid:RE Physical Analysis — edit
flowchart LR
Target_Selection([Target\n Selection]); click Target_Selection "https://www.mediawiki.org"
Identify_Components[Identify\n Components]; click Identify_Components "/view/Flash_Extraction"
Create_Block_Diagram[/Create\n Block\n Diagram/]
Contains_Prog_IC{Contains\n Programmable\n IC?}
Complete_Documentation([Complete\n Documentation])
PA_Extract_Data((Extract Data))
Target_Selection --> Identify_Components
Identify_Components --> Create_Block_Diagram --> Contains_Prog_IC -->|No| Complete_Documentation
Contains_Prog_IC -->|Yes| PA_Extract_Data
Mermaid:RE Programmable Device Extraction — edit
flowchart LR
PDE_Extract_Data((Extract Data))
Chip_Locked{Chip\n Locked?}
Read_Chip_Memory[/Extract\n Chip\n Memory/]
Vulnerability_Exists{Vulnerability\n Exists?}
Exploit_Chip[Exploit\n Chip]
Find_Vuln[Find\n Vulnerability]
PDE_Memory_File((IC Data))
PDE_Extract_Data --> Chip_Locked
Chip_Locked -->|No| Read_Chip_Memory --> PDE_Memory_File
Chip_Locked -->|Yes| Vulnerability_Exists
Vulnerability_Exists -->|Yes| Exploit_Chip
Vulnerability_Exists -->|No| Find_Vuln
Fault Injection Workflow
Mermaid:RE Fault Injection Workflow — edit
flowchart LR
FIW_Memory_File((IC Data))
subgraph FI_Side-Channel [Side Channel Analysis]; end
subgraph FI_Voltage [Voltage Fault Injection]; end
subgraph FI_EM [Electromagnetic Fault Injection]; end
FI_Side-Channel --> FI_Voltage --> FIW_Memory_File
FI_Side-Channel --> FI_EM --> FIW_Memory_File
Microscope Workflow
Mermaid:RE Microscope Workflow — edit
flowchart LR
MW_Memory_File((IC Data))
MW_Sample-Preparation[Sample Preparation]
subgraph MW_Optical-Extraction [Optical Microscope]; end
subgraph MW_Electron-Extraction [Electron Microscope]; end
MW_Sample-Preparation --> MW_Optical-Extraction --> MW_Memory_File
MW_Sample-Preparation --> MW_Electron-Extraction --> MW_Memory_File
Firmware Reverse Engineering
Mermaid:RE Firmware Reverse Engineering — edit
flowchart LR
FRE_Memory_File((IC Data))
subgraph FW_Tool-Selection [Tool Selection]; end
subgraph FW_Tool-Configuration [Tool Configuration]; end
subgraph FW_AI-Usage [Using AI]; end
subgraph FW_Beginner [Getting Started]; end
subgraph FW_Intermediate [Intermediate]; end
subgraph FW_Advanced [Advanced Techniques]; end
FRE_Memory_File --> FW_Tool-Selection --> FW_Tool-Configuration --> FW_Beginner --> FW_Intermediate --> FW_Advanced
FW_Beginner --> FW_AI-Usage