L’outil pktmon.exe disponible par défaut dans Windows 10 Pro permet de faire un peu de dump de paquet TCP.
Bien sûr, la solution de npcap/winpcap/wireshark est beaucoup plus performant, mais avec quelques commandes on peut extraire l’information utile. Je me concentre surtout sur la partie HTTP qui me permet de vérifier les échanges de données même si la limitation de pktmon à ne pas pouvoir fonctionner sur la boucle locale 127.0.0.1 est clairement une limitation pour moi.
Démarrons par ajouter un filtre sur le protocole TCP sur le port 80
C:\Windows\system32\pktmon.exe filter add -t TCP -p 80
On peut lister ces filtres avec la commande suivante
C:\Windows\system32\pktmon.exe filter list
Filtres de paquet :
# Nom Protocole Port
- --- --------- ----
1 <vide> TCP 80
Et pour démarrer la capture, on voit le rappel de la liste des paquets
C:\Windows\system32\pktmon.exe start --etw --pkt-size 0
Filtres de paquet :
# Nom Protocole Port
- --- --------- ----
1 <vide> TCP 80
Un fichier PktMon.etl va donc être fabriqué contenant les opérations que l’on fait avec son navigateur vers un port 80 d’un serveur web par exemple.
Mais je vous propose cette version du filtrage pour se concentrer sur la partie Web des requêtes :
C:\Windows\system32\pktmon.exe filter add Port80 -t TCP PSH -p 80 -m 00-AA-BB-CC-DD-EE
On ajoute un nom Port80 et on va récupérer que les paquets marqués TCP de type PUSH (codé PSH) sur le port 80 en provenance de la Mac Address de ma carte réseau 00-AA-BB-CC-DD-EE à remplacer par votre valeur.
Il suffit maintenant d’arrêter la capture est de convertir le fichier PktMon.etl en format lisible à moins d’utiliser l’outil d’analyse de Microsoft Network Monitor.
Le fichier ftp.txt est assez clair pour être lu et vérifier les packets TCP
C:\Windows\system32\pktmon.exe stop
C:\Windows\system32\pktmon.exe format PktMon.etl -o file.txt
Exemple d’accès sur un site web en méthode GET en regardant le contenu du fichier file.txt :
00-AA-BB-CC-DD-EE > 00-11-12-13-14-15, ethertype IPv4 (0x0800), length 457: 192.168.1.1.49676 > 213.186.33.2.80: Flags [P.], seq 2764848503:2764848906, ack 3028623659, win 513, length 403: HTTP: GET /accueil/?s=test HTTP/1.1
On peut retirer le filtre au besoin pour revenir dans l’état initial
C:\Windows\system32\pktmon.exe filter remove
On peut aussi exporter dans un format plus verbeux avec l’option de formatage etl2txt:
C:\Windows\system32\pktmon.exe etl2txt .\PktMon.etl v 3 -m -o file.txt
Cela va produire les entête HTTP des contenus des requêtes HTTP par exemple avec le fichier JavaScript suivant :
HTTP/1.1 200 OK
date: Wed, 23 Feb 2022 15:11:35 GMT
content-type: application/javascript
content-length: 229
server: Apache
last-modified: Tue, 10 Dec 2019 18:53:39 GMT
accept-ranges: bytes
cache-control: max-age=900
expires: Wed, 23 Feb 2022 15:26:35 GMT
vary: Accept-Encoding
x-iplb-request-id: C1339D28:28B3_D5BA2102:0050_62164EA7_6F6E:1CD33
x-iplb-instance: 29005
var $j = jQuery.noConflict();
$j(document).ready(function() {
// Toggle Single Bibtex entry
$j('a.papercite_toggle').click(function() {
$j( "#" + $j(this).attr("id") + "_block" ).toggle();
return false;
});
});
Ensuite on pourra utiliser les outils de développements des navigateurs pour une lecture plus simple, mais la liaison TPC/IP sur le contenu est clairement lisible avec cet outil fourni par défaut.
L’option suivante est soit de faire plus de réseau avec tcpdump ou wireshark qui sont dédiés aux couches réseaux soit de partir en développement web avec les outils embarqués dans les navigateurs Web.
La partie que je chercherai à ajouter prochainement, est la capture de la boucle locale via des outils tierce comme indiqué sur cette page : https://wiki.wireshark.org/CaptureSetup/Loopback
Je pense que cette option semble prometteuse même si je n’arrive pas encore à la faire fonctionner : https://web.archive.org/web/20150726062624/http://ig2600.blogspot.com/2011/03/powershell-script-to-enable-windows-to.html