PEAR is discontinued

This is a static archive preserving historical releases and metadata. No new packages or updates will be published. For updates to existing packages, or to publish new packages, please use Composer and Packagist.

Home » Encryption » Crypt_CHAP » Manual

Classes for generating packets for various CHAP Protocols

Introduction

Introduction – encryption

CHAP - Challenge Handshake Authentication Protocol

CHAP is a part usualy of PPP (Point-to-Point Protocol) software, implemented in the authentication subsystem. CHAP avoid's sending plaintext passwords over an insecure link. The traditional CHAP-MD5 needs the plaintext password stored on the server. MS-CHAP doesen't need this, but also needs the password either as NT-Hash and/or as LAN-Manager-Hash. LAN-Manager-Hashes are weak and shouldn't be used anymore.

This package provides 3 classes:

Crypt_CHAP::Crypt_CHAP is an abstract base class.

In order to get the MS-CHAP* to work you need the mhash extension.

Crypt_CHAP::generateChallenge()

Crypt_CHAP::generateChallenge() – Generates a new random challenge.

Synopsis

string Crypt_CHAP::generateChallenge ( string $varname = 'challenge' , int $size = 8 )

Description

This method generates a new random challenge and stores it in the given property, the default size of the challenge is 8 bytes.

Parameter

Return value

string - a String containing the challenge

Note

This function can not be called statically.

Example

Using Crypt_CHAP::generateChallenge()

<?php
require_once 'File/SMBPasswd.php';

$cr = new Crypt_CHAP_MD5();
echo bin2hex($cr->challenge);
// or generate a new challenge
echo bin2hex(echo $cr->generateChallenge());

?>

Crypt_CHAP_MD5::Crypt_CHAP_MD5()

Crypt_CHAP_MD5::Crypt_CHAP_MD5() – constructor

Synopsis

require_once 'Crypt/CHAP.php';

void Crypt_CHAP_MD5::Crypt_CHAP_MD5 ( )

Description

Generates a new Object for generating CHAP-MD5 compliant pakets.

Crypt_CHAP_MD5::challengeResponse()

Crypt_CHAP_MD5::challengeResponse() – Generates the challenge-response paket.

Synopsis

string Crypt_CHAP_MD5::challengeResponse ( )

Description

This method generates the challenge-response paket, by doing: md5(ID + Password + Challenge).

Return value

string - a String containing the challenge-response paket

Note

This function can not be called statically.

Example

Using Crypt_CHAP_MD5::challengeResponse()

<?php
require_once 'Crypt/CHAP.php';

$cr = new Crypt_CHAP_MD5();
$cr->password = 'MyPw';
echo bin2hex($cr->challengeResponse());

?>

Crypt_CHAP_MSv1::Crypt_CHAP_MSv1()

Crypt_CHAP_MSv1::Crypt_CHAP_MSv1() – constructor

Synopsis

require_once 'Crypt/CHAP.php';

void Crypt_CHAP_MSv1::Crypt_CHAP_MSv1 ( )

Description

Generates a new Object for generating MS-CHAPv1 compliant pakets.

Note

You need the mhash extension in order to get this class to work.

Crypt_CHAP_MSv1::challengeResponse()

Crypt_CHAP_MSv1::challengeResponse() – Generates the Challenge-Response paket.

Synopsis

string Crypt_CHAP_MSv1::challengeResponse ( )

Description

This method generates the Challenge-Response paket.

Return value

string - a String containing the challenge-response paket

Note

This function can not be called statically.

Example

Using Crypt_CHAP_MSv1::challengeResponse()

<?php
require_once 'Crypt/CHAP.php';

$cr = new Crypt_CHAP_MSv1();
$cr->chapid = 1;
$cr->password = 'MyPw';
echo bin2hex($cr->challengeResponse());

?>

Crypt_CHAP_MSv1::lmChallengeResponse()

Crypt_CHAP_MSv1::lmChallengeResponse() – Generates the Challenge-Response paket using the LAN-Manager Hash.

Synopsis

string Crypt_CHAP_MSv1::lmChallengeResponse ( )

Description

This method generates the Challenge-Response using the LAN-Manager Hash.

Return value

string - a String containing the challenge-response

Note

This function can not be called statically.

Example

Using Crypt_CHAP_MSv1::lmChallengeResponse()

<?php
require_once 'Crypt/CHAP.php';

$cr = new Crypt_CHAP_MSv1();
$cr->password = 'MyPw';
echo bin2hex($cr->lmChallengeResponse());

?>

Crypt_CHAP_MSv1::ntChallengeResponse()

Crypt_CHAP_MSv1::ntChallengeResponse() – Generates the Challenge-Response paket using the NT-Hash.

Synopsis

string Crypt_CHAP_MSv1::ntChallengeResponse ( )

Description

This method generates the Challenge-Response using the NT-Hash.

Return value

string - a String containing the challenge-response

Note

This function can not be called statically.

Example

Using Crypt_CHAP_MSv1::ntChallengeResponse()

<?php
require_once 'Crypt/CHAP.php';

$cr = new Crypt_CHAP_MSv1();
$cr->password = 'MyPw';
echo bin2hex($cr->ntChallengeResponse());

