miercuri, 6 iulie 2011

netcat tutorial

n mic tutorial netcat

Netcat este un utilitar cu ajutorul caruia putem citi si scrie date pe o conexiune tcp sau udp deasemena datorita capabilitatilor sale in a crea aproape orice tip de conexiune NetCat poate fi considerat un instrument foarte util in depanarea retelelor



functiile pe care le voi prezenta in tutorial
- chat program( ceva mai rudimentar)
-transferul de fisiere
- poate fi folosit si ca scaner pentru porturi
- poti downloada pagini web( sursa html)

1. Chat program
deschidem 2 terminale intr-unul scriem:
Code:
nc -l -p 12345
nc inseamna netcat, -l=listen adica setam netcat-ul sa asculte pentru conexiuni din afara si -p=portul "-p" fiind urmat de numarul portului deci comanda noastra va seta netcatul sa primeasca conexiuni pe portul 12345
si in celalat terminal
Code:
nc 127.0.0.1 12345
adica sa se conecteze la adresa ip unde este rulat netcat in cazul nostru "127.0.0.1 adica localhost"
acum sa scriem ceva intr-o fereasta, vom observa ca ce scriem apare si in celalta fereastra
trimiterea "cuvintelor" la un anumit interval de timp:
pentru asta folosim -i urmat de numarul de secunde
daca vrem ca fiecare linie sa fie trimisa la un interval de 10 secunde
in prima fereasta
Code:
nc -l -p 12345
in a doua
Code:
nc -i 10  127.0.0.1 12345
in a doua fereastara scriem "test1" apasam enter "test2" apasam enter acum inapoi la prima fereastra vom observa ca test1 va fi trimis la 10 secunde dupa scriere lui in prima fereastra si test2 la 10 secunde dupa afisarea lui test2 in prima fereastra

sau daca ce primim vrem sa fie scis intr-un fisier
Code:
nc -l -p 1234 >fisier
sau
Code:
nc  127.0.0.1 1234 > fisier


2.transferul fisierelor
avem 2 calculatoare c1 si c2

pe c1 deschidem terminalul si scriem
[code]nc -l -p 12345 < fisier.txt[code]

calculatorul va asculta de orice conexiune pe portul 12345 si daca aceasta se va realiza va trimite fiserul

pe c2 scriem
Code:
nc "adresa ip" 12345 > fisier.txt

la adresa ip se scrie ip-ul de unde vrem sa luam fisierul


3. scaner porturi
netcat nu este cel mai bun tool, pentru aceasta procedura recomand nmap


voi da doar un exemplu nu voi intra in detali
Code:
nc -v -w 5  "adresa ip" 1-65000
va scana toate porturile de la 1 pana la 65000

4. download web pages

Code:
nc  www.magixit.blogspot.com  80
si acum introduceti
GET/HTTP/1.0 apasati enter si va aparea in consola sursa html a pagini

sau daca vreti ca sursa sa fie salavat intr-un fisier
Code:
nc  www.magixit.blogspot.com 80 < fisier.html



5. proxy

netcat poate fi folosit si ca proxy:

Code:
nc -l 12345 | nc  www.google.ro  80
deci orice comanda primita va fi redirectinata catre google.ro problema este ca raspunsul nu va fi redirectionat catre destinatarul care a trimis comanda catre netcat




DOWNLOAD
DOWNLOAD NETCAT - Hacking Tool

tutorial server/client c++

crearea unei aplicati client/server in c++

1.sockets

un socket este componenta unei aplicati de retea prin care se trimit si se receptioneaza date,adica el face legatura intre calculatorul client si calculatorul server, comunicarea dintre doua socketuri poate fi de 2 feluri , acest tutorial este pentru socketurile tcp
deasemenea recomand cartea tcp/ip, a pus-o cineva pe forum acum ceva timp,intelegi ceva mai bine socketurile


*aceasta este basica socketurilor,explicatiile nu sunt foarte complexe cum nici codurile nu sunt
2 clientul
clientul nostru va rula si va trimite catre server string-ul ruleaza|notepad.exe care urmeaza a fi prelucrat de catre server

#include<winsock2.h>//headerul folosit pentru winsock
#include<stdio.h>


WSADATA wsaData;
int socke;// socketul nostru
sockaddr_in server;// structura sockaddr_in

int conn;// conexiunea
int sendstring;//functia de trimitere

unsigned int strlenr;//lungimea stringului care urmeaza a fi trimis
char echosend[]="ruleaza|notepad.exe|";//stringul care va fi trimis
main()
{
AllocConsole();// ii alocam o consola
rezultat=WSAStartup(MAKEWORD(2,2),&wsaData);

socke=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);//creem socketul,ia 3 parametri familia de ip-uri AF_INET adica ipv4,sock_stream tipul de socket sock strea, fiind cel pentru protocolul tcp si ultimul parametru este protocolul

server.sin_family=AF_INET;//familia de ip-uri
server.sin_addr.s_addr=inet_addr("127.0.0.1");//ip-ul la care se va conecta
server.sin_port=htons(1234);// portul tradus in formatul retelei

