Ejemplo n.º 1
0
        public device_searcher()
        {
            int number_of_devices;

            short ret = External.idevice_get_device_list(out devices_ptr, out number_of_devices);

            device_list = new string[number_of_devices];
            for (int i = 0; i < number_of_devices; i++)
            {
                IntPtr devicePtr = (IntPtr)Marshal.PtrToStructure(devices_ptr, typeof(IntPtr));
                device_list[i] = Marshal.PtrToStringAnsi(devicePtr);
                devices_ptr   += IntPtr.Size;
            }
        }
Ejemplo n.º 2
0
        private string lockdownd_get_string_value(IntPtr lockdownd_handle, string what)
        {
            string val = null;
            IntPtr val_node;
            IntPtr ptrval;

            External.lockdownd_get_value(lockdownd_handle, null, what, out val_node);

            if (val_node == null || External.plist_get_node_type(val_node) != External.plist_type.PLIST_STRING)
            {
                MessageBox.Show("Unable to get " + what + " from lockdownd.");
                return(null);
            }
            External.plist_get_string_val(val_node, out ptrval);
            val = Marshal.PtrToStringAnsi(ptrval);
            External.plist_free(val_node);
            return(val);
        }
Ejemplo n.º 3
0
        public device.idevice_error_t refresh()
        {
            int number_of_devices;

            ret = External.idevice_get_device_list(out devices_ptr, out number_of_devices);
            if (ret != 0)
            {
                return((device.idevice_error_t)ret);
            }
            device_list = new string[number_of_devices];
            for (int i = 0; i < number_of_devices; i++)
            {
                devicePtr      = (IntPtr)Marshal.PtrToStructure(devices_ptr, typeof(IntPtr));
                device_list[i] = Marshal.PtrToStringAnsi(devicePtr);
                devices_ptr   += IntPtr.Size;
            }
            return((device.idevice_error_t)ret);
        }
Ejemplo n.º 4
0
        public short activate_via_apple_servers()
        {
            IntPtr activation_info_node;
            string activation_info;
            string activation_info_pre;


            string ICCID        = lockdownd_get_string_value(lockdownd_handle, "IntegratedCircuitCardIdentity");
            string IMEI         = lockdownd_get_string_value(lockdownd_handle, "InternationalMobileEquipmentIdentity");
            string IMSI         = lockdownd_get_string_value(lockdownd_handle, "InternationalMobileSubscriberIdentity");
            string serialNumber = lockdownd_get_string_value(lockdownd_handle, "SerialNumber");

            External.lockdownd_get_value(lockdownd_handle, null, "ActivationInfo", out activation_info_node);

            int type = (int)External.plist_get_node_type(activation_info_node);

            if (activation_info_node == null || External.plist_get_node_type(activation_info_node) != External.plist_type.PLIST_DICT)
            {
                MessageBox.Show("Unable to get ActivationInfo from lockdownd");
                return(-1);
            }

            uint   activation_info_size = 0;
            IntPtr activation_info_data; //char*

            External.plist_to_xml(activation_info_node, out activation_info_data, out activation_info_size);
            External.plist_free(activation_info_node);

            string activation_info_data_s = Marshal.PtrToStringAnsi(activation_info_data);


            //string activation_info_start = strstr(activation_info_data_s, "<dict>");
            int index_start = activation_info_data_s.IndexOf("<dict>");
            int index_end   = activation_info_data_s.IndexOf("</dict>");

            activation_info_pre = activation_info_data_s.Remove(0, index_start);
            activation_info     = activation_info_pre.Replace(activation_info_data_s.Remove(0, index_end + 7), "");
            if (index_start == -1)
            {
                MessageBox.Show("Unable to locate beginning of ActivationData.");
                return(-1);
            }
            if (index_end == -1)
            {
                MessageBox.Show("Unable to locate end of ActivationData.");
                return(-1);
            }
            index_end            = index_end + 7;
            activation_info_size = Convert.ToUInt32(index_end - index_start);
            IntPtr activationInfo = Marshal.StringToHGlobalAnsi(activation_info);

            Curl.GlobalInit(1);
            Easy easy_handle = new Easy();
            //easy_handle.SetOpt(CURLoption.CURLOPT_POSTFIELDS, "machine=linux&InStoreActivation=false&IMEI="+ IMEI+ "&IMSI=" + IMSI + "&ICCID=" + ICCID + "&AppleSerialNumber=" + serialNumber + "&activation-info=" + activation_info);
            MultiPartForm mf = new MultiPartForm();

            mf.AddSection(new object[] { CURLformoption.CURLFORM_COPYNAME, "machine", CURLformoption.CURLFORM_COPYCONTENTS, "win32", CURLformoption.CURLFORM_END });
            mf.AddSection(new object[] { CURLformoption.CURLFORM_COPYNAME, "InStoreActivation", CURLformoption.CURLFORM_COPYCONTENTS, "false", CURLformoption.CURLFORM_END });
            mf.AddSection(new object[] { CURLformoption.CURLFORM_COPYNAME, "IMEI", CURLformoption.CURLFORM_COPYCONTENTS, IMEI, CURLformoption.CURLFORM_END });
            mf.AddSection(new object[] { CURLformoption.CURLFORM_COPYNAME, "IMSI", CURLformoption.CURLFORM_COPYCONTENTS, IMSI, CURLformoption.CURLFORM_END });
            mf.AddSection(new object[] { CURLformoption.CURLFORM_COPYNAME, "ICCID", CURLformoption.CURLFORM_COPYCONTENTS, ICCID, CURLformoption.CURLFORM_END });
            mf.AddSection(new object[] { CURLformoption.CURLFORM_COPYNAME, "AppleSerialNumber", CURLformoption.CURLFORM_COPYCONTENTS, serialNumber, CURLformoption.CURLFORM_END });
            mf.AddSection(new object[] { CURLformoption.CURLFORM_COPYNAME, "activation-info", CURLformoption.CURLFORM_COPYCONTENTS, activation_info, CURLformoption.CURLFORM_END });


            IntPtr curl_slist = new IntPtr();

            curl_slist = curl.curl_slist_append(curl_slist, "X-Apple-Tz: -14400");
            curl_slist = curl.curl_slist_append(curl_slist, "X-Apple-Store-Front: 143441-1");

            easy_handle.SetOpt(CURLoption.CURLOPT_HTTPHEADER, curl_slist);
            System.IO.MemoryStream ms = new System.IO.MemoryStream();
            giftWriter = new System.IO.StreamWriter(ms);
            Easy.WriteFunction wf = new Easy.WriteFunction(OnWriteData);
            easy_handle.SetOpt(CURLoption.CURLOPT_HTTPPOST, mf);
            easy_handle.SetOpt(CURLoption.CURLOPT_USERAGENT, "iTunes/9.1 (Macintosh; U; Intel Mac OS X 10.5.6)");
            easy_handle.SetOpt(CURLoption.CURLOPT_URL, "https://albert.apple.com/WebObjects/ALUnbrick.woa/wa/deviceActivation");
            easy_handle.SetOpt(CURLoption.CURLOPT_SSL_VERIFYPEER, false);
            easy_handle.SetOpt(CURLoption.CURLOPT_WRITEFUNCTION, wf);
            ret = (short)easy_handle.Perform();



            index_start = output.IndexOf("<plist");
            index_end   = output.IndexOf("</plist>");

            string ticket_data_pre = output.Remove(0, index_start);
            string ticket_data     = ticket_data_pre.Replace(output.Remove(0, index_end + 8), "");

            int    ticket_length = ticket_data.Length;
            IntPtr ticket_dict;

            External.plist_from_xml(ticket_data, ticket_length, out ticket_dict);

            IntPtr iphone_activation_node = External.plist_dict_get_item(ticket_dict, "iphone-activation");

            if (iphone_activation_node.ToInt32() == 0)
            {
                iphone_activation_node = External.plist_dict_get_item(ticket_dict, "device-activation");
                if (iphone_activation_node.ToInt32() == 0)
                {
                    MessageBox.Show("Unable to find activation node.");
                    return(-2);
                }
            }

            IntPtr activation_record = External.plist_dict_get_item(iphone_activation_node, "activation-record");

            if (activation_record.ToInt32() == 0)
            {
                MessageBox.Show("Unable to find activation record.");
                return(-2);
            }

            ret = External.lockdownd_activate(lockdownd_handle, activation_record);
            return(ret);
        }
Ejemplo n.º 5
0
 public short deactivate()
 {
     return(External.lockdownd_deactivate(lockdownd_handle));
 }
Ejemplo n.º 6
0
 public short start_service(string service_id, out ushort port)
 {
     return(External.lockdownd_start_service(lockdownd_handle, service_id, out port));
 }
Ejemplo n.º 7
0
 public short get_device_name(out string device_name)
 {
     ret         = External.lockdownd_get_device_name(lockdownd_handle, out devname);
     device_name = Marshal.PtrToStringAnsi(devname);
     return(ret);
 }
Ejemplo n.º 8
0
 public lockdownd(device dev, string label)
 {
     External.lockdownd_client_new_with_handshake(dev.ToPointer(), out lockdownd_handle, label);
 }
Ejemplo n.º 9
0
 public device.idevice_error_t disconnect()
 {
     return((device.idevice_error_t)External.idevice_disconnect(connection_handle));
 }
Ejemplo n.º 10
0
 public device_connection(device dev, ushort port)
 {
     External.idevice_connect(dev.ToPointer(), port, out connection_handle);
 }
Ejemplo n.º 11
0
 public string get_uuid()
 {
     External.idevice_get_uuid(handle, out uuid);
     return(Marshal.PtrToStringAnsi(uuid));
 }
Ejemplo n.º 12
0
 public void set_debug_level(int level)
 {
     External.idevice_set_debug_level(level);
 }
Ejemplo n.º 13
0
 /// <summary>
 /// Initializes a new device
 /// </summary>
 /// <param name="uuid">UUID of the device</param>
 public device(string uuid)
 {
     External.idevice_new(out handle, uuid);
 }