Page 1 of 1

[Help]I need L2jAttacker Fix

Posted: Sat Jan 30, 2010 10:02 pm
by LadyGaGaPaparazi
L2J Revision 3883:
L2JDP Revision 6988:

Hello Guys
I am working in l2j Interlude Pack and i want if you can give me an l2jattacker fix...

Thanks

Re: [Help]I need L2jAttacker Fix

Posted: Sun Jan 31, 2010 6:13 pm
by LadyGaGaPaparazi
No-One have the fix??

Re: [Help]I need L2jAttacker Fix

Posted: Sun Jan 31, 2010 6:28 pm
by Stake
Hi!
Interlude has the latest revision at 1433. What fix do you mean? :)

Re: [Help]I need L2jAttacker Fix

Posted: Sun Jan 31, 2010 6:36 pm
by LadyGaGaPaparazi
L2JAttacker is already fixed?

Re: [Help]I need L2jAttacker Fix

Posted: Mon Feb 01, 2010 7:30 am
by janiii

Re: [Help]I need L2jAttacker Fix

Posted: Mon Feb 01, 2010 5:30 pm
by Genoxide
this is for gracia final i need for interlude pls

Re: [Help]I need L2jAttacker Fix

Posted: Mon Feb 01, 2010 10:43 pm
by janiii
for interlude:
http://www.pastebin.cz/31377

Code: Select all

Index: java/net/sf/l2j/gameserver/GameServer.java===================================================================--- java/net/sf/l2j/gameserver/GameServer.java	(revision 3898)+++ java/net/sf/l2j/gameserver/GameServer.java	(working copy)@@ -59,7 +59,6 @@ import net.sf.l2j.gameserver.datatables.SummonItemsData; import net.sf.l2j.gameserver.datatables.TeleportLocationTable; import net.sf.l2j.gameserver.datatables.ZoneData;- import net.sf.l2j.gameserver.geoeditorcon.GeoEditorListener; import net.sf.l2j.gameserver.handler.AdminCommandHandler; import net.sf.l2j.gameserver.handler.ItemHandler;@@ -134,6 +133,7 @@ import net.sf.l2j.gameserver.handler.itemhandlers.Firework; import net.sf.l2j.gameserver.handler.itemhandlers.FishShots; import net.sf.l2j.gameserver.handler.itemhandlers.Harvester;+import net.sf.l2j.gameserver.handler.itemhandlers.Maps; import net.sf.l2j.gameserver.handler.itemhandlers.MercTicket; import net.sf.l2j.gameserver.handler.itemhandlers.MysteryPotion; import net.sf.l2j.gameserver.handler.itemhandlers.PaganKeys;@@ -151,7 +151,6 @@ import net.sf.l2j.gameserver.handler.itemhandlers.SpecialXMas; import net.sf.l2j.gameserver.handler.itemhandlers.SpiritShot; import net.sf.l2j.gameserver.handler.itemhandlers.SummonItems;-import net.sf.l2j.gameserver.handler.itemhandlers.Maps; import net.sf.l2j.gameserver.handler.skillhandlers.BalanceLife; import net.sf.l2j.gameserver.handler.skillhandlers.BeastFeed; import net.sf.l2j.gameserver.handler.skillhandlers.Blow;@@ -229,6 +228,7 @@ import net.sf.l2j.gameserver.util.DynamicExtension; import net.sf.l2j.gameserver.util.FloodProtector; import net.sf.l2j.status.Status;+import net.sf.l2j.util.IPv4Filter;  import com.l2jserver.mmocore.network.SelectorServerConfig; import com.l2jserver.mmocore.network.SelectorThread;@@ -660,6 +660,7 @@ 		SelectorServerConfig ssc = new SelectorServerConfig(Config.PORT_GAME); 		L2GamePacketHandler gph = new L2GamePacketHandler(); 		_selectorThread = new SelectorThread<L2GameClient>(ssc, gph, gph, gph);+		_selectorThread.setAcceptFilter(new IPv4Filter()); 		_selectorThread.openServerSocket(); 		_selectorThread.start(); 		_log.config("Maximum Numbers of Connected Players: " + Config.MAXIMUM_ONLINE_USERS);Index: java/net/sf/l2j/loginserver/SelectorHelper.java===================================================================--- java/net/sf/l2j/loginserver/SelectorHelper.java	(revision 3898)+++ java/net/sf/l2j/loginserver/SelectorHelper.java	(working copy)@@ -23,6 +23,7 @@ import java.util.concurrent.TimeUnit;  import net.sf.l2j.loginserver.serverpackets.Init;+import net.sf.l2j.util.IPv4Filter;  import com.l2jserver.mmocore.network.IAcceptFilter; import com.l2jserver.mmocore.network.IClientFactory;@@ -37,10 +38,12 @@ public class SelectorHelper implements IMMOExecutor<L2LoginClient>, IClientFactory<L2LoginClient>, IAcceptFilter { 	private ThreadPoolExecutor _generalPacketsThreadPool;+	private IPv4Filter _ipv4filter;  	public SelectorHelper() 	{ 		_generalPacketsThreadPool = new ThreadPoolExecutor(4, 6, 15L, TimeUnit.SECONDS, new LinkedBlockingQueue<Runnable>());+		_ipv4filter = new IPv4Filter(); 	}  	/**@@ -66,7 +69,7 @@ 	 */ 	public boolean accept(SocketChannel sc) 	{-		return !LoginController.getInstance().isBannedAddress(sc.socket().getInetAddress());+		return _ipv4filter.accept(sc) && !LoginController.getInstance().isBannedAddress(sc.socket().getInetAddress()); 	}  }Index: java/net/sf/l2j/util/IPv4Filter.java===================================================================--- java/net/sf/l2j/util/IPv4Filter.java	(revision 0)+++ java/net/sf/l2j/util/IPv4Filter.java	(revision 0)@@ -0,0 +1,149 @@+/*+ * This program is free software: you can redistribute it and/or modify it under+ * the terms of the GNU General Public License as published by the Free Software+ * Foundation, either version 3 of the License, or (at your option) any later+ * version.+ * + * This program is distributed in the hope that it will be useful, but WITHOUT+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS+ * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more+ * details.+ * + * You should have received a copy of the GNU General Public License along with+ * this program. If not, see <http://www.gnu.org/licenses/>.+ */++package net.sf.l2j.util;++import java.net.InetAddress;+import java.nio.channels.SocketChannel;+import java.util.ArrayList;+import java.util.HashMap;+import java.util.Map.Entry;++import com.l2jserver.mmocore.network.IAcceptFilter;++/**+ * Formatted Forsaiken's IPv4 filter [DrHouse]+ * + * @author Forsaiken+ *+ */+public class IPv4Filter implements IAcceptFilter, Runnable+{+	private HashMap<Integer, Flood> _ipFloodMap;++	private static final long SLEEP_TIME = 5000;++	public IPv4Filter()+	{+		_ipFloodMap = new HashMap<Integer, Flood>();+		Thread t = new Thread(this);+		t.setDaemon(true);+		t.start();+	}++	/**+	 * +	 * @param ip+	 * @return+	 */+	private static final int hash(byte[] ip)+	{+		return ip[0] & 0xFF | ip[1] << 8 & 0xFF00 | ip[2] << 16 & 0xFF0000+				| ip[3] << 24 & 0xFF000000;+	}++	protected static final class Flood+	{+		long lastAccess;++		int trys;++		Flood()+		{+			lastAccess = System.currentTimeMillis();+			trys = 0;+		}+	}++	public boolean accept(SocketChannel arg0)+	{+		InetAddress addr = arg0.socket().getInetAddress();+		int h = hash(addr.getAddress());++		long current = System.currentTimeMillis();+		Flood f;+		synchronized (_ipFloodMap)+		{+			f = _ipFloodMap.get(h);+		}+		if (f != null)+		{+			if (f.trys == -1)+			{+				f.lastAccess = current;+				return false;+			}++			if (f.lastAccess + 1000 > current)+			{+				f.lastAccess = current;++				if (f.trys >= 3)+				{+					f.trys = -1;+					return false;+				}++				f.trys++;+			} else+			{+				f.lastAccess = current;+			}+		} else+		{+			synchronized (_ipFloodMap)+			{+				_ipFloodMap.put(h, new Flood());+			}+		}++		return true;+	}++	public void run()+	{+		while (true)+		{+			long reference = System.currentTimeMillis() - (1000 * 300);+			ArrayList<Integer> toRemove = new ArrayList<Integer>(50);++			synchronized (_ipFloodMap)+			{+				for (Entry<Integer, Flood> e : _ipFloodMap.entrySet())+				{+					Flood f = e.getValue();+					if (f.lastAccess < reference)+						toRemove.add(e.getKey());+				}+			}++			synchronized (_ipFloodMap)+			{+				for (Integer i : toRemove)+				{+					_ipFloodMap.remove(i);+				}+			}++			try+			{+				Thread.sleep(SLEEP_TIME);+			} catch (InterruptedException e)+			{++			}+		}+	}+}\ No newline at end of file

