Jump to content
Moopler Closing Read more... ×
Moopler

Search the Community

Showing results for tags 'library'.



More search options

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • Moopler & You
    • Feedback
    • General Discussion
    • Introductions & Farewells
    • News
  • MapleStory Global
    • Discussion
    • Questions
    • Hacks, Resources & Tutorials
    • Programming
  • Other MapleStory Regions
    • South-East Asia
    • Mobile

Categories

  • MapleStory Global
    • Hacks
    • Resources
  • Programming
    • General Resources
  • MapleStory M

Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Joined

  • Start

    End


Group


Found 2 results

  1. I wrote a small library in C# which uses Nexon's API to obtain a Passport Token. This token can be used to spawn a MapleStory instance, without having to login through Nexon Launcher or any other (supported) method. GitHub link Todo Structure the project and auth methods ✔️ Reverse Web Auth ✔️ Reverse NMCO*.dll Auth ❌ Example code private async void ExampleFunction(string email, string password) { WebAuthentication web = new WebAuthentication(); NexonPassport passport = default(NexonPassport); try { passport = await web.GetNexonPassport(email, password); } catch (WebAuthenticationException wEx) { switch(wEx.ErrorCode) { case WebAuthenticationErrorCodes.InvalidEmail: case WebAuthenticationErrorCodes.InvalidPassword: MessageBox.Show(wEx.Message, "Authentication Error", MessageBoxButton.OK, MessageBoxImage.Error); return; case WebAuthenticationErrorCodes.InvalidClient: case WebAuthenticationErrorCodes.UntrustedDevice: MessageBox.Show(wEx.Message + "\r\n" + "Check your e-mail and manually verify your identity.", "API Configuration Error", MessageBoxButton.OK, MessageBoxImage.Stop); return; } } //Use the token here by accessing passport.Token; ... } Disclaimer I wrote this library in a relatively short amount of time and it is the first library that was created with the intent to share. If you have any improvements feel free to contribute. This library is created for the sole purpose of allowing people to roll their own launcher. The Nexon Launcher is a painfully awful launcher filled with unnecessary features. Use at your own risk, as I am unsure whether this is in violation of Nexon's Terms of Service. Support is only provided on Moopler.net. This is a working example on how to spawn a MapleStory instance using this library: private async void StartInstanceAction(PasswordBox password) { WebAuthentication web = new WebAuthentication(); NexonPassport passport = default(NexonPassport); try { passport = await web.GetNexonPassport(PassportEmail, password.Password); } catch (WebAuthenticationException wEx) { switch(wEx.ErrorCode) { case WebAuthenticationErrorCodes.InvalidEmail: case WebAuthenticationErrorCodes.InvalidPassword: MessageBox.Show(wEx.Message, "Authentication Error", MessageBoxButton.OK, MessageBoxImage.Error); return; case WebAuthenticationErrorCodes.InvalidClient: case WebAuthenticationErrorCodes.UntrustedDevice: MessageBox.Show(wEx.Message + "\r\n" + "Check your e-mail and manually verify your identity.", "API Configuration Error", MessageBoxButton.OK, MessageBoxImage.Stop); return; } } try { await Task.Run(() => { Process.Start(new ProcessStartInfo() { FileName = Properties.Settings.Default.MaplePath, WorkingDirectory = Properties.Settings.Default.MaplePath.Replace("\\MapleStory.exe", string.Empty), Verb = "runas", Arguments = $"-nxl {passport.Token}" }); }); } catch (FileNotFoundException) { MessageBox.Show("MapleStory.exe cannot be located at the configured file path. Please verify and try again.", "Error", MessageBoxButton.OK, MessageBoxImage.Error); } catch (Win32Exception) { MessageBox.Show("MapleStory.exe can be found, but cannot be opened. Do you have the privileges to open this file?", "Error", MessageBoxButton.OK, MessageBoxImage.Error); } }
  2. Hey Mooplers, I've been messing around with Clientless Bots for quite some while now and figured that it was time I would give something back to the community. I present to you my personal class library for MapleStory Clientless Bots. NOTE: As I am one lazy motherfucker I have yet to completely test this lib. I'll do this in the near future and update the repo if necessary. This library probably works already, as it is based on years of trying, failing and eventually succeeding. Features Ready-to-use client, which handles incoming and outgoing data Stream-like readers and writers for packet interpretation and construction Distinction between internal and external packet headers (in other words: dynamic or not) Hardware Profile spoofing Nexon Passport web authentication (Credits to Waty) Basic Example //Oversimplified example of a Clientless Bot (CLB) public class MyBot { public MapleClient Client { get; set; } public CancellationTokenSource CTS { get; set; } private bool IsConnected { get; set; } public void StartBotting() { CTS = new CancellationTokenSource(); Client = new MapleClient(); //This is the object that we will be using the most, as it combines the other essential features. Client.HandshakeReceived += OnHandshakeReceived; Client.PacketReceived += OnPacketReceived; //Create a thread or just call MainBotLoop MainBotLoop(); } public void OnHandshakeReceived(ushort version, ushort subversion, byte locale, byte newbyte) { PacketWriter writer = new PacketWriter(0x0067); //Creates a new packet writer/builder with packet header 67 00. Encryption does not play a role here (yet). writer.WriteInt8(locale); writer.WriteUInt16(version); writer.WriteUInt16(subversion); writer.WriteInt8(newbyte); if(Client != null && Client.Connected) //Only send packets when the Client is initialized and connected to a server. This way we prevent causing unnecessary errors. Client.SendPacket(reader); //SendPacket takes care of encrypting the packet and passes it to the Socket } public void OnPacketReceived(PacketReader reader) { switch(reader.ExternalHeader) //ExternalHeader is the heawder sent by MapleStory. This library does not feature header decryption, but takes this into account by allowing you to set the InternalHeader yourself. This method would be the place to do so. { case 0x0000: //Some header that is not encrypted HandleSomePacket(reader); break; default: //All headers that are encrypted DecryptHeader(reader); //For example RouteDecryptedHeaderPacket(reader); //For example break; } } private void HandleSomePacket(PacketReader reader) { uint value1 = reader.ReadUInt32(); string dynamicLength = reader.ReadMapleString(); string staticlength = reader.ReadString(13); byte[] raw = reader.ReadBytes(); } public void MainBotLoop() //We need to have a loop to keep receiving data and handling it, preferably on another thread than your UI { while(!CTS.IsCancellationRequested) { if(!IsConnected) { Client.Connect("127.0.0.1", 1337"); //IP/Port of MapleStory server IsConnected = true; } Client.Receive(); //Blocks until there is data. Data will be parsed and pushed to OnPacketReceived through an event } } } The code can be found on GitHub. License This project is licensed under GPLv3. Please respect this license.
×