willbend Skrevet 17. april 2006 Del Skrevet 17. april 2006 Når jeg logger meg inn på en telnet server blir et shell spawnet, så det ser ut som jeg faktisk sitter på server pc'n, hvordan gjøres dette i c++? Lenke til kommentar
dayslepr Skrevet 17. april 2006 Del Skrevet 17. april 2006 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
willbend Skrevet 18. april 2006 Forfatter Del Skrevet 18. april 2006 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
Giddion Skrevet 18. april 2006 Del Skrevet 18. april 2006 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
Dead_Rabbit Skrevet 19. april 2006 Del Skrevet 19. april 2006 Hva er problemet med å bruke system()? Later jo til å være det desidert enkleste.. Uansett må du nok se etter platform-spesefikke løsninger her. (Ta en titt på msdn.com om du bruker Windows.) Lenke til kommentar
Klette Skrevet 19. april 2006 Del Skrevet 19. april 2006 Regner med det er snakk om win32, http://www.groar.org/expl/win32/english.shtml .. Lenke til kommentar
willbend Skrevet 19. april 2006 Forfatter Del Skrevet 19. april 2006 (endret) 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 19. april 2006 av willbend Lenke til kommentar
Dead_Rabbit Skrevet 19. april 2006 Del Skrevet 19. april 2006 Ja, da blir det vel noe alà: client: melding til server server: utfører melding vha. et system kall ? Er ikke dette ganske rett frem? Lenke til kommentar
dayslepr Skrevet 19. april 2006 Del Skrevet 19. april 2006 (endret) 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 19. april 2006 av dayslepr Lenke til kommentar
Giddion Skrevet 19. april 2006 Del Skrevet 19. april 2006 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 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
willbend Skrevet 20. april 2006 Forfatter Del Skrevet 20. april 2006 http://www.planet-source-code.com/vb/scrip...d=5729&lngWId=3 Jeg fikk tipset at dette var det jeg var ute etter, og det er akkurat det jeg er ute etter, hvis dere ser i koden ser dere at det brukes createpipe() og createprocess() til å ordne at cmd popper opp. Lenke til kommentar
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå