Сообщений: 734
Тем: 6
Зарегистрирован: Sep 2009
Репутация:
4,302
автор полное ололо. ну и что, что у тебя либа есть? интеграцию в клиент ты сделаешь? убейся
Сообщений: 75
Тем: 1
Зарегистрирован: Nov 2009
Репутация:
1,900
Того же мнения, что такую вещь надо покупать только у разработчика... и больше ни у кого. Нафиг надо левую хрень покупать без поддержки, без доработки, без гарантий и т.д.
Бред, в общем...
Сообщений: 889
Тем: 21
Зарегистрирован: May 2010
Репутация:
12,856
05-24-2010, 10:33 AM
(Сообщение последний раз редактировалось: 05-24-2010, 01:07 PM Mangol.)
Просто тупой развод так как он скидывай файлики типа исходав (какие исходы ето на исходы и непохожее декомпил чистой воды).
Лучьше отжалеть денег и купить нормальную LG у разработчика.
Добавлено через 2 часа 15 минут
Автор полный разводила.
Я попрасил его скинуть хоть 1 исходник он скинул файлик LameGuard.java и PacketBuilder.java клялся что реальный исходник.
Цитата: seregal2 (12:10:41 24/05/2010)
Незнаю исходы как бы те что ты кинул декомпил .
seregal2 (12:10:51 24/05/2010)
проверил кстати .
LameGuard (Алексей) (12:10:58 24/05/2010)
Ага.
seregal2 (12:11:03 24/05/2010)
+ неоднаго коментария this.
LameGuard (Алексей) (12:11:05 24/05/2010)
2 штуки декомпилил?))
seregal2 (12:11:08 24/05/2010)
частейшая ошибка
seregal2 (12:11:38 24/05/2010)
В любом файле есть даже хоть 1 коментарий тут 0
seregal2 (12:11:42 24/05/2010)
да и код кривой
LameGuard (Алексей) (12:11:46 24/05/2010)
Блин. Ты вообще понимаешь что ты декомпилил 2 штуки? Они связаны каждый между собой как по смыслу. А насчет частейшая ошибка мне все кажется что ты вообще не шаришь..
LameGuard (Алексей) (12:11:55 24/05/2010)
Ну кривой не берите. У меня людей много
seregal2 (12:12:05 24/05/2010)
Ето тупо развод
LameGuard (Алексей) (12:12:06 24/05/2010)
За такие деньги я еще уговаривать должен.
seregal2 (12:12:10 24/05/2010)
неодин я и програмист тоже так думаеш
LameGuard (Алексей) (12:12:22 24/05/2010)
Смешно смешно.
seregal2 (12:12:39 24/05/2010)
Ты дурной внатуре? ты мне сказал 2 файла не декомпил
seregal2 (12:12:45 24/05/2010)
утт уже выяснилось ето декомпил
seregal2 (12:12:46 24/05/2010)
вывод?
LameGuard (Алексей) (12:13:08 24/05/2010)
Боже мой
seregal2 (12:13:11 24/05/2010)
зачем мне покупать декомпил файлов?
LameGuard (Алексей) (12:13:18 24/05/2010)
Это чистые исходники за январь месяц. Что ты от меня хочешь?
LameGuard (Алексей) (12:13:26 24/05/2010)
Можете не брать.
seregal2 (12:13:36 24/05/2010)
ЧИстые исходники?
seregal2 (12:13:40 24/05/2010)
Я так недумаю
LameGuard (Алексей) (12:14:28 24/05/2010)
Блять ты такой тип. Если бы мне нужно было вас развести я бы мог кинуть любые другие исходники ЛГ, я шарю в этом явно не меньше тебя. Я кинул именно за январь. С ними уже работали люди и притензий ко мне не было.
LameGuard (Алексей) (12:14:32 24/05/2010)
Вообщем делайте вывод.
LameGuard (Алексей) (12:14:37 24/05/2010)
Берете или до свидания.
seregal2 (12:14:53 24/05/2010)
Декомпил брать ? некчему.
LameGuard (Алексей) (12:15:17 24/05/2010)
Ну значит берите лицуху
LameGuard (Алексей) (12:15:24 24/05/2010)
А потом попробуй там 2 файла декомпильнуть.
LameGuard (Алексей) (12:15:28 24/05/2010)
А я буду долго "ржать"
LameGuard (Алексей) (12:15:29 24/05/2010)
Удачи!)
LameGuard (Алексей) (12:30:12 24/05/2010)
Ааа ты просто решил что если у меня есть исходники на январь то это развод, а на форуме сидят такие гении которые ничего не шарят и пишут всякий бред. Я работал раньше в ЛГ. А те мясные пацыки которые твоему сергею наговорили дерема пусть оффнут свой рот.
LameGuard (Алексей) (12:30:20 24/05/2010)
Я понял ) СПасибо за общение до свидания.
По его словам это реальный исходник 2(файла):
LameGuard.java
Скрытый текст
package com.lameguard;
import com.lameguard.exception.LameGuardClientBannedException;
import com.lameguard.exception.LameGuardException;
import com.lameguard.exception.LameGuardHackerException;
import com.lameguard.exception.LameGuardIncorrectDataException;
import com.lameguard.exception.LameGuardIncorrectPatchException;
import com.lameguard.exception.LameGuardIncorrectRevisionException;
import com.lameguard.exception.LameGuardIncorrectVersionException;
import com.lameguard.exception.LameGuardInstanceLimitException;
import com.lameguard.exception.LameGuardInternalException;
import com.lameguard.session.ClientSession;
import com.lameguard.session.IpSession;
import com.lameguard.utils.Utils;
import java.util.Collections;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import java.util.WeakHashMap;
import java.util.concurrent.ConcurrentHashMap;
import org.apache.log4j.Logger;
public class LameGuard
{
private static final Logger _log = Logger.getLogger(LameGuard.class);
private static final LameGuard _instance = new LameGuard();
private final Map<String, IpSession> ipSessions;
private final Map<Object, ClientSession> awaitingSessions;
private final Map<Object, ClientSession> clientSessions;
private long lastCleanUp;
public static final LameGuard getInstance()
{
return _instance;
}
private LameGuard()
{
this.awaitingSessions = new ConcurrentHashMap();
this.clientSessions = Collections.synchronizedMap(new WeakHashMap());
this.ipSessions = new ConcurrentHashMap();
this.lastCleanUp = System.currentTimeMillis();
}
public String getHWID(Object client)
{
if (client == null)
return null;
ClientSession clientData = (ClientSession)this.clientSessions.get(client);
if (clientData == null)
return null;
return clientData.getHWID();
}
public void onProtocolVersionPacket(Object client, int revision, int version, int patch, int instances, byte[] data)
throws LameGuardException
{
if ((revision == -2) || (revision == -3) || (revision == 65534) || (revision == 65533))
return;
String ip = Utils.findIP(client.toString());
if (ip == null)
{
_log.warn(new StringBuilder().append("Cannot find ip : ").append(client.toString()).append(".").toString());
throw new LameGuardInternalException();
}
if (BanList.getInstance().isIPBanned(ip))
{
_log.info(new StringBuilder().append("Client [ip : ").append(ip).append("] banned by ip, closing connection.").toString());
throw new LameGuardClientBannedException();
}
IpSession ipSession = (IpSession)this.ipSessions.get(ip);
if (ipSession == null)
{
ipSession = new IpSession(ip);
this.ipSessions.put(ip, ipSession);
}
if (data == null)
{
if (2106 == Config.LAMEGUARD_LOGIN_PORT)
{
addBanPoints(ipSession, 0, Config.LAMEGUARD_INCORRECT_CLIENT_BAN_POINTS);
throw new LameGuardIncorrectRevisionException();
}
addBanPoints(ipSession, 1, Config.LAMEGUARD_INCORRECT_PACKETS_BAN_POINTS);
throw new LameGuardIncorrectDataException();
}
int start = (data[1] & 0xFF) << 8 | (data[0] & 0xFF) << 0;
version ^= start;
patch ^= start;
instances ^= start;
if ((version < Config.LAMEGUARD_MIN_VERSION) || (version > Config.LAMEGUARD_MAX_VERSION))
{
addBanPoints(ipSession, 0, Config.LAMEGUARD_INCORRECT_VERSION_BAN_POINTS);
throw new LameGuardIncorrectVersionException();
}
byte[] a_crc32 = new byte[4];
byte[] a_token = new byte[4];
byte[] a_hwid = new byte[16];
byte[] a_account = new byte[16];
try
{
PacketBuilder.decompilePacket(data, a_token, a_hwid, a_account, a_crc32);
}
catch (LameGuardHackerException lghe)
{
String hwid = Utils.asHex(a_hwid);
String account = new String(a_account).trim();
addBanPoints(ipSession, hwid, account, 4, Config.LAMEGUARD_HACKER_DETECT_BAN_POINTS);
throw lghe;
}
catch (LameGuardIncorrectDataException lgide)
{
addBanPoints(ipSession, 2, Config.LAMEGUARD_INCORRECT_PACKETS_BAN_POINTS);
throw lgide;
}
catch (Exception e)
{
_log.error("Error while decrypting packet :", e);
throw new LameGuardInternalException();
}
String hwid = Utils.asHex(a_hwid);
String account = new String(a_account).trim();
int crc32 = Utils.bytesToInt(a_crc32, 0);
int token = Utils.bytesToInt(a_token, 0);
ClientSession clientSession = new ClientSession(ip, hwid, account, token);
if (BanList.getInstance().isHWIDBanned(hwid))
{
_log.info(new StringBuilder().append("Client ").append(clientSession).append(" banned by hwid, closing connection.").toString());
throw new LameGuardClientBannedException();
}
if (!(ipSession.isUnique(token, crc32)))
{
addBanPoints(ipSession, hwid, account, 3, Config.LAMEGUARD_DUPLICATE_PACKETS_BAN_POINTS);
throw new LameGuardHackerException();
}
ipSession.setData(token, crc32);
if ((patch < Config.LAMEGUARD_MIN_PATCH_VERSION) || (patch > Config.LAMEGUARD_MAX_PATCH_VERSION))
{
_log.info(new StringBuilder().append("Client ").append(clientSession).append(" has incorrect patch version : ").append(patch).append(", closing connection.").toString());
throw new LameGuardIncorrectPatchException();
}
if (instances > Config.LAMEGUARD_MAX_INSTANCES)
{
_log.info(new StringBuilder().append("Client ").append(clientSession).append(" exceed maximum of allowed loaded instances : ").append(instances).append(", closing connection.").toString());
throw new LameGuardInstanceLimitException();
}
_log.info(new StringBuilder().append("Client ").append(clientSession).append(" connected, ip ban points : ").append(ipSession.getBanPoints()).append(".").toString());
cleanUpAwaiting();
this.awaitingSessions.put(client, clientSession);
}
public void onKeyPacket(Object client, byte[] key, byte[] data) throws LameGuardException
{
if (this.awaitingSessions.containsKey(client))
{
ClientSession clientData = (ClientSession)this.awaitingSessions.get(client);
try
{
byte[] a_token = new byte[4];
a_token = Utils.intToBytes(clientData.getToken());
byte[] a_key = new byte[8];
System.arraycopy(key, 0, a_key, 0, a_key.length);
PacketBuilder.compilePacket(data, a_token, a_key);
this.clientSessions.put(client, clientData);
}
catch (Exception e)
{
throw new LameGuardInternalException();
}
finally
{
this.awaitingSessions.remove(client);
}
}
else
{
_log.error(new StringBuilder().append("Error while sending lameguard init packet. Client : ").append(client.toString()).append(" is not in awaiting list!").toString());
throw new LameGuardInternalException();
}
}
private void addBanPoints(IpSession session, int level, int points)
{
addBanPoints(session, null, null, level, points);
}
private void addBanPoints(IpSession session, String hwid, String account, int level, int points)
{
session.addBanPoints(points);
String toString = new StringBuilder().append("[").append(((account != null) && (account.length() > 0)) ? new StringBuilder().append("login : ").append(account).append(", ").toString() : "").append("ip : ").append(session.getIP()).append((hwid != null) ? new StringBuilder().append(", hwid : ").append(hwid).toString() : "").append("]").toString();
if (level > 0)
{
_log.warn(new StringBuilder().append("Client ").append(toString).append(" possible hacker [").append(level).append("], ban points : ").append(session.getBanPoints()).append(".").toString());
}
else
{
_log.warn(new StringBuilder().append("Client ").append(toString).append(" is bot or old client [").append(level).append("] , ban points : ").append(session.getBanPoints()).append(".").toString());
}
if (Config.LAMEGUARD_MAX_BAN_POINTS <= session.getBanPoints())
{
_log.warn(new StringBuilder().append("Client ").append(toString).append(" has reached ban points limit.").toString());
BanList.getInstance().addIP(session.getIP(), account, level);
if (hwid != null)
BanList.getInstance().addHWID(hwid, account, level);
}
}
private void cleanUpAwaiting()
{
if (Math.abs(System.currentTimeMillis() - this.lastCleanUp) < Config.LAMEGUARD_CLEANUP_DELAY)
return;
_log.debug("Awaiting clients clean up...");
for (Iterator i$ = this.awaitingSessions.keySet().iterator(); i$.hasNext(); ) { Object client = i$.next();
ClientSession clientData = (ClientSession)this.awaitingSessions.get(client);
if (Math.abs(System.currentTimeMillis() - clientData.getConnectTime()) > Config.LAMEGUARD_MAX_AWAITING_DELAY)
{
this.awaitingSessions.remove(client);
}
}
this.lastCleanUp = System.currentTimeMillis();
}
}
Ещо один файл его
PacketBuilder.java
package com.lameguard;
import com.lameguard.exception.LameGuardHackerException;
import com.lameguard.exception.LameGuardIncorrectDataException;
import com.lameguard.utils.Utils;
import java.util.Random;
import java.util.zip.CRC32;
import java.util.zip.Checksum;
import javax.crypto.Cipher;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;
public class PacketBuilder
{
private static final Random random = new Random();
public static final void compilePacket(byte[] data, byte[] token, byte[] key)
throws Exception
{
random.nextBytes(data);
int offset = 1;
for (int i = 0; i < token.length; ++i)
{
data[offset] = token[i];
data[(offset + 1)] = (byte)(2 + random.nextInt(57));
offset += (data[(offset + 1)] & 0xFF);
}
for (i = 0; i < key.length; ++i)
{
data[offset] = key[i];
data[(offset + 1)] = (byte)(2 + random.nextInt(57));
offset += (data[(offset + 1)] & 0xFF);
}
Checksum checksum = new CRC32();
checksum.update(data, 0, offset);
byte[] crc32 = Utils.intToBytes((int)checksum.getValue());
for (int i = 0; i < 4; ++i)
{
data[offset] = crc32[i];
data[(offset + 1)] = (byte)(2 + random.nextInt(23));
offset += (data[(offset + 1)] & 0xFF);
}
data[(data.length - 1)] = -1;
for (i = 0; i < data.length - 1; ++i) {
int tmp218_217 = (data.length - 1);
byte[] tmp218_213 = data; tmp218_213[tmp218_217] = (byte)(tmp218_213[tmp218_217] ^ data[i]);
}
IvParameterSpec ivSpec = new IvParameterSpec(Config.LAMEGUARD_SERVER_KEY.substring(0, 16).getBytes());
SecretKeySpec skeySpec = new SecretKeySpec(Config.LAMEGUARD_SERVER_KEY.substring(16, 32).getBytes(), "AES");
Cipher cipher = Cipher.getInstance("AES/CBC/NoPadding");
cipher.init(1, skeySpec, ivSpec);
byte[] encrypted = cipher.doFinal(data);
System.arraycopy(encrypted, 0, data, 0, data.length);
}
public static final void decompilePacket(byte[] data, byte[] token, byte[] hwid, byte[] account, byte[] crc32) throws Exception
{
IvParameterSpec ivSpec = new IvParameterSpec(Config.LAMEGUARD_CLIENT_KEY.substring(0, 16).getBytes());
SecretKeySpec skeySpec = new SecretKeySpec(Config.LAMEGUARD_CLIENT_KEY.substring(16, 32).getBytes(), "AES");
Cipher cipher = Cipher.getInstance("AES/CBC/NoPadding");
cipher.init(2, skeySpec, ivSpec);
data = cipher.doFinal(data);
byte c = -1;
for (int i = 0; i < data.length - 1; ++i)
c = (byte)(c ^ data[i]);
if (c != data[(data.length - 1)])
throw new LameGuardIncorrectDataException();
int offset = 1;
for (int i = 0; i < token.length; ++i)
{
token[i] = (byte)(data[offset] ^ data[0]);
offset += (data[(offset + 1)] & 0xFF);
}
for (i = 0; i < hwid.length; ++i)
{
hwid[i] = (byte)(data[offset] ^ data[0]);
offset += (data[(offset + 1)] & 0xFF);
}
for (i = 0; i < account.length; ++i)
{
account[i] = (byte)(data[offset] ^ data[0]);
offset += (data[(offset + 1)] & 0xFF);
if (account[i] == 0)
break;
}
Checksum checksum = new CRC32();
checksum.update(data, 0, offset);
for (int i = 0; i < crc32.length; ++i)
{
crc32[i] = (byte)(data[offset] ^ data[0]);
offset += (data[(offset + 1)] & 0xFF);
}
if ((Utils.bytesToInt(crc32, 0) & 0xFFFFFFFF) != checksum.getValue())
{
if (Utils.bytesToInt(token, 0) == Utils.bytesToInt(crc32, 0))
throw new LameGuardHackerException();
throw new LameGuardIncorrectDataException();
}
random.nextBytes(data);
}
}
Я взял защиту за 2008-начало 2009 январь. Декомпилировал в JD вообщем вот что получилось решайте сами!
LameGuard.java
/* */ package com.lameguard;
/* */
/* */ import com.lameguard.exception.LameGuardClientBannedException;
/* */ import com.lameguard.exception.LameGuardException;
/* */ import com.lameguard.exception.LameGuardHackerException;
/* */ import com.lameguard.exception.LameGuardIncorrectDataException;
/* */ import com.lameguard.exception.LameGuardIncorrectPatchException;
/* */ import com.lameguard.exception.LameGuardIncorrectRevisionException;
/* */ import com.lameguard.exception.LameGuardIncorrectVersionException;
/* */ import com.lameguard.exception.LameGuardInstanceLimitException;
/* */ import com.lameguard.exception.LameGuardInternalException;
/* */ import com.lameguard.session.ClientSession;
/* */ import com.lameguard.session.IpSession;
/* */ import com.lameguard.utils.Utils;
/* */ import java.util.Collections;
/* */ import java.util.Iterator;
/* */ import java.util.Map;
/* */ import java.util.Set;
/* */ import java.util.WeakHashMap;
/* */ import java.util.concurrent.ConcurrentHashMap;
/* */ import org.apache.log4j.Logger;
/* */
/* */ public class LameGuard
/* */ {
/* 29 */ private static final Logger _log = Logger.getLogger(LameGuard.class);
/* */
/* 31 */ private static final LameGuard _instance = new LameGuard();
/* */ private final Map<String, IpSession> ipSessions;
/* */ private final Map<Object, ClientSession> awaitingSessions;
/* */ private final Map<Object, ClientSession> clientSessions;
/* */ private long lastCleanUp;
/* */
/* */ public static final LameGuard getInstance()
/* */ {
/* 41 */ return _instance;
/* */ }
/* */
/* */ private LameGuard()
/* */ {
/* 46 */ this.awaitingSessions = new ConcurrentHashMap();
/* 47 */ this.clientSessions = Collections.synchronizedMap(new WeakHashMap());
/* 48 */ this.ipSessions = new ConcurrentHashMap();
/* */
/* 50 */ this.lastCleanUp = System.currentTimeMillis();
/* */ }
/* */
/* */ public String getHWID(Object client)
/* */ {
/* 55 */ if (client == null) {
/* 56 */ return null;
/* */ }
/* 58 */ ClientSession clientData = (ClientSession)this.clientSessions.get(client);
/* */
/* 60 */ if (clientData == null) {
/* 61 */ return null;
/* */ }
/* 63 */ return clientData.getHWID();
/* */ }
/* */
/* */ public void onProtocolVersionPacket(Object client, int revision, int version, int patch, int instances, byte[] data)
/* */ throws LameGuardException
/* */ {
/* 69 */ if ((revision == -2) || (revision == -3) || (revision == 65534) || (revision == 65533)) {
/* 70 */ return;
/* */ }
/* 72 */ String ip = Utils.findIP(client.toString());
/* */
/* 74 */ if (ip == null)
/* */ {
/* 76 */ _log.warn(new StringBuilder().append("Cannot find ip : ").append(client.toString()).append(".").toString());
/* 77 */ throw new LameGuardInternalException();
/* */ }
/* */
/* 81 */ if (BanList.getInstance().isIPBanned(ip))
/* */ {
/* 83 */ _log.info(new StringBuilder().append("Client [ip : ").append(ip).append("] banned by ip, closing connection.").toString());
/* */
/* 85 */ throw new LameGuardClientBannedException();
/* */ }
/* */
/* 88 */ IpSession ipSession = (IpSession)this.ipSessions.get(ip);
/* */
/* 90 */ if (ipSession == null)
/* */ {
/* 92 */ ipSession = new IpSession(ip);
/* 93 */ this.ipSessions.put(ip, ipSession);
/* */ }
/* */
/* 96 */ if (data == null)
/* */ {
/* 98 */ if (2106 == Config.LAMEGUARD_LOGIN_PORT)
/* */ {
/* 100 */ addBanPoints(ipSession, 0, Config.LAMEGUARD_INCORRECT_CLIENT_BAN_POINTS);
/* */
/* 102 */ throw new LameGuardIncorrectRevisionException();
/* */ }
/* */
/* 106 */ addBanPoints(ipSession, 1, Config.LAMEGUARD_INCORRECT_PACKETS_BAN_POINTS);
/* */
/* 108 */ throw new LameGuardIncorrectDataException();
/* */ }
/* */
/* 112 */ int start = (data[1] & 0xFF) << 8 | (data[0] & 0xFF) << 0;
/* 113 */ version ^= start;
/* 114 */ patch ^= start;
/* 115 */ instances ^= start;
/* */
/* 119 */ if ((version < Config.LAMEGUARD_MIN_VERSION) || (version > Config.LAMEGUARD_MAX_VERSION))
/* */ {
/* 121 */ addBanPoints(ipSession, 0, Config.LAMEGUARD_INCORRECT_VERSION_BAN_POINTS);
/* */
/* 123 */ throw new LameGuardIncorrectVersionException();
/* */ }
/* */
/* 126 */ byte[] a_crc32 = new byte[4];
/* 127 */ byte[] a_token = new byte[4];
/* 128 */ byte[] a_hwid = new byte[16];
/* 129 */ byte[] a_account = new byte[16];
/* */ try
/* */ {
/* 133 */ PacketBuilder.decompilePacket(data, a_token, a_hwid, a_account, a_crc32);
/* */ }
/* */ catch (LameGuardHackerException lghe)
/* */ {
/* 137 */ String hwid = Utils.asHex(a_hwid);
/* 138 */ String account = new String(a_account).trim();
/* */
/* 140 */ addBanPoints(ipSession, hwid, account, 4, Config.LAMEGUARD_HACKER_DETECT_BAN_POINTS);
/* */
/* 142 */ throw lghe;
/* */ }
/* */ catch (LameGuardIncorrectDataException lgide)
/* */ {
/* 146 */ addBanPoints(ipSession, 2, Config.LAMEGUARD_INCORRECT_PACKETS_BAN_POINTS);
/* */
/* 148 */ throw lgide;
/* */ }
/* */ catch (Exception e)
/* */ {
/* 152 */ _log.error("Error while decrypting packet :", e);
/* */
/* 154 */ throw new LameGuardInternalException();
/* */ }
/* */
/* 157 */ String hwid = Utils.asHex(a_hwid);
/* 158 */ String account = new String(a_account).trim();
/* 159 */ int crc32 = Utils.bytesToInt(a_crc32, 0);
/* 160 */ int token = Utils.bytesToInt(a_token, 0);
/* */
/* 162 */ ClientSession clientSession = new ClientSession(ip, hwid, account, token);
/* */
/* 165 */ if (BanList.getInstance().isHWIDBanned(hwid))
/* */ {
/* 167 */ _log.info(new StringBuilder().append("Client ").append(clientSession).append(" banned by hwid, closing connection.").toString());
/* */
/* 169 */ throw new LameGuardClientBannedException();
/* */ }
/* */
/* 173 */ if (!ipSession.isUnique(token, crc32))
/* */ {
/* 175 */ addBanPoints(ipSession, hwid, account, 3, Config.LAMEGUARD_DUPLICATE_PACKETS_BAN_POINTS);
/* */
/* 177 */ throw new LameGuardHackerException();
/* */ }
/* */
/* 180 */ ipSession.setData(token, crc32);
/* */
/* 182 */ if ((patch < Config.LAMEGUARD_MIN_PATCH_VERSION) || (patch > Config.LAMEGUARD_MAX_PATCH_VERSION))
/* */ {
/* 184 */ _log.info(new StringBuilder().append("Client ").append(clientSession).append(" has incorrect patch version : ").append(patch).append(", closing connection.").toString());
/* */
/* 186 */ throw new LameGuardIncorrectPatchException();
/* */ }
/* */
/* 189 */ if (instances > Config.LAMEGUARD_MAX_INSTANCES)
/* */ {
/* 191 */ _log.info(new StringBuilder().append("Client ").append(clientSession).append(" exceed maximum of allowed loaded instances : ").append(instances).append(", closing connection.").toString());
/* */
/* 193 */ throw new LameGuardInstanceLimitException();
/* */ }
/* */
/* 196 */ _log.info(new StringBuilder().append("Client ").append(clientSession).append(" connected, ip ban points : ").append(ipSession.getBanPoints()).append(".").toString());
/* */
/* 198 */ cleanUpAwaiting();
/* 199 */ this.awaitingSessions.put(client, clientSession);
/* */ }
/* */
/* */ public void onKeyPacket(Object client, byte[] key, byte[] data) throws LameGuardException
/* */ {
/* 204 */ if (this.awaitingSessions.containsKey(client))
/* */ {
/* 206 */ ClientSession clientData = (ClientSession)this.awaitingSessions.get(client);
/* */ try
/* */ {
/* 210 */ byte[] a_token = new byte[4];
/* 211 */ a_token = Utils.intToBytes(clientData.getToken());
/* */
/* 213 */ byte[] a_key = new byte[8];
/* 214 */ System.arraycopy(key, 0, a_key, 0, a_key.length);
/* */
/* 216 */ PacketBuilder.compilePacket(data, a_token, a_key);
/* */
/* 218 */ this.clientSessions.put(client, clientData);
/* */ }
/* */ catch (Exception e)
/* */ {
/* 224 */ throw new LameGuardInternalException();
/* */ }
/* */ finally
/* */ {
/* 228 */ this.awaitingSessions.remove(client);
/* */ }
/* */ }
/* */ else
/* */ {
/* 233 */ _log.error(new StringBuilder().append("Error while sending lameguard init packet. Client : ").append(client.toString()).append(" is not in awaiting list!").toString());
/* 234 */ throw new LameGuardInternalException();
/* */ }
/* */ }
/* */
/* */ private void addBanPoints(IpSession session, int level, int points)
/* */ {
/* 240 */ addBanPoints(session, null, null, level, points);
/* */ }
/* */
/* */ private void addBanPoints(IpSession session, String hwid, String account, int level, int points)
/* */ {
/* 245 */ session.addBanPoints(points);
/* */
/* 247 */ String toString = new StringBuilder().append("[").append(((account != null) && (account.length() > 0)) ? new StringBuilder().append("login : ").append(account).append(", ").toString() : "").append("ip : ").append(session.getIP()).append((hwid != null) ? new StringBuilder().append(", hwid : ").append(hwid).toString() : "").append("]").toString();
/* */
/* 250 */ if (level > 0)
/* */ {
/* 252 */ _log.warn(new StringBuilder().append("Client ").append(toString).append(" possible hacker [").append(level).append("], ban points : ").append(session.getBanPoints()).append(".").toString());
/* */ }
/* */ else
/* */ {
/* 256 */ _log.warn(new StringBuilder().append("Client ").append(toString).append(" is bot or old client [").append(level).append("] , ban points : ").append(session.getBanPoints()).append(".").toString());
/* */ }
/* */
/* 259 */ if (Config.LAMEGUARD_MAX_BAN_POINTS > session.getBanPoints())
/* */ return;
/* 261 */ _log.warn(new StringBuilder().append("Client ").append(toString).append(" has reached ban points limit.").toString());
/* */
/* 263 */ BanList.getInstance().addIP(session.getIP(), account, level);
/* */
/* 265 */ if (hwid != null)
/* 266 */ BanList.getInstance().addHWID(hwid, account, level);
/* */ }
/* */
/* */ private void cleanUpAwaiting()
/* */ {
/* 272 */ if (Math.abs(System.currentTimeMillis() - this.lastCleanUp) < Config.LAMEGUARD_CLEANUP_DELAY) {
/* 273 */ return;
/* */ }
/* 275 */ _log.debug("Awaiting clients clean up...");
/* */
/* 277 */ for (Iterator i$ = this.awaitingSessions.keySet().iterator(); i$.hasNext(); ) { Object client = i$.next();
/* */
/* 279 */ ClientSession clientData = (ClientSession)this.awaitingSessions.get(client);
/* */
/* 281 */ if (Math.abs(System.currentTimeMillis() - clientData.getConnectTime()) > Config.LAMEGUARD_MAX_AWAITING_DELAY)
/* */ {
/* 283 */ this.awaitingSessions.remove(client);
/* */ } }
/* */
/* */
/* 287 */ this.lastCleanUp = System.currentTimeMillis();
/* */ }
/* */ }
/* Location: C:\Documents and Settings\Admin\Рабочий стол\lameguard\lameguard-1.9.3.jar
* Qualified Name: com.lameguard.LameGuard
* JD-Core Version: 0.5.4
*/
PacketBuilder.java
/* */ package com.lameguard;
/* */
/* */ import com.lameguard.exception.LameGuardHackerException;
/* */ import com.lameguard.exception.LameGuardIncorrectDataException;
/* */ import com.lameguard.utils.Utils;
/* */ import java.util.Random;
/* */ import java.util.zip.CRC32;
/* */ import java.util.zip.Checksum;
/* */ import javax.crypto.Cipher;
/* */ import javax.crypto.spec.IvParameterSpec;
/* */ import javax.crypto.spec.SecretKeySpec;
/* */
/* */ public class PacketBuilder
/* */ {
/* 21 */ private static final Random random = new Random();
/* */
/* */ public static final void compilePacket(byte[] data, byte[] token, byte[] key) throws Exception
/* */ {
/* 25 */ random.nextBytes(data);
/* */
/* 27 */ int offset = 1;
/* */
/* 29 */ for (int i = 0; i < token.length; ++i)
/* */ {
/* 31 */ data[offset] = token[i];
/* 32 */ data[(offset + 1)] = (byte)(2 + random.nextInt(57));
/* 33 */ offset += (data[(offset + 1)] & 0xFF);
/* */ }
/* */
/* 36 */ for (int i = 0; i < key.length; ++i)
/* */ {
/* 38 */ data[offset] = key[i];
/* 39 */ data[(offset + 1)] = (byte)(2 + random.nextInt(57));
/* 40 */ offset += (data[(offset + 1)] & 0xFF);
/* */ }
/* */
/* 43 */ Checksum checksum = new CRC32();
/* 44 */ checksum.update(data, 0, offset);
/* */
/* 46 */ byte[] crc32 = Utils.intToBytes((int)checksum.getValue());
/* */
/* 48 */ for (int i = 0; i < 4; ++i)
/* */ {
/* 50 */ data[offset] = crc32[i];
/* 51 */ data[(offset + 1)] = (byte)(2 + random.nextInt(23));
/* 52 */ offset += (data[(offset + 1)] & 0xFF);
/* */ }
/* */
/* 55 */ data[(data.length - 1)] = -1;
/* */
/* 57 */ for (int i = 0; i < data.length - 1; ++i)
/* */ {
/* */ int tmp218_217 = (data.length - 1); data[tmp218_217] = (byte)(data[tmp218_217] ^ data[i]);
/* */ }
/* 60 */ IvParameterSpec ivSpec = new IvParameterSpec(Config.LAMEGUARD_SERVER_KEY.substring(0, 16).getBytes());
/* 61 */ SecretKeySpec skeySpec = new SecretKeySpec(Config.LAMEGUARD_SERVER_KEY.substring(16, 32).getBytes(), "AES");
/* */
/* 63 */ Cipher cipher = Cipher.getInstance("AES/CBC/NoPadding");
/* */
/* 65 */ cipher.init(1, skeySpec, ivSpec);
/* */
/* 67 */ byte[] encrypted = cipher.doFinal(data);
/* */
/* 69 */ System.arraycopy(encrypted, 0, data, 0, data.length);
/* */ }
/* */
/* */ public static final void decompilePacket(byte[] data, byte[] token, byte[] hwid, byte[] account, byte[] crc32) throws Exception
/* */ {
/* 74 */ IvParameterSpec ivSpec = new IvParameterSpec(Config.LAMEGUARD_CLIENT_KEY.substring(0, 16).getBytes());
/* 75 */ SecretKeySpec skeySpec = new SecretKeySpec(Config.LAMEGUARD_CLIENT_KEY.substring(16, 32).getBytes(), "AES");
/* */
/* 77 */ Cipher cipher = Cipher.getInstance("AES/CBC/NoPadding");
/* */
/* 79 */ cipher.init(2, skeySpec, ivSpec);
/* */
/* 81 */ data = cipher.doFinal(data);
/* */
/* 83 */ byte c = -1;
/* */
/* 85 */ for (int i = 0; i < data.length - 1; ++i) {
/* 86 */ c = (byte)(c ^ data[i]);
/* */ }
/* 88 */ if (c != data[(data.length - 1)]) {
/* 89 */ throw new LameGuardIncorrectDataException();
/* */ }
/* 91 */ int offset = 1;
/* */
/* 93 */ for (int i = 0; i < token.length; ++i)
/* */ {
/* 95 */ token[i] = (byte)(data[offset] ^ data[0]);
/* 96 */ offset += (data[(offset + 1)] & 0xFF);
/* */ }
/* */
/* 99 */ for (int i = 0; i < hwid.length; ++i)
/* */ {
/* 101 */ hwid[i] = (byte)(data[offset] ^ data[0]);
/* 102 */ offset += (data[(offset + 1)] & 0xFF);
/* */ }
/* */
/* 105 */ for (int i = 0; i < account.length; ++i)
/* */ {
/* 107 */ account[i] = (byte)(data[offset] ^ data[0]);
/* 108 */ offset += (data[(offset + 1)] & 0xFF);
/* */
/* 110 */ if (account[i] == 0) {
/* */ break;
/* */ }
/* */ }
/* 114 */ Checksum checksum = new CRC32();
/* 115 */ checksum.update(data, 0, offset);
/* */
/* 117 */ for (int i = 0; i < crc32.length; ++i)
/* */ {
/* 119 */ crc32[i] = (byte)(data[offset] ^ data[0]);
/* 120 */ offset += (data[(offset + 1)] & 0xFF);
/* */ }
/* */
/* 123 */ if ((Utils.bytesToInt(crc32, 0) & 0xFFFFFFFF) != checksum.getValue())
/* */ {
/* 125 */ if (Utils.bytesToInt(token, 0) == Utils.bytesToInt(crc32, 0)) {
/* 126 */ throw new LameGuardHackerException();
/* */ }
/* 128 */ throw new LameGuardIncorrectDataException();
/* */ }
/* */
/* 131 */ random.nextBytes(data);
/* */ }
/* */ }
/* Location: C:\Documents and Settings\Admin\Рабочий стол\lameguard\lameguard-1.9.3.jar
* Qualified Name: com.lameguard.PacketBuilder
* JD-Core Version: 0.5.4
*/
Защита 2008-2009 год http://depositfiles.com/files/n2vdqhgbg
Сделайте декомпил и увидите что за исходники он продает (ну и защиту наверно).
Решать вам
Сообщений: 29
Тем: 12
Зарегистрирован: May 2010
Репутация:
0
Поездун детектед
Еще и нагло врет что работал в ЛГ, потом говорит что не работал, а его друг работает, и скидывает ему обновления
Ахах) Автор полный лох) Удачи ему с декомпилами :p
Сообщений: 889
Тем: 21
Зарегистрирован: May 2010
Репутация:
12,856
Из переписки и моих доказательств ясно кто он такой.
Сообщений: 29
Тем: 12
Зарегистрирован: May 2010
Репутация:
0
Ах, кстати... Цену то он назвал 15-30$
Сообщений: 889
Тем: 21
Зарегистрирован: May 2010
Репутация:
12,856
С этим человеком всё ясно РАЗВОДИЛО.
Тему можно закрыть на этом.
Сообщений: 734
Тем: 6
Зарегистрирован: Sep 2009
Репутация:
4,302
05-25-2010, 03:53 AM
(Сообщение последний раз редактировалось: 06-30-2012, 06:34 PM Dizband.)
Цитата:Я работал раньше в ЛГ.
кк................
Сообщений: 65
Тем: 14
Зарегистрирован: Jan 2014
Репутация:
-7
глупый вопрос появился ,как защита будет логин сервер определять если регить по домену ,ведь делегирование на домен делается для сайта ,а у дедика же другой ip?объясните плиз?
Сообщений: 807
Тем: 15
Зарегистрирован: Aug 2012
Репутация:
3,891
Kluni Написал:глупый вопрос появился ,как защита будет логин сервер определять если регить по домену ,ведь делегирование на домен делается для сайта ,а у дедика же другой ip?объясните плиз? В домене указываете А записи - IP своего "дедика".
|