Segmentacja wododziałowa

Chyba czas zacząć pokazywać jakieś przykłady super fajnej segmentacji wododziałowej. Na początek przykładowe logo:

obraz źródłowy

To samo już po segmentacji i pokolorowaniu każdego obszaru spływu na (prawie) inny kolor:

po segmentacji i kolorowaniu

Kolejny obrazek przedstawia zbinaryzowaną wersję obrazu wejściowego:

binarny obraz

Możemy zobaczyć jak wyglądają tamy po takiej segmentacji:

tamy

A na koniec połączenie tam i obrazu wejściowego. Docelowo tamy powinny być np. koloru czerwonego, aby łatwiej odróżniały się od krawędzi figur:

nałożenie tam na obraz wejściowy

Eh wszystko ładnie pięknie. Brakuje tylko tych prostokącików w środku. Ich mój algorytm po prostu nie wykrył. Dla porównania algorytm Cannego dla wykrywania linii (Canny’s Edge Detector) z domyślnymi wartościami (128, 15):

przykładowy obraz po zastosowaniu algorytmu Cannego

A Canny wykrył mniejsze prostokąciki…niestety.

Pomoc dla Wstęp do Systemów Sieciowych

Part 01

Tryby graficzne:
text: knoppix 2 vga=normal [nodhcp]
gfx: knoppix xmodule=i810 [nodhcp]

Podstawowe komendy:

reboot halt pump su

Tcpdump:

tcpdump -X port 68
lcpdump -i eth0
lcpdump -c 3
tcpdump - -c liczba -F file -i [expression]
gdzie expression to np. type (host, net, port), direction (src, dst, src and (or) dst), protocol (ether, ip, tcp, udp, arp, rarp), logical (and, or, not)

Numery portow popularnych serwisow znajdziemy w pliku [/etc/services]

// tcpdump zp proto tcp host 158.75.2.230
tcpdump tcp
tcpdump ether host

Minicom:

minicom (potem) CTRL+A, O
w Serial Port Setup ustawiamy seriale
Komentarz:
[Wojtas] Żeby wyjść z tego czegoś wciskamy CTRL+A, Q. Najlepiej w opcjach zrobić najpierw save… 😛

Zadanie 1: (SLIP)

—|— Zadanie (treść wg moodle): —|—
SLIP: Połączyć dwa komputery: SLIP, sieć 192.168.0.x/30
—|— —|— —|— —|— —|—

K1 SLIP [Polaczenie miedzy dwoma komputerami przez porty szeregowe:]
/sbin/slattach -v -s 38400 -p slip /dev/ttys0
sleep 3 [Wojtas: po prostu wciskamy CTRL+Z, a potem 'bg 1′ aby proces dzialal w tle]
/sbin/ifconfig sl0 192.168.0.1 netmask 255.255.255.224
/sbin/ifconfig sl0 pointopoint 192.168.0.2
route add 192.168.0.2 sl0
[analogicznie na drugim kompie]

Komentarz:
[Wojtas] Do zaliczenia trzeba pokazac poprzez 'tcpdump -i slip’, ze ping idzie na tym interfejsie.

Zadanie 2: (PLIP)

—|— Zadanie (treść wg moodle): —|—
PLIP: Połączyć dwa komputery: PLIP, sieć 192.168.0.x/30
—|— —|— —|— —|— —|—

K2 1<–>2 [Porty drukarki]
// to nie dziala: insmod plip.to
modprobe plik
/sbin/ifconfig plip0 192.168.0.1 netmask 255.255.255.224
// w poprzednich komendach zamieniamy 'sl0′ na 'plip0′ i powinno dzialac

Zadanie 3: (TFTP)

—|— Zadanie (treść wg moodle): —|—
TFTP: sieć 192.168.0.x/30: serwer tftp-hpa-0.43
—|— —|— —|— —|— —|—

cd /ramdisk
wget http://www.kernel.org/pub/software/network/tftp/tftp-hpa-0.43.tar.gz
tar vzxfp tftp-hpa-0.43.tar.gz
cd tftp-hpa-0.43/
make
1) cd tftpd/
./tftpd -opcje…. 😉 [np. tftpd -c -f]
2) cd tftp/
./tftp -opcje … 🙂 [np. tftp ip-servera] [potem get nazwa-pliku lub put nazwa-pliku]

Pokazać, ze dziala przeslanie poprzed tcpdump’a.
Komentarze:
[Wojtas]
Wymagane jest pokazanie użycia komendy post oraz get (u doktora S.);
Domyślnie, gdy ściągniemy tftp do katalogu np. /ramdisk/tftp, to najlepiej jest umieszczac pliki testowe w /ramdisk, bo ma on prawa 777. Ciężko jest wyczuć jakie prawa trzeba nadać aby moc odczytac/zapisac pliki gdzies indziej.
Jeśli nie pamiętamy co należy w kliencie podac po komendzie get/put wystarczy wcisnac enter a tftp zapyta nas o brakujace parametry (lepiej nie wpisywac np. put plik dokad, bo nie ma takiej komendy, jest tylko 'put plik’ albo 'get plik’)

DHCP

cd /etc/dhcp3/
[vi dhcpd.conf]
/etc/init.d/dhcp3-server [status, start, stop, restart]

opcje w dhcpd.conf:
default_lease_time 86400 #one day
max_lease_time 640
ddns_update_style ad-hoc
subnet 192.168.0.0 netmask 255.255.255.0 {
range 192.168.0.2 192.168.0.250
option subnet-mask 255.255.255.0;
option broadcast-address 192.168.0.255;
option routers 192.168.0.1;
}
host zupa {
hardware ethernet 00:0b:db:65:80:eb;
fixed-address 192.168.0.69;
}

Kopiowanie na pena:

PD
mkdir /sda
mount /dev/sda1 /sda
umount /sda
SCP
pump
tar gzip
scp nazwa.pliku @ultra60

Knopix cheat codes:
http://www.knoppix.net/wiki/Cheat_Codes

Zadanie 4: PXE

—|— Zadanie (treść wg moodle): —|—
PXE: boot knoppixa przez sieć: 192.168.0.x/30
—|— —|— —|— —|— —|—
1.
/etc/init.d/knoppix-terminalserver [start | configure | stop]
2.
Zmieniamy DHCPd (tak jak powyzej) aby przydzielil drugiemu konputerowi adres ip na podstawie mac’a.
3.
Resetujemy DHCPd (reszta rzeczy wystartowala po skonfigurowaniu w punkcie 1.)
[Wojtas, dokładniej:
– edytujemy plik /etc/dhcp3/dhcpd.conf
– dodajemy czesc o hoscie, podajemy w niej statyczny adres ip oraz mac; dopisujemy to na koncu pliku
– restartujemy dhcpd, czyli '/etc/init.d/dhcp3-server restart
Jesli nie zapomnielismy gdzies srednikow i wpisalismy poprawnie mac’a to powinno pojsc]
4. Restart drugiego kompa ktory jest podlaczony do nas kablem (przed restartem mozna spradzic czy przechodzi ping)

Zadanie 5: Etherboot

—|— Zadanie (treść wg moodle): —|—
Etherboot: boot dos/ka9q przez sieć: 192.168.0.x/30
—|— —|— —|— —|— —|—

Z tablicy:
server: bootpd
tftpd: obraz_systemu
Etherboot: dyskietka
obraz: plik, ktory zawiera system msdos/ka9q

./bootpd -s bootptab
./tftpdir -c -l /ramdisk/tftpdir

po sciagnieciu pliku fmsdos z moodle:
mount -t vfat -o loop fmsdos /mnt

sciagamy tez ze strony:
http://rom-o-matic.net/5.0.4/
sterowniki od naszej karty sieciowej

ftp://ftp.icm.edu.pl/pub/Linux/sunsite/system/network/boot.net/bootpd-2.4.tar.gz

Rozwiązanie:
1. Ściągamy i kompilujemy bootpd. (albo ściągamy i rozpakowujemy plik bootpd.gz z moodle).
a. Wypakowany plik bootpd zmieniamy na uruchamialny:
chmod u+x booptd

