[R] Je cherche à compléter le code qui permet d'obtenir des informations sur les domaines à partir des serveurs Whois

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Boulanza
Niveau 9
Niveau 9
Messages : 697
Enregistré le : mer. 31 juil. 2013 15:49
Status : Hors ligne

[R] Je cherche à compléter le code qui permet d'obtenir des informations sur les domaines à partir des serveurs Whois

#1

Message par Boulanza »

Bonjour,
Je cherche à compléter le code suivant afin d’ajouter « id="registrarData">Domain Name: autoitscript.com » parmi les éléments de recherche:
Global $file = @ScriptDir & "\code.ini", $search = "Registry Registrant ID: " pour que « Domain Name: autoitscript.com » soit
dans la liste.

Une autre question: Pourquoi "whois_email à la forme suivante : « Registrant Email: 941:Registrant Email: <img src="/eimg/a/39/a3913c68f50559edd6e81cdf143cbbffca4b51d8.png" class="whois_email" alt="email">@1und1.de » au lieux de :
« Registrant Email: email@1und1.de ».
Merci d'avance pour votre aide
Cordialement.
FileDelete(@ScriptDir & "\code.ini")
 Sleep(100)

$oHTTP = ObjCreate("winhttp.winhttprequest.5.1")
$oHTTP.Open("GET", "https://www.whois.com/whois/autoitscript.com", 0)
$oHTTP.Send()
$txt = $oHTTP.Responsetext
$oHTTP = 0
$txt2 = StringRegExpReplace($txt, '', "")
;Msgbox(0,"", $txt2)
 FileWrite("code.ini", $txt2)
;~ Exit
;=============
Global $file = @ScriptDir & "\code.ini", $search = "Registry Registrant ID:"
Global $iLine = 0, $sLine = '', $iValid = 0
Global $hFile = FileOpen($file)
If $hFile = -1 Then
    MsgBox(0,'ERROR','Unable to open file for reading.')
    Exit 1
EndIf

; find the line that has the search string
While 1
    $iLine += 1
    $sLine = FileReadLine($hFile)
    If @error = -1 Then ExitLoop

    ; test the line for the $search string until the flag $iValid is set
    If StringInStr($sLine, $search) And Not $iValid Then
        $iValid = 1
        ContinueLoop
    EndIf

    If $iValid Then
        $iValid += 1
        ;ConsoleWrite($iLine & ':' & $sLine & @CRLF)
      ; Msgbox(0,"", $sLine)
FileWrite("Résultat.ini", $iLine & ':' & $sLine & @CRLF)
If $iValid > 10 Then ExitLoop
EndIf

WEnd
FileClose($hFile)
Sleep(100)
FileDelete(@ScriptDir & "\code.ini")
 Sleep(100)
;Exit

Local $file1 = @ScriptDir & "\Résultat.ini"
Local $inp = FileRead($file1)
Local $out = StringRegExpReplace($inp, '', '')
;~ ;MsgBox(0, "", $out)

            $STR = $out
            $STR = StringReplace($STR, "925:Registrant", " ")
                        $STR = StringReplace($STR, "926:Registrant", " ")
                        $STR = StringReplace($STR, "927:Registrant", " ")
                        $STR = StringReplace($STR, "928:Registrant", " ")
                        $STR = StringReplace($STR, "929:Registrant", " ")
                        $STR = StringReplace($STR, "930:Registrant", " ")
                        $STR = StringReplace($STR, "931:Registrant", " ")
                        $STR = StringReplace($STR, "932:Registrant", " ")
                        $STR = StringReplace($STR, "933:Registrant", " ")
                        $STR = StringReplace($STR, "934:Registrant", " ")
                        $STR = StringReplace($STR, "935:Registrant", " ")
                        $STR = StringReplace($STR, "936:Registrant", " ")
                        $STR = StringReplace($STR, "937:Registrant", " ")
                        $STR = StringReplace($STR, "938:Registrant", " ")
                        $STR = StringReplace($STR, "939:Registrant", " ")
                        $STR = StringReplace($STR, "940:Registrant", " ")
;MsgBox(0, "", $STR)
;Exit
;===============
;~ Local $file1 = @ScriptDir & "\Résultat.ini"
;~ Local $inp = FileRead($file1)
;~ Local $out = StringRegExpReplace($inp, '', '')

;~ $regex1 =   "(?i)([1-9]+)\s*(:)\h*(Registrant)"     ;"(?i)([1-9]+)\s*(:)\h*"    ;"(?i)([a-z]+)\s*(:)\h*(.*)"    ;"(?i).+Registrant:.*\v?" Registrant
;~                      $txt1 = $out
;~                      $txt1 = StringRegExpReplace($txt1, $regex1, "")
;~                      msgbox(0,"2",$txt1)
;~                      GUICtrlSetData($out, $txt1)
;~ Exit
;===============
;MsgBox(0, "", $STR)
;MsgBox(0, "Resultat", "Avant : "&$out&@CRLF&"Après : "&$STR)
 FileWrite("Code.ini", $STR );$STR   ;$txt1
FileDelete(@ScriptDir & "\Résultat.ini")
 Sleep(100)
Exit
Modifié en dernier par Boulanza le dim. 26 mai 2019 19:31, modifié 6 fois.
Avatar du membre
jchd
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 2272
Enregistré le : lun. 30 mars 2009 22:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status : Hors ligne

Re: [..] Je cherche à compléter le code qui permet d'obtenir des informations sur les domaines à partir des serveurs Who

#2

Message par jchd »

Les données personnelles (nom, tél, mail, adresse, ...) sont toujours masquées. Observez la page dans un navigateur et voyez que cet URL affiche dataprivacyprotected
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
Boulanza
Niveau 9
Niveau 9
Messages : 697
Enregistré le : mer. 31 juil. 2013 15:49
Status : Hors ligne

Re: [..] Je cherche à compléter le code qui permet d'obtenir des informations sur les domaines à partir des serveurs Who

#3

Message par Boulanza »

Bonjour,
Merci jchd pour votre réponse.
Les données personnelles (nom, tél, mail, adresse, ...) sont toujours masquées. Observez la page dans un navigateur et voyez que cet URL affiche dataprivacyprotected
Pour https://www.whois.com/whois/nom de domaine, (nom, tél, mail(cryptée/camouflée), adresse,...) sont lisible (non masquées) ceci si ces données ont été fournies lors de l'inscription au moment de la demande d'achat du nom de domaine: Ces informations ont des usages très variés,
Le rôle de whois est de permettre d'obtenir des informations sur une adresse IP ou un nom de domaine.
J'ai vérifié plusieurs scripts des noms de domaines de sites (nom, tél, adresse, ...) ils ne sont pas masqués sauf l’adresse mail elle est camouflée, elle est lisible sur la page du lien https://www.whois.com/whois/nom de domaine.
Ma demande été comment compléter le code ci-dessust afin d’ajouter « id="registrarData">Domain Name: autoitscript.com » parmi les éléments de recherche dans la ligne : Global $file = @ScriptDir & "\code.ini", $search = "Registry Registrant ID: ".
Votre aide est toujours sollicitée...
Cordialement.
Avatar du membre
jchd
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 2272
Enregistré le : lun. 30 mars 2009 22:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status : Hors ligne

Re: [..] Je cherche à compléter le code qui permet d'obtenir des informations sur les domaines à partir des serveurs Who

#4

Message par jchd »

Vous confondez Registrar (organisme qui gère la création du domaine) et le Registrant (la personne morale ou physique qui demande la création d'un domaine).
Par exemple, pour https://www.whois.com/whois/autoitscript.com le Registrar est IONOS et le Registrant est "AutoIt Consulting Ltd" mais aucune information personnelle du Registrant n'est disponible.
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
Boulanza
Niveau 9
Niveau 9
Messages : 697
Enregistré le : mer. 31 juil. 2013 15:49
Status : Hors ligne

Re: [..] Je cherche à compléter le code qui permet d'obtenir des informations sur les domaines à partir des serveurs Who

#5

Message par Boulanza »

Vous confondez Registrar (organisme qui gère la création du domaine) et le Registrant (la personne morale ou physique qui demande la création d'un domaine).
Dans la liste du code ci-dessus on trouve par exemple : Registrant Organization: AutoIt Consulting Ltd c.a.d on cherche les renseignements sur la personne morale ou physique et/ou l'identité du détenteur de droit d'auteur: le demandeur de la création d'un domaine et non de celui qui gère la création du domaine.
Avatar du membre
jchd
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 2272
Enregistré le : lun. 30 mars 2009 22:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status : Hors ligne

Re: [..] Je cherche à compléter le code qui permet d'obtenir des informations sur les domaines à partir des serveurs Who

#6

Message par jchd »

Le nom d'une entreprise n'est pas une information personnelle. Selon sa forme juridique et le lieu du siège, vous pouvez éventuellement trouver le nom de dirigeants et/ou collaborateurs en interrogeant des bases de données légales, mais cela n'a rien à voir avec les données enregistrées par le registrar.

Essayez avec https://www.whois.com/whois/autoitscript.fr ou https://www.whois.com/whois/antichoc.net (ce domaine m'appartient) et vous verrez qu'il n'y a aucune donnée personnelle. C'est une disposition élémentaire de protection de la vie privée et il est très rare de nos jours qu'un individu mette à disposition ses données perso via whois.

Ceci dit et même avec ces précautions, certains spammeurs réussissent à obtenir mail et parfois plus.

Par ailleurs, il n'y a pas de notion de droit d'auteur ici, seulement le droit de propriété du domaine concerné.
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
Boulanza
Niveau 9
Niveau 9
Messages : 697
Enregistré le : mer. 31 juil. 2013 15:49
Status : Hors ligne

Re: [..] Je cherche à compléter le code qui permet d'obtenir des informations sur les domaines à partir des serveurs Who

#7

Message par Boulanza »

Bonsoir,
Vous avez raison cher jchd et vous êtes bien informé...
Par ailleurs, il n'y a pas de notion de droit d'auteur ici, seulement le droit de propriété du domaine concerné.
Si, il y a des cas ou le nom de domaine porte le nom d'un médicament, ou le non d'un procédé de laboratoire (fabrication) ou encore le nom d'un film, ... Le nom du créateur détenteur du droit d'auteur doit être visible et non masqué ainsi que ses coordonnés dans whois. (loi relative au droit d'auteur et aux droits voisins)
Pour ma demande j'ai trouvé un bout de script qui marche pour trouver un mot ou une phrase sur un lien web comme suit:
;=========================
;~ ;id="registrarData">Domain Name: autoitscript.com
Switch StringRegExp(BinaryToString(InetRead('https://www.whois.com/whois/autoitscript.com/'), 4), "id=")
    Case 1
        MsgBox(0,"","Le mot est présent dans la page")
    Case 0
        MsgBox(0,"","Le mot n'est pas présent dans la page")
EndSwitch
Je ne vois pas comment l'adapter à mon cas ?
Votre suggestion. Merci.
Cordialement.
Avatar du membre
jchd
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 2272
Enregistré le : lun. 30 mars 2009 22:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status : Hors ligne

Re: [..] Je cherche à compléter le code qui permet d'obtenir des informations sur les domaines à partir des serveurs Who

#8

Message par jchd »

Si, il y a des cas ou le nom de domaine porte le nom d'un médicament, ou le non d'un procédé de laboratoire (fabrication) ou encore le nom d'un film, ... Le nom du créateur détenteur du droit d'auteur doit être visible et non masqué ainsi que ses coordonnés dans whois. (loi relative au droit d'auteur et aux droits voisins)
La directive GDPR et ses transpositions en droits locaux contredit ceci.
https://copyrightalliance.org/ca_post/w ... -name-dnd/

De toute façon, si le registrant est une personne morale, GDPR ne s'applique pas et si l'entité ne souhaite pas rendre public le fait qu'elle a créé tel domaine, elle passe par un tiers (filiale absconse, société de services). Si le déposant est un individu, le droit de propriété est la plupart du temps au nom d'une entreprise tierce.
https://www.whois.com/whois/mylan.fr
https://www.whois.com/whois/psg.fr
https://www.whois.com/whois/louane.fr
https://www.whois.com/whois/angelinajolie.com
https://www.whois.com/whois/kylianmbappe.com
https://www.whois.com/whois/twaron.com (brevet et marque détenus par Teijin [JP] ; c'est un polymère comparable au Kevlar)

Simple curiosité : à quoi pourraient vous servir ces informations ?
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
Boulanza
Niveau 9
Niveau 9
Messages : 697
Enregistré le : mer. 31 juil. 2013 15:49
Status : Hors ligne

Re: [..] Je cherche à compléter le code qui permet d'obtenir des informations sur les domaines à partir des serveurs Who

#9

Message par Boulanza »

Bonjour,
Simple curiosité : à quoi pourraient vous servir ces informations ?
Je suis membre actif dans une association de protection contre la contrefaçon et le piratage intellectuel.
J'étais consultant en lutte anti-contrefaçon. Actuellement je suis à la retraite, j'attends le grand départ.
WhoIs, c'est une idée pour comparer les donnés en arrière plan.
Pour votre information, bientôt les déclarations sur WhoIs doivent être visibles et non camouflés aussi pour les certificats d’authentification CA et SSL ...
N.B : Consultez le paragraphe "Résumé de la spécification temporaire" du lien que vous m'avez envoyé https://copyrightalliance.org/ca_post/w ... -name-dnd/

Revenons à ma problématique, avez-vous une idée à mon souci ?
Cordialement.
Avatar du membre
walkson
Modérateur
Modérateur
Messages : 1020
Enregistré le : ven. 12 août 2011 19:49
Localisation : Hurepoix
Status : Hors ligne

Re: [..] Je cherche à compléter le code qui permet d'obtenir des informations sur les domaines à partir des serveurs Who

#10

Message par walkson »

Bonjour,
Quelque chose comme ça ?
#include <Array.au3>

$IP = InputBox("WHOIS","Veuillez entrer l'adresse :", "https://www.whois.com/whois/angelinajolie.com")
    If @error = 1 Then Exit
        $source = BinaryToString(InetRead($IP,1))
      Sleep(3000)

    If $source <> "" Then
        $String = StringRegExp($source,'(?m)^(?!\Q<pre\E)\w(?<!\Q</pre>\E)\N+',3)
        _ArrayDisplay($String)


      Local $cherche[5] =  ["Registrant Organization:","Registrant Street:","Registrant City:", "Registrant State/Province:", "Registrant Postal Code:"]
      Local $lecture
      For $i = 0 To UBound($String) - 1
         For $y = 0 To 4
            $result = StringInStr($String[$i],$cherche[$y])
            If $result > 0 Then $lecture &= $String[$i] & @CRLF
         Next
      Next
      MsgBox(0,$IP,$lecture)
   EndIf
On fait une recherche multi-lignes entre les balises <pre et </pre>, là où se situe le Raw Whois Data
Je ne suis pas un spécialiste des regexs mais ça marche (y a surement à améliorer !)
En tout cas, Jchd a bon gout ! angelinajolie
Cordialement,
Walkson
"Horas non numero nisi serenas " Le canon de midi
(Je ne compte que les heures heureuses)
Avatar du membre
jchd
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 2272
Enregistré le : lun. 30 mars 2009 22:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status : Hors ligne

Re: [..] Je cherche à compléter le code qui permet d'obtenir des informations sur les domaines à partir des serveurs Who

#11

Message par jchd »

Consultez le paragraphe "Résumé de la spécification temporaire" du lien que vous m'avez envoyé
Bah, c'est bien ce que je dis. Les informations privées concernant les personnes physiques sont avant toute autre considération, régies par les directives GDPR, qui s'appliquent partout. Sauf autorisation expresse du déposant, elles ne doivent être accessibles que par des entités reconnues et légitimes, pour des raisons justifiées et via une procédure indirecte et anonyme gére par le registrar.
bientôt les déclarations sur WhoIs doivent être visibles et non camouflés aussi pour les certificats d’authentification CA et SSL
Sauf pour les personnes physiques, car cela serait en contradiction avec GDPR. En pratique il n'y a que très peu de gens qui s'offrent un certificat valide, vu le coût.
j'attends le grand départ
On l'attend forcément tous un jour, mais en général sans grande impatience !
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
Boulanza
Niveau 9
Niveau 9
Messages : 697
Enregistré le : mer. 31 juil. 2013 15:49
Status : Hors ligne

Re: [..] Je cherche à compléter le code qui permet d'obtenir des informations sur les domaines à partir des serveurs Who

#12

Message par Boulanza »

Bonjour,
c'est exacte aujourd’hui cher jchd mais pas pour les année avenirs, les déclarations sur WhoIs doivent être visibles et non camouflés, pour la Raison d'État : Paix et Sécurité Internationale (intérêts légitimes).

Partir c'est le repos éternel, moi je suis prêt, je veux bien partir.
Modifié en dernier par Boulanza le lun. 13 mai 2019 22:26, modifié 1 fois.
Boulanza
Niveau 9
Niveau 9
Messages : 697
Enregistré le : mer. 31 juil. 2013 15:49
Status : Hors ligne

Re: [..] Je cherche à compléter le code qui permet d'obtenir des informations sur les domaines à partir des serveurs Who

#13

Message par Boulanza »

Bonjour walkson,
C'est un travail de pro: Code optimisé propre...
Merci walkson.
Cordialement. :bisou:
Boulanza
Niveau 9
Niveau 9
Messages : 697
Enregistré le : mer. 31 juil. 2013 15:49
Status : Hors ligne

Re: [R] Je cherche à compléter le code qui permet d'obtenir des informations sur les domaines à partir des serveurs WhoI

#14

Message par Boulanza »

Bonjour tous le monde,
N.B: walkson, à ce jours mon problème principale n'est pas encore résolus :
Je cherche à compléter le code suivant afin d’ajouter « id="registrarData">Domain Name: autoitscript.com » parmi les éléments de recherche:
Global $file = @ScriptDir & "\code.ini", $search = "Registry Registrant ID: " pour que « Domain Name: autoitscript.com » soit
dans la liste.
Votre code fait abstraction pour extraire le nom du domaine: autoitscript.com
Votre code:
#include <Array.au3>

$IP = InputBox("WHOIS","Veuillez entrer l'adresse :", "https://www.whois.com/whois/angelinajolie.com")
    If @error = 1 Then Exit
        $source = BinaryToString(InetRead($IP,1))
                Sleep(3000)

    If $source <> "" Then
        $String = StringRegExp($source,'(?m)^(?!\Q<pre\E)\w(?<!\Q</pre>\E)\N+',3)
        _ArrayDisplay($String)


                Local $cherche[5] =     ["Registrant Organization:","Registrant Street:","Registrant City:", "Registrant State/Province:", "Registrant Postal Code:"]
                Local $lecture
                For $i = 0 To UBound($String) - 1
                        For $y = 0 To 4
                                $result = StringInStr($String[$i],$cherche[$y])
                                If $result > 0 Then $lecture &= $String[$i] & @CRLF
                        Next
                Next
                MsgBox(0,$IP,$lecture)
        EndIf
Cordialement.
Boulanza
Niveau 9
Niveau 9
Messages : 697
Enregistré le : mer. 31 juil. 2013 15:49
Status : Hors ligne

Re: [..] Je cherche à compléter le code qui permet d'obtenir des informations sur les domaines à partir des serveurs Who

#15

Message par Boulanza »

Ce code il marche bien. il serait parfait si il est optimiser avec votre code.
#include <Array.au3>
Func _StringBetween2($s, $from, $to)
$x = StringInStr($s, $from) + StringLen($from)
$y = StringInStr(StringTrimLeft($s, $x), $to)
Return StringMid($s, $x, $y)
EndFunc
$THOTTBOT = _INetGetSource("https://www.whois.com/whois/autoitscript.com/")
$String = _StringBetween2($THOTTBOT, "<Title>", "</Title>")
;MsgBox(1, "ThottBot.com", $String)
         $regex1 = "^([^ ]*)"
         $txt1 = $String
         $txt1 = StringRegExpReplace($txt1, $regex1, "")
         msgbox(0,"2",$txt1)
Local $dir = @ScriptDir & "\Résultat.ini"
$1 = $txt1
IniWrite($dir, "parametres", "$NomDuDomaineWhois", $1)
Boulanza
Niveau 9
Niveau 9
Messages : 697
Enregistré le : mer. 31 juil. 2013 15:49
Status : Hors ligne

Re: [..] Je cherche à compléter le code qui permet d'obtenir des informations sur les domaines à partir des serveurs Who

#16

Message par Boulanza »

Bonsoir,
Enfin voici le code final à optimiser:
Cordialement.
#include <Array.au3>
Global $1, $txt1
test()
Func _StringBetween2($s, $from, $to)
$x = StringInStr($s, $from) + StringLen($from)
$y = StringInStr(StringTrimLeft($s, $x), $to)
Return StringMid($s, $x, $y)
EndFunc
Func test()
$THOTTBOT = _INetGetSource("https://www.whois.com/whois/autoitscript.com/")
$String = _StringBetween2($THOTTBOT, "<Title>", "</Title>")
;MsgBox(1, "ThottBot.com", $String)

         $regex1 = "^([^ ]*)"
         $txt1 = $String
         $txt1 = StringRegExpReplace($txt1, $regex1, "")
         Msgbox(0,"Name", "=" & $txt1 & "=")

Local $dir = @ScriptDir & "\Résultat.ini"
$1 = $txt1
IniWrite($dir, "parametres", "$NomDuDomaineWhois", $1)

      Global $txt1 = FileRead($dir)
      $tilt1 = StringRegExp($txt1, '\$NomDuDomaineWhois= (\V+)', 3) ; cherche une chaine $MP="chaine"
      If IsArray($tilt1) Then
         $NomDuDomaineWhois = $tilt1[0] ; si chaine trouvée, $res = la chaine
         Msgbox(0,"Name", "=" & $NomDuDomaineWhois & "=")
IniWrite($dir, "parametres", "$NomDuDomaineWhois", $NomDuDomaineWhois)
EndIf
EndFunc
Répondre