|
|
I am trying to decode a TCP stream (from a game). The game works like this:
First you log on with your username and password
Then you choose a lobby (so its kind of more like a chat)
In this lobby you can chat and join games
Now all the text that is sent and received for the chat in that lobby is encrypted, so this is what i did: I went into that lobby while i captured all packets being sent over my network, then i said a line in the lobby and stopped packet capturing, now i have the exact packet containing the data, and the length matches, i said a sentence of exactly 53 bytes and that is the amount of data thats in the packet. But... how do i decrypt this? I don't think its any well-known protocol, and i dont know much about the encryption of tcp connections. Is this impossible (even though i dont believe in impossible things) or could it be worth a shot trying if i knew how encryption worked? Can anyone recommend anything i should read about encryption that might be usefull for my problem? Or can someone even tell me how to do it exactly (lol that would be the best of course :P)?
Anyways thanks for any help you may offer, and if i ever get it decoded i'll write an article about it on CP ;P
Kuniva
--------------------------------------------
|
|
|
|
|
Note: This isn't simple and I will not answer any questions about it...
Goto www.openssl.org[^], download and compile.
Write small app (or use of the test-tools in openssl) and try to connect.
If you are real lucky, client-side authentication is turned off and you should
be able to get the clear-text. If not... well you tried
"was wir auch tun, wohin wir gehen
die illuminaten sind im system
sie kontrollieren überall
und 23 ist ihre zahl!"
23, welle: erdball
|
|
|
|
|
http://ih.esuhsd.org/staff/aielloj/ascii_ebcdic_table.htm
Try looking up the hex values on this chart and see if they make sense.
|
|
|
|
|
errr... no offense but i said it was encrypted not some kindergarten a becomes z, b becomes y encryption scheme.. lol
i actually searched in the data where the same letters were in my sentence and the hexadecimal values weren't the same... so its some kind of variable encryption thingy... lol sorry i dont know anything about encryption
Kuniva
--------------------------------------------
|
|
|
|
|
cool, thanks
Kuniva
--------------------------------------------
|
|
|
|
|
Download etherel, a Protocol Analyzer from sourceforge.net (source and binary)
A. Riazi
|
|
|
|
|
Ethereal IS what i'm using to filter the network traffic... It just marks it as TCP
Thanks anyways
Kuniva
--------------------------------------------
|
|
|
|
|
OK. I read a c++ book. Or...a bit of it anyway. I'm sick of that evil looking console window. I want my own GUI or at least no DOS window. The code my friend gave me looks ok but I'w wonderiong if someone could post and example of a "Hello World" with a window\/GUI. Thanks
|
|
|
|
|
The code he gave me lookedsomething like this:
int WINAPI WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance, LPSZ szCmdLine, int iCmdShow)
|
|
|
|
|
Create a dialog-based MFC application and add a button to it.
Right click on it and choose class wizard. Pick IDC_BUTTON1 (or whatever name you gave it) then add a function for WM_COMMAND.
Choose Edit Code and in your function, write
MessageBox("Hello world");
You could also try Visual Basic, really.
|
|
|
|
|
Anonymous wrote:
OK. I read a c++ book. Or...a bit of it anyway. I'm sick of that evil looking console window.
I think you are a good candidate for Visual Basic.
|
|
|
|
|
Thank goodness, I've needed a new sig for a while.
Christian
NO MATTER HOW MUCH BIG IS THE WORD SIZE ,THE DATA MUCT BE TRANSPORTED INTO THE CPU. - Vinod Sharma
|
|
|
|
|
There are many ways to doing it, as seen on this[^] link.
I recommend you first decide what path you want to take between these four Microsoft alternatives, then pick up some reference material on it and go from there.
- Win32 API - Lowest level, C-based API, ugly.
- MFC - Class library with great support from DevStudio. Thinly wraps many Win32 APIs. It's been around for years.
- WTL - Template based class library. Not well supported or widely used, but some people like it more than MFC.
- .NET - Shiny, new, easier. Natively supported by other languages such as C# and VB.NET. The wave of the future.
Regards,
Alvaro
Quitters never win. Winners never quit. But those who never win and never quit are idiots. -- despair.com
|
|
|
|
|
.NET - Shiny, new, easier. Natively supported by other languages such as C# and VB.NET. The wave of the future.
This stuff always cuts me up.
First there was C, then C++, then early Windows, then newer Windows, then MFC, then COM, then DCOM, then ATL, and now it's C# and .NET
I somtimes wonder, will I grow old before .NET is obsolete, or will it be obsolete before I can cut my next fart. <- potentially my new SIG
I somtimes wonder, will I grow old before .NET is obsolete, or will it be obsolete before I can cut my next fart.
|
|
|
|
|
Just put this in a .cpp file and compile :P
#include <windows.h>
LRESULT CALLBACK WindowProcedure(HWND, UINT, WPARAM, LPARAM);
char szClassName[ ] = "WindowsApp";
int WINAPI WinMain(HINSTANCE hThisInstance, HINSTANCE hPrevInstance, LPSTR lpszArgument, int nFunsterStil)
{
HWND hwnd;
MSG messages;
WNDCLASSEX wincl;
wincl.hInstance = hThisInstance;
wincl.lpszClassName = szClassName;
wincl.lpfnWndProc = WindowProcedure;
wincl.style = CS_DBLCLKS;
wincl.cbSize = sizeof(WNDCLASSEX);
wincl.hIcon = LoadIcon(NULL, IDI_APPLICATION);
wincl.hIconSm = LoadIcon(NULL, IDI_APPLICATION);
wincl.hCursor = LoadCursor(NULL, IDC_ARROW);
wincl.lpszMenuName = NULL;
wincl.cbClsExtra = 0;
wincl.cbWndExtra = 0;
wincl.hbrBackground = (HBRUSH) GetStockObject(LTGRAY_BRUSH);
if(!RegisterClassEx(&wincl)) return 0;
hwnd = CreateWindowEx(
0,
szClassName,
"Windows App",
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,
CW_USEDEFAULT,
544,
375,
HWND_DESKTOP,
NULL,
hThisInstance,
NULL
);
ShowWindow(hwnd, nFunsterStil);
while(GetMessage(&messages, NULL, 0, 0))
{
TranslateMessage(&messages);
DispatchMessage(&messages);
}
return messages.wParam;
}
LRESULT CALLBACK WindowProcedure(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message)
{
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hwnd, message, wParam, lParam);
}
return 0;
}
Ack i probably shouldnt promote this entire Copy-Paste behaviour huh?
Kinda VB-ish
Kuniva
--------------------------------------------
|
|
|
|
|
Wow. It worked. Thats pretty good. Where in the code would I put my message though? What would I write for it? (Im used to cout << "MESSAGE" << endl;) sort of thing...
|
|
|
|
|
change this:
LRESULT CALLBACK WindowProcedure(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message)
{
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hwnd, message, wParam, lParam);
}
return 0;
}
to this:
LRESULT CALLBACK WindowProcedure(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message)
{
case WM_CREATE:
MessageBox (NULL, "Hello world!" , "test", 0 + MB_ICONASTERISK);
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hwnd, message, wParam, lParam);
}
return 0;
}
So you see, just use the MessageBox() function to display a message...
the case WM_CREATE stuff is there because thats how u see what kind of message was posted to the message queu, WM_CREATE is posted when your window is created, so your message would display on startup...
Kuniva
--------------------------------------------
|
|
|
|
|
yES I SEe but when i did that it just popped up a little window with my message...i wish to put my message in the window that u already created.
|
|
|
|
|
i suggest u read ur book again
Kuniva
--------------------------------------------
|
|
|
|
|
|
That one did now work actually...i pasted and tried to compule it but im working in C++ and that was C so there was 5 errors....
|
|
|
|
|
Hey thanks to you all for your help. I did get it to work / Seems all i had to do was add this:
case WM_PAINT: hDC = BeginPaint(hwnd, &ps);
TextOut(hDC, 300, 100, "Hello, World!", 13);
EndPaint(hwnd, &ps);
Anyways thanks a lot and it looks like i dont have to go back to my book after all
|
|
|
|
|
I have a View class spawning a CDialog class (used the class wizard). If I include "View.h" in mydlg.h,
and include "mydlg.h" in view.h, i get bizarre errors which miraculouosly disappear if I comment out the #include "view.h" from the dlg class. BUt I wanted to use that .h file to access some info from the view class in the dlg. So I tried forward declare class myView but it doesnt like that either....
Appreciate your help,
ns
|
|
|
|
|
In your mydlg.h, put this:
class View; ( or CView, if that's it's name)
Then #include it in your mydlg.cpp file.
Christian
NO MATTER HOW MUCH BIG IS THE WORD SIZE ,THE DATA MUCT BE TRANSPORTED INTO THE CPU. - Vinod Sharma
Anonymous wrote:
OK. I read a c++ book. Or...a bit of it anyway. I'm sick of that evil looking console window.
I think you are a good candidate for Visual Basic. - Nemanja Trifunovic
|
|
|
|
|