Taula de continguts:

Netcat a Python: 6 passos
Netcat a Python: 6 passos

Vídeo: Netcat a Python: 6 passos

Vídeo: Netcat a Python: 6 passos
Vídeo: Intro to Replacing Netcat - Black Hat Python - ep. 4 2024, Desembre
Anonim
Netcat a Python
Netcat a Python

Què és netcat? La pàgina del manual de netcat diu el següent: "la utilitat nc (o netcat) s'utilitza per a qualsevol cosa que impliqui sòcols de domini TCP, UDP o UNIX. Pot obrir connexions TCP, enviar paquets UDP, escoltar arbitràriament Els ports TCP i UDP fan escaneig de ports i tracten tant IPv4 com IPv6. A diferència de telnet (1), els scripts nc separen els missatges d’error en errors estàndard en lloc d’enviar-los a la sortida estàndard, tal com fa telnet (1) amb alguns"

En essència, netcat us permet connectar-vos a altres servidors mitjançant el protocol TCP o UDP. TCP significa Protocol de control de transmissió i està orientat a la connexió. UDP significa Universal Datagram Protocol i no té connexió. El TCP s’utilitza habitualment per a aplicacions d’Internet, mentre que UDP s’utilitza per a transmissions multimèdia o VPN.

Pas 1: Com comencem?

Com Comencem?
Com Comencem?

A dalt es mostra com es diu netcat. Podeu veure que al final hi ha dos arguments anomenats "destinació" i "port". La destinació fa referència a un nom d’amfitrió o una adreça IP del servidor al qual estem intentant connectar-nos, mentre que el port fa referència al port del servidor al qual estem intentant connectar-nos.

Pas 2: Comencem

Anem a començar
Anem a començar

A la part superior hi ha un codi Python inicial. Com podeu veure, volem processar els arguments del programa de manera similar a com ho fa la utilitat real. El nom d'amfitrió serà el primer argument després del nom de l'executable, mentre que el port serà el segon argument després del nom de l'executable a la línia d'ordres.

Pas 3: crear una connexió

Creació d’una connexió
Creació d’una connexió

Creem una funció netcat que podem utilitzar. El que bàsicament fem aquí és crear un sòcol i connectar-nos al servidor mitjançant els paràmetres indicats. Per a l'ordre netcat, els paràmetres actuals són el nom d'amfitrió i el port del servidor al qual estem intentant connectar-nos. El sòcol conté els paràmetres "socket. AF_INET" i "socket. SOCK_STREAM" perquè estem predeterminats a una connexió TCP per a aquest tutorial.

Pas 4: permet enviar contingut

Permet enviar contingut
Permet enviar contingut

Hem ampliat la nostra funció netcat per adoptar un tercer paràmetre, el "contingut". Aquí hi ha molt de contingut, així que desglossem-lo per número de línia.

Línia 14-16: enviem tot el contingut a través del sòcol, esperem una mica i, a continuació, tanquem el sòcol a qualsevol dada de sortida perquè el sòcol sàpiga que no hi arribaran més dades.

Línia 18-26: creem una memòria intermèdia per emmagatzemar la resposta del servidor i, mentre el sòcol rep dades, afegim fins a 1024 bytes de dades al resultat sempre que hi hagi dades per llegir.

Línia 28-29: volem que aquesta connexió netcat sigui una connexió única, de manera que declarem la connexió tancada i després la tanquem.

Línia 31: es tracta d'una sol·licitud HTTP estàndard. Si executeu el codi amb els arguments de la línia d'ordres "google.com" i "80", veureu una resposta HTTP adequada

Pas 5: Permet tenir una connexió oberta

Permet tenir una connexió oberta
Permet tenir una connexió oberta

El codi anterior (que es troba a sota del codi de la secció anterior) simplement ens permet executar ordres multcat netcat mitjançant una connexió pseudoberta. (En realitat, cada vegada que executeu una ordre, s'obre i tanca una nova connexió TCP, de manera que no emula realment el comportament de netcat, simplement ho fem amb finalitats d'aprenentatge). Anem a desglossar aquesta línia també per línia:

Línia 31: volem llegir ordres de manera indefinida per mantenir la "interactivitat"

Línia 32: aquest és el nostre buffer que emmagatzemarà el contingut de la nostra sol·licitud

Línia 36-45: llegirem a la memòria intermèdia fins que llegim una línia buida

Línia 48: simplement anomenem la nostra funció netcat amb el nom d'amfitrió, el port i el contingut de nova creació (que està codificat correctament)

Línia 50: si el contingut del nostre buffer mai conté "Connection: Close" (que indica que volem tancar la connexió), simplement sortim del bucle

Pas 6: Conclusió

Al final d'aquest tutorial, hauríeu de tenir una implementació de netcat mínima de treball. Deixaré com a exercici a l’usuari implementar funcions com:

1. suportant altres protocols

2. corregint el codi per no tancar la connexió cada vegada

3. afegint indicadors que Netcat ja té per modificar el comportament

Recomanat: