Just want to share
Posted: Tue Apr 24, 2007 4:53 am
Before accusing me of any wrongdoing or flaming me for no reason, skim through this article first/again (it was posted in a sticky):
http://en.wikipedia.org/wiki/White_hat (I hate referencing Wikipedia, but considering the audience, I feel that it is my only choice)
Many people here seem to think that the only way to get “hacked” or to lose your account is either through a keylogger, a weak password (eg, brute force), or sheer stupidity (eg, falling for a “FREE SILK” scam).
In actual fact, considering just how oblivious Joymax is, the number of ways to get “hacked” is endless. Anything from chatting to someone, to doing an exchange/party invitation, to even running a stall can result in sad results. Although I disagree with the fact that Joymax is doing everything they can to safeguard its players, I have to admit that given the nature of current technology and programming standards, there are some things that just can’t be “fixed”.
I would like to emphasize that I am who that article claims, and that I never have, currently do not, and never will engage in activities that cause any Silkroad players pain and grief.
My goal in this short post is to give you an idea of what I am talking about, but without giving away enough information to cause any further harm. Let’s get straight to the point.
Packets
The best way to think about a packet is a package. It contains something (in this case information) that is sent from one destination to another. In networking a packet is sent from one node to another, using some sort of a protocol (in this case TCP/IP).
Go ahead and open you command prompt (if you use windows) or a shell if you use unix/linux. Do a ping command to 121.128.133.12 (Joymax). You have just sent a packet. In this case it doesn’t really do anything useful. The ping command will wait for a reply (another packet) and calculate the time difference. This time difference is known as latency. In VERY simple English, latency is the amount of time it takes for a packet to go from one node to another. Actually in this specific case it won’t work at all, because the other end drops ping requests, which means you won’t get any replies.
Well, that was easy, wasn’t it? Not very useful though. So let’s take it a step further. Google for a “packet sniffer” (on my windows machine, I use Wireshark). Have your SRO running (IF you are afraid of getting banned, just use another account). Let’s capture some packets from the server. (here is a challenge – find out which PORT SRO is running on). Go to town and press start, wait a few seconds before pressing stop. See those? They are packets! Carrying data! Now try this: go to a place that has no players, or mobs or anything else around, make sure there is no guild/union/GM/global chat of any kind. Now have your friend message you. Do you see those? Those packets carry information required to go from your friend to you (instead of someone else) along with the message. A single action or request may involve one packet but may also involve more.
Now what about the actual content? It may seem meaningless, but in actual fact it carries a lot of valuable information. It is simply in hexadecimal, that’s all.
The hexadecimal system is fairly easy to understand. Binary has two possible values 0 or 1. Decimal system has 10 -> 0 – 9. Hexadecimal has 16 -> 0 – 9 and after the 9 another 6 letters, A B C D E F.
Packets are all designed with similar principles but may look different. For example, a simple packet may look like this:
---------------------------------------------------
Destination
---------------------------------------------------
Size (how many bytes are expected)
---------------------------------------------------
Payload (the actual information)
---------------------------------------------------
Go ahead; capture packets, read through them. Trial and error should give you an idea of their design and what they mean (at least some of them).
We captured packets, now what about sending some. Well it is not easy, but it is not impossible either. You have to know a programming language or some sort. I am using C, Java, C#, C++, VB, depening on what I am doing. If you have visual studio, open up MSDN documentation and search for Socket class (C# or Java). Read through it. Specifically take note of how to send and receive Bytes. Open your SRO client, connect and login while capturing packets using your packet sniffer. Once you’ve done that, attempt to replicate the same in your application. It took me 15 minutes of coding to get as far as the character selection process (minus the image verification). It took me about two hours to write a program that can send a chat message to any recipient.
Side note: This is how the so called Clientless Bots are written.
Getting the idea yet? Well whether you do or not, this is where I have to stop, as any more information may become dangerous in the hands of those who wish to do harm.
Assembly... Memory... and all that Jazz
I’ll be brief on this one. Back in the old days of programming and computer science, long before FORTRAN ALL code was written by hand. Assembly is still used today and can also be used to gain some interesting information.
I am using a memory scanner I wrote myself, so I am not posting it here. But you can get one off Google. If you want something really easy, then get something like Cheat Engine. There is a tutorial that does a fairly good job of explaining on how to retrieve values from a process and how to modify them. It is limited in terms of theory and true usage, but you don’t need to know more than that anyway (unless you are serious about hacking). If you are curious, try it out on a simple application such as a calculator. While it may appear at first that there isn’t much you can do by modifying those values client side, doing a bit more reading and playing around can reveal some pleasant surprises. You can also get the assembly statements.
Well that’s all for now, but I do plan on posting some more stuff in the future. This little piece of writing is not designed to scare you, or to make you paranoid. It is just a way to make people stop thinking certain “fairytales” and put certain myths to rest.
http://en.wikipedia.org/wiki/White_hat (I hate referencing Wikipedia, but considering the audience, I feel that it is my only choice)
Many people here seem to think that the only way to get “hacked” or to lose your account is either through a keylogger, a weak password (eg, brute force), or sheer stupidity (eg, falling for a “FREE SILK” scam).
In actual fact, considering just how oblivious Joymax is, the number of ways to get “hacked” is endless. Anything from chatting to someone, to doing an exchange/party invitation, to even running a stall can result in sad results. Although I disagree with the fact that Joymax is doing everything they can to safeguard its players, I have to admit that given the nature of current technology and programming standards, there are some things that just can’t be “fixed”.
I would like to emphasize that I am who that article claims, and that I never have, currently do not, and never will engage in activities that cause any Silkroad players pain and grief.
My goal in this short post is to give you an idea of what I am talking about, but without giving away enough information to cause any further harm. Let’s get straight to the point.
Packets
The best way to think about a packet is a package. It contains something (in this case information) that is sent from one destination to another. In networking a packet is sent from one node to another, using some sort of a protocol (in this case TCP/IP).
Go ahead and open you command prompt (if you use windows) or a shell if you use unix/linux. Do a ping command to 121.128.133.12 (Joymax). You have just sent a packet. In this case it doesn’t really do anything useful. The ping command will wait for a reply (another packet) and calculate the time difference. This time difference is known as latency. In VERY simple English, latency is the amount of time it takes for a packet to go from one node to another. Actually in this specific case it won’t work at all, because the other end drops ping requests, which means you won’t get any replies.
Well, that was easy, wasn’t it? Not very useful though. So let’s take it a step further. Google for a “packet sniffer” (on my windows machine, I use Wireshark). Have your SRO running (IF you are afraid of getting banned, just use another account). Let’s capture some packets from the server. (here is a challenge – find out which PORT SRO is running on). Go to town and press start, wait a few seconds before pressing stop. See those? They are packets! Carrying data! Now try this: go to a place that has no players, or mobs or anything else around, make sure there is no guild/union/GM/global chat of any kind. Now have your friend message you. Do you see those? Those packets carry information required to go from your friend to you (instead of someone else) along with the message. A single action or request may involve one packet but may also involve more.
Now what about the actual content? It may seem meaningless, but in actual fact it carries a lot of valuable information. It is simply in hexadecimal, that’s all.
The hexadecimal system is fairly easy to understand. Binary has two possible values 0 or 1. Decimal system has 10 -> 0 – 9. Hexadecimal has 16 -> 0 – 9 and after the 9 another 6 letters, A B C D E F.
Packets are all designed with similar principles but may look different. For example, a simple packet may look like this:
---------------------------------------------------
Destination
---------------------------------------------------
Size (how many bytes are expected)
---------------------------------------------------
Payload (the actual information)
---------------------------------------------------
Go ahead; capture packets, read through them. Trial and error should give you an idea of their design and what they mean (at least some of them).
We captured packets, now what about sending some. Well it is not easy, but it is not impossible either. You have to know a programming language or some sort. I am using C, Java, C#, C++, VB, depening on what I am doing. If you have visual studio, open up MSDN documentation and search for Socket class (C# or Java). Read through it. Specifically take note of how to send and receive Bytes. Open your SRO client, connect and login while capturing packets using your packet sniffer. Once you’ve done that, attempt to replicate the same in your application. It took me 15 minutes of coding to get as far as the character selection process (minus the image verification). It took me about two hours to write a program that can send a chat message to any recipient.
Side note: This is how the so called Clientless Bots are written.
Getting the idea yet? Well whether you do or not, this is where I have to stop, as any more information may become dangerous in the hands of those who wish to do harm.
Assembly... Memory... and all that Jazz
I’ll be brief on this one. Back in the old days of programming and computer science, long before FORTRAN ALL code was written by hand. Assembly is still used today and can also be used to gain some interesting information.
I am using a memory scanner I wrote myself, so I am not posting it here. But you can get one off Google. If you want something really easy, then get something like Cheat Engine. There is a tutorial that does a fairly good job of explaining on how to retrieve values from a process and how to modify them. It is limited in terms of theory and true usage, but you don’t need to know more than that anyway (unless you are serious about hacking). If you are curious, try it out on a simple application such as a calculator. While it may appear at first that there isn’t much you can do by modifying those values client side, doing a bit more reading and playing around can reveal some pleasant surprises. You can also get the assembly statements.
Well that’s all for now, but I do plan on posting some more stuff in the future. This little piece of writing is not designed to scare you, or to make you paranoid. It is just a way to make people stop thinking certain “fairytales” and put certain myths to rest.