blog

Wipe

Érdemes a wipe kézikönyvét átfutni. Pár érdekesebb gondolat az elejéről:

Be aware that harddisks are quite intelligent beasts those days. They transparently remap defective blocks. This means that the disk can keep an albeit corrupted (maybe slightly) but inaccessible and unerasable copy of some of your data. Modern disks are said to have about 100% transparent remapping capacity. You can have a look at recent discussions on Slashdot.

I hereby speculate that harddisks can use the spare remapping area to secretly make copies of your data. Rising totalitarianism makes this almost a certitude. It is quite straightforward to implement some simple filtering schemes that would copy potentially interesting data. Better, a harddisk can probably detect that a given file is being wiped, and silently make a copy of it, while wiping the original as instructed.

Recovering such data is probably easily done with secret IDE/SCSI commands. My guess is that there are agreements between harddisk manufacturers and government agencies. Well-funded mafia hackers should then be able to find those secret commands too.

Don't trust your harddisk. Encrypt all your data.

Ha a wipe futtatásakor nem a gyors módot választjuk, akkor 35-ször írja felül a fájlok tartalmát. Az első és utolsó négy kör véletlen adatokkal történik, a közbenső 27 pedig fix értékekkel. A módszer pontos leírását Peter Gutmann Secure Deletion of Data from Magnetic and Solid-State Memory című cikke tartalmazza.

Ez a 35 felülírás általában eltart egy ideig. Mondjuk 100 megabájt / szekundumos írási sebességgel és 100 gigabájtos lemezzel számolva egy kör 1000 másodperc. 35 kör 35 ezer másodperc. Ami úgy tíz óra. Ha egy terabájtos lemezről van szó, akkor már 100 óra. Egyszerűbb titkosítani az egészet, úgy csak a kulcsot kell biztonságosan törölni.

Ha megelégszünk kevesebb körrel is, akkor a -Q paraméter mellé ne felejtsük el megadni a -q kapcsolót, mert nélküle a -Q semmit sem ér.

Drupal szavazatok és felhasználók összeköthetősége

Azt hiszem a következő kép mindent elmond arról, hogy mennyire köthetőek össze egy Drupal szavazás szavazatai az azt leadó felhasználókkal:

Képernyőmentés egy Drupal oldalról, amelyen egy szavazásnál a felhasználók által leadott szavazatok láthatóak felhasználónként listázva.

Szavazáskor érdemes észben tartani, hogy ez megőrződik az idők végezetéig, és valószínűleg ugyanez a helyzet az egyéb szavazós oldalak nagy részével is.

Nyilván, egy egyszerű webes szavazásnál a szerver mindenképp megtudja, hogy mire szavazott a felhasználó, hacsak nem hozunk össze mondjuk JavaScripttel egy teljes anonimitást biztosító szavazást, de ez nem túl jellemző. Mindenesetre jobban örülnék, ha a választott opciót nem a felhasználó nevéhez köthetően tárolná a Drupal (és bármelyik másik webes rendszer sem).

A szavazatok nem összeköthető tárolásához csak két táblára van szükség:

szavazott felhasználók:

  • szavazás azonosítója
  • felhasználó azonosítója

szavazások állása:

  • szavazás azonosítója
  • opció azonosítója
  • leadott szavazatok száma

Szavazáskor a szavazott felhasználók táblába bekerül egy rekord a felhasználó és a szavazás azonosítójával. Így meg lehet akadályozni, hogy egy ember kétszer szavazzon. A szavazatát külön nem rögzítjük, az csak a szavazások állása táblába kerül be, konkrétan a választott opció számlálóját (leadott szavazatok száma attribútum) növeljük eggyel.

A dolog hátránya, hogy nem lehet szavazatot visszavonni (és újra szavazni), csak a szavazás teljes újrakezdésével.

(Biztos vagyok benne, hogy nem én vagyok az első, aki a fenti dolgot leírja, viszont hirtelen nem találtam semmilyen más oldalt, ami ugyanerről a témáról szól. Kapcsolódó linkeket örömmel fogadnék akár kommentben, akár e-mailben.)

Technikai részletek: Drupal 6, beépített Poll modul.

Advanced blog.hu comment filter

A userscripts.org-on már van egy kommentszűrő a blog.hu-s blogokhoz (Blog.hu komment filter 1.1), de elég fapados, kézzel kell a szkriptbe beleszerkeszteni a szűrendő felhasználók azonosítóit. A szkript keresését felhasználva újraírtam a kódot, most már minden komment mellé kerül egy „Mute” link. Rákattintva a GM_setValue() hívással perzisztensen tárolódik a némított felhasználó ID-ja, illetve a kommentek is frissítésre kerülnek. Továbbá a „Mute” gomb is le lesz cserélve „Unmute”-re.

Eltüntetni csak a komment szövegét tüntetem el. A fejléc megmarad, oda kerül a „Unmute” link, valamint így látni lehet mennyire volt érdemes használni a szkriptet, hány kommenttől szabadultunk meg. Továbbá, ha egy nem tiltott kommentelő hivatkozik a „@név” szerkezettel egy korábbi kommentre, akkor a hivatkozott komment megjelenítése egyszerűen engedélyezhető. Az avatar eltüntetését már nem volt kedvem megoldani, de bárki megteheti, a szkript letölthető a userscripts.org-ról.

Midnight Commander menüfájl szintaxis

Alább egy rövid leírás a Midnight Commanderben az Eszközök menüpont Menüfájl szerkesztése menüpontjával elérhető menüfájl szintaxisáról, amely menüt az F2 gombbal lehet előcsalogatni.

A leírás az mc kézikönyvére épül, amiből érdemes átfutni a Menu File Edit, illetve Menü szerkesztés című fejezetet.

A menüfájlban a sor első betűje lesz a gyorsbillentyű az adott menüponthoz. Utána az mc-vel szállított alapértelmezett fájlban egy tabulátor karakter következik, majd a menü neve. Nem feltétlenül muszáj ezt a szokást követni, a tabulátor karakter kimaradhat, de így valamivel kulturáltabban néz ki.

Az ezután következő, kötelezően szóközzel vagy tabulátorral kezdődő sorok lesznek a menü kiválasztásakor végrehajtandó parancsok. Ezeket az mc futtatás előtt kimásolja egy ideiglenes fájlba, amit a/tmp mappában helyez el és ott shell szkriptként futtat. Így használhatóak a szokásos shell szkript funkciók.

Ezeken kívül további lehetőség a szkriptekben a %f, %F, %d, %D, %t, %T helyettesítő karakterek használata. A %f az aktuálisan kiválasztott fájl nevét, a %d az aktuális könyvtár nevét, a %t az összes kijelölt (tagged) fájl nevét fogja tartalmazni. A nagybetűs változatuk a másik panelre vonatkozik. Még ezen kívül van néhány, érdemes megnézni az mc dokumentációját (Macro Substitution, illetve Makro helyettesítő).

A menüpontok nevei előtt meg lehet adni további feltételeket, amelyek eldöntik, hogy a menüpont megjelenhet-e a menüben, illetve alapértelmezett legyen-e. Ha nincsenek ilyen feltételek, akkor a menüpont mindig megjelenik.

A megjelenési feltételeket plusz jellel (+), az alapértelmezetté tételhez szükséges feltételeket pedig egyenlőségjellel (=) kell kezdeni.

Ezekben a feltételekben az f, d és t karaktereket használhatjuk. Az f-fel a fájl nevére vonatkozó kényszereket lehet megadni, például:

= f *.tar.gz | f *.tgz

Itt a *.tar.gz és a *.tgz shell minta, a helyes működéshez a menüfájl első sorában a

shell_patterns=1

beállításnak kell szerepelnie. Ha ez az érték nulla, akkor reguláris kifejezéseket kell megadnunk, ami így néz ki:

= f \.tar\.gz$ | f \.tgz$

A d karakter ugyanez, csak könyvtárnevekre, a t pedig a fájl tulajdonságaira vonatozik (fájl-e, könyvtár-e, olvasható-e stb.).

Ha az aktuális elem könyvtár:

= t d

Ha vannak kijelölt fájlok a panelen:

= t t

A kétfajta feltételt össze is lehet vonni (+= vagy =+), ilyenkor egy sorban megadható a megjelenítéshez szükséges feltétel, ami egyben alapértelmezetté is teszi a menüpontot.

Hibakeresésre alkalmazható a +? és az =?, ilyenkor minden feltétel kiértékelése után az mc megjeleníti az eredményt egy ablakban.

Ha kiértékelt feltételek alapján több menüpont is aktuális lehetne, akkor (nálam) az elsőt választja az mc.

Mellékletek:

Csak óvatosan az új CA-kkal

Firefox alatt három kattintással importálható egy CA a többi gyári tanúsítvány mellé. Ez azonban elég kockázatos lehet.

Először is, ez közel sem ugyanaz, mint amikor egy saját maga (vagy akárki) által aláírt tanúsítvánnyal rendelkező https linket látogatunk meg, majd adjuk hozzá ezt a tanúsítványt kivételként a böngészőnk megfelelő listájához. A „kivétel hozzáadása” funkció használatakor az oldal által küldött tanúsítvány csak az adott oldalhoz lesz érvényes. Ha CA-t importálunk, akkor a CA bármilyen weblaphoz tartozó tanúsítványt aláírhat és azt a böngésző el is fogja fogadni.

Ezzel önmagában még nincs is probléma, egy teljes támadáshoz egy man-in-the-middle támadásra is szükség van. Ha importáltuk a támadó CA-ját, ő ezután készít egy új tanúsítványt a tamadottnetbank oldalhoz, aláírja a CA privát kulcsával, beállít egy SSL-es webszervert, majd MITM támadás segítségével átirányítja a böngészőnket az ő szerveréhez.

A támadó webszervere által adott tanúsítványt olyan CA által van aláírva, amit a böngészőnk ismer és megbízik benne. Ott lesz a lakat az alsó sorban, és vígan használhatjuk az oldalt.

További adalék, hogy nem is feltétlenül kell, hogy a támadó CA-ját importáljuk, elég ha csak egy gyengén védett CA privát kulcsát megszerzi a támadó. Érdemes ránézni mondjuk a NetLock vagy a Microsec weblapján lévő doksikra, hogy egy rendes, például Mozilla Firefox által is elfogadott CA-nak milyen folyamatokra és szabályzatokra van szüksége.

Tehát, ha CA-t importálunk, érdemes feltenni a kérdést: Az importált CA tulajdonosa vajon mennyire vigyáz a privát kulcsára? Aztán mindenki döntsön saját belátása szerint.

Kis demó frissen installált GNU/Linux 5.0 (lenny) esetén:

Készítsünk egy CA-t:

lenny:~/cert# openssl req -new -x509 -days 3650 -keyout private-cakey.pem -out cacert.pem
Generating a 1024 bit RSA private key
....++++++
......................................................++++++
writing new private key to 'private-cakey.pem'
Enter PEM pass phrase:
Verifying - Enter PEM pass phrase:
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:HU
State or Province Name (full name) [Some-State]:Budapest
Locality Name (eg, city) []:Budapest
Organization Name (eg, company) [Internet Widgits Pty Ltd]:AAA Tamado CA
Organizational Unit Name (eg, section) []:
Common Name (eg, YOUR name) []:
Email Address []:

Exportáljuk ki Firefox által is értelmezhető formátumban:

lenny:~/cert# openssl x509 -inform PEM -outform DER -in cacert.pem -out cacert.cer

Kirakjuk webre, ami jelen esetben csak a saját gép:

lenny:~/cert# cp cacert.cer /var/www

A /etc/apache2/mods-available/mime.conf megfelelő részéhez írjuk be a következőt:

AddType application/x-x509-ca-cert .cer

Majd Apache újraindítás:

lenny:~/cert# /etc/init.d/apache2 restart
Restarting web server: apache2 ... waiting .

A mime típus beállítás nélkül nálam chemical/x-cerius típusúnak mondta a fájlt az Apache, így a Firefox nem ajánlotta fel a tanúsítvány telepítését, csak letölteni akarta azt. (Egyébként akár kézzel is importálhatjuk a CA-t: Szerkesztés / Beállítások / Haladó / Titkosítás / Tanúsítványkezelő / Hitelesítésszolgáltatók / Importálás, majd keressük ki a cacert.cer fájlt.)

Ezután ha Firefoxban beírjuk a http://localhost/cacert.cer címet, feljön a következő ablak:

Firefox böngészővel egy CA publikus kulcsát tartalmazó cer fájlra kattintás után megjelenő ablak, amelyben a böngésző megkérdezi, hogy akarjuk-e importálni a tanúsítványt, illetve megbízni abban.

Pipa az első checkboxba és OK. Ezzel be is került a hitelesítésszolgáltatók listájába a CA-nk (Szerkesztés / Beállítások / Haladó / Titkosítás / Tanúsítványkezelő / Hitelesítésszolgáltatók vagy Edit / Preferences / Advances / Encryption / View certificated / Authorities angol Firefox esetén).

Ha ezt megcsinálta a kliens, akkor készítsünk egy tanúsítványt a tamadottnetbank hoszthoz.

Először egy privát kulcsra lesz szükségünk:

lenny:~/cert# openssl genrsa -des3 -out tamadottnetbank.key 1024
Generating RSA private key, 1024 bit long modulus
.++++++
..................................++++++
e is 65537 (0x10001)
Enter pass phrase for tamadottnetbank.key:
Verifying - Enter pass phrase for tamadottnetbank.key:

Szedjük le a jelszót a privát kulcsról, az Apache-hoz úgysem kell:

lenny:~/cert# cp tamadottnetbank.key tamadottnetbank.key.org
lenny:~/cert# openssl rsa -in tamadottnetbank.key.org -out tamadottnetbank.key
Enter pass phrase for tamadottnetbank.key.org:
writing RSA key

Ezután készítsünk egy CSR-t (Certificate Signing Request), amit a CA alá tud írni:

lenny:~/cert# openssl req -new -key tamadottnetbank.key -out tamadottnetbank.csr
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:HU
State or Province Name (full name) [Some-State]:Budapest
Locality Name (eg, city) []:Budapest
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Tamado    
Organizational Unit Name (eg, section) []:
Common Name (eg, YOUR name) []:tamadottnetbank
Email Address []:

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:

Írjuk alá a CA-val a CSR-t:

lenny:~/cert# openssl x509 -req -in tamadottnetbank.csr -CA cacert.pem -CAkey \ 
private-cakey.pem -CAcreateserial -out tamadottnetbank.crt
Signature ok
subject=/C=HU/ST=Budapest/L=Budapest/O=Tamado/CN=tamadottnetbank
Getting CA Private Key
Enter pass phrase for private-cakey.pem:

Majd másoljuk be az Apache által várt helyre:

lenny:~/cert# cp tamadottnetbank.key /etc/ssl/private/ssl-cert-snakeoil.key
lenny:~/cert# cp tamadottnetbank.crt /etc/ssl/certs/ssl-cert-snakeoil.pem

(A SSLCertificateFile és SSLCertificateKeyFile Apache beállítások mondják meg a fájlok pontos helyét, amik Lenny alatt a fentiek.) Egy biztonsági mentés nem árthat, én most kihagytam.

Apache SSL engedélyezés és újraindítás:

lenny:~# a2ensite default-ssl
Enabling site default-ssl.
Run '/etc/init.d/apache2 reload' to activate new configuration!
lenny:~# a2enmod ssl
Enabling module ssl.
See /usr/share/doc/apache2.2-common/README.Debian.gz on how to configure SSL and create self-signed certificates.
Run '/etc/init.d/apache2 restart' to activate new configuration!
lenny:~# /etc/init.d/apache2 restart
Restarting web server: apache2 ... waiting .

A /etc/hosts fájl végére a következő kell még:

127.0.0.1 tamadottnetbank

Végül az eredmény, ha a https://tamadottnetbank/ oldalra navigálunk:

Firefox böngésző képernyőképe a tamadottnetbank oldalra navigáláskor. A képen látszik, hogy https kapcsolatról van szó, és érvényes a weboldal tanúsítványa.

A turpisság persze hamar kideríthető, ha a címsoron rákattintunk a tamadottnetbank feliratra:

Firefox böngésző képernyőképe az tamadottnetbank oldalra navigáláskor. A képen látszanak a tanúsítvány részletei is, köztük az, hogy az oldal tanúsítványát a korábban létrehozott Tamado CA írta alá.

Ugyanez működik bármelyik létező weboldallal, a MITM miatt nincs különösebb jelentősége, hogy létezik-e a támadott oldal, vagy sem.

Egyébként hasonló elven működik a Microsoft Forefront Threat Management Gateway is. A TMG is egy CA, aminek a tanúsítványát telepíteni kell a kliensekre. A TMG hivatalosan is MITM-et művel, mivel rajta keresztül érik el az internetet a felhasználók. Az SSL kapcsolatokat saját maga végződteti, megvizsgálja a tartalmukat, majd ismét SSL-be csomagolva, immár saját maga által létrehozott és aláírt tanúsítvánnyal továbbítja a kliensnek.

Egy apróság: Jelenleg (3.6.10) CA törlése után újra felvenni a CA-t nem engedi a Firefox („Ez a tanúsítvány már telepítve van hitelesítésszolgáltatóként.” hibaüzenet), csak ha leokézzuk a tanúsítványkezelő ablakát, majd újra megnyitjuk.

Olvasnivaló:

Stale NFS file handle

Ha Windows alatt megpróbálunk törölni egy olyan fájlt amit valamelyik másik program még használ, akkor hibaüzenetet kapunk, a fájl pedig marad a helyén. Linux/Unix alatt a fájl eltűnik a fájllistából, de ténylegesen csak akkor törlődik amikor az utolsó azt használó program is bezárta a fájlt.

NFS-en ez másképp van: a fájl rögtön törlődik. Ha valaki épp használja akkor a következő olvasásnál IOException-t fog kapni a fenti, Stale NFS file handle hibaüzenettel.

Forrás: Lucene in Action, 2nd edition

Hacktivity 2010

Ismét csak pár gondolat, viccesebb, vagy elgondolkoztatóbb idézet, megállapítás az idei konferenciáról:

  • Egy alap Windows telepítés önmagában is sok ezer fájlból és könyvtárból áll. Azért, hogy az igazságügyi szakértőnek ne kelljen minden egyes fájlt egyesével átnéznie, léteznek hash adatbázisok, amelyek a népszerűbb operációs rendszerek és programok fájljainak hash értékét tartalmazzák. Egy ilyet találtam: National Software Reference Library (NSRL) Project.
  • Sleuth kit: http://www.sleuthkit.org/
    • Két érdekesebb funkció a leírásából: Create time lines of file activity; Lookup file hashes in a hash database. Az előbb említett NSRL-t is tudja használni.
    • Az Autospy képes a fájlok kiterjesztése és valós, tartalmon alapuló típusa közötti különbségekre felhívni a figyelmet.
  • Tehát ha fel akarod bosszantani a gépedet vizsgáló szakértőt, akkor előtte rakj fel egy Windowst meg pár másik programot, és futtass egy szkriptet, ami minden fájlban megváltoztat egy bitet.
  • A töredezettségmentesített merevlemez növeli az igazságügyi szakértő esélyeit, hogy egybefüggő fájlokat találjon a lemezen.
  • A szteganográfiai eszközöket ne hagyd azon a gépen, ahol az elrejtett információk is vannak. Sokat segíthet a felkutatásban, ha tudják mit kell keresni.
  • Ugyanígy, ha a Windows fájljai közé rejtesz információt, az hamar kiderülhet egy hash adatbázis segítségével.
  • A programok által háttérben használt ideiglenes fájlokat nem törli (és írja felül) a secure wipe, úgyhogy jobb az egész merevlemezt titkosítani.
  • „Jogsértések vannak az interneten. Ilyenek történnek állítólag.”
  • A másolás nem lesz [újra] drága... a macskát nem lehet visszarakni a zsákba.
  • „Azért is neveztem guminőnek, mert akármit meg lehet vele csinálni.”
  • Céges belépőkártya hamisítása magánokirathamisítás lehet. Social engineering esetén érdemesebb az ügyféltől egy inaktivált kártyát kérni, és azzal próbálkozni.
  • „Mondjuk 1024-szer, hogy kerek szám legyen.”
  • Jogellenesen gyűjtött bizonyíték-e az, amit az igazságügyi szakértő szakért (szakértő adott), de őt még nem fizették ki?
  • Ártatlanságot alátámasztó adatok is lehetnek az gépeken. A számítógép általában tanúja a cselekményeknek.
  • Hálózati forgalomról is ajánlott hash-t készíteni, ezzel bizonyítva, hogy később nem piszkálták meg.
  • Angliában, USA-ban a folyamat a hiteles, itthon a szakértőt fogadják el igazmondónak.
  • Twitter, Facebook: az a baj, hogy hiteles forrásnak tekintjük.
  • Mi a jó stratégia, ha szájára vesz az internet? Kommunikációról van szó, nem technológiai kérdésről.
  • „Kérdés? Megjegyzést? Tiporjatok sárba nagy nyilvánosság előtt.”
  • JTAG felület akár támadási lehetőség is lehet.
  • Infrás távirányítóval is lehet buffer overflow-t okozni.
  • Ügyes multiplexer/demultiplexer set top boxhoz: Amikor az eszköz ellenőrzi a memória valódiságát, akkor az eredeti memóriacsiphez továbbítja a kéréseket, egyébként pedig egy saját, módosított IC-hez. Általánosságban utóbbiba ír, onnan olvas, onnan futtat kódot.
  • Titkosítási bukó: Háború idején, kódkönyv csere után megjelentettek egy érdekes cikket az egyik újságban. Az itteni nagykövet titkosítva hazaküldte a tartalmát. Az üzenetet elfogták, így kaptak egy ismert nyílt szöveghez egy titkosított változatot, aminek a segítségével már nem volt nehéz feltörni a többi üzenetet.
  • [A vírusokról szóló előadás közben nem akart lapozni a Power Point]: „Na mi történt itt? Vírus?!”
  • Fordított logika: Nem a vírusokat akarjuk keresgetni, hanem inkább a fájlok épségét, egészségét ellenőrizni. Ha megbizonyosodunk futtatás előtt, hogy a futtatandó fájl ugyanaz, mint ami eddig volt, akkor az esetlegesen belekerült vírusról azonnal értesülünk. A lappangási idő nulla lesz, ami nagyon rontja a vírusok terjedési esélyeit.
  • A Cisco eszközök legnagyobb védelme, hogy túl sok fajta firmware-rel futnak, nem egységes platform.
  • [Nyereménysorsolásnál]: „Valakit megátkoztak egy HP laptoppal. A többiek pedig felkerültek a HP spamlistára.”
  • Ha egy SitePlayer webszervert összecelluxozunk egy 9 Voltos elemmel, majd eldugjuk egy fali ethernet csatlakozóba. A hálózatosok el lesznek vele egy darabig, amíg megtalálják.
  • Vajon hack-elt belépővel menni egy ilyen konferenciára mennyire tűrt dolog?

Ékezetek eltávolítása fájlnevekből

Alább egy rövid szkript, ami képes eltávolítani a fájlok neveiből az ékezeteket. Pontosabban kiírja az ehhez szükséges mv parancsokat a kimenetre.

Elboldogul a könyvtárakkal is, és azzal az esettel is, amikor több ékezetes könyvtár van egy útvonalon.

#!/bin/bash

# Ékezettelenítő, v1.0
# palacsint, http://palacsint.hu/, 2010. 08. 28.

remove_ekezet() {
    echo "$@" | sed y/áéíóöőúüűÁÉÍÓÖŐÚÜŰ/aeiooouuuAEIOOOUUU/
}

DIR=.
if [ $# -eq 1 ]
then
    DIR=$1
fi

find $DIR -type f -or -type d | while read SOURCE
do
    DEST=$(remove_ekezet "$SOURCE")

    SOURCE_BASENAME=$(basename "$SOURCE")
    DEST_BASENAME=$(basename "$DEST")

    if [ "$SOURCE_BASENAME" = "$DEST_BASENAME" ]
    then
        # a fajl neve nem valtozik
        continue
    fi

    SOURCE_DIRNAME=$(dirname "$SOURCE")

    # ÁÁÁ/ÉÉÉ/ÍÍÍ eset kezelése
    TRANSLATED_SOURCE_DIRNAME=$(remove_ekezet "$SOURCE_DIRNAME")
    CURRENT_SOURCE="${TRANSLATED_SOURCE_DIRNAME}/${SOURCE_BASENAME}"

    echo "mv \"${CURRENT_SOURCE}\" \"$DEST\""
done

Letöltés: ekezettelenito.sh

Köszörű Klub

Plakátterv, jobboldalt egy sarokcsiszoló képével, baloldalt pedig a következő felirattal: Tisztelt Lakók! Ezúton értesítjük Önöket, hogy a Köszörű Klub hajnali, esti és hétvégi foglalkozásait 2010 nyarán ebben a házban tartja. A kiszűrődő hangok térítésmentesen hallgathatók. Üdvözlettel: A klubvezető / Amit ma megköszörülhetsz, ne halaszd holnapra.

Valahol a szemben lévő házban tolták kora reggeltől késő estig, de mire kirakhattam volna a plakátot, már abbahagyták szerencsére.

GAMF-gyűrű

Valahogy így néz ki:

 ezüst pecsétgyűrű GAMF-os logóval

A Kecskeméti Főiskola GAMF Karának hallgatói vagy végzettjei rendelhetik meg. A gyártást a Metal-Art Nemesfémipari Zrt. végzi. Kecskeméten Kincsesbolt néven van boltjuk, de Budapesten is elérhetőek, és itt is lehet rendelni, átvenni. A rendeléshez iskolalátogatási igazolás vagy diploma szükséges.

Tartalom átvétel