public static void run(String[] args) { try { Curl.GlobalInit((int)CURLinitFlag.CURL_GLOBAL_ALL); // <form action="http://mybox/cgi-bin/myscript.cgi // method="post" enctype="multipart/form-data"> MultiPartForm mf = new MultiPartForm(); // <input name="frmUsername"> mf.AddSection(CURLformoption.CURLFORM_COPYNAME, "frmUsername", CURLformoption.CURLFORM_COPYCONTENTS, "testtcc", CURLformoption.CURLFORM_END); // <input name="frmPassword"> mf.AddSection(CURLformoption.CURLFORM_COPYNAME, "frmPassword", CURLformoption.CURLFORM_COPYCONTENTS, "tcc", CURLformoption.CURLFORM_END); // <input name="frmFileOrigPath"> mf.AddSection(CURLformoption.CURLFORM_COPYNAME, "frmFileOrigPath", CURLformoption.CURLFORM_COPYCONTENTS, args[1], CURLformoption.CURLFORM_END); // <input name="frmFileDate"> mf.AddSection(CURLformoption.CURLFORM_COPYNAME, "frmFileDate", CURLformoption.CURLFORM_COPYCONTENTS, "08/01/2004", CURLformoption.CURLFORM_END); // <input type="File" name="f1"> mf.AddSection(CURLformoption.CURLFORM_COPYNAME, "f1", CURLformoption.CURLFORM_FILE, args[1], CURLformoption.CURLFORM_CONTENTTYPE, "application/binary", CURLformoption.CURLFORM_END); Easy easy = new Easy(); Easy.DebugFunction df = new Easy.DebugFunction(OnDebug); easy.SetOpt(CURLoption.CURLOPT_DEBUGFUNCTION, df); easy.SetOpt(CURLoption.CURLOPT_VERBOSE, true); Easy.ProgressFunction pf = new Easy.ProgressFunction(OnProgress); easy.SetOpt(CURLoption.CURLOPT_PROGRESSFUNCTION, pf); easy.SetOpt(CURLoption.CURLOPT_URL, args[0]); easy.SetOpt(CURLoption.CURLOPT_HTTPPOST, mf); easy.Perform(); //easy.Cleanup(); mf.Free(); Curl.GlobalCleanup(); } catch (Exception ex) { Console.WriteLine(ex); } }
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); }
public static bool gomultipartpost(string url, string user, string password, string fname, string fpath, int ticketid, int maxwaitsec, bool showprogress, TradeLink.API.DebugDelegate deb, out string result) { debs = deb; Curl.GlobalInit((int)CURLinitFlag.CURL_GLOBAL_ALL); Easy easy = new Easy(); rresult = new StringBuilder(); hasresult = false; MultiPartForm mf = new MultiPartForm(); // <input name="frmFileOrigPath"> mf.AddSection(CURLformoption.CURLFORM_COPYNAME, "document[name]", CURLformoption.CURLFORM_COPYCONTENTS, fname, CURLformoption.CURLFORM_END); // <input type="File" name="f1"> mf.AddSection(CURLformoption.CURLFORM_COPYNAME, "document[file]", CURLformoption.CURLFORM_FILE, fpath, CURLformoption.CURLFORM_CONTENTTYPE, "application/octet-stream", CURLformoption.CURLFORM_END); // <input name="frmFileDate"> if (ticketid != 0) { mf.AddSection(CURLformoption.CURLFORM_COPYNAME, "document[ticket_id]", CURLformoption.CURLFORM_COPYCONTENTS, ticketid.ToString(), CURLformoption.CURLFORM_END); } if (showprogress) { Easy.ProgressFunction pf = new Easy.ProgressFunction(OnProgress); easy.SetOpt(CURLoption.CURLOPT_PROGRESSFUNCTION, pf); } Easy.WriteFunction wf = new Easy.WriteFunction(OnWritePostData); easy.SetOpt(CURLoption.CURLOPT_WRITEFUNCTION, wf); easy.SetOpt(CURLoption.CURLOPT_HTTPPOST, mf); Easy.DebugFunction df = new Easy.DebugFunction(OnDebug); easy.SetOpt(CURLoption.CURLOPT_DEBUGFUNCTION, df); // simple post - with a string //easy.SetOpt(CURLoption.CURLOPT_POSTFIELDS,data); Slist sl = new Slist(); //sl.Append("Content-Type:multipart/form-data"); sl.Append("Accept: application/xml"); easy.SetOpt(CURLoption.CURLOPT_HTTPHEADER, sl); easy.SetOpt(CURLoption.CURLOPT_SSL_VERIFYPEER, false); easy.SetOpt(CURLoption.CURLOPT_USERAGENT, "Mozilla 4.0 (compatible; MSIE 6.0; Win32"); easy.SetOpt(CURLoption.CURLOPT_FOLLOWLOCATION, true); easy.SetOpt(CURLoption.CURLOPT_USERPWD, user + ":" + password); CURLhttpAuth authflag = CURLhttpAuth.CURLAUTH_BASIC; easy.SetOpt(CURLoption.CURLOPT_HTTPAUTH, authflag); easy.SetOpt(CURLoption.CURLOPT_URL, url); //easy.SetOpt(CURLoption.CURLOPT_POST, true); if (debs != null) { easy.SetOpt(CURLoption.CURLOPT_VERBOSE, true); } CURLcode err = easy.Perform(); int waits = 0; int maxwaits = 100 * maxwaitsec; while (!hasresult && (waits++ < maxwaits)) { System.Threading.Thread.Sleep(10); } int rcodei = 0; CURLcode rcode = easy.GetInfo(CURLINFO.CURLINFO_RESPONSE_CODE, ref rcodei); if (!hasresult && (deb != null)) { deb(easy.StrError(err)); } easy.Cleanup(); mf.Free(); Curl.GlobalCleanup(); result = rresult.ToString(); return(hasresult && (rcodei == 201)); }
public void postFile(string imgpath, string bigimgpath) { try { Curl.GlobalInit((int)CURLinitFlag.CURL_GLOBAL_ALL); // <form action="http://mybox/cgi-bin/myscript.cgi // method="post" enctype="multipart/form-data"> MultiPartForm mf = new MultiPartForm(); // <input name="frmUsername"> mf.AddSection(CURLformoption.CURLFORM_COPYNAME, "filecode", CURLformoption.CURLFORM_COPYCONTENTS, this.fcode, CURLformoption.CURLFORM_END); // <input type="File" name="f1"> mf.AddSection(CURLformoption.CURLFORM_COPYNAME, "file", CURLformoption.CURLFORM_FILE, this.file_out, CURLformoption.CURLFORM_CONTENTTYPE, "application/binary", CURLformoption.CURLFORM_END); mf.AddSection(CURLformoption.CURLFORM_COPYNAME, "img", CURLformoption.CURLFORM_FILE, imgpath, CURLformoption.CURLFORM_CONTENTTYPE, "application/binary", CURLformoption.CURLFORM_END); mf.AddSection(CURLformoption.CURLFORM_COPYNAME, "bigimg", CURLformoption.CURLFORM_FILE, bigimgpath, CURLformoption.CURLFORM_CONTENTTYPE, "application/binary", CURLformoption.CURLFORM_END); Easy easy = new Easy(); Easy.DebugFunction df = new Easy.DebugFunction(OnDebug); easy.SetOpt(CURLoption.CURLOPT_DEBUGFUNCTION, df); easy.SetOpt(CURLoption.CURLOPT_VERBOSE, true); Easy.ProgressFunction pf = new Easy.ProgressFunction(OnProgress); easy.SetOpt(CURLoption.CURLOPT_PROGRESSFUNCTION, pf); easy.SetOpt(CURLoption.CURLOPT_URL, this.weburl); easy.SetOpt(CURLoption.CURLOPT_HTTPPOST, mf); easy.Perform(); easy.Cleanup(); mf.Free(); Curl.GlobalCleanup(); } catch (Exception ex) { Console.WriteLine(ex); FileStream fs1 = new FileStream("D:\\test\\1.txt", FileMode.OpenOrCreate); StreamWriter sw1 = new StreamWriter(fs1); sw1.Write(ex.ToString()); sw1.Close(); fs1.Close(); } FileStream fs = new FileStream("D:\\test\\A.txt", FileMode.OpenOrCreate); StreamWriter sw = new StreamWriter(fs); sw.Write("aaaa "); sw.Close(); fs.Close(); }