Bonjour,
Je vous présente aujourd'hui mon tout premier code depuis 2012, l'année où j'ai arrêté de coder.
Donc j'ai eu du mal à m'y remettre et j'ai donc décidé de commencer par un code tout simple pour me remettre dans le bain ^^
Voilà la code (à compiler avec Fasm):
C'est un scanneur d'hôte. Tel que présenté ici, si vous le compiler tel quel, il va scanner tout les hôtes de classes A et B et vous renvoyer leur nom de domaine. Donc il va tout scanner de l'ip 1.1.1.1 à l'ip 255.255.1.1
Après, à vous de changer le code pour scanner les autres classes d'ip.
Par exemple pour scanner les hîotes de classe C et D il faut changer "inc byte [sockaddr+4]" par "inc byte [sockaddr+6]" et inc byte [sockaddr+5] par inc byte [sockaddr+7]
A quoi ça sert me dirait vous ? Et bien à comprendre l'architecture d'un réseau (ce qui est interdit par la loi je vous le rappel). Par exemple je sais exactement combien mon FAI a d'abonnés dans ma ville.. J'ai également tout les noms de domaines de la nasa..
Je n'ai pas fait de GUI car c'est un code fait à la va-vite comme je vous l'ai dit pour me remettre dans le bain.
Si vous avez des questions n'hésitez pas.
++
Je vous présente aujourd'hui mon tout premier code depuis 2012, l'année où j'ai arrêté de coder.
Donc j'ai eu du mal à m'y remettre et j'ai donc décidé de commencer par un code tout simple pour me remettre dans le bain ^^
Voilà la code (à compiler avec Fasm):
Code :
format PE console 5.0
include 'include/windows/win32a.inc'
entry start
;--------------------------------------------------
section '.text' code readable executable
;--------------------------------------------------
start:
push NULL
push FILE_ATTRIBUTE_NORMAL
push OPEN_ALWAYS
push NULL
push NULL
push GENERIC_WRITE
push FilePath
call [CreateFile]
mov [hFile],eax
push FILE_END
push 0
push 0
push [hFile]
call [SetFilePointer]
push wsadata
push 0x202
call [WSAStartup]
mov cx,port
rol cx,8
mov word [sockaddr+2],cx
mov [sockaddr],AF_INET
push ip_addr
call [inet_addr]
mov dword [sockaddr+4],eax
@@:
push NULL
push lpNumberOfBytesWritten
push 2
push lpBuffer
push [hFile]
call [WriteFile]
push 0
push 0
push 0
push 64
push host
push 16
push sockaddr
call [getnameinfo]
push eax
push formh
call [printf]
add esp,8
mov edi,host
call strlen
push NULL
push BytesWrite
push eax
push host
push [hFile]
call [WriteFile]
inc byte [sockaddr+5]
jnz @b
inc byte [sockaddr+4]
jnz @b
push [hFile]
call [CloseHandle]
push 0
call [ExitProcess]
strlen:
xor eax,eax
xor ecx,ecx
not cx
cld
repnz scasb
not cx
dec cx
mov eax,ecx
ret
;--------------------------------------------------
section '.data' data readable writeable
;--------------------------------------------------
wsadata WSADATA
FilePath db 'file.txt',0
hFile dd 0
BytesWrite dd 0
lpBuffer db 13,10
lpNumberOfBytesWritten dd 0
ip_addr db '1.1.1.1',0
sockaddr rb 16
host rb 64
port = 13000
formh db '%08x',13,10,0
formd db '%d',13,10,0
forms db '%s',13,10,0
formc db '%c',13,10,0
;--------------------------------------------------
section '.idata' import data readable writeable
;--------------------------------------------------
library kernel32,'kernel32.dll',\
msvcrt,'msvcrt.dll',\
user32,'user32.dll',\
wsock32,'ws2_32.dll'
include 'include\windows\api\kernel32.inc'
include 'include\windows\api\user32.inc'
include 'include\windows\api\wsock32.inc'
import msvcrt,\
printf,'printf',\
sprintf,'sprintf'
C'est un scanneur d'hôte. Tel que présenté ici, si vous le compiler tel quel, il va scanner tout les hôtes de classes A et B et vous renvoyer leur nom de domaine. Donc il va tout scanner de l'ip 1.1.1.1 à l'ip 255.255.1.1
Après, à vous de changer le code pour scanner les autres classes d'ip.
Par exemple pour scanner les hîotes de classe C et D il faut changer "inc byte [sockaddr+4]" par "inc byte [sockaddr+6]" et inc byte [sockaddr+5] par inc byte [sockaddr+7]
A quoi ça sert me dirait vous ? Et bien à comprendre l'architecture d'un réseau (ce qui est interdit par la loi je vous le rappel). Par exemple je sais exactement combien mon FAI a d'abonnés dans ma ville.. J'ai également tout les noms de domaines de la nasa..
Je n'ai pas fait de GUI car c'est un code fait à la va-vite comme je vous l'ai dit pour me remettre dans le bain.
Si vous avez des questions n'hésitez pas.
++