<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE rss [<!ENTITY % HTMLlat1 PUBLIC "-//W3C//ENTITIES Latin 1 for XHTML//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml-lat1.ent">]>
<rss version="2.0" xml:base="http://sysd.org/stas">
<channel>
 <title>stas&#039;den - database</title>
 <link>http://sysd.org/stas/taxonomy/term/23/0</link>
 <description></description>
 <language>en</language>
<item>
 <title>OpenOffice All Languages Wordlist</title>
 <link>http://sysd.org/stas/node/236</link>
 <description>&lt;p&gt;
(As it seems like no one did this before... I tried to &lt;img src=&quot;misc/smileys/smile.png&quot; title=&quot;Smiling&quot; alt=&quot;Smiling&quot; /&gt;)
&lt;/p&gt;

&lt;p&gt;
One of the coolest things from &lt;a href=&quot;http://www.openoffice.org/&quot; target=&quot;_blank&quot;&gt;OpenOffice&lt;/a&gt; (IMHO) is it&#039;s &lt;b&gt;huge&lt;/b&gt; &lt;a href=&quot;http://wiki.services.openoffice.org/wiki/Dictionaries&quot; target=&quot;_blank&quot;&gt;spell checking database&lt;/a&gt;, available for 92 languages. It contains not only the &lt;i&gt;&quot;most popular&quot;&lt;/i&gt; words, but also some &quot;mutation rules&quot;, which describe the generic &lt;i&gt;&quot;word formation&quot;&lt;/i&gt; algorithm for each language.
This opens great possibilities for a &lt;a href=&quot;http://en.wikipedia.org/wiki/Dictionary_attack&quot; target=&quot;_blank&quot;&gt;dictionary attack&lt;/a&gt;.
&lt;/p&gt;

&lt;p&gt;
So, all I did was picking an &quot;All Language Pack&quot; from &lt;b&gt;OpenOffice.org&lt;/b&gt;, and expanding it (i.e. using the affix rules to generate a list of all recognized words of a dictionary) with the &lt;code&gt;unmunch&lt;/code&gt; utility from the &lt;a href=&quot;http://hunspell.sourceforge.net/&quot; target=&quot;_blank&quot;&gt;Hunspell&lt;/a&gt;. As &lt;code&gt;unmunch&lt;/code&gt; behaved a bit... weirdly with some &lt;code&gt;.aff&lt;/code&gt; files (namely: ar, eu_ES, gl_ES, he_IL, hu_HU, lt_LT, mn_MN, qu_BO, se), I had to use the non-expanded &lt;code&gt;.dic&lt;/code&gt; instead.
This generated a set of lists with 127,153,335 unique words, which summed up into 1,932.2 MB.
&lt;/p&gt;

&lt;p&gt;
And finally, here it is, for all your security testing purposes, packed with &lt;a href=&quot;http://www.7-zip.org/&quot; target=&quot;_blank&quot;&gt;7-Zip&lt;/a&gt; into a 167.3 MB file:
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://thepiratebay.org/torrent/4489726/OpenOffice_All_Languages_Wordlist_(2_GB_unpacked)&quot; target=&quot;_blank&quot;&gt;The Pirate Bay&lt;/a&gt; (torrent)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.mininova.org/tor/1980705&quot; target=&quot;_blank&quot;&gt;Mininova&lt;/a&gt; (torrent)&lt;/li&gt;
&lt;/ul&gt;
Have a lot of phun &lt;img src=&quot;misc/smileys/lol.png&quot; title=&quot;Laughing out loud&quot; alt=&quot;Laughing out loud&quot; /&gt;&lt;br&gt;
&lt;/p&gt;
</description>
 <category domain="http://sysd.org/stas/taxonomy/term/23">database</category>
 <category domain="http://sysd.org/stas/taxonomy/term/18">hack</category>
 <category domain="http://sysd.org/stas/taxonomy/term/10">opensource</category>
 <category domain="http://sysd.org/stas/taxonomy/term/4">software</category>
 <pubDate>Mon, 03 Nov 2008 15:06:19 -0200</pubDate>
</item>
<item>
 <title>The Pirate Bay un-SSL</title>
 <link>http://sysd.org/stas/node/220</link>
 <description>&lt;p&gt;
&lt;script src=&quot;http://slashdot.org/slashdot-it.js&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;
&lt;/p&gt;

&lt;h2&gt;Theory&lt;/h2&gt;
&lt;p&gt;
Recently, the world saw &lt;a href=&quot;https://thepiratebay.org/&quot;
 target=&quot;_blank&quot;&gt;The Pirate Bay&lt;/a&gt; offering &lt;a
 href=&quot;http://www.slyck.com/story1691_SSL_Encrpytion_Coming_to_The_Pirate_Bay&quot;
 target=&quot;_blank&quot;&gt;SSL encryption&lt;/a&gt; on their server.
This means that your ISP won&#039;t know anymore which torrent you are
downloading, right? Wrong.&lt;br&gt;
&lt;a
 href=&quot;http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol_over_Secure_Socket_Layer&quot;
 target=&quot;_blank&quot;&gt;HTTPS&lt;/a&gt; is quite useless for
protecting static &lt;span style=&quot;font-weight: bold;&quot;&gt;and&lt;/span&gt;
public content. By &lt;span style=&quot;font-style: italic;&quot;&gt;static&lt;/span&gt;,
I do mean the &lt;code&gt;.torrent&lt;/code&gt; file itself. It is
always the same. By &lt;span style=&quot;font-style: italic;&quot;&gt;public&lt;/span&gt;,
I do mean than one doesn&#039;t need any kind of authentication to pick up
the content. It&#039;s always the same, for everyone. For &lt;a
 href=&quot;http://en.wikipedia.org/wiki/Web_crawler&quot; target=&quot;_blank&quot;&gt;crawlers&lt;/a&gt;,
too.&lt;br&gt;
So, one could easily index (&lt;a href=&quot;https://thepiratebay.org/top&quot;
 target=&quot;_blank&quot;&gt;a portion of&lt;/a&gt;) The Pirate Bay
torrent database by the &lt;a
 href=&quot;http://en.wikipedia.org/wiki/List_of_HTTP_headers&quot;
 target=&quot;_blank&quot;&gt;Content-Length&lt;/a&gt;. Then, one could
intercept some encrypted traffic between some machine(s) within his/her
network and the &lt;code&gt;torrents.thepiratebay.org&lt;/code&gt;
server. Knowing both (encrypted) request and response lengths, it is
possible to get a quite reliable list of matches from the previously
indexed torrent list.&lt;br&gt;
&lt;/p&gt;
&lt;h2&gt;Practice&lt;/h2&gt;
&lt;p&gt;
Don&#039;t try this at work, or you might hurt yourself &lt;img src=&quot;misc/smileys/wink.png&quot; title=&quot;Eye-wink&quot; alt=&quot;Eye-wink&quot; /&gt;&lt;br&gt;
&lt;/p&gt;
&lt;ol&gt;
  &lt;li&gt;Use &lt;a href=&quot;http://www.wireshark.org/&quot;
 target=&quot;_blank&quot;&gt;Wireshark&lt;/a&gt; to capture some torrent
downloads. Torrents are hosted on a separate server, which makes the
task easier yet. Just use the following capture filter: &lt;code&gt;&quot;tcp
and port 443 and host torrents.thepiratebay.org&quot;&lt;/code&gt;&lt;/li&gt;
  &lt;li&gt;Now, just go with the stream &lt;img src=&quot;misc/smileys/smile.png&quot; title=&quot;Smiling&quot; alt=&quot;Smiling&quot; /&gt; (&lt;span
 style=&quot;font-style: italic;&quot;&gt;&quot;Follow TCP Stream&quot;&lt;/span&gt;
for the packet you suspect belongs to the torrent download. This will
create another filter, just like &lt;code&gt;&quot;(ip.addr eq 192.168.0.10
and ip.addr eq 83.140.176.156) and (tcp.port eq 2157 and tcp.port eq
443)&quot;&lt;/code&gt;)&lt;/li&gt;
  &lt;li&gt;Just save the displayed stream anywhere else (&lt;code&gt;pcap1.pcap&lt;/code&gt;
sounds nice)&lt;/li&gt;
  &lt;li&gt;Now, use my quick&amp;amp;dirty &lt;a
 href=&quot;http://sysd.org/stas/files/active/0/TPB-TLSlen.pl.txt&quot;
 target=&quot;_blank&quot;&gt;TPB-TLSlen.pl&lt;/a&gt; Perl script to get
the request/response lengths:
    &lt;pre&gt;perl TPB-TLSlen.pl pcap1.pcap&lt;/pre&gt;
Yeah, I know, it is nasty. It only supports the &lt;a
 href=&quot;http://en.wikipedia.org/wiki/Transport_Layer_Security&quot;
 target=&quot;_blank&quot;&gt;TLS&lt;/a&gt; cypher. And it simply calls
the &lt;code&gt;tshark&lt;/code&gt; (the command line version of
Wireshark) to parse it&#039;s output.&lt;/li&gt;
  &lt;li&gt;Now, just paste the &lt;span style=&quot;font-weight: bold;&quot;&gt;REQ&lt;/span&gt;
and &lt;span style=&quot;font-weight: bold;&quot;&gt;RES&lt;/span&gt;
values &lt;a href=&quot;http://sysd.org/stas/node/220?req=560&amp;amp;res=91888#TPB&quot;&gt;below&lt;/a&gt;
&lt;img src=&quot;misc/smileys/lol.png&quot; title=&quot;Laughing out loud&quot; alt=&quot;Laughing out loud&quot; /&gt;&lt;br&gt;
(note that the &lt;span style=&quot;font-weight: bold;&quot;&gt;REQ&lt;/span&gt;
value is optional, setting it to 0 simply ignores the request size for
matching)&lt;/li&gt;
&lt;/ol&gt;
Note that you are able to fine-tune the maximum and minimum header
sizes. For the response, the headers are almost the same all the time.
The only thing that varies is the decimal representation of the file
length and age. (Un)fortuately, the request headers do vary for
different browsers and referring pages. However, knowing the request
size still helps a bit, specially if the torrent&#039;s filename was huge &lt;img src=&quot;misc/smileys/smile.png&quot; title=&quot;Smiling&quot; alt=&quot;Smiling&quot; /&gt;&lt;br&gt;
&lt;h2&gt;Precision&lt;/h2&gt;
&lt;p&gt;
The following size distribution chart was generated using the database with ~165K torrents:
&lt;p&gt;
&lt;img src=&quot;http://sysd.org/stas/files/active/0/Graph2.png&quot; width=&quot;640&quot; height=&quot;500&quot; alt=&quot;torrent size distribution&quot;&gt;
&lt;/p&gt;
The most common torrent size is ~14 KB, and it&#039;s easy to figure out that such torrents represent the shared 700 MB files &lt;img src=&quot;misc/smileys/smile.png&quot; title=&quot;Smiling&quot; alt=&quot;Smiling&quot; /&gt;&lt;br&gt;
There&#039;s also a major peak for the 454 bytes torrents. However, bigger torrents are less common, thus, the size detection technique becomes more precise. Now, the average &quot;distance&quot; between torrent sizes is ~44 bytes (at least for the sample I&#039;ve collected). So, adding a &lt;a href=&quot;http://en.wikipedia.org/wiki/HTTP_cookie&quot;
 target=&quot;_blank&quot;&gt;cookie&lt;/a&gt; with the random size up to 128 bytes will disrupt the size matching detection a lot. The request size disruption is even easier: the largest torrent &lt;a href=&quot;http://en.wikipedia.org/wiki/Uniform_Resource_Identifier&quot; target=&quot;_blank&quot;&gt;URI&lt;/a&gt; I&#039;ve found was 150 bytes-wide. Thus, padding every request URI to match 150 characters is enough to make the requests completely indistinguishable. Joining the pieces (the padding add-on strings are &lt;b&gt;bold&lt;/b&gt;):&lt;br&gt;
