User Account
Модератор: Злобный
- Atyla
- Отец
- Сообщения: 4194
- Зарегистрирован: Вс сен 01, 2002 18:35
- Откуда: С вытрезвителя.
- Контактная информация:
User Account
Как можно узнать средствами JScript, PHP, ASP, ASPX и тому подобными языками, имя под которым пользователь логинулся в Винду (2000, XP) и возможно ли это?
- Atyla
- Отец
- Сообщения: 4194
- Зарегистрирован: Вс сен 01, 2002 18:35
- Откуда: С вытрезвителя.
- Контактная информация:
кондратий,
Всё, что ты привёл применимо только для Win32 приложений...
Я имею в виду когда клиент через експлорер, запускает предположим мою страничку на aspx, можно ли получить имя пользователя залогиненного в винде...
ЗЫ: Посмотрел бы, чтобы было бы с бедным юзверем если бы мне стали доступны API'шные функции на его компе...
Всё, что ты привёл применимо только для Win32 приложений...
Я имею в виду когда клиент через експлорер, запускает предположим мою страничку на aspx, можно ли получить имя пользователя залогиненного в винде...
ЗЫ: Посмотрел бы, чтобы было бы с бедным юзверем если бы мне стали доступны API'шные функции на его компе...
- Белый С.
- Завсегдатай
- Сообщения: 2526
- Зарегистрирован: Пн дек 22, 2003 22:43
- Откуда: Выведен из аксиом
- Контактная информация:
Atyla, во-первых, уверен ли ты что это возможно? РеЗЫ: верю
Пройдись ещё по стандартным обьектам JavaScript (document, window и подобным), вдруг есть.
[off]добавлено спустя 48 минут:[/off]
Что-то мало накопал
Или вот ещё ( )
[off]добавлено спустя 4 минуты:[/off]
http://www.rgagnon.com/javadetails/java-0048.html
Пройдись ещё по стандартным обьектам JavaScript (document, window и подобным), вдруг есть.
[off]добавлено спустя 48 минут:[/off]
Что-то мало накопал
Видимо здесь нетуNavigator.
appCodeName
appName
appVersion
mimeTypes
plugins
userAgent
javaEnabled
Или вот ещё ( )
Код: Выделить всё
public class Greeting{
public static void main(String[] args){
String usersName;
String upperCaseName;
TextIO.put("Please enter your name: ");
usersName = TextIO.getln();
upperCaseName = usersName.toUpperCase();
TextIO.putln("Hello, " + upperCaseName + ", nice to meet you!");
}
}
[off]добавлено спустя 4 минуты:[/off]
http://www.rgagnon.com/javadetails/java-0048.html
Белый С.,
[off]добавлено спустя 5 минут:[/off]
ты вводиш что-то
а тебе пишет:
[off]добавлено спустя 1 минуту:[/off]
Atyla,
А ты в .NET FrameWork 1.1 поищи.
[off]добавлено спустя 5 минут:[/off]
ты вводиш что-то
Код: Выделить всё
TextIO.put("Please enter your name: ");
usersName = TextIO.getln();
Код: Выделить всё
upperCaseName = usersName.toUpperCase();
TextIO.putln("Hello, " + upperCaseName + ", nice to meet you!");
[off]добавлено спустя 1 минуту:[/off]
Atyla,
А ты в .NET FrameWork 1.1 поищи.
Атилыч, в некотрых случаях можно через ActiveX.
Прочитай про ("WScript.Shell") и про ("WScript.Network") , то что тебя интересует можно взять из ("WScript.Shell").Environment (вычислить из HOMEPATH) или напрямую из ("WScript.Network").Username .
Вот например теоретически, это могло выглядеть бы так:
<script language="javascript">
var user = new ActiveXObject("WScript.Network").Username;
location.replace('moj_script.php?user='+user);
</script>
Естессно вместо жс можно юзать вбс, чтоб с активхом работать, и ессно для принимающей проги можно юзать любой серверный язык, не только пшп, достаточно взять параметр user (в пшп либо через $_SERVER['QUERY_STRING'], либо через $_GET['user']), ну и потом сделать что угодно с ним, сунуть в базу, послать мылом, итд.
Но на деле, все это наверное не будет работать, из-за уровня безопасности мсие, который по умолчанию не даст чтоб ремоут скрипт создавал активх обжекты. У меня вычисление неких енвиронментсов работало в локале, если кто-нить сумеет подогнать это и для инета, будет интересно посмотреть ))
Другой способ - через NTLM - но я почти ничего про этот протокол не знаю, но думаю что он дает возможность узнать юзернейм. ( есть модуль НТЛМ и для апача, еще стоит юзать томкат, jsp классно с ним(нтлмом) умеет работать)
Потом флеш вроде тоже в браузере выполняется, но про него я еще меньше знаю , может ли он сделать что-нить подобное.
Остается еще Ява. Теоретически можно сделать апплет, в нем впихнуть com.sun.security.auth.module.NTSystem и взять имя через getName() (можно и домен, с getDomain()). Ну и потом то же самое как с жс, выбросить юзера на страницу (с showDocument()) где в качве ГЕТ параметра будет этот юзернейм. Но щас нету времени апплеты писать чтоб проверить, сори )) может через 2-3 дня )
[off]добавлено спустя 11 часов 9 минут:[/off]
[off]Автоперевод с транслита:[/off]
кстати, вот вспомнил, можно еще и любым серверным языком который поддерживает работу с сокетами послать нетбиос запрос на ип юзера, но тут зависит от многого, открыт ли у него нужный порт, не отрубил ли его пров этот тип траффика, не входит ли он из-за прокси, файервола, гейтвея с маскарадингом, итд
Прочитай про ("WScript.Shell") и про ("WScript.Network") , то что тебя интересует можно взять из ("WScript.Shell").Environment (вычислить из HOMEPATH) или напрямую из ("WScript.Network").Username .
Вот например теоретически, это могло выглядеть бы так:
<script language="javascript">
var user = new ActiveXObject("WScript.Network").Username;
location.replace('moj_script.php?user='+user);
</script>
Естессно вместо жс можно юзать вбс, чтоб с активхом работать, и ессно для принимающей проги можно юзать любой серверный язык, не только пшп, достаточно взять параметр user (в пшп либо через $_SERVER['QUERY_STRING'], либо через $_GET['user']), ну и потом сделать что угодно с ним, сунуть в базу, послать мылом, итд.
Но на деле, все это наверное не будет работать, из-за уровня безопасности мсие, который по умолчанию не даст чтоб ремоут скрипт создавал активх обжекты. У меня вычисление неких енвиронментсов работало в локале, если кто-нить сумеет подогнать это и для инета, будет интересно посмотреть ))
Другой способ - через NTLM - но я почти ничего про этот протокол не знаю, но думаю что он дает возможность узнать юзернейм. ( есть модуль НТЛМ и для апача, еще стоит юзать томкат, jsp классно с ним(нтлмом) умеет работать)
Потом флеш вроде тоже в браузере выполняется, но про него я еще меньше знаю , может ли он сделать что-нить подобное.
Остается еще Ява. Теоретически можно сделать апплет, в нем впихнуть com.sun.security.auth.module.NTSystem и взять имя через getName() (можно и домен, с getDomain()). Ну и потом то же самое как с жс, выбросить юзера на страницу (с showDocument()) где в качве ГЕТ параметра будет этот юзернейм. Но щас нету времени апплеты писать чтоб проверить, сори )) может через 2-3 дня )
[off]добавлено спустя 11 часов 9 минут:[/off]
[off]Автоперевод с транслита:[/off]
кстати, вот вспомнил, можно еще и любым серверным языком который поддерживает работу с сокетами послать нетбиос запрос на ип юзера, но тут зависит от многого, открыт ли у него нужный порт, не отрубил ли его пров этот тип траффика, не входит ли он из-за прокси, файервола, гейтвея с маскарадингом, итд
Код: Выделить всё
import com.sun.security.auth.module.NTSystem;
public class Test{
public static void main(String []args){
NTSystem nt = new NTSystem();
System.out.println("Username: "+nt.getName() +"\nDomain:"+nt.getDomain());
}
}
[off]добавлено спустя 57 секунд:[/off]
Это пашет
А вот:
[off]добавлено спустя 57 секунд:[/off]
Код: Выделить всё
import java.applet.Applet;
import java.awt.*;
import com.sun.security.auth.module.NTSystem;
public class Applett extends Applet {
NTSystem nt = new NTSystem();
public void paint(Graphics g) {
g.setFont(new Font("Arial", Font.BOLD, 16));
g.drawString(nt.getName(), 0, 30);
}
}
[off]добавлено спустя 43 секунды:[/off]
не хочет потому что:
[off]добавлено спустя 1 минуту:[/off]
java.security.AccessControlException: access denied (java.lang.RuntimePermission loadLibrary.jaas_nt)
at java.security.AccessControlContext.checkPermission(AccessControlContext.java:270)
at java.security.AccessController.checkPermission(AccessController.java:401)
at java.lang.SecurityManager.checkPermission(SecurityManager.java:542)
at java.lang.SecurityManager.checkLink(SecurityManager.java:834)
at java.lang.Runtime.loadLibrary0(Runtime.java:782)
at java.lang.System.loadLibrary(System.java:832)
at com.sun.security.auth.module.NTSystem.loadNative(NTSystem.java:171)
at com.sun.security.auth.module.NTSystem.<init>(NTSystem.java:40)
at Applett.<init>(Applett.java:5)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:274)
at java.lang.Class.newInstance0(Class.java:306)
at java.lang.Class.newInstance(Class.java:259)
at sun.applet.AppletPanel.createApplet(AppletPanel.java:566)
at sun.plugin.AppletViewer.createApplet(AppletViewer.java:1775)
at sun.applet.AppletPanel.runLoader(AppletPanel.java:495)
at sun.applet.AppletPanel.run(AppletPanel.java:292)
at java.lang.Thread.run(Thread.java:536)
-
- Юзер
- Сообщения: 191
- Зарегистрирован: Чт авг 15, 2002 12:56
- Откуда: Кишинев
- Контактная информация:
Atyla,
то, что ты пресанул начальницу похвально, где-то я тебе даже завидую...
суть заключается в том, что логин юзверя можно узнать из http заголовка, вот его содержание:
то, что ты пресанул начальницу похвально, где-то я тебе даже завидую...
суть заключается в том, что логин юзверя можно узнать из http заголовка, вот его содержание:
всего-то надо разобрать заголовок запроса, пришедшего от юзверя...HTTP/1.1|host:
HTTP/1.1|user-agent:
HTTP/1.1|accept:
HTTP/1.1|connection:
HTTP/1.1|accept-language:
HTTP/1.1|accept-encoding:
HTTP/1.1|referer:
HTTP/1.1|cookie:
HTTP/1.1|if-modified-since:
HTTP/1.1|extension:
HTTP/1.1|if-none-match:
HTTP/1.1|authorization:
HTTP/1.1|content-type:
HTTP/1.1|content-length:
HTTP/1.1|range:
HTTP/1.1|unless-modified-since:
HTTP/1.1|if-range:
HTTP/1.1|ua-os:
HTTP/1.1|ua-cpu:
HTTP/1.1|gizmo:
HTTP/1.1|from:
HTTP/1.1|persist:
HTTP/1.1|keep-alive:
HTTP/1.1|pragma:
HTTP/1.1|logon-user: <--- как ты понимаешь, здесь и будет логин юзверя
HTTP/1.1|cache-control:
HTTP/1.1|range-if:
HTTP/1.1|x-jcroomlist:
HTTP/1.1|sig:
HTTP/1.1|x-druserid:
- Atyla
- Отец
- Сообщения: 4194
- Зарегистрирован: Вс сен 01, 2002 18:35
- Откуда: С вытрезвителя.
- Контактная информация:
x,
Вся фишка в том, что пишу-то я для интранета...
CHILLI,
Фенкс большой...
[off]добавлено спустя 58 минут:[/off]
Вот шо я получаю... %(
Как видно инфу о User Account, я не получаю... %(
[off]добавлено спустя 2 минуты:[/off]
CHILLI,
Насчёт HTTPRequest
Вся фишка в том, что пишу-то я для интранета...
CHILLI,
Фенкс большой...
[off]добавлено спустя 58 минут:[/off]
Вот шо я получаю... %(
Как видно инфу о User Account, я не получаю... %(
Код: Выделить всё
0 - ALL_HTTP: HTTP_CONNECTION:Keep-Alive
HTTP_ACCEPT:image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-powerpoint, application/vnd.ms-excel, application/msword, application/x-shockwave-flash, */*
HTTP_ACCEPT_ENCODING:gzip, deflate
HTTP_ACCEPT_LANGUAGE:en-gb
HTTP_HOST:it10
HTTP_USER_AGENT:Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)
1 - ALL_RAW: Connection: Keep-Alive
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-powerpoint, application/vnd.ms-excel, application/msword, application/x-shockwave-flash, */*
Accept-Encoding: gzip, deflate
Accept-Language: en-gb
Host: it10
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)
2 - APPL_MD_PATH: /LM/w3svc/1/root/******sk
3 - APPL_PHYSICAL_PATH: ********************\IT*****esk\
4 - AUTH_TYPE:
5 - AUTH_USER:
6 - AUTH_PASSWORD:
7 - LOGON_USER:
8 - REMOTE_USER:
9 - CERT_COOKIE:
10 - CERT_FLAGS:
11 - CERT_ISSUER:
12 - CERT_KEYSIZE:
13 - CERT_SECRETKEYSIZE:
14 - CERT_SERIALNUMBER:
15 - CERT_SERVER_ISSUER:
16 - CERT_SERVER_SUBJECT:
17 - CERT_SUBJECT:
18 - CONTENT_LENGTH: 0
19 - CONTENT_TYPE:
20 - GATEWAY_INTERFACE: CGI/1.1
21 - HTTPS: off
22 - HTTPS_KEYSIZE:
23 - HTTPS_SECRETKEYSIZE:
24 - HTTPS_SERVER_ISSUER:
25 - HTTPS_SERVER_SUBJECT:
26 - INSTANCE_ID: 1
27 - INSTANCE_META_PATH: /LM/W3SVC/1
28 - LOCAL_ADDR: 192.168.101.148
29 - PATH_INFO: /IT******sk/ITHDMain.aspx
30 - PATH_TRANSLATED: ***************************sk\ITHDMain.aspx
31 - QUERY_STRING:
32 - REMOTE_ADDR: **2.1**.1*1.1**
33 - REMOTE_HOST: **2.1**.1*1.1**
34 - REMOTE_PORT: 2**7
35 - REQUEST_METHOD: GET
36 - SCRIPT_NAME: /I*******sk/ITHDMain.aspx
37 - SERVER_NAME: it10
38 - SERVER_PORT: 80
39 - SERVER_PORT_SECURE: 0
40 - SERVER_PROTOCOL: HTTP/1.1
41 - SERVER_SOFTWARE: Microsoft-IIS/5.0
42 - URL: /********sk/ITHDMain.aspx
43 - HTTP_CONNECTION: Keep-Alive
44 - HTTP_ACCEPT: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-powerpoint, application/vnd.ms-excel, application/msword, application/x-shockwave-flash, */*
45 - HTTP_ACCEPT_ENCODING: gzip, deflate
46 - HTTP_ACCEPT_LANGUAGE: en-gb
47 - HTTP_HOST: ***0
48 - HTTP_USER_AGENT: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)
[off]добавлено спустя 2 минуты:[/off]
CHILLI,
Насчёт HTTPRequest
Remarks
The methods and properties of the HttpRequest class are exposed through the Request property of the HttpApplication, HttpContext, Page, and UserControl classes.
то что ты искал, находится в request.servervariables("logon_user") , (или в пшп $_SERVER['remote_user'] но это не совсем НТ юзернейм )) . Если послать юзеру хидер 401(autorization required), и заставить его логинуться, то этот самый логон-юзер и будет то что он там введет. Вот например http://www.chat.md/forum/admin/ - то что вводят в поле логин - есть этот LOGON_USER, но это никак не НТ-юзер )
- Atyla
- Отец
- Сообщения: 4194
- Зарегистрирован: Вс сен 01, 2002 18:35
- Откуда: С вытрезвителя.
- Контактная информация:
x,
Не-а CHILLI обкатывал енту фишку с получением User Account'a юзверя и по его заверениям получалось.
Вот кусок C# кода, где я вытаскиваю весь http-header. User Account'ом там и не пахнет... %(
Не-а CHILLI обкатывал енту фишку с получением User Account'a юзверя и по его заверениям получалось.
Вот кусок C# кода, где я вытаскиваю весь http-header. User Account'ом там и не пахнет... %(
Код: Выделить всё
// Load NameValueCollection object.
int c=Page.Request.ServerVariables.Count;
//Request.ServerVariables.Count;
StreamWriter fStream=File.CreateText(@"c:\1.txt");
for (int i=0; i<c; i++)
{
fStream.WriteLine(i+" - "+Page.Request.ServerVariables.GetKey(i)+": "+Page.Request.ServerVariables.Get(i));
}
fStream.Flush();
fStream.Close();
//Здесь просто тупо пишу Хидэр в файл.
In PHP
bool w32api_register_function ( string library, string function_name, string return_type )
For example, the following snippet will display a standard messagebox:
w32api_register_function("User32.dll",
"MessageBoxA",
"long");
MessageBoxA(NULL,
"Hello World!",
"PHP MessageBox",
0);
This way U cand use any of system API functions
bool w32api_register_function ( string library, string function_name, string return_type )
For example, the following snippet will display a standard messagebox:
w32api_register_function("User32.dll",
"MessageBoxA",
"long");
MessageBoxA(NULL,
"Hello World!",
"PHP MessageBox",
0);
This way U cand use any of system API functions