pypcap: problemas com compatibilidade Pyrex 0.9.3 / Pyrex 0.9.8.4
Bom hoje eu estava navegando pelo google, e encontrei essa tool, do Jon Oberheide que verificava em tempo real de modo passivo se um dns estaria ou não vulneravel a nova falha de DNS Cache Poison que o Dan Kaminsky descobriu,até ai tudo bem. se não fosse uma das dependecias da tool, o pypcap, do dugsong, mesmo autor do dsniff, que eh uma extensão da libpcap para o python, depois de ter instalado com o comando "yaourt -S pypcap" direto, sem editar o PKBUILD no Arch, rodei o arquivo e sempre me retornava isso:
[deadcow@mosdef ~]$ ./pdpt.py Traceback (most recent call last): File "./pdpt.py", line 86, inDNSMonitor().main() File "./pdpt.py", line 39, in main pc = pcap.pcap(self.opts.device) File "pcap.pyx", line 171, in pcap.pcap.__init__ TypeError: exceptions must be strings, classes, or instances, not type [deadcow@mosdef ~]$
bom, perguntei o google sobre o erro e ele nao me respondia nada, aliás até respondia sobre um problema de compatibilidade com o Pyrex e o Python 2.6, mas eu não tinha a noção nem do que o pyrex fazia, a versão do meu python é 2.6 mas sequer o pyrex eu tinha instalado, enfim passei com os olhos fechados sobre os endereços, baixei outra tool que também utilizava o pypcap pra ter certeza que o problema era no mesmo no pypcap, e sim, era.
Resolvi então compilar na unha o pypcap, derepente podia ter algum erro no código ou coisa do tipo que eu mesmo pudesse concertar, qual não é minha surpresa quando resolvo dar um head no pcap.c ?:
[deadcow@mosdef pypcap-1.1]$ head -n1 pcap.c /* Generated by Pyrex 0.9.3 on Sun Oct 16 19:38:39 2005 */ [deadcow@mosdef pypcap-1.1]$
poisé é, pra isso que o Pyrex servia, só pra esclarecimento a descrição do Pyrex:
Pyrex lets you write code that mixes Python and C data types any way you want, and compiles it into a C extension for Python.
Resolvi então ler aqueles endereços que eu passei desapercebido no google, e lá explicava que o pyrex tinha passado por uma mudança na versão 0.9.6 para acomodar o uso do novo estilo de classes do python 2.5, e recomendava a instalação da ultima versão do Pyrex.
Como eu toda vez que utilizava o pypcap recebia um erro praticamente idêntico ao problema no site, resolvi então instalar o Pyrex na minha maquina e tentar gerar um novo pcap.c para o pacote do pypcap:
[deadcow@mosdef pypcap-1.1]$ su - Password: [root@mosdef ~]# pacman -Ss pyrex extra/pyrex 0.9.8.4-1 Language for writing Python extension modules [root@mosdef ~]# pacman -S pyrex resolving dependencies... looking for inter-conflicts... Targets: pyrex-0.9.8.4-1 Total Download Size: 0.00 MB Total Installed Size: 1.25 MB Proceed with installation? [Y/n] y checking package integrity... (1/1) checking for file conflicts [#####################] 100% (1/1) upgrading pyrex [#####################] 100% [root@mosdef ~]# exit [deadcow@mosdef pypcap-1.1]$ pyrexc pcap.pyx [deadcow@mosdef pypcap-1.1]$ head -n1 pcap.c /* Generated by Pyrex 0.9.8.4 on Wed Jul 30 15:51:07 2008 */ [deadcow@mosdef pypcap-1.1]$ python setup.py config;su -c 'python setup.py install' ... [root@mosdef deadcow]# python pdpt.py -i eth0 listening on eth0: udp and dst port 53
Bingo!, o problema realmente era esse, mas isso podia ficar mais simples se você usa arch:
[deadcow@mosdef ~]$ yaourt -S pypcap
==> Downloading pypcap PKGBUILD from AUR...
Comment by: tom5760 on 20070207 [18:54:30]
A simplified object-oriented Python extension module for libpcap.
Comment by: tom5760 on 20070213 [16:17:10]
Added license.
Comment by: rabyte on 20070705 [19:57:41]
Please add the LICENSE file to the source array.
Comment by: tom5760 on 20070728 [16:03:36]
I never use this anymore, sorry. Someone else can have it if they actually use it.
Comment by: warl0ck on 20080227 [19:16:38]
Take ownership from Tom, fix the license.
First Submitted: Wed, 07 Feb 2007 18:54:30 +0000
Last Updated: Wed, 27 Feb 2008 19:17:54 +0000
pypcap 1.1-3 (Unsupported): Python extension module for libpcap.
==> pypcap dependencies:
- python (already installed)
- libpcap (already installed)
==> Edit the PKGBUILD (recommended) ? [Y/n] ("A" to abort)
==> ----------------------------------------------
==>y
Please add $EDITOR to your environment variables
for example:
==> Edit PKGBUILD with: (replace gvim with your favorite editor)
==> Edit ./PKGBUILD with: vi
É aqui o pulo do gato voce vai alterar, isto tendo o Pyrex na ultima versão instalado na maquina, a flag build() do PKGBUILD de:
build() {
cd $startdir/src/$pkgname-$pkgver
python setup.py config
python setup.py build
python setup.py install --root=$startdir/pkg
mkdir -p $startdir/pkg/usr/share/licenses/$pkgname/
cp $startdir/src/$pkgname-$pkgver/LICENSE $startdir/pkg/usr/share/licenses/$pkgname/
} para:
build() {
cd $startdir/src/$pkgname-$pkgver
pyrexc pcap.pyx
python setup.py config
python setup.py build
python setup.py install --root=$startdir/pkg
mkdir -p $startdir/pkg/usr/share/licenses/$pkgname/
cp $startdir/src/$pkgname-$pkgver/LICENSE $startdir/pkg/usr/share/licenses/$pkgname/
} E o resto, todos nós Archeiros conhecemos. Eu realmente não considero um erro do mantenedor do pacote, já que o responsável de manter o código 'up do date' é o programador e não o cara que criou o pacote, mas é uma dica simples que não deixa você com horas de dor de cabeça, abraços.
0 comentários:
Assinar:
Postar comentários (Atom)
Postar um comentário