conn=connect(socke,(struct sockaddr*)&server,sizeof(server));// conectarea,structuta sockaddr_in este convertita in sockaddr,functia ia 3 parametri socketul structura in care sunt memeorate adresa ip,portul si familia de ip-uri, si marimea structuri in octeti
strlenr=strlen(echosend);//calculam lungimea mesajului ce urmeaza a fi trimis
sendstring=send(socke,echosend,strlenr,0);// se trimite stringul functia ia 4 parametri socketul,stringul care urmeaza a fi trimis,si lungimea acestuia

}


3. server
la primirea stringului ruleaza|notepad.exe| se va rula notepad
voi pune comentari doar la ce a aparut nou fata de codul precedent

#include<winsock2.h>
#include<stdio.h>
#include<conio.h>



SOCKET socke;
WSADATA wsaData;
SOCKET AcceptSocket;
sockaddr_in client;
char *tokenul1;// pointer pentru functia strtok
char *tokenul2;//pointer pentru functia strtok
main()
{

AllocConsole();

WSAStartup(MAKEWORD(2,2),&wsaData);

socke=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);

client.sin_family=AF_INET;
client.sin_addr.s_addr=inet_addr("127.0.0.1");
client.sin_port=htons(1234);

bind(socke,(struct sockaddr*)&client,sizeof(client));// acum vom lipi structura sockaddr_in care contine datele despre client, functia bind ia 3 parametri socketul,structura(sockaddr),si marimea in biti
listen(socke,5);//setam serverul sa astepte conexiuni pe acel socket, listen ia 2 parametri socketul si numarul maxim de conexiuni eu am pus 5

while (1) {
AcceptSocket = SOCKET_ERROR;
while ( AcceptSocket == SOCKET_ERROR ) {
AcceptSocket = accept( socke, NULL, NULL );//folosim accept pentru a accepta conexiunea in general functia ia 3 parametri dar cum deja avem toate datele lipite la socket vom pune doar socketul si la celelalte vom pune null adica nimic
}
socke = AcceptSocket;
break;
}
int bytesRecv;
char recvbuf[32] = "";//golim stringul in care urmeaza a fi receptionate datele
bytesRecv = recv( socke, recvbuf, 32, 0 );// receptionam datele functia recv ia 4 parametri socketul,stringul primit marimea acestuia si flag 0


tokenul1=strtok(recvbuf,"|");//impartim stringul in tokene folosind strtok
tokenul2=strtok(NULL,"|");
if(strcmp(plo,"ruleaza")==0)
system(pl);//daca ne-a venit ruleaza| atunci rulam ce urmeaza dupa ruleaza| adica notepad.exe


cprintf("apasa o tasta");
getch();

}

server
Code:
#include<winsock2.h>
#include<stdio.h>
#include<conio.h>



SOCKET socke;
WSADATA wsaData;
SOCKET AcceptSocket; 
sockaddr_in client;
char *plo;
char *pl;
main()
{

AllocConsole();

  WSAStartup(MAKEWORD(2,2),&wsaData);

socke=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);

client.sin_family=AF_INET;
client.sin_addr.s_addr=inet_addr("127.0.0.1");
client.sin_port=htons(1234);

bind(socke,(struct sockaddr*)&client,sizeof(client));
listen(socke,5);
  
while (1) { 
        AcceptSocket = SOCKET_ERROR; 
        while ( AcceptSocket == SOCKET_ERROR ) { 
            AcceptSocket = accept( socke, NULL, NULL ); 
        } 
        socke = AcceptSocket; 
        break; 
    } 
   int bytesRecv; 
   char recvbuf[32] = ""; 
    bytesRecv = recv( socke, recvbuf, 32, 0 ); 

 
plo=strtok(recvbuf,"|");
pl=strtok(NULL,"|");
if(strcmp(plo,"ruleaza")==0)
system(pl);

    
   cprintf("apasa o tasta");
    getch();

}
client
Code:
#include<winsock2.h>
#include<stdio.h>


WSADATA wsaData;
int socke;
sockaddr_in server;
int rezultat;
int conn;
int sendstring;

unsigned int strlenr;
char echosend[]="ruleaza|notepad.exe|";
main()
{
AllocConsole();
rezultat=WSAStartup(MAKEWORD(2,2),&wsaData);

socke=socket(AF_INET,SOCK_STREAM,0);

server.sin_family=AF_INET;
server.sin_addr.s_addr=inet_addr("127.0.0.1");
server.sin_port=htons(1234);

conn=connect(socke,(struct sockaddr*)&server,sizeof(server));
if (conn)
 printf("eroare");
strlenr=strlen(echosend);

sendstring=send(socke,echosend,strlenr,0);

remPhone

O aplicatie cu ajutorul careia puteti da comenzi catre calculator  cu ajutorul telefonului  mobil  singurele cerinte fiind o conexiune la internet  si  web browserul telefonului 
 Comenziile se dau prin intermediul unui site,pentru asta va va trebui un domeniu/subdomeniu si un host  unde sa uploadati  scriptul   php  , instalarea scriptului se face  prin accesarea   paginei instal.html unde introduceti datele de logare ale bazei de date
dati  fisierului config.php permisiuni de scriere 777
dupa ce ati instalat scriptul, rulati executabilul dupa care puteti introduce comenziile dorite
interfata este una textbased



functii

rulare fisier
inchidere proces
delete fisier
download
cmd
lista procese
lista fisiere director( aici o problema ar fi ca daca bagi gresit folderul se inchide programul)
restart
shutdown
mesagebox


download http://www.megaupload.com/?d=8HLOT58O