Hi, I'm not familiar with openssh internals, but in order to "catch" the specials characters, you may want to use ioctl(2) with the requests TCGETS and TCSETS. * On Monday, 10 February 2014 09:45, Aaron Lewis <the.warl0ck.1989@xxxxxxxxx> wrote: > Hi, > > I'm trying to write my own remote shell program, > > It simply connects to a remote server then copy the sock fd to stdin, > stdout and stderr. And it works. > > But I found several problems: > 1. It doesn't handle characters like ^A ^E or tab (any bash/readline stuff) > -> openssh itself doesn't seem to incorporate readline, so the > magic is not on readline > 2. If I run command like VIM, it doesn't run. > And buttons like "<ESC>:q" won't work > > Can someone enlighten me about what SSH did, so it all works perfectly? > > Attached the prototype: > > int sockfd = socket(PF_INET, SOCK_STREAM, 0); > struct sockaddr_in remaddr = { 0 }; > > remaddr.sin_family = AF_INET; > remaddr.sin_port = htons(9999); > remaddr.sin_addr.s_addr = inet_addr("192.168.56.1"); > > if (connect(sockfd, (struct sockaddr *)&remaddr, sizeof(struct sockaddr))) > ERR_QUIT("connect"); > > for (int i = 0; i < 2; ++i ) > dup2 (sockfd, i); > execl("/bin/bash", "/bin/bash", "-i", NULL); > > > > -- > Best Regards, > Aaron Lewis - PGP: 0x13714D33 - http://pgp.mit.edu/ > Finger Print: 9F67 391B B770 8FF6 99DC D92D 87F6 2602 1371 4D33 > _______________________________________________ > openssh-unix-dev mailing list > openssh-unix-dev@xxxxxxxxxxx > https://lists.mindrot.org/mailman/listinfo/openssh-unix-dev _______________________________________________ openssh-unix-dev mailing list openssh-unix-dev@xxxxxxxxxxx https://lists.mindrot.org/mailman/listinfo/openssh-unix-dev