diff --git a/include/manufacturingcommands.hpp b/include/manufacturingcommands.hpp
index 9246de9..e7a1cc8 100644
--- a/include/manufacturingcommands.hpp
+++ b/include/manufacturingcommands.hpp
@@ -51,6 +51,13 @@
 static constexpr const char* buttonIntf = "xyz.openbmc_project.Chassis.Buttons";
 static constexpr const char* ledIntf = "xyz.openbmc_project.Led.Physical";
 
+static constexpr const char* intrusionService =
+    "xyz.openbmc_project.IntrusionSensor";
+static constexpr const char* intrusionPath =
+    "/xyz/openbmc_project/Intrusion/Chassis_Intrusion";
+static constexpr const char* intrusionIntf =
+    "xyz.openbmc_project.Chassis.Intrusion";
+
 static constexpr const char* busPropertyIntf =
     "org.freedesktop.DBus.Properties";
 static constexpr const char* ledStateStr =
@@ -121,6 +128,17 @@
     smSetSignalMax
 };
 
+/** @enum IntrusionStatus
+.*
+ *  Intrusion Status
+ */
+enum class IntrusionStatus : uint8_t
+{
+    normal = 0,
+    hardwareIntrusion,
+    tamperingDetected
+};
+
 struct SetSmSignalReq
 {
     SmSignalSet Signal;
diff --git a/src/manufacturingcommands.cpp b/src/manufacturingcommands.cpp
index c96d9f4..d8b49dc 100644
--- a/src/manufacturingcommands.cpp
+++ b/src/manufacturingcommands.cpp
@@ -277,6 +277,41 @@
 
     switch (signalType)
     {
+        case SmSignalGet::smChassisIntrusion:
+        {
+            ipmi::Value reply;
+            if (mtm.getProperty(intrusionService, intrusionPath, intrusionIntf,
+                                "Status", &reply) < 0)
+            {
+                return ipmi::responseInvalidFieldRequest();
+            }
+            std::string* intrusionStatus = std::get_if<std::string>(&reply);
+            if (!intrusionStatus)
+            {
+                return ipmi::responseUnspecifiedError();
+            }
+
+            uint8_t status = 0;
+            if (!intrusionStatus->compare("Normal"))
+            {
+                status = static_cast<uint8_t>(IntrusionStatus::normal);
+            }
+            else if (!intrusionStatus->compare("HardwareIntrusion"))
+            {
+                status =
+                    static_cast<uint8_t>(IntrusionStatus::hardwareIntrusion);
+            }
+            else if (!intrusionStatus->compare("TamperingDetected"))
+            {
+                status =
+                    static_cast<uint8_t>(IntrusionStatus::tamperingDetected);
+            }
+            else
+            {
+                return ipmi::responseUnspecifiedError();
+            }
+            return ipmi::responseSuccess(status, std::nullopt);
+        }
         case SmSignalGet::smFanPwmGet:
         {
             ipmi::Value reply;
