network

The Pirate Bay un-SSL

Theory

Recently, the world saw The Pirate Bay offering SSL encryption on their server. This means that your ISP won't know anymore which torrent you are downloading, right? Wrong.
HTTPS is quite useless for protecting static and public content. By static, I do mean the .torrent file itself. It is always the same. By public, I do mean than one doesn't need any kind of authentication to pick up the content. It's always the same, for everyone. For crawlers, too.
So, one could easily index (a portion of) The Pirate Bay torrent database by the Content-Length. Then, one could intercept some encrypted traffic between some machine(s) within his/her network and the torrents.thepiratebay.org 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.

Practice

Don't try this at work, or you might hurt yourself Eye-wink

  1. Use Wireshark to capture some torrent downloads. Torrents are hosted on a separate server, which makes the task easier yet. Just use the following capture filter: "tcp and port 443 and host torrents.thepiratebay.org"
  2. Now, just go with the stream Smiling ("Follow TCP Stream" for the packet you suspect belongs to the torrent download. This will create another filter, just like "(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)")
  3. Just save the displayed stream anywhere else (pcap1.pcap sounds nice)
  4. Now, use my quick&dirty TPB-TLSlen.pl Perl script to get the request/response lengths:
    perl TPB-TLSlen.pl pcap1.pcap
    Yeah, I know, it is nasty. It only supports the TLS cypher. And it simply calls the tshark (the command line version of Wireshark) to parse it's output.
  5. Now, just paste the REQ and RES values below Laughing out loud
    (note that the REQ value is optional, setting it to 0 simply ignores the request size for matching)
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's filename was huge Smiling

Precision

The following size distribution chart was generated using the database with ~165K torrents:

torrent size distribution

The most common torrent size is ~14 KB, and it's easy to figure out that such torrents represent the shared 700 MB files Smiling
There'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 "distance" between torrent sizes is ~44 bytes (at least for the sample I've collected). So, adding a cookie 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 URI I'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 bold):
GET /4319199/[a4e]Ghost_in_the_Shell_TV_01-26.4319199.TPB.torrent?nVM2UGfcG533un4ym70eT2
9r0WwBLYdmFCNN+UTV/hiJ7EAXdFU5KfdWHpkB5lXaCmITsACKOPVyjmpbaOB+CrI5
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
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
HTTP/1.1 200 OK Content-Type: application/x-bittorrent Etag: "2198642509" 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 Set-Cookie: p=68eOfxOC7JwBYcMe1RJWC4Z5PV/lJzqJORW8KROPMH9zQhszSjFnRp2tsNWEoyabWAloneUaoz
MxYtx4hoM9MZUKE/7wGzC3ZKLEZdppG4og3W; expires=Mon, 28-Jul-2008 22:37:56 GMT; path=/;
domain=torrents.thepiratebay.org
(binary torrent data)

Solution

  1. Use a constant padding in the .torrent files. This messes things a bit, but stills ineffective. The only advantage is not messing up with the server Sad
  2. Patch the lighttpd server so it sends a non-lasting cookie with a random size.

Thanks

Encrypted session data

REQUESTRESPONSE
SSL size:
Min header length:
Max header length:

Possible matches

The Pirate Bay URL strlen(URI) torrent size
0 matches
Torrents indexed: 1580345

Share/Save/Bookmark

stas's picture
stas » July 31, 2008 » 11:05
database » hack » music » network » perl » php » video » web

Geolizer HTTP stats

Sample Geolizer output (fragment)

About Geolizer

This is an enhanced version of the popular Webalizer HTTP server statistics generator. It's main feature is an ability to discover visitor'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 webazolver program if HTTP server doesn't reverses client IPs), which is slow and imprecise (for example, Brazilian host could be reversed as .com). Geolizer relies on the GeoIP 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 (bytes/KB/MB/GB/TB) instead of default kilobytes. It also compiles under MinGW/MSYS now, so you can process your UN*X log files on your Windows box. And, finally, Geolizer features a nice eye-candy: country flags! Smiling

Beware as Geolizer also has some bad features (read "bugs"): for example, webazolver won't work anymore, and already resolved hosts aren't handled well. Want to see how it looks like, at all? Take a look at some sample statistics! Or see who else uses Geolizer to produce their server stats.

Tips

  • The country flag pictures can be downloaded at http://flags.blogpotato.de/. Just download and unzip world.small.zip & special.small.zip to the flags/ subdirectory in your HTML output path.
  • 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 http://griho.udl.es/webalizer/.
  • It is possible to use multiple configuration files on Webalizer. Just specify them at the command line:
    webalizer -c common.conf -c user_stas.conf
  • Why don't you try also AWStats & WebDruid?!


It is easy to located an internet service which provides low prices for voip. Simply by downloading the software the service of the voip can be utilized, though for this a fast wireless internet is also required. This is especially benefical for small website hosting companies to contact their clients at a low cost.

Share/Save/Bookmark

stas's picture
stas » January 16, 2007 » 14:00

tiny HTTP proxy


Main screen

This is a tiny and highly experimental HTTP/1.0 proxy software that I have written to debug HTTP protocol & it's clients. It is very small and simple, yet useful to reverse-engineering purposes. It's interface is quite obvious. The Server frame controls the IP, port and connection limit of the proxy server. It also shows how many connections are active at moment. The Data Traffic frame shows in/out packets & bytes. Service frame allows you to stop, start and quit the proxy. These are the very minimalist controls for the very minimalist proxy server.

The interesting stuff begins at the Plugin frame. All the packet passed through this proxy server are forwarded to the selectable plugin module. By default, it is logger.dll. It simply saves every single packet into separate file, which uses the following name scheme: from_IP.from_port-to_IP.to_port.log (for example, 127.0.0.1.4322-127.0.0.1.21.log). The files can be ordered by their modification date in your file explorer, so you can track the entire session:

Packets list

The logger.dll can be set up to include a sequence counter at the beginning of each packet and to output saved packets into some specific directory:

logger.dll setup

Plugin module is also capable of injecting packets. Load the replicator.dll file and check the setup screen:

replicator.dll setup

When you click the Capture button and then make some action in your proxied web client, the replicator plugin will prompt you if it got a corresponding packet. This packet may be resent automatically, at the period specified in the Period box. You can capture & replicate several packets, and manipulate their resend period. A very interesting application of the replicator plugin is to flood web chats and to spin up web counters. Of course, the right way is to use logger.dll and to make a clone that imitates the "real" web client.

The final note: this is, and always will be, an alpha-state code. I do not develop this proxy application anymore. It is useful to me the way it is. But you can grab the source and make a whatever plugin you like, or even rewrite the code entirely. I don't care. Just give me the proper credits!

Share/Save/Bookmark

stas's picture
stas » January 3, 2007 » 21:50

Duke3D D.M. cheater


E1L2 near the dark room elevator: enhanced brightness
E1L2 near the dark room elevator: enhanced brightness

Do you consider yourself a good Duke3D deathmatch player?! Neither I do Eye-wink
For our luck, 3D Realms released Duke3D source code under GPL license at April 1st, 2003. No, I'm not fooling you! Since then, several people are enhancing this classic game, extending it's portability and adding some cool features to it. There are ports like icculus Duke3D port and JonoF's Duke Nukem 3D Port. So, with the source in my hands, I decided to make my own version. I called it Duke Nukem 3D v1.666. It is 100% compatible with the original MS-DOS Duke3D v1.5, and adds some cheats into deathmatch games:
  • Omniscience. You can peek at your opponents screen (using "Coop View", which now works even in the deathmatch mode!), and hear the sounds they make (you may hear them scream when hit at the long distances). You are able to see in darkness all the time, without using the night vision goggles, and without that ugly green screen tinting. You'll know when your opponent drops a holoduke, so you won't waste your ammo with it. And finally, you won't see that confusing steroids trail anymore!
  • Aim bot features. Aim bot (which can be turned off!) will track the closest visible opponent automatically. If you're close enough to your opponent, aim bot will also try to kick him while shooting. And it will auto-activate med kit when you get shot! Another cool feature associated to the aim bot is the auto-jetpack. Jump from a high place, and jetpack will be activated automatically when you're close to the ground.
  • Practical enhancements. When you find a new weapon, game won't switch to it automatically. You will always see which weapon your opponent is using, without activating the "Weapon Mode". Demo viewer doesn't switches camera automatically anymore. And game doesn't prompts you with credit screens/animations when started or finished.
  • DNCROZ during multiplayer?! Even this is possible in the cheater! The only problem is: both players should type it when the game is paused, or the "Out Of Sync" condition occurs. Other cheats that work in the multiplayer game are: DNSCOTTY###; DNCOORDS, DNVIEW; DNRATE; DNBETA; DNTODD; DNSHOWMAP; DNALLEN; DNDEBUG.
  • ".ANM viewer". Just type DNENDING while playing, and the game skips right to the episode ending video Smiling
Please note that the most useful cheat, the aim bot, only works fine with the game's internal AI opponents (A.K.A. "PP bot", started with "duke3d.exe /q2 /a" command). It may work in the acceptable way on crossover 100 Mbps LAN connection (peer-to-peer), although... And the worst thing ever: Duke3D v1.666 will only work on real DOS mode, so forget it if you only have Windows NT/2k/XP (anyway, those who play Duke3D over network frequently do have Windows 9x installed for this specific purpose Smiling)
Still interested?! It's a bit difficult to install, though... First, you need to have the original Duke Nukem 3D v1.5 installed. Second, backup it!!! After that:
  1. Unpack the DN3D1666.ZIP into your Duke3D installation directory, overwriting files.
  2. Configure Duke3D. Run SETUP.EXE, and go to "Controller Setup", then "Choose Controller Type", and then select "Keyboard and External". After this, select "Setup External", "Change External Program Name", and type "DUKE3D.EXE" there. Now you can save config, but DON'T LAUNCH A GAME YET!!!
    (NOTE: it would be great if you disabled Turn_Left and Turn_Right keyboard bindings, although, if you don't plan to use "AutoAimSelfCalibrate" setting in DUKE3D.666 file or won't use Auto-Aim feature at all, you don't need to do this).
  3. Now, edit the file DUKE3D.666. Open it in your favorite editor (EDIT.COM Eye-wink), and you'll see that it's almost self-explanatory. Note that your mouse is now configured by this file, any SETUP settings will be ignored! Also note that default mouse settings for v1.666 imitates the default settings for the original Duke3D v1.5.
I also recommend you to read the "DN3D1666.ME!" file, supplied in the download package.

Relative project: GRP packer plugin for the Total Commander.

Sorry, no source code is available for direct download. However, if you're interested in it, contact me and I'll provide it to you! Thus, GPL license of the original Duke3D source wouldn't be harmed, I beleive...

Share/Save/Bookmark

stas's picture
stas » May 9, 2006 » 16:47
addon » C » cheat » game » graphics » hack » network » software

Micro$oft Messenger Hack


Micro$oft Messenger Hack screenshot

"Micro$oft Messenger Hack" (MSMH for short Smiling is a GUI alternative to the command line "net send", with some nice additional features. Please remember that "Messenger" referred here is a Windows NT/2k/XP system service, that "Transmits net send and Alerter service messages between clients and servers. This service is not related to Windows Messenger.". Messages transferred using this service looks just like this one:

"net send usage" screenshot

MSMH is able to send the same message as above example. It lists machines on the local network, so you won't mistype host names anymore. It can send messages multiple times, also (just imagine yourself flooding "*" Eye-wink. And, using "WinPopup" method, both "From" and "To" fields can be spoofed. By the other side, "net send" method can send messages beyond your LAN, given the IP address of the remote host.
MSMH executable is very small, as I programmed it in assembler language. But beware: Service Packs make the Messenger service disabled by default, and firewalls won't allow remote host to receive your messages. Well, MSMH was much funnier when I wrote it a long time ago Eye-wink

Share/Save/Bookmark

stas's picture
stas » May 5, 2006 » 01:53

GibCounter QW stats

GibCounter is a tiny yet quite useful game statistics generator for QuakeWorld games. It operates parsing frag*.log files generated by the QuakeWorld game server. If your server doesn't generate such a log files by default, you may enable this feature executing the server as follows:
qw-server +set fraglogfile 1
Of course you can also edit your server's .cfg 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's a QuakeForge server, then GibCounter will locate log files automatically at the path $HOME/.quakeforge/qw. For the different ports of the QuakeWorld server, or a QuakeForge server operating as a different user, you may specify the location of the qw directory manually. To do that, simply pass the new directory as an argument to GibCounter (using your favorite command line shell):
perl gibcounter.pl /home/qserver/.quake/qw
GibCounter outputs the generated HTML code directly to STDOUT. So, if you're going to add it into your server's crontab, don't forget to pipe the output to some file! For example, the following crontab line will regenerate GibCounter game stats every 30 min and make it available through the URL http://yourserver.com/~youruser/gibcounter.html (file paths & crontab format may be different on your system; so ask your system administrator if unsure):
0,30 * * * * perl $HOME/gibcounter.pl > $HOME/www/gibcounter.html
GibCounter is also highly theme-able: CSS style of almost every element may be changed within gibcounter.css file. Of course, you can also edit the HTML template which is contained inside the Perl source itself Smiling
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 minus 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 top fragger (the best) & the top fragged (the worst) players. Please note that players with default nicknames, such as "unnamed" or "user-#", 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)!
By the way, GibCounter preserves the colorization of the graphical font in players' nicknames (Quake console is able to print some ASCII characters in white, orange, gold & brown colors), and translates all symbols into readable ASCII.
So, after all, how does GibCounter-generated page looks like?! Look for yourself, here are some example stats. Also, feel free to modify the program itself to fit your own needs!

Share/Save/Bookmark

stas's picture
stas » April 20, 2006 » 01:48

WiFi card modding


Esse é um tutorial que publiquei no site Warchalking Brazil há algum tempo. Acontece que comprei uma placa WiFi (padrão IEEE 802.11b) que não atendia exatamente às minhas necessidades... Bom, segue-se o relato do que aconteceu com ela Eye-wink

Tutorial sobre modificação de uma placa wireless (IEEE 802.11b)

ou

Transformando placa WiFi Indoor em Outdoor


Autor: Stas
Edição no3 (8 de Maio de 2004)


Índice:

  1. Introdução
  2. Desmontando a placa PCMCIA
  3. Modificações em Hardware
  4. Modificações em Software (dispensáveis!)
  5. Agradecimentos/Referências/Links


Introdução:

Bom, primeiramente, qual é a necessidade de se alterar uma placa de rede wireless padrão IEEE 802.11b? Melhoramentos Smiling
802.11b está mais difundido do que nunca e o uso dele continue expandindo, e os preços -- baixando. O que outrora era tecnologia de ponta hoje está nas mãos do povo, portanto é uma excelente oportunidade para fuçar. E obviamente, nem todos temos ao alcance equipamentos sofisticados como espectrômetros e osciloscópios. Aí precisamos nos virar Eye-wink.
Basicamente, isso é um relato fotográfico comentado de como eu "me virei". Sem dúvida alguma, para mim as coisas aqui relatadas deram certo, porém não garanto que darão certo para você também, portanto tudo que você estará fazendo é uma responsabilidade somente sua.

Ótimo, sem mais advertências e precauções, vamos ao que realmente interessa! Para mexer com wireless precisamos de uma placa wireless, de boa qualidade (tanto hardware quanto firmware/software) de preferência. A minha é uma 3Com AirConnect 3CRWE777A, que você pode ver na figura 1:

3Com AirConnect 3CRWE777A
Figura 1: 3Com AirConnect 3CRWE777A

Diga-se de passagem, é uma excelente placa, estou mais do que satisfeito com a minha escolha, porém de cara repara-se um problema: cadê a antena? É verdade, não tem... E nem o conector! O manual ainda fala que o alcance é hilário.
Aí que entram as modificações Smiling
Para quem já fez um mod de seu micro, esse é o desafio supremo. De um lado, aquelas luzinhas neon e dezenas de ventoinhas não fazem muita coisa; até overclock dá um ganho ridículo de 5% apenas. Do outro lado, anexando uma antena numa placa dessas o alcance dela expande de 300 metros até 60 km! Sim, é possível. Aliás, abro um parênteses aqui: não há nenhuma prova científica disso, mas o bom senso sugere que placas que vêm de fábrica sem antena devem ser mais sensíveis. Repito: não sei ao certo, mas a minha 3CRWE777A chega a ser até sensitiva Smiling
O mesmo não ocorre para transmissão, infelizmente... Mas seja como for; na prática a minha modificação artesanal compete pau-a-pau com as pré-fabricadas com conectores banhados a outro, humildade a parte...
É lógico que eu não inventei fuçar a minha plaquinha do nada, enfim, me custou uma nota e coisa que eu menos queria era perder mais um eletrônico devido ao erro na interface entre o teclado e a cadeira.
Fui ao velho e bom Google e procurei se alguém já havia feito a façanha. Para minha grande sorte, achei esses links:
  1. http://www.fibranet.org/contenidos/wireless/3crwe777a.htm
  2. http://www.fibranet.org/contenidos/wireless/smc2632.htm
  3. http://www.nodomainname.co.uk/ma401/ma401.htm
São relatos de anexação do conector de 3 "diferentes" modelos: 3CRWE777A da 3Com, SMC2632W da SMC e MA401 da NetGear. Pelo que descobri, 3CRWE777A e SMC2632W são 2 nomes para uma coisa só.
E no 2o link observamos um sujeito metido a neurocirurgião fazendo o que precisamos fazer: adicionando um conector de antena externo! Mas faz favor meu... Você tem essas ferramentinhas? OK, e essas peças? Nem eu!
Porém para que se desapontar; nada que uma gambiarra não resolva! O raciocínio é exatamente o mesmo para essas 3 placas, daí tento induzir que será semelhante para toda e qualquer placa wireless. Aliás, descaradamente aproveito as fotos dos outros no meu tutorial, eheheh! Então vamos tentar fazer o máximo com o mínimo que dispomos, basicamente precisamos:
  1. Abrir a placa se for PCMCIA.
  2. Inserir capacitores.
  3. Adicionar o conector da antena.
Aí já que estamos nessa podemos aproveitar e atualizar firmware. Como diria o meu amigo John, vamos por partes!


Desmontando a placa PCMCIA:

"E se a minha placa não for PCMCIA"? Abraço amigo, muita boa sorte nas suas buscas, mas eu não faço menor idéia do que você precisa fazer. Mas espera-se que placas PCI já tenham conectores Smiling
Uma observação no mínimo curiosa: a placa 3CRWE777A é um cartão PCMCIA que vem com adaptador PCI/PCMCIA. O bacana é que há um selo colando o cartão no slot. Isso é, se você tiver um notebook e quiser usar a sua placa nele, terá de violar a garantia! Nem preciso salientar que 3Com não lançou driver algum para modo PCMCIA dessa placa, mas ouvi (li) relatos de compatibilidade 100% dos drivers da SMC2632W. Para Linux não há esse papo, modprobe prism_cs e problema resolvido, ponto!
Agora vamos lá. Nem preciso lembrar que abrir a placa viola a garantia, mas quem liga, aliás 3CRWE777A nem se fabrica mais... Único problema é que se você comprar placa nova depois, dificilmente conseguirá vender essa para alguém, pois a aparência do produto leva a desejar... Ô sociedade hipócrita que valoriza a forma e não a essência! Ninguém liga se o potencial de cobertura aumentou de fator 200, mas "ficou feio, sujo e porco"! Bom, enfim...
Há milhares de maneiras de ter o acesso a placa wireless, inclusive o sujeito no qual me baseei corta uma janelinha no plástico do cartão e fuça por meio desse orifício... Na boa, deve ser um médico frustrado; é um tanto mais fácil e seguro abrir a porcaria e depois fechar de novo!
Vamos lá então, o cartão PCMCIA é feito de 2 metades. Não tenha dúvida: enfie a chave de fenda entre as metades:

Abrindo a placa (passo 1)
Figura 2: Abrindo a placa (passo 1)

É legal que não seja aquela chave de fenda que você usa para tirar pneu furado de bike, OK? Agora com toda a delicadeza, gire a chave:

Abrindo a placa (passo 2)
Figura 3: Abrindo a placa (passo 2)

Pois é, as duas metades do cartão PCMCIA são coladas uma na outra com uma cola gosmenta, pegajosa e fétida. Agora é só puxar as metades para lados opostos e descolar a placa das capas protetoras:

Placa aberta
Figura 4: Placa aberta

Talvez seja interessante nesse momento limpar a placa da cola, senão vira o pólo de atração de todo tipo de poeira. A minha experiência pessoal foi: molhar um cotonete com álcool e depois passar o cotonete na cola espremendo-o de tal forma que o álcool cubra a cola. Aí é só deixar "de molho" por uns minutos e tirar a cola já mole com o mesmo cotonete. Agora vamos ver a parte da placa que nos interessa:

Antena interna
Figura 5: Antena interna

As caixinhas de metal servem para barrar interferências. Paradoxalmente elas protegem o seu computador da placa e não o contrário! Agora repare os "bigodinhos" nos cantos. Essa é a antena interna. Grande antena hein! E os 5 buracos no centro... São para soldar o conector! Per-fei-to! (agora, se na sua placa não tem, aí é outra história, resumida numa única palavra: "fo-deu") Espere aí... Os caras fizeram a placa supondo que iam por o conector e mudaram de idéia? Não exatamente, a mesma placa PCB se usa para montagem de diversos modelos, e modelo mais caro tem o conector. O mais reba, ou seja, o seu, não tem conector. E o conector é tão caro assim? Infelizmente, sim. Banhado a ouro, custa uns R$ 50 importado. Uma esplêndida jóia para dar de presente para sua esposa/namorada/mãe!!!
Mas espere, o que é isso?!

Conector pigtail "secreto" :)
Figura 6: Conector pigtail "secreto" Smiling

Não sei ao certo, mas pelo que pesquisei é um conector! Teoricamente você pode adquirir um cabo "pigtail" que conecte aí, mas não faço menor idéia aonde, aliás não sei nem o nome desse tipo de conector. Portanto não ajuda em nada. Conector raro é foda.
Então chegou a hora para você eleger um conector para lhe servir fielmente. Pigtails comerciais terminam com conector tipo N, já que antenas comerciais também são N. E cá entre nós, conector N, não é uma opção econômica e nem compacta... É um trambolho e tanto.
Isso é do lado da antena; do lado da placa é comum flagrar um conector SMA. Aliás, outra raridade no Brasil...
Tendo em vista essas dificuldades e não visando compatibilidade alguma dos meus produtos artesanais com os comerciais, optei pelo velho e bom BNC (Bayonet Nut Connector), uma herança do tempo das LANs coaxiais. Se deseja saber mais sobre essa relíquia, vai na Webopedia. Cultura inútil a parte... Só para você ter leve noção da coisa, esse é o meu ajudante Super-Luper demonstrando conectores SMA e BNC:

SMA versus BNC
Figura 7 SMA versus BNC

É claro que o BNC não foi feito para as freqüências de 2.4 GHz que wireless utiliza, mas quebra maior galho. Há sim perdas, mas o defeito mais grave do BNC é que ele somente possui conector macho para colocar em cabo. Isso é, para juntar dois cabos, você precisa desse artefato:

Junção de 2 plugs BNC macho
Figura 8: Junção de 2 plugs BNC macho

O que obviamente aumenta perdas. Cada metro de cabo RG-58 perde aproximadamente 1 dB, mas uma junção de conector perde vários. Não sei ao certo quantos, não é algo fenomenal mas é lamentável.


Modificações em Hardware:

Aqui está um importante ponto. Uma coisa é fuçar com software; se deu pau dá um reboot e no máximo você tem que reinstalar o Windows, agora hardware... Pense bem se você quer fazer isso, mas pense bem mesmo. Não é uma advertência, é uma preparação do espírito para batalha Smiling Talvez seja sensato comprar uma placa já com conector, poupa um monte de tempo e preocupações. Enfim, queria resumir: essa adaptação de forma alguma pode ser considerada difícil; é trabalhoso, leva bastante tempo e concentração, e o mínimo de habilidade com ferro de solda. Aliás de qualquer maneira é melhor praticar com solda antes.
Por que aqui você não terá que mexer com solda qualquer, terá que mexer com solda SMD (Surface Mount Device). Esse tipo de solda está para a indústria assim como a chave Phillips está. Para nós, meros mortais, ambos são simplesmente um saco. O único problema é que chave Phillips qualquer um tem, agora, estação de solda SMD -- não. O que fazer? Acoxambrar!
É possível utilizar o ferro de solda comum de baixa potência (25W) para realizar solda SMD, através desse adaptador maravilhoso:

Adaptador para solda SMD
Figura 9: Adaptador para solda SMD

"Você tá zuando..."
Tô!
Mas esse adaptadorzinho me foi extremamente útil, ele designa 3 funções:
  • Aumenta a precisão com a ponta fina.
  • Reduz o calor do ferro (peças SMD são mais sensíveis, tanto que a solda usada tem ponto de fusão mais baixo).
  • Amortece os movimentos da mão.
Cara, isso salvou o meu dia! Faça já o seu próprio:
  1. Pegue uns 20 cm de fio cobre de seção 1.5 mm². Geralmente encontrado no fio terra do chuveiro da casa Smiling
  2. Desencape o fio, né.
  3. Enrole ele na ponta do ferro de solda desligado. Enrole até ficar uma ponta de 1.5-2 cm. Aliás enrole para se segurar bem!
  4. Dobre a ponta que sobrou para frente. Agora você tem uma espiral de fio de cobre com uma protuberância, eheheh.
  5. Tire a espiral do ferro. Com lima ou lixa ou pedra de afiar faca aponte a ponta. Aponte o melhor que puder, tem que parecer um lápis em miniatura com ponta agulhiforme.
  6. Agora ligue o ferro e cubra a 1 cm ponta com finíssima camada de estanho. Isso é para não oxidá-la.
  7. Espere o ferro de solda esfriar e ponha espiral de volta. Ligue o ferro. O cobre vai escurecer na hora. Onde tiver a gordura dos seus dedos vai formar uns troços carbonizados... Dê um jeito para tirar eles para que toda a espiral menos a ponta esteja uniformemente escura.
  8. Agora com um alicate ajeite o adaptador no ferro de tal forma que a ponta do ferro encoste bem na ponta do adaptador.
Pronto, agora você está nas mãos com um ferro de solda apto a soldar componentes SMD:

Ferro normal de 25 Watts transformado em um SMD ;)
Figura 10: Ferro normal de 25 Watts transformado em um SMD Eye-wink

Agora que você está com A Ferramenta, observe a magnitude do trabalho a ser realizado:

Área das modificações
Figura 11: Área das modificações

Uma pequena estorinha: como é feita a montagem industrial de eletrônicos? Sei lá, nunca vi, mas vozes do além me sugeriram que é aproximadamente assim. É estampada uma placa PCB. Ela tem 3-4 camadas de cobre; não só as de fora mas tem interiores também. Daí vêm um robô e pinga cola nos pontos que virão componentes. Depois vêm outro robô com componentes e gruda eles em cima da cola. E finalmente, vêm um terceiro robô com solda, ele pinga a solda do lado dos componentes nas trilhas.
Observando-se o "close" da placa acima, reparamos que há 2 "vãos" onde era para termos os capacitores. Isso é, a solda está lá para a nossa sorte, mas nem a cola nem o componente estão. Só para ter idéia, o capacitor por fora é idêntico ao indutor L4. Dimensão aproximada: 1 x 0.5 mm. Assustador :/
O pensamento que surge: "e se não mexer nisso?". Aí não funciona; não haverá ligação elétrica do rádio com a antena. "Mas e se só fazer contato que nem os malucos do Tom's Hardware?". Aí até pode dar certo, mas pelo que pesquisei os capacitores são de 150 pF e estão lá para proteger o rádio. O rádio é extremamente sensível e pode ser danificado com correntes que não sejam da ordem de 2.4 GHz de freqüência. E por que 2 capacitores de 150 pF associados e não um só de 75 pF? Aí sinceramente não sei, mas parece ter algo a ver com latência. Enfim, os capacitores estão lá para proteção, e 2 deles fazem isso melhor do que 1.
Então você precisa de componentes eletrônicos agora... Olha, tudo o que precisa está no RS do Brasil, apenas procure por seguintes números: 435-1582, 111-712 e 111-734. Pra começar os capacitores só vendem 50 unidades no mínimo, daí junta o imposto para importação, enfim... O Brasil é triste.
Agora olhe a mágica (ou charlatanice, como bem quiser):

Capacitores adicionados
Figura 12: Capacitores adicionados

Que bizarro, não! Bom, a grande vantagem é que funciona e os componentes você encontra em qualquer loja de eletrônica. Se você conseguiu os capacitores SMD e/ou conector SMA PCB-mount, é melhor você seguir os passos de alteração da SMC2632W.
Se você teve a mesma sorte que eu, adquira apenas:
  • 2 capacitores cerâmicos de 150 pF.
  • Uns 10 cm de cabo RG-58. Provavelmente só poderá comprar 1 metro Sad
  • Conector BNC macho para cabo.
Felizmente essas peças são comuns e baratas.
Vamos prosseguir da seguinte forma: primeiro os capacitores já que é a parte mais difícil, depois o conector no cabo e depois cabo na placa. Percebe-se nitidamente que o capacitor é bem maior do que o recomendado, aliás ele foi feito para soldar no furo e não de encostar. Portanto você precisa adaptar os 2 capacitores:

Capacitor adaptado
Figura 12a: Capacitor adaptado

Pegue o capacitor de 150 pF e corte fora as pernas dele, deixe só toquinhos. Agora com alicate ou pinça, dobre os tocos para dentro e para baixo como mostrei no esquemático tosco (== "tosquemático") acima. Faça da maneira que encostando o capacitor na placa PCMCIA as perninhas dele encostem por fora as bolinhas de solda. Cara, essa parte é muito responsável, você tem que ajeitar o capacitor com precisão de décimos de milímetro senão terá problemas para soldar!
Por falar em solda, quando dobrar as perninhas do capacitor, deixe minúsculas bolinhas de estanho nas pontas do que sobrou das pernas do capacitor. Representei por bolinhas azul-marinho do tosquemático. Essas bolinhas irão fundir com as presentes na placa dessa forma fazendo ligação elétrica. Então capricha aí por que é uma péssima idéia tentar adicionar solda além dessa aí depois... Ah, e lembre-se de que o capacitor não é um componente crítico a calor, então trabalhe sem pressa. Mas também não abuse a ponto de derreter o pobre coitado...
Agora vem outra parte crítica. Ponha o adaptador para solda SMD no ferro, esquente bem, e cuidadosamente des-solde o indutor L4. Lembre-se de que ele está colado. Para tirá-lo de forma segura, encoste a agulha do ferro de solda num dos lados onde está a solda, e pressione levemente para lado. Assim que o indutor esquentar, a solda e a cola irão derreter e o capacitor sairá, Cuidado que o adaptador tende a funcionar como mola, impulsionando o indutor para longe. Se cair no chão já era, você jamais encontrará pelo próprio tamanho da peça Smiling
Ótimo, agora que a área está preparada, limpe os capacitores e a placa da gordura das suas digitais e prepare-se para colar os capacitores na placa. Essa é, sem dúvida alguma, a parte mais foda. A solda é tão pequena que não irá segurá-los, então tem que ser cola. Super-bonder é perfeito. Aliás, repare que tive que colar os capacitores orientados de forma oposta um para outro, devido à escassez do espaço. Pingue o mínimo que puder no capacitor e no respectivo lugar da placa. Com pinça, encoste o capacitor, tome maior cuidado para as perninhas dele estejam em contato com as bolinhas de estanho na placa. Depois apenas espere a cola secar por 1 minuto. Cole os capacitores separadamente, e não os 2 de uma vez.
Bom, teoricamente, assim já funciona; se você encostou bem os capacitores eles estão em contato elétrico com a placa. Mas é óbvio que não há nada melhor que solda para uní-los de vez. Agora você só tem de encostar a agulha quente nas junções e derreter o estanho da perninha do capacitor e da placa. Nada mais do que isso. Se faltou estanho, você pode colocar um pouquinho na agulha e levar para o local da solda, mas é muito pouco mesmo e tenha maior cuidado. Um parênteses aqui: para mim foi mais fácil soldar a olho nú; usei a lupa somente para me guiar e ver como ficou a solda. A minha lupa é pequena demais e distorce muito a perspectiva então preferi forçar o cristalino. O problema é que esse tipo de operação levou umas 2 horas então cansei legal a vista. Mas ainda confio mais no meu olho do que na lupa Smiling
Beleza, agora que os capacitores estão colados e a parte mais McGyver fora feita. Uma ótima hora para plugar a placa e ver se ainda funciona! Observação: pode colocar a placa no adaptador PCI/PCMCIA sem as metades do cartão mesmo, porém tome o maior cuidado para ver se encaixou corretamente. O cartão serve de "guia", e sem ele pode encaixar de qualquer jeito e dessa forma danificar o hardware... Não teria nada mais triste do que isso a essa altura. O próximo passo é o conector da antena. Como não achei a coisa com 5 pinos para fazer do jeito certo, soldei direto o cabo RG-58:

Solda do cabo coaxial
Figura 13: Solda do cabo coaxial

Cá entre nós, RG-58 é um dos piores para freqüências da ordem de 2.4 GHz, mas é o mais fino e fácil de ser trabalhado. Um RGC-213 é melhor mas ele tem cerca de 1 cm de diâmetro! Pouco prático para soldar, sem falar que é pouco flexível e pode arrancar a solda junto com as trilhas acidentalmente.
De qualquer forma, sugiro que antes você solde o conector BNC no cabo e depois o cabo na placa. Para soldar o conector, recomendo esse tutorial que não deixa dúvidas Smiling
Agora vamos lá, como soldar o cabo coaxial nos 5 buraquinhos? Para começar, só consegui soldar nos 4 por que o 5o ficou tapado por um capacitor.
Comece desencapando uns 3 cm da ponta do cabo coaxial. Agora puxe a malha para fora, e separe a malha em 3 "tranças". enrole bem essas tranças para que fiquem como um fio só, e solda nelas! Dessa vez sem o adaptador SMD, apenas o ferro de solda comum.
Depois disso, desencape completamente o fio central que tiver para fora, enrole-o e também cubra de solda. Agora dobre as 3 "tranças" da malha para frente, e encurte todos os fios até deixar 7-10 mm apenas. Note que todos esses fios devem passar pelos buracos na placa PCB. Portanto não abuse na solda meu.
E um detalhe interessante: o fio vai sair da placa por cima, do mesmo lado que estão os capacitores. Eis mais um "tosquemático" para explicar o por que:

Solda do fio na PCB
Figura 13a: Solda do fio na PCB

Isso é um corte da placa PCB. Em amarelo está um tubo de cobre o qual se encontra dentro dos buracos. Repare que ele entra dentro da placa e termina com um "chapeuzinho" em cima. É nele que se deve fazer a solda para segurar. Mas infelizmente esse anel de cobre fica em cima da placa, portanto o ideal seria soldar o fio por baixo. Aí entra em jogo a suprema esperteza de quem fez o adaptador PCI/PCMCIA. A placa encaixa de tal forma que se fazer isso o cabo vai "olhar para baixo", e, tirando algumas raras exceções, a antena fica em cima... E outro detalhe: você já reparou que os capacitores são grandinhos... Pois é, a placa PCMCIA não vai entrar mais no cartão; vai ter q fazer buraco mesmo, e já que vai estragar a coisa mesmo por que não fazer buraco de um lado só?!
Mas voltemos ao "tosquemático". Encaixe o fio central no buraco central e outros 3 fios da malha nos buracos por fora. Fixe a placa e a antena de tal forma que o cabo saia mais ou menos perpendicularmente e solda neles! Você terá que encher os tubos com fios dentro com solda. Tome um cuidado aqui: se esquentar muito as trilhas podem desgrudar da PCB. Agora o cabo está sendo segurado por solda por cima. Vire a placa e ponha um pouco de solda embaixo também, formando uma "bola" que não permita o fio sair. É complicadinho de explicar, então medite sobre o esquemático até cair a ficha Smiling
Teste a placa mais uma vez; e agora você pode colocá-la de volta no cartão PCMCIA:

Visão frontal do "produto final" :P
Figura 14: Visão frontal do "produto final" Sticking out tongue

Bom, esse é o lado bonito da coisa, o lado feio demonstra uma porquice e tanto... Não tratei de fazer orifício bonitinho para saída do cabo, inclusive por que mesmo com o buraco o cartão não fechava por causa dos capacitores. Simplesmente arranquei fora a capinha de plástico que juntava na capinha de metal. Para ser mais exato, cortei as hastes laterais com tesoura e depois arranquei o que sobrou no centro com alicate. Aí na parte de metal sobraram umas "garras" que dobrei para dentro... Nada de especial.
Fechamos a placa com o toque final de fita isolante ou durex, e ela está pronta para voltar para o adaptador e conseqüentemente, para seu PC! Não precisa ser muito perspicaz para notar que a placa não entra no PC junto com o adaptador por causa do cabo, portanto primeiro encaixe no seu micro o adaptador e nele -- o cartão PCMCIA. Aí é só conectar o cabo à antena...

Pringles Yagi Cantenna
Figura 15: Pringles Yagi Cantenna

...E meus parabéns =D


Modificações em Software (dispensáveis!):

Agora vem a parte soft... Nos 2 sentidos Eye-wink
Fiquei bastante desapontado quando baixei o último update oficial de firmware da 3Com, inclusive drivers reclamavam de bugs nessa versão. Não vou escrever tutorial sobre atualização de firmware aqui, tanto por que alguém já escreveu com muito mais detalhes do que eu podia imaginar:

Mini-howto on Flashing Intersil Prism Chipsets

Só deixo aqui observações do que achei mais interessante. Antes de mais nada, esse tutorial é para placas com chipset Prism/2, é o mais comum e bem-suportado. Tanto que até dá para transformar seu PC num Access Point com o excelente driver Host AP!
Aliás o hostap é a chave para update de firmware também! Ele vêm com um utilitário que testa a compatibilidade de dado firmware com o seu hardware:

prism2_srec -v wlan0 <station firmware>

Isso vai testar a compatibilidade do "station firmware". Se não der nenhum warning ou erro, prossiga com:

prism2_srec -v -f wlan0 <station firmware>

Existe também o tal do "primary firmware", é um arquivo bem menor o que me sugere que é menos importante Smiling
O que você não pode esquecer é: NUNCA, JAMAIS atualize o firmware primário sem atualizar o "station". Isso inutiliza a placa. Bom, se é tão perigoso assim, mais um motivo para ignorá-lo. Aliás os bugs do meu firmware foram resolvidos atualizando-se apenas o "station". Você deve estar perguntando: "onde arrumo as firmwares para minha placa"? Bom, na página do tutorial tem umas par. Pode procurar no Google também.
O que importa é que você pode testar firmware que bem quiser no chute mesmo, pois espera-se que o prism2_srec não permita você a fazer cagada. Mas obviamente não há nenhuma garantia de eventuais falhas, né.

Bom, esse é o hostap que é para Linux... Mas existe o WinUpdateFlash, especificamente a versão 0.7.0 dele (pode ser encontrada na página do tutorial, novamente), que é interessantíssimo. Para começar, foi feito pelos próprios pais do chipset Prism/2. E olha só o que ele faz:

Opção para alterar MAC no WinUpdateFlash da Intersil
Figura 16: Opção para alterar MAC no WinUpdateFlash da Intersil

O MAC pode ser alterado para várias coisas e por vários caminhosSmiling
Nos UN*X em geral pode ser usado o ifconfig ou programa especializado tal como MAC Changer. No Linux, com o driver linux-wlan-ng, pode-se usar o utilitário wlanctl-ng:

wlanctl-ng wlan0 dot11req_reset setdefaultmib=true macaddress=ba:ba:ca:fe:d1:d0
ifconfig wlan0 down hw ether ba:ba:ca:fe:d1:d0
ifconfig wlan0 up


Até para Windows temos o utilitário SMAC (nessa página também ensina trocar MAC do Mac (eheheh) e dos Windows 98/ME).
Mas todas essas alterações são voláteis, isso é, a placa wireless só fica "despersonificada" até reboot ou reload do driver. Com WinUpdateFlash a atualização é gravada na EEPROM, isso é, o próprio hardware é "clonado":

Entrada de MAC novo
Figura 17: Entrada de MAC novo

Muito legal, não? Mas tome cuidado; MACs como 00:00:00:00:00:00 ou FF:FF:FF:FF:FF:FF não funcionam bem nem para software; imagine se der pau no hardware! E outro detalhezinho: o MAC novo não entra em vigor até que um update de "station firmware" seja efetuado. O procedimento do qual me utilizei foi:
  1. Elegi um "station firmware" funcional no Linux com ajuda do prism2_srec
  2. No Windows, editei o MAC pelo WinUpdateFlash. Serial nem mexi pois não sei utilidade dele.
  3. Ainda no WinUpdateFlash, apliquei update de firmware que escolhi no Linux.
  4. Desfibrilei o Windows com leve toque no Ctrl-Alt-Del Laughing out loud
Então é isso aí, boa sorte fuçando wireless, muito obrigado por ter lido até aqui e desculpe a tagarelice! Eye-wink


Agradecimentos/Referências/Links:

Primeiramente, queria agradecer:
  • Andrew S. Clapp - pelo excelente tutorial sobre antenas para wireless: Pringles Yagi Antenna.
  • +bERT - primeiramente por ter paciência para tirar todas as fotos e ainda melhorá-las! O cara consegue ser ao mesmo tempo hacker, phreaker, fotógrafo, cineasta, músico; isso tudo sem considerar a sua incrível capacidade de alimentar circuitos com correntes biônicas! Valeu cara ;P
  • Beethoven - por um monte de dicas, sugestões e indicações, pelo site Warchalking Brazil e pela proposta de publicar esse tutorial lá Smiling
  • Cpt. Kaboom & Brian Oblivion - pelo tutorial original porém difícil de ser realizado.
  • David Taylor - pela excelente página sobre MA401 da NetGear e pela explicação para que servem os capacitores de 150 pF.
  • Jean Tourrilhes - pelos excelentes Wireless Tools e descrição de tecnologias empregadas em wireless.
  • Juan Miguel Taboada - pela coleção de informações sobre 3CRWE777A da qual parti nas minhas buscas.
  • Muitos outros que publicaram seus resultados na Internet!

Share/Save/Bookmark

stas's picture
stas » April 20, 2006 » 00:40
XML feed