PES 2021 Private Server / Online Emulator/ Open Beta Test Server /

The only bad thing is the web site looks like a bash or bet , gambling sites.

But where we can buy the original game then?

I built the website from scratch with 100% original code. There is still a lot of work to do, but I like how it is turning out.

However, I have no experience with betting or gambling websites, so I can’t really judge it from that perspective.
 
I built the website from scratch with 100% original code. There is still a lot of work to do, but I like how it is turning out.

However, I have no experience with betting or gambling websites, so I can’t really judge it from that perspective.
In case its useful i notice some urls were wordpress https://daily.dev/posts/wordpress-situation-is-absolutely-insane-xsgsiwdxn it has a lot of security concerns try to keep it on latest versions or maybe even switch to something more secure

EDIT: some more info

 
Hey ,

First off, massive respect for what you've put together here. Getting
any real traction on PES2021's ConnectGate — mapping out the XOR ->
Blowfish -> MD5 -> MessagePack layering, actually getting a client
into a server list — is genuinely impressive work, especially doing
it solo/small-team on a completely undocumented proprietary protocol.
This thread has honestly been the single most useful reference I've
found anywhere for this kind of project.

I'm just starting a similar effort on PES2018 (PC), and while I know
it's a different game with its own protocol quirks, it's the same
Fox Engine generation, so I'm hoping some of what you figured out
carries over at least structurally, even if the specific keys/framing
differ.

Quick summary of where I am so far: redirected the real game domains
via hosts (pes18-pc-gate.cs.konami.net, pes18-pc-stun.cs.konami.net,
ntl.service.konami.net + regional variants), set up a local capture
server, and got this far:

- STUN on UDP 3478: standard RFC 5389 Binding Request/Response (magic
cookie present). I implemented a proper Binding Response and the
client accepts it, then sends periodic Binding Requests (~every 5s)
with two vendor attributes (type 0x9090, 24 bytes; type 0x9091,
12 bytes with what looks like an incrementing counter).
- An HTTP endpoint, POST /ntl/api/GateInfo.php over plain HTTP (no
encryption), with a hex-encoded JSON body:
{"titleCode":"PES2018","locale":"EU","version":"1.05.00","extra":"",
"apiLevel":"3"}. Still haven't cracked the expected response format
— tried a few plausible JSON shapes, none stopped the client from
resetting the connection after ~3s.
- The client then connects to TCP port 10000 (the real gate) and
sends a 152-byte payload. Structurally consistent with an 8-byte
block cipher (152 = 19 blocks exactly), entropy ~6.75 bits/byte, no
repeated blocks — but that's as far as traffic analysis alone got
me. No luck with XOR key-length detection either.

That last part is basically the same wall you must have hit with
ConnectGate, so I wanted to ask, only if you have the time and don't
mind revisiting it:

1. How did you actually locate the Blowfish key inside the binary?
Searching for the standard P-array signature (the pi-digit
constants) to find the key-schedule function, or more of a dynamic
approach — breakpointing the encrypt call in a debugger, etc.?
2. Did PES2021 have an equivalent to GateInfo.php — a plaintext HTTP
pre-check before the encrypted gate connection? If so, any memory
of what a valid response looked like?
3. Any tips on how you found the XOR transport-layer key (the one
applied before Blowfish)? Static or dynamic analysis?
4. Did you see those same vendor STUN attribute types (0x9090/0x9091)
in PES2021 traffic? If that part of the code is shared across
engine versions it'd be a nice anchor point.
5. What tools ended up being most useful for you day to day — Ghidra,
IDA, x64dbg for runtime breakpoints, or a mix? Would rather not
reinvent a workflow you already found didn't work.

Totally understand if this is more than you want to dig back into —
even just a pointer to which part of your writeup/repo covers this
would already help a ton. Either way, thank you for documenting all
of this publicly. It's already saved me from a few dead ends, and
projects like this are why stuff like this doesn't just disappear
when the official servers go dark.
 
Hey ,

First off, massive respect for what you've put together here. Getting
any real traction on PES2021's ConnectGate — mapping out the XOR ->
Blowfish -> MD5 -> MessagePack layering, actually getting a client
into a server list — is genuinely impressive work, especially doing
it solo/small-team on a completely undocumented proprietary protocol.
This thread has honestly been the single most useful reference I've
found anywhere for this kind of project.

I'm just starting a similar effort on PES2018 (PC), and while I know
it's a different game with its own protocol quirks, it's the same
Fox Engine generation, so I'm hoping some of what you figured out
carries over at least structurally, even if the specific keys/framing
differ.

Quick summary of where I am so far: redirected the real game domains
via hosts (pes18-pc-gate.cs.konami.net, pes18-pc-stun.cs.konami.net,
ntl.service.konami.net + regional variants), set up a local capture
server, and got this far:

- STUN on UDP 3478: standard RFC 5389 Binding Request/Response (magic
cookie present). I implemented a proper Binding Response and the
client accepts it, then sends periodic Binding Requests (~every 5s)
with two vendor attributes (type 0x9090, 24 bytes; type 0x9091,
12 bytes with what looks like an incrementing counter).
- An HTTP endpoint, POST /ntl/api/GateInfo.php over plain HTTP (no
encryption), with a hex-encoded JSON body:
{"titleCode":"PES2018","locale":"EU","version":"1.05.00","extra":"",
"apiLevel":"3"}. Still haven't cracked the expected response format
— tried a few plausible JSON shapes, none stopped the client from
resetting the connection after ~3s.
- The client then connects to TCP port 10000 (the real gate) and
sends a 152-byte payload. Structurally consistent with an 8-byte
block cipher (152 = 19 blocks exactly), entropy ~6.75 bits/byte, no
repeated blocks — but that's as far as traffic analysis alone got
me. No luck with XOR key-length detection either.

That last part is basically the same wall you must have hit with
ConnectGate, so I wanted to ask, only if you have the time and don't
mind revisiting it:

1. How did you actually locate the Blowfish key inside the binary?
Searching for the standard P-array signature (the pi-digit
constants) to find the key-schedule function, or more of a dynamic
approach — breakpointing the encrypt call in a debugger, etc.?
2. Did PES2021 have an equivalent to GateInfo.php — a plaintext HTTP
pre-check before the encrypted gate connection? If so, any memory
of what a valid response looked like?
3. Any tips on how you found the XOR transport-layer key (the one
applied before Blowfish)? Static or dynamic analysis?
4. Did you see those same vendor STUN attribute types (0x9090/0x9091)
in PES2021 traffic? If that part of the code is shared across
engine versions it'd be a nice anchor point.
5. What tools ended up being most useful for you day to day — Ghidra,
IDA, x64dbg for runtime breakpoints, or a mix? Would rather not
reinvent a workflow you already found didn't work.

Totally understand if this is more than you want to dig back into —
even just a pointer to which part of your writeup/repo covers this
would already help a ton. Either way, thank you for documenting all
of this publicly. It's already saved me from a few dead ends, and
projects like this are why stuff like this doesn't just disappear
when the official servers go dark.
Hey, thank you, I really appreciate the message. What you have found on PES 2018 looks promising, especially the STUN behavior, which appears closely related to what we observed in PES 2021.

PES 2018 was actually going to be my next target after I finish the 11v11 Team Play mode for PES 2021, so I would be genuinely happy to see you make progress with it. From what you have already found, it is clear that you know what you are doing and have a solid reverse-engineering approach.

In my case, I'm not, I'm an average Joe who is still learning a lot of this as I go. I am the "only person writing " the code and doing the main reverse-engineering work on the project. I do have some great people helping me with testing, reporting problems, and supporting our growing Discord community, but the actual development is currently a one-person effort.

So I am definitely interested in following your progress. There may also be useful discoveries we can share with each other, especially if parts of the Konami NTL implementation are common between PES 2018 and PES 2021.

A few points that may help without assuming the two games use identical keys or framing:

  1. Do not assume the complete 152-byte TCP message is encrypted payload. In PES 2021, the network frame includes an outer header and integrity data before the block-cipher payload. A total size divisible by eight can therefore be misleading.
  2. We identified the encryption path mainly by tracing the actual receive/transmit codec in the executable and then validating candidate interpretations against captured packets. The useful proof was not merely finding Blowfish-looking constants, but obtaining a fully coherent decoded structure with valid lengths, integrity checking and a recognisable MessagePack command.
  3. For the transport obfuscation layer, static tracing of the frame parser was more reliable than statistical XOR-key detection. A useful dynamic approach is to break after recv() and follow the first transformation that turns the buffer into plausible header and length values.
  4. Yes, PES 2021 sends STUN vendor attributes 0x9090 and 0x9091 with the same lengths you described, and the final part of 0x9091 increments between requests roughly five seconds apart. That is probably the strongest indication that parts of the Konami NTL implementation are shared between the games.
  5. We did not observe a PES 2021 equivalent of GateInfo.php in our captured ConnectGate bootstrap. That does not prove it does not exist in another build or region, only that it was not part of the path we reconstructed. For PES 2018, I would trace the HTTP response consumer instead of continuing to guess response JSON shapes. Check whether the body is decoded from hex before JSON parsing and whether exact headers, content length or connection-close behavior are required.
  6. The most useful workflow for us was a mix of Ghidra for static analysis, runtime instrumentation/debugging for proving which paths actually execute, and Wireshark plus custom packet tooling for validating the full decode pipeline. The key lesson was to require several independent checks before accepting a protocol interpretation.
I would treat the matching STUN attributes as a good structural anchor, but I would not assume that the PES 2021 keys, exact frame fields or command schemas are reused unchanged in PES 2018.
 
@_erick_14_11_
I do agree on that with @༺Ƥeຮ༻ , its important to not pay much attention to how the game uses the stun to me, stun is basically a packet that sends the public ip and the private ip of both users to later on make the p2p connection during match or even during the lobby, and probably there's already a lib integrated in the game to resolve that, is just a regular networking protocol.
If its even more useful and you are using AI for this i highly recommend using cheat engine mcp and ghidra mcp, with that you're giving AI super powers to test everything thats its been found
 
Thanks a lot for taking the time to write all that out — this is
genuinely more useful than I expected to get from a.

The STUN attribute match (0x9090/0x9091, same lengths, same ~5s
counter behavior) is a good confirmation that at least part of the
Konami NTL stack is shared code between the two games, so that's
staying our anchor point going forward.

The two corrections are the most valuable part, honestly:

- Good catch on the 152-byte assumption. I was treating the whole
thing as block-cipher payload just because the length divided
evenly by 8, but if PES2021 has header/integrity bytes before the
actual ciphertext, I need to stop trusting that math until I know
where the real boundary is.
- And the point about static frame-parser tracing being more
reliable than statistical XOR-key detection lines up exactly with
what I ran into — tried Hamming-distance key-length detection on
the payload and got nothing conclusive. Makes sense now that it
probably wasn't a clean fit for the method in the first place.
Moving to breakpointing right after recv() and following the first
transformation, like you suggested.

Also appreciate the suggestion on GateInfo.php — tracing the response
consumer instead of continuing to guess JSON shapes is obviously the
better use of time. Will report back if that gets me anywhere useful
for you too, since I have no idea if PES2018 even has a real
equivalent on your side once you get to it.

Good luck with 11v11 Team Play — and since PES2018 is apparently next
on your list anyway, happy to keep sharing whatever I find in case it
saves you some time when you get there. I'll post an update here once
I've got something concrete instead of more open questions.
 
Everytime if i try connect i get this message...
you are not the only one that can't connect... but maybe my problem is because I've my pc always connected through hotspot of my mobile phone although eFootball has no trouble connecting in peer-to-peer matches with my configuration (I'haven't any other way to connect online)
@༺Ƥeຮ༻
 
Last edited:
I checked some profiles on the pesbul site and all the profiles i could check, none of them was playing from europe. Maybe its a problem with the distance to the server, but i dunno.
 
I checked some profiles on the pesbul site and all the profiles i could check, none of them was playing from europe. Maybe its a problem with the distance to the server, but i dunno.
Maybe @༺Ƥeຮ༻ can answer to this, once he comebacks from its vacation, but how does is the PIng that bat file connector give you once connected?
 
Last edited:
I checked some profiles on the pesbul site and all the profiles i could check, none of them was playing from europe. Maybe its a problem with the distance to the server, but i dunno.

I think its just one server, the lobby names are just that, names all hosted into the same server, it could be hosted with different servers but it will be expensive to pay for different VMs on each region. probably that specific room has a problem with the code rather than connection
 
Important information for users of the shared CPY Steam ID

The hard-coded Steam ID associated with the profile name Ahmed Hany has now been blocked from connecting to the server. Anyone attempting to connect with that shared Steam ID will receive an error and will not be able to play.
This is not a punishment against Ahmed Hany himself, and he is not responsible for the problem. He simply appears to have been the first person who created a profile while using that hard-coded ID.

The actual issue is that the same Steam ID is built into many CPY installations. As a result, many completely different people were connecting to the server with exactly the same identity. The server could not reliably distinguish them, which created conflicts between simultaneous sessions, profiles and match-related runtime data.

For that reason, the shared hard-coded Steam ID can no longer be used on the server. Every player must eventually connect with a unique identity.
 
For the standard 1v1 mode, a regional server may also not make a major difference to the latency during the match itself, because the actual gameplay connection is peer-to-peer between the two players. The server is mainly involved in authentication, lobbies, matchmaking, and coordinating the connection before the match starts.

Because of this, the distance to the central server may affect login, menus, lobby responsiveness, and matchmaking, but the in-match latency mostly depends on the direct connection between the two players.
 
There is a minor issue. After finishing a match with a player, I want to play a rematch with them, but I can't and have to restart the whole process from the beginning. I hope this issue will be resolved in upcoming updates. Thank you very much!
 
There is a minor issue. After finishing a match with a player, I want to play a rematch with them, but I can't and have to restart the whole process from the beginning. I hope this issue will be resolved in upcoming updates. Thank you very much!

Lucky you than you get to play the first game and then worry about the second one too... For me, it would be a huge deal just to be able to play the first one. :D :CRY:


Este juego se basa en la jugabilidad de la demo de Pes 20?.

Se puede jugar online?.

Gracias de antemano.
First: In this forum rules are clears... We must write only in English...

Second: No this project at the moment is based on default exe of PES2021 so it should better you don't use other modded exes...
 
Last edited:
Does this PES 21 have gameplay improvements compared to the default version? How would I download it? I'm a bit lost. Is it possible to play online? Thanks in advance.
 
Lucky you than you get to play the first game and then worry about the second one too... For me, it would be a huge deal just to be able to play the first one. :D :CRY:
I read you were using mobile phone connection a few messages ago, I remember I had tried that some time ago on older games and run with a few issues such as ports closed, unstable connection, I think its mostly related to how stun protocol works
 
I read you were using mobile phone connection a few messages ago, I remember I had tried that some time ago on older games and run with a few issues such as ports closed, unstable connection, I think its mostly related to how stun protocol works
yeah probably is how you said... While with efootball 2026, p2p matches work without any issue with my connection. Maybe @༺Ƥeຮ༻ could explain more us about this situation
my Settings
1785854595520.png
 
Last edited:
yeah probably is how you talk about... on efootball p2p matches work without any issue with my connection. Maybe @༺Ƥeຮ༻ could explain more us about this situation

the stun protocol is not related to the server itself, is just another network protocol used by the game, he already explain how it works and pretty much is the same that konami's been doing since pes5/6 server to track stats/results/user-auth then during the match the communication is between the two or more players in a p2p connection, server is basically that then the clients handle the transport of game objects data, its a pretty common and standard design for games like this
 
the stun protocol is not related to the server itself, is just another network protocol used by the game, he already explain how it works and pretty much is the same that konami's been doing since pes5/6 server to track stats/results/user-auth then during the match the communication is between the two or more players in a p2p connection, server is basically that then the clients handle the transport of game objects data, its a pretty common and standard design for games like this
I know it hasn't to do with server but do you are 100% sure the protocoll of PES2021 isn't the same of efootball where I play p2p matches without issue?
 
Last edited:
this forum is for all members. If you think to know something to help all people with issues, write here for all members, so anyone can learn it thx. ;)
I have no intention of hiding anything. I just thought a private message would be more convenient, as I might need to use UltraViewer to access his PC. However, if you are able to do it yourselves, please follow these 5 steps:
1. download pes 2021 original
2. download steam, register new account
3. open pes 2021 laucher.exe
4. run pesbul 2021 server (press 1 to connect)
5. open the game then enjoy!
(from the second time onwards, skip step 2)
 
Last edited:
I know it hasn't to do with server but do you are sure the protocoll of PES2021 isn't the same of efootball where I play without issue?

I really cannot say, remember that for efootball they changed the game engine, so there are chances that they also implemented a new system for online, considering that they went all online for this release to be a full e-sport game, and there's another question, are you playing with the same people that you play on efootball? however, it all depends on mostly if you're having disconnect issues during a match or during playing around on the server, if during the server maybe its a connection issue from you to the server, if during match, yes might be related to the connection between players, so far we dont know anything on how the protocol during match works, not even on older games but probably they're sending packets all the time and need stable connection
 
I really cannot say, remember that for efootball they changed the game engine, so there are chances that they also implemented a new system for online, considering that they went all online for this release to be a full e-sport game, and there's another question, are you playing with the same people that you play on efootball? however, it all depends on mostly if you're having disconnect issues during a match or during playing around on the server, if during the server maybe its a connection issue from you to the server, if during match, yes might be related to the connection between players, so far we dont know anything on how the protocol during match works, not even on older games but probably they're sending packets all the time and need stable connection
My issue is only when I start the match inside a room with an unknown person of that room. Or Also when some one connect with me in a room created by me and we start the match with OK... message tells "impossible to connect.."

I have no intention of hiding anything. I just thought a private message would be more convenient, as I might need to use UltraViewer to access his PC. However, if you are able to do it yourselves, please follow these 5 steps:
1. download pes 2021 original
2. download steam, register new account
3. open pes 2021 laucher.exe
4. run pesbul 2021 server (press 1 to connect)
5. open the game then enjoy!

thank's but man... I've been me to share with you the launcher for cpy version and explain you that you need a steam account... 😜 :D :D
I already know these infos :D
 
Last edited:
My issue is only when I start the match inside a room with an unknown person of that room. Impossible to connect
I might try with someone of your own country or a friend which you can try a small ping to his public ip to know the latency from your current connection, usually mobile connection has a whole different networking routing depending on each ISP might be related to that or some rules blocking connection, that's all that comes to my mind as someone who worked on that area for years :)
@༺Ƥeຮ༻ do you know if one of those packets sent were related to ping during the room?
 
Back
Top Bottom