Gå til innhold

Hvordan spawne et shell i c++ med winsock


Anbefalte innlegg

Videoannonse
Annonse

antar at du er ute etter klient-biten?

 

google etter "telnet rfc" eller "telnet protocol" o.l.

 

om du har muligheten til det er forresten ssh å foretrekke fremfor telnet .. (det finnes en ssh-klient til windows kallt putty; kildekoden er tilgjengelig)

Lenke til kommentar

Jeg prøver ikke å lage en telnet client, jeg har laget meg en egen server, men da bruker jeg system(), det syns jeg er litt primitivt, og så hørte jeg noen snakket om å spawne et shell, sånn at du bare logger deg inn og vips så spretter cmd opp. Hvordan kodes dette i c++ gjennom sockets.

Lenke til kommentar

Hm... mulig jeg er litt dum her, men hvor skal command vinduet hoppe opp. På serveren eller clienten.

 

hvis dette skal skje på serveren så må du nok fikle en del hvis du kke vil bruke system() (fant ikke noe etter en rask titt i platform SDK)

 

hvis dette skal gjøre på kliente så må jo dette stemme med Telnet protokol

 

Men som dayslepr sa vil ikke jeg ambefalle telnet. du kan jo se litt på Netshell APIet

Lenke til kommentar
Hm... mulig jeg er litt dum her, men hvor skal command vinduet hoppe opp. På serveren eller clienten.

 

hvis dette skal skje på serveren så må du nok fikle en del hvis du kke vil bruke system()  (fant ikke noe etter en rask titt i platform SDK)

 

hvis dette skal gjøre på kliente så må jo dette stemme med Telnet protokol

 

Men som dayslepr sa vil ikke jeg ambefalle telnet. du kan jo se litt på Netshell APIet

5944381[/snapback]

Det skal sprette opp på clienten, og kommandoene skal utføres på serveren. Dette har ikke noe med telnet å gjøre.

 

Det er win32 ja, jeg bruker ikke system() fordi jeg ikke greier å få resultatene fra system og sendt de tilbake til clienten.

Endret av willbend
Lenke til kommentar

så du skal lage en egen protokoll, siden du ikke skal bruke telnet/ssh?

 

du sa du _ikke_ skulle lage en klient, men det du beskrev nettopp _er_ jo en klient .. heh

 

edit:

rettere sagt, det er både en klient og en server (om du ikke skal bruke en standard protokoll der server-biten allerede er implementert; alternativt kan du jo skrive den biten selv også, bare følge RFC'er o.l.)

 

klient --melding--> server

 

`server' er et program som leser fra socketen og ut i fra hva `melding' er utfører ting på maskinen `server'-programmet kjører på ........?

Endret av dayslepr
Lenke til kommentar

Ok så du har ingenting med telnet å gjøre kjekt å vite. :)

Denne koden under bruker system() og ReadConsoleOutputCharacter(win32) til å lese av outputten. den trenger litt tilpassing, men det skal du få lov til å gjøre selv :cool:

så alt du trenger å gjøre er å lese hele consolvinduet (tror det gjørs ved å sette buffersize til 64k) overføre det til klienten og få komandoer så bruker system på serveren.

 

[/code]

#include "windows.h"

#include <stdlib.h>

#define BUFFERSIZE 1024

 

int main()

{

COORD ReadCord;

HANDLE hStdin;

TCHAR buffer[1024 * sizeof(TCHAR)];

DWORD lestetegn;

int error;

 

ReadCord.X = 0;

ReadCord.Y = 0;

hStdin = GetStdHandle(STD_OUTPUT_HANDLE);

system("dir");

 

error = ReadConsoleOutputCharacter(hStdin,buffer,BUFFERSIZE * sizeof(TCHAR),ReadCord,&lestetegn);

if(!error);

error = GetLastError();

system("pause");

 

return 0;

}

 

PS: Jeg kompilerte det men unicode, men det skal funke uten også ..tror jeg :)

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...