<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
	<channel>
		<title>e-secure</title>
		<link>http://www.e-secure.com.br/index.php</link>
		<description><![CDATA[keep your mind flying]]></description>
		<copyright>Copyright 2012, kl0nez</copyright>
		<managingEditor>kl0nez</managingEditor>
		<language>en-US</language>
		<generator>SPHPBLOG 0.5.1</generator>
		<item>
			<title>Android (reverse tethering) and access point !  <g:plusone size="small"></g:plusone></title>
			<link>http://www.e-secure.com.br/index.php?entry=entry120125-105052</link>
			<description><![CDATA[Caros,<br /><br />A ações abaixo são para voce conseguir transformar o seu android em um access point, compartilhando a conexão de internet que o seu computador já possui, pelo cabo USB.<br /><br />[wireless network]---[android device]--- usb ---[PC]--&gt; internet<br /><br /><b>Tool box:</b><br /><br />android device (samsung galaxy 5) -&gt; rooted, sshdroid, <a href="http://code.google.com/p/android-wifi-tether/" target="_blank" >android-wifi-tether</a> (opcional) <br /><br />PC -&gt; linux (testado no Debian e Ubuntu)<br /><br /><b>Passo 1:</b> Estabelecendo o link USB<br /><br />Conectar o android com o cabo USB<br /><br />config -&gt; Conexões sem fio e rede -&gt; Ancoragem e roteador wifi -&gt; Ancoragem USB<br /><br /><b>Passo 2:</b> Habilitando o SSH e encontrando o IP do android<br /><br />Abrir o sshdroid, e verificar o IP do seu android<br /><br /><b>Passo 3:</b> Ajustar as rotas no linux e construindo um NAT simples (pode variar ao seu gosto ou necessidade)<br /><br />Executado no PC<br /><br /><pre>$ sudo su<br /># route add -net 192.168.0.0/16 gw ip_do_android<br /># echo 1 &gt; /proc/sys/net/ipv4/ip_forward<br /># iptables -t nat -I POSTROUTING -s 192.168.0.0/16 -j MASQUERADE</pre><br /><br />* Cuidado com a máscara de subrede caso a sua rede local esteja neste mesmo bloco, eu usei com 16 bits pois não é o meu caso, se tiver dúvida sobre isso, faça um &quot;mention&quot; no twitter que eu ajudo.<br /><br /><b>Passo 4:</b> Ajustando a tabela de rotas do android<br /><br />Ainda no PC<br /><br /><pre> # ifconfig usb0<br />usb0      Link encap:Ethernet  Endereço de HW be:be:55:6b:ff:f6  <br />          inet end.: 192.168.42.36  Bcast:192.168.42.255  Masc:255.255.255.0<br />          endereço inet6: fe80::bcbe:55ff:fe6b:fff6/64 Escopo:Link<br />          UP BROADCASTRUNNING MULTICAST  MTU:1500  Métrica:1<br />          RX packets:39 errors:0 dropped:0 overruns:0 frame:0<br />          TX packets:37 errors:0 dropped:0 overruns:0 carrier:0<br />          colisões:0 txqueuelen:1000 <br />          RX bytes:2719 (2.6 KiB)  TX bytes:8758 (8.5 KiB)</pre><br /><br />No meu caso o IP da minha interface usb0 ficou &quot;192.168.42.36&quot; (ele muda a cada boot do seu celular).<br /><br /><pre> # ssh root@ip_do_android<br />ssh root@192.168.42.129<br />SSHDroid<br />Use &#039;root&#039; on rooted devices otherwise any username works<br />Default password is &#039;admin&#039;<br />root@192.168.42.129&#039;s password: <br />/data/data/berserker.android.apps.sshdroid/home # cd /<br />/ # route add default gw 192.168.42.36<br />/ # echo 1 &gt; /proc/sys/net/ipv4/ip_forward</pre><br /><br /><b>Passo 5:</b> Habilitando o access point<br /><br />No android<br /><br />no samsung galaxy 5 com firmware froyo (default)<br /><br />config -&gt; Conexões sem fio e rede -&gt; Ancoragem e roteador wifi -&gt; Roteador Wi-FI<br /><br />em outros androids, utilizar o android-wifi-tether, observar que o android-wifi-tether executa alguns scripts para construir um NAT no próprio android, pode ser necessário reavaliar as rotas.<br /><br /><b>Passo 6:</b> Conectar os seus outros devices na rede que voce criou.<br /><br />É isso...<br /><br />sds<br />Kl0nEz<br /><br /><br /><br /><br /><br />]]></description>
			<category></category>
			<guid isPermaLink="true">http://www.e-secure.com.br/index.php?entry=entry120125-105052</guid>
			<author>kl0nez</author>
			<pubDate>Wed, 25 Jan 2012 12:50:52 GMT</pubDate>
			<comments>http://www.e-secure.com.br/comments.php?y=12&amp;m=01&amp;entry=entry120125-105052</comments>
		</item>
		<item>
			<title>Debian e seus pacotes &quot;velhos&quot;</title>
			<link>http://www.e-secure.com.br/index.php?entry=entry111130-113201</link>
			<description><![CDATA[Caros,<br /><br />É sabido que no Debian-stable, os pacotes não são muito novos, e às vezes demora um pouco para serem atualizados.<br /><br />Na maioria das vezes, isso é muito bom, pois a probabilidade de você subir um pacote instável no seu ambiente é muito pequena, porém, algumas vezes você pode precisar (ou querer) uma versão mais atual de algum pacote.<br /><br />Não acho apropriado que sejam instalados os pacotes diretamente (pois podem desestabilizar o seu ambiente.<br /><br />Pode ser que a sua saída seja começar utilizar os &quot;backports&quot;<br /><br /><a href="http://backports-master.debian.org/Instructions/" target="_blank" >http://backports-master.debian.org/Instructions/</a><br /><br />No meu caso ...<br /><br /><pre># echo &quot;deb <a href="http://backports.debian.org/debian-backports" target="_blank" >http://backports.debian.org/debian-backports</a> squeeze-backports main&quot; &gt;&gt; /etc/apt/sources.list<br /># apt-get update<br /># apt-get -t squeeze-backports install virtualbox</pre><br /><br />Be happy !!!!!!<br /><br />é isso...<br /><br />sds<br />Kl0nEz]]></description>
			<category></category>
			<guid isPermaLink="true">http://www.e-secure.com.br/index.php?entry=entry111130-113201</guid>
			<author>kl0nez</author>
			<pubDate>Wed, 30 Nov 2011 13:32:01 GMT</pubDate>
			<comments>http://www.e-secure.com.br/comments.php?y=11&amp;m=11&amp;entry=entry111130-113201</comments>
		</item>
		<item>
			<title>Ubuntu, foi bom enquanto durou !</title>
			<link>http://www.e-secure.com.br/index.php?entry=entry111025-163604</link>
			<description><![CDATA[Caros,<br /><br />Como alguns de vocês sabem, eu usava a distribuição Gentoo, inclusive existem vários posts neste blog sobre esta distro.<br /><br />Porém, quando eu troquei de computador, resolví testar o Ubuntu (acho que era a versão 8.04), pois então, a troca do computador acabou compensando a baixa performance (comparando com o Gentoo) e por comodidade acabei ficando no Ubuntu.<br /><br />Agora, na versão 11.10 do Ubuntu, a canonical resolveu decidir por mim, dizendo que eu tenho que usar o Unit (ou o Gnome3) como gerenciador de ambiente. <br /><br />Depois de muito tempo utilizando o Linux, uma das coisas que eu realmente acho interessante no conceito, é você poder escolher o que vocẽ quer, e não quem mantém a distribuição.<br /><br />Não vou seguir a indição do Linus, em fazer um fork do gnome, para manter o gnome2, mas pelo menos resolví mudar de distribuição.<br /><br />Depois de um longo tempo sem usar o Debian no desktop, estou de volta às origens.<br /><br />Instalei o Debian, utilizei a pré-seleção &quot;DESKTOP&quot; e instalei os apps abaixo:<br /><br /><pre># apt-get install psi avant-window-navigator icedove krb5-clients krb5-user krb5-auth-dialog vim vlc compiz-gtk compizconfig-settings-manager  virtualbox-ose tcpdump subversion zip bleachbit</pre><br /><br />Se lembrar de algum outro, eu vou atualizando este post.<br /><br />Pronto, tenho tudo que preciso (por enquanto).<br /><br />Estou cogitando seriamente, voltar para o Gentoo...<br /><br />sds<br />Kl0nEz]]></description>
			<category></category>
			<guid isPermaLink="true">http://www.e-secure.com.br/index.php?entry=entry111025-163604</guid>
			<author>kl0nez</author>
			<pubDate>Tue, 25 Oct 2011 18:36:04 GMT</pubDate>
			<comments>http://www.e-secure.com.br/comments.php?y=11&amp;m=10&amp;entry=entry111025-163604</comments>
		</item>
		<item>
			<title>Linux 20 anos !</title>
			<link>http://www.e-secure.com.br/index.php?entry=entry110826-164540</link>
			<description><![CDATA[<a href="javascript:openpopup('images/windows_linux.jpg',500,375,false);"><img src="images/windows_linux.jpg" width="484" height="363" border="0" alt="" /></a>]]></description>
			<category></category>
			<guid isPermaLink="true">http://www.e-secure.com.br/index.php?entry=entry110826-164540</guid>
			<author>kl0nez</author>
			<pubDate>Fri, 26 Aug 2011 19:45:40 GMT</pubDate>
			<comments>http://www.e-secure.com.br/comments.php?y=11&amp;m=08&amp;entry=entry110826-164540</comments>
		</item>
		<item>
			<title>Fazendo a mulher do google &quot;falar&quot; !!!</title>
			<link>http://www.e-secure.com.br/index.php?entry=entry110823-155256</link>
			<description><![CDATA[Caros,<br /><br />Fiz um post no Google+ e Twitter, sobre como enviar um texto para ser &quot;narrado&quot; pelo google translator.<br /><br /><pre>$ mensagem=&quot;teste&quot; &amp;&amp; lynx --source &quot;http://translate.google.com.br:80/translate_tts?ie=UTF-8&amp;q=$mensagem&amp;tl=pt&amp;prev=input&quot; &gt; arquivo.wav</pre><br /><br />Só que resolví fazer variações do mesmo tema.<br /><br />Pré requisito: <pre>$ sudo apt-get install mpg321 lynx</pre><br /><br />Opção 1: Via funçõesZZ <a href="http://funcoeszz.net" target="_blank" >http://funcoeszz.net</a> <br /><br /><pre>$ svn checkout <a href="http://funcoeszz.googlecode.com/svn/trunk/" target="_blank" >http://funcoeszz.googlecode.com/svn/trunk/</a> funcoeszz-svn<br />$ cd funcoeszz-svn<br />$ ./funcoeszz zzzz --bashrc<br />$ source ~/.bashrc<br />$ zznarrativa Eu adoro antepasto de berinjela e tenho uma receita bem saborosa</pre><br /><br />Opção 2: Fazendo o seu próprio script<br /><br /><pre>$ cat &gt; ./muleh_do_google &lt;&lt; .EOF.<br />#!/bin/bash<br /><br />texto=$(echo &quot;$*&quot; | sed &#039;s| |+|g;s|&amp;|%26|g;s|@|%40|g&#039;)<br />url=&#039;http://translate.google.com.br&#039;<br />audio_file=&quot;/tmp/$$.WAV&quot;<br />play_cmd=&#039;mpg123 -q&#039;<br /><br /># Narrativa<br />audio=&quot;translate_tts?ie=UTF-8&amp;q=$texto&amp;tl=pt&amp;prev=input&quot;<br />lynx --source &quot;\$url/\$audio&quot; &gt; $audio_file &amp;&amp; $play_cmd $audio_file &amp;&amp; rm -rf $audio_file<br />.EOF.<br /></pre><br /><br /><pre>$ chmod +x muleh_do_google<br />$./muleh_do_google Eu adoro antepasto de berinjela e tenho uma receita bem saborosa</pre><br /><br />Acho que já dá uma boa diversão....<br /><br />Se voces olharem bem, eu estou criando um arquivo .wav que é apagado no final da execução do script, mas nada impede de voce salvar vários arquivos e depois organiza-los usando o Audacity.<br /><br />É isso ...<br /><br />sds<br />Kl0nEz<br /><br />ps.: Eu não gosto de antepasto de berinjela... ;)]]></description>
			<category></category>
			<guid isPermaLink="true">http://www.e-secure.com.br/index.php?entry=entry110823-155256</guid>
			<author>kl0nez</author>
			<pubDate>Tue, 23 Aug 2011 18:52:56 GMT</pubDate>
			<comments>http://www.e-secure.com.br/comments.php?y=11&amp;m=08&amp;entry=entry110823-155256</comments>
		</item>
		<item>
			<title>Audio stream</title>
			<link>http://www.e-secure.com.br/index.php?entry=entry110823-143003</link>
			<description><![CDATA[Caros,<br /><br />Fiz este post originalmente no site <a href="http://www.ubuntudicas.com.br" target="_blank" >http://www.ubuntudicas.com.br</a> , mas como o VLC é mais universal (não está restrito somente ao ubuntu) resolvi fazer um cross-posting aqui no meu blog.<br /><br />Imagine muitas pessoas acessando a UD webradio numa rede local. Isso gasta banda num é? Então que tal criarmos um meio de todos ouvirem, gastando menos banda de download?<br /><br />Opção 1:  Utilizando um grupo multicast, a vantagem deste método é que existirão somente 2 fluxos de áudio passando pela rede, sendo o primeiro para você receber o áudio do site da Rádio Ubuntu Dicas e o segundo fluxo é você enviando para a sua rede local em um grupo multicast (239.239.239.239) e também *TODOS* estarão sincronizados (tocando exatamente a mesma parte da mesma música). A desvantagem é que nem todos os players conseguem reproduzir fluxos UDP ou RTP.<br /><br />A partir de um computador da sua rede, execute o seguinte comando:<br /><br /><br /><pre>$ cvlc <a href="http://74.222.1.197:13588" target="_blank" >http://74.222.1.197:13588</a> --sout &#039;#std{access=udp,dst=239.239.239.239:1234}&#039;</pre><br />Agora, todas as estações do mesmo segmento de rede podem ouvir a Rádio Ubuntu Dicas, das seguintes formas:<br /><br />VLC linha de comando<br /><br /><pre>$ cvlc udp://@239.239.239.239:1234</pre><br /><br />VLC<br /><br />Mídia -&gt; Abrir Fluxo de Rede -&gt; udp://@239.239.239.239:1234<br /><br />Mplayer<br /><br /><pre>$ mplayer udp://239.239.239.239:1234</pre><br /><br />Opção 2: Criando um novo fluxo para cada conexão, a vantagem é que praticamente todos os players existentes conseguirão acessar o fluxo e inclusive podem estar em outro segmento de rede. A desvantagem é que haverá um fluxo de áudio para cada cliente conectado e haverá diferenças de alguns segundos entre as músicas tocadas em computadores diferentes.<br /><br />Apartir de um computador da sua rede, execute o seguinte comando:<br /><br /><pre>$ cvlc <a href="http://74.222.1.197:13588" target="_blank" >http://74.222.1.197:13588</a> --sout &#039;#http{mux=raw,dst=:8080 /}&#039;</pre><br />Agora, todas as estações do mesmo segmento de rede podem ouvir a Rádio Ubuntu Dicas, das seguintes formas:<br /><br />VLC linha de comando<br /><br /><pre>$ cvlc <a href="http://ip.do.servidor.de.m" target="_blank" >http://ip.do.servidor.de.m</a>ídia:8080/</pre><br />VLC<br /><br />Mídia -&gt; Abrir Fluxo de Rede -&gt; <a href="http://ip.do.servidor.de.m" target="_blank" >http://ip.do.servidor.de.m</a>ídia:8080/<br /><br />Mplayer<br /><br /><pre>$ mplayer <a href="http://ip.do.servidor.de.m" target="_blank" >http://ip.do.servidor.de.m</a>ídia:8080/</pre><br />Reprodutor de Filmes<br /><br />Filme -&gt; Abrir Localização -&gt; <a href="http://ip.do.servidor.de.m" target="_blank" >http://ip.do.servidor.de.m</a>ídia:8080/<br /><br />Obviamente, este conceito pode ser extendido para qualquer fluxo de áudio ou vídeo que esteja presente na internet, use a sua criatividade.<br /><br />É isso,<br /><br />sds<br />Kl0nEz]]></description>
			<category></category>
			<guid isPermaLink="true">http://www.e-secure.com.br/index.php?entry=entry110823-143003</guid>
			<author>kl0nez</author>
			<pubDate>Tue, 23 Aug 2011 17:30:03 GMT</pubDate>
			<comments>http://www.e-secure.com.br/comments.php?y=11&amp;m=08&amp;entry=entry110823-143003</comments>
		</item>
		<item>
			<title>work with AVR <g:plusone size="small"></g:plusone></title>
			<link>http://www.e-secure.com.br/index.php?entry=entry110726-155822</link>
			<description><![CDATA[Caros,<br /><br />Agora sim, acho que saem as diversões com o AVR. Vou começar pelos agradecimentos aos que me ajudaram neste start-up.<br /><br />Nailson, tks pelo atmega8, por acertar o bixinho na minha protoboard e pelo &quot;help for noobie&quot;... ;)<br /><br />Fred, pelo auxílio ao trilhar os obscuros caminhos dos &quot;bit is myth&quot; ...<br /><br />Estou usando um atmega8 e uma interface de programação chamada USBASP.<br /><br /><a href="http://www.fischl.de/usbasp/" target="_blank" >http://www.fischl.de/usbasp/</a><br /><br />Tools<br /><br />Hardware<br /><br />E-bay : Algo em torno de USD 6.89, mas precisa ver o frete<br /><br /><a href="http://shop.ebay.com/i.html?_nkw=usbasp&amp;_sacat=See-All-Categories" target="_blank" >http://shop.ebay.com/i.html?_nkw=usbasp ... Categories</a><br /><br />Goodluckbuy : 12,70 freeshipping<br /><br /><a href="http://www.goodluckbuy.com/avr-usbasp-programmer-atmega8-atmega128-atmega168.html" target="_blank" >http://www.goodluckbuy.com/avr-usbasp-p ... ga168.html</a><br /><br /><br />Software <br /><br />Se você usa MAC OS/X + macports<br /><br /><pre>sudo port install gcc-avr avr-libc avrdude</pre><br /><br />Se você usa LINUX (Debian like) eu testei no Ubuntu<br /><br /><pre>$ sudo apt-get install avrdude gcc-avr avr-libc</pre><br /><br />Se você usa Windows<br /><br />procure no windows update, vai que tem né ... ;)<br /><br />Testando<br /><br /><pre>$ sudo avrdude -p m8 -c usbasp<br />sudo: cannot get working directory<br /><br />avrdude: warning: cannot set sck period. please check for usbasp firmware update.<br />avrdude: AVR device initialized and ready to accept instructions<br /><br />Reading | ################################################## | 100% 0.01s<br /><br />avrdude: Device signature = 0x1e9307<br /><br />avrdude: safemode: Fuses OK<br /><br />avrdude done.  Thank you.</pre><br /><br />Possíveis falhas:<br /><br /><pre>$ avrdude -p m8 -c usbasp<br />avrdude: Warning: cannot query manufacturer for device: error sending control message: Operation not permitted<br />avrdude: error: could not find USB device &quot;USBasp&quot; with vid=0x16c0 pid=0x5dc</pre><br /><br />Causa: Falta permissão para acessar o dispositivo USB<br /><br />Solução: <br /><pre>$ sudo avrdude -p m8 -c usbasp</pre><br /><br /><br /><pre>$ sudo avrdude -p m8 -c usbasp<br />sudo: cannot get working directory<br /><br />avrdude: warning: cannot set sck period. please check for usbasp firmware update.<br />avrdude: error: programm enable: target doesn&#039;t answer. 1 <br />avrdude: initialization failed, rc=-1<br />         Double check connections and try again, or use -F to override<br />         this check.<br /><br /><br />avrdude done.  Thank you.</pre><br /><br />Causa: Falha nas conexões entre o USBASP e o atmega8<br /><br />Solução: Cheque as conexões.<br /><br /><br />Antes de fazer um makefile decente, eu fiz um script pra compilar e gravar o meu código.<br /><br /><pre>#!/bin/bash<br /><br />avr-gcc -O3 -mmcu=atmega8 -Wall -o $1.elf $1.c <br />avr-objcopy -j .text -O ihex $1.elf $1.hex<br />avrdude -p m8 -c usbasp -e -U flash:w:$1.hex<br /></pre><br /><br />Blinkenleds, meu código de luzes piscantes<br /><br /><pre>/* Example code<br /><br />tks for Fred<br /><br />*/<br /><br />#define F_CPU 8000000UL  /* 8 MHz CPU clock */<br />#include &lt;util/delay.h&gt;<br />#include &lt;avr/io.h&gt;<br /><br />#define OUTPUT_BIT 0x02 /* 00000010 = PB1 */<br /><br />int main(void)<br />{<br />  /* Initialize SFIOR with PUD putting inputs in HIGH impendance state<br />     saving energy and less heat<br />  */<br />  <br />  SFIOR |= PUD;<br />  <br />  /* Initialize PortB for output on OUTPUT_BIT using binary OR<br />     0 OR X = X<br />     1 OR X = 1<br />     Preserving state of others BITS<br />     <br />     DDRB = xxxxxxxx OR 00000010 = xxxxxx1x<br />     <br />  */<br /><br />  DDRB |= OUTPUT_BIT;<br /><br />  /* Initialize only OUTPUT_BIT with 0 (low) state with AND ~OUTPUT_BIT<br />     0 AND 0 = 0<br />     0 AND 1 = 0<br />     1 AND 0 = 0<br />     1 AND 1 = 1<br />     <br />     PORTB = xxxxxxxx &amp; 11111101 = xxxxxx0x<br /><br />     Preserving state of others BITS<br />     <br />  */<br />  PORTB &amp;= ~OUTPUT_BIT;<br />  while (1)<br />  {<br />  /* XOR Port B pin to change only OUTPUT_BIT <br />     0 XOR 0 = 0<br />     0 XOR 1 = 1<br />     1 XOR 0 = 1<br />     1 XOR 1 = 0<br />     <br />     PORTB = xxxxxx0x ^ 00000010 = xxxxxx1x<br />     PORTB = xxxxxx1x ^ 00000010 = xxxxxx0x<br /> <br />     Preserving state of others BITS<br />   <br />  */<br /> <br />  _delay_ms(100);<br />  PORTB ^= OUTPUT_BIT;<br /> <br />  }<br />  return (0);<br />}<br /></pre><br />É isso aí....<br /><br />Já já, novidades...<br /><br />sds<br />Kl0nez]]></description>
			<category></category>
			<guid isPermaLink="true">http://www.e-secure.com.br/index.php?entry=entry110726-155822</guid>
			<author>kl0nez</author>
			<pubDate>Tue, 26 Jul 2011 18:58:22 GMT</pubDate>
			<comments>http://www.e-secure.com.br/comments.php?y=11&amp;m=07&amp;entry=entry110726-155822</comments>
		</item>
		<item>
			<title>Tabajara Labs VideoCast <g:plusone size="small"></g:plusone></title>
			<link>http://www.e-secure.com.br/index.php?entry=entry110715-175151</link>
			<description><![CDATA[Caros,<br /><br />Muito bacana a iniciativa do Tabajara, em compartilhar um pouco de conhecimento em um vídeocast. Este é o videocast#0 ... que venham outros.<br /><br /><iframe width="425" height="349" src="http://www.youtube.com/embed/rW1oXeiGaik" frameborder="0" allowfullscreen></iframe><br /><br />sds<br />Kl0nEz]]></description>
			<category></category>
			<guid isPermaLink="true">http://www.e-secure.com.br/index.php?entry=entry110715-175151</guid>
			<author>kl0nez</author>
			<pubDate>Fri, 15 Jul 2011 20:51:51 GMT</pubDate>
			<comments>http://www.e-secure.com.br/comments.php?y=11&amp;m=07&amp;entry=entry110715-175151</comments>
		</item>
		<item>
			<title>Brincando de programar !!! <g:plusone size="small"></g:plusone></title>
			<link>http://www.e-secure.com.br/index.php?entry=entry110711-171401</link>
			<description><![CDATA[Caros,<br /><br />Outro dia, ví no blog <a href="http://bitismyth.wordpress.com/" target="_blank" >&quot;Bit is Myth&quot;</a>, um desafio de programação (mais de lógica, do que de programação), que era um programa capaz de jogar o &quot;jogo da velha&quot; e não perder.<br /><br />Resolví topar este desafio, mas usando BASH, para ter graça, já que se fosse em outra linguagem eu ficaria mais tempo pesquisando do que programando.<br /><br />Fiquei muito feliz com o resultado e agradeço o elogio, já que não é uma coisa muito comum eu receber reconhecimento por algo que tenha feito.<br /><br />Segue abaixo o código:<br /><br /><pre>#!/bin/bash<br /><br /># Inicializando o tabuleiro<br />casa=(1 2 3 4 5 6 7 8 9)<br />linha_cheia=(0 0 0 0 0 0 0 0)<br />tipo_teste=(&quot;0 1 2&quot; &quot;3 4 5&quot; &quot;6 7 8&quot; &quot;0 3 6&quot; &quot;1 4 7&quot; &quot;2 5 8&quot; &quot;0 4 8&quot; &quot;6 4 2&quot;)<br />mensagem=&quot;inicio do jogo&quot;<br />player_choice=&quot;X&quot;<br />comp_choice=&quot;O&quot;<br />comp_joga=0<br />ganha=X<br />vence=&quot;velha&quot;<br />lance=1<br />debug=0<br />fim=0<br />function tabuleiro () {<br />	[ $debug != 1 ] &amp;&amp; clear<br />	linha1=&quot;${casa[0]}|${casa[1]}|${casa[2]}&quot;<br />	linha2=&quot;${casa[3]}|${casa[4]}|${casa[5]}&quot;<br />	linha3=&quot;${casa[6]}|${casa[7]}|${casa[8]}&quot;<br />	separador=&quot;-+-+-&quot;<br />	echo $linha1<br />	echo $separador<br />	echo $linha2<br />	echo $separador<br />	echo $linha3<br />	echo $mensagem<br />}<br />function testando_linha () {<br />    	<br />    	[ $debug == 1 ] &amp;&amp; echo &quot;teste $teste&quot;<br />    	for j in $1 $2 $3<br />    	do<br />    		valor=${casa[$j]}<br />            	[ $valor = $comp_choice ] &amp;&amp; comp=$(($comp+1)) &amp;&amp; [ $debug == 1 ] &amp;&amp; echo &quot;computador $comp_choice&quot;<br />            	[ $valor = $player_choice ] &amp;&amp; player=$(($player+1)) &amp;&amp; [ $debug == 1 ] &amp;&amp; echo &quot;jogador $player_choice&quot;<br />		[ $valor != $comp_choice ] &amp;&amp; [ $valor != $player_choice ] &amp;&amp; vazio=$j &amp;&amp; [ $debug == 1 ] &amp;&amp; echo &quot;vazio $(($j+1))&quot; <br />		[ $(($comp+$player)) == 3 ] &amp;&amp; linha_cheia[$teste]=3 &amp;&amp; fim=$((fim+1)) &amp;&amp; [ $debug == 1 ] &amp;&amp; echo &quot;Final do jogo -&gt; $fim -&gt; Linha cheia !!!&quot;<br />	done<br />}<br /><br />function jogo_da_velha () {<br /><br />	for teste in 0 1 2 3 4 5 6 7<br />	do<br />		cheia=${linha_cheia[$teste]}<br />		tipo=${tipo_teste[$teste]}<br />		[ $debug == 1 ] &amp;&amp; echo &quot;Testando $tipo | linha cheia ? $cheia&quot;<br />	    	comp=0<br />	    	player=0<br />	    	vazio_old=$vazio<br />	    	vazio=0<br />	    	[ $cheia == 0 ] &amp;&amp; testando_linha $tipo <br />		cheia=${linha_cheia[$teste]}<br />		[ $cheia == 3 ] &amp;&amp; vazio=$vazio_old<br />		[ $debug == 1 ] &amp;&amp; echo &quot;Resultado do teste $tipo -&gt; comp $comp | player $player | vazio $vazio -&gt; Linha cheia = $cheia&quot;<br />		[ $cheia == 0 ] &amp;&amp; [ $comp == 2 ] &amp;&amp; ganha=$vazio &amp;&amp; vence=&quot;comp&quot; &amp;&amp; [ $debug == 1 ] &amp;&amp; echo &quot;computador ganha se jogar em $vazio&quot;<br />		[ $cheia == 0 ] &amp;&amp; [ $player == 2 ] &amp;&amp; [ $vence != &quot;comp&quot; ] &amp;&amp; ganha=$vazio &amp;&amp; vence=&quot;player&quot; <br />		[ $vence = &quot;player&quot; ] &amp;&amp; [ $debug == 1 ] &amp;&amp; echo &quot;computador se defende se jogar em $vazio&quot;<br />		[ $comp == 3 ] &amp;&amp; mensagem=&quot;Computador venceu !!!!!&quot; &amp;&amp; tabuleiro &amp;&amp; exit<br />		[ $player == 3 ] &amp;&amp; mensagem=&quot;Jogador venceu !!!!!&quot; &amp;&amp; tabuleiro &amp;&amp; exit<br />		[ $fim == 8 ] &amp;&amp; mensagem=&quot;Deu Velha !!!!!!&quot; &amp;&amp; tabuleiro &amp;&amp; exit<br />	done<br /><br />}	<br /><br />function computador_escolhe () {<br />	#<br />	# 0 1 2<br />	# 3 4 5<br />	# 6 7 8<br />	#<br />	[ $debug == 1 ] &amp;&amp; echo &quot;Comp_joga -&gt; $comp_joga -&gt; quem vence ? $vence&quot;<br />	[ $debug == 1 ] &amp;&amp; echo &quot;lance $lance&quot;<br />	[ $comp_choice = &quot;O&quot; ] &amp;&amp; [ $lance == 1 ] &amp;&amp; case &quot;$escolha&quot; in<br />		0|1|2|3|5|6|7|8 )<br />			casa[4]=$comp_choice &amp;&amp; comp_joga=0 &amp;&amp; lance=$((lance+1)) &amp;&amp; [ $debug == 1 ] &amp;&amp; echo &quot;Computador jogou em 4&quot;<br />		;;<br />		<br />		4 )<br />			casa[0]=$comp_choice &amp;&amp; comp_joga=0 &amp;&amp; lance=$((lance+1)) &amp;&amp; [ $debug == 1 ] &amp;&amp; echo &quot;Computador jogou em 0&quot;<br />		;;<br />	esac<br />	[ $comp_choice = &quot;O&quot; ] &amp;&amp; [ $comp_joga == 1 ] &amp;&amp; [ $lance == 2 ] &amp;&amp; case &quot;$escolha&quot; in<br />		# Segundo lance<br />		0 )<br />			[ $escolha_old == 8 ] &amp;&amp; casa[1]=$comp_choice &amp;&amp; comp_joga=0 &amp;&amp; lance=3 &amp;&amp; [ $debug == 1 ] &amp;&amp; echo &quot;Computador jogou em 1&quot;<br />		;;<br />		<br />		2 )<br />			[ $escolha_old == 6 ] &amp;&amp; casa[1]=$comp_choice &amp;&amp; comp_joga=0 &amp;&amp; lance=3 &amp;&amp; [ $debug == 1 ] &amp;&amp; echo &quot;Computador jogou em 1&quot;<br />		;;<br /><br />		6 )<br />			[ $escolha_old == 2 ] &amp;&amp; [ $escolha != $comp_choice ] &amp;&amp; [ $escolha != $player_choice ] &amp;&amp; casa[1]=$comp_choice &amp;&amp; comp_joga=0 &amp;&amp; lance=3 &amp;&amp; [ $debug == 1 ] &amp;&amp; echo &quot;Computador jogou em 1&quot;<br />		;;<br />		8 )<br />			[ $escolha_old == 4 ] &amp;&amp; casa[6]=$comp_choice &amp;&amp; comp_joga=0 &amp;&amp; lance=3 &amp;&amp; [ $debug == 1 ] &amp;&amp; echo &quot;Computador jogou em 6&quot;<br />			[ $escolha_old == 0 ] &amp;&amp; casa[7]=$comp_choice &amp;&amp; comp_joga=0 &amp;&amp; lance=3 &amp;&amp; [ $debug == 1 ] &amp;&amp; echo &quot;Computador jogou em 7&quot;<br />		;;<br />	esac<br />	jogo_da_velha<br />	# Computador jogando<br />	[ $debug == 1 ] &amp;&amp; echo &quot;Comp_joga -&gt; $comp_joga -&gt; quem vence ? $vence&quot;<br />	[ $comp_joga == 1 ] &amp;&amp; [ $vence = &quot;comp&quot; ] &amp;&amp; casa[$ganha]=$comp_choice &amp;&amp; comp_joga=0 &amp;&amp; lance=$((lance+1)) &amp;&amp; [ $debug == 1 ] &amp;&amp; echo &quot;Computador jogou em $ganha&quot;<br />	[ $comp_joga == 1 ] &amp;&amp; [ $vence = &quot;player&quot; ] &amp;&amp; casa[$ganha]=$comp_choice &amp;&amp; comp_joga=0 &amp;&amp; lance=$((lance+1)) &amp;&amp; [ $debug == 1 ] &amp;&amp; echo &quot;Computador jogou em $ganha&quot;<br />	[ $comp_joga == 1 ] &amp;&amp; casa[$vazio]=$comp_choice &amp;&amp; comp_joga=0 &amp;&amp; lance=$((lance+1)) &amp;&amp; [ $debug == 1 ] &amp;&amp; echo &quot;Computador jogou em $vazio&quot;<br /><br />}<br /><br />while true<br />do<br />	echo &quot;Quem inicia ? (C)omputador (P)layer&quot;<br />	read quem<br />	case &quot;$quem&quot; in<br />		C|c )<br />			comp_choice=&quot;X&quot;<br />			player_choice=&quot;O&quot;<br />			casa[4]=$comp_choice &amp;&amp; comp_joga=0 &amp;&amp; [ $debug == 1 ] &amp;&amp; echo &quot;Computador inicia jogando na casa do meio&quot;<br />		;;<br />		P|p )<br />			player_choice=&quot;X&quot;<br />			comp_choice=&quot;O&quot;<br />		;;<br />	esac<br />	while [ &quot;$resposta&quot; != &quot;Q&quot; ]<br />	do<br />		tabuleiro<br />		cheat=0<br />		echo &quot;Qual casa voce escolhe ? (Q -&gt; Sai)&quot;<br />		read resposta<br />		[ $resposta = &quot;Q&quot; ] &amp;&amp; echo &quot;Vaza !!!&quot; &amp;&amp; exit<br />		echo $resposta | egrep &quot;^[0-9]$&quot; || errado=1<br />		[ $errado == 1 ] &amp;&amp; echo &quot;Entrada errada&quot; &amp;&amp; exit<br />		escolha_old=$escolha<br />		escolha=$(($resposta-1))<br />		tem_gente=${casa[$escolha]}<br />		[ $tem_gente = $comp_choice ] &amp;&amp; cheat=1 &amp;&amp; mensagem=&quot;CHEATER/Distraído -&gt; O computador já jogou aí&quot; <br />		[ $tem_gente = $player_choice ] &amp;&amp; cheat=1 &amp;&amp; mensagem=&quot;CHEATER/Distraído -&gt; Você já jogou aí&quot; <br />		[ $cheat == 0 ] &amp;&amp; casa[$escolha]=$player_choice<br />		[ $cheat == 0 ] &amp;&amp; vence=&quot;velha&quot;<br />		[ $cheat == 0 ] &amp;&amp; comp_joga=1<br />		[ $cheat == 0 ] &amp;&amp; computador_escolhe<br />		[ $cheat == 0 ] &amp;&amp; jogo_da_velha<br />	done<br />done</pre><br /><br />É isso....<br /><br />sds<br />kl0nEz<br /><br />tks mais uma vez pelo elogio !!!!]]></description>
			<category></category>
			<guid isPermaLink="true">http://www.e-secure.com.br/index.php?entry=entry110711-171401</guid>
			<author>kl0nez</author>
			<pubDate>Mon, 11 Jul 2011 20:14:01 GMT</pubDate>
			<comments>http://www.e-secure.com.br/comments.php?y=11&amp;m=07&amp;entry=entry110711-171401</comments>
		</item>
		<item>
			<title>SMTP AUTH LOGIN auditando senhas <g:plusone size="small"></g:plusone></title>
			<link>http://www.e-secure.com.br/index.php?entry=entry110706-162142</link>
			<description><![CDATA[Caros,<br /><br />Alguma vez vocês lembraram que possivelmente os seus usuários não trocaram a senha padrão (aquela criada inicialmente, junto da conta), ou que usam senhas muito fracas ?<br /><br />Pois entao... vamos testa-las... :)<br /><br />No meu caso específico o servidor suporta somente o método &quot;AUTH LOGIN&quot;, o que não é default do Net::SMTP da Perl, daí fiz algumas alterações do código que usei como referencia.<br /><br /><code>#!/usr/bin/perl -w<br />use strict;<br /><br />$| = 1;<br /><br />use Getopt::Long;<br />use Net::SMTP;<br />use MIME::Base64;<br /><br />my $server = &#039;localhost&#039;;<br />my $port = 25;<br />my $debug = 0;<br />GetOptions (&#039;host|h=s&#039; =&gt; \$server,<br />            &#039;port=s&#039; =&gt; \$port,<br />            &#039;user|u=s&#039; =&gt; \$user,<br />            &#039;password|p=s&#039; =&gt; \$passwd,<br />            &#039;debug|d&#039; =&gt; \$debug,<br />            );<br /><br />my $smtp = Net::SMTP-&gt;new($server, Port =&gt; $port, Debug =&gt; $debug? 1 : 0);<br /><br /># See if Open occured or Not<br />my $chk = 1;<br />   $chk = 0 unless defined $smtp;<br /><br />if ( !$chk )<br />        { print &quot;Failed...\n&quot;; exit; }<br /><br />$smtp-&gt;datasend(&quot;AUTH LOGIN\n&quot;);<br />$smtp-&gt;response();<br />$smtp-&gt;datasend(encode_base64($user));<br />$smtp-&gt;response();<br />$smtp-&gt;datasend(encode_base64($passwd));<br />print &quot;$user\n&quot;;<br />print $smtp-&gt;getline ();<br />$smtp-&gt;quit;</code><br /><br />Para poupar um pouco de pesquisa, já que eu não sou programador, muito menos em Perl, resolvi juntar com um pouquinho de BASH, onde eu já tenho mais de familiaridade.<br /><br /><pre>$time for i in `cat lista_usuarios.txt`;\<br /> do ./smtp-auth.pl --user $i@dominio --password senha_padrao ;\<br /> echo &quot;---------&quot; ; \<br />done &gt; users_com_senha_padrao.txt</pre><br />e<br /><pre>$time for i in `cat lista_usuarios.txt`;\<br /> do ./smtp-auth.pl --user $i@dominio --password $i ;\<br /> echo &quot;---------&quot; ; \<br />done &gt; users_com_senha_USER.txt</pre><br /><br />Depois de um tempinho, basta procurar nos arquivos de resultado, por...<br /><br /><pre>$ grep -B1 235 users_com_senha*.txt</pre><br /><br />É isso...<br /><br />sds<br />Kl0nEz<br /><br />Ahh sim... dá pra usar ferramentas específicas para bruteforce (hydra, por exemplo) ... mas qual a graça ?<br /><br />Referencias:<br /><a href="http://perlstalker.amigo.net/courier/scripts/test-smtp-auth" target="_blank" >http://perlstalker.amigo.net/courier/sc ... -smtp-auth</a><br /><a href="http://search.cpan.org/~gbarr/libnet-1.22/Net/Cmd.pm" target="_blank" >http://search.cpan.org/~gbarr/libnet-1.22/Net/Cmd.pm</a><br /><a href="http://search.cpan.org/~gbarr/libnet-1.22/Net/SMTP.pm" target="_blank" >http://search.cpan.org/~gbarr/libnet-1.22/Net/SMTP.pm</a><br /><br />]]></description>
			<category></category>
			<guid isPermaLink="true">http://www.e-secure.com.br/index.php?entry=entry110706-162142</guid>
			<author>kl0nez</author>
			<pubDate>Wed, 06 Jul 2011 19:21:42 GMT</pubDate>
			<comments>http://www.e-secure.com.br/comments.php?y=11&amp;m=07&amp;entry=entry110706-162142</comments>
		</item>
	</channel>
</rss>

