问题简述:
利用java的第三方库jpcap写抓包程序,求解怎么识别出http和https的数据包(就只要能判断出是http协议或https协议即可)。
测试的解法:
1.在tcp包(jpcap自带TCPPacket类比较方便识别tcp包)的基础上用80端口和443端口区分http和https,但是连tcp都识别成http或https了(不成功)。
2.设法找出http或https特有而tcp没有的字段,未能找出。
代码示意(未完成):
` else if(packet instanceof jpcap.packet.ICMPPacket) {
packetprocol = "ICMP";
r.addElement(packetprocol);
}
else if(packet instanceof jpcap.packet.TCPPacket) {
TCPPacket tcppacket = (TCPPacket)packet;
//if((tcppacket.src_port==80||tcppacket.dst_port==80)&&tcppacket.) {
packetprocol = "HTTP";
r.addElement(packetprocol);
}else if(tcppacket.src_port==443||tcppacket.dst_port==443) {
packetprocol = "HTTPS";
r.addElement(packetprocol);
}
else {
packetprocol = "TCP";
r.addElement(packetprocol);
}`
Solution temporaire :
Déterminez si le champ de données du paquet TCP capturé contient la chaîne "HTTP".
Inconvénients :
1. Après avoir comparé avec Wireshark, nous avons constaté que certains paquets TCP dans le champ de données de Wireshark ont HTTP et sont reconnus comme TCP au lieu de http (je ne sais pas comment Wireshark l'analyse).
2. On a l'impression que le jugement sera manqué et pas assez précis.
Continuez à chercher de meilleures solutions et attendez avec impatience les réponses !