Results 1 to 10 of 24

Thread: Server doubles

Threaded View

Previous Post Previous Post   Next Post Next Post
  1. #18
    Corporal voron00's Avatar
    Join Date
    Nov 2014
    Posts
    248
    Thanks
    64
    Thanked 216 Times in 116 Posts
    Oh hell yeah fixed it, the problem was that i was creating a new socket to send a master serv request and some regex fails in getstatus/getchallenge, now its working:

    PHP Code:
    #!/usr/bin/perl

    use strict;
    use 
    warnings;
    use 
    IO::Socket;

    my $maxlen      1024;
    my $server_port 28962;

    my $emulate_server "92.222.182.117";
    my $emulate_port   28960;

    my $emulate_protocol 117;
    my $emulate_version  1.2;

    my $send_message '';

    my $msg '';
    my $socket IO::Socket::INET->new(LocalPort => $server_portProto => 'udp') or die "socket: $@";

    print 
    "Starting server on port $server_port\n";

    &
    send_master_heartbeat;
    &
    get_ip_authorize;
    my $master_time time;

    while (
    my $adr recv($socket$msg$maxlen0)) {
        
    my ($port$ipaddr) = sockaddr_in($adr);

        
    my $host "undefined";
        
    my $temphost gethostbyaddr($ipaddrAF_INET);

        if (
    defined($temphost)) {
            
    $host $temphost;
        }

        
    my $ip inet_ntoa($ipaddr);
        print 
    "client $ip ($host) said ''$msg''\n";

        if (
    time > ($master_time 60)) {
            &
    send_master_heartbeat;
            &
    get_ip_authorize;
            
    $master_time time;
        }

        if (
    $msg =~ /^\xFF\xFF\xFF\xFFgetstatus/i) {
            
    $send_message = &get_server_status;
        }
        
    elsif ($msg =~ /^\xFF\xFF\xFF\xFFgetinfo/i) {
            
    $send_message = &get_server_info;
        }
        
    elsif ($msg =~ /^\xFF\xFF\xFF\xFFgetchallenge/i) {
            
    $send_message = ("\xFF\xFF\xFF\xFFchallengeResponse " time);
        }
        
    elsif ($msg =~ /^\xFF\xFF\xFF\xFFconnect/i) {
            
    $send_message = ("\xFF\xFF\xFF\xFFerror\r\nThis is a Test Fake Server.\nPlase connect to a original one.");
        }

        
    send($socket$send_message0$adr) == length($send_message) or &die("Socket error: $!");
    }

    close($socket);

    sub get_server_status {
        
    my $message      '';
        
    my $read_timeout 1;
        
    my $got_response 0;
        
    my $status       = ("\xFF\xFF\xFF\xFFgetstatus");

        
    socket(SOCKETAF_INETSOCK_DGRAMgetprotobyname("udp")) or &die("Socket error: $!");

        
    my $d_ip inet_aton($emulate_server);
        
    my $portaddr sockaddr_in($emulate_port$d_ip);

        
    send(SOCKET$status0$portaddr) == length($status) or &die("Cannot send message");

        
    $portaddr recv(SOCKET$message$maxlen0) or &die("Socket error: recv: $!");
        
    $message =~ s/protocol\\\d+/protocol\\$emulate_protocol/g;
        
    $message =~ s/shortversion\\\d\.\d/shortversion\\$emulate_version/g;

        
    # print "$status_message\n";

        
    close(SOCKET);

        return 
    $message;
    }

    sub get_server_info {
        
    my $message      '';
        
    my $read_timeout 1;
        
    my $got_response 0;
        
    my $info         = ("\xFF\xFF\xFF\xFFgetinfo");

        
    socket(SOCKETAF_INETSOCK_DGRAMgetprotobyname("udp")) or &die("Socket error: $!");

        
    my $d_ip inet_aton($emulate_server);
        
    my $portaddr sockaddr_in($emulate_port$d_ip);

        
    send(SOCKET$info0$portaddr) == length($info) or &die("Cannot send message");

        
    $portaddr recv(SOCKET$message$maxlen0) or &die("Socket error: recv: $!");
        
    $message =~ s/protocol\\\d+/protocol\\$emulate_protocol/g;

        
    # print "$info_message\n";

        
    close(SOCKET);

        return 
    $message;
    }

    sub send_master_heartbeat {
        
    my $master         "cod2master.activision.com";
        
    my $master_port    20710;
        
    my $master_message = ("\xFF\xFF\xFF\xFFheartbeat COD-2");

        
    my $d_ip gethostbyname($master);
        
    my $portaddr sockaddr_in($master_port$d_ip);

        print 
    "Sending heartbeat to $master\n";

        
    send($socket$master_message0$portaddr) == length($master_message) or &die("Cannot send message");
    }

    sub get_ip_authorize {
        
    my $master         "cod2master.activision.com";
        
    my $master_ip      inet_ntoa(inet_aton($master));
        
    my $master_port    20700;
        
    my $master_message = ("\xFF\xFF\xFF\xFFgetIpAuthorize " time " " $master_ip " dr 0");

        
    my $d_ip gethostbyname($master);
        
    my $portaddr sockaddr_in($master_port$d_ip);

        print 
    "sending getIpAuthorize for $master_ip:$master_port\n";

        
    send($socket$master_message0$portaddr) == length($master_message) or &die("Cannot send message");

    Last edited by voron00; 7th March 2017 at 15:52.
    sudo apt-get rekt

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •