Antaŭ kelkaj tagoj Mi rakontis al ili pri FlatPress, retejo (CMS) per kiu vi povas havi blogon aŭ ion similan sen uzi datumbazojn, aŭ multe kompliki 🙂
Nu, mi havas en mia tekkomputilo a FlatPress por personaj notoj, aferojn, kiujn mi ne volas forgesi kaj tial mi skribas ilin en ĉi tiu persona blogo. Sed, kiel pluraj el vi devas jam scii ... Mi estas iom paranoja pri sekureco, kaj, se temas pri la sekureco de MIAJ pensoj, vi tute ne scias, kiom paranoja mi povas esti
Do mi alfrontis la problemon: Kiel per FlatPress mi povas protekti la tutan enhavon sur ĝi?
Mi pensis pri pluraj aplikoj, kiuj permesas ĉifri datumojn, sed ... neniu faris ĝuste tion, kion mi volis, do mi mem okupiĝis pri la tasko programi tion, kion mi volis.
Nun mi montros al vi skripton, kiun mi kreis, kiu faras la jenon:
1. Ĝi montras dialogujon demandante ĉu vi estas KZKG ^ Gaara, se vi premas NE la skripto fermiĝas, se vi premas JES ĉio daŭras normale.
3. Se vi premas Nuligi, la skripto fermiĝas, nun venas unu el la skriptoj. 😉 ...
3.1. La logiko estas, ke la skripto komparas la pasvorton, kiun ni skribas, kun unu, kiu jam estas antaŭdifinita ene de la sama skripto, kaj se la pasvortoj kongruas, ĝi daŭre funkcias, kaj se la pasvortoj ne kongruas, tiam aperos erarmesaĝo. La problemo estas, ke se ni metas la ĝustan pasvorton en la skripton tiel, ĉiu ajn, kiu malfermas la skripton kun tekstredaktilo, povus vidi la ĝustan pasvorton tre klare .. kaj ĉi tio miaj amikoj, ĝi estas simple nepardonebla fiasko.
3.2. Por eviti meti la pasvorton tiel en simplan tekston en la skripto, mi uzis MD5. Tio estas, komence de la skripto, mi deklaris, ke la ĝusta pasvorto estas «2dac690b816a43e4fd9df5ee35e3790d«, Kaj jen la MD5 de:«de linux«. ... Mi komprenas nenion !! ... 😀
Ni detaligu iom pli. Se mi nun skribas al dosiero (ekzemple, ~ / pass.txt) de teksto: de linux
Se en fina stacio mi skribas: md5sum ~ / pass.txt
Ĝi revenos al mi: 2dac690b816a43e4fd9df5ee35e3790d sum
Kaj ... kiel vi povas vidi, tiu unua kolumno, kiu havas multajn nombrojn kaj literojn en neniu ŝajna ordo, estas identa kiel tiu, kiun mi metis supre, kaj ĝi estas tiu en la deklarita skripto.
Nu, tiu unua kolumno estas la MD5 de de linux ????
Se ili metas la jenon, ĝi redonos nur la unuan kolumnon, kiu interesas nin: md5sum ~/pass.txt | awk '{print $1}'
4. Do la funkciado de la skripto en ĉi tiu specifa parto estas:
4.1. La skripto metos la pasvorton, kiun vi skribis, en provizora dosiero nomata temp.txt, kaj ĝi ĉerpos la MD5 el la enhavo de tiu dosiero per la komando:
md5sum temp.txt | awk '{print $1}'
4.2. Se la MD5 de la pasvorto, kiun vi ĵus skribis, NE estas la sama kiel tiu, kiun ĝi difinis (tio estas, tiu skribita en la skripto), ĝi fermiĝos kaj donos eraron:
5. Kiam la pasvorto kongruas, la skripto faros serion de paŝoj, en mia kazo:
5.1. Ĝi eniros la dosierujon / hejmo / dividita / gastigita / - » cd / hejmo / dividita / gastigita /
5.2. La dosierujo FlatPress nomiĝas "mi", kaj ĝi estas kunpremita en .RAR protektita per pasvorto (la pasvorto estas la sama kiel ĝi devus esti starigita antaŭe), do la skripto malzipigos tiun dosieron (me.rar) - » rar x me.rar -hp $ MWORD
malofta x - »Kion ĝi faras estas malkunpremi dosierojn kaj dosierujojn konservante la saman ordon, kiun ili havas.
mi.rar - »Jen la dosiero, kiun mi volas malzipigi.
-hp $ MWORD - »Ĉi tie mi diras al vi, ke vi devas uzi pasvorton por malzipigi la dosieron, kaj la pasvorto estas la variablo $ MWORD (ĉi tiu variablo estas la pasvorto, kiun ni enigis antaŭe)
5.3. Do, se ĝi estis elzipigita bone, mi plu forigas la dosieron me.rar ... kial? Nu, ĉar ne havas sencon, ke la .rar ekzistas, se mi laboras kun la dosieroj, kiujn mi havis interne, kaj tiuj dosieroj ŝanĝiĝas ĉar mi skribas novajn aferojn en la blogo - » rm min.rar
5.4. Mi devas ŝanĝi la permesojn por ke ĉio funkciu bone - » chmod 777 -R mi / (memoru, ke la dosierujo me / estas tio, kio enhavis la kunpremitan me.rar)
5.5. Ĝi montros al mi fenestron, kiu diras al mi, ke mi havas 10 sekundojn por malfermi "la" retumilon .... WTF!, Kion ĉi tio signifas? ...
Ĉi tio eblas, ĉar la skripto kontrolas ĉiun 3 sekundojn, se Rekonq estas malfermita aŭ ne, se ĝi detektas, ke ĝi estas malfermita, la skripto faras nenion, sed se ĝi detektas, ke ĝi NE estas malfermita, ĝi plenumas: rar a me.rar -hp $ MWORD me / * && rm -R me /
Kio signifas, ke ĝi kunpremos la dosierujon Mi / en mi.rar (kaj ĝi metos pasvorton, kiu estus la sama kiel ni jam vidis), kaj post kiam vi kunpremas ĝin kaj se ne estis eraroj, ĝi forigos la dosierujon Mi / kun ĝia tuta enhavo.
5.5 (b). Kiel ĉi tio helpas nin? ... simple, ĉi tio evitas, ke ni devas memori, ke ni devas protekti nian enhavon denove, ĉar ni nur bezonas ĉesi labori pri ĝi (fermu la retumilon) kaj la skripto plenumos la tutan reston de laboro work
6. Preta, ĉio ĉi estis klarigita ĝenerale 🙂
... kvankam ankoraŭ ekzistas alia detalo 😀
La skripto havas eĉ pli grandan protekton, protekto malebligita (komentita) estas jenaj:
if [ "$USER" != "$ME" ]; then
rm *.sh
kdialog --error "Sorry but u are not me. Auto-destroying..." --title "Im Me..."
exit
fi
Kion ĝi faras estas simpla. La variablo $ USER estas tutmonda variablo de la sistemo, se en fina stacio metita:
echo $USER
Vi vidos, kion via uzanto montras al vi ... nu, la logiko de ĉi tiuj linioj estas simpla.
Se $ USER ne kongruas kun la variablo $ ME (kaj ĝi estis deklarita de mi en la skripto, kaj ĝi estas: "gaara") la skripto forigos ĈIUJN dosierojn. .sh kiuj estas en tiu dosierujo, tio estas, ĝi memdetruos 😉
Ĉi tio celas malebligi al iu alia plenumi la skripton sur alia komputilo hehehehe.
Kaj nu, mi ne pensas, ke estas multe pli por klarigi, mi lasas la manuskripton:
Mi scias, ke multaj trovos ĝin ekstreme kompleksa, sed ĝi efektive timigas pli ol ĝi devus ... la skripto havas vere simplan funkcian logikon, por simpla celo.
Mi faris ĉi tion por plenumi tre specifan bezonon mian, mi dividas ĝin esperante, ke iu alia linio aŭ ideo klarigita ĉi tie povas servi al iu 😉
Cetere, la skripto estas celita por KDE, ĉar la dialogaj skatoloj (fenestroj), kiujn ĝi montras, estas de KDE (uzante KDialog), sed ĝi povas esti adaptita por Gnome / Unity / Cinnamon / Mate uzante Zeneco, aŭ uzu ĝin 100% en terminalo simple uzante la dialogan komandon.
Kaj jes, la skripto ankoraŭ havas iujn aliajn difektojn, ekzemple se la skripto malzipigas la .rar, kaj tiam iu perforte fermas (mortigas) la skripton, la enhavo de la .rar estos senprotekta, estas iuj detaloj, kiuj restas por esti poluritaj. ... sed hej, ni devas ankaŭ regi, ke neniu povas kontroli nian komputilon 😀
Por fini mi volas klarigi, ke mi NE estas programisto, des malpli, mi ne konsideras min tia, mi imagas, ke vi povas optimumigi liniojn en la kodo, aŭ uzi iun funkcion por plibonigi la funkciadon de la skripto ... sed mi diris, mi ne estas programisto 😉
Ĉiujn demandojn, kiujn ili havas pri ĝi, ili diras al mi, kvankam la skripto eble ne utilas al ili ĉar ili ne bezonas ĝin, ili ĉiam povas lerni iun alian konsilon el ĝi 😀
salutoj
PD: mi scias tion vigla li diros, ke mi estas tro paranoja ... aŭ ke mi perdas mian tempon, sed ĝi ne estas tia. Mi volis ion tre specifan, tre specifan sekurecan sistemon, kaj mi mem programis ĝin ... kiel friponeca tio estas? ... LOL !!
41 komentoj, lasu la viajn
Ĉi tio estas interesa, sed mi pensas, ke la demando pri jes / ne tre furoras xD
Kaj kion vi pensas, anstataŭ uzi rar, kiu estas propra kaj ne ofertas veran sekurecon, anstataŭigu ĝin per gpg, kiu estas sekureca programaro pli ol pruvita tra la jaroj, kaj ekzistas en preskaŭ ĉiuj distribuoj 😉
Alia afero: vi povas doni al md5sum ĉenon, vi ne bezonas krei provizoran dosieron. Ĉi tie mi ankaŭ rekomendas vin iri al sha, kiu estas multe pli sekura, provu en la fina stacio: shasum
Saluton!
Saluton kaj dankon pro via komento 😀
GPG permesas al mi paki adresaron kun ĝia tuta enhavo? Mi vere vere uzis ĝin por individuaj dosieroj, ne por dosierujoj enhavantaj subdosierujojn kaj dosierojn.
ooo ... bonege pri shasum, mi ne konis lin 😀
Mi daŭrigos modifi la skripton por uzi ĉi tiun, kaj ... jes !! vera, kun simple: eoo "$ PASVORTO" | shasum Mi jam ricevas la ĉenon, efektive ne necesas skribi ĝin al dosiero :)
Koran dankon pro via komento, mi jam lernis ion novan 🙂
salutoj
estas la sama afero, kiun mi demandis ...
Kion vi bezonus estas eltrovi kiel GPG ĉifri dosieron kaj pasigi al ĝi la pasvorton sur la sama linio ... ekzemple:
gpg -e file.tar.gz –pasvorto elpassword
Iu ideo kiel fari ĝin? 🙂
Por ĉifri dosierujon c / gpg, vi devas unue paki ĝin per tar.
tiam, por ĉi tiu kazo, estas oportune uzi simetrian ĉifradon, kun la parametro -c (vidu vikipedion pri la diferenco inter simetria kaj nesimetria ĉifrado).
ĉi tio tiam estus io kiel:
tar -czf destination.tgz source_directory / && echo $ passwd | gpg –batch –compress-level 0 -c –passphrase-fd 0
ĉi tio kreos kunpremitan dosieron nomatan "destination.tgz" kaj la ĉifritan dosieron nomatan "destination.tgz.gpg". kaj la fonta dosierujo kaj la kunpremo mem devas esti forigitaj por sekureco (notu la komandon de shred
deĉifri:
echo $ passwd | gpg –batch -d –passphrase-fd 0 encryption_file.tgz.gpg | tar -xz
tio ĉerpus la dosierojn en la aktuala dosierujo (tiam mv povas esti uzata por movi ilin aliloken)
Ajna demando, respondu ĉi tiun komenton 🙂
Saluton !!
he, atentu pri duoblaj streketoj (-) kaj unuaj streketoj (-) ... ĉu estas maniero skribi ion kvazaŭ kodon por ke la formato ne ŝanĝiĝu?
prueba de codigo -- -
[kodo] testkodo - - [/ kodo]
Mi elspezas ĝin pli detale
kunpremi kaj ĉifri:
tar -czf destino.tgz directorio_fuente/ && echo $passwd | gpg –batch –compress-level 0 -c –passphrase-fd 0
Notu, ke jen du paŝoj: unue kreu la kunpremitan dosieron kaj poste, se ne okazis eraro, daŭrigu per la ĉifrado (ĉenante per &&)
deĉifri kaj malzipigi:
echo $passwd | gpg –batch -d –passphrase-fd 0 archivo_cifrado.tgz.gpg | tar -xz
salutojn!
Jes, fakte hieraŭ hejme mi legis la gpg-homon kaj estis ĉio, kion mi bezonis
Fakte mi ne tute faris ĝin tiel, mi ne uzis eoon aŭ kunpremon, mi faris afiŝon pri ĉi tio, mi nur afiŝis ĝin.
Koran dankon pro la helpamiko, mi vere faras.
Mirinde! Mi nur serĉis ion tian kaj mi renkontis vian artikolon. Mi provos ĝin por protekti miajn datumojn. Se temas pri komputila sekureco, vi neniam povas esti tro paranoja. Dankon
Dankon haha.
Ĉu vi komprenis kiel funkcias la skripto, ĉu ne?
Ŝajnas multe pli kompleksa ol efektive lol.
Dankon pro la komento, vere 😀
salutoj
PS: Efektive sekureco neniam sufiĉas hahaha.
Iom kostis al mi kompreni ĝin (mi legis ĝin 3 fojojn) ĉar mi uzas Linukson dum mallonga tempo. Sed ĝi estas vere simpla kaj ĉiam plaĉas lerni tiajn aferojn. Saluton kaj dankon denove.
La grava afero estas kompreni ĝin hehe. Mi provis klarigi ĉion ekstreme detalan, sed mi pensas, ke mi etendis tro multe lol.
Dankon al vi 🙂
Vej, tre bona skripto 🙂
PS: Paranojeco superas 9000! xD
hahahahahahahaha estas mi ... LOL !!
Rigardante vian skripton, mi pensas, ke ĝi povas esti farita per xdialog, se vi ne havas kde :)! Saluton
Ho, mi ne sciis pri xdialog ... Mi devos rigardi por vidi 😀
Dankon por la informo.
anstataŭ rar kial ne uzi tar.xz / gz kaj gpg?
ĝi estas ĉar vi jam havas ĝin rar, kie vi havas vian CMS
Bonega @ KZKG ^ Gaara antaŭ tagoj mi pensis pri io tia, sed mi ekzamenas, do mi ne havis tempon por io, kaj subite mi vidas vian artikolon ....
Mi provos ĝin venontsemajne 🙂
Dankon, iuj detaloj ĉi tie mi estas 😀
xD Mi komprenis nenion uu sed se mi ŝatus kiel ĝuste uzi kdialog en la skriptoj, kiel ricevi mesaĝon en la KDE-sciigilo
Por ricevi mesaĝojn en KDE-sciigoj provu instali la pakon: libnotify-bin
Tiam en fina stacio vi metas:
notify-send "texto texto texto"
Kaj vi vidos kiel mojose 😀 ... kaj ĉi tio funkcias por KDE, Gnome, Unity, Cinnamon, Mate kaj Xfce 😉
Tamen en ĉi tiu skripto mi ne uzas sciigojn kiel tiajn, sed nur KDialog-fenestrojn. En fina stacio:
kdialog
Kaj vi vidos la helpon tie 😉
Salutojn 😀
Koran dankon o /
Saluton, bona afiŝo, nur sugesto, indas, ke per md5 ĝi ne videblas kun nuda okulo, sed iuj scivolemuloj povas uzi ĉielarkan tablon por vidi ĉu la pasvorto konvertita en md5 estas tie interne, mi rekomendas uzi bcrypt (http://bcrypt.sourceforge.net/), ĝi estas nur sugesto, vi povas preni ĝin por iu ajn okazo, Salutojn.
Dankon 😀
Fakte jes, MD5 ne estas perfekta kaj estas iuj, kiuj sukcesis akiri pasvortojn, mi rigardos ĉi tiun programon 😉
Dankon pro via komento.
kun la simetria nur en kdialog ĝi petas al vi la pasvorton
kaj kun la nesimetria uzante publikan ŝlosilon.
Mi devas klarigi, ke mi ne havas spuron de programisto.
Jes, mi jam sukcesis ĉifri per GPG (fakte mi ĵus afiŝis pri ĉi tio) hehe.
KZKG ^ Gaara ĉiam legis vian afiŝon.
Konstruu unu por uzi kun XFCE.
Kiso. Multekosta
Saluton kaj antaŭ ĉio, bonvenon al la blogo 😀
hahaha dankon, mi scias ke kelkfoje estas malfacile ĉar mi verkas iom te technicalnikajn aferojn, sed mi ĉiam provas klarigi ĉion kiel eble plej klare
Mi iomete eksperimentos kun XDialog aŭ Zenity por vidi ĉu ĝi funkcias por Xfce haha, mi faros la testojn en virtuala Xubuntu 🙂
salutoj
Tute utila homo, dankon!
Dankon!
Dankon, ĝi multe helpos min protekti iujn dosierojn
Mi devis adapti ĝin al zenito ĉar mi ne havas kde nuntempe: \
Jen mi lasas la skeleton, kiun mi uzos, adaptitan al zenito
http://paste.desdelinux.net/4641
Dankon denove kaj salutojn 😀
oooo bonege, dankon 😀 😀
Mi memoras, ke iu petis ĉi tion, sed por Xfce, kun Zenity ĝi funkcius en Xfce, ĉu ne?
Jes, nur ke la komando restis por aldoni la ekzekutajn komandojn, post pasigado de la pasvorto de shasum aŭ md5
Ĝi devus esti modifita al malsamaj bezonoj por ĉiu homo, por protekti diversajn aferojn en diversaj itineroj per malsamaj komandoj
Aŭ eble aldonante alian parton (GUI) por krei la sekurecan agordon de nia dosiero
Salutojn 😀
Mi havis tempon kaj xfce (en Archlinux) kaj mi jam plene adaptis la skripton kiel ĝi estis, ĉar xfce uzanta zenecon (mi pensas) ĉar tiu, kiun mi lasis supre, estis nur la skeleto, kiun mi uzis
http://paste.desdelinux.net/4644
Ĉu ĝi povas esti redaktita se ĝi havas cimon de la pasto?
Kio okazas estas, ke mi havas plurajn grafikajn ŝelojn kaj mi ne scias, ĉu ĝi funkcios en pura xfce, ekzemple en xubuntu
Salutojn 😀
Interesa che !!! Bona kontribuo !!!!!!
Mi tre novas pri programado, mi lernas BASH iom post iom ... sed iuj aferoj okazis al mi kaj ili eble aŭ eble ne utilas al vi.
Kiam vi diras, ke la senŝeligita skripto enhavas la pasvorton, kaj estus nepardoneble, ke iu malfermu ĝin kaj legu ĝin de tie ... vi proponas ĉi tiun tutan lertaĵon enigi la MD5 kiel protektan rimedon.
Kio estas sufiĉe bona kiel unua paŝo por malfaciligi la vivon de la estonta entrudiĝinto, sed rigardu la jenajn ideojn (kiuj eĉ povas esti aplikitaj unu sur la alia)
IDEO 1) Kio se vi konservas la pasvorton en dosiero en via maŝino kaj ne gastigas ĝin en la skripto?
EJ: en txt metu la ŝlosilon kaj konservu ĝin en / home / /bla/bla/key.txt
En via skripto vi nomas la ŝlosilon kiel KEY = "$ (cat $ HOME / bla / bla / key.txt)", tiam vi ĵetas la if $ questionkey = $ KEY, tiam .. ktp ktp
Tiel vi atingas 3 aferojn +1 avantaĝon:
1) Ke la pasvorto neniam estis en la skripto. (Vi evitas la MD5)
2) La vojo, kie estas la pasvorto, dependas de la uzantnomo. (Ĉiu, kiu volas malfermi ĝin, redirektas ĝin ie ajn) En 99.9% de kazoj la skripto malsukcesos.
3) Se vi volas pli da sekureco, forigu ĉiujn permesojn al la dosiero key.txt por ĉiuj aliaj uzantoj krom la via.
4) Avantaĝo: Porteblo ŝanĝi la pasvorton kiam ajn vi volas, sen redakti skripton. Ĉar la konfirmo estas ekstera per dosiero.
IDEO 2) Kio pri malklarigado de la tuta bash-skripto, do ĝi eĉ ne povas esti malfermita?
Unu maniero fari ĉi tion estas profiti de la fakto, ke vi bezonas kompili en C.
Poste ĝi enkondukas la skripton ene de C-kodo, kion ĝi nur faras nomi tiun Skripton (sed tio estas ene de la programo). En la momento de kompili ... ĉio restas interne kaj via eligo estas plenumebla ... kaj ne plu estas skripto. Estas homo, kiu jam faris "skripton", kiu faras la malklarigan procezon, kiu estas tre praktika.
Pliaj informoj ĉi tie: http://es.wikibooks.org/wiki/El_Manual_de_BASH_Scripting_B%C3%A1sico_para_Principiantes/Compilar_%28ofuscar%29_BASH_scripts_con_C_-_SHC
IDEO 3) Kio se vi metas virtualan kondiĉon en la skripton, kie ĝi bezonas administrantan pasvorton?
Ekzemple ekzekutu kondiĉon per "sudo" kaj poste daŭrigu per la skripto, se ne haltigi ĝin.
Tiel, la tuta protekto falus kiel ponto super via ROOT-pasvorto.
Nu, nenio pli ...
Saluton !!!!!!!! kaj tenu BASH.
HAHAHAHA Dankon 😀
Fakte nun mi uzas SHA512 ĉar ĝi estas multe pli bona ol MD5: https://blog.desdelinux.net/como-saber-la-suma-md5-o-sha-de-una-palabra-oracion-o-archivo/
Tiel kiel GPG kiel rimedo de protekto anstataŭ kunpremi per .RAR: https://blog.desdelinux.net/como-proteger-datos-con-gpg-de-forma-simple/
La problemo pri metado de la pasvorto en alian dosieron, estas ke tiam ĝi metus la pasvorton en alian lokon, jes, sed ĉu ĝi estus en simpla teksto? Se mi devas ĉifri ĝin (kio rekomendas), mi lasas ĝin en la sama skripto, nu ... Mi dubas tiel, ke iu povas rompi SHA512 hahahaha (vidu la 1an ligon kaj vi komprenos 😉)
Pri la permesoj, se iu uzas LiveCD, tiam li povus malfermi la .txt per la radiko LiveCD, do la permesoj ne estas tute la plej bona elekto.
Pri malklarigado de la Bash-kodo ... jes, mi pensis pri ĉi tio kaj la ideo estas GRANDA, la problemo estas, ke mi ne scias kiel fari ĝin, fakte mi eĉ ne scias, ĉu ĝi povas esti farita HAHAHA.
Ho atendu ... nun mi legis la reston de la komento O_O ... hehe, mi ne sciis, ke vi povus fari tion. Mi havas neniun ideon pri C aŭ C ++, sed eble indus provi lol.
Pri ideo 3, ne malbone 😀
Mi faris plurajn plibonigojn al la skripto ekde kiam mi publikigis ĉi tiun afiŝon, 2 estas tiuj, kiujn mi menciis en la ligoj komence de ĉi tiu komento, alia estas, ke se vi ŝanĝas iun ajn signon en la skripto, ĝi estas forigita. Kaj nun mi devas provi ĉi tion por malklarigi la kodon hahahaha.
Dankon pro via komento kaj ... jes, atendu, bash !!! HAHA
WTF !!!
Mi jam uzis SHC ... GE-NI-AL !!!! O_O
Tre bona skripto, hej kaj se vi uzas radikan kontrolilon, por povi ruli la skripton kiel sudo ./script
Vi nur devus aldoni ĉi tiun kodon komence
http://paste.desdelinux.net/4663
Saluto
KZKG ^ Gaara, amiko, mi pensas, ke plilongigi klarigon ne estas la problemo, tio estas bona por tiuj el ni, kiuj ne havas tiom da scioj. Artikoloj, kiuj ne instruas, estis publikigitaj ĉi tie, ili nur donas informojn pri io, kio ekzistas. Do ne senkulpigu vin kaj estu pli kun plilongigitaj klarigoj.
Por tiaj aferoj mi uzas http://www.truecrypt.org/
Ĉu iu povus dividi la skripton? Mi estas scivolema kaj ĉiuj ligoj ne funkcias. 🙁
Dankon.