Portál AbcLinuxu, 5. května 2025 10:47

Dotaz: ipt-sysrq - jde vůbec zkompilovat?

14.7.2007 01:10 Jiří J. | skóre: 34 | blog: Poutník | Brno
ipt-sysrq - jde vůbec zkompilovat?
Přečteno: 700×
Odpovědět | Admin
Podle podnětu tohoto threadu jsem se vydal stahovat a kompilovat zmíněný nástroj.. teď, po třech dnech nejsem o mnoho chytřejší a Google také ne. Zkoušel jsem kernely 2.6.17.13, 2.6.17.14 a teď i 2.6.21.5, zkusil jsem jak hlavičkové soubory z nejnovějšího iptables, tak i iptables-1.3.6 (v době psaní ipt-sysrq verze 0.5 s ní asi autor pracoval, google také vyhodil "[Bug 566] ipt_register_target is now xt_register_target", proto jsem použil raději tu starší verzi), GCC jsem zkusil jak trojkovou, tak i čtyřkovou verzi, prostě za boha nejsem schopen to zkompilovat.
Výpis:
# make
make[1]: Entering directory `/root/ipt-sysrq-0.5/src'
ln -s Makefile-2.6 Makefile
make -C /lib/modules/`uname -r`/build SUBDIRS=/root/ipt-sysrq-0.5/src modules
make[2]: Entering directory `/usr/src/linux-2.6.21.5'
  CC [M]  /root/ipt-sysrq-0.5/src/ipt_SYSRQ-module.o
/root/ipt-sysrq-0.5/src/ipt_SYSRQ-module.c: In function 'target_do':
/root/ipt-sysrq-0.5/src/ipt_SYSRQ-module.c:44: error: too many arguments to function 'handle_sysrq'
/root/ipt-sysrq-0.5/src/ipt_SYSRQ-module.c: At top level:
/root/ipt-sysrq-0.5/src/ipt_SYSRQ-module.c:112: warning: initialization from incompatible pointer type
/root/ipt-sysrq-0.5/src/ipt_SYSRQ-module.c:113: warning: initialization from incompatible pointer type
/root/ipt-sysrq-0.5/src/ipt_SYSRQ-module.c: In function 'init':
/root/ipt-sysrq-0.5/src/ipt_SYSRQ-module.c:123: warning: implicit declaration of function 'ipt_register_target'
/root/ipt-sysrq-0.5/src/ipt_SYSRQ-module.c: In function 'fini':
/root/ipt-sysrq-0.5/src/ipt_SYSRQ-module.c:131: warning: implicit declaration of function 'ipt_unregister_target'
make[3]: *** [/root/ipt-sysrq-0.5/src/ipt_SYSRQ-module.o] Error 1
make[2]: *** [_module_/root/ipt-sysrq-0.5/src] Error 2
make[2]: Leaving directory `/usr/src/linux-2.6.21.5'
make[1]: *** [ipt_SYSRQ.ko] Error 2
make[1]: Leaving directory `/root/ipt-sysrq-0.5/src'
make: *** [all] Error 2
Všechny hlavičkové soubory, které vyžaduje ipt_SYSRQ-module.c jsou tam, kde mají být (zkusil jsem i starší, i nové), zdrojáky jádra v /usr/src/linux (symlink) také mám.

Podařilo se to někomu z vás někdy zkompilovat? Pokud ano, za jakých okolností...
Díky.

PS: Myslím, že má patička tady platí dvojnásob..
Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

michich avatar 14.7.2007 01:36 michich | skóre: 51 | blog: ohrivane_parky
Rozbalit Rozbalit vše Re: ipt-sysrq - jde vůbec zkompilovat?
Odpovědět | | Sbalit | Link | Blokovat | Admin
Je to pro nějakou starou verzi Linuxu. Upravit to na novou není těžké. Tady už to udělal Jan Engelhardt: http://patchwork.netfilter.org/netfilter-devel/patch.pl?id=317
14.7.2007 02:08 Jiří J. | skóre: 34 | blog: Poutník | Brno
Rozbalit Rozbalit vše Re: ipt-sysrq - jde vůbec zkompilovat?
To je výstup z diffu předpokládám, no, jdu přepisovat :-)
michich avatar 14.7.2007 14:50 michich | skóre: 51 | blog: ohrivane_parky
Rozbalit Rozbalit vše Re: ipt-sysrq - jde vůbec zkompilovat?
Přepisování nemělo být třeba. Na aplikování diffů máme patch(1).
14.7.2007 14:51 Jiří J. | skóre: 34 | blog: Poutník | Brno
Rozbalit Rozbalit vše Re: ipt-sysrq - jde vůbec zkompilovat?
Na to už jsem také přišel :-D ...teď mě ale trápí jiný problém..
14.7.2007 03:32 Jiří J. | skóre: 34 | blog: Poutník | Brno
Rozbalit Rozbalit vše Re: ipt-sysrq - jde vůbec zkompilovat?
Odpovědět | | Sbalit | Link | Blokovat | Admin
Tak jsem si s tím trochu pohrál, ten patch tam zavádí přejmenované hlavičkové soubory, udělal jsem nejdřív jejich kopie se změněným jménem, pomohlo a modul je funkční. Funkční je asi i knihovna pro SYSRQ target do iptables. Co ale zřejmě nejde je send_sysrq, vyhodí kompilační error. Tak jsem zkusil jinou cestu - překopal jsem pořádný kus Makefile a "updatoval" v něm jména těch nově přejmenovaných .h a .c souborů i s příslušnými .o výstupy.. error však přetrval.
Zde je celý výpis kompilace:
# make
make[1]: Entering directory `/root/ipt-sysrq-0.5/src'
ln -s Makefile-2.6 Makefile
make -C /lib/modules/`uname -r`/build SUBDIRS=/root/ipt-sysrq-0.5/src modules
make[2]: Entering directory `/usr/src/linux-2.6.21.5'
  CC [M]  /root/ipt-sysrq-0.5/src/ipt_SYSRQ-module.o
  LD [M]  /root/ipt-sysrq-0.5/src/ipt_SYSRQ.o
  Building modules, stage 2.
  MODPOST 1 modules
  CC      /root/ipt-sysrq-0.5/src/ipt_SYSRQ.mod.o
  LD [M]  /root/ipt-sysrq-0.5/src/ipt_SYSRQ.ko
make[2]: Leaving directory `/usr/src/linux-2.6.21.5'
gcc -Wall -DNETFILTER_VERSION=\""`PATH="$PATH":/sbin:/usr/sbin:/usr/local/sbin iptables --version | sed -e 's/^[^0-9]*//'`"\" -c libipt_SYSRQ.c -o libipt_SYSRQ.o
ld -shared -o libipt_SYSRQ.so libipt_SYSRQ.o
gcc -Wall -O3 -o ipt_sysrq_sha1.o -c ipt_sysrq_sha1.c
In file included from rsysrq.h:8,
                 from ipt_sysrq_sha1.c:27:
/usr/include/sys/types.h:62: error: conflicting types for 'dev_t'
/usr/include/linux/types.h:22: error: previous declaration of 'dev_t' was here
/usr/include/sys/types.h:67: error: conflicting types for 'gid_t'
/usr/include/linux/types.h:54: error: previous declaration of 'gid_t' was here
/usr/include/sys/types.h:72: error: conflicting types for 'mode_t'
/usr/include/linux/types.h:24: error: previous declaration of 'mode_t' was here
/usr/include/sys/types.h:77: error: conflicting types for 'nlink_t'
/usr/include/linux/types.h:25: error: previous declaration of 'nlink_t' was here
/usr/include/sys/types.h:82: error: conflicting types for 'uid_t'
/usr/include/linux/types.h:53: error: previous declaration of 'uid_t' was here
In file included from /usr/include/sys/types.h:133,
                 from rsysrq.h:8,
                 from ipt_sysrq_sha1.c:27:
/usr/include/time.h:105: error: conflicting types for 'timer_t'
/usr/include/linux/types.h:31: error: previous declaration of 'timer_t' was here
In file included from /usr/include/sys/types.h:220,
                 from rsysrq.h:8,
                 from ipt_sysrq_sha1.c:27:
/usr/include/sys/select.h:78: error: conflicting types for 'fd_set'
/usr/include/linux/types.h:21: error: previous declaration of 'fd_set' was here
In file included from rsysrq.h:8,
                 from ipt_sysrq_sha1.c:27:
/usr/include/sys/types.h:235: error: conflicting types for 'blkcnt_t'
/usr/include/linux/types.h:152: error: previous declaration of 'blkcnt_t' was here
make[1]: *** [ipt_sysrq_sha1.o] Error 1
make[1]: Leaving directory `/root/ipt-sysrq-0.5/src'
make: *** [all] Error 2
root@server1:~/ipt-sysrq-0.5# make clean
make[1]: Entering directory `/root/ipt-sysrq-0.5/src'
rm -f *.ko *.o *.mod.c .*o.cmd *.so send_sysrq Makefile
rm -rf .tmp_versions
make[1]: Leaving directory `/root/ipt-sysrq-0.5/src'
root@server1:~/ipt-sysrq-0.5# make
make[1]: Entering directory `/root/ipt-sysrq-0.5/src'
ln -s Makefile-2.6 Makefile
make -C /lib/modules/`uname -r`/build SUBDIRS=/root/ipt-sysrq-0.5/src modules
make[2]: Entering directory `/usr/src/linux-2.6.21.5'
  CC [M]  /root/ipt-sysrq-0.5/src/ipt_SYSRQ-module.o
  LD [M]  /root/ipt-sysrq-0.5/src/ipt_SYSRQ.o
  Building modules, stage 2.
  MODPOST 1 modules
  CC      /root/ipt-sysrq-0.5/src/ipt_SYSRQ.mod.o
  LD [M]  /root/ipt-sysrq-0.5/src/ipt_SYSRQ.ko
make[2]: Leaving directory `/usr/src/linux-2.6.21.5'
gcc -Wall -DNETFILTER_VERSION=\""`PATH="$PATH":/sbin:/usr/sbin:/usr/local/sbin iptables --version | sed -e 's/^[^0-9]*//'`"\" -c libipt_SYSRQ.c -o libipt_SYSRQ.o
ld -shared -o libipt_SYSRQ.so libipt_SYSRQ.o
gcc -Wall -O3 -o ipt_sysrq_sha1.o -c ipt_sysrq_sha1.c
In file included from rsysrq.h:8,
                 from ipt_sysrq_sha1.c:27:
/usr/include/sys/types.h:62: error: conflicting types for 'dev_t'
/usr/include/linux/types.h:22: error: previous declaration of 'dev_t' was here
/usr/include/sys/types.h:67: error: conflicting types for 'gid_t'
/usr/include/linux/types.h:54: error: previous declaration of 'gid_t' was here
/usr/include/sys/types.h:72: error: conflicting types for 'mode_t'
/usr/include/linux/types.h:24: error: previous declaration of 'mode_t' was here
/usr/include/sys/types.h:77: error: conflicting types for 'nlink_t'
/usr/include/linux/types.h:25: error: previous declaration of 'nlink_t' was here
/usr/include/sys/types.h:82: error: conflicting types for 'uid_t'
/usr/include/linux/types.h:53: error: previous declaration of 'uid_t' was here
In file included from /usr/include/sys/types.h:133,
                 from rsysrq.h:8,
                 from ipt_sysrq_sha1.c:27:
/usr/include/time.h:105: error: conflicting types for 'timer_t'
/usr/include/linux/types.h:31: error: previous declaration of 'timer_t' was here
In file included from /usr/include/sys/types.h:220,
                 from rsysrq.h:8,
                 from ipt_sysrq_sha1.c:27:
/usr/include/sys/select.h:78: error: conflicting types for 'fd_set'
/usr/include/linux/types.h:21: error: previous declaration of 'fd_set' was here
In file included from rsysrq.h:8,
                 from ipt_sysrq_sha1.c:27:
/usr/include/sys/types.h:235: error: conflicting types for 'blkcnt_t'
/usr/include/linux/types.h:152: error: previous declaration of 'blkcnt_t' was here
make[1]: *** [ipt_sysrq_sha1.o] Error 1
make[1]: Leaving directory `/root/ipt-sysrq-0.5/src'
make: *** [all] Error 2
Asi bude něco špatně s types.h .. žeby moc nový? Netuším. Připomíná mi to kruhové závislosti v Gentoo Portage. Nějaké další nápady?
Patch jsem aplikoval na ipt_SYSRQ-module.c, původní diff je však zřejmě z ipt_SYSRQ.c ve zdrojácích jádra toho, kdo to diffoval (linux-2.6.21-rc5/net/ipv4/netfilter/ipt_SYSRQ.c).. je snad chyba tu?
michich avatar 14.7.2007 14:58 michich | skóre: 51 | blog: ohrivane_parky
Rozbalit Rozbalit vše Re: ipt-sysrq - jde vůbec zkompilovat?
make -C /lib/modules/`uname -r`/build SUBDIRS=/root/ipt-sysrq-0.5/src modules
make[2]: Entering directory `/usr/src/linux-2.6.21.5'
  CC [M]  /root/ipt-sysrq-0.5/src/ipt_SYSRQ-module.o
  LD [M]  /root/ipt-sysrq-0.5/src/ipt_SYSRQ.o
  Building modules, stage 2.
  MODPOST 1 modules
  CC      /root/ipt-sysrq-0.5/src/ipt_SYSRQ.mod.o
  LD [M]  /root/ipt-sysrq-0.5/src/ipt_SYSRQ.ko
make[2]: Leaving directory `/usr/src/linux-2.6.21.5'
Modul už se přeložil úspěšně. Dále se překládá userspace část:
In file included from rsysrq.h:8,
                 from ipt_sysrq_sha1.c:27:
/usr/include/sys/types.h:62: error: conflicting types for 'dev_t'
/usr/include/linux/types.h:22: error: previous declaration of 'dev_t' was here
Zkus tohle:
--- ipt-sysrq-0.5/src/rsysrq.h.orig	2007-07-14 14:54:39.000000000 +0200
+++ ipt-sysrq-0.5/src/rsysrq.h	2007-07-14 14:56:05.000000000 +0200
@@ -5,11 +5,11 @@
 #include <asm/byteorder.h>
 
 #ifndef __KERNEL__
-#include <sys/types.h>
+#include <linux/types.h>
 
-typedef __uint8_t	u8;
-typedef __uint32_t	u32;
-typedef __uint64_t	u64;
+typedef uint8_t	u8;
+typedef uint32_t	u32;
+typedef uint64_t	u64;
 
 #if __BYTE_ORDER == __LITTLE_ENDIAN
 #define	be32_to_cpu(x)	__swab32((x))
14.7.2007 15:10 Jiří J. | skóre: 34 | blog: Poutník | Brno
Rozbalit Rozbalit vše Re: ipt-sysrq - jde vůbec zkompilovat?
patch mi vyhodil error, zapsal něco do rsysrq.h.rej, ale pak jsem se s tím netrápil a provedl tuhle jednoduchou úpravu ručně..
# make
make[1]: Entering directory `/root/ipt-sysrq-0.5/src'
ln -s Makefile-2.6 Makefile
make -C /lib/modules/`uname -r`/build SUBDIRS=/root/ipt-sysrq-0.5/src modules
make[2]: Entering directory `/usr/src/linux-2.6.21.5'
  CC [M]  /root/ipt-sysrq-0.5/src/ipt_SYSRQ-module.o
  LD [M]  /root/ipt-sysrq-0.5/src/ipt_SYSRQ.o
  Building modules, stage 2.
  MODPOST 1 modules
  CC      /root/ipt-sysrq-0.5/src/ipt_SYSRQ.mod.o
  LD [M]  /root/ipt-sysrq-0.5/src/ipt_SYSRQ.ko
make[2]: Leaving directory `/usr/src/linux-2.6.21.5'
gcc -Wall -DNETFILTER_VERSION=\""`PATH="$PATH":/sbin:/usr/sbin:/usr/local/sbin iptables --version | sed -e 's/^[^0-9]*//'`"\" -c libipt_SYSRQ.c -o libipt_SYSRQ.o
ld -shared -o libipt_SYSRQ.so libipt_SYSRQ.o
gcc -Wall -O3 -o ipt_sysrq_sha1.o -c ipt_sysrq_sha1.c
gcc -Wall -O3 -o ipt_sysrq_protocol.o -c ipt_sysrq_protocol.c
ipt_sysrq_protocol.c: In function 'rsysrq_crypt':
ipt_sysrq_protocol.c:10: warning: pointer targets in passing argument 1 of 'strlen' differ in signedness
gcc -Wall -o send_sysrq send_sysrq.c ipt_sysrq_sha1.o ipt_sysrq_protocol.o
send_sysrq.c: In function 'send_udp':
send_sysrq.c:32: warning: pointer targets in passing argument 3 of 'rsysrq_create' differ in signedness
make[1]: Leaving directory `/root/ipt-sysrq-0.5/src'
Ale zkompiluje se to a send_sysrq spustitelný je (tedy alespoň help vyhodí). Přesto bych rád přišel na kloub těm warningům, pokud mají klíčovou roli..
michich avatar 14.7.2007 15:26 michich | skóre: 51 | blog: ohrivane_parky
Rozbalit Rozbalit vše Re: ipt-sysrq - jde vůbec zkompilovat?
Tyhle dva warningy by neměly mít na nic vliv.
14.7.2007 15:30 Jiří J. | skóre: 34 | blog: Poutník | Brno
Rozbalit Rozbalit vše Re: ipt-sysrq - jde vůbec zkompilovat?
send_sysrq zdá se funguje, alespoň se tak tváří i v etherealu, zkusil jsem nainstalovat modul do /lib/modules/2.6.21.5/kernel/net/ipv4/netfilter/ipt_SYSRQ.ko a depmod -a, modprobe jde, ale iptables jej nemůže načíst... /usr/lib/iptables/libipt_SYSRQ.so mám také nakopírovaný a má executable bit.
# iptables -A INPUT -p udp --dport 9 -j SYSRQ
iptables v1.3.8: Couldn't load target `SYSRQ'

Try `iptables -h' or 'iptables --help' for more information.
michich avatar 14.7.2007 17:52 michich | skóre: 51 | blog: ohrivane_parky
Rozbalit Rozbalit vše Re: ipt-sysrq - jde vůbec zkompilovat?
Vskutku. Tak ještě uprav Makefile:
--- ipt-sysrq-0.5/src/Makefile-2.6.orig	2007-07-14 17:50:13.000000000 +0200
+++ ipt-sysrq-0.5/src/Makefile-2.6	2007-07-14 17:48:35.000000000 +0200
@@ -39,11 +39,8 @@ Makefile:
 ipt_SYSRQ.ko:	Makefile ipt_SYSRQ-module.c sha1.c rsysrq_protocol.c
 	$(MAKE) -C $(KERNEL_SOURCES) SUBDIRS=$(PWD) modules
 
-libipt_SYSRQ.o:	libipt_SYSRQ.c
-	gcc -Wall -DNETFILTER_VERSION=\""$(IPTVERSION)"\" -c $< -o $@
-
-libipt_SYSRQ.so:	libipt_SYSRQ.o
-	ld -shared -o $@ $<
+libipt_SYSRQ.so: libipt_SYSRQ.c
+	gcc -fpic -shared -Wall -DNETFILTER_VERSION=\""$(IPTVERSION)"\" -o $@ $<
 
 %.o:	%.c
 	gcc -Wall -O3 -o $@ -c $<
Udělej make clean, než to znovu buildneš.
14.7.2007 18:18 Jiří J. | skóre: 34 | blog: Poutník | Brno
Rozbalit Rozbalit vše Re: ipt-sysrq - jde vůbec zkompilovat?
Díky, tohle funguje, iptables to loadne, jenomže nastal problém, kterého jsem se obával - nic to nekoná. Zatím zkouším posílat jen na loopback, pravidlo iptables -I INPUT -p udp --dport 9 -j SYSRQ by to mělo zachytávat, sysrq je v jádře, zapnuté také je (z klávesnice funguje), ale přes send_sysrq si můžu posílat co chci, nic to nedělá..
Později to zkusím přes síť, z jiného stroje.
14.7.2007 19:51 Jiří J. | skóre: 34 | blog: Poutník | Brno
Rozbalit Rozbalit vše Re: ipt-sysrq - jde vůbec zkompilovat?
Ne, tak ani přes síť to nejde. Připadne mi, že je něco špatně s hashováním/ověřováním hashe hesla... i prázdného.
Ještě něco bych měl zkusit?
michich avatar 14.7.2007 20:02 michich | skóre: 51 | blog: ohrivane_parky
Rozbalit Rozbalit vše Re: ipt-sysrq - jde vůbec zkompilovat?
Jsou v dmesg aspoň nějaké hlášky "NETSYSRQ: ..." ?
14.7.2007 20:28 Jiří J. | skóre: 34 | blog: Poutník | Brno
Rozbalit Rozbalit vše Re: ipt-sysrq - jde vůbec zkompilovat?
Ani /var/log/* , ani dmesg nic nehlásí ..
14.7.2007 17:33 Jiří J. | skóre: 34 | blog: Poutník | Brno
Rozbalit Rozbalit vše Re: ipt-sysrq - jde vůbec zkompilovat?
Zkusil jsem použít header files i z iptables-1.3.6, vyměnil jsem kernel headers, zkontroloval, zda je vše tam, kde má být, problém je pořád stejný - iptables mi to jako target nenačte. Je možné, že to bude fungovat na iptables-1.3.6 ?
michich avatar 14.7.2007 22:39 michich | skóre: 51 | blog: ohrivane_parky
Rozbalit Rozbalit vše Re: ipt-sysrq - jde vůbec zkompilovat?
Odpovědět | | Sbalit | Link | Blokovat | Admin
Tak jsem si to vyzkoušel a už jsem to rozchodil. Poslední problém byl v tom, že po tom chaosu s hlavičkovýma souborama nefungovala podmínka #if __BYTE_ORDER == __LITTLE_ENDIAN. Vystavil jsem celý patch oproti verzi 0.5. Funguje to i s tím heslem:
insmod ipt_SYSRQ.ko tolerance=60 passwd=heslo
iptables -I INPUT 1 -p udp --dport 9 -j SYSRQ
./send_sysrq -p 9 localhost m
# zadám heslo
# v dmesg vidím, že to proběhlo
14.7.2007 23:17 Jiří J. | skóre: 34 | blog: Poutník | Brno
Rozbalit Rozbalit vše Re: ipt-sysrq - jde vůbec zkompilovat?
Restornul jsem všechny ty zálohy původních souborů, patchnul to celé a funguje. Díky moc. :-)
14.7.2007 23:58 Jiří J. | skóre: 34 | blog: Poutník | Brno
Rozbalit Rozbalit vše Re: ipt-sysrq - jde vůbec zkompilovat?
Funguje na localhostu, ale nedokáži pochopit, proč mi to přes síť nejde..
V dmesg je
NETSYSRQ: ip=192.168.1.2 sport=32768 dport=9 len=24
NETSYSRQ: Unauthorized attempt to remote sysrq!!! (ip=192.168.1.2 sport=32768 dport=9 len=24)
NETSYSRQ: ip=192.168.1.2 sport=32768 dport=9 len=24
NETSYSRQ: Unauthorized attempt to remote sysrq!!! (ip=192.168.1.2 sport=32768 dport=9 len=24)
Heslo zadávam dobře, z localhostu to jede, iptables má v INPUT jedíné pravidlo a to
SYSRQ      udp  --  anywhere             anywhere            udp dpt:discard
michich avatar 15.7.2007 00:21 michich | skóre: 51 | blog: ohrivane_parky
Rozbalit Rozbalit vše Re: ipt-sysrq - jde vůbec zkompilovat?
Mají oba počítače synchronizovaný čas?
15.7.2007 00:42 Jiří J. | skóre: 34 | blog: Poutník | Brno
Rozbalit Rozbalit vše Re: ipt-sysrq - jde vůbec zkompilovat?
+- 2 minuty ano .. ale já dal toleranci 60sec.. myslel jsem, že je tolerance=x čas, po jakou dobu bude packet platný (resp. jeho seq. číslo), aby se nedal přeposílat (aké proto jsem nechápal, proč tam autor programu cpe půl dne) - když se nad tím zamyslím, uvědomuji si, že je to vlastně pitomost ... teď to již chápu a jede to. Ještě jednou díky.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.