--- /dev/null
+#
+# Copyright (C) 2009 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=thc-ipv6
+PKG_VERSION:=0.7
+PKG_REVISION:=1
+
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_SOURCE_URL:=http://freeworld.thc.org/releases/
+PKG_MD5SUM:=01715cfa7f5d4a53fe8f142a10c38c78
+
+include $(INCLUDE_DIR)/package.mk
+
+define Package/thc-ipv6/Default
+ SECTION:=ipv6
+ CATEGORY:=IPv6
+ DEPENDS:=+libpcap
+ URL:=http://freeworld.thc.org/
+endef
+
+define Build/Compile
+ $(MAKE) -C $(PKG_BUILD_DIR) \
+ CC="$(TARGET_CC)" \
+ OPT="$(TARGET_CFLAGS) -L$(STAGING_DIR)/usr/lib -I$(PKG_BUILD_DIR) -I$(STAGING_DIR)/usr/include" all
+endef
+
+
+define BuildTool
+
+ PKG_CONFIG_DEPENDS+=CONFIG_PACKAGE_$(1)
+
+ define Package/$(1)
+ $$(call Package/thc-ipv6/Default)
+ TITLE:=$(2)
+ SUBMENU:=IPv6 attack and analyzing toolset (thc-ipv6)
+ endef
+
+ define Package/$(1)/description
+ $(3)
+ endef
+
+ define Package/$(1)/install
+ $(INSTALL_DIR) $$(1)/usr/sbin
+ $(INSTALL_BIN) $(PKG_BUILD_DIR)/$(1) $$(1)/usr/sbin/$(1)
+ endef
+
+ $$(eval $$(call BuildPackage,$(1)))
+
+endef
+
+
+#$(eval $(call BuildTool,NAME,TITLE,DESCRIPTION))
+$(eval $(call BuildTool,parasite6,\"ARP spoofer\" for IPv6,Provides false answers to Neighbor Solitication requests))
+$(eval $(call BuildTool,dos-new-ip6,DAD spoofer,Prevents new IPv6 interfaces to come up by spoofing DAD))
+$(eval $(call BuildTool,detect-new-ip6,Host detector,Detects new IPv6 addresses joining the network))
+$(eval $(call BuildTool,fake_router6,Router spoofer,Send Router Advertisements and try to become the default router))
+$(eval $(call BuildTool,fake_advertise6,RA spoofer,Advertise arbitary IPv6 addresses))
+$(eval $(call BuildTool,fake_mld6,Multicast membership spoofer,Advertise local host in arbitary multicast groups))
+$(eval $(call BuildTool,fake_mipv6,MIPv6 update spoofer,Spoof MIPv6 updates to redirect packets directed at the home-address))
+$(eval $(call BuildTool,redir6,Route injector,Inject IPv6 routes to redirect traffic to other routers))
+$(eval $(call BuildTool,smurf6,Local smurfer,Smurf the target or all-nodes multicast group with ICMPv6 echo replies))
+$(eval $(call BuildTool,alive6,Host presence scanner,Find active IPv6 hosts in the network segment))
+$(eval $(call BuildTool,toobig6,MTU injector,Inject MTU values in a IPv6 host))
+$(eval $(call BuildTool,rsmurf6,Remote smurfer,Smurf the local network of a target host by exploiting Linux implementation errors))
--- /dev/null
+--- a/Makefile
++++ b/Makefile
+@@ -1,8 +1,8 @@
+ CC=gcc
+ #OPT=-Wall -ggdb
+-OPT=-O2
+-LIB=-lpcap -lssl -lcrypto
+-PROGRAM=parasite6 dos-new-ip6 detect-new-ip6 fake_router6 fake_advertise6 fake_mld6 fake_mipv6 redir6 smurf6 alive6 toobig6 rsmurf6 test_implementation6 sendpees6
++OPT=-O2 $(if $(USE_SSL),-DUSE_SSL,)
++LIB=-lpcap $(if $(USE_SSL),-lssl -lcrypto,)
++PROGRAM=parasite6 dos-new-ip6 detect-new-ip6 fake_router6 fake_advertise6 fake_mld6 fake_mipv6 redir6 smurf6 alive6 toobig6 rsmurf6 test_implementation6 $(if $(USE_SSL),sendpees6,)
+
+ all: thc-ipv6-lib.o $(PROGRAM)
+
+--- a/thc-ipv6-lib.c
++++ b/thc-ipv6-lib.c
+@@ -37,8 +37,10 @@
+ #include <pcap.h>
+ #include "thc-ipv6.h"
+ /* libssl */
++#ifdef USE_SSL
+ #include <openssl/evp.h>
+ #include <openssl/sha.h>
++#endif
+
+
+
+@@ -1507,7 +1509,7 @@
+ * 2006/07
+ */
+
+-
++#ifdef USE_SSL
+ thc_key_t *thc_generate_key(int key_len)
+ {
+ thc_key_t *key;
+@@ -1598,6 +1600,7 @@
+
+ return cga_hdr;
+ }
++#endif
+
+ thc_timestamp_hdr *generate_timestamp(void)
+ {
+@@ -1632,6 +1635,7 @@
+ return nonce;
+ }
+
++#ifdef USE_SSL
+ thc_rsa_hdr *thc_generate_rsa(char *data2sign, int data2sign_len, thc_cga_hdr *cga_hdr, thc_key_t *key)
+ {
+ thc_rsa_hdr *rsa_hdr;
+@@ -1827,3 +1831,4 @@
+
+ return 0;
+ }
++#endif
+--- a/thc-ipv6.h
++++ b/thc-ipv6.h
+@@ -10,7 +10,9 @@
+ #define _THC_IPV6_H
+
+ #include <pcap.h>
++#ifdef USE_SSL
+ #include <openssl/rsa.h>
++#endif
+
+ #define VERSION "v0.7"
+ #define AUTHOR "van Hauser / THC <vh@thc.org>"
+@@ -228,10 +230,12 @@
+ char *pad;
+ } thc_rsa_hdr;
+
++#ifdef USE_SSL
+ typedef struct {
+ RSA *rsa;
+ int len;
+ } thc_key_t;
++#endif
+
+ typedef struct {
+ unsigned char *data;
+@@ -239,8 +243,10 @@
+ int len;
+ } opt_t;
+
++#ifdef USE_SSL
+ extern thc_key_t *thc_generate_key(int key_len);
+ extern thc_cga_hdr *thc_generate_cga(unsigned char *prefix, thc_key_t *key, unsigned char **cga);
++#endif
+
+ #endif
+