Avatar billede noob2003 Nybegynder
02. april 2008 - 01:06 Der er 16 kommentarer og
1 løsning

punkbuster scanner der kør om natten

jeg har et script jeg normalt scanner bruger når de instaster deres punkbuster GUID, men nu erfare jeg at de kan kommer på banlisten efter og det checker vi pt. ikke, derfor jeg jeg hjælpe til en sådan funktion.

jeg vil gerne ha den går ind table guid og søger efter games=bf2 og scanner allesammen, ved at finde $guid også køre følgende funktion

function match_punkbuster_id($id) {
    if(preg_match('/^[a-fA-F0-9]{32}$/', $id)) {
        $url = 'http://minhjemmeside.org/pbbans.dat';
        $handle = fopen($url, 'r');
        $content = stream_get_contents($handle);
        fclose($handle);
        return preg_match('/'.$id.'/', $content);
    } else {
        return false;
    }
}
if de er på banlisten
gøre et eller andet
}else{
scan næste


er der nogen der kan hjælpe mig med dette script
Avatar billede jakobdo Ekspert
02. april 2008 - 09:41 #1
Hvordan er pbbans.dat opbygget ?
Avatar billede noob2003 Nybegynder
02. april 2008 - 11:02 #2
du får lige et udklip

; PunksBusted Public Master Ban List - http://www.punksbusted.com
; Updated at 03/16/2008 02:00
; Our latest, live ban list is available through Auto-MBL for streaming members.
; Please see our web site for more details.  This ban list is delayed by 30 days.

[PsB:Ban L00000C54] 7b4a348665f40fedd728fa56e956ddc6 "?" "..." PsB GUID Ban
[PsB:Ban L00000C55] 6fae834ffc7fb81074a6aaef0594d5fb "?" "..." PsB GUID Ban
[PsB:Leaked L00000C5D] f2f2e9b95829bb4ffde821bacf8fffb3 "?" "..." Leaked Key
[PsB:Leaked L00000C61] d5bfa66b3d90ad8da89f9acb15d54ec5 "?" "..." Leaked Key
[PsB:Leaked L00000C5F] f5ea5b54d38e63d485d9800266d8d900 "?" "..." Leaked Key
[PsB:Leaked L00000C60] 16f127619c50aeaf84078b80373d60e1 "?" "..." Leaked Key
[PsB:Leaked L00000C62] 66181e4b553f8cb5fa8df63510c992c8 "?" "..." Leaked Key
[PsB:Ban L00000C66] 659fd13e9379e633bcf5e3ae3257c436 "?" "..." PsB GUID Ban
[PsB:Ban L00000C69] 414037f3b1a6a06fea034e33d6d6d4d6 "?" "..."
[PsB:Ban L00000C6A] 0ec6730eaa9842ff6d9e342576bcbf34 "?" "..."
[PsB:Ban L00000C6B] 55b4025f361993aa77ba61fbde2f63e4 "?" "..."
[PsB:Ban L00000C6C] 6f07117e9f36311cd6bcd7a3a672349b "?" "..."
[PsB:Ban L00000C6D] bd7be26587b502b95891e411f6507de3 "?" "..."
[PsB:Ban L00000C6E] e77053b795bab318a1c8ae594ea9cff1 "?" "..."
[PsB:Ban L00000C73] 8c8cd2d28188e23b6046127d79aaf738 "?" "..."
[PsB:Ban L00000C74] fad3fde74ba3efca698be54e896304e1 "?" "..."
[PsB:Ban L00000C76] ff6679ab9ed9dccf2d0b3750caf97833 "?" "..."
[PsB:3665 V002E1E43] e1c7db4404946edb5541663ac052a39c "trasch" "82.140.26.125" MULTIHACK #70292
[PsB:0502 V002E8DEF] df2d1c46e11437b2394b37c72efb0b89 "ReBeLaCe." "24.72.163.110" MULTIHACK #70300
[PsB:1750 V002E8E00] f6b491c42dc617d13f61d50cc7962698 "DemonSynth" "68.42.120.89" MULTIHACK #70292
[PsB:3125 V002EBE9A] c2540624c1bbeaf91c67a40936d733ef "jesp8000" "203.131.191.102" MD5TOOL #9002 (n7bf2.dll)
Avatar billede nielle Nybegynder
02. april 2008 - 11:39 #3
> jeg vil gerne ha den går ind table guid og søger efter games=bf2 og scanner allesammen, ved at finde $guid også køre følgende funktion

Jeg gætter på at dette skal forstås sådan at du har en tabel som hedder "guid" og som har et felt som hedder "games" og et felt som hedder "guid". Korrekt?

I såfald gennemløber du denne sådan her:

$sql = "SELECT guid FROM guid WHERE games = 'bf2'";
$query = mysql_query($sql);
while ($row = mysql_fetch_assoc($quey)) {
    $guid = $row['guid'];

    ... gør noget her ...
}

De guid'er der kommer ud på denne måde ønsker du at sende igennem din match_punkbuster_id() og så gøre noget alt efter om de er der eller ej (bannet eller ej):

$sql = "SELECT guid FROM guid WHERE games = 'bf2'";
$query = mysql_query($sql);
while ($row = mysql_fetch_assoc($quey)) {
    $guid = $row['guid'];
    $banned = match_punkbuster_id($guid);

    if ($banned)
        ... gøre et eller andet ...
    } else {
        ... gøre noget andet ... eller helt undvære else-delen ...
    }
}


Dette er den helt trivielle måde at løse problemet på.

MEN den er ikke specielt effektiv:

For det første undre det mig lidt at din match_punkbuster_id() funktion læser pbbans.dat filen via et URL? Det er vel en lokal fil og så er det ikke nødvendig at behandle den som om at den lå på et andet site.

For det andet indlæser du hele pbbans.dat en gang pr. guid du vil tjekke. Det kan bedre betale sig at læse den een gang for alle og så tjekke alle guid'erne imod indholdet.

For det tredje er preg_match() ikke det rette valg hvis du bare skal tjekke om et $guid ligger i filen - brug i stedet for strpos() funktionen. Den er meget mere effektiv til den slags simple tjek.
Avatar billede noob2003 Nybegynder
02. april 2008 - 12:19 #4
nu er den funktion jeg har lavet kun til når folk indtaster deres guid første gang.

men da det lader til folk ikke kan la hver med at cheat når de spiller , vil vi gerne kunne fange dem, når de kommer i banlisten.

hvad angår extern link til pbban.dat filen skyldes det, jeg ikke ved hvordan jeg kan hente filen og gemme den det samme sted hvergang med samme navn.

så har du en mere effektiv måde jeg kan lave den nat scanner på en det der lige er forslået, tager jeg imod det med stor glæde og taknemlighed ;)
Avatar billede noob2003 Nybegynder
02. april 2008 - 12:22 #5
ups skal lige siges jeg bruger wget for windows til at hente pbban.dat filen ned til min egen mini server.
Avatar billede nielle Nybegynder
02. april 2008 - 12:44 #6
1) Hvorfor skulle det være et problem at lægge filen det samme sted hver gang? Bortset fra det, så ville I jo alligevel skulle omskrive funktionen hvis det var tilfældet ... for så skulle den jo bruge et andet URL.

2) Funktionen bør nu alligevel skrives om til at bruge strpos() i stedet for preg_match().

3) Det er muligt at den viste funktion egner sig til at tjekke for en enkelt person når denne tilmelder sig - men den egner sig ikke til en batch-test af samtlige guid's. Der skal I nok overveje at lave en anden til det formål.

4) Du har ikke kommenteret på mit gæt om hvordan jeres database ser ud.
Avatar billede noob2003 Nybegynder
02. april 2008 - 12:59 #7
db table er følgene

`id` int(6) NOT NULL auto_increment,
  `userid` varchar(16) NOT NULL,
  `game` varchar(32) NOT NULL default '',
  `guid` varchar(40) NOT NULL,
  `oldguid` varchar(40) NOT NULL,
  `changeinfo` longtext NOT NULL,
  `status` enum('0','1') NOT NULL default '0',
Avatar billede noob2003 Nybegynder
02. april 2008 - 13:07 #8
har lavet følgende, men kan ikke lige teste pt. mysql error one.com arbejder på sagen

include ('../config.php');

$sql = "SELECT guid FROM pb WHERE games = 'bf2'";
$query = mysql_query($sql);
while ($row = mysql_fetch_assoc($quey)) {
    $guid = $row['guid'];

    function match_punkbuster_id($id) {
    if(preg_match('/^[a-fA-F0-9]{32}$/', $id)) {
        $url = 'http://minhjemmeside.org/pbbans.dat';
        $handle = fopen($url, 'r');
        $content = stream_get_contents($handle);
        fclose($handle);
        return preg_match('/'.$id.'/', $content);
    } else {
        return false;
    }

}


$sql = "SELECT guid FROM pb WHERE games = 'bf2'";
$query = mysql_query($sql);
while ($row = mysql_fetch_assoc($quey)) {
    $guid = $row['guid'];
    $userid = $row['userid'];
    $banned = match_punkbuster_id($guid);

    if ($banned){
mysql_query("UPDATE `pb` SET `status` = '0' WHERE `guid` ='$guid'")or die(mysql_error());       
mysql_query("UPDATE `pb` SET `changeinfo` = 'http://www.punksbusted.com/cgi-bin/membership/rpi.cgi?par=$guid&search=GUID&query=Search
' WHERE `guid` ='$guid'")or die(mysql_error());       

        $svar = mysql_query("SELECT * FROM user WHERE id='$userid' ORDER BY id DESC") or die(mysql_error());
            while ($row = mysql_fetch_array($svar))
            {
            $username = $row['username'];
mail("staff@mitdomain.org","Bad punkbuster id","User $username with userid $userid\nHas a bad $game GUID $guid.\n\nBest Regards \nYour Cheat Controller.");
}
Avatar billede noob2003 Nybegynder
02. april 2008 - 14:41 #9
nu har jeg forsøgt på kryds og tværs, kan ikke få det til at virke :_(
Avatar billede nielle Nybegynder
02. april 2008 - 15:08 #10
Du skal i hvert fald tilrette din SQL - hvis feltet hedder "game" så har MySQL et problem med at acceptere at der står "games".
Avatar billede noob2003 Nybegynder
02. april 2008 - 15:21 #11
er rettet til, har gået det hele igennem så det passer overens med db, still no luck
Avatar billede noob2003 Nybegynder
02. april 2008 - 15:28 #12
her er den korte version jeg har prøvet at test uden held, og jeg har dobb checket imod ny oprettet table pb, da jeg ikke tør køre den på den orginale før jeg ved det virker.

<?php
include ('../config.php');

function match_punkbuster_id($id) {
    if(preg_match('/^[a-fA-F0-9]{32}$/', $id)) {
        $url = 'http://minhjemmeside.org/pbbans.dat';
        $handle = fopen($url, 'r');
        $content = stream_get_contents($handle);
        fclose($handle);
        return preg_match('/'.$id.'/', $content);
    } else {
        return false;
    }
}
$sql = "SELECT guid FROM pb WHERE game = 'BF2'";
$query = mysql_query($sql);
while ($row = mysql_fetch_assoc($query)) {
    $guid = $row['guid'];
    $banned = match_punkbuster_id($guid);

    if ($banned){
        echo"bad $guid";
        }
}
?>
Avatar billede nielle Nybegynder
02. april 2008 - 18:10 #13
Jeg går ikke ud fra at det er præcis den der version af match_punkbuster_id() du bruger?

Prøv med litd debug udskrivning:

$sql = "SELECT guid FROM pb WHERE game = 'BF2'";
$query = mysql_query($sql) or die(mysql_error());
while ($row = mysql_fetch_assoc($query)) {
    $guid = $row['guid'];

    echo "DEBUG: $guid<br>";

    $banned = match_punkbuster_id($guid);
    if ($banned) {
        echo "bad $guid<br>";
    }
}

Prøv derefter at smide et af de guid's der skal resultere i et ban igennem din match_punkbuster_id() - fungere den korrekt?
Avatar billede noob2003 Nybegynder
02. april 2008 - 18:24 #14
nu funker den, den fangede 2 med bad GUID :-)
Avatar billede noob2003 Nybegynder
02. april 2008 - 22:25 #15
Smider du et svar, til dine hammer gode svar ;)
Avatar billede noob2003 Nybegynder
02. april 2008 - 22:26 #16
eller retter kommentar
Avatar billede nielle Nybegynder
02. april 2008 - 22:44 #17
Svar :^)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester