wm withdraw .; wm geom .output 379x572+10+82; wm geom .konsola 596x578+400+81; # Puszcz wm geom .output 309x958+316+76; wm geom .konsola 865x956+638+77; kons_font 13; # Morasko ## hping3 - przechwytywanie pakietow z sieci, 11.2018 # + to nie pkg tcl-a tylko interp z wbudowana cmd hping... # + opis pol w pakiecie IP: http://www.daemon.org/ip.html # + zrobic wersje hping3 jako roz.bin. tcl-a, ok!! # z ktorymi wersjami tclkit-a dziala? 8.4, ??? # load ./hping3.so; # dodaje cmd hping i ns hping::* !!! #info load #% {./hping3.so Hping} {/root/tcl/tclkit8.6b1/lib/tk8.6/../libtk8.6.so Tk} {{} vfs} {{} rechan} {{} tclkitpath} {{} Mk4tcl} {{} Itcl} proc err args {catch $args err; set err} err hping q #% Bad option "q" must be: resolve, send, sendraw, recv, recvraw, setfilter, iflist, outifa, getfield, hasfield, setfield, delfield, checksum, event join [hping iflist] \n #% lo 16436 {127.0.0.1} {} {LOOPBACK} eth0 1500 {192.168.1.3} {192.168.1.255} {BROADCAST} #% lo 16436 {127.0.0.1} {} {LOOPBACK} eth0 1500 {150.254.77.44} {150.254.77.255} {BROADCAST} hping recv eth0 #% {ip(ihl=0x5,ver=0x4,tos=0x00,totlen=84,id=0,fragoff=0,mf=0,df=1,rf=0,ttl=64,proto=1,cksum=0xa742,saddr=192.168.1.3,daddr=212.77.98.9)+icmp(type=8,code=0,id=2908,seq=97)+data(str=?c\0bT\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00)} hping recv -hexdata eth0 #% ip(ihl=0x5,ver=0x4,tos=0x00,totlen=84,id=0,fragoff=0,mf=0,df=1,rf=0,ttl=64,proto=1,cksum=0xa742,saddr=192.168.1.3,daddr=212.77.98.9)+icmp(type=8,code=0,id=2908,seq=98)+data(hex=caa71a5400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000) # 4s czekamy na komunikaty... #set x [hping recv -hexdata eth0 4000 0]; llength $x set x [hping recv eth0 4000 0]; llength $x set x2 {}; foreach e $x { if {[hping getfield ip ihl $e] != 0} {lappend x2 $e} }; llength $x2 join $x2 \n---\n # ... # proba wyslania ping... # + co trzeba podac w naglowku IP ? ttl,daddr ?? # + czasami hping recv przechwytuje to co sami wyslalismy... # + mozna podac adr domenowe w s/daddr # + najpierw odczytywac pakiety potem na tej podstawie tworzyc wlasne... hping resolve wp.pl #% 212.77.98.9 hping send {ip(ttl=25,daddr=212.77.98.9)+icmp(type=8,code=0,id=123)} set x [hping recv eth0 1000 0] set x2 {}; foreach e $x {if {[hping getfield icmp id $e]==123} {lappend x2 $e}} join $x2 \n---\n #% ip(ihl=0x5,ver=0x4,tos=0x00,totlen=28,id=63221,fragoff=0,mf=0,df=0,rf=0,ttl=25,proto=1,cksum=0x6a90,saddr=150.254.77.44,daddr=212.77.98.9)+icmp(type=8,code=0,id=123,seq=0) --- ip(ihl=0x5,ver=0x4,tos=0x00,totlen=28,id=19788,fragoff=0,mf=0,df=0,rf=0,ttl=56,proto=1,cksum=0x141b,saddr=212.77.98.9,daddr=150.254.77.44)+icmp(type=0,code=0,id=123,seq=0) # + jako odp przychodzi icmp(type=0,code=0,id=123) # hping event, 3.11.2018 # + handler dziala... # naprawilem segm. fault przy wylaczaniu handlera (script.c) # handler MUSI wywolywac "hping recv eth0" # + "-hexdata" zawsze bezpieczniejsze z uwagi na dziwne znaki unicode # .output.t delete 1.0 end; # czyszczenie output hping event eth0 {}; # wylaczanie handlera set licz 0; hping event eth0 { # wlaczanie handlera set msg [hping recv -hexdata eth0] if {[hping getfield ip ihl $msg]!=0} { _puts "--- $licz\n$msg"; incr licz } } hping send {ip(ttl=5,daddr=212.77.98.9)+icmp(type=8,code=0,id=123)} # hping setfilter, filtry pcap, 3.11.2018 # + gdzie jest opis tych filtrow ?! # hping setfilter eth0 ""; # wyl. filtrowanie hping setfilter eth0 "icmp"; # przepuszcza tylko prot. icmp # inne udogodnienia hping... # + arytmetyka na int dowolnej dlugosci (tcl>=8.5 tez to ma!) # + cmd/operacje powinny byc w ns hping ? # #rename ** hping::**; # jesli uzywac ./hping3 a nie ./hping3.so hping::** 2 10 #% 1024 hping::** 2 100 #% 1267650600228229401496703205376 hping::** 2 100 #% 1267650600228229401496703205376 expr 2**100; # tcl>=8.5 to ma... #% 1267650600228229401496703205376 time {hping::** 2 1000} #% 70 microseconds per iteration time {expr 2**1000} #% 60 microseconds per iteration exit