Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.IO;
- using System.Linq;
- using System.Net;
- using System.Text;
- using System.Xml;
- using System.Text.RegularExpressions;
- // ReSharper disable PossibleNullReferenceException
- namespace Uploader
- {
- class Program
- {
- static void Main(string[] args)
- {
- if (args.Length < 2)
- {
- Console.WriteLine("Proper Usage: Uploader <FolderName> <File1> <File2> ...");
- return;
- }
- var folder = args[0];
- var files = new String[args.Length - 1];
- Array.Copy(args, 1, files, 0, args.Length - 1);
- var web = new CookieWebClient();
- //Must get the ukey by loading the root first
- web.DownloadString("http://www.mediafire.com/");
- /*
- * Now we do a login so we can get session, user, etc..
- * Content Type must be "application/x-www-form-urlencoded"
- */
- web.Headers.Set(HttpRequestHeader.ContentType, "application/x-www-form-urlencoded");
- web.UploadString("http://www.mediafire.com/dynamic/login.php", "POST", String.Format("login_email={0}&login_pass={1}&login_remember=on", "EMAIL ADDRESS", "PASSWORD"));
- /*
- * Need to get the 'session_token', Sadly this is in the javascript that is on the main page.
- * It is a 72-byte long hash of some kind. Lucally, its the only 72-byte long hash on the page,
- * so a simple regex can snag it.
- *
- * Also, we MUST set the user agent, else the javascript won't be sent.
- */
- web.Headers.Set(HttpRequestHeader.UserAgent, "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_2) AppleWebKit/535.2 (KHTML, like Gecko) Chrome/15.0.874.120 Safari/535.2");
- var ret = web.DownloadString("http://www.mediafire.com/myfiles.php");
- var reg = Regex.Match(ret, "[0-9a-fA-F]{144}");
- /*
- * Now, we need to create the folder, and get its key.
- */
- ret = web.DownloadString(String.Format("http://www.mediafire.com/api/folder/create.php?foldername={0}&session_token={1}&version=1", folder, reg.Value));
- var xml = new XmlDocument();
- xml.LoadXml(ret);
- var folderKey = xml.SelectSingleNode("/response/upload_key").InnerText;
- var rets = files.Select(file => Upload(web, folderKey, file)).ToList();
- while (rets.Count > 0)
- {
- foreach (var info in rets.ToArray())
- {
- ret = web.DownloadString(String.Format("http://www.mediafire.com/basicapi/pollupload.php?key={0}&MFULConfig={1}", info[1], info[2]));
- xml.LoadXml(ret);
- /*
- var builder = new StringBuilder();
- using (var writer = new StringWriter(builder))
- {
- using (var xmlWriter = new XmlTextWriter(writer))
- {
- xmlWriter.Formatting = Formatting.Indented;
- xml.Save(xmlWriter);
- }
- }
- Console.WriteLine(builder);
- */
- var key = xml.SelectSingleNode("/response/doupload/quickkey").InnerText;
- if (key.Length <= 0) continue;
- Console.WriteLine("Download URL {0} http://www.mediafire.com/download.php?{1}", Path.GetFileName(info[0]), key);
- rets.Remove(info);
- }
- }
- Console.ReadLine();
- }
- private static String[] Upload(CookieWebClient web, String folder, String file)
- {
- var xml = new XmlDocument();
- var keys = new Dictionary<String, String>();
- xml.LoadXml(web.DownloadString("http://www.mediafire.com/basicapi/uploaderconfiguration.php?"));
- keys.Add("user", xml.SelectSingleNode("/mediafire/config/user").InnerText);
- keys.Add("ukey", xml.SelectSingleNode("/mediafire/config/ukey").InnerText);
- keys.Add("upload_session", xml.SelectSingleNode("/mediafire/config/upload_session").InnerText);
- keys.Add("trackkey", xml.SelectSingleNode("/mediafire/config/trackkey").InnerText);
- keys.Add("folderkey", (folder ?? xml.SelectSingleNode("/mediafire/config/folderkey").InnerText));
- keys.Add("mful_config", xml.SelectSingleNode("/mediafire/MFULConfig").InnerText);
- String[] query = {
- "type=basic",
- "ukey=" + keys["ukey"],
- "user=" + keys["user"],
- "uploadkey=" + keys["folderkey"],
- "filenum=0",
- "uploader=0",
- "MFULConfig=" + keys["mful_config"]
- };
- web.Headers.Set(HttpRequestHeader.UserAgent, "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_2) AppleWebKit/535.2 (KHTML, like Gecko) Chrome/15.0.874.120 Safari/535.2");
- var ret = Encoding.ASCII.GetString(web.UploadFile("http://www.mediafire.com/douploadtoapi?" + String.Join("&", query), file));
- xml.LoadXml(ret);
- return new[]{ file, xml.SelectSingleNode("/response/doupload/key").InnerText, keys["mful_config"] };
- }
- public class CookieWebClient : WebClient
- {
- public CookieContainer Cookies = new CookieContainer();
- protected override WebRequest GetWebRequest(Uri address)
- {
- var request = (HttpWebRequest)base.GetWebRequest(address);
- if (request != null)
- {
- request.CookieContainer = Cookies;
- request.KeepAlive = true;
- ServicePointManager.Expect100Continue = false;
- }
- return request;
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement