예제 #1
0
        public void UpdateLocation(Location location)
        {
            // no device is connected.
            if (Devices.Count == 0)
            {
                return;
            }

            var Longitude = location.Longitude.ToString();
            var Latitude  = location.Latitude.ToString();
            var Altitude  = location.Altitude.ToString();

            for (int i = 0; i < Devices.Count(); i++)
            {
                DeviceModel itm = Devices[i];
                UpdateLocation(Longitude, Latitude, Altitude, itm);
            }
        }
예제 #2
0
        public dev_prov(MainWindow mwnd, List <DeviceModel> Devices)
        {
            InitializeComponent();

            detailed_devinfo.ReadOnly = true;

            device            = Devices[0];
            this.devinfo.Text = device.Name + "(" + device.Version + ")";

            if (device.isDevMode)
            {
                this.detailed_devinfo.Text  = "Device is already properly provisioned!";
                this.start_prov_btn.Enabled = false;
            }
            else
            {
                this.detailed_devinfo.Text  = "Device is NOT provisioned\n";
                this.start_prov_btn.Enabled = true;
            }
        }
예제 #3
0
        public void device_add_remove(DeviceModel device, dev_op op_type)
        {
            switch (op_type)
            {
            case dev_op.add_device:
                if (device.isDevMode == false)
                {
                    device.Name += " (UNPROVISIONED)";
                }
                Devices.Add(device);
                break;

            case dev_op.remove_device:
                Devices.Remove(device);
                break;

            case dev_op.clear_all:
                Devices.Clear();
                break;

            default: break;
            }
        }
예제 #4
0
        public void stop_service(DeviceModel itm)
        {
            var size = BitConverter.GetBytes(1u);

            Array.Reverse(size);
            var num = 1u;

            iDevice.idevice_new(out var device, itm.UDID);
            var ret_handshake = lockdown.lockdownd_client_new_with_handshake(device, out var client,
                                                                             "devicelocation");

            if (ret_handshake != 0)
            {
                return;
            }

            var ret_start_service = lockdown.lockdownd_start_service(client,
                                                                     "com.apple.dt.simulatelocation", out var service2);

            if (ret_start_service != 0)
            {
                return;
            }

            var se = service.service_client_new(device, service2, out var client2);

            if (se != 0)
            {
                return;
            }

            se = service.service_send(client2, size, 4u, ref num);
            if (se != 0)
            {
                return;
            }
        }
예제 #5
0
        private int create_new_device(string udid, ref DeviceModel device)
        {
            iDeviceHandle iDeviceHandle;

            iDevice.idevice_new(out iDeviceHandle, udid).ThrowOnError();
            LockdownClientHandle lockdownClientHandle;

            var ret_handshake = lockdown.lockdownd_client_new_with_handshake(iDeviceHandle,
                                                                             out lockdownClientHandle, "Quamotion");

            if (ret_handshake != 0)
            {
                return(-1);
            }

            var ret_get_devname = lockdown.lockdownd_get_device_name(lockdownClientHandle,
                                                                     out var deviceName);

            if (ret_get_devname != 0)
            {
                return(-1);
            }

            ret_handshake = lockdown.lockdownd_client_new_with_handshake(iDeviceHandle,
                                                                         out lockdownClientHandle, "waua");
            if (ret_handshake != 0)
            {
                return(-1);
            }

            var ret_get_value = lockdown.lockdownd_get_value(lockdownClientHandle, null,
                                                             "ProductVersion", out var node);

            if (ret_get_devname != 0)
            {
                return(-1);
            }

            LibiMobileDevice.Instance.Plist.plist_get_string_val(node, out var version);

            ret_get_value = lockdown.lockdownd_get_value(lockdownClientHandle, null,
                                                         "BuildVersion", out node);
            if (ret_get_devname != 0)
            {
                return(-1);
            }

            LibiMobileDevice.Instance.Plist.plist_get_string_val(node, out var bldVersion);

            iDeviceHandle.Dispose();
            lockdownClientHandle.Dispose();

            device.UDID         = udid;
            device.Name         = deviceName;
            device.Version      = version;
            device.BuildVersion = bldVersion;
            device.ShortVersion = string.Join(".", version.Split('.').Take(2));
            device.FullVersion  = string.Join(".", version.Split('.').Take(2)) + "(" + bldVersion + ")";
            device.isDevMode    = DeviceUtils.is_device_on_dev_mode(udid);

            return(0);
        }
예제 #6
0
        private void UpdateLocation(string Longitude, string Latitude, string Altitude, DeviceModel itm)
        {
            var size = BitConverter.GetBytes(0u);

            Array.Reverse(size);

            var num = 0u;

            iDevice.idevice_new(out var device, itm.UDID);

            var ret_handshake = lockdown.lockdownd_client_new_with_handshake(device, out var client,
                                                                             "devicelocation");

            if (ret_handshake != 0)
            {
                return;
            }

            if (!itm.isDevMode)
            {
                return;
            }

            var ret_start_service = lockdown.lockdownd_start_service(client,
                                                                     "com.apple.dt.simulatelocation", out var service2);

            if (ret_start_service != 0)
            {
                return;
            }

            var se = service.service_client_new(device, service2, out var client2);

            if (se != 0)
            {
                return;
            }

            se = service.service_send(client2, size, 4u, ref num);
            if (se != 0)
            {
                return;
            }

            num = 0u;
            var bytesLocation = Encoding.ASCII.GetBytes(Latitude);

            size = BitConverter.GetBytes((uint)Latitude.Length);
            Array.Reverse(size);
            se = service.service_send(client2, size, 4u, ref num);
            se = service.service_send(client2, bytesLocation,
                                      (uint)bytesLocation.Length, ref num);

            bytesLocation = Encoding.ASCII.GetBytes(Longitude);
            size          = BitConverter.GetBytes((uint)Longitude.Length);
            Array.Reverse(size);
            se = service.service_send(client2, size, 4u, ref num);
            se = service.service_send(client2, bytesLocation,
                                      (uint)bytesLocation.Length, ref num);

            bytesLocation = Encoding.ASCII.GetBytes(Altitude);
            size          = BitConverter.GetBytes((uint)Altitude.Length);
            Array.Reverse(size);
            se = service.service_send(client2, size, 4u, ref num);
            se = service.service_send(client2, bytesLocation,
                                      (uint)bytesLocation.Length, ref num);

            device.Close();
            device.Dispose();
            client.Dispose();
            client2.Dispose();

            service2.Dispose();
        }
예제 #7
0
 public static string get_ddi_image_url(DeviceModel deviceInfo)
 {
     return(ddi_repo_url + deviceInfo.FullVersion + ".zip");
 }