quinta-feira, 25 de setembro de 2008

Usando comandos do sistema em C

Boa Tarde a todos!!!

Primeira dica de programação em C. Dica muito útil. Usando-a corretamente, dará para automatizar bastante algumas tarefas diárias ou até fazer algumas interfaces mais legais para certos programas como o exemplo que mostrarei no final desta dica.

Pois bem, para colocar comando do sistema em C é bem simples, basta inserir o comando system().

Ex.: system("clear");

Com isso, quando compilar o nosso programa em C, o sistema vai limpar a tela, ou seja, a mesma coisa que o comando clear faz quando estamos no Linux em modo texto.

Ok, até aí tudo bem! E se eu quero interagir o programa com o usuário e o usuário por exemplo quer dar um simples "nmap" em um determinado ip sem pôr a sintaxe: nmap -sS -sV. O que eu faço?

Se tentar por:

Ex.: system("nmap -sS -sV %s", ip);

Vai dar erro, pois o comando system não aceita variáveis. O que fazer? Aí que entra o comando sprintf.

O comando sprintf funciona da seguinte maneira:

sprintf(var, "comando + variável", variavel);
system(var);

Sendo que:
var = pode por qualquer nome, essa variável vai armazenar o "comando + variável" para depois passarmos para o system;
comando + variável = ex.: nmap -sS -sV %s
variavel = a variável que você quer que %s receba.

Para ficar mais fácil o entendimento, vou pôr um exemplo do script para nmap.

main () {
char ip[16]; //variável que vai receber o ip do usuário

char var[100]; //variável que vai receber o comando+variável ip


printf("Entre com o número do ip: ");

scanf("%s",&ip); //var ip tem o valor digitado pelo usuário
sprintf(var, "nmap -sS -sV %s", ip); //var recebe valor com + var ip

system(var); //system recebe valor de var
return 0;
}


Compile essa parte do script e terá uma noção maior do que o comando sprintf é capaz!!
Não se esqueça de adicionar as bibliotecas stdlib.h e stdio.h .O blog não sei porque não deixa eu declara-las no post... hauiha!!!

Acho que por hoje é só.

Obrigado a todos. =)

Nenhum comentário: