- Level Goal:
- Your goal is to connect to port 5842 on vortex.labs.pulltheplug.org and read in 4 unsigned integers.
- Add these integers together and send back the results to get a username and password for level 1.
Note: that vortex is on an x86 machine (meaning, a little endian architecture)
- Helpful Reading Material
C Programming Introduction
network Programming Tutorial
"telnet <address> 5842"
you'll see strange charters, and wait your input
if you enter key, you will recieve a message alike buzzzz, false
so, we make source program 4characters for input, output sum of these 4characters, and you will recived a account and password for level 1
// caution : ip address enter digit 22.xx.xx.xx not www.opop.com
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <arpa/inet.h>
#include <sys/types.h>
#include <sys/socket.h>
void error(char *message);
int main(int argc,char *argv[])
{
int sock;
unsigned int num, i, sum=0;
struct sockaddr_in serv_addr;
char passwd[40];
int str_len;
if(argc != 3 )
{
printf("Usage:%s <iP> <Port> \n",argv[0]);
exit(1);
}
sock=socket(AF_INET,SOCK_STREAM,0);
if(sock == -1)
error("socket() error");
memset(&serv_addr,0,sizeof(serv_addr));
serv_addr.sin_family=AF_INET;
serv_addr.sin_addr.s_addr=inet_addr(argv[1]);
serv_addr.sin_port=htons(atoi(argv[2]));
// printf("destination : IP [%s], Port [%s]\n",argv[1],argv[2]);
if(connect(sock,(struct sockaddr*)&serv_addr,sizeof(serv_addr)) == -1)
error("connect() error");
for(i=0;i<4;i++)
{
if(read(sock,(unsigned int*)&num,sizeof(unsigned int)) == -1)
error("read() error");
sum=sum+num;
printf("i=%x\n",num);
}
if(write(sock,(unsigned int*)&sum,sizeof(unsigned int)) == -1)
error("write() error");
str_len = read(sock,passwd,sizeof(passwd)-1);
if(str_len == -1)
error("read() error");
passwd[str_len]='\0';
printf("result: %s\n",passwd);
return 0;
}
void error(char *message)
{
fputs(message,stderr);
fputc('\n',stderr);
exit(1);
}
