Tcpdump

Para quem não conhece, tcpdump é um analisador de tráfego de rede. Por “escutar” o que passa pela placa de rede, você precisa executá-lo com usuário root.
O objetivo não é estender muito sobre ele, mas apenas descrever algumas informações importantes.
Primeiramente vamos rever os tipos de possíveis flags nos pacotes de rede com a sigla que aparece na análise:
S (SYN), F (FIN), P (PUSH), R (RST), W (ECN CWR), E (ECN-Echo)
Caso nenhum flag esteja definido, apenas um ponto ‘.’ aparece, exemplo: “Flags [.]”.
Ao executar o comando tcpdump sem argumentos, uma captura é iniciada sem filtros utilizando a placa de rede primária. Exemplo especificando outra placa de rede:

tcpdump -i lo

Além de visualizar os resultados na tela, também é possível salvá-lo em um arquivo para futura análise:

tcpdump -w /tmp/dump

Para abrir o arquivo salvo:

tcpdump -r /tmp/dump

Um argumento interessante a utilizar é o “-A” que tenta abrir os pacotes para exibir o conteúdo, exemplo:

$ tcpdump -A host 10.0.0.1
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth1, link-type EN10MB (Ethernet), capture size 65535 bytes
14:48:11.162477 IP server1.corp.33951 > server2.corp.wap-wsp: Flags [P.], seq 1:189, ack 1, win 115, options [nop,nop,TS val 2116848677 ecr 826203350], length 188
E.....@.@..)
...
.....#...r.1w.....sQ......
~,.%1>..GET /_search?pf.nome=diego HTTP/1.1
User-Agent: curl/7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.15.3 zlib/1.2.3 libidn/1.18 libssh2/1.4.2
Host: server2:9200
Accept: */*

Outros argumentos interessantes:
-nn: numérico (não resolve nome de host ou porta)
-vv: verboso (mais informações)
-XX: exibe o conteúdo em hexadecimal e ASCII
Filtros interessantes:
host (servidor de origem ou destino)
tcp port
Exemplo:

$ tcpdump -nnvvXX host 10.0.0.1 and tcp port 9200
tcpdump: listening on eth1, link-type EN10MB (Ethernet), capture size 65535 bytes
14:56:51.724354 IP (tos 0x0, ttl 64, id 50362, offset 0, flags [DF], proto TCP (6), length 422)
    10.0.0.2.33954 > 10.0.0.1.9200: Flags [P.], cksum 0x5163 (correct), seq 1:371, ack 1, win 115, options [nop,nop,TS val 2117369239 ecr 826723912], length 370
        0x0000:  0050 56b3 1263 0050 56b3 8ab4 0800 4500  .PV..c.PV.....E.
        0x0010:  01a6 c4ba 4000 4006 244c 0a14 1e11 0a14  ....@.@.$L......
        0x0020:  1e13 84a2 23f0 6ab5 b930 8d28 46fe 8018  ....#.j..0.(F...
        0x0030:  0073 5163 0000 0101 080a 7e34 7d97 3146  .sQc......~4}.1F
        0x0040:  ce48 504f 5354 202f 5f73 6561 7263 6820  .HPOST./_search.
        0x0050:  4854 5450 2f31 2e31 0d0a 5573 6572 2d41  HTTP/1.1..User-A
        0x0060:  6765 6e74 3a20 6375 726c 2f37 2e31 392e  gent:.curl/7.19.
        0x0070:  3720 2878 3836 5f36 342d 7265 6468 6174  7.(x86_64-redhat
        0x0080:  2d6c 696e 7578 2d67 6e75 2920 6c69 6263  -linux-gnu).libc
        0x0090:  7572 6c2f 372e 3139 2e37 204e 5353 2f33  url/7.19.7.NSS/3
        0x00a0:  2e31 352e 3320 7a6c 6962 2f31 2e32 2e33  .15.3.zlib/1.2.3
        0x00b0:  206c 6962 6964 6e2f 312e 3138 206c 6962  .libidn/1.18.lib
        0x00c0:  7373 6832 2f31 2e34 2e32 0d0a 486f 7374  ssh2/1.4.2..Host
        0x00d0:  3a20 6170 7065 6c73 3031 703a 3932 3030  :.server01p:9200
        0x00e0:  0d0a 4163 6365 7074 3a20 2a2f 2a0d 0a43  ..Accept:.*/*

