Skip to content

DeltaZulu-OU/dzmac

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

183 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

DZMAC

PR Tests Dependabot Updates CodeQL

Overview

DZMAC is a Windows desktop application to spoof MAC address. It is a reimplementation of Technitium MAC Address Changer (TMAC), not a reverse-engineering product, but does not aim for feature parity.

The goal is to provide a focused, predictable, and maintainable application centered on core adapter management workflows.

Status

This project is in production/stable stage for personal-use FOSS.

DZMAC is a from-scratch reimplementation of TMAC. The project has completed its alpha/beta roadmap gates and is now maintained as a stable release stream focused on reliability for the current feature scope.

TMAC has existed for more than a decade and has been widely used. DZMAC tries to preserve the familiar core experience where it makes sense, but it deliberately does not aim for full feature parity. Some TMAC features are excluded or redesigned to keep DZMAC smaller, clearer, and easier to maintain.

Usage

DZMAC shows likely physical network adapters by default. This keeps the main adapter list focused on the devices most users want to manage day to day.

Use Options → Show All Adapters to include virtual, logical, VPN, hypervisor, filter, and other software-defined adapters.

File → Export Text Report exports exactly what is currently visible in the adapter list. To export all adapters, enable Show All Adapters first.

Presets are managed from the Presets tab. DZMAC supports .tpf preset files for the currently supported preset fields. You can open, save, save as, import, and export presets from the File menu. Launching DZMAC with a .tpf path opens that preset file directly:

DZMAC.exe <path-to-file>.tpf

DZMAC can read supported data from TMAC .tpf files, but updated files are not guaranteed to remain compatible with TMAC.

See the wiki for help.

Main window showing Information Details Main window showing IP Addresses Main window showing Presets CLI showing help text

How DZMAC differs from TMAC

DZMAC is inspired by TMAC, but it makes different product and UX decisions. The main differences are listed below.

Physical adapters first

DZMAC uses Windows adapter metadata to decide whether an adapter is physical or virtual/logical.

The preferred source is MSFT_NetAdapter. On older paths, DZMAC falls back to Win32_NetworkAdapter.PhysicalAdapter. If explicit adapter-type metadata is unavailable, DZMAC uses PNPDeviceID prefix inference such as PCI\\, USB\\, and ACPI\\ as a best-effort fallback.

This classification is intentionally conservative. Some real hardware may still appear as non-physical depending on driver metadata. Use Options → Show All Adapters when you need the full adapter list.

Adapter state changes are menu-driven

The Enabled checkbox in the adapter list is read-only. It is a status indicator, not an action control.

Adapter state changes are performed through Action → Enable Adapter and Action → Disable Adapter. This keeps confirmation dialogs, status-bar feedback, diagnostics, and error handling in one consistent workflow.

Preset support is limited to the supported DZMAC model

DZMAC supports .tpf preset workflows, including:

  • creating a default default.tpf file on first launch when one does not exist
  • creating, editing, deleting, and applying presets from the Presets tab
  • opening, saving, importing, and exporting preset files from the File menu
  • opening a preset file directly at startup
  • optional current-user .tpf file association through File → Associate with Preset Files (.tpf)

The parser is resilient by design. It reads the supported preset subset and ignores unsupported or unparseable residual data where possible.

It is not backwards compatible. So, DZMAC .tpf files cannot be read by TMAC.

Event logs are used for diagnostics

DZMAC writes diagnostic events to Windows Event Log under, Event Viewer → Windows Logs → Application. The logs have Source set as DZMAC.

See the Event Log Catalog for event details.

Portable by design

DZMAC does not currently ship with an installer. It is distributed as a small executable that relies on .NET Framework 4.8.1, which is available by default on supported Windows 10 and Windows 11 endpoints.

Narrower feature scope

The following TMAC-adjacent features are intentionally out of scope for the current DZMAC version:

Feature DZMAC status
DHCPv6 Not supported
Proxy management Not supported
Auto-updater Not included
System tray mode Not included
Tray animation Not included

Only DHCPv4 is currently supported. Internet Explorer / system proxy configuration, background tray behavior, tray animation, and built-in update infrastructure are deliberately excluded.

Development setup

ObjectListView2022 is now maintained in a separate repository and consumed as a Git submodule at src/ObjectListView:

  • Submodule repository: https://github.com/DeltaZulu-OU/ObjectListView
  • Submodule path in this repo: src/ObjectListView

Clone with submodules enabled so restore/build steps can resolve the project reference:

git clone --recurse-submodules https://github.com/DeltaZulu-OU/dzmac.git

If you already cloned the repository, run:

git submodule update --init --recursive

Acknowledgements

First and foremost, I'd like to thank Shreyas Zare for Technitium MAC Address Changer and other amazing contributions for the community.

Also, thanks to the following projects and resources:

License

This project is licensed under GPL v3 License.

The ObjectListView component is licensed under GPL v3 as well. The changes including migrating from .NET 2.0 to 4.8.1 can be fund under project directory.

About

A Windows desktop application (GUI & CLI) to spoof MAC addresses.

Resources

License

Contributing

Security policy

Stars

Watchers

Forks

Contributors

Languages