[RESOLU] Outil de scan reseau
Publié : mar. 10/mai/2011 11:32
Un autre lien pour ce logiciel s'il vous plait, ou le code source?: http://www.purebasic.fr/french/viewtopic.php?f=3&t=9614
Forums PureBasic - Français
http://forums.purebasic.com/french/
Code : Tout sélectionner
EnableExplicit
Structure IpHeader
version.a
tos.a
totalLength.w
ID.w
flagOffset.w
ttl.a
protocol.a
checkSum.w
source.l
destination.l
EndStructure
Structure TcpHeader
sourcePort.w
destinationPort.w
sequenceNumber.l
acknowledgeNumber.l
dataOffset.a
flags.a
windows.w
checkSum.w
pointer.w
EndStructure
#SIO_RCVALL=$98000001
Procedure main()
Protected ipNet.l, wsa.WSADATA, socket.l, sin.SOCKADDR_IN, promiscuous_mode.l=1, *buffer, bufferSize.i, ip.IPHeader, tcp.TcpHeader, dat.s
Protected received.i, sourcePort.u, destinationPort.u, ipSource.s, ipDestination.s
InitNetwork()
ExamineIPAddresses()
ipNet = NextIPAddress()
If WSAStartup_($202, @wsa)
Debug "Impossible d'acceder au réseau"
ProcedureReturn 0
EndIf
socket = SOCKET_(#AF_INET, #SOCK_RAW, #IPPROTO_IP)
If socket = #INVALID_SOCKET
WSACleanup_()
Debug "Impossible de créer le socket"
ProcedureReturn 0
EndIf
sin\sin_addr = ipNet
sin\sin_family = #AF_INET
If bind_(socket, @sin, SizeOf(SOCKADDR_IN))
WSACleanup_()
Debug "Ecoute impossible"
ProcedureReturn 0
EndIf
If ioctlsocket_(socket, #SIO_RCVALL, @promiscuous_mode)
WSACleanup_()
Debug "Impossible de passer en mode promiscuous"
ProcedureReturn 0
EndIf
bufferSize = 2048
*buffer = AllocateMemory(bufferSize)
Repeat
received = recv_(socket, *buffer, bufferSize, 0)
If received > 0
dat = Space(received - SizeOf(IpHeader)-SizeOf(TcpHeader))
CopyMemory(*buffer, @ip, SizeOf(IpHeader))
CopyMemory(*buffer+SizeOf(IpHeader), @tcp, SizeOf(TcpHeader))
CopyMemory(*buffer+SizeOf(IpHeader)+SizeOf(TcpHeader), @dat, Len(dat))
If ip\protocol = 6 ;protocole TCP
sourcePort = ntohs_(tcp\sourcePort)
destinationPort = ntohs_(tcp\destinationPort)
ipSource = IPString(ip\source)
ipDestination = IPString(ip\destination)
Debug ipSource+":"+Str(sourcePort)+" => "+ipDestination+":"+Str(destinationPort)
Debug Left(dat, 20)
Debug "---"
EndIf
EndIf
ForEver
closesocket_(socket)
WSACleanup_()
ProcedureReturn 0
EndProcedure
main()
End
Ooops désolé d'avoir oublier d'apporter cette précision. Dans les options du compilateur, coche la case L'application nécessite les droits administrateursDzoumaka a écrit : @falsam
J'ai un ptit problème quand j'lance ton prog: impossible de créer le socket -> qu'est-ce que j'fais?