?>

Crypt_CHAP_MSv1::ntPasswordHash()

Crypt_CHAP_MSv1::ntPasswordHash() – Generates the NT-Hash from the given plaintext-password.

Synopsis

string Crypt_CHAP_MSv1::ntPasswordHash ( string $password = '' )

Description

This method generates NT-Hash from the given plaintext-password or from the password property. The NT-Hash is computed like this: md4(str2unicode(plaintext))

Parameter

Return value

string - a String containing the NT-Hash

Note

This function can not be called statically.

Example

Using Crypt_CHAP_MSv1::ntPasswordHash()

<?php
require_once 'Crypt/CHAP.php';

$cr = new Crypt_CHAP_MSv1();
$cr->password = 'MyPw';
echo bin2hex($cr->ntPasswordHash());

// or
echo bin2hex($cr->ntPasswordHash('MySecret'));

?>

Crypt_CHAP_MSv1::lmPasswordHash()

Crypt_CHAP_MSv1::lmPasswordHash() – Generates the LAN-Manager-Hash from the given plaintext-password.

Synopsis

string Crypt_CHAP_MSv1::lmPasswordHash ( string $password = '' )

Description

This method generates LAN-Manager-Hash from the given plaintext-password or from the password property.

Parameter

Return value

string - a String containing the LAN-Manager-Hash

Note

This function can not be called statically.

LAN-Manager Hash are weak and should not be used anymore.

Example

Using Crypt_CHAP_MSv1::lmPasswordHash()

<?php
require_once 'Crypt/CHAP.php';

$cr = new Crypt_CHAP_MSv1();
$cr->password = 'MyPw';
echo bin2hex($cr->lmPasswordHash());

// or
echo bin2hex($cr->lmPasswordHash('MySecret'));

?>

Crypt_CHAP_MSv1::str2unicode()

Crypt_CHAP_MSv1::str2unicode() – Converts a string to unicode.

Synopsis

string Crypt_CHAP_MSv1::str2unicode ( string $str )

Description

This method generates converts the given string to unicode.

Parameter

Return value

string - a String containing unicode representation of the given string

Note

This function can not be called statically.

Example

Using Crypt_CHAP_MSv1::str2unicode()

<?php
require_once 'Crypt/CHAP.php';

$cr = new Crypt_CHAP_MSv1();
echo bin2hex($cr->str2unicode('MyPw'));

?>

Crypt_CHAP_MSv1::response()

Crypt_CHAP_MSv1::response() – Generates the response-packet.

Synopsis

string Crypt_CHAP_MSv1::response ( bool $lm = false )

Description

This method generates the response paket, containing the NT-Challenge-Response and/or the LM-Challenge-Response. By default the LM-Challenge-Response is not included.

Parameter

Return value

string - a String containing the paket

Note

This function can not be called statically.

Example

Using Crypt_CHAP_MSv1::response()

<?php
require_once 'Crypt/CHAP.php';

$cr = new Crypt_CHAP_MSv1();
$cr->password  = 'MyPw';
echo bin2hex($cr->response());

?>

Crypt_CHAP_MSv2::Crypt_CHAP_MSv2()

Crypt_CHAP_MSv2::Crypt_CHAP_MSv2() – constructor

Synopsis

require_once 'Crypt/CHAP.php';

void Crypt_CHAP_MSv2::Crypt_CHAP_MSv2 ( )

Description

Generates a new Object for generating MS-CHAPv2 compliant pakets. This version of CHAP uses also a Peer-Challenge, LM-Hashes are not used anymore. The Constructor generates automatically a Peer-Challenge and the Authenticator-Challenge.

Crypt_CHAP_MSv2::challengeHash()

Crypt_CHAP_MSv2::challengeHash() – Generates the Challenge-Hash.

Synopsis

string Crypt_CHAP_MSv2::challengeHash ( )

Description

This method generates the (SHA1) Challenge-Hash containing the authenticator and the peer challenge and the username.

Return value

string - a String containing the Challenge-Hash

Note

This function can not be called statically.

Example

Using Crypt_CHAP_MSv2::challengeHash()

<?php
require_once 'Crypt/CHAP.php';

$cr = new Crypt_CHAP_MSv2();
$cr->username = 'billy';
$cr->peerChallenge = $peerChallenge;
$cr->authChallenge = $authChallenge;
echo bin2hex($cr->challengeHash());

?>

Crypt_CHAP_MSv2::ntPasswordHashHash()

Crypt_CHAP_MSv2::ntPasswordHashHash() – Generates an MD4 Hash from the NT-Hash.

Synopsis

string Crypt_CHAP_MSv2::ntPasswordHashHash ( string $nthash )

Description

This method generates an MD4 Hash from the given NT-Hash.

Parameter

Return value

string - a String containing the NT-Hash

Note

This function can not be called statically.

Example

Using Crypt_CHAP_MSv2::ntPasswordHashHash()

<?php
require_once 'Crypt/CHAP.php';

$cr = new Crypt_CHAP_MSv2();
$nthash = $cr->ntPasswordHash('MyPw');
echo bin2hex($cr->ntPasswordHashHash($nthash));

?>