diff options
-rw-r--r-- | gssc.mm | 240 |
1 files changed, 234 insertions, 6 deletions
@@ -83,18 +83,246 @@ int main(int argc, char *argv[]) { NULL ); - const NSArray *capability; - for (;;) { + const NSDictionary *capability; + if ($GSSystemCopyCapability != NULL) { - capability = reinterpret_cast<const NSArray *>((*$GSSystemCopyCapability)(reinterpret_cast<CFStringRef>(name))); + capability = reinterpret_cast<const NSDictionary *>((*$GSSystemCopyCapability)(reinterpret_cast<CFStringRef>(name))); if (capability != nil) capability = [capability autorelease]; } else if ($GSSystemGetCapability != NULL) { - capability = reinterpret_cast<const NSArray *>((*$GSSystemGetCapability)(reinterpret_cast<CFStringRef>(name))); + capability = reinterpret_cast<const NSDictionary *>((*$GSSystemGetCapability)(reinterpret_cast<CFStringRef>(name))); } else { - capability = nil; - break; + if (void *libMobileGestalt = dlopen("/usr/lib/libMobileGestalt.dylib", RTLD_GLOBAL | RTLD_LAZY)) + if (CFTypeRef (*$MGCopyAnswer)(CFStringRef) = reinterpret_cast<CFTypeRef (*)(CFStringRef)>(dlsym(libMobileGestalt, "MGCopyAnswer"))) { + NSMutableDictionary *answers([NSMutableDictionary dictionary]); + for (NSString *name in [NSArray arrayWithObjects: + @"ActiveWirelessTechnology", + //@"AirplaneMode", + @"AllDeviceCapabilities", + @"AllowYouTube", + @"AllowYouTubePlugin", + //@"ApNonce", + //@"AppleInternalInstallCapability", + @"assistant", + //@"BasebandBoardSnum", + //@"BasebandCertId", + //@"BasebandChipId", + //@"BasebandFirmwareManifestData", + @"BasebandFirmwareVersion", + //@"BasebandKeyHashInformation", + //@"BasebandRegionSKU", + //@"BasebandSerialNumber", + @"BatteryCurrentCapacity", + @"BatteryIsCharging", + @"BatteryIsFullyCharged", + //@"BluetoothAddress", + @"BoardId", + @"BuildVersion", + @"CPUArchitecture", + //@"CarrierBundleInfoArray", + @"CarrierInstallCapability", + @"cellular-data", + @"ChipID", + //@"CompassCalibration", + //@"CompassCalibrationDictionary", + //@"ComputerName", + @"contains-cellular-radio", + @"DeviceClass", + @"DeviceClassNumber", + @"DeviceColor", + @"DeviceEnclosureColor", + //@"DeviceName", + @"DeviceSupports1080p", + @"DeviceSupports3DImagery", + @"DeviceSupports3DMaps", + @"DeviceSupports4G", + @"DeviceSupports720p", + @"DeviceSupports9Pin", + @"DeviceSupportsFaceTime", + @"DeviceSupportsLineIn", + @"DeviceSupportsNavigation", + @"DeviceSupportsSimplisticRoadMesh", + @"DeviceSupportsTethering", + @"DeviceVariant", + //@"DiagData", + @"dictation", + //@"DieId", + //@"DiskUsage", + @"encrypted-data-partition", + //@"EthernetMacAddress", + @"ExternalChargeCapability", + @"ExternalPowerSourceConnected", + //@"FaceTimeBitRate2G", + //@"FaceTimeBitRate3G", + //@"FaceTimeBitRateLTE", + //@"FaceTimeBitRateWiFi", + //@"FaceTimeDecodings", + //@"FaceTimeEncodings", + //@"FaceTimePreferredDecoding", + //@"FaceTimePreferredEncoding", + //@"FirmwareNonce", + //@"FirmwarePreflightInfo", + @"FirmwareVersion", + @"ForwardCameraCapability", + @"gps", + @"green-tea", + @"HWModelStr", + @"HardwarePlatform", + //@"HasAllFeaturesCapability", + @"HasBaseband", + @"HasInternalSettingsBundle", + @"HasSpringBoard", + //@"IntegratedCircuitCardIdentifier", + //@"InternalBuild", + //@"InternationalMobileEquipmentIdentity", + //@"InverseDeviceID", + //@"IsSimulator", + //@"IsThereEnoughBatteryLevelForSoftwareUpdate", + //@"IsUIBuild", + //@"MLBSerialNumber", + @"main-screen-class", + @"main-screen-height", + @"main-screen-orientation", + @"main-screen-pitch", + @"main-screen-scale", + @"main-screen-width", + @"MinimumSupportediTunesVersion", + //@"MobileEquipmentIdentifier", + //@"MobileSubscriberCountryCode", + //@"MobileSubscriberNetworkCode", + @"wi-fi", + @"ModelNumber", + @"not-green-tea", + @"PanoramaCameraCapability", + @"PartitionType", + @"ProductName", + @"ProductType", + @"ProductVersion", + //@"ProximitySensorCalibration", + @"RearCameraCapability", + @"RegionCode", + @"RegionInfo", + //@"RegionalBehaviorAll", + @"RegionalBehaviorChinaBrick", + @"RegionalBehaviorEUVolumeLimit", + @"RegionalBehaviorGB18030", + @"RegionalBehaviorGoogleMail", + @"RegionalBehaviorNTSC", + @"RegionalBehaviorNoPasscodeLocationTiles", + @"RegionalBehaviorNoVOIP", + @"RegionalBehaviorNoWiFi", + @"RegionalBehaviorShutterClick", + @"RegionalBehaviorVolumeLimit", + @"RegulatoryIdentifiers", + //@"ReleaseType", + @"RequiredBatteryLevelForSoftwareUpdate", + @"SBAllowSensitiveUI", + @"SBCanForceDebuggingInfo", + @"SDIOManufacturerTuple", + @"SDIOProductInfo", + //@"SIMTrayStatus", + //@"ScreenDimensions", + //@"screen-dimensions", + //@"SerialNumber", + @"ShouldHactivate", + @"SigningFuse", + //@"SoftwareBehavior", + //@"SoftwareBundleVersion", + @"SupportedDeviceFamilies", + //@"SupportedKeyboards", + //@"SysCfg", + //@"UniqueChipID", + //@"UniqueDeviceID", + //@"UniqueDeviceIDData", + //@"UserAssignedDeviceName", + //@"WifiAddress", + //@"WifiAddressData", + //@"WifiVendor", + //@"WirelessBoardSnum", + @"iTunesFamilyID", + + @"720p", + @"1080p", + @"accelerometer", + @"accessibility", + @"additional-text-tones", + @"all-features", + @"any-telephony", + @"app-store", + @"application-installation", + @"armv6", + @"armv7", + @"assistant", + @"auto-focus-camera", + @"bluetooth", + @"bluetooth-le", + @"camera-flash", + @"cellular-data", + @"contains-cellular-radio", + @"dictation", + @"display-mirroring", + @"displayport", + @"encode-aac", + @"encrypted-data-partition", + @"fcc-logos-via-software", + @"front-facing-camera", + @"gamekit", + @"gas-gauge-battery", + @"gps", + @"gyroscope", + @"h264-encoder", + @"hardware-keyboard", + @"hd-video-capture", + @"hdr-image-capture", + @"hiccough-interval", + @"hidpi", + @"homescreen-wallpaper", + @"hw-encode-snapshots", + @"international-settings", + @"io-surface-backed-images", + @"load-thumbnails-while-scrolling", + @"location-services", + @"magnetometer", + @"microphone", + @"mms", + @"multitasking", + @"music-store", + @"nike-ipod", + @"not-green-tea", + @"opengles-1", + @"opengles-2", + @"peer-peer", + @"photo-adjustments", + @"photo-stream", + @"proximity-sensor", + @"ptp-large-files", + @"ringer-switch", + @"sms", + @"stand-alone-contacts", + @"still-camera", + @"telephony", + @"telephony-maximum-generation", + @"tv-out-crossfade", + @"tv-out-settings", + @"unified-ipod", + @"venice", + @"video-camera", + @"voice-control", + @"voip", + @"volume-buttons", + @"wifi", + @"youtube", + @"youtube-plugin", + @"ipad", + @"wildcat", + nil]) + if (CFTypeRef answer = $MGCopyAnswer(reinterpret_cast<CFStringRef>(name))) { + [answers setObject:(id)answer forKey:name]; + CFRelease(answer); + } + capability = answers; + } } if (capability != nil) { |