[Help]I need L2jAttacker Fix

Find the proper support area, Saga-Version.
Forum rules
READ NOW: L2j Forums Rules of Conduct
Post Reply
LadyGaGaPaparazi
Posts: 12
Joined: Tue Jan 05, 2010 6:45 pm

[Help]I need L2jAttacker Fix

Post 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
LadyGaGaPaparazi
Posts: 12
Joined: Tue Jan 05, 2010 6:45 pm

Re: [Help]I need L2jAttacker Fix

Post by LadyGaGaPaparazi »

No-One have the fix??
User avatar
Stake
Posts: 383
Joined: Sun Mar 23, 2008 9:33 pm
Location: Hungary
Contact:

Re: [Help]I need L2jAttacker Fix

Post by Stake »

Hi!
Interlude has the latest revision at 1433. What fix do you mean? :)
Image
Image
LadyGaGaPaparazi
Posts: 12
Joined: Tue Jan 05, 2010 6:45 pm

Re: [Help]I need L2jAttacker Fix

Post by LadyGaGaPaparazi »

L2JAttacker is already fixed?
User avatar
janiii
L2j Veteran
L2j Veteran
Posts: 4269
Joined: Wed May 28, 2008 3:15 pm
Location: Slovakia

Re: [Help]I need L2jAttacker Fix

Post by janiii »

DO NOT EVEN TRY TO MESS WITH ME!
forum flOOder dancing dEVILoper
I don't give private support - PM will be ignored!
Genoxide
Posts: 22
Joined: Sun Jan 31, 2010 3:15 pm

Re: [Help]I need L2jAttacker Fix

Post by Genoxide »

this is for gracia final i need for interlude pls
User avatar
janiii
L2j Veteran
L2j Veteran
Posts: 4269
Joined: Wed May 28, 2008 3:15 pm
Location: Slovakia

Re: [Help]I need L2jAttacker Fix

Post 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
DO NOT EVEN TRY TO MESS WITH ME!
forum flOOder dancing dEVILoper
I don't give private support - PM will be ignored!
Genoxide
Posts: 22
Joined: Sun Jan 31, 2010 3:15 pm

Re: [Help]I need L2jAttacker Fix

Post 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 :(
User avatar
janiii
L2j Veteran
L2j Veteran
Posts: 4269
Joined: Wed May 28, 2008 3:15 pm
Location: Slovakia

Re: [Help]I need L2jAttacker Fix

Post 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.
DO NOT EVEN TRY TO MESS WITH ME!
forum flOOder dancing dEVILoper
I don't give private support - PM will be ignored!
Genoxide
Posts: 22
Joined: Sun Jan 31, 2010 3:15 pm

Re: [Help]I need L2jAttacker Fix

Post 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?
User avatar
janiii
L2j Veteran
L2j Veteran
Posts: 4269
Joined: Wed May 28, 2008 3:15 pm
Location: Slovakia

Re: [Help]I need L2jAttacker Fix

Post 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.
DO NOT EVEN TRY TO MESS WITH ME!
forum flOOder dancing dEVILoper
I don't give private support - PM will be ignored!
User avatar
Stake
Posts: 383
Joined: Sun Mar 23, 2008 9:33 pm
Location: Hungary
Contact:

Re: [Help]I need L2jAttacker Fix

Post 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().
Image
Image
Genoxide
Posts: 22
Joined: Sun Jan 31, 2010 3:15 pm

Re: [Help]I need L2jAttacker Fix

Post 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
User avatar
Cobra
Posts: 18
Joined: Thu Sep 11, 2008 4:46 pm

Re: [Help]I need L2jAttacker Fix

Post 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
Image
Post Reply