Hacking Tools

DeLink : Decrypting D-Link Firmware Across Devices With A Rust-Based Library

A crypto library to decrypt various encrypted D-Link firmware images.

Confirmed to work on the following D-Link devices:

  • E15
  • E30
  • R12
  • R15
  • R18
  • M18
  • M30
  • M32
  • M60
  • DAP-1665
  • DAP-1820
  • DAP-1955
  • DAP-2610
  • DAP-2680
  • DAP-2682
  • DIR-850L A1
  • DIR-850L B1
  • DAP-1610 B1
  • DAP-1620 B1
  • DAP-LX1880
  • DRA-1360 A1
  • DRA-2060 A1
  • DIR-1750
  • DIR-2055
  • DIR-LX1870
  • DIR-X1560
  • DIR-X1870
  • DIR-X4860
  • DIR-X5460
  • DIR-822
  • DIR-842
  • DIR-878
  • DIR-2150
  • DIR-3040
  • DIR-3060

Encryption keys/methods are often re-used amongst devices and firmware, so other devices may also be supported.

Compiling

You must have the Rust compiler installed:

cargo build --release

Command Line Usage:

./target/release/delink encrypted.bin decrypted.bin

Rust Library Usage:

// Read in the contents of an encrypted firmware image
match std::fs::read("DIR850LB1_FW220WWb03.bin") {
    Err(e) => {
        eprint!("Failed to read input file: {}", e);
    }
    Ok(encrypted_data) => {
        // Attempt to decrypt the encrypted data
        match delink::decrypt(&encrypted_data) {
            Err(e) => {
                eprint!("Decryption failed: {}", e);
            }
            Ok(decrypted_data) => {
                // Decryption successful, save decrypted data to disk
                if let Err(e) = std::fs::write("decrypted.bin", decrypted_data) {
                    eprint!("Failed to write decrypted data: {}", e);
                }
            }
        }
    }
}
Varshini

Varshini is a Cyber Security expert in Threat Analysis, Vulnerability Assessment, and Research. Passionate about staying ahead of emerging Threats and Technologies.

Recent Posts

Bash Scripting Best Practices Every Beginner Should Know

Introduction Bash scripting is a powerful way to automate Linux tasks, but writing a script…

22 hours ago

How To Create A Self-Signed SSL Certificate Using Bash And OpenSSL

Introduction A self-signed SSL certificate is a certificate that is created and signed by the…

23 hours ago

How To Debug Bash Scripts Using bash -x And set Commands

Introduction Debugging is an important part of Bash scripting. When a script does not work…

1 day ago

How To Use Cron Jobs With Bash Scripts For Automation

Introduction Cron jobs are used in Linux to run commands or Bash scripts automatically at…

1 day ago

How To Use Pipes In Bash Scripts For Command Chaining

Introduction Pipes are an important feature in Linux and Bash scripting. A pipe allows you…

1 day ago

How To Use grep, awk, And sed In Bash Scripts

Introduction The grep, awk, and sed commands are powerful text-processing tools in Linux. They are…

1 day ago