一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - PHP教程 - PHP獲取windows登錄用戶名的方法

PHP獲取windows登錄用戶名的方法

2020-07-11 15:28PHP教程網 PHP教程

這篇文章主要介紹了PHP獲取windows登錄用戶名的方法,通過NTLM來實現,NTLM 是 Windows NT 早期版本的標準安全協議,需要的朋友可以參考下

前幾天在問答區提了一下這個問題,所有回答問題的朋友都說不可能通過PHP實現,碰巧我的實習負責人幫我找到了一個方法,貌似是通過NTLM來實現的,我是新手,對具體原理也知之不詳,只是自己測試了一下,很好用.
所以趕快拿出來與大家分享.這是一個法國人寫的,所以編碼中的注釋都是法語,如果有朋友很想了解某行的注釋含義,請回帖說明,我可以試著翻譯一下.

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
<?php
/***********************************************************************
************************************************************************
*
* PHP NTLM GET LOGIN
* Version 0.2.1                 
* Copyright (c) 2004 Nicolas GOLLET ( Nicolas (dot) gollet (at) secusquad (dot) com )
* Copyright (c) 2004 Flextronics Saint-Etienne
*
* This program is free software. You can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License.   
*
***********************************************************************/
session_start();
$headers = apache_request_headers(); // 獲取用戶頭
if (@$_SERVER['HTTP_VIA'] != NULL){ // 確認是否使用了代理(proxy),因為ntlm驗證不能穿過代理.
echo "Proxy bypass!";
}
elseif($headers['Authorization'] == NULL){  //si l'entete autorisation est inexistante如果許可頭不存在
 header( "HTTP/1.0 401 Unauthorized" );  //envoi au client le mode d'identification
 header( "WWW-Authenticate: NTLM" );  //dans notre cas le NTLM
 exit;    //on quitte
}
if(isset($headers['Authorization']))   //dans le cas d'une authorisation (identification)
{
 if(substr($headers['Authorization'],0,5) == 'NTLM '){ // 確認client是否在ntlm下
 
  $chaine=$headers['Authorization'];  
  $chaine=substr($chaine, 5);  // 獲取 base64-encoded type1 信息
  $chained64=base64_decode($chaine); // 解碼 base64 到 $chained64
  
  if(ord($chained64{8}) == 1){  
  //   |_ byte signifiant l'etape du processus d'identification (etape 3)
 
  // verification du drapeau NTLM "0xb2" ?l'offset 13 dans le message type-1-message (comp ie 5.5+) :
  if (ord($chained64[13]) != 178){
   echo "NTLM Flag error!";
   exit;
  }
 
  $retAuth = "NTLMSSP".chr(000).chr(002).chr(000).chr(000).chr(000).chr(000).chr(000).chr(000);
  $retAuth .= chr(000).chr(040).chr(000).chr(000).chr(000).chr(001).chr(130).chr(000).chr(000);
  $retAuth .= chr(000).chr(002).chr(002).chr(002).chr(000).chr(000).chr(000).chr(000).chr(000);
  $retAuth .= chr(000).chr(000).chr(000).chr(000).chr(000).chr(000).chr(000);
  
  $retAuth64 =base64_encode($retAuth); // encode en base64
  $retAuth64 = trim($retAuth64);  // enleve les espaces de debut et de fin
  header( "HTTP/1.0 401 Unauthorized" );  // envoi le nouveau header
  header( "WWW-Authenticate: NTLM $retAuth64" ); // avec l'identification suppl閙entaire
  exit;
  
  }
  
  else if(ord($chained64{8}) == 3){
  //     |_ byte signifiant l'etape du processus d'identification (etape 5)
 
  // on recupere le domaine
  $lenght_domain = (ord($chained64[31])*256 + ord($chained64[30])); // longueur du domain
  $offset_domain = (ord($chained64[33])*256 + ord($chained64[32])); // position du domain.
  $domain = str_replace("\0","",substr($chained64, $offset_domain, $lenght_domain)); // decoupage du du domain
  
  //le login
  $lenght_login = (ord($chained64[39])*256 + ord($chained64[38])); // longueur du login.
  $offset_login = (ord($chained64[41])*256 + ord($chained64[40])); // position du login.
  $login = str_replace("\0","",substr($chained64, $offset_login, $lenght_login)); // decoupage du login
  
  if ( $login != NULL){
   // stockage des donn閑s dans des variable de session
   $_SESSION['Login']=$login;
   header("Location: newpage.php");
   exit;
  }
  else{
   echo "NT Login empty!";
  }
   
 
  }
 }
}
?>

 

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 亚洲春黄在线观看 | 无码人妻少妇色欲AV一区二区 | 国产成人精品免费午夜 | 俄罗斯一级淫片 | 欧美视频一区二区专区 | 久久热这里面只有精品 | 欧美日韩色图 | 第一次破女视频国产一级 | 奇米影视在线视频8888 | 亚洲精品乱码久久久久久蜜桃 | 男人桶女下面60分钟视频 | 99热这里只有精品在线观看 | 日本免费一区二区三区 | 91综合久久| 男人把大ji巴放进男人免费视频 | 国产色图片 | 免费精品99久久国产综合精品 | 被夫上司侵犯了中文字幕 | 91制片厂制作果冻传媒破解 | 忘忧草研究院一二三 | 国产女乱淫真高清免费视频 | 风间由美理论片在线观看 | 香蕉久久久久久狠狠色 | 日本韩国一区二区三区 | free chinese 国产精品 | 精品久久久久久国产91 | 欧美高清在线精品一区 | 青青青青青国产费线在线观看 | 四虎影院网址大全 | 成人一区二区丝袜美腿 | 91制片厂果冻传媒杨柳作品 | 蜜桃成熟时1997在线看免费看 | 人生路不在线观看完整版 | 饭冈加奈子在线播放观看 | 深夜福利影院 | 日本一道高清不卡免费 | 草综合| 久草在线福利视频在线播放 | 久久这里只精品热在线18 | 花核调教 | 免费午夜影片在线观看影院 |