Re: [Help]I need L2jAttacker Fix

Posted: Tue Feb 02, 2010 2:15 pm
by Genoxide
janiii wrote:for interlude:
http://www.pastebin.cz/31377

Code: Select all

Index: java/net/sf/l2j/gameserver/GameServer.java===================================================================--- java/net/sf/l2j/gameserver/GameServer.java	(revision 3898)+++ java/net/sf/l2j/gameserver/GameServer.java	(working copy)@@ -59,7 +59,6 @@ import net.sf.l2j.gameserver.datatables.SummonItemsData; import net.sf.l2j.gameserver.datatables.TeleportLocationTable; import net.sf.l2j.gameserver.datatables.ZoneData;- import net.sf.l2j.gameserver.geoeditorcon.GeoEditorListener; import net.sf.l2j.gameserver.handler.AdminCommandHandler; import net.sf.l2j.gameserver.handler.ItemHandler;@@ -134,6 +133,7 @@ import net.sf.l2j.gameserver.handler.itemhandlers.Firework; import net.sf.l2j.gameserver.handler.itemhandlers.FishShots; import net.sf.l2j.gameserver.handler.itemhandlers.Harvester;+import net.sf.l2j.gameserver.handler.itemhandlers.Maps; import net.sf.l2j.gameserver.handler.itemhandlers.MercTicket; import net.sf.l2j.gameserver.handler.itemhandlers.MysteryPotion; import net.sf.l2j.gameserver.handler.itemhandlers.PaganKeys;@@ -151,7 +151,6 @@ import net.sf.l2j.gameserver.handler.itemhandlers.SpecialXMas; import net.sf.l2j.gameserver.handler.itemhandlers.SpiritShot; import net.sf.l2j.gameserver.handler.itemhandlers.SummonItems;-import net.sf.l2j.gameserver.handler.itemhandlers.Maps; import net.sf.l2j.gameserver.handler.skillhandlers.BalanceLife; import net.sf.l2j.gameserver.handler.skillhandlers.BeastFeed; import net.sf.l2j.gameserver.handler.skillhandlers.Blow;@@ -229,6 +228,7 @@ import net.sf.l2j.gameserver.util.DynamicExtension; import net.sf.l2j.gameserver.util.FloodProtector; import net.sf.l2j.status.Status;+import net.sf.l2j.util.IPv4Filter;  import com.l2jserver.mmocore.network.SelectorServerConfig; import com.l2jserver.mmocore.network.SelectorThread;@@ -660,6 +660,7 @@ 		SelectorServerConfig ssc = new SelectorServerConfig(Config.PORT_GAME); 		L2GamePacketHandler gph = new L2GamePacketHandler(); 		_selectorThread = new SelectorThread<L2GameClient>(ssc, gph, gph, gph);+		_selectorThread.setAcceptFilter(new IPv4Filter()); 		_selectorThread.openServerSocket(); 		_selectorThread.start(); 		_log.config("Maximum Numbers of Connected Players: " + Config.MAXIMUM_ONLINE_USERS);Index: java/net/sf/l2j/loginserver/SelectorHelper.java===================================================================--- java/net/sf/l2j/loginserver/SelectorHelper.java	(revision 3898)+++ java/net/sf/l2j/loginserver/SelectorHelper.java	(working copy)@@ -23,6 +23,7 @@ import java.util.concurrent.TimeUnit;  import net.sf.l2j.loginserver.serverpackets.Init;+import net.sf.l2j.util.IPv4Filter;  import com.l2jserver.mmocore.network.IAcceptFilter; import com.l2jserver.mmocore.network.IClientFactory;@@ -37,10 +38,12 @@ public class SelectorHelper implements IMMOExecutor<L2LoginClient>, IClientFactory<L2LoginClient>, IAcceptFilter { 	private ThreadPoolExecutor _generalPacketsThreadPool;+	private IPv4Filter _ipv4filter;  	public SelectorHelper() 	{ 		_generalPacketsThreadPool = new ThreadPoolExecutor(4, 6, 15L, TimeUnit.SECONDS, new LinkedBlockingQueue<Runnable>());+		_ipv4filter = new IPv4Filter(); 	}  	/**@@ -66,7 +69,7 @@ 	 */ 	public boolean accept(SocketChannel sc) 	{-		return !LoginController.getInstance().isBannedAddress(sc.socket().getInetAddress());+		return _ipv4filter.accept(sc) && !LoginController.getInstance().isBannedAddress(sc.socket().getInetAddress()); 	}  }Index: java/net/sf/l2j/util/IPv4Filter.java===================================================================--- java/net/sf/l2j/util/IPv4Filter.java	(revision 0)+++ java/net/sf/l2j/util/IPv4Filter.java	(revision 0)@@ -0,0 +1,149 @@+/*+ * This program is free software: you can redistribute it and/or modify it under+ * the terms of the GNU General Public License as published by the Free Software+ * Foundation, either version 3 of the License, or (at your option) any later+ * version.+ * + * This program is distributed in the hope that it will be useful, but WITHOUT+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS+ * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more+ * details.+ * + * You should have received a copy of the GNU General Public License along with+ * this program. If not, see <http://www.gnu.org/licenses/>.+ */++package net.sf.l2j.util;++import java.net.InetAddress;+import java.nio.channels.SocketChannel;+import java.util.ArrayList;+import java.util.HashMap;+import java.util.Map.Entry;++import com.l2jserver.mmocore.network.IAcceptFilter;++/**+ * Formatted Forsaiken's IPv4 filter [DrHouse]+ * + * @author Forsaiken+ *+ */+public class IPv4Filter implements IAcceptFilter, Runnable+{+	private HashMap<Integer, Flood> _ipFloodMap;++	private static final long SLEEP_TIME = 5000;++	public IPv4Filter()+	{+		_ipFloodMap = new HashMap<Integer, Flood>();+		Thread t = new Thread(this);+		t.setDaemon(true);+		t.start();+	}++	/**+	 * +	 * @param ip+	 * @return+	 */+	private static final int hash(byte[] ip)+	{+		return ip[0] & 0xFF | ip[1] << 8 & 0xFF00 | ip[2] << 16 & 0xFF0000+				| ip[3] << 24 & 0xFF000000;+	}++	protected static final class Flood+	{+		long lastAccess;++		int trys;++		Flood()+		{+			lastAccess = System.currentTimeMillis();+			trys = 0;+		}+	}++	public boolean accept(SocketChannel arg0)+	{+		InetAddress addr = arg0.socket().getInetAddress();+		int h = hash(addr.getAddress());++		long current = System.currentTimeMillis();+		Flood f;+		synchronized (_ipFloodMap)+		{+			f = _ipFloodMap.get(h);+		}+		if (f != null)+		{+			if (f.trys == -1)+			{+				f.lastAccess = current;+				return false;+			}++			if (f.lastAccess + 1000 > current)+			{+				f.lastAccess = current;++				if (f.trys >= 3)+				{+					f.trys = -1;+					return false;+				}++				f.trys++;+			} else+			{+				f.lastAccess = current;+			}+		} else+		{+			synchronized (_ipFloodMap)+			{+				_ipFloodMap.put(h, new Flood());+			}+		}++		return true;+	}++	public void run()+	{+		while (true)+		{+			long reference = System.currentTimeMillis() - (1000 * 300);+			ArrayList<Integer> toRemove = new ArrayList<Integer>(50);++			synchronized (_ipFloodMap)+			{+				for (Entry<Integer, Flood> e : _ipFloodMap.entrySet())+				{+					Flood f = e.getValue();+					if (f.lastAccess < reference)+						toRemove.add(e.getKey());+				}+			}++			synchronized (_ipFloodMap)+			{+				for (Integer i : toRemove)+				{+					_ipFloodMap.remove(i);+				}+			}++			try+			{+				Thread.sleep(SLEEP_TIME);+			} catch (InterruptedException e)+			{++			}+		}+	}+}\ No newline at end of file
just added this but when i can still attack 127.0.0.1 7777 like before :(

Re: [Help]I need L2jAttacker Fix

Posted: Tue Feb 02, 2010 2:41 pm
by janiii
you asked for the java code that fixed l2jattacker vulnerability. i gave it to you, extra made the interlude patch only for you. if it doesn't work for you, i can't help you any more, sry.

Re: [Help]I need L2jAttacker Fix

Posted: Tue Feb 02, 2010 3:30 pm
by Genoxide
janiii wrote:you asked for the java code that fixed l2jattacker vulnerability. i gave it to you, extra made the interlude patch only for you. if it doesn't work for you, i can't help you any more, sry.
i have the server at my pc but if i attack from my pc i lag in 3 seconds i tried from other pc and i didnt laged at all... maybe cause its the same pc?

Re: [Help]I need L2jAttacker Fix

Posted: Tue Feb 02, 2010 3:44 pm
by janiii
l2jattacker needs much resources. you probably dont understand what it does and when it is successfull in flooding your server and when not.

if you start it and it shows a high connected number but no disconnected and no killer errors, then has not yet crashed the server.
when you see the killer error number is getting higher, it means the gameserver is already dead. if this happens from the start of the l2jkiller, then you are protected because the connections from it get dropped straight away. if it happens after a while, it means your gameserver crashed because of the flood.

Re: [Help]I need L2jAttacker Fix

Posted: Tue Feb 02, 2010 4:14 pm
by Stake
Genoxide wrote:
janiii wrote:you asked for the java code that fixed l2jattacker vulnerability. i gave it to you, extra made the interlude patch only for you. if it doesn't work for you, i can't help you any more, sry.
i have the server at my pc but if i attack from my pc i lag in 3 seconds i tried from other pc and i didnt laged at all... maybe cause its the same pc?
getInetAddress() is just for external connections, not for localhost. You can get localhost by using getLocalAddress() instead of getInetAddress(). So if getInetAddress() returns null, then use getLocalAddress().

Re: [Help]I need L2jAttacker Fix

Posted: Wed Feb 03, 2010 3:08 pm
by Genoxide
Stake wrote:
Genoxide wrote:
janiii wrote:you asked for the java code that fixed l2jattacker vulnerability. i gave it to you, extra made the interlude patch only for you. if it doesn't work for you, i can't help you any more, sry.
i have the server at my pc but if i attack from my pc i lag in 3 seconds i tried from other pc and i didnt laged at all... maybe cause its the same pc?
getInetAddress() is just for external connections, not for localhost. You can get localhost by using getLocalAddress() instead of getInetAddress(). So if getInetAddress() returns null, then use getLocalAddress().
so its fixed? when they attack me i still see the digits in gs but i dont lag btw thx to janiii that she made this

Re: [Help]I need L2jAttacker Fix

Posted: Sat Mar 13, 2010 11:54 pm
by Cobra
Yes is fixed... you use it on your local Computer and the l2jatacker using a lot of your cpu usage so is logical you have lag.

And as you see the source code is only for the external ip ;] not local .

What admin atack hes server? you? xD