-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathsnoofle.cpp
75 lines (60 loc) · 2.16 KB
/
snoofle.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
#include "snoofle.h"
Snoofle::Snoofle(QObject *parent) : QObject(parent)
{
_authServer = nullptr;
_realmServer = nullptr;
_dump = nullptr;
qDebug() << "[ Snoofle V1.1 ]";
qDebug() << "Wakfu sniffer by Sgt Fatality";
qDebug() << " ";
}
Snoofle::~Snoofle()
{
qDebug() << "Exiting Snoofle...";
delete _authServer;
delete _realmServer;
if (_dump)
{
_dump->close();
_dump->deleteLater();
}
}
bool Snoofle::init()
{
_dump = new QFile(qApp->applicationDirPath() +
"/snoofle_dump_" +
QDateTime::currentDateTime().toString("dd-MM-yyyy_hh-mm") +
".wxy", this);
if (!_dump->open(QIODevice::WriteOnly | QIODevice::Text))
{
qDebug() << ">> Error while opening dump file: " << _dump->errorString();
return false;
}
QSettings settings(qApp->applicationDirPath() + "/settings.ini", QSettings::IniFormat);
QString realm = settings.value("RealmServer/connect-to").toString();
_authServer = new ProxyServer(
settings.value("AuthServer/listen").toUInt(),
settings.value("AuthServer/connect-to").toString(),
settings.value("RealmServer/listen").toUInt());
_realmServer = new ProxyServer(
settings.value("RealmServer/listen").toUInt(),
settings.value(realm + "/ip").toString());
if (!_authServer->listen() || !_realmServer->listen())
return false;
connect(_authServer, SIGNAL(packetReceived(Packet*)), this, SLOT(dumpPacket(Packet*)));
connect(_realmServer, SIGNAL(packetReceived(Packet*)), this, SLOT(dumpPacket(Packet*)));
qDebug() << ">> AuthServer listening on port " << _authServer->localPort();
qDebug() << ">> RealmServer listening on port " << _realmServer->localPort();
qDebug() << " ";
qDebug() << ">> RealmServer remote realm is " << realm;
qDebug() << " ";
qDebug() << ">> Waiting for client...";
qDebug() << " ";
return true;
}
void Snoofle::dumpPacket(Packet* packet)
{
QString out = packet->type() + ";" + packet->toHex();
_dump->write(out.toLatin1() + "\n");
_dump->flush();
}