<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Qualsiasi &#187; nc</title>
	<atom:link href="http://www.qualsiasi.net/tag/nc/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.qualsiasi.net</link>
	<description>perchè a tutti piace il qualunquismo.</description>
	<lastBuildDate>Sun, 02 May 2010 08:37:57 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Esperimenti con Netcat</title>
		<link>http://www.qualsiasi.net/2009/esperimenti-con-netcat/</link>
		<comments>http://www.qualsiasi.net/2009/esperimenti-con-netcat/#comments</comments>
		<pubDate>Sun, 19 Apr 2009 12:19:51 +0000</pubDate>
		<dc:creator>Qualsiasi</dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[nc]]></category>
		<category><![CDATA[netcat]]></category>

		<guid isPermaLink="false">http://www.qualsiasi.net/?p=57</guid>
		<description><![CDATA[La man page ($ man nc) lo definisce &#8220;TCP/IP swiss army knife&#8221;, e ha ragione. L&#8217;ho usato per fare di tutto. Trasferire file, controllare le impostazioni del browser, e anche per puro e semplice divertimento. In questo articolo vediamo come usarlo per giocare con i browser e i server web, anzi, vediamo come usarlo in [...]]]></description>
			<content:encoded><![CDATA[<p>La man page ($ man nc) lo definisce &#8220;TCP/IP swiss army knife&#8221;, e ha ragione. L&#8217;ho usato per fare di tutto. Trasferire file, controllare le impostazioni del browser, e anche per puro e semplice divertimento. In questo articolo vediamo come usarlo per giocare con i browser e i server web, anzi, vediamo come usarlo in un modo assolutamente poco utile. Ma per imparare va bene così.</p>
<p>Prima cosa, vediamo come intercettare la richiesta che un nokia N78 manda ad un server web quando richiede la homepage, per farlo apriamo un terminale e diamo il comando:</p>
<blockquote><p>$ nc -l -p 8080</p></blockquote>
<p>Dove nc è appunto netcat, -l dice di stare in ascolto, precisamente sulla porta 8080 (-p 8080), fatto questo apriamo il browser sul telefono, connettiamoci alla Wifi domestica, e digitiamo http://ip_del_pc:8080 come destinazione, nel mio caso l&#8217;ip è 192.168.1.10</p>
<div id="attachment_58" class="wp-caption aligncenter" style="width: 250px"><a href="http://www.qualsiasi.net/wordpress/wp-content/uploads/2009/04/screenshot0004.jpg"><img class="size-full wp-image-58" title="screenshot0004" src="http://www.qualsiasi.net/wordpress/wp-content/uploads/2009/04/screenshot0004.jpg" alt="Browser dell'N78" width="240" height="320" /></a><p class="wp-caption-text">Browser dell&#39;N78</p></div>
<p>Confermiamo, e poco dopo il terminale ci darà in output la richiesta inviata dal telefono, ecco come si presenta il terminale.</p>
<blockquote><p>$ nc -l -p 8080<br />
GET / HTTP/1.1<br />
Host: 192.168.1.10:8080<br />
Accept: text/html,text/css,multipart/mixed,application/java-archive, application/java, application/x-java-archive, text/vnd.sun.j2me.app-descriptor, application/vnd.oma.drm.message, application/vnd.oma.drm.content, application/vnd.oma.dd+xml, application/vnd.oma.drm.rights+xml, application/vnd.oma.drm.rights+wbxml, application/x-nokia-widget, */*<br />
Accept-Charset: iso-8859-1, utf-8; q=0.7, *; q=0.7<br />
Accept-Encoding: gzip, deflate, x-gzip, identity; q=0.9<br />
Accept-Language: it;q=1.0,en;q=0.5,fr;q=0.5,de;q=0.5,es;q=0.5,pt;q=0.5<br />
User-Agent: Mozilla/5.0 (SymbianOS/9.3; U; Series60/3.2 NokiaN78-1/20.149; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/413 (KHTML, like Gecko) Safari/413<br />
X-Nokia-MusicShop-Version: 09.0820.9<br />
X-Nokia-MusicShop-Bearer: WLAN<br />
x-wap-profile: &#8220;http://nds1.nds.nokia.com/uaprof/NN78-1r100.xml&#8221;</p></blockquote>
<p>Con CTRL+C chiudiamo netcat, e vediamo cosa fare. Innanzitutto noto con piacere i richiami a KHTML e WebKit, roba molto seria. Vedo che nell&#8217;User-Agent si può vedere addirittura quale versione del firmware sto utilizzando (20.149) e poi ci sono riferimenti al Nokia MusicShop, vabbè. Prendiamo questa richiesta, da GET fino in fondo e salviamola in un file, facciamo attenzione a come finisce il file, dopo xml&#8221; devono esserci SOLO due &#8220;a capo&#8221;, ovvero premete invio due volte. Prima di salvarlo modificate la linea Host, cambiate :8080 in :80, o con la porta con cui è configurato il vostro apache (default :80), io l&#8217;ho salvato come ~/N78.get . Ora lanciamo Apache, sulla mia linux box si fa con (da root)</p>
<blockquote><p># apachectl start</p></blockquote>
<p>Sulla vostra potrebbe essere diverso (ad esempio /etc/rc.d/httpd start) documentatevi. Ora che abbiamo un webserver in esecuzione, procuriamoci una risposta valida alla richiesta che ci siamo salvati.</p>
<blockquote><p>$ nc 192.168.1.10 80 &lt; ~/N78.get<br />
HTTP/1.1 200 OK<br />
Date: Sun, 19 Apr 2009 11:24:13 GMT<br />
Server: Apache/2.2.10 (Unix) DAV/2<br />
Last-Modified: Sat, 20 Nov 2004 20:16:24 GMT<br />
ETag: &#8220;404df-2c-3e9564c23b600&#8243;<br />
Accept-Ranges: bytes<br />
Content-Length: 44<br />
Content-Type: text/html</p>
<p>&lt;html&gt;&lt;body&gt;&lt;h1&gt;It works!&lt;/h1&gt;&lt;/body&gt;&lt;/html&gt;</p></blockquote>
<p>Ovviamente in questo caso il server è in esecuzione sulla macchina all&#8217;ip 192.168.1.10 porta 80 (notare che per la connessione in uscita non si usa -p, ma si scrive solo la porta separata ocn uno spazio dall&#8217;ip), se non volete avviare apache, o non l&#8217;avete installato, cambiate Host in N78.get con, ad esempio www.un_sito_a_vostra_scelta.com e lanciate</p>
<blockquote><p>$ nc www.un_sito_a_vostra_scelta.com 80 &lt; ~/N78.get &gt; ~/N78.page</p></blockquote>
<p>Notare che ho aggiunto un piccolo dettaglio, la redirezione dell&#8217;output nel file ~/N78.page, per comodità. Sappiate che &#8216;nc&#8217; resterà in esecuzione finchè il server non deciderà di interrompere la connessione, se volete interrompere prima, usate CTRL+C. Bene, ora abbiamo una risposta HTTP completa e valida da poter rimandare indietro al telefono.</p>
<blockquote><p>$ nc -l -p 8080 &lt; ~/N78.page</p></blockquote>
<p>Quando riceve una connessione netcat invia i contenuti del file ~/N78.page , ora puntiamo il telefono di nuovo all&#8217;indirizzo di prima e vediamo se funziona.</p>
<div id="attachment_59" class="wp-caption aligncenter" style="width: 250px"><a href="http://www.qualsiasi.net/wordpress/wp-content/uploads/2009/04/screenshot0005.jpg"><img class="size-full wp-image-59" title="screenshot0005" src="http://www.qualsiasi.net/wordpress/wp-content/uploads/2009/04/screenshot0005.jpg" alt="Pagina di benvenuto di Apache 2" width="240" height="320" /></a><p class="wp-caption-text">L&#39;esperimento funziona!</p></div>
<p>Bene, fine dell&#8217;esperimento. Un ultima cosa, vi lascio i comandi, che dovreste aver già capito come funzionano, per trasferire un file. Sul pc ricevente (che supponiamo abbia ip 10.0.0.1)</p>
<blockquote><p>$ nc -l -p 8080 &gt; ~/file.ricevuto</p></blockquote>
<p>Sul pc mittente (il cui ip non ci interessa)</p>
<blockquote><p>$ nc 10.0.0.1 8080 -q0 &lt; ~/file.da.inviare</p></blockquote>
<p>Il parametro -q0 dice di interrompere subito la connessione dopo aver ricevuto un EOF (End of file). In questo caso è obbligatorio a fine trasmissione un controllo con &#8216;md5sum&#8217; per accertare che i due file siano uguali.</p>
 <img src="http://www.qualsiasi.net/wordpress/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=57" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://www.qualsiasi.net/2009/esperimenti-con-netcat/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
