JJ AAAAAAAA KK KK II NN NN JJ AA AA KK KK II NNNN NN JJ AAAAAAAA KKKKKK II NN NN NN JJ AA AA KK KK II NN NNNN JJ JJ AA AA KK KK II NN NNN JJJJJJJJ AA AA KK KK II NN NN e z i n e ______________________________________________________________________ | 2. alea (Balioa: 38K) | |______________________________________________________________________| | 2003/12/12 | |______________________________________________________________________| | | | Segurtasun elektronikoari buruzko fanxina, euskera hutsez | | | |______________________________________________________________________| | | | Parte hartzaileak: edit, adminttd, Espoz&Mina, niuBAI,Regexp eta KM | |______________________________________________________________________| | email helbidea: jakin@mailbox.co.za | | jakinezine@hispavista.com | |______________________________________________________________________| | Web helbidea: http://www.jakin.tk | | http://www.angelfire.com/zine2/jakinezine/ | | http://jakinezine.galeon.com | |______________________________________________________________________| Ale honetan: Zb Artikulua Egilea ______________________________________________________ 0. Hitzaurrea edit 1. Scene? edit 2. Nire lehen intrusioa adminttd 3. TCP/IP programazioa (II) niuBAI 4. Perl pusketak Regexp 5. Nire bigarren Unix sesioa Espoz&Mina 6. Kultura km 7. Estekak,Oharrak,Agurrak edit ______________________________________________________ "segurtasun" iz. 1. Finko segurtaturik dagoenaren egoera. 2. Ezbeharra gertatzekotan hartatik babestuta dagoenaren egoera; ezbeharra eta kaltea saihesteko hartutako neurrien multzoa (((((((((((((((((((((((((((((((((((( Jakin dezagun!! )))))))))))))))))))))))))))))))))))))) 0. Hitzaurrea __________________________ <0> Hementxe gaude, bigarren alean!! Jakin-en deihadarra interneten zertxobait nabaritu da, hala espero dugu. Lehen zbkia atera ostean zenbait web-guneei berria bidalio diogu eta zenbaitek gure existentziaren berri eman dute. Jakin ezineko Broadcast departamentuak lanean darrai! Web orria dagoeneko googlen sartuta dago, eta norbaitek bilatzen bagaitu hor nonbait agertuko gara. Gure lehen asmoa ezinea ezagutaraztea da, horregatik email mordoa bidali dugu bai gune euskaldunetara eta baita webgune erdaldunetara ere; ahalegin hau ez da gure inguruan geratu behar, badakigu jakin, munduan zehar euskaldun pila daudela izkutaturik, eta denak ez dira artzaiak. Ezinearen berri hegoamerikara hedatu behar da, ertametikara, iparamerikara, leku guztitara! Jakin ezagutarazteko lan horren ondorio bezala beste ezinekide bat lortu dugu: Regexp. Honek perl lengoaiaren bideak erakutsiko dizkigu hemendik aurrera. Bere lehen parte-hartze honetan ftp scriptak nola egin azalduko digu; kode zati xinpleak baino oso oso erabilgarriak. Beste batzuk laguntzeko hitza eman dute, pertsona ezezagunak eta mundu akademikotik ere. Lehen kritika zorrotzak ere heldu dira, eta asko eskertzen dira; horrelako kritikak fanxina hobetzeko balio dute; gainontzeko kritikak animoak mantentzeko balio dezakete. Lehen alea eta ale hau ere ez dira beste munduko gauza (maila teknikoari dagokionean), baina aurreko hitzaurrean hortaz ohartarazten zen. Maila hori hobetzea ezinean daukagun beste erronka bat da, zalantzarik gabe, eta hori baino gehiago printzipioz jarraitasuna lortzea da; horrela ondorio bezala hobekuntzak denborakin etorriko dira. Gogorarazi nahi dugu fanxin hau ateratzea, teknikoa, euskeraz, ez da ahuntzaren gauerdiko eztula. Pilula gorria hartu, bagoaz... -edit- 1. Scene? __________________________ <1> Ba al dago hacker scene euskaldunik? zail xamar holakorik ziurtatzea. Interneten begirada bat botatzen bada ez dugu aparteko gauzarik topatuko. "Euskal hack" bezalako hitzak bilatzaileetan sartuta orri ia bakarra agertzen zaigu eta orria aspaldidanik ahaztuta dago. Beste horrenbeste gertatzen da "Lehen hacker euskaldun orria" esaten den orrian. Bi kasutan edukinik ez dago, hiztegi txiki baten salbuespenarekin (3zpa4 sarrerekin), gure aldetik bete dezakeguna (bolondresik?). Hona hemen euskal hack orria. Kontuz, midiak dauzka... http://mipagina.euskaltel.es/plarranaga/ Bilatzaile guztitan agertzen da beti. Aipagarria da ere Txapela izeneko hacker baten orria: txapelhack, edukin gehiago duena. Orri honetan sare protokoloetaz hitzagiten de gehien bat. Gunea nahiko landua dago. Gidaliburu baten hasiera dauka, proiektu benetan interesgarria. http://www.galeon.cm/txapela/ Euskalhacking izeneko bat ere badago, baina obretan daude. http://www1.gratisweb.com/independentzia/ Baina zer gertatzen da, euskalerrian ez al dago hackerrik? ez da posible, eta ez da bakarrik fakultate teknikoak daudelako (bilbon, donosti, arrasate, iruņean informatika eta telekomunikazioa ematen dira). Dakigun bezala hackerrak ez dute zertan tituludunak izan beharrik, baina suposatzen da fakultateen inguruetan friki asko topa daitezkeela. Jakina da ere autodidaktak ikaragarri onak direla. Aizu! baina hacklab-ak badaude, euskalerriko hiriburu guztitan. Horien artean garrantzitsuena (edo gehien garatu dena) bilboko Metabolik Biohacklab-a da. Iruņekoa eta Donostikoa (izenik gabekoak oraindik) hasiberriak dira, baina egon badaude. Iruņekoak ostegunero (20:00an )biltzen dira bakearen etxean (Iruņeko merced kalean, alde zaharrean, bakearen etxea" izeneko egoitzan), eta donostikoak bere "egoitzan" biltzen dira asteburutan (urgulleko guardetxean, benetan ikusgarria dena). Bilbokoak aspaldidanik Udondoko gaztetxean daude, eta hackmeeting baten ospagunea izan zen 2002 urte kapikuan. Donostiko hacklab: http://www.hacklabs.org/wiki Bilboko hacklab: http://www.sindominio.net/metabolik Gasteizko hacklab: http://www.kakelbont.org/ Informazio orokorra: http://www.hacklabs.org/ Hacklabetaz gain, eta ziuraski horiek baino lehen (edo batera) agertu direnak wireless (haribako?) taldeak izan dira, indar handiarekin. Hiri bakoitzean ia ia (estatu mailan esan daiteke) talderen bat badago edo gutxienez inguruneko taldea (euskalwireless kasu). Euskalerrian berriro ere Bilboz hitzegin behar dugu -txo! ta ez naiz bizkotxoa- Bilbowireless-en kasu aipatzeko. Hala eta guztiz ere azkeneko hackmeetingean izandako wifi bileran denok lurrera itzuli ginen. Izan ere dirudiena baino askoz zailagoa da wifi sareak sortzea. Egia da esperientzia onak aurrera atera direla, baina bilera horretan hasierako eta eguneroko zailtasunak agerian geratu ziren. Wireless taldeak baino lehen, linux taldeak egon dira, askoz ere gehiago gainera. Linux talde bat topa daiteke estatuko probintzia bakoitzean, baita euskalerri mailan ere, euskal-linux kasu. Dena den, azkenaldi honetan bere webguneak erdi-abandonatuta daude. Litekeena da denak lanean izatea :P Aipatzekoa da, horren txikiak izanda ere, segurtasun informatikoaz arduratzen den enpresa bat Donostian bertan daukagula. Han dauden langileak, ustez, benetazko hackerrak direla suposatzen da. Tamalez badirudi bere lankide hoberena hil egin zela. Hala ere horrelako kontsultorak ez dute asko arriskatzen, aholkuak eta besteen produktuak ematen baitituzte. Wargameak antolatu dituzte, microsoften produktuak probatzeko. Eta partyak? orokorrean partyetan jokuak eta multimedia zaletasuna ikusten da gehienbat (denetarik dago), aurten estrenatu den Navarparty kasu. Dena den, orokorrean hacklab eta wifi taldeekin baikorrak izan behar dugu... Hemendik urte batera artikulu hau berregingo dut eta ikusiko dugu ea gauzak bilakatu diren. Ctrl-G Alt-F4 -edit- 2. Nire lehen intrusioa __________________________ <2> egunon, beno edo gabon. Pasahitzak lortzeko tenikei buruz arituko naiz oraingoan, bidelaburrak proposatuz. Sistema gehienak pasahitza batekin babestuta daude, eta sistema horren erabateko kontrolaz banatzen gaituen gauza bakarra denean hitz horren bilaketa ezinbestekoa da. Pasahitzak asmatzeko teknika ezberdinak daude, agian ezagutuena indar-hutsezkoa da (bruteforce) password-cracking teknikak erabiliz. Tamalez, teknika horiek erabiltzen badira sistema administrariak errez konturatu daitezke kontu bat krakeatu nahi dela. Hurbilpen bat erabili daiteke, edo hobe esanda bidelaburra. Demagun login bat ezagutzen dugula (erabiltzaile baten ezizena) eta bere kontuaren kautotzea probatzeko aukera dugula (shell login arrunta, pop3 kontua, dena-dela). Nola asmatu daiteke bere pasahitza? lehenbizi probatu behar dena, izen bera erabiltzea da; kaka! hau ez da batere teknikoa. Egia da, baina egia da baita ere kasu ASKOTAN nahikoa dela kontua lortzeko (klasiko bat da azken finean). Beste hurbilpena, pasahitzik ez erabiltzea da. Gauza hauek password-cracking-ek egiten du jada: kontu izenarekin mota guztitako frogak egiten ditu: alderantziz jarri, zenbakiak gehitu, etc.. hurbilpen oso onak dira. Beste aukera bat da izen eta abizenekin jolastea, eta bide horretatik: jaiotza eguna, dni zenbakia, kotxearen matrikula, seme-alaben izena (Josua, gogoratzen?), eta abar luze bat. Datu pertsonal horiek probatu daitezke, eta balio ez badute orduan cracker hiztegi batean sartu eta aurrera, crackerrak lana egin beza. Ongi da, ez dugu ezer berririk esan honezgero artikulu hau uztekotan egonen zara. Zu zeu. Ze hurbilpen erabil daitezke enpresa baten pasahitzak ateratzeko? Ideia bat emateko, adibide bat jarriko dugu. Hosting enpresetan edo telekomunikazio enpresetan makina bat makina (:D) mantendu behar dira eta askotan pasahitza berdina erabiltzen da guztietarako. Ezaguna da telefonikaren kasua, nire ezizenaz errepresentatzen dudana. Enpresa batek pasahitzak kudeatzeko inon apuntatu gabe zenbait truko erabil daitezke: pasahitza aukeratzeko garaian algoritmo xinple baten bitartez egten da, edo kodeketa bat adostuz. Adibidez: -Demagun: 195.55.23.143 Nafartel enpresaren email zerbitzaria. Pasahitza egiteko erizpidea zera izan daiteke: IP4.en 4.en zortzikoa-EnpresaIzena+Zerbitzua Hots: 143-Nafar+Mail Horixe pasahitza erdidexentea da: zenbakiak, hizkiak(larriz/txikiz) eta zeinuak darabil. Baina bat ateratzen bada pasahitzaren logika berehala ikus daiteke, pasahitza eta makina guztiak konprometituz. Informazioa ateratzen: Laburbide gehiago atera behar dira pasahitzak lortzeko; gehienetan pasahitzak enpresaren inguruarekin zerikusia daukatenez, enpresari buruzko informazio gehiena atera behar dugu. Bere web gunera jo eta informazio hau atera daiteke: -Enpresaren izena -Enpresaren kokapena -CIF-a -Langileen izena (zuzendari teknikoarena batez ere) -Enpresaren zerbitzari marka (Dell, Sun, Ibm) -Partner-en datuak. -Telefono zbkiak. -Bezeroen datuak. Bilaketa hori beste informazioarekin konbinatu daiteke: -Ripe(Europarako): IP helbideen informazioa -> IPak, horien erabilera, arduradunak -Enpresaren dominio informazioa(whois) -> izenak, erabilera, arduradunak -Langileei buruzko informazioa Google-en -> izenak, JAIOTZA DATAK, afizioak Gure aldetik informazio gehiago atera dezakegu (adiskideak, kalean topatuz, e.a): -Enpresako langileen izenak -Langileen NAN-ak -Enpresa kotxeen matrikulak (bo, kontuz honekin, ez joan kaletik matrikulak apuntatzen :P) Demagun sistema administratzailearen informazioa ateratzen dugula on-line daukan kurrikulum batetik; bertan, afizioetaz hitzegiten denean holakoak aterako dira: "irakurketa gustoko dut, zinea gustoko dut,.." Hartaz, literatura edo zinemarekin zerikusia daukaten hiztegiak erabil ditzakegu. Orokorrean, hortik ateratzen ditugun datu guzti horiek bildu, eta gure krakeatzailearen hiztegian sar ditzakegu beraiekin konbinaketak egin ahal izateko. Informazioa biltzea lan neketsua izan daiteke baina pasahitzen bilaketa erreztuko du ziurrenik. Nondik atera ditzakegu krakeatzaileak? pila bat daude, eta sistema-administratzaileen tresna bezala kontsideratzen direnez, unibertsitateen ftp anonimoetan eta edonon topa daitezke, hiztegiekin batera. Adibidez: ftp://ftp.ehu.es/pc/apl/security Hiztegi mordoa: ftp://ftp.rediris.es/sites/ftp.ox.ac.uk/pub/wordlists/ Crackeatzaile adibideak: John the Ripper, Cracker Jack,.. hauek pasahitza fitxategien gainean exekutatu behar dira, baina mota guztitako krakeatzaileak daude: web, pop3, ftp, e.a. Artikulu honetan tresnen adibide gutxi batzuk daude, baina bilatzen baduzue nahi duzuena topa dezakezue arazorik gabe. Pasahitzak ateratzeko erizpideak ematen saiatu naiz, nolabait biktimaren burutik zer pasatzen den asmatu nahian. Sistema adminstratzailea bazara, zure pasahitzak eta sistemak hobeto babesteko pistak ematea espero dut. Eta erabiltzaile arrunta bazara, badakizu, horrelako pasahitzak aukeratu: qAg45-!ertDd63H 23sF5·$%fd-34aO -(56dfW*345bvCE ... Oharra: Goian aipatu diren erizpideetako bat erabili al duzue noizbait? ziur naiz baietz. Kontu handiz aukeratu behar dira pasahitzak. Gomendio on bat esaldiak erabiltzea da, zenbakiekin konbinatu; hoorekin bi gauza lortzen dira, batetik pasahitza oso seguruak eta bestetik gogoratzeko errezak. Biz: Ai Jesus Maria eta Jose, beti jan ta beti Gose!5 Honen pasahitza: AJMeJ,bjtbG!5 Kriston pasahitza!! Dena den, hobe da esaera zahar edo esaldi ezagunik ez erabiltzea ere.... (paranoia) Ctrl-C exit -adminttd- 3. TCP/IP programazioa (II) __________________________ <3> Aupa Aurreko alean TCP bezero xinple xinplea ikusi genuen. Hortik abiatuta eta C programazioa erabiliz, gauza konplexuagoak egin daitezke. Adibidez portu bat behin baino gehiago ireki (flood kutre bat), eso gauza praktikoago bat: portu eskanerra!! Kode adibide honetan tcp konexioak egiten dira tcp 1 portutik 1024 portura. (goi portuaren balio alda daiteke DEFINE makroaren bitartez). "Nire lehen TCP skanerra" deitu daiteke. Ikusagun: ----------------8<--------------------------------------------- /** * TCPscannerra.c by niuBAI * TCP/IP stream motako socketak darabilen portu scannerra * Kode honi argumentu bat pasa behar zaio: * 1. Helburu makina * * konpilatzeko * gcc -I/usr/src/linux-2.2.14/include -o TCPscannerra TCPscannerra.c * */ // Behar diren liburutegiak #include #include #include #include #include #include #include #include #include #define PORT 1025 // Portuen tamaina maximoa #define DATAMAX 100 // Bufferraren tamaina maximoa ezartzeko erabiliko dugu. // programa nagusiaren hasiera int main(int argc, char *argv[]) { int socketa; int byte_kopurua; int portuak = 0; char bufferra[DATAMAX]; // Bufferra tamaina maximoaremin struct hostent *host_entitatea; struct sockaddr_in host_helburu_helbidea; // Helburu helbidearen informazia // Agurra.. printf("TCPscannerra, tcp scanner xinple bat. \n by niuBAI \n"); if (argc != 2) { fprintf(stderr,"Erabilera: TCPbezeroa hostizena \n"); exit(1); } // Jaso diren parametroak pantailatik erakusten ditugu... printf("SKA SKA SKA Skanetazen ----> %s \n\n Portu interesgarriak %s makinan:\n",argv[1],argv[1]); // Maquinari buruzko informazioa jasotzen da if ((host_entitatea=gethostbyname(argv[1])) == NULL) { perror("gethostbyname"); exit(1); } host_helburu_helbidea.sin_family = AF_INET; // Helbide familia ezartzen dugu: TCP/IP host_helburu_helbidea.sin_addr = *((struct in_addr *)host_entitatea->h_addr); // Orain ez dugu portu bakarra irekiko, 1etik 1024era probatuko dugu for (portuak = 1; portuak < PORT; portuak++) { host_helburu_helbidea.sin_port = htons(portuak); // Portua pasatzen diogu bytetan // socketa sortzen dugu. Konexio bakoitzean egin behar da. if ((socketa = socket(AF_INET, SOCK_STREAM, 0)) == -1) { perror("socket"); exit(1); } // Konexioa!!! if (connect(socketa, (struct sockaddr *)&host_helburu_helbidea, sizeof(struct sockaddr)) != 0) { //perror("connect"); // debug //printf("(%i portua itxita dago %s makinan)\n", portuak, argv[1]); // debug } else { // Konektatu gara. konfirmazioa pantailatik erakusten da printf("\ttcp/%i portua irekita\n", portuak); } // Socketa ixten dugu close(socketa); }// FOR // Eta berriz, agurra printf("Mila esker TCPscanner erabiltzeagatik!! \n http://www.jakin.tk by niuBAI \n"); // ... eta programa nagusiak 0 itzultzen du: dena ongi atera da return 0; } -----------------------8<-------------------------------------- Erabileraren itsura holakoa izan daiteke, kasu honetan windows2000 baten aurka erabilia: [root@etxea network]# ./TCPscannerra 192.168.1.6 TCPscannerra, tcp scanner xinple bat. by niuBAI SKA SKA SKA Skanetazen ----> 192.168.1.6 Portu interesgarriak 192.168.1.6 makinan: tcp/7 portua irekita tcp/9 portua irekita tcp/13 portua irekita tcp/17 portua irekita tcp/19 portua irekita tcp/42 portua irekita tcp/53 portua irekita tcp/88 portua irekita tcp/135 portua irekita tcp/139 portua irekita tcp/157 portua irekita tcp/389 portua irekita tcp/445 portua irekita tcp/464 portua irekita tcp/593 portua irekita tcp/636 portua irekita Mila esker TCPscanner erabiltzeagatik!! http://www.jakin.tk by niuBAI UDP bezeroa. Bueno, aurrera jarraitu behar dugu pixkana. TCP bezero bat egiten badakigu, orain UDP bezero xinple bat egingo dugu. UDP protokoloan ez dago konexio iraunkorrik. Datuak bidaltzen direnean konexioa dago, baina gero moztu egiten da, gainera ez da komunikazioaren kontrol zorrotzik egiten. Hortaz, UDP askoz azkarragoa da, baina ez oso fidagarria. Hala ere zenbait internet zizarek UDP erabili dute eta bere hedapena ikaragarri azkarra izan da. Adibide honetan zerbitzari baten UDP portura testu bat bidaltzen da. Kodea komentaturik dago. Ezin da xinpleago izan. -------------------8<------------------------------------------ /** * UDPbezeroa.c * UDP/IP datagrama motako socketak darabilen bezero kodea * Kode honi 2 argumentu pasa behar zaizkio: * 1. Helburu makina * 2. Helburu portua */ #include #include #include #include #include #include #include #include #include #include int main(int argc, char *argv[]) { int socketa; // Socketaren fitxategia (file-descriptor) struct sockaddr_in zerb_helbidea; // Zerbitzari helbideari buruzko informazioa struct hostent *hentitatea; // Zerbitzari entitatearen informazioa int byte_kopurua; // Agurra.. printf("UDPbezeroa, udp/ip bezero xinple bat.\n"); // Pasatu diren argumentuen balioztapena if (argc != 4) { fprintf(stderr,"Erabilera: UDPbezeroa hostizena portua informazioa\n"); exit(1); } // Jaso diren parametroak pantailatik erakusten ditugu... printf("Konektatzen ----> %s : %s\n",argv[1],argv[2]); // Makinaren host informazioa lortzen dugu if ((hentitatea=gethostbyname(argv[1])) == NULL) { perror("gethostbyname"); exit(1); } // Socketa hasieratzen dugu: hadi: SOCK_DGRAM erabiltzen da!!! if ((socketa = socket(AF_INET, SOCK_DGRAM, 0)) == -1) { perror("socket"); exit(1); } // Helburu helbidea prestatzen dugu. zerb_helbidea.sin_family = AF_INET; // Helbide familia ezartzen dugu: TCP/IP zerb_helbidea.sin_port = htons(atoi(argv[2])); // Portua pasatzen diogu bytetan zerb_helbidea.sin_addr = *((struct in_addr *)hentitatea->h_addr); memset(&(zerb_helbidea.sin_zero), '\0', 8); // Gainontzeko egitura 0kin betetzen dugu // Informazioa bidaltzen dugu. if ((byte_kopurua=sendto(socketa, argv[3], strlen(argv[3]), 0, (struct sockaddr *)&zerb_helbidea, sizeof(struct sockaddr))) == -1) { perror("sendto"); exit(1); } // Egindakoa pantailaratzen da printf("%d byte bidali dira %s helbidera \n", byte_kopurua,inet_ntoa(zerb_helbidea.sin_addr)); // Socketa ixten dugu... close(socketa); // Eta bagoaz, exit balioa 0: dena ongi atera da. return 0; } -----------------------8<-------------------------------------- Hurrengo aleetan RAW socketak eta zerbitzariak eginen ditugu eta pixkanaka paketeen anatomia ezagutuko dugu. Bitartean saia zaitezte kode honekin jolasten. Ordura arte... Esc :q exit -niuBAI- 4. Perl pusketak __________________________ <4> Regexp Angelorum naiz, eta perl pusketak eskeintzen saiatuko naiz. Perl lengoaia interpretatua uste baino ahaltsuagoa da eta honez gero milaka liburutegi lagungarri garatu dira. Horregatik, zalantzaruk gabe, perl-ekin edozer egin daiteke. Gaurko honetan FTP bezeroak egiten erakutsiko det. Dagoeneko liburutegiak eginak badaude, beraz horiek erabili daitezke eta kitto. Bezero honek fitxategi mota bat (atzizki bat bilatuz) bilatzen du ftp zerbitzari baten. Dei errekurtsiboak egin behar dira direktorio guztitatik mugitzeko? Ez horixe! FTP liburutegi berezia badaukagu dagoeneko mota guztitako operazio errekurtsiboak egiteko. Hona hemen perl pusketa: ---------------------------8<---------------------------------- #!/usr/bin/perl -w # FTP bezeroa, perl-en idatzia # (C) Regexp Angelorum # http://www.jakin.tk # Aukerazko moduluak erabiltzeitu, FTP errekurtsiboa adibidez. # FTP errekurtsiboa, ftp-rekin eragiketa errekusrtsiboak egiteko # balio du (ezabaketak egiteko oso aproposa) use Net::FTP; use Net::FTP::Recursive; # Hemen aldagaiak sartzen ditugu: ftp zerbitzaria # eta balidazio datuak my $server = "192.168.8.4"; my $username = "lonewolf"; my $password = "andcub"; # Zerbitzariarekin konektatzeko agindu magikoa: $ftp = Net::FTP::Recursive->new("$server", Timeout => 30, Debug => 1) or die "To! ezin izan dut konektatu: $@\n"; # Konexio parametrotan debug modua erabiltzen da. Datu gehiago emango dizkigu print "OK\n"; ## Kautotzea edo autentifikazioa $ftp->login($username, $password) or die "Login okerra $username -> erabiltzailearendako password ****** \n"; # Direktorioaren listatu &listatu(""); ## Dei errekurtsiboa @edukin_osoa = $ftp->rls(""); # Arraiaren edukina filtratzen dugu html fitxategiak topatzeko @edukin_interesgarria = grep { m/\.html/ } @edukin_osoa; # Eta edukina pantailaratzen dugu foreach $i (@edukin_interesgarria) { print $i ."\n"; } ################ AZPIERRUTINAK ############### ## listatu sub listatu { ## Direktorioaren ls-a egiten dugu. @lerroak = $ftp->ls($_[0]); print " edukina:\n"; # ...eta pantailaratzen dugu foreach $lerroa (@lerroak) { print $lerroa ."\n"; } } -----------------------8<-------------------------------------- Programa xinplea, baina oso erabilgarria helburu administratiboentzat adibidez. Goazen beste erabilpen bat ematera. Armiarma bat sortuko dugu. ARMIARMAK Armiarmak (bot, spider, crawler, agenteak..) interneten zehar "mugitzen" diren programa automatikoak dira informazioa bilatzen. Bilaketa horrek helburu ezberdinak eduki ditzake: bilaketa motore bat elikatu (google, fast,..), ftp zerbitzariak topatu, zerbitzari ahulak topatu, e.a... Hona hemen,20 lerro inguru besterik ez. ------------------8<------------------------------------------- #!/usr/bin/perl -w use Net::FTP; # FTP liburutegia use Net::FTP::Recursive; # FTP errekurtsibo liburutegia while (1) { # Begizta amaitezina $server = int((rand(254)+1)).".".int((rand(254)+1)).".".int((rand(254)+1)).".".int((rand(254)+1)); # ausazko IPa print "\n-> $server ->"; # Ausazko IPa pantailaratzen dugu if ($ftp = Net::FTP::Recursive->new("$server",Timeout => 10,Debug => 0)) { # IPak FTP zerbitzaria badu... if ($ftp->login("anonymous", "anon\@plus.ultra.net")) { # Eta anonimous onartzen badu... print "OK!"; @edukin_osoa = $ftp->rls(""); # Edukin guztia array batean sartu @edukin_interesgarria = grep { m/\.mp3/ } @edukin_osoa; # Arraiaren edukina filtratzen dugu if ($#edukin_interesgarria > 0) { # Zerbait atera bada... open(LOGFILE, ">>armiarma.guneak.txt"); # Fitxategi batean gorde erreferentzia print LOGFILE "#####" . $server ."\n" .@edukin_interesgarria."\n"; # Idatzi close(LOGFILE); # Itxi fitxategia }#if }#if }#if }#while -----------------------8<-------------------------------------- Lasai, lasai!!! badakit kodea hobetu daitekela. Aldagai gehigao sar daitezke, adibidez timeout-a, debug aukera, edo inportanteena nahi dugun edukinaren bilaketa dinamikoki zehazteko. Irakurgarriago egin daiteke, e.a. Baina hori zuen lana da, ez zaitezte lammerrak izan. KONTUZ: $ftp->rls dei errekurtsiboa ez doa oso fin. Agian gu geu sortu beharko genuke liburutegia ;) Hemen ez da azaldu nola jeitsi fitxategiak, baina ez da batere zaila, hori zuek ikertu dezakezue NET::FTPren APIari so eginez. Zentzu horretan perl erreza da, pixka bat JAKINda erreferentzia liburu batekin eta CPAN liburutegi mordoarekin oso ongi konponduko gara. die("beste bat arte"); -Regexp Angelorum- 5. Nire bigarren Unix sesioa __________________________ <5> Aupa, Espoz&Mina nauzue, unix ezagutzeko bidaiaren "Virgilio"a. Aurreko sesioan unix makinaren ezaugarriak eta egoera ateratzen ikasi genuen. Oraingo honetan fitxategi sistemari so eginen diogu, gure inguruneari begiratu bat botako diogu. Unix batean sartzen garenean fitxategi sistema zehatz bat topatuko dugu (ezberdintasunak daude familia batetik bestera, baina orokorrean antzekoak dira). Goazen ikustera: espoz@sistema$ cd / espoz@sistema$ ls / +-/bin : exekutagarri bitar oinarrizkoenak (ls, cd, echo,..) +-/boot : hasieraketa fitxategiak, kernel irudia, kargatzailea (initrd), boot-loader fitxategiak (lilo,grub..) +-/cdrom : CDROMaren montai lekua +-/etc : Konfigurazioak, sistemakoak eta zerbitzarienak. Hasieraketa scriptak, ip helbideak,erabiltzaileak, firewalla, e.b. +-----/mail/ : sendmail konfiguraziona +-----/rc.d/ : zerbitzuen hasieraketa scriptak (ezberdina debian edo bsd batean) +-----/init.d/ : zerbitzuen hasieraketa scriptak (ezberdina redhat-en) +-----/sysconfig/ : sistema konfigurazioa (sare konf., rutak, hostname, e.a.) +-/dev : sistemako dispositibo GUZTIAK fitxategi batekin errepresentaturik (diskak, xagua, pantaila,..) +-/home : erabiltzaileen home direktorioak +-/lib : sistema liburutegiak, kernel moduluak +-/lost+found : fsck bat egiten denean, galdutako edukina gordetzeko lekua. +-/mnt : muntai puntua (aukerazkoa beti), partizio lokalak (diskak,cdak, disketteak), edo urrutikoak (nfs,..) +-/proc : sistemaren egoera eta konfigurazioa gordetzen duen sistema, sistema martxan dagoenean existitzen da. +-/sbin : oinarriko exekutagarri bitarrak, normalean sistema eta kernelarekin erlazionatutak: firewall, rutak,ifconfig +-/usr : zerbitzarien bitarrak, programa mordoak, dokumentuak, man-ak. Askotan gehien okupatzen duen direktorioa. +-/opt : aukerazko programak edo hasieratik instalatzen ez diren bitarrak. +-/root : super-erabiltzailearen home direktorioa. +-/tmp : direktorio tenporala, nun gauza tenporalak gordetzen diren: sesioak, socketak; maiz edozein erabiltzailek idatz dezake +-/var : informazio aldagarri guztia gordetzen den lekua: logak, DDBBak (postgres, mysql) +-----/log/ : sistema eta zerbitzarien log guztiak +-----/lib/pgsql/ : postgres DDBBak. +-----/lib/mysql/ : mysql DDBBak. +-----/spool/mqueue/ : mail zerbitzariaren ilara +-----/spool/mail/ : mail postakutxak. +-----/spool/cache/ : squid proxyaren cache egitura. Bai, bai,... badakit. Sistema batetik bestera gauzak aldatzen dira, zeresanik ez. Hemen jarri den egitura orokortasuna bilatzen du. Baina honekin sistema osoaren lehen eskema bat daukagu. Nondik mugituko gara gehien? Normalean, erabiltzaile arruntak bagara, gura home direktorioan. Supererabiltzaileak bagara aldiz, /etc eta /var directorioetan. Ikus dezagun ezberdintasun zenbai sistemetan. Red-Hat 8an. / +-/bin +-/boot +-/dev +-/etc +-/home +-/initrd +-/lib +-/lost+found +-/misc +-/mnt +-/opt +-/proc +-/root +-/sbin +-/tmp +-/usr +-/var Solaris batean: / +-/bin -> ./usr/bin +-/cdrom +-/dev +-/devices +-/etc +-/export +-/home +-/kernel +-/lib -> ./usr/lib +-/lost+found +-/mnt +-/net +-/opt +-/platform +-/proc +-/sbin +-/tmp +-/usr +-/var +-/vol +-/xfn Hauxe FreeBSD baten itxura (4.8-RELEASE) +-/bin +-/boot +-/compat -> usr/compat +-/dev +-/etc +-/home -> /usr/home +-/kernel +-kernel.GENERIC +-/mnt +-/modules +-/proc +-/root +-/sbin +-/stand +-/sys -> usr/src/sys +-/tmp +-/usr +-/var Hiru unix/linux hauek ezberdintasun nabarmenak dauzkate, baina fitxategi sistema oso antzekoa da, batez ere oinarrizko direktorioei dagokionean. Direktorio amankomunak daude: /etc, /var, /tmp, /usr, /proc, /usr, beraz sistema batetik bestera gauzak ez dira -asko- aldatzen. Gaurkoan fitxategi-sistemaren egiturarekin gaude, eta aurreko alean sistemaren izaera eta egoera ezagutzen saiatu ginen. Bien arteko nahasketa bat eginaz, sistema ASKOZ hobeto ezagutuko dugu. Nola? /proc sistemari begirada bat botaz. /proc directorioa berez hutsik dago sistema instalatzen denean. Sistema eragilea martxan jartzen denean /proc sistema aparte motantzan da (porcfs motakoa partizio bat bezala) pixkana datuz (fitxategiak) betetzen da; datu horiek sistemaren konfigurazioa eta egoera isladatzen dute: hardwarea, kernelaren balioak, sistemaren eragilearen egoera (karga), hardwarearen egoera,... eta inportanteena: hor dagoen informazioa ALDATZEN doa, beti sistemaren egoera isladatuz. Goazen begirada bat botatzera redhat-en /proc batera: espoz@sistema# cd /proc espoz@sistema# ls /1 /13 /17956 /18208 /22961 /666 apm /ide meminfo swaps /11501 /15149 /17960 /18209 /3 /684 /bus interrupts misc /sys /11528 /15154 /18131 /18210 /4 /7 cmdline iomem modules /sysvipc /11530 /15279 /18132 /18211 /5 /713 cpuinfo ioports /mounts /tty /11531 /171 /18142 /18248 /517 /714 devices /irq mtrr uptime /11532 /17348 /18148 /18251 /52 /715 dma kcore /net version /11905 /17349 /18154 /18252 /521 /716 /driver kmsg partitions /11906 /17565 /18156 /18255 /570 /717 execdomains ksyms pci /11907 /17700 /18157 /18259 /6 /718 fb loadavg self /11909 /17846 /18163 /2 /636 /8 filesystems locks slabinfo /11910 /17893 /18204 /21906 /645 /9 /fs mdstat stat et voila! Hortxe daukagu sistemaren momentuko egoeraren informazioa. Atentzioa deitzen digun lehen gauza zenbakidun direktorio mordoa da. Zer demontre da hori? PROZESUAK! prozesu bakoitzeko (prozesu id-arekin erlazionatzen da) direktorio bat dago eta horren barruan: espoz@sistema# ls 666/ cmdline cwd environ exe fd maps mem mounts root stat statm status Non: -cmdline: exekutatu den komando izena (crond) -cwd: (common working directory) prozesua nondik abiatu den -environ: ingurune aldagaiak (path, etab..) -fd: (file descriptor) irekiak diruen fitxategiak -maps: erabiltzen ari den liburutegiak -mounts: montaturik dauden partizioak -root: fitxategi sistema -stat, statm, status: prozesuaren egoera (zbki mordoa) Beraz prozesu bakoitzaren datu minimoak ezagutu ditzakegu. Baina beste fitxategi interesgarriak ere badira: -/proc/pci: sistemako pci slotetan dagoena erakutsiko digu (sare txartelak, e.a.) -/proc/cpuinfo: horixe, cpu-aren zehaztasun guztiak -/proc/devices: mapeatuta dauden dispositiboak (fd, ide0, mem, cua, ..) -/proc/interrupt: eten bektorearen konfigurazioa (interesgarria ASM programatzaileendako) -/proc/ioports: helbide rangoak dispositiboendako. -/proc/filesystems: montaturiko fitxategi sistema motak (ext3, iso9660, proc,..) -/proc/loadavg: batazbesteko sistema karga -/proc/locks: blokeoak -/proc/memstat: ram eta swap memoriaren egoera -/proc/modules: kargaturiko kernel moduluak (Driberrak, suhesiak,..) -/proc/partitions: disko partizioen egoera -/proc/version: sistemaren bertsioa, zehaztasun handiakin -/proc/uptime: sistemak martxan daraman denbora -/proc/stat: zpu, memoria, diskoen sarrera/irteera egoera... ... e.a. Direktorio interesgarriak daude ere, aipatzekoa da /proc/sys Non sistemaren (behe-mailako) balioak alda ditzakegu. espoz@sistema# cd /proc/sys espoz@sistema# ls /debug /dev /fs /kernel /net /proc /vm net/ direktorioaren barruan sareari dagozkion balio aunitz alda daitezke, horietariko askok flag bereziak dira zenbait aukera aktibatu/desaktibatzeko. Pena merezi du ipv4/ direktorioari begirada bat botatzea. Dena den, insistitu behar da, balio hauek unix batetik bestera aldatuko dira. Baina OROKORREAN sistema ezagutzeko balioko digu edozein kasutan. Segi ikertzen... Ikusi artio. exit -Espoz&Mina- 6. Kultura __________________________ <6> Posible al da etorkizuna ezagutzea matematikaren bitartez? Bai noski!! Psiko-historiaren bitartez etorkizuna epe luzean aurreikusi daiteke. Horretaz da mintzo Isaac Asimov-en Foundation liburu sorta. Titulua: Foundation (Prelude to Foundation, Foundation and empire, Towards Foundation, Second Foundation,..) Egilea: Isaac Asimov http://www.asimovonline.com/ Web gune ofiziala Historio luze hau etorkizun urrun batean gertatzen da, non gizakiak lurra ahaztuta daukate eta espazioan zehar bizi dira, inperio handi baten pean. Matematikari xume batek teoria ausarta dauka: gizarte multzoen joera, etorkizuna matematikoki asma daiteke. Teoria hau matematika biltzar batean aurkezten du, eta hortik aurrera arazoak hasten dira Inperio horren hiriburuan Trantor planetan, CLEON enperadorea psiko-historiaren berri dauka, eta bere barne ministrari maltzurra matematikariaren atzetik bidaliko du. Matematikariak ihes egiten du eta unibertsitate batetan babestuko da (unibertsitateak santutegiak bezala ikusten dira). Pixkanaka teoria hori ekuaziotan isladatuko da psiko-historia benetako zientzia batean bilakatuz. Baina beti ere, etorkizuna ezagutzea arriskutsua izan daiteke, horregatik matematikariak Fundazioa sortzen du (bi fundazio hobe esan) ikerkuntza babesteko.Protagonistak Kaosa ekidetea du helburu, eta etorkizuna aztertuz bere jarraitzaileei gida bat emango die bide on batetik jarraitzeko. Bide horretan alterazio arriskutsuak ere agertuko dira (Mulo), ekuazioetatik ihes egiten dituzten posibilitateak, eta fundazioa etorkizunaren norantza mantentzen saiatuko da. Baina etorkizuna ezagututa egungo ekintzak horri begira moldatzen baditugu, nolakoa da etorkizuna? kalkulatuta daukaguna ala guk manipulatzen duguna? Asimov-ek liburu mordoa idatzi du, eta zientzia-fikziozko egilerik garrantzitsuenetarikoa da zalantzarik gabe. Bere liburu askok erroboten munduaz hitzegiten dute, erroboten ikuspuntutik. "Fundazioa"n erroboten aipamenak ere badaude, Asimov-en beste liburu sorta hori ezagutzeko gonbidapena izan daitekeena. -km- 7. Estekak,Oharrak,Agurrak __________________________ <7> Bigarren alea agortu da. Urrengo urtera arte ez dugu besterik aterako ;) Pixkanaka hobetzen saiatuko gara denon artean. Ez ahaztu hauexek direla ezinearen helbideak: http://www.jakin.tk/ http://www.angelfire.com/zine2/jakinezine/ http://jakinezine.galeon.com/ Webguneak ez daude oso landuak, baina egia esan web gune landu bat gutxienezko ardura da momentuz; ezinean zentratu beharra daukagu. Ezinearen hasieran hiztegi batetik ateratako definizio bat sartzen dugu. Lehen alean ateratako definizioarekin batzuk moskeatu egin dira, arrazoiarekin. Hacker baten definizioa ematea ez da erreza eta polemika zahar bat da. Norbaitek horri buruz idatzi nahi badu, ongi etorria izanen da. CALL FOR PAPERS!!!: bai,artikulu bila gabiltza BETI. Momentu hauetan materiala badaukagu hurrengo zanbakitarako, hala ere zure lanaren beharrean gaude. Zure artikuluak ez du zertan teknikoa izan behar, eta tekonologiaren inguru zabalean mugitu daiteke: software librea, Sistema eragileak, WiFi, hacktibismoa, hacklab-ak, birusak,e.a. Edozer gauzarako gure email helbidera jo dezakezu: jakin@mailbox.co.za (edo jakinezine@hispavista.com) Zure kezkak, zalantzak, ideiak espero ditugu, ea denon artean proiektu hau hobetzen dugun. Email bitartez lehen animoak jaso ditugu eta eskertzekoak dira, baina zuen artikuluak ere espero ditugu. Gogoratu behin eta berriro: jakin@mailbox.co.za. beste bar arte ai0!! -edit-