Pointeur cpp
Résolu/Fermé
A voir également:
- Pointeur cpp
- Dev cpp - Télécharger - Langages
- Pointeur souris disparu windows 10 - Guide
- Pointeur souris - Guide
- Pointeur souris disparu pc portable asus - Guide
- Camconfig cpp - Forum compta / gestion
2 réponses
Utilisateur anonyme
Modifié le 31 déc. 2018 à 18:51
Modifié le 31 déc. 2018 à 18:51
Bonjour
Je ne connais pas grand chose en C++, mais de quel type est lpai->IpAddressList.IpAddress.String ?
Si c'est un string comme son nom le suggère, ce n'est donc pas un char * et normal que memcpy et strncpy ne fonctionnent pas.
Mais tu peux le faire avec la méthode copy : http://www.cplusplus.com/reference/string/string/copy/. Attention au '\0' final.
Je ne connais pas grand chose en C++, mais de quel type est lpai->IpAddressList.IpAddress.String ?
Si c'est un string comme son nom le suggère, ce n'est donc pas un char * et normal que memcpy et strncpy ne fonctionnent pas.
Mais tu peux le faire avec la méthode copy : http://www.cplusplus.com/reference/string/string/copy/. Attention au '\0' final.
[Dal]
Messages postés
6198
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
13 décembre 2024
1 096
Modifié le 2 janv. 2019 à 15:20
Modifié le 2 janv. 2019 à 15:20
Salut JohnR,
Si tu te sers de la struct IP_ADAPTER_INFO
https://docs.microsoft.com/en-us/windows/desktop/api/iptypes/ns-iptypes-_ip_adapter_info
celle-ci contient des membres ayant le type IP_ADDR_STRING et non pas IP_ADDRESS_STRING (qui est une autre struct).
Selon la doc pour IP_ADDR_STRING, qui est à https://docs.microsoft.com/en-us/windows/desktop/api/iptypes/ns-iptypes-_ip_addr_string
The String member is a char array of size 16. This array holds an IPv4 address in dotted decimal notation.
C'est à dire un bête char[16], qui sert à stocker sous forme de chaîne C terminée par
Vu que c'est une chaîne C, tu peux la copier avec strcpy ou strncpy (et, d'ailleurs, déclarer par la même occasion ip4 dans ton main comme un
Ton memcpy devrait aussi marcher, si iplen vaut 16.
Sinon, je trouve ton code bien compliqué, et par ailleurs tu ne devrais pas faire
Dal
Si tu te sers de la struct IP_ADAPTER_INFO
https://docs.microsoft.com/en-us/windows/desktop/api/iptypes/ns-iptypes-_ip_adapter_info
celle-ci contient des membres ayant le type IP_ADDR_STRING et non pas IP_ADDRESS_STRING (qui est une autre struct).
Selon la doc pour IP_ADDR_STRING, qui est à https://docs.microsoft.com/en-us/windows/desktop/api/iptypes/ns-iptypes-_ip_addr_string
The String member is a char array of size 16. This array holds an IPv4 address in dotted decimal notation.
C'est à dire un bête char[16], qui sert à stocker sous forme de chaîne C terminée par
'\0'une adresse IPv4 sous forme
xxx.xxx.xxx.xxx(15 caractères + la fin de chaîne).
Vu que c'est une chaîne C, tu peux la copier avec strcpy ou strncpy (et, d'ailleurs, déclarer par la même occasion ip4 dans ton main comme un
char ip4[16] = { '\0' };et retirer ton malloc et ton memset), et l'afficher avec un simple
printfet le spécificateur
%s(comme dans l'exemple présenté à la suite de la doc de IP_ADAPTER_INFO).
Ton memcpy devrait aussi marcher, si iplen vaut 16.
Sinon, je trouve ton code bien compliqué, et par ailleurs tu ne devrais pas faire
!= *"\0"pour contrôler la présence du caractère terminateur, mais
!= '\0'pour comparer un char au caractère
'\0'.
Dal
Bonjour Dal excuse moi de cette réponse tardive, j'ai du travailler sur un autre project non personnel.
- Si tu as uen manière plus rapide de récuprérer l'addresse IP d'une carte ethernet sans passer par GetAdapterInfo je suis prenneur tout de suite :p ( c'est la seule mannière que j'ai trouvé avec MSDN est mes connaissances )
- Et effectivement je me suis aperçus que c'étais un char 16, c'été indiquer sur MSDN dans la description , je ne comprenais pas l'annotation du char[4 4] peut-être 4x4 XD, en assembleur c beaucoup plus simple je trouve.
et j'en sui arriver à la même conculsion que toi, mais comme Firefox a crashé et à perdu ma session je ne peu plus le mettre en Résolu, je suis tomber sur le lien par hasard.
- Alors pour ça != *"\0" je suis tout a fait d'accord avec toi mes mon compilateur ( g++ ) refuse cette annotation.
Qu'est ce que tu trouve complqué ? mon code ce n'est pas les 3 codes que j'ai mis a la suite, se sont juste des exemples pour illustré mon problème.
le code il est la :
https://github.com/devGnode/Reverse_shell/blob/master/bind_reverse_cpp_v2/main.cpp
Je te remercie d'avoir prit de ton temps pour me répondre.
- Si tu as uen manière plus rapide de récuprérer l'addresse IP d'une carte ethernet sans passer par GetAdapterInfo je suis prenneur tout de suite :p ( c'est la seule mannière que j'ai trouvé avec MSDN est mes connaissances )
- Et effectivement je me suis aperçus que c'étais un char 16, c'été indiquer sur MSDN dans la description , je ne comprenais pas l'annotation du char[4 4] peut-être 4x4 XD, en assembleur c beaucoup plus simple je trouve.
et j'en sui arriver à la même conculsion que toi, mais comme Firefox a crashé et à perdu ma session je ne peu plus le mettre en Résolu, je suis tomber sur le lien par hasard.
- Alors pour ça != *"\0" je suis tout a fait d'accord avec toi mes mon compilateur ( g++ ) refuse cette annotation.
Qu'est ce que tu trouve complqué ? mon code ce n'est pas les 3 codes que j'ai mis a la suite, se sont juste des exemples pour illustré mon problème.
le code il est la :
https://github.com/devGnode/Reverse_shell/blob/master/bind_reverse_cpp_v2/main.cpp
Je te remercie d'avoir prit de ton temps pour me répondre.
Modifié le 31 déc. 2018 à 20:37
IP_ADPATER_INFO
IpAddressList est un pointeur vers IP_ADDR_STRING ou IpAddress est bien de type String IP_ADDRESS_STRING.
la structure IP_ADDRESS_STRING
est un char *String[4 4] ?
que vux dire cette annotation [4 4] ?