Jump to content
  • 0

C#+Asp.net Wrong Password Encryption.


Question

Posted

I'm working on a Player Control Panel for their accounts, it should let players register accounts, change password and recover password.

 

everything was working good, but when i tried encription it went wrong, it works with some passwords but with others it doesn't, I'm using this script to encrypt passwords, shared by Simple2008

 

http://www.maxcheaters.com/topic/106006-sharec-l2off-password-encryption/

 

the thing is that this script does work with some passwords and not with all passwords players uses.

 

for example:

 

root  -> 0xB1BE70E9A83F19192CB593935EC4E2E2  --> my encription

root  -> 0xB1BE70E9A83F19192CB593935EC4E2E2  --> l2pass.exe

 

cafecafe150  -> 0x31F7E38C3108CA12BB3ECC18D54F6969  --> my encription

cafecafe150  -> 0x31F7E38C3108CD15BC39C81CD14B6D6D  --> l2pass.exe

 

as you can see, it encrypts only some passwords

 

I'm doing it as follows(in code)

encpw ep = new encpw();
var pw = ep.encpwd(txtNewPassword.Text);
Response.Write(BitConverter.ToString(pw).Replace("-", ""));

encpw is the next code:

public byte[] encpwd(string password)
{
var key = new byte[16];
long one, two, three, four;
var dst = new byte[16];
var nBytes = password.Length;

for (var i = 0; i < nBytes; i++)
{
key[i] = Encoding.ASCII.GetBytes(password.Substring(i, 1))[0];
dst[i] = key[i];
}

long rslt = @key[0] + @key[1] * 256 + @key[2] * 65536 + @key[3] * 16777216;
one = rslt * 213119 + 2529077;
one = one - ToInt32(one / 4294967296) * 4294967296;

rslt = @key[4] + @key[5] * 256 + @key[6] * 65536 + @key[7] * 16777216;
two = rslt * 213247 + 2529089;
two = two - ToInt32(two / 4294967296) * 4294967296;

rslt = @key[8] + @key[9] * 256 + @key[10] * 65536 + @key[11] * 16777216;
three = rslt * 213203 + 2529589;
three = three - ToInt32(three / 4294967296) * 4294967296;

rslt = @key[12] + @key[13] * 256 + @key[14] * 65536 + @key[15] * 16777216;
four = rslt * 213821 + 2529997;
four = four - ToInt32(four / 4294967296) * 4294967296;

key[3] = ParseInt(one / 16777216);
key[2] = ParseInt((((Int32)(one - @key[3] * 16777216)) / 65535));
key[1] = ParseInt((one - @key[3] * 16777216 - @key[2] * 65536) / 256);
key[0] = ParseInt((one - @key[3] * 16777216 - @key[2] * 65536 - @key[1] * 256));

key[7] = ParseInt(two / 16777216);
key[6] = ParseInt((two - @key[7] * 16777216) / 65535);
key[5] = ParseInt((two - @key[7] * 16777216 - @key[6] * 65536) / 256);
key[4] = ParseInt((two - @key[7] * 16777216 - @key[6] * 65536 - @key[5] * 256));

key[11] = ParseInt(three / 16777216);
key[10] = ParseInt((three - @key[11] * 16777216) / 65535);
key[9] = ParseInt((three - @key[11] * 16777216 - @key[10] * 65536) / 256);
key[8] = ParseInt((three - @key[11] * 16777216 - @key[10] * 65536 - @key[9] * 256));

key[15] = ParseInt(four / 16777216);
key[14] = ParseInt((four - @key[15] * 16777216) / 65535);
key[13] = ParseInt((four - @key[15] * 16777216 - @key[14] * 65536) / 256);
key[12] = ParseInt((four - @key[15] * 16777216 - @key[14] * 65536 - @key[13] * 256));

dst[0] = ParseInt(dst[0] ^ @key[0]);

for (var i = 1; i < dst.Length; i++)
dst[i] = ParseInt(@dst[i] ^ @dst[i - 1] ^ @key[i]);

for (var i = 0; i < dst.Length; i++)
if (dst[i] == 0)
dst[i] = 102;

return dst;
}

