Skip to content

Commit 921a087

Browse files
committed
return gestalt information
1 parent 54ee10e commit 921a087

File tree

1 file changed

+26
-2
lines changed

1 file changed

+26
-2
lines changed

Nudge/Utilities/Utils.swift

+26-2
Original file line numberDiff line numberDiff line change
@@ -652,13 +652,14 @@ struct DeviceManager {
652652
let boardID = getIORegInfo(serviceTarget: "board-id") ?? "Unknown"
653653
let bridgeID = getBridgeModelID()
654654
let hardwareModelID = getIORegInfo(serviceTarget: "target-sub-type") ?? "Unknown"
655+
let gestaltModelStringID = getKeyResultFromGestalt("HWModelStr")
655656

656657
LogManager.debug("Hardware Board ID: \(boardID)", logger: utilsLog)
657658
LogManager.debug("Hardware Bridge ID: \(bridgeID)", logger: utilsLog)
658659
LogManager.debug("Hardware Model ID: \(hardwareModelID)", logger: utilsLog)
660+
LogManager.debug("Gestalt Hardware Model ID: \(gestaltModelStringID)", logger: utilsLog)
659661

660-
661-
return [boardID.trimmingCharacters(in: .whitespacesAndNewlines), bridgeID.trimmingCharacters(in: .whitespacesAndNewlines), hardwareModelID.trimmingCharacters(in: .whitespacesAndNewlines)]
662+
return [boardID.trimmingCharacters(in: .whitespacesAndNewlines), bridgeID.trimmingCharacters(in: .whitespacesAndNewlines), hardwareModelID.trimmingCharacters(in: .whitespacesAndNewlines), gestaltModelStringID.trimmingCharacters(in: .whitespacesAndNewlines)]
662663
}
663664

664665
func getHardwareUUID() -> String {
@@ -706,6 +707,29 @@ struct DeviceManager {
706707
}
707708
}
708709

710+
func getKeyResultFromGestalt(_ keyname: String) -> String {
711+
let handle = dlopen("/usr/lib/libMobileGestalt.dylib", RTLD_NOW)
712+
guard handle != nil else {
713+
return "Unknown"
714+
}
715+
defer {
716+
dlclose(handle)
717+
}
718+
719+
let symbol = dlsym(handle, "MGGetStringAnswer")
720+
guard symbol != nil else {
721+
return "Unknown"
722+
}
723+
724+
let function = unsafeBitCast(symbol, to: (@convention(c) (String) -> String?).self)
725+
726+
guard let result = function(keyname) else {
727+
return "Unknown"
728+
}
729+
730+
return result
731+
}
732+
709733
func getPatchOSVersion() -> Int {
710734
let PatchOSVersion = ProcessInfo().operatingSystemVersion.patchVersion
711735
LogManager.info("Patch OS Version: \(PatchOSVersion)", logger: utilsLog)

0 commit comments

Comments
 (0)