DNS redirection v1.2 (resolution+cache)

Description

Micro serveur DNS faisant une redirection sur une adresse IP (serveur web local ou distant).

Utilisation: permet de rediriger un utilisateur sur une page d'accueil lors de Lan party ou Portail captif (Wifi non sécurisé), afin de lui apporter une meilleur visibilité des services disponibles sur le réseau.

Source / Exemple :


 Private Sub Socket_DataArrival(ByVal bytesTotal As Long) ' *Valider* On Error Resume Next Dim qdata() As Byte Dim qdatalen As Integer Dim z As Integer Socket.GetData qdata qdatalen = bytesTotal If qdatalen > 1 Then     Rem QUERY     Dim qtype As Integer     Dim qini As Integer     Dim qlon As Integer     Dim qdomaine As String          qtype = Int((Int(qdata(2)) / 6) & 15)     If qtype = 0 Then         qini = 12         qlon = Int(qdata(qini))         While (qlon <> 0)             For z = qini + 1 To qini + qlon                 qdomaine = qdomaine & Chr$(qdata(z))             Next             qdomaine = qdomaine & "."             qini = qini + qlon + 1             qlon = Int(qdata(qini))         Wend     End If      ' *** antispam*** '    If LastQuery.usrIP <> Socket.RemoteHostIP _ '    Or LastQuery.usrqdomaine <> qdomaine Then         With LastQuery             .usrIP = Socket.RemoteHostIP             .usrqdomaine = qdomaine         End With                  Addlog ("    Query for " & qdomaine)         Form1.Icon = LoadResPicture(104, vbResIcon)         Call SysTray.ChangerIcone(Form1)                  Rem ANSWER         Dim rpaquet() As Byte                  ReDim rpaquet(qdatalen + 16)         If qdomaine <> "" Then             For z = 0 To qdatalen - 1                 rpaquet(z) = qdata(z)             Next             ' Create packet forge             rpaquet(2) = 129             rpaquet(3) = 128             '...             rpaquet(6) = qdata(4)             rpaquet(7) = qdata(5)             rpaquet(8) = 0             rpaquet(9) = 0             rpaquet(10) = 0             rpaquet(11) = 0             '...             rpaquet(qdatalen) = 192             rpaquet(qdatalen + 1) = 12             rpaquet(qdatalen + 3) = 1             rpaquet(qdatalen + 5) = 1             rpaquet(qdatalen + 9) = 60             rpaquet(qdatalen + 11) = 4             'IP Redirection             rpaquet(qdatalen + 12) = Split(toIP, ".")(0)             rpaquet(qdatalen + 13) = Split(toIP, ".")(1)             rpaquet(qdatalen + 14) = Split(toIP, ".")(2)             rpaquet(qdatalen + 15) = Split(toIP, ".")(3)         End If         Socket.RemoteHost = Socket.RemoteHostIP         Socket.SendData rpaquet                  Addlog ("    Redirecting to " & toIP)         Form1.Icon = LoadResPicture(103, vbResIcon)         Call SysTray.ChangerIcone(Form1) '    End If End If End Sub 

Conclusion :


Mise à jour v1.2 : Amélioration de la résolution des noms de domaines, dans un fichier de base de données. Attention à ne pas régler les paramétres de DNS de l'ordinateur hôte sur son adresse IP local afin de ne pas créer une boucle infini lors de la résolution d'un nouveau domaine.

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.