PureBasic

Forums PureBasic
Nous sommes le Mar 21/Mai/2013 21:33

Heures au format UTC + 1 heure




Poster un nouveau sujet Répondre au sujet  [ 15 messages ] 
Auteur Message
 Sujet du message: Activité online et API Windows
MessagePosté: Dim 24/Juin/2012 12:50 
Hors ligne
Avatar de l’utilisateur

Inscription: Mer 21/Jan/2004 22:18
Messages: 118
Bonjour à tous,

Un ami m'a suggéré une idée de programme simple mais efficace : éteindre le PC (sous Windows) lorsque l'activité en DL est nulle.
Peut-être que cela existe déjà, mais je voudrais le faire sous PB quand même.

Mon problème : il n'y a pas de fonction interne à PB qui permette de surveiller l'activité globale de l'OS.
Cela doit pouvoir se trouver dans l'API windows, non ?
Connaissez-vous ces fonctions ?

Merci de votre aide.

_________________
10 CLS
20 PRINT "Vive PureBasic"
30 GOTO 20


Haut
 Profil  
 
 Sujet du message: Re: Activité online et API Windows
MessagePosté: Dim 24/Juin/2012 13:04 
Hors ligne
Avatar de l’utilisateur

Inscription: Lun 26/Avr/2004 0:40
Messages: 12948
en meme temps , tu récupères un prg comme Free Download manager
http://www.freedownloadmanager.org/download.htm

il te propose d’éteindre le systeme a la fin des téléchargement ;)

question "que ce passerai t'il si ton telechargement est interompu ? " = activité 0 , paf , Extinction ! m**de ! :lol:

mieux vaut utiliser le prg ci dessus , il va gerer ta bande passantes, les telechargements , et l'option extinction , dans la foulé ! , meme reprendre les download interrompus .. ;)

ps : ce prg peut le faire, car c'est lui qui telecharge ... donc il connait l'activité :)

en clair , si tu veux faire la meme chose, c'est possible , si c'est toi qui gere la procedure de telehargement ...

par contre savoir si un autre prg telecharge ou pas .. a mon avis , c'est chaud ( faut faire un sniffer )

_________________
Image


Haut
 Profil  
 
 Sujet du message: Re: Activité online et API Windows
MessagePosté: Dim 24/Juin/2012 13:37 
Hors ligne
Avatar de l’utilisateur

Inscription: Mer 21/Jan/2004 22:18
Messages: 118
Oui mais justement je voudrais "monitorer" (désolé pour cet barbarisme) toute l'activité, quelque soit le programme qui télécharge : navigateur/client ftp/assistant de téléchargement etc...
Bref récupérer les paramètres réseau globaux du système (onglet réseau du gestionnaire de tache).

Pour le problème d'arrêt non voulu que tu évoques, j'avais prévu de mettre un timer (genre arrêt après seulement 2 minutes, et nouveau test avant) pour éviter ce genre de déconvenues.

_________________
10 CLS
20 PRINT "Vive PureBasic"
30 GOTO 20


Haut
 Profil  
 
 Sujet du message: Re: Activité online et API Windows
MessagePosté: Dim 24/Juin/2012 14:08 
Hors ligne
Avatar de l’utilisateur

Inscription: Lun 26/Avr/2004 0:40
Messages: 12948
Dobro a écrit:
par contre savoir si un autre prg telecharge ou pas .. a mon avis , c'est chaud ( faut faire un sniffer )

:) bon courage

_________________
Image


Haut
 Profil  
 
 Sujet du message: Re: Activité online et API Windows
MessagePosté: Lun 25/Juin/2012 17:30 
Hors ligne
Avatar de l’utilisateur

Inscription: Mer 21/Jan/2004 22:18
Messages: 118
Vi vi j'avais vu. :wink:
J'ai trouvé des snipsets (pour Unix) et je confirme, ça a l'air chaud. :lol:

Merci de ton aide en tout cas Dobro.

_________________
10 CLS
20 PRINT "Vive PureBasic"
30 GOTO 20


Haut
 Profil  
 
 Sujet du message: Re: Activité online et API Windows
MessagePosté: Lun 25/Juin/2012 18:06 
Hors ligne
Avatar de l’utilisateur

Inscription: Lun 26/Avr/2004 0:40
Messages: 12948
apres avoir fait marcher mon chapeau a idée , emprunté a Geo Trouvetout


Image

je me suis dit, que peut etre simplement en testant les Ports ...

si un téléchargement a lieu ; forcement ça doit ouvrir un port ...

test avec un code genre :

Code:
; scan de port
InitNetwork()
OpenConsole()
PrintN("-----------: Ports actifs :------------")
For i = 0 To 65000
   t$ = Inkey()
   If t$ <> "":Goto ex:EndIf
   ConsoleTitle(Str(i)+" / 65000")
   If CreateNetworkServer(0,i,#PB_Network_TCP)
      CloseNetworkServer(0)
      Else
      ConsoleColor(9,0)
      PrintN("TCP : " + Str(i))
   EndIf
   If CreateNetworkServer(0,i,#PB_Network_UDP)
      CloseNetworkServer(0)
      Else
      ConsoleColor(10,0)
      PrintN("UDP : " + Str(i))
   EndIf
Next i
ex:
ConsoleColor(12,0)
PrintN("Analyse interrompue")
Delay(2000)
CloseConsole()
End

; EPB



ou ça de SFSxOI :
Code:

; Debug Rd_cmd("netstat -n") ; comment this line out first from the code previously posted above
; then add the below

If CreateFile(0, "IP_Port.txt")
WriteString(0, Rd_cmd("netstat -n"))
CloseFile(0)
EndIf

Delay(10)
RunProgram("IP_Port.txt")



article en anglais sur l'activit des ports :
http://www.drdobbs.com/windows/184416559

il semble que Flaith a eu besoin de ça , il a peut etre avancé depuis !! ? :)

_________________
Image


Haut
 Profil  
 
 Sujet du message: Re: Activité online et API Windows
MessagePosté: Lun 25/Juin/2012 22:47 
Hors ligne
Avatar de l’utilisateur

Inscription: Mer 21/Jan/2004 22:18
Messages: 118
L'idée était bonne mais ça ne marche pas.
C'est l’exécution du programme (navigateur, clien p2p etc...) qui commande l'ouverture des ports, pas le fait de savoir s'il y a téléchargement actif ou pas.

Je vais creuser du côté du sniffer homebrew.

_________________
10 CLS
20 PRINT "Vive PureBasic"
30 GOTO 20


Haut
 Profil  
 
 Sujet du message: Re: Activité online et API Windows
MessagePosté: Mar 26/Juin/2012 10:04 
Hors ligne
Avatar de l’utilisateur

Inscription: Dim 25/Mar/2007 13:44
Messages: 500
Localisation: Toulouse, France
Bon aller je laisse un bout de code de mon sniffeur. /!\ Pour qu'il fonctionne, il faut activer les droit d'administrateur dans les options du compilateur. Je vous laisse le soins d'analyser le code (il est commenté):


Code:
; ******************************
; ********** Sniffeur **********
; ******** Par lepiaf31 ********
; ******************************

EnableExplicit

Structure IpHeader
  IhlVersion.b
  typeOfService.b
  totalLength.w
  ID.w
  flagOffset.b
  fragOffset.b
  timeToLive.b
  protocol.b
  checksum.w
  source.l
  destination.l
EndStructure

Structure TcpHeader
  portSource.w
  portDestination.w
  seqNum.l
  ackNum.l
  dataOffset.b
  flags.b
  window.w
  checksum.w
  urgentPointer.w
EndStructure

#WSA_VER = $202
#SIO_RCVALL=$98000001
#TcpProtocol = 6
#BufferSize = 4096

Procedure manageData(*buffer, size.i)
  Protected ipHeader.IPHeader, tcpHeader.TcpHeader, sourcePort.i, destinationPort.i
 
  If size > 40 ;on veut un paquet TCP/IP complet avec des données utiles
   
    ;récupération de l'en-tete IP
    CopyMemory(*buffer, @ipHeader, SizeOf(IpHeader))
    If ipHeader\protocol = #TcpProtocol ;Connexions TCP seulement
     
      ;récupération de l'en-tete TCP
      CopyMemory(*buffer+SizeOf(IpHeader), @tcpHeader, SizeOf(TcpHeader))
     
      ;Ports
      sourcePort = ntohs_(tcpHeader\portSource)
      destinationPort = ntohs_(tcpHeader\portDestination)
     
      PrintN("Connexion: "+IPString(ipHeader\source)+" -> "+IPString(ipHeader\destination))
      PrintN("Port Source: "+Str(sourcePort))
      PrintN("Port Destination: "+Str(destinationPort))
      PrintN("")
    EndIf
  EndIf
EndProcedure

Procedure sniff(*function)
  Protected ip.i, wsaData.WSADATA, sin.SOCKADDR_IN, promiscuous_mode.l, sock.i, *buffer, size.i
  promiscuous_mode = 1
 
  ;récupération de l'IP
  If InitNetwork()
    ExamineIPAddresses()
    ip = NextIPAddress()
  Else
    ProcedureReturn 0
  EndIf
 
  ;Démarrage
  If WSAStartup_(#WSA_VER, @wsaData)
    WSACleanup_()
    ProcedureReturn 0
  EndIf
 
  ;Creation du socket
  sock = SOCKET_(#AF_INET, #SOCK_RAW, #IPPROTO_IP)
  If sock = #INVALID_SOCKET
    WSACleanup_()
    ProcedureReturn 0
  EndIf
  sin\sin_family = #AF_INET
  sin\sin_addr = ip
 
  ;mode sniffing
  If bind_(sock, @sin, SizeOf(SOCKADDR_IN))
    WSACleanup_()
    ProcedureReturn 0
  EndIf
  If ioctlsocket_(sock, #SIO_RCVALL, @promiscuous_mode)
    WSACleanup_()
    ProcedureReturn 0
  EndIf
 
 
  *buffer = AllocateMemory(#BufferSize) ;allocation de la memoire de reception
 
  Repeat
    size = recv_(sock, *buffer, #BufferSize, 0)
    CallFunctionFast(*function, *buffer, size) ;traitement des données
  ForEver
 
  FreeMemory(*buffer)
  ProcedureReturn 1
EndProcedure


OpenConsole()
sniff(@manageData())
End


Le résultat:
Image


Haut
 Profil  
 
 Sujet du message: Re: Activité online et API Windows
MessagePosté: Mar 26/Juin/2012 10:08 
Hors ligne
Avatar de l’utilisateur

Inscription: Lun 26/Avr/2004 0:40
Messages: 12948
merci :)

_________________
Image


Haut
 Profil  
 
 Sujet du message: Re: Activité online et API Windows
MessagePosté: Mar 26/Juin/2012 13:05 
Hors ligne
Avatar de l’utilisateur

Inscription: Dim 22/Aoû/2010 15:24
Messages: 1489
Localisation: IDF (Yvelines)
Adopté. Merci pour ce partage :)

_________________
Noob Inside ■ (Windows 7 & 8 - PB 4.51 & 5.10 Full version) ■ Mode politiquement Correct
SQLite Vision : Éditeur de fichiers SQLite


Haut
 Profil  
 
 Sujet du message: Re: Activité online et API Windows
MessagePosté: Mar 26/Juin/2012 13:20 
Hors ligne
Avatar de l’utilisateur

Inscription: Dim 25/Mar/2007 13:44
Messages: 500
Localisation: Toulouse, France
De rien ;)


Haut
 Profil  
 
 Sujet du message: Re: Activité online et API Windows
MessagePosté: Mar 26/Juin/2012 18:03 
Hors ligne
Avatar de l’utilisateur

Inscription: Mer 21/Jan/2004 22:18
Messages: 118
Un grand merci et un encore plus grand bravo !

_________________
10 CLS
20 PRINT "Vive PureBasic"
30 GOTO 20


Haut
 Profil  
 
 Sujet du message: Re: Activité online et API Windows
MessagePosté: Mer 27/Juin/2012 16:18 
Hors ligne
Avatar de l’utilisateur

Inscription: Jeu 29/Juil/2004 16:33
Messages: 2117
Localisation: . <------ ici
Merci lepiaf31, cela peut être utile.






@++

_________________
Windows 8 x64, processeur core i7 2.93ghz, mémoire ram 10Go, 2x ati radeon hd 5750 1Go chacune
PureBasic 5.11 x86 & x64 DirectX 11


Haut
 Profil  
 
 Sujet du message: Re: Activité online et API Windows
MessagePosté: Lun 02/Juil/2012 15:40 
Hors ligne
Avatar de l’utilisateur

Inscription: Ven 11/Fév/2005 17:34
Messages: 3063
Localisation: Arras, France
Yep, cool ! Merci :)

_________________
The shooting crew ~> http://www.shootingcrew.com
Bobble Puzzle ~> http://djes.free.fr


Haut
 Profil  
 
 Sujet du message: Re: Activité online et API Windows
MessagePosté: Lun 02/Juil/2012 18:04 
Hors ligne
Avatar de l’utilisateur

Inscription: Sam 23/Sep/2006 18:32
Messages: 4440
Localisation: Isere
Merci pour le partage 8)

_________________
ImageLe bonheur est une route...
Pas une destination


Haut
 Profil  
 
Afficher les messages postés depuis:  Trier par  
Poster un nouveau sujet Répondre au sujet  [ 15 messages ] 

Heures au format UTC + 1 heure


Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité


Vous ne pouvez pas poster de nouveaux sujets
Vous ne pouvez pas répondre aux sujets
Vous ne pouvez pas éditer vos messages
Vous ne pouvez pas supprimer vos messages

Rechercher:
Aller à:  

 


Powered by phpBB © 2008 phpBB Group | Traduction par: phpBB-fr.com
subSilver+ theme by Canver Software, sponsor Sanal Modifiye