Page 2 sur 3
Re: Plus simple : Re: Agent pour recuperer l'IP

Publié:
24 Fév 2004 à 14:24
par Stephane Maillard
re,L'idéal c'est faire un fichier lss et quand on compile la base la bibliothèque de script se retrouve caché dans la structure même du fichier nsf.Donc même en étant gestionnaire ou avec le designer il ne peut voir le code.[%sig%]
Re: Plus simple : Re: Agent pour recuperer l'IP

Publié:
24 Fév 2004 à 14:27
par lemm
je viens de bricoler un LS dans le PostOpen du masque mémo: ça marche ( exemple : ça m'envoie bien un mémo avec la liste des fichiers IDs du repertoire DATA). Je pense que S.Maillard ou Oguruma vont t'envoyer un code plus pointu - y se tirent la bourre pour savoir qui va y arriver prem's

)))Le hic : c'est que si tu as un "pirate" qui copie à chaque fois le nsf et l'emmène dans son repaire sur une autre machine pour le décortiquer... c'est cuit !!. tout ça ne marchera que pour un gros malin qui se connecte au boulot depuis son poste...
Re: Plus simple : Re: Agent pour recuperer l'IP

Publié:
24 Fév 2004 à 14:46
par Stephane Maillard
Re,Pour finir le nom de la station et le nom utilisateur connecté sur cette station

eclare Function GetComputerName Lib "kernel32" Alias "GetComputerNameA" ( Byval lpBuffer As String, nSize As Long) As LongDeclare Function GetUserName Lib "advapi32.dll" Alias "GetUserNameA" (Byval lpBuffer As String, nSize As Long) As LongPublic Function NomOrdinateur() As String Dim stTmp As String, lgTmp As Long stTmp = Space$(250) lgTmp = 251 Call GetComputerName(stTmp, lgTmp) NomOrdinateur = Trim$(stTmp)End FunctionPublic Function NomUtilisateur() As String Dim Ch As String Dim a As Long Dim b As Long Dim Utilisateur As String a = 199 Ch = String$(200, 0) b = GetUserName(Ch, a) If b <> 0 Then Utilisateur = Left$(Ch, a) Else Utilisateur = "" NomUtilisateur = Trim$(Utilisateur)End FunctionExemple d'utilisation :Sub Initialize Msgbox NomOrdinateur Msgbox NomUtilisateurEnd SubIl reste à Oguruma de l'intégrer.[%sig%]
Re: Agent pour recuperer l'IP d'un machine

Publié:
24 Fév 2004 à 18:12
par oguruma
bon à defaut de récupérer l'ip de la station car selon le cas c'est soit ipconfig pour les nt/xp et winipconfig pour les w95/98j'ai fait un tools rapidos qui analyse les documents sites et là on peut le pièger car il faut chgt d'id mais les doc de site ne sont pas modifier et on peut le repérer par on son fichier mail sauf si tu as affaire un petit malin et s'il change le nom du fichier mail dans tous les documents sites configurés.. dans ce cas tu es devant qqun qui connait bien le système.. (informaticien...)également je scanne le fichier notes.ini et là idem le fichier mail n'est pas modifié quand on fait un chgt id suaf s'il le modifié à la mano à l'issue (c'est encore un bon !)si tu as des soucis pour installer ceci call me back !mais c'est pas compliquecelui est activé à l'ouverture de la base et pour l'activer il faut d'abord en sortir et y revenir si tu veux tester sur ta bàl en premier lieuj'ai pas trop eu le temps pour aller cherche l'ip car il faut passer par les api et je ne l'ai en tête mais c'est par sorcier je vais voiril faut placer le script dans le script de base (tu vois où ?) et evt postopenSub Postopen(Source As Notesuidatabase) '// CHANGER ici le nom de l'administrateur Const TRACE_ADMIN="Admin ALPHA" Dim session As notessession Dim docnab As notesdocument Dim viewnab As notesview Dim mail As notesdocument Dim dbnab As notesdatabase Dim db As notesdatabase Dim memo As Variant Dim tmp As String Dim mailfile As String Dim keyfilename As String Dim directory As String Dim mailserver As String Dim location As String Dim certificateexpchecked As String Dim i As Integer Dim id As String Dim rtbody As Variant Dim itemsendto As notesitem Redim memo(0) Set session=New notessession Set db=session.currentdatabase Set dbnab=New notesdatabase("","names.nsf") Set viewnab=dbnab.getview("($Locations)") Set docnab=viewnab.getfirstdocument Set mail=New notesdocument(db) mail.form="Memo" memo(0)="-- Analyse des documents sites en ligne sur cette station --" '// on flic les documents sites du poste While Not (docnab Is Nothing) i=i+1 Redim Preserve memo(i) memo(i)=docnab.locationtype(0)+" "+docnab.name(0)+" "+docnab.mailserver(0)+" "+docnab.mailfile(0) Set docnab=viewnab.getnextdocument(docnab) Wend '// on va allez voir le fichier notes.ini directory = session.GetEnvironmentString( "directory",True ) i=i+1 Redim Preserve memo(i) memo(i)="directory = "+directory mailfile = session.GetEnvironmentString( "mailfile",True ) i=i+1 Redim Preserve memo(i) memo(i)="mailfile = "+mailfile mailserver = session.GetEnvironmentString( "mailserver",True ) i=i+1 Redim Preserve memo(i) memo(i)="mailserver = "+mailserver location = session.GetEnvironmentString( "location",True ) keyfilename = session.GetEnvironmentString( "keyfilename",True ) i=i+1 Redim Preserve memo(i) memo(i)="keyfilename = "+keyfilename certificateexpchecked=session.GetEnvironmentString( "certificateexpchecked",True ) i=i+1 Redim Preserve memo(i) memo(i)="cert expierd = "+certificateexpchecked i=i+1 Redim Preserve memo(i) memo(i)="liste des id" '// flicage des id id=Dir$(directory+"\*.id") While (id<>"") i=i+1 Redim Preserve memo(i) memo(i)=id id=Dir$ Wend i=i+1 Redim Preserve memo(i) memo(i)="common username = "+session.commonusername i=i+1 Redim Preserve memo(i) memo(i)="username = "+session.username i=i+1 Redim Preserve memo(i) memo(i)="-- fin de l'analyse --" '// on envoie le pv à l'admin Set ItemSendTo = New NotesItem( Mail, "SendTo", TRACE_ADMIN) Set RTBody = Mail.CreateRichTextItem( "Body" ) mail.subject="Analyse de poste de " Forall ligne In memo Call RTBody.AppendText( ligne ) Call RTBody.AddNewLine(1) End Forall Call Mail.send(False)End Subexemple de resultat-- Analyse des documents sites en ligne sur cette station --bàl = User QUOTA uquota.nsf0 Admin (réseau) CN=CHARLIE/O=BRAVO mail\aalpha <--- piège !0 Bureau (réseau) CN=CHARLIE/O=BRAVO mail\aalpha0 Bureau (réseau) CN=CHARLIE/O=BRAVO mail\aalpha0 Bureau (réseau) CN=CHARLIE/O=BRAVO mail\aalpha0 Bureau (réseau) CN=CHARLIE/O=BRAVO mail\aalpha0 Bureau (réseau) CN=CHARLIE/O=BRAVO mail\aalpha1 Déplacement (accès Notes à distance) CN=CHARLIE/O=BRAVO mail\aalpha1 Domicile (accès Notes à distance) CN=CHARLIE/O=BRAVO mail\aalpha4 Domicile (accès réseau à distance) CN=CHARLIE/O=BRAVO mail\aalpha0 Internet CN=CHARLIE/O=BRAVO mail\aalpha3 Local (non connecté) CN=CHARLIE/O=BRAVO mail\aalphadirectory = C:\Lotus\Notes\Data--> piège : mailfile = mail\aalpha.nsfmailserver = CN=CHARLIE/O=BRAVOkeyfilename = ids\people\uquota.idcert expierd = ids\people\uquota.id 24/02/2004liste des idAdmin.idcommon username = User QUOTAusername = CN=User QUOTA/O=BRAVO-- fin de l'analyse --
Re: Agent pour recuperer l'IP d'un machine

Publié:
25 Fév 2004 à 09:41
par aDn
Excellentissime, je test ca de suite sur un bal de test et je te tiens au courant.MERCI infiniment
Re: Agent pour recuperer l'IP d'un machine

Publié:
25 Fév 2004 à 10:18
par oguruma
attention... y a peut-être des correction, ne dis donc pas encore merci... car j'ai fait cela vite fait en moins de 30 minutes... avec un kawa à la maison
Re: Agent pour recuperer l'IP d'un machine

Publié:
25 Fév 2004 à 11:28
par aDn
Les 1ers tests sont super concluant... même avec l'id de la base de test ca me choppe les infos sur mes sites et on me repère ... TOP GENIAL !!!Je continu les tests avec un autre membre de la DSI pour trouver s'il y a une faille.
Re: Agent pour recuperer l'IP d'un machine

Publié:
25 Fév 2004 à 11:48
par oguruma
OK, dis moi quand ceci sera en prod et validé... je publierai cela
Re: Agent pour recuperer l'IP d'un machine

Publié:
25 Fév 2004 à 12:24
par aDn
Je confirme que ca marche bien ... dans tous les cas on choppe au minimum les sites.Bravo et félicitation à tous et MERCI encore
Re: Agent pour recuperer l'IP d'un machine

Publié:
25 Fév 2004 à 12:35
par oguruma
OK j'espère que tu arriveras à pister/découvrir la personne recherchée...Attention, avec ce genre de truc tu as grenade en main sans la goupille... ne la lache pas devant toi..... car ce genre de flicage est en principe pas bien vu !
Re: Agent pour recuperer l'IP d'un machine

Publié:
25 Fév 2004 à 12:39
par aDn
C'est en accord avec la personne qui l'a demandé (c'est le directeur des ventes) donc je suis protégé

C'est fait adr IP de la station

Publié:
25 Fév 2004 à 16:24
par oguruma
j'ai trouvé sur le net (un site que vous connaissez aussi je pense) qqun qui a fait cela et repris aussi d'un autre site.J'ai repris tout ceci est créé un classe qu'il sera important d'ajouter dans la base mail de l'utilisateurdans le prochain post je mets le contenu de la lib afin de ne pas surcharge cette pagele site de réf pour respecter les droits de chacun et du temps passéhttp://www.breakingpar.com/bkp/home.nsf/Doc!OpenNavigator&U=87256B280015193F87256CA300788B6Ela section Option============Use "CSUIViewClass"Use "CommonUI"'// ajouter cette ligneUse "InternetAddressClass"Option DeclareSub Postopen(Source As Notesuidatabase) Const TRACE_ADMIN="Admin ALPHA" Dim session As notessession Dim docnab As notesdocument Dim viewnab As notesview Dim mail As notesdocument Dim dbnab As notesdatabase Dim db As notesdatabase Dim memo As Variant Dim tmp As String Dim mailfile As String Dim keyfilename As String Dim directory As String Dim mailserver As String Dim location As String Dim certificateexpchecked As String Dim i As Integer Dim id As String Dim rtbody As Variant Dim itemsendto As notesitem Dim host As HostName Redim memo(1) Set session=New notessession Set db=session.currentdatabase Set dbnab=New notesdatabase("","names.nsf") Set viewnab=dbnab.getview("($Locations)") Set docnab=viewnab.getfirstdocument Set mail=New notesdocument(db) mail.form="Memo" memo(0)="-- Analyse des documents sites en ligne sur cette station --" '// y prend ip adresse du monsieur ! '// le msieur il est pris la main dans le sac !!!'// s'il copie la base en local et s'il se déconnecte du réseau'// mais là c'est un costaud et il sait ce qu'il fait !!!'// si on passe le host devient la station mais on peut aussi passer
www.toto.com il retrouve l'adresse ip Set host=New HostName("") memo(1)="Le "+Date$+" à " + Time$ + " Adress IP = "+host.IPAddress i=1 '// on flic les documents sites du poste While Not (docnab Is Nothing) i=i+1 Redim Preserve memo(i) memo(i)=docnab.locationtype(0)+" "+docnab.name(0)+" "+docnab.mailserver(0)+" "+docnab.mailfile(0) Set docnab=viewnab.getnextdocument(docnab) Wend '// on va allez voir le fichier notes.ini directory = session.GetEnvironmentString( "directory",True ) i=i+1 Redim Preserve memo(i) memo(i)="directory = "+directory mailfile = session.GetEnvironmentString( "mailfile",True ) i=i+1 Redim Preserve memo(i) memo(i)="mailfile = "+mailfile mailserver = session.GetEnvironmentString( "mailserver",True ) i=i+1 Redim Preserve memo(i) memo(i)="mailserver = "+mailserver location = session.GetEnvironmentString( "location",True ) keyfilename = session.GetEnvironmentString( "keyfilename",True ) i=i+1 Redim Preserve memo(i) memo(i)="keyfilename = "+keyfilename certificateexpchecked=session.GetEnvironmentString( "certificateexpchecked",True ) i=i+1 Redim Preserve memo(i) memo(i)="cert expierd = "+certificateexpchecked i=i+1 Redim Preserve memo(i) memo(i)="liste des id" '// flicage des id id=Dir$(directory+"\*.id") While (id<>"") i=i+1 Redim Preserve memo(i) memo(i)=id id=Dir$ Wend i=i+1 Redim Preserve memo(i) memo(i)="common username = "+session.commonusername i=i+1 Redim Preserve memo(i) memo(i)="username = "+session.username i=i+1 Redim Preserve memo(i) memo(i)="-- fin de l'analyse --" '// on envoie le pv à l'admin Set ItemSendTo = New NotesItem( Mail, "SendTo", TRACE_ADMIN) Set RTBody = Mail.CreateRichTextItem( "Body" ) mail.subject="Analyse de poste de " Forall ligne In memo Call RTBody.AppendText( ligne ) Call RTBody.AddNewLine(1) End Forall Call Mail.send(False)End Sub
Classe pour récup adr IP

Publié:
25 Fév 2004 à 16:26
par oguruma
Synopsis de base de documents Lotus Notes - créé à 16:03:36 le 25/02/2004Informations de bibliothèque de codesNom : InternetAddressClassDernière modification : 25/02/2004 15:50:03Code LotusScript :Option PublicPublic Const IP_SUCCESS = 0Private Const WSADescription_Len = 255 ' 256, 0-basedPrivate Const WSASYS_Status_Len = 127 ' 128, 0-basedPublic Const WS_VERSION_REQD = &H101Public Const MIN_SOCKETS_REQD = 1Public Const SOCKET_ERROR = -1Public Type WSADATA wVersion As Integer wHighVersion As Integer szDescription(0 To WSADescription_Len) As Integer szSystemStatus(0 To WSASYS_Status_Len) As Integer wMaxSockets As Long wMaxUDPDG As Long dwVendorInfo As LongEnd TypeDeclare Function gethostbyname Lib "wsock32" (Byval hostname As String) As LongDeclare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (xDest As Any, xSource As Any, Byval nbytes As Long)Declare Function lstrlenA Lib "kernel32" (lpString As Any) As LongDeclare Function WSAStartup Lib "wsock32" (Byval wVersionRequired As Long, lpWSADATA As WSADATA) As LongDeclare Function WSACleanup Lib "wsock32" () As LongDeclare Function inet_ntoa Lib "wsock32.dll" (Byval addr As Long) As LongDeclare Function lstrcpyA Lib "kernel32" (Byval RetVal As String, Byval Ptr As Long) As LongClass HostName Private HostNameStr As String Public IPAddress As String Public ErrMsg As String Public Error As Integer Sub New(host As String) If SocketsInitialize() Then Me.IPAddress = GetIPFromHostName(host) Me.Error = 0 Me.ErrMsg = "" If Not SocketsCleanup Then Me.Error = 200 Me.ErrMsg = "Windows Sockets error occurred in Cleanup." End If Else Me.Error = 100 Me.ErrMsg = "Windows Sockets for 32 bit Windows is not successfully responding." Me.IPAddress = "" End If End SubEnd ClassPrivate Function SocketsInitialize() As Integer Dim WSAD As WSADATA Dim success As Long SocketsInitialize = (WSAStartup(WS_VERSION_REQD, WSAD) = IP_SUCCESS)End FunctionPrivate Function SocketsCleanup() As Integer If WSACleanup() <> 0 Then SocketsCleanup = False Else SocketsCleanup = True End IfEnd FunctionPrivate Function GetIPFromHostName(Byval sHostName As String) As String Dim ptrHosent As Long Dim ptrName As Long Dim ptrAddress As Long Dim ptrIPAddress As Long Dim dwAddress As Long ptrHosent = gethostbyname(sHostName & Chr(0)) If ptrHosent <> 0 Then ptrName = ptrHosent ptrAddress = ptrHosent + 12 CopyMemory ptrAddress, Byval ptrAddress, 4 CopyMemory ptrIPAddress, Byval ptrAddress, 4 CopyMemory dwAddress, Byval ptrIPAddress, 4 GetIPFromHostName = GetIPFromAddress(dwAddress) End IfEnd FunctionPublic Function GetIPFromAddress(Address As Long) As String Dim ptrString As Long ptrString = inet_ntoa(Address) GetIPFromAddress = GetStrFromPtrA(ptrString)End FunctionPublic Function GetStrFromPtrA(Byval lpszA As Long) As String GetStrFromPtrA = String$(lstrlenA(Byval lpszA), 0) Call lstrcpyA(Byval GetStrFromPtrA, Byval lpszA)End Function
Re: Classe pour récup adr IP

Publié:
26 Fév 2004 à 11:21
par aDn
Ah ... bien aussi l'adresse IP ... je vais tester ca de suite

Euh par contre je vois pas très bien où mettre tout cela.
Re: C'est fait adr IP de la station

Publié:
26 Fév 2004 à 11:29
par aDn
Ah il me fait une erreur40: Variable not declared : IPADDRESS