Script para listar aplicações do WebSphere via wsadmin

Esse script utiliza a biblioteca wsadminlib, que facilita muito o uso:

execfile('wsadminlib.py')
print "app;cluster;startingWeight;VirtualHost;ContextRoot"
apps = listApplications()
for app in apps:
    cluster = getClusterTargetsForApplication(app)
    priority = AdminConfig.show(AdminConfig.showAttribute(AdminConfig.getid('/Deployment:'+app+'/'),'deployedObject'),'startingWeight').split()[1].replace(']','')
    vh = getApplicationVirtualHost(app) or ''
    cr = getApplicationContextRoot(app) or ''
    print app+';'+cluster[0]+';'+priority+';'+vh+';'+cr

As colunas estão separadas por ponto-vírgula para abrir diretamente no Excel brasileiro.

Script para listar portas no WebSphere via wsadmin

print "CellName,NodeName,ClusterName,ServerName,host,portRMI,portWeb"
clusters = AdminConfig.list('ServerCluster').splitlines()
for cluster in clusters :
    ClusterName = cluster.split( '(', 1 )[ 0 ]
    servers = AdminConfig.list('ClusterMember', cluster).splitlines()
    for server in servers :
        ServerName = server.split( '(', 1 )[ 0 ]
        ServerId = AdminConfig.getid('/ServerEntry:'+ServerName+'/')
        CellName = ServerId.split( '/' )[ 1 ]
        NodeName = ServerId.split( '/' )[ 3 ].split('|',1)[0]
        NamedEndPoints = AdminConfig.list('NamedEndPoint', ServerId).splitlines()
        for namedEndPoint in NamedEndPoints:
            endPointName = AdminConfig.showAttribute(namedEndPoint, "endPointName" )
            endPoint = AdminConfig.showAttribute(namedEndPoint, "endPoint" )
            if endPointName=='WC_defaulthost':
                portWeb = AdminConfig.showAttribute(endPoint, "port" )
            if endPointName=='BOOTSTRAP_ADDRESS':
                host = AdminConfig.showAttribute(endPoint, "host" )
                portRMI = AdminConfig.showAttribute(endPoint, "port" )
        print CellName+","+NodeName+","+ClusterName+","+ServerName+","+host+","+portRMI+","+portWeb

Parser PHP do Plugin WebSphere para IHS

Um jeito fácil de listar a configuração de URLs e portas configuradas no WebSphere é baixar o arquivo XML de configuração do plugin do IHS e realizar um parse utilizando o código PHP abaixo:

<?php
$xml = simplexml_load_file('plugin-cfg.xml');
   
$json_string = json_encode($xml);
   
$result_array = json_decode($json_string, TRUE);
sort($result_array['VirtualHostGroup']);
foreach ($result_array['VirtualHostGroup'] as $cada) {
    print $cada['@attributes']['Name']."\n";
    sort($cada['VirtualHost']);
    foreach ($cada['VirtualHost'] as $vh) {
        print "\t".$vh['@attributes']['Name']."\n";
    }
}
?>

Inventário de WebSphere

Para levantar informações do WebSphere Application Server (WAS) melhor trabalhar com scripts. E para ajudar nessa tarefa temos o wsadminlib.py, fornecido pela IBM, utilizado no wsadmin.
Caso não tenha acesso ao usuário de execução do WebSphere, você pode usar uma instalação local e conectar-se remotamente ao servidor desejado, por exemplo:
/opt/IBM/WebSphere/AppServer/profiles/AppServer01/bin/wsadmin.sh -lang jython -host 10.1.0.2 -user wasadmin -password 123456
Uma vez conectado ao servidor, vamos carregar as funções da biblioteca:

wsadmin>execfile('wsadminlib.py')

Exemplos de Funções:

 listServerClusters()
 listServersInCluster('clustername')
 listNodes()
 listAllServers()
 print getServerPort('nodename','servername','BOOTSTRAP_ADDRESS')
 print getServerPort('nodename','servername','WC_defaulthost')
 listApplications()
 getClusterTargetsForApplication('appname')
 getApplicationContextRoot('appname')
 getApplicationVirtualHost('appname')

Para obter a ordem de inicialização de cada aplicação, encontrei um script alternativo:
http://daneshmishra.blogspot.com.br/2010/10/jacl-script-to-change-start-weight-of.html
 

Endereços de teste do SES

A Amazon criou o SES Mailbox Simulator, basicamente são contas de email que simulam situações possíveis de caixas postais. Para testar, basta enviar email para as contas abaixo:
success@simulator.amazonses.com
bounce@simulator.amazonses.com
ooto@simulator.amazonses.com
complaint@simulator.amazonses.com
blacklist@simulator.amazonses.com
Documentação: http://docs.amazonwebservices.com/ses/latest/DeveloperGuide/MailboxSimulator.html

Coisas para lembrar ao comprar um notebook

Essa lista é pra mim mesmo, coisas que acho importante, pode ser pra alguém também.

  • Ter todas as teclas
    Parece incrível, mas tem fabricante tirando teclas como a interrogação (?)
  • Facilidade nas teclas Home/End/Page Up/Page Down
  • Não possuir tecla grudada nas setas
    Ter que olhar pro teclado pra navegar com as setas não dá
  • Ctrl no lugar
    Tem notebook com a tecla Fn no lugar do Ctrl esquerdo, aí na hora de copiar e colar não acontece nada
  • Shift direito grande
    Se o shift for do tamanha da seta complica
  • Câmera e microfone embutidos
  • Possibilidade de desativar o touchpad
    Isso para não ficar mexendo o mouse enquanto digitamos
  • Verificar se o hardware não tem bug
    Às vezes tem um equipamento mais barato porque o o processador é defasado, o chipset é bichado, entre outros. Vale a pena pesquisar.
  • Saída de Vídeo
  • Luz para o teclado (quase esqueci este item importantíssimo, ler a tela no escuro é fácil, mas e digitar?)

Alguns itens que seria legal mas que devem se defasar

  • Disco de 7200 RPM
    Claro, SSD seria melhor, mas ainda é bem mais caro
  • Blu-ray
  • Porta HDMI

Mais ideias? Comentem abaixo.

Abrindo uma empresa em SP

Preciso abrir uma empresa, já me disseram que preciso me cadastrar na Junta Comercial, na Receita Federal e na Prefeitura de São Paulo.
O processo tem que ser nessa ordem mesmo, pois na Jucesp (Junta Comercial de São Paulo) eles vão fornecer o NIRE (Número de Inscrição no Registro de Empresas). Com o NIRE, posso dar entrada na Receita para obter o CNPJ, que depois será utilizado para entrada na Prefeitura.
Então vamos ao Passo 1 – Preencher a ficha na Jucesp
No site http://www.jucesp.fazenda.sp.gov.br/ há um link para o Cadastro Web, você cria um usuário para em seguida preencher as fichas.
OBS: utilizar o Internet Explorer, percebi que no Firefox as validações não funcionam.
Escolhi o tipo Empresário pois sou apenas eu, se tiver sócio seria Sociedade Limitada. Vamos fazer uma Constituição (abrir a empresa).
Preencher a ficha é simples, atenção apenas para o nome da empresa, que no caso de Empresário precisa ter o nome completo e se quiser acrescentar um aditivo, mas não pode suprir nenhum nome, pode abreviar se quiser.
Outro ponto de atenção é para a Descrição do Objeto, que não pode ter termos genéricos, como “uso geral” ou “etc”. Se você desenvolve sistemas, coloque “sistemas de informática”, se faz projetos de infraestrutura, defina se é de TI, rodovias ou outra coisa.
Depois de gravar o processo poderá imprimí-lo, as datas solicitadas no momento de imprimir são as datas do dia mesmo, que serão incluídas no campo de assinatura.
Prestar atenção nas quantidades a imprimir, e se for o primeiro preenchimento a quantidade de exigências será 0 (zero). Não esquecer dos documentos obrigatórios, para empresário além do que imprime no site, cópia autenticada de documento de identidade.
Pode levar os documentos diretamente na Jucesp na Barra Funda ou no Poupatempo Sé. Se quiser pagar a taxa de escritório de 50 reais, pode levar em qualquer escritório regional da Jucesp.
Passo 2 – Receita Federal
http://www.receita.fazenda.gov.br/PessoaJuridica/ColetaWeb.htm
Atenção ao preencher a data do evento, embora não esteja claro, essa data precisa ser a mesma que a Jucesp carimbou no seu protocolo.
Esperar análise, normalmente sai no mesmo dia. Consultar o processo:
http://www.receita.fazenda.gov.br/PessoaJuridica/CNPJ/fcpj/consulta.asp
Imprimir e levar ao posto da RF. O prazo padrão que levaram para meus processos foi de +/- 20 dias.
Agora que temos o CNPJ, podemos abrir a conta no banco.
Segue uma pesquisa de preço que fiz em 23/02/2012 pegando a menor tarifa de cada banco:

Banrisul 26,00
BB 5,00
Bradesco 23,90
Caixa 20,30
HSBC 33,00
Itaú 18,50 (Ambiental 1)
Safra 26,00
Santander 23,00

Passo 3 – Prefeitura
Aqui em São Paulo precisa fazer o cadastro no CCM, o contador fez isso pra mim, depois precisa cadastrar a SenhaWeb, para ter acesso ao http://nfpaulistana.prefeitura.sp.gov.br/
As empresas que não se enquadram no Simples precisam do certificado digital para emitir nota fiscal eletrônica de serviços, comprei da Certisign um feito pra pequena empresa que tem desconto e vem com token: http://www.certisign.com.br/hotsite/conectividadesocial/micro-pessoa-juridica.html
Passo 4 – Impostos
Alguns dias depois do cadastro na prefeitura recebi um carnê para pagar a TFE – Taxa de Fiscalização de Estabelecimentos de R$ 108,66.
Para o ISS que também vai pra prefeitura geramos a guia no mesmo site que geramos as notas, minha alíquota ficou em 5%.
Agora os tributos federais, pagos via DARF:
– IRPJ – Imposto de Renda – Trimestral
DARF 2089 (IRPJ – LUCRO PRESUMIDO)
15% X 32% = 4,8% do Faturamento
– Contribuição Social (CSLL)
DARF 2372 (CSLL – PJ QUE APURAM  O IRPJ COM BASE EM LUCRO PRESUMIDO OU ARBITRADO)
9% X 32% = 2,88% do Faturamento
– PIS
DARF 8109 (PIS – FATURAMENTO)
0,65% do Faturamento
– COFINS
DARF 2172 (COFINS – CONTRIBUIÇÃO PARA FINANCIAMENTO SEGURIDADE SOCIAL)
3% do Faturamento
Dá pra entender porque é mais fácil quando se enquadra no simples. É incrível como é complicado achar esses códigos de DARF, talvez seja pra isso que precisamos do contador. Consegui encontrar dois documentos que ajudaram a confirmar as informações que achei espalhadas:
http://www.fecomercio-al.com.br/legba/site/arquivos/download.asp?a=ENCARGOS%20SOCIAIS.doc&vCod=11&vLog=False
http://www.biblioteca.sebrae.com.br/bds/BDS.nsf/2C74E936E102CBE403256D520059BAE2/$File/149_1_arquivo_encargosmpes.doc
Sistema da Receita Federal para gerar DARF:
http://www.receita.fazenda.gov.br/Aplicacoes/ATSPO/SicalcWeb/default.asp?TipTributo=2&FormaPagto=1