private static int ToInt32(long val)
{
return Convert.ToInt32(val);
}

private static byte ParseInt(long val)
{
return BitConverter.GetBytes(val)[0];
}

any ideas of what would be causing this?

5 answers to this question

Recommended Posts

  • 0
Posted (edited)

Rather than use L2Hash, use either SHA1 or MD5. This can be changed in hAuthD.ini.

 

While this doesn't directly answer your question it is much easier and also "more secure" in that there are far less collisions.

 

If you go with SHA1 remember to extend the width of the password field to 20 bytes.

Edited by tk422
  • 0
Posted

i'm using vangant pack and i'm using the authd that comes with the pack, I don't want to change it hehe, i want to fix the script so i can use my register page.

  • 0
Posted

You can try the version we used to use but it's written in JavaScript for NodeJS.

 

http://puu.sh/iKTJE/2c4fc47a08.zip

 

Does the auth server included in your pack do anything special that hAuthD doesn't?

 

If not, it's really the better and simpler solution...

 

You could also try contacting XeL.

His administration panel has an account creator that uses L2Hash.

Might be willing to help out or give you the source.

  • 0
Posted

You can try the version we used to use but it's written in JavaScript for NodeJS.

 

http://puu.sh/iKTJE/2c4fc47a08.zip

 

Does the auth server included in your pack do anything special that hAuthD doesn't?

 

If not, it's really the better and simpler solution...

 

You could also try contacting XeL.

His administration panel has an account creator that uses L2Hash.

Might be willing to help out or give you the source.

I will help him with source when I'm back from holiday :)

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now


  • Posts

    • You might also take https://github.com/vercel-labs/agent-skills into consideration
    • Hay Algun datapack de L1 OFF ? 
    • pone los link para descargarlos por fa   
    • Greetings, everyone. I am sharing a configuration designed for any code editor/console with AI agents. This setup allows for expanded context and highly specific skills depending on your project requirements. It also comes with reusable skills ready for immediate use. Current configuration covers: WEB, L2j server datapacks, and L2j dev (including skills for handling decompiled Java datapacks, etc.). I have left a LINK to the original video on which this specific configuration is based. It also contains brief guides on how to implement new skills. You can simply ask your AI agent to review the guide to get started.   https://github.com/zambo420/Supercharge-your-AI-assistant-for-WEB-and-L2-DATAPACKS-dev.-.git   # 🤖 AI Skills Starter Kit - Forum Quick Start > **Supercharge your AI assistant (Claude, Gemini, Copilot)** ## ⚡ Installation in 2 Minutes   ### 1. Download and copy Copy the `Supercharge-your-AI-assistant-for-WEB-and-L2-DATAPACKS-dev.-/` folder to your project root.   ### 2. Rename and structure ``` your-project/ ├── skills/                      # Rename skills_reutilizables → skills │   ├── skill-creator/ │   ├── react-19/               # Copy the ones you need │   ├── typescript/ │   └── setup.ps1               # Copy from templates/ ├── AGENTS.md                    # Copy from templates/AGENTS.md.template └── src/                         # Your code ```   ### 3. Edit AGENTS.md Customize with your skills:   ```markdown   ## Available Skills | Skill | Description | File | |-------|-------------|------| | `react-19` | React 19 patterns | [SKILL.md](skills/react-19/SKILL.md) |   ## Auto-invoke Skills | Action | Skill | |--------|-------| | Working with React components | `react-19` | ```   ### 4. Sync ```powershell .\skills\setup.ps1 ```   ### 5. Done! Restart your AI assistant and start working.   ---   ## 📦 Included Skills (56 Total) ### Frontend - `react-19` - React 19, hooks, RSC - `typescript` - TypeScript patterns - `tailwind-4` - TailwindCSS v4 - `vite` - Build configuration - `zustand-5` - State management - `nextjs-15` - Next.js 15 - `i18next` - Internationalization - `react-router` - React Router v7 ### Backend - `zod-4` - Validation schemas - `ioredis` - Redis caching - `jwt` - JWT authentication - `django-drf` - Django REST Framework ### Testing & AI - `playwright` - E2E testing - `pytest` - Python testing - `ai-sdk-5` - Vercel AI SDK ### Utilities - `skill-creator` - Create new skills - `java-ant-build` - Apache Ant build system - `jira-epic` - Create Jira epics - `jira-task` - Create Jira tasks ### L2J/Game Server (33 skills) - `gameserver-data` - XMLs, multisells, spawns, NPCs - `gameserver-config` - Server configuration files - `authserver-config` - Login server configuration - `client-files` - Client textures, L2Text, system - `lucera2-core` - L2J core patterns, base classes - `lucera2-handlers` - Admin/user commands, bypass - `lucera2-services` - Community Board, ACP, Buffer - `lucera2-scripts` - Quests, NPCs, bosses, events - `lucera2-network` - Network packets - `lucera2-geodata` - Pathfinding, line of sight - `lucera2-ai` - NPC AI, monster behavior - `lucera2-zones` - Zone scripts, restrictions - `lucera2-achievements` - Achievement system - `lucera2-phantoms` - Fake players (bots) - `lucera2-data` - XML/SQL parsers, holders - `lucera2-authserver` - Login server Java code - `lucera2-olympiad` - Olympiad, heroes, nobles - `lucera2-residences` - Castles, clan halls, siege - `lucera2-skills-effects` - Skill effects, conditions - `lucera2-telegram` - Telegram bot integration - `lucera2-events-pvp` - TvT, GvG, CTF events - `lucera2-seasonal-events` - Holiday events - `lucera2-npc-instances` - Custom NPC types - `lucera2-items-inventory` - Items, inventory - `lucera2-clans-alliances` - Clans, wars - `lucera2-voting-ranking` - Voting rewards - `lucera2-siege-duel` - Siege, duel mechanics - `lucera2-pets-summons` - Pets, servitors - `lucera2-promo-rewards` - Promo codes, daily rewards - `lucera2-item-handlers` - Item handlers - `lucera2-instances-dungeons` - Instance dungeons - `lucera2-minigames` - Lottery, Fishing - `lucera2-autofarm` - AutoFarm bot system - `lucera2-party-matching` - Party finder - `lucera2-cursed-weapons` - Zariche, Akamanah - `lucera2-vip-premium` - VIP/premium accounts - `lucera2-extjar-projects` - Creating .ext.jar projects ---   ## 🎯 The Magic Trick The **Auto-invoke** table is the key:   ```markdown ## Auto-invoke Skills   | Action | Skill | |--------|-------| | Creating React components | `react-19` | | Adding TypeScript types | `typescript` | | Writing E2E tests | `playwright` | ```   **Without this table, AI ignores skills.** With it, they load automatically.   ---   ## 📁 Important Files | File | Purpose | |------|---------| | `AGENTS.md` | Main agent configuration | | `skills/setup.ps1` | Syncs to .claude/.gemini/.github | | `skills/*/SKILL.md` | Each skill definition |   ---   ## 💡 Tips 1. **One place only**: Keep all skills in `skills/` 2. **Auto-invoke**: Without this table, it won't work 3. **setup.ps1**: Run after every change 4. **Restart**: AI needs restart to load changes   ---   ## 🔧 Create Your Own Skill   ```markdown --- name: my-skill description: My skill description ---   ## When to Use - When to use this skill   ## Key Patterns - Important patterns   ## Code Examples \`\`\`typescript // Code example \`\`\` ```   Add to AGENTS.md and run `.\skills\setup.ps1`.   ---   ## 🤝 Compatibility - ✅ Claude Code (Antigravity) - ✅ Gemini CLI - ✅ GitHub Copilot - ✅ Cursor - ✅ Any AI that supports AGENTS.md   ---   ## 📚 More Info See `README.md` on github for complete guide and detailed documentation.    
  • Topics

×
×
  • Create New...

Important Information

This community uses essential cookies to function properly. Non-essential cookies and third-party services are used only with your consent. Read our Privacy Policy and We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue..

AdBlock Extension Detected!

Our website is made possible by displaying online advertisements to our members.

Please disable AdBlock browser extension first, to be able to use our community.

I've Disabled AdBlock