&lt;pre&gt;&lt;font color=&quot;#ff0000&quot;&gt;GET /4319199/[a4e]Ghost_in_the_Shell_TV_01-26.4319199.TPB.torrent&lt;b&gt;?nVM2UGfcG533un4ym70eT2&lt;br&gt;9r0WwBLYdmFCNN+UTV/hiJ7EAXdFU5KfdWHpkB5lXaCmITsACKOPVyjmpbaOB+CrI5&lt;/b&gt; HTTP/1.1
Host: torrents.thepiratebay.org
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.1) Gecko/2008070208&lt;br&gt; Firefox/3.0.1
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Referer: https://thepiratebay.org/recent
Cookie: language=pt_BR; country=BR; PHPSESSID=ad6cb7e414c8dc88e0c2444f6215165a
&lt;/font&gt;&lt;font color=&quot;#0000ff&quot;&gt;
HTTP/1.1 200 OK
Content-Type: application/x-bittorrent
Etag: &quot;2198642509&quot;
Last-Modified: Mon, 28 Jul 2008 22:28:59 GMT
Server: lighttpd
Content-Length: 91601
Date: Mon, 28 Jul 2008 22:37:56 GMT
X-Varnish: 108010229 107999438
Age: 253
Via: 1.1 varnish
Connection: keep-alive
&lt;b&gt;Set-Cookie: p=68eOfxOC7JwBYcMe1RJWC4Z5PV/lJzqJORW8KROPMH9zQhszSjFnRp2tsNWEoyabWAloneUaoz&lt;br&gt;MxYtx4hoM9MZUKE/7wGzC3ZKLEZdppG4og3W; expires=Mon, 28-Jul-2008 22:37:56 GMT; path=/;&lt;br&gt; domain=torrents.thepiratebay.org&lt;/b&gt;

&lt;i&gt;(binary torrent data)&lt;/i&gt;&lt;/font&gt;&lt;/pre&gt;

&lt;/p&gt;
&lt;h2&gt;Solution&lt;/h2&gt;
&lt;ol&gt;
  &lt;li&gt;Use a constant padding in the &lt;code&gt;.torrent&lt;/code&gt;
files. This messes things a bit, but stills ineffective. The only
advantage is &lt;span style=&quot;font-weight: bold;&quot;&gt;not&lt;/span&gt;
messing up with the server &lt;img src=&quot;misc/smileys/sad.png&quot; title=&quot;Sad&quot; alt=&quot;Sad&quot; /&gt;&lt;/li&gt;
  &lt;li&gt;Patch the &lt;a href=&quot;http://www.lighttpd.net/&quot;
 target=&quot;_blank&quot;&gt;lighttpd&lt;/a&gt; server so it sends a
non-lasting &lt;a href=&quot;http://en.wikipedia.org/wiki/HTTP_cookie&quot;
 target=&quot;_blank&quot;&gt;cookie&lt;/a&gt; with a random size.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;Thanks&lt;/h2&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;http://www.megahospedagem.com.br/&quot;
 target=&quot;_blank&quot;&gt;MEGA Hospedagem&lt;/a&gt;, for the network
resources provided for this tiny research &lt;img src=&quot;misc/smileys/smile.png&quot; title=&quot;Smiling&quot; alt=&quot;Smiling&quot; /&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://www.warchalking.com.br/&quot;
 target=&quot;_blank&quot;&gt;http://www.warchalking.com.br/&lt;/a&gt;,
for the inspiration &lt;img src=&quot;misc/smileys/wink.png&quot; title=&quot;Eye-wink&quot; alt=&quot;Eye-wink&quot; /&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;a name=&quot;TPB&quot;&gt;
 </description>
 <category domain="http://sysd.org/stas/taxonomy/term/23">database</category>
 <category domain="http://sysd.org/stas/taxonomy/term/18">hack</category>
 <category domain="http://sysd.org/stas/taxonomy/term/30">music</category>
 <category domain="http://sysd.org/stas/taxonomy/term/7">network</category>
 <category domain="http://sysd.org/stas/taxonomy/term/20">perl</category>
 <category domain="http://sysd.org/stas/taxonomy/term/24">php</category>
 <category domain="http://sysd.org/stas/taxonomy/term/32">video</category>
 <category domain="http://sysd.org/stas/taxonomy/term/8">web</category>
 <pubDate>Thu, 31 Jul 2008 11:05:20 -0300</pubDate>
</item>
<item>
 <title>Formulário CEP/CPF/CNPJ</title>
 <link>http://sysd.org/stas/node/150</link>
 <description>&lt;p align=&quot;center&quot;&gt;
&lt;object classid=&quot;clsid:d27cdb6e-ae6d-11cf-96b8-444553540000&quot; codebase=&quot;http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0&quot; width=&quot;423&quot; height=&quot;200&quot; id=&quot;brloc&quot; align=&quot;middle&quot;&gt;
&lt;param name=&quot;allowScriptAccess&quot; value=&quot;sameDomain&quot; /&gt;
&lt;param name=&quot;movie&quot; value=&quot;/brloc/brloc.swf&quot; /&gt;&lt;param name=&quot;quality&quot; value=&quot;high&quot; /&gt;&lt;param name=&quot;bgcolor&quot; value=&quot;#ffffff&quot; /&gt;&lt;embed src=&quot;/brloc/brloc.swf&quot; quality=&quot;high&quot; bgcolor=&quot;#ffffff&quot; width=&quot;423&quot; height=&quot;200&quot; name=&quot;brloc&quot; align=&quot;middle&quot; allowScriptAccess=&quot;sameDomain&quot; type=&quot;application/x-shockwave-flash&quot; pluginspage=&quot;http://www.macromedia.com/go/getflashplayer&quot; /&gt;
&lt;/object&gt;
&lt;br&gt;
&lt;small&gt;&lt;i&gt;(tente preencher os campos acima; a informa&amp;ccedil;&amp;atilde;o &amp;eacute; atualizada instantaneamente)&lt;/i&gt;&lt;/small&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;br&gt;
Este projeto &amp;eacute; o sucessor do&amp;nbsp;&lt;a
 href=&quot;http://sysd.org/stas/node/99&quot;&gt;CEP-2-City&lt;/a&gt;.
&amp;Eacute; um formul&amp;aacute;rio &lt;i&gt;online&lt;/i&gt; que:&lt;br&gt;
&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;Verifica a validade do n&amp;uacute;mero &lt;a
 href=&quot;http://pt.wikipedia.org/wiki/Cadastro_de_Pessoas_F%C3%ADsicas&quot;
 target=&quot;_blank&quot;&gt;CPF&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;Verifica a validade do n&amp;uacute;mero &lt;a
 href=&quot;http://pt.wikipedia.org/wiki/CNPJ&quot; target=&quot;_blank&quot;&gt;CNPJ&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;A partir do &lt;a
 href=&quot;http://pt.wikipedia.org/wiki/Sistema_endere%C3%A7amento_postal_no_Brasil&quot;
 target=&quot;_blank&quot;&gt;CEP&lt;/a&gt;, deduz o endere&amp;ccedil;o
completo (Cidade/Estado/Bairro/Rua)&lt;/li&gt;
  &lt;li&gt;A partir do CEP, deduz o c&amp;oacute;digo &lt;a
 href=&quot;http://pt.wikipedia.org/wiki/Discagem_direta_a_dist%C3%A2ncia#Lista_de_c.C3.B3digos_DDD_brasileiros_por_estado_e_seus_principais_munic.C3.ADpios&quot;
 target=&quot;_blank&quot;&gt;DDD&lt;/a&gt; da regi&amp;atilde;o &lt;img src=&quot;misc/smileys/wink.png&quot; title=&quot;Eye-wink&quot; alt=&quot;Eye-wink&quot; /&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
O banco de dados utilizado &amp;eacute; compilado a partir de diversas
fontes. Se n&amp;atilde;o constar a informa&amp;ccedil;&amp;atilde;o da
rua, ent&amp;atilde;o somente a cidade &amp;eacute; retornada. A
interface com o banco de dados foi implementada usando &lt;a
 href=&quot;http://en.wikipedia.org/wiki/Perl&quot; target=&quot;_blank&quot;&gt;Perl&lt;/a&gt;
e &lt;a href=&quot;http://en.wikipedia.org/wiki/PHP&quot; target=&quot;_blank&quot;&gt;PHP&lt;/a&gt;,
e pode ser acessada via &lt;a
 href=&quot;http://en.wikipedia.org/wiki/Common_Gateway_Interface&quot;
 target=&quot;_blank&quot;&gt;CGI&lt;/a&gt;, &lt;a target=&quot;_blank&quot;
 href=&quot;http://en.wikipedia.org/wiki/Adobe_Flash&quot;&gt;Flash&lt;/a&gt;
ou &lt;a href=&quot;http://en.wikipedia.org/wiki/Ajax_%28programming%29&quot;
 target=&quot;_blank&quot;&gt;AJAX&lt;/a&gt;. O sistema de busca
&amp;eacute; extremamente eficiente, e n&amp;atilde;o necessita de &lt;a
 href=&quot;http://en.wikipedia.org/wiki/MySQL&quot; target=&quot;_blank&quot;&gt;MySQL&lt;/a&gt;.
O tamanho do banco de dados &amp;eacute; cerca de 60 MB, e a
performance chega a milhares de consultas por segundo.
&lt;/p&gt;
&lt;p&gt;Portanto, eis uma solu&amp;ccedil;&amp;atilde;o bastante
s&amp;iacute;mples, flex&amp;iacute;vel e eficaz para o
cadastro&amp;nbsp;de clientes. J&amp;aacute; utilizei este sistema numa
pesquisa que conduzi, e asseguro que me poupou bastante tempo. Para realizar as consultas, basta acessar a seguinte URL (com a devida substituição do CEP): &lt;a href=&quot;http://sysd.org/brloc/brloc.php?cep=05437000&quot; target=&quot;_blank&quot;&gt;http://sysd.org/brloc/brloc.php?cep=05437000&lt;/a&gt;, e processar a &lt;code&gt;string&lt;/code&gt; retornada com a função &lt;a href=&quot;http://br2.php.net/manual/pt_BR/function.parse-str.php&quot; target=&quot;_blank&quot;&gt;parse_str()&lt;/a&gt; (em PHP).
&lt;/p&gt;
&lt;p&gt;
Se tiver interesse no banco de dados em si, &lt;a href=&quot;http://sysd.org/stas/feedback&quot;&gt;entre
em contato&lt;/a&gt;!
&lt;/p&gt;
</description>
 <category domain="http://sysd.org/stas/taxonomy/term/25">actionscript</category>
 <category domain="http://sysd.org/stas/taxonomy/term/22">city</category>
 <category domain="http://sysd.org/stas/taxonomy/term/23">database</category>
 <category domain="http://sysd.org/stas/taxonomy/term/20">perl</category>
 <category domain="http://sysd.org/stas/taxonomy/term/24">php</category>
 <category domain="http://sysd.org/stas/taxonomy/term/8">web</category>
 <pubDate>Wed, 15 Aug 2007 20:31:52 -0300</pubDate>
