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

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

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!";
  }
   
 
  }
 }
}
?>

 

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 1024香蕉视频 | 996热视频 | 国产草| 百合互慰吃奶互揉漫画 | 日本在线你懂的 | 日本护士xxxx视频免费 | 欧美高清无砖专区欧美精品 | 明星ai智能人脸替换造梦在线播放 | 亚洲六月丁香六月婷婷蜜芽 | 欧美人妖大啪啪 | 免费看a视频 | 国产v视频 | japanese在线观看 | 逼里逼里香 | 日韩在线一区二区三区 | 亚洲国产精品久久无套麻豆 | 性派对videos18party | 波多野结衣之双方调教在线观看 | 97精品国产高清在线看入口 | 非洲黑人又大粗gay 非洲黑人bbwbbwbbw | 四虎免费永久观看 | 白丝超短裙被输出娇喘不停小说 | 国产日韩高清一区二区三区 | 女仆色在线观看 | 国产日产在线观看 | 亚洲AV精品无码喷水直播间 | 亚洲 欧美 中文 日韩 视频 | 日韩精品一区二区三区免费视频 | 日韩高清在线免费看 | 慢慢娇淫 | 日本不卡免费新一二三区 | 国产91影院 | 国产精品igao视频网网址 | 色吊丝每日永久访问网站 | 爱情岛永久成人免费网站 | 日本免费在线 | 黑人粗又长 | 美女黄板视频 | 欧美亚洲另类在线观看 | 无限在线观看免费入口 | 婷婷久久热99在线精品 |