b. Tworzymy plik z konfiguracją, np. vi bootptab (później będziemy używać tej nazwy)
c. Wypisujemy plik następującymi danymi:
#bootptab
global.prof:
:sm=255.255.0:
:ds=192.168.0.1:
:gw=192.168.0.1:
:ht=ethernet:
:bf=msdos:
ws001:hd=/ramdisk/tftpdir:tc=global.prof:ha=00e04c9011c7
ws002:hd=/ramdisk/tftpdir:tc=global.prof:ha=00e07d98182b:ip=192.168.0.2
gdzie:
i. nasz adres MAC jest na końcu przedostatniej linii, zaś naszego sąsiada (kompa który będzie się bootował) w ostatniej
ii. wg tej konfiguracji serwer ma ip 192.168.0.1 zaś klient dostanie 192.168.0.2
d. Uruchamiamy bootpd poprzez wpisanie: ./bootpd -s bootpdtab
e. Proces bootpd powinien chodzić jak sprawdzimy przez ps’a. Oczywiście jeśli coś jest źle w konfigu to się nie dowiemy. To jest najgorsze z tego wszystkiego.
2. Ściągamy, komilujemy i instalujemy serwer tfp. Czyli, np. ./configure –prefix /ramdisk/tftp, potem make i make install.
Zatem bedę miał całość w /ramdisk/tftp (serwer: /ramdisk/tftp/sbin/in.tftpd zaś klient: /ramdisk/tftp/bin/tftp).
Tak więc, stawiamy szybko sewer:
a. Tworzymy sobie jakiś katalog, np. mkdir /ramdisk/tftpdir
b. Zmieniamy mu prawa na jakieś lepsze: chmod 0777 /ramdisk/tftpdir
c. Startujemy serwer: /ramdisk/tftp/sbin/in.tftp -c -l /ramdisk/tftpdir
[ łatwo można teraz sprawdzić, czy wszystko jest ok, wpisując:
touch /ramdisk/tftpdir/test
chmod 0777 /ramdisk/tftpdir/test
/ramdisk/tftp/bin/tftp
connect localhost
get /ramdisk/tftpdir/test
(powinno się pokazać, że dostaliśmy plik, czyli jest ok ]
3. Tworzymy i modyfikujemy dysk, który zostanie pobrany przez pxe (etherboot’a):
a. Ściagamy plik fmsdos z moodle (i dalej zakładamy że mamy go w katalogu w którym jesteśmy)
b. Montujemy plik: mount -t vfat -o loop fmsdos /mnt
c. Dokopiowujemy drivery: cp *.exe /mnt
d. Zmieniamy plik ka9q.bat
e. Odmountuwujemy: umount /mnt
f. Musimy jeszcze tylko zamienic ten plik na inny format: mknbi-dos fmsdos > msdos

TFTPD
chmod 0777 /ramdisk/tftpdir
./tftpd -c -l /ramdisc/tftpdir

DOS:

mount -t vfat -o loop fmsdos /mnt
cp /mnt
edit ka9q.bat
unmount /mnt
dd if=fmdos of=dev/fd0
mknbi-dos fmsdos >msdos

Zaliczenie zadań

Zadania od 1 do 5 trzeba zaliczyć do końca października na zajęciach.
2 zajęcia: pierwsze 2h i drugie 4h (minus pewnie jakaś prezentacja)

Part 02

Zadanie 6. ICMP

1. komputer

Sciagnac paczke (ze sourceforge’a, google: icmp), rozpakowac, make linux
tar xvzfp
./ishd -i 65535 [uruchamiamy serwer]
tcpdump -x -X icmp

2. komputer

Sciagamy paczke, rozpakowac, (plus pewnie tez make)
./ish -i 65535 192.168.72 [startuje klienta]
Po polaczeniu mozna wykonac komende shellowa, np tail /etc/passwd 🙂

Zamykamy przez killall [ish | ishd];

[Wojtas: zadanie bylo tak proste ze az nie trzeba nic tlumaczyc. Najlepiej od razu otworzyc 3 terminale i być gotowym na pokazanie tcpdump’a, odpalenie klienta i serwera tylko poprzez wbicie strzałki w górę i Enter’a. Można tak zaliczyć całe zadanie w 10 sekund]

Zadanie 7. NTP

Uruchomic klienta/servera NTP + przechwycic datagramy NTP.

google: ntp (ntp.org)
np.: ntp-4.2.2p4

configure
make install
more ../ntpd/ntpd.conf
server: 158.75.2.46, 150.254.183.15

uruchamianie serwera:
./ntpd -d -c ntpd.conf
klient(najpierw skompilowac):
ntpq -c peer 192.168.0.254

tcpduim -x -X -s 14400 port ntp

8. Quagga

Na zajecia przyniesc skompilowana paczke!

[potrzeba aby ktos to przeedytowal!]

make install (domyslnie wrzuca do usr/local/etc)
usr/local/etc/zebra.conf
tu jest odpalenie czegostam ;]
(show run show iproute)

ripd -d (def username : zebra) [tez w katalogu /usr/local/etc]
# conf t – tutaj zaczynaja sie komendy identyczne jak na routerach cisco (powodzenia więc)
[conf t uruchamia tryb configuracji routera, t oznacza ze ma byc to wyswietlone na terminalu, mozna podac samo conf, to sie zapyta]

9.ipsec

racoon -F -v -f racoon_1.conf
psk-1.conf

cat psk-1.txt
192.168.254 test

cat set-policy-1

spdadd 192.168.0.253/32 1921 any -P out ipsec
esp/tunnel

racoon-1.conf
sainfo address 192.168.0.253/32 any address 192.168.0.254/32