</item>
<item>
 <title>Geolizer HTTP stats</title>
 <link>http://sysd.org/stas/node/10</link>
 <description>&lt;p align=&quot;center&quot;&gt;&lt;img
 alt=&quot;Sample Geolizer output (fragment)&quot;
 src=&quot;http://sysd.org/stas/files/active/0/geolizer.png&quot; height=&quot;480&quot;
 width=&quot;640&quot; style=&quot;border: 1px solid #000000;&quot;&gt;
&lt;/p&gt;
&lt;h3&gt;About Geolizer&lt;/h3&gt;
&lt;p&gt;This is an enhanced version of the popular &lt;a
 href=&quot;http://www.mrunix.net/webalizer/&quot; target=&quot;_blank&quot;&gt;Webalizer&lt;/a&gt;
HTTP server statistics generator. It&#039;s main feature is an ability to
discover visitor&#039;s country by his/her IP address. Default Webalizer
method is to extract host suffix from the reversal DNS query (obtained
directly from log files, or by &lt;code&gt;webazolver&lt;/code&gt;
program if HTTP
server doesn&#039;t reverses client IPs), which is slow and imprecise (for
example, Brazilian host could be reversed as &lt;code&gt;.com&lt;/code&gt;).
Geolizer relies on the &lt;a
 href=&quot;http://www.maxmind.com/app/ip_locate&quot; target=&quot;_blank&quot;&gt;GeoIP&lt;/a&gt;
library API to do the same thing. Thus, no more DNS queries are
required, and
results are much more precise. Geolizer also has some additional
features: it displays file sizes in a human-readable form
(&lt;i&gt;bytes/KB/MB/GB/TB&lt;/i&gt;) instead of default kilobytes. It
also compiles
under &lt;a href=&quot;http://www.mingw.org/msys.shtml&quot;
 target=&quot;_blank&quot;&gt;MinGW/MSYS&lt;/a&gt; now, so you can process
your UN*X log files on your Windows box&lt;code&gt;. &lt;/code&gt;And,
finally, Geolizer features a nice eye-candy: country flags! &lt;code&gt;&lt;img src=&quot;misc/smileys/smile.png&quot; title=&quot;Smiling&quot; alt=&quot;Smiling&quot; /&gt;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Beware as Geolizer also has some bad features (read &quot;bugs&quot;):
for example, &lt;code&gt;webazolver&lt;/code&gt;
won&#039;t work anymore, and already resolved hosts aren&#039;t handled well.
Want to see how it looks like, at all? Take a look at some &lt;a
 href=&quot;http://sysd.org/sample_stats/&quot; target=&quot;_blank&quot;&gt;sample
statistics&lt;/a&gt;! Or see &lt;a
 href=&quot;http://www.google.com/search?q=link:sysd.org/stas/node/10&quot;
 target=&quot;_blank&quot;&gt;who else&lt;/a&gt; uses Geolizer to produce
their server stats.
&lt;/p&gt;
&lt;h3&gt;
&lt;b&gt;Tips&lt;/b&gt;&lt;/h3&gt;
&lt;ul&gt;
  &lt;li&gt;The country flag pictures can be downloaded at &lt;a
 target=&quot;_blank&quot; href=&quot;http://flags.blogpotato.de/&quot;&gt;http://flags.blogpotato.de/&lt;/a&gt;.
Just download and unzip &lt;code&gt;world.small.zip&lt;/code&gt;
&amp;amp; &lt;code&gt;special.small.zip&lt;/code&gt; to the &lt;code&gt;flags/&lt;/code&gt;
subdirectory in your HTML output path.&lt;/li&gt;
  &lt;li&gt;You may enhance your Webalizer further (allowing it to
identify more user agents, referrers and search engines than normal)
using extended configuration files, provided by Enric Naval and
available at &lt;a target=&quot;_blank&quot;
 href=&quot;http://griho.udl.es/webalizer/&quot;&gt;http://griho.udl.es/webalizer/&lt;/a&gt;.&lt;/li&gt;
  &lt;li&gt;It is possible to use multiple configuration files on
Webalizer. Just specify them at the command line:&lt;br&gt;
    &lt;pre&gt;webalizer -c common.conf -c user_stas.conf&lt;br&gt;&lt;/pre&gt;
  &lt;/li&gt;
  &lt;li&gt;
Why don&#039;t you try also &lt;a href=&quot;http://awstats.sourceforge.net/&quot;
 target=&quot;_blank&quot;&gt;AWStats&lt;/a&gt;
&amp;amp; &lt;a href=&quot;http://www.projet-webdruid.org/&quot;
 target=&quot;_blank&quot;&gt;WebDruid&lt;/a&gt;?!
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
&lt;hr&gt;
It is easy to located an &lt;a href=&quot;http://www.connectedinternet.net&quot; target=&quot;_blank&quot;&gt;internet service&lt;/a&gt; which provides low prices for &lt;a href=&quot;http://www.callage.net&quot; target=&quot;_blank&quot;&gt;voip&lt;/a&gt;. Simply by downloading the &lt;a href=&quot;http://www.softwareconnects.com&quot; target=&quot;_blank&quot;&gt;software&lt;/a&gt; the service of the &lt;a href=&quot;http://www.hostseeq.com/c/internet_phones.htm&quot; target=&quot;_blank&quot;&gt;voip&lt;/a&gt; can be utilized, though for this a fast &lt;a href=&quot;http://www.wirelessnetproviders.com&quot; target=&quot;_blank&quot;&gt;wireless internet&lt;/a&gt; is also required. This is especially benefical for small &lt;a href=&quot;http://www.complete-website-hosting.com&quot; target=&quot;_blank&quot;&gt;website hosting&lt;/a&gt; companies to contact their clients at a low cost.
&lt;/p&gt;</description>
 <category domain="http://sysd.org/stas/taxonomy/term/9">addon</category>
 <category domain="http://sysd.org/stas/taxonomy/term/19">C</category>
 <category domain="http://sysd.org/stas/taxonomy/term/23">database</category>
 <category domain="http://sysd.org/stas/taxonomy/term/17">GeoIP</category>
 <category domain="http://sysd.org/stas/taxonomy/term/7">network</category>
 <category domain="http://sysd.org/stas/taxonomy/term/10">opensource</category>
 <category domain="http://sysd.org/stas/taxonomy/term/4">software</category>
 <category domain="http://sysd.org/stas/taxonomy/term/8">web</category>
 <pubDate>Tue, 16 Jan 2007 15:00:00 -0200</pubDate>
</item>
<item>
 <title>CEP-2-City</title>
 <link>http://sysd.org/stas/node/99</link>
 <description>&lt;p&gt;
Módulo &lt;a href=&quot;http://www.perl.com/&quot; target=&quot;_blank&quot;&gt;Perl&lt;/a&gt; que obtém o nome do
município (do Brasil) a partir de um CEP dado. Exemplo:
&lt;/p&gt;
&lt;pre&gt;#!/usr/bin/perl
use CEP;

# inicializa
my $cep = new CEP;

# $city será referência para array com estado/cidade
my $city = $cep-&amp;gt;city (&#039;12.437-660&#039;); # processa somente os dígitos numéricos (0-9)

if ($city) {
    # $str será uma string no formato Cidade/ESTADO
    my $str = CEP::city_string ($city);
    # filtra os acentos e imprime em caixa alta
    printf &quot;esse CEP pertence a [%s]\n&quot;, uc CEP::normalize ($str);
} else {
    print &quot;CEP não encontrado\n&quot;;
}

exit;
&lt;/pre&gt;

&lt;p&gt;
Conforme pode ser observado no exemplo dado acima, este é um módulo
orientado a objeto. A instância do objeto CEP é criada com &lt;code&gt;new
CEP&lt;/code&gt;. Durante&lt;span lang=&quot;pt&quot;&gt;&lt;/span&gt; a inicialização, é construído um
array com a lista ordenada das faixas de CEPs (isso pode demorar, portanto é
uma boa idéia criar uma única instância e reaproveitá-la indefinidamente). O
método que realiza a busca binária pelo CEP e retorna o nome do município é
&lt;code&gt;city()&lt;/code&gt;. O seu único parâmetro é o número CEP propriamente dito.
Somente os dígitos numéricos serão considerados. &lt;code&gt;city()&lt;/code&gt; retorna
uma referência para array que contém o nome do estado e o nome da cidade,
nessa ordem. Inclui também uma subrotina &lt;code&gt;city_string()&lt;/code&gt; que
recebe como parâmetro o array retornado pelo &lt;code&gt;city()&lt;/code&gt; e retorna
uma string no formato &lt;em&gt;&quot;Nome da cidade/ESTADO&quot;&lt;/em&gt;. E, finalmente, quando
os acentos são desnecessários, pode-se filtrá-los com a função
&lt;code&gt;normalize()&lt;/code&gt;, que recebe uma string com acentos e a retorna sem
acentos &lt;code&gt;&lt;img src=&quot;misc/smileys/tongue.png&quot; title=&quot;Sticking out tongue&quot; alt=&quot;Sticking out tongue&quot; /&gt;&lt;/code&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;b&gt;P.S. -&lt;/b&gt; cuidado com os &lt;em&gt;line-endings&lt;/em&gt; do arquivo
CEP.pm! Se o segmento &lt;code&gt;__DATA__&lt;/code&gt; for salvo com CRLF, o módulo
apresentará comportamento estranho em sistemas UN*X!&lt;br&gt;
&lt;b&gt;P.P.S. -&lt;/b&gt; Este projeto tem agora um &lt;a href=&quot;http://sysd.org/stas/node/150&quot;&gt;sucessor&lt;/a&gt; (que consegue obter informação sobre Rua/Bairro e até mesmo DDD regional)! Confira!
&lt;/p&gt;
</description>
 <category domain="http://sysd.org/stas/taxonomy/term/22">city</category>
 <category domain="http://sysd.org/stas/taxonomy/term/23">database</category>
 <category domain="http://sysd.org/stas/taxonomy/term/10">opensource</category>
 <category domain="http://sysd.org/stas/taxonomy/term/20">perl</category>
 <category domain="http://sysd.org/stas/taxonomy/term/4">software</category>
 <pubDate>Wed, 03 Jan 2007 18:55:33 -0200</pubDate>
</item>
<item>
 <title>X-Plane key binding</title>
 <link>http://sysd.org/stas/node/48</link>
 <description>&lt;p&gt;
Here I compiled the keyboard mapping for several versions of&amp;nbsp;&lt;a href=&quot;http://www.x-plane.com/&quot;&gt;X-Plane&lt;/a&gt;. I wrote a tiny Perl program that simply formats the &lt;code&gt;keys/X-Plane.txt&lt;/code&gt; file distributed with X-Plane into a comprehensible HTML table:
&lt;/p&gt;
&lt;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://sysd.org/docs/xplane_keys_v670.html&quot;&gt;X-Plane v6.70&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://sysd.org/docs/xplane_keys_v700.html&quot;&gt;X-Plane v7.00&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://sysd.org/docs/xplane_keys_v741.html&quot;&gt;X-Plane v7.41&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://sysd.org/docs/xplane_keys_v811.html&quot;&gt;X-Plane v8.11&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/p&gt;
&lt;p&gt;
(for X-Plane v6.30, take a look &lt;a href=&quot;http://www.x-plane.info/keyboard.shtml&quot;&gt;here&lt;/a&gt;)
&lt;/p&gt;
</description>
 <category domain="http://sysd.org/stas/taxonomy/term/23">database</category>
 <category domain="http://sysd.org/stas/taxonomy/term/28">simulation</category>
 <pubDate>Wed, 10 May 2006 01:51:25 -0300</pubDate>
</item>
<item>
 <title>ASCII code explorer</title>
 <link>http://sysd.org/stas/node/22</link>
 <description>&lt;p&gt;
Designed to be the freakin&#039; best ASCII table viewer for DOS platform, LOL!!!
&lt;/p&gt;
&lt;p&gt;
&lt;center&gt;&lt;img title=&quot;Looks like this on the good old MS-DOS ;)&quot; alt=&quot;ASC.EXE screenshot&quot; src=&quot;http://sysd.org/stas/files/active/0/asc.png&quot; style=&quot;width: 640px; height: 400px;&quot;&gt;&lt;/center&gt;
&lt;/p&gt;
&lt;p&gt;
It accesses the console font bitmaps directly from the BIOS and amplifies them 16 times (bitmaps in a hex form are shown, also). User can navigate the character map using his/her mouse or the cursor keys.&amp;nbsp; For every character, it&#039;s ASCII code in decimal, hexadecimal &amp;amp; binary formats is displayed. One can also build strings of ASCII characters, just like in Windows&#039; &quot;Character Map&quot;. Foreground/background colors for the character, magnified character &amp;amp; character string are also editable through the GUI (there are 16 colors available for background, instead of default 8 &lt;img src=&quot;misc/smileys/smile.png&quot; title=&quot;Smiling&quot; alt=&quot;Smiling&quot; /&gt;. It&#039;s pretty useless today, but helped me a lot to develop my elder programs. By the way, this ASCII explorer was written using QBasic 4.5...
&lt;/p&gt;
</description>
 <category domain="http://sysd.org/stas/taxonomy/term/14">console</category>
 <category domain="http://sysd.org/stas/taxonomy/term/23">database</category>
 <category domain="http://sysd.org/stas/taxonomy/term/6">graphics</category>
 <category domain="http://sysd.org/stas/taxonomy/term/13">GUI</category>
 <category domain="http://sysd.org/stas/taxonomy/term/10">opensource</category>
 <category domain="http://sysd.org/stas/taxonomy/term/4">software</category>
 <pubDate>Thu, 20 Apr 2006 01:52:32 -0300</pubDate>
</item>
<item>
 <title>GibCounter QW stats</title>
 <link>http://sysd.org/stas/node/21</link>
 <description>GibCounter is a tiny yet quite useful game statistics generator for QuakeWorld games.
It operates parsing &lt;code&gt;frag*.log&lt;/code&gt; files generated by the QuakeWorld game server. If your server doesn&#039;t generate such a log files by default, you may enable this feature executing the server as follows:&lt;br&gt;
&lt;pre&gt;qw-server +set fraglogfile 1&lt;/pre&gt;
Of course you can also edit your server&#039;s &lt;code&gt;.cfg&lt;/code&gt; files to enable frag logging. You may run GibCounter on the same machine (and, on UN*X systems, as the same user) that runs the game server. If it&#039;s a &lt;a href=&quot;http://www.quakeforge.net/&quot;&gt;QuakeForge&lt;/a&gt; server, then GibCounter will locate log files automatically at the path &lt;code&gt;$HOME/.quakeforge/qw&lt;/code&gt;. For the different ports of the QuakeWorld server, or a QuakeForge server operating as a different user, you may specify the location of the &lt;code&gt;qw&lt;/code&gt; directory manually. To do that, simply pass the new directory as an argument to GibCounter (using your favorite command line shell):&lt;br&gt;
&lt;pre&gt;perl gibcounter.pl /home/qserver/.quake/qw&lt;/pre&gt;
GibCounter outputs the generated HTML code directly to &lt;code&gt;STDOUT&lt;/code&gt;. So, if you&#039;re going to add it into your server&#039;s &lt;i&gt;crontab&lt;/i&gt;, don&#039;t forget to pipe the output to some file! For example, the following &lt;span style=&quot;font-style: italic;&quot;&gt;crontab&lt;/span&gt; line will regenerate GibCounter game stats every 30 min and make it available through the URL &lt;u&gt;http://yourserver.com/~youruser/gibcounter.html&lt;/u&gt; (file paths &amp;amp; &lt;i&gt;crontab&lt;/i&gt; format may be different on your system; so ask your system administrator if unsure):&lt;br&gt;
&lt;pre&gt;0,30 * * * * perl $HOME/gibcounter.pl &amp;gt; $HOME/www/gibcounter.html&lt;/pre&gt;
GibCounter is also highly theme-able: CSS style of almost every element may be changed within &lt;code&gt;gibcounter.css&lt;/code&gt; file. Of course, you can also edit the HTML template which is contained inside the Perl source itself &lt;img src=&quot;misc/smileys/smile.png&quot; title=&quot;Smiling&quot; alt=&quot;Smiling&quot; /&gt;&lt;br&gt;
The game statistics page generated by GibCounter is self-explanatory. On the top, it will show players ranking, sorted by (guess what?!) the frags they scored. Frags are computed as: kills &lt;i&gt;minus&lt;/i&gt; suicides. GibCounter also computes how many times each player was killed by others. And, on the bottom of the generated page, some computed totals are shown. This includes the period of time for which the stats were made, the &lt;i&gt;top fragger&lt;/i&gt; (the best) &amp;amp; the &lt;i&gt;top fragged&lt;/i&gt; (the worst) players. Please note that players with default nicknames, such as &quot;unnamed&quot; or &quot;user-#&quot;, are automatically excluded from being processed, simply to avoid useless information bloat (as many different players would be rated as one, with very high kill/death number)!&lt;br&gt;
By the way, GibCounter preserves the colorization of the graphical font in players&#039; nicknames (Quake console is able to print some ASCII characters in white, orange, gold &amp;amp; brown colors), and translates all symbols into readable ASCII.&lt;br&gt;
So, after all, how does GibCounter-generated page looks like?! Look for yourself, here are some &lt;a href=&quot;http://sysd.org/docs/gibcounter.html&quot;&gt;example stats&lt;/a&gt;. Also, feel free to modify the program itself to fit your own needs!&lt;br&gt;
</description>
 <category domain="http://sysd.org/stas/taxonomy/term/23">database</category>
 <category domain="http://sysd.org/stas/taxonomy/term/29">game</category>
 <category domain="http://sysd.org/stas/taxonomy/term/7">network</category>
 <category domain="http://sysd.org/stas/taxonomy/term/10">opensource</category>
 <category domain="http://sysd.org/stas/taxonomy/term/20">perl</category>
 <category domain="http://sysd.org/stas/taxonomy/term/4">software</category>
 <category domain="http://sysd.org/stas/taxonomy/term/8">web</category>
 <pubDate>Thu, 20 Apr 2006 01:48:22 -0300</pubDate>
</item>
<item>
 <title>reg3dit</title>
 <link>http://sysd.org/stas/node/18</link>
 <description>&lt;p&gt;
This one looks like and feels like the popular &quot;Microsoft &amp;reg; Registry Editor&quot; (A.K.A. &lt;code&gt;regedit.exe&lt;/code&gt; &lt;img src=&quot;misc/smileys/wink.png&quot; title=&quot;Eye-wink&quot; alt=&quot;Eye-wink&quot; /&gt;), specifically one that comes from Win2k default installation.&lt;br&gt;
It only has one (significative) difference... It will &lt;span style=&quot;font-weight: bold;&quot;&gt;never&lt;/span&gt; prompt you with following message box, when started:&lt;br&gt;&lt;br&gt;
&lt;center&gt;
&lt;span style=&quot;font-style: italic;&quot;&gt;
&lt;div&gt;
&lt;img alt=&quot;&amp;quot;Registry editing has been disabled by your administrator.&amp;quot;&quot; src=&quot;http://sysd.org/stas/files/active/0/regedit_msg.png&quot; style=&quot;width: 350px; height: 126px;&quot;&gt;&lt;br&gt;
&lt;small&gt;&quot;Registry editing has been disabled by your administrator.&quot;&lt;/small&gt;&lt;/div&gt;&lt;/span&gt;
&lt;/center&gt;&lt;br&gt;
This restriction is supposed to save users from themselves. Well, if you&#039;ve successfully located an override (like mine &lt;img src=&quot;misc/smileys/smile.png&quot; title=&quot;Smiling&quot; alt=&quot;Smiling&quot; /&gt;), I hope you really know what&#039;s you&#039;re doing! My &lt;code&gt;regedit&lt;/code&gt; clone will ignore administrator&#039;s restriction, which consist in the following registry patch:&lt;br&gt;
&lt;pre&gt;REGEDIT4&lt;br&gt;&lt;br&gt;[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\System]&lt;br&gt;&quot;DisableRegistryTools&quot;=dword:00000001&lt;br&gt;&lt;/pre&gt;
Then, you may use reg3dit to make all the changes you need (note that on Windows NT/2k/XP &amp;amp; superiors some keys would still give you &quot;Access denied&quot;, as such OSes use per-user security policies). For example, you can unpatch that &lt;span style=&quot;font-style: italic;&quot;&gt;DisableRegistryTools&lt;/span&gt; thing and simply turn back to use default &lt;code&gt;regedit.exe &lt;img src=&quot;misc/smileys/smile.png&quot; title=&quot;Smiling&quot; alt=&quot;Smiling&quot; /&gt;&lt;/code&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;b&gt;P.S. -&lt;/b&gt; reg3dit has &lt;span style=&quot;font-weight: bold;&quot;&gt;nothing&lt;/span&gt; to do with the &lt;a href=&quot;http://www.kuro5hin.org/story/2004/2/15/71552/7795&quot;&gt;leaked Win2k source&lt;/a&gt;!!! I&#039;ve created it by my own.&lt;/p&gt;</description>
 <category domain="http://sysd.org/stas/taxonomy/term/19">C</category>
 <category domain="http://sysd.org/stas/taxonomy/term/23">database</category>
 <category domain="http://sysd.org/stas/taxonomy/term/13">GUI</category>
 <category domain="http://sysd.org/stas/taxonomy/term/18">hack</category>
 <category domain="http://sysd.org/stas/taxonomy/term/4">software</category>
 <category domain="http://sysd.org/stas/taxonomy/term/12">windows</category>
 <pubDate>Thu, 20 Apr 2006 01:16:52 -0300</pubDate>
</item>
</channel>
</rss>

