https传输过程嗅探
C1->浏览器告知服务器自身的信息 length = 165 a5 16 03 01 00 A0 01 00 00 9C 03 03 5E 1C 37 CD 40 [ ^ 7 @] B6 4A 9A 1A BC 43 85 2D 91 6E 24 D1 CB 98 D2 67 [ J C - n$ g] 30 7B B9 34 F6 34 14 51 89 62 26 00 00 16 C0 2B [0{ 4 4 Q b& +] C0 2F C0 0A C0 09 C0 13 C0 14 00 33 00 39 00 2F [ / 3 9 /] 00 35 00 0A 01 00 00 5D FF 01 00 01 00 00 0A 00 [ 5 ] ] 08 00 06 00 17 00 18 00 19 00 0B 00 02 01 00 00 [ ] 23 00 00 33 74 00 00 00 10 00 17 00 15 02 68 32 [# 3t h2] 08 73 70 64 79 2F 33 2E 31 08 68 74 74 70 2F 31 [ spdy/3.1 http/1] 2E 31 00 05 00 05 01 00 00 00 00 00 0D 00 16 00 [.1 ] 14 04 01 05 01 06 01 02 01 04 03 05 03 06 03 02 [ ] 03 04 02 02 02 [ ] S1->服务器下发证书、公钥和加密算法 length = 706 2c2 16 03 01 00 4A 02 00 00 46 03 01 5A 27 B5 7C 7F [ J F Z' |] 22 90 0E 44 C7 1B 5E C2 9C C7 36 7D 98 4D 2B BE [" D ^ 6} M+ ] C6 22 A1 77 D2 05 C1 F6 DE 40 E3 20 DD 67 0B 73 [ " w @ g s] DB 42 F0 6E 0C BA 1C 10 8C 91 92 89 9D 71 BC 2D [ B n q -] BF 42 3F D4 5A EB 0A C4 F5 F6 F9 FB 00 35 00 16 [ B? Z 5 ] 03 01 02 65 0B 00 02 61 00 02 5E 00 02 5B 30 82 [ e a ^ [0 ] 02 57 30 82 01 C0 02 09 00 F4 8B D0 DD AC D8 6F [ W0 o] 34 30 0D 06 09 2A 86 48 86 F7 0D 01 01 05 05 00 [40 * H ] 30 70 31 0B 30 09 06 03 55 04 06 13 02 43 4E 31 [0p1 0 U CN1] 0B 30 09 06 03 55 04 08 13 02 53 48 31 0B 30 09 [ 0 U SH1 0 ] 06 03 55 04 07 13 02 53 48 31 0C 30 0A 06 03 55 [ U SH1 0 U] 04 0A 13 03 4E 42 45 31 0B 30 09 06 03 55 04 0B [ NBE1 0 U ] 13 02 52 44 31 0E 30 0C 06 03 55 04 03 13 05 6C [ RD1 0 U l] 69 75 79 69 31 1C 30 1A 06 09 2A 86 48 86 F7 0D [iuyi1 0 * H ] 01 09 01 16 0D 61 64 6D 69 6E 40 6E 62 65 2E 63 [ admin@nbe.c] 6F 6D 30 1E 17 0D 31 37 31 32 30 36 30 32 35 30 [om0 1712060250] 34 38 5A 17 0D 31 38 31 32 30 36 30 32 35 30 34 [48Z 18120602504] 38 5A 30 70 31 0B 30 09 06 03 55 04 06 13 02 43 [8Z0p1 0 U C] 4E 31 0B 30 09 06 03 55 04 08 13 02 53 48 31 0B [N1 0 U SH1 ] 30 09 06 03 55 04 07 13 02 53 48 31 0C 30 0A 06 [0 U SH1 0 ] 03 55 04 0A 13 03 4E 42 45 31 0B 30 09 06 03 55 [ U NBE1 0 U] 04 0B 13 02 52 44 31 0E 30 0C 06 03 55 04 03 13 [ RD1 0 U ] 05 6C 69 75 79 69 31 1C 30 1A 06 09 2A 86 48 86 [ liuyi1 0 * H ] F7 0D 01 09 01 16 0D 61 64 6D 69 6E 40 6E 62 65 [ admin@nbe] 2E 63 6F 6D 30 81 9F 30 0D 06 09 2A 86 48 86 F7 [.com0 0 * H ] 0D 01 01 01 05 00 03 81 8D 00 30 81 89 02 81 81 [ 0 ] 00 A7 46 00 8F 11 C0 C4 3D A8 88 56 40 2B 7F 99 [ F = V@+ ] CC 21 6E 5B C4 53 D9 4E 0A DC 10 1E A3 64 83 F2 [ !n[ S N d ] B6 33 A5 62 D3 5D 7A E3 38 DD FD 51 58 6F AE D4 [ 3 b ]z 8 QXo ] 8D F5 32 30 2C 4E 0F 2E 92 2F EE A3 98 07 2D CA [ 20,N . / - ] 8A 07 05 F3 1C 6B FC EE 35 E3 E2 77 B0 60 55 07 [ k 5 w `U ] 6B 81 F7 99 3A FA A3 AF 19 4C 27 10 02 28 D5 7D [k : L' ( }] 67 8B A8 E9 04 22 CB 95 56 D9 9B B7 6A 15 45 ED [g " V j E ] 54 19 13 15 E8 DA 99 25 06 21 07 95 A7 6C B5 D1 [T % ! l ] 59 02 03 01 00 01 30 0D 06 09 2A 86 48 86 F7 0D [Y 0 * H ] 01 01 05 05 00 03 81 81 00 68 61 4B A2 EC 7B CC [ haK { ] 0E 04 78 19 F4 B0 DE 09 86 9F D8 B0 2E DE AD C2 [ x . ] AF 76 12 79 80 0E F3 A3 50 01 D3 87 8C 4D 89 1D [ v y P M ] AD 1B 60 C3 4F 15 13 A3 C9 1B AB AA 72 29 45 77 [ ` O r)Ew] 49 FC 79 06 C5 79 D6 5D F1 09 46 5F 3F C3 AF ED [I y y ] F_? ] F1 24 1A 7C BA 1E 5B 1C FE AB B0 E7 8F 49 26 23 [ $ | [ I&#] C5 32 6F 17 53 8E 49 71 BF 54 FD AA 3B 03 AE EC [ 2o S Iq T ; ] C8 D8 90 12 AE C3 21 6D BE 24 B9 1D E6 DE 06 81 [ !m $ ] EA 70 91 CF 58 73 60 D2 14 16 03 01 00 04 0E 00 [ p Xs` ] 00 00 [ ] C2->浏览器用公钥加密传输密钥,上送给服务器 length = 198 c6 16 03 01 00 86 10 00 00 82 00 80 30 04 3F FB AF [ 0 ? ] 54 7B 01 CE EC 7E 60 EC 48 62 14 4E DF 78 EC 90 [T{ ~` Hb N x ] E3 15 68 20 C6 E5 68 D5 2C B1 16 05 D7 3E F5 C8 [ h h , > ] 55 F8 41 BD 54 C5 B5 C9 36 21 B8 EE E0 F7 66 E7 [U A T 6! f ] 44 FA A8 95 5F 27 DB AB A8 81 45 36 11 D4 22 F2 [D _' E6 " ] 05 05 60 5A 7D 28 C8 1E 01 92 F5 A1 A1 BB 7C D7 [ `Z}( | ] 43 2C DE D9 F1 74 6B C7 97 85 DA C0 6D 16 B5 97 [C, tk m ] 68 0A 7E 63 EF 05 94 E7 3B E7 75 17 D2 2D D7 55 [h ~c ; u - U] 14 D9 42 96 3D 1E 1D DD EE 7D 90 14 03 01 00 01 [ B = } ] 01 16 03 01 00 30 CD 3B 22 66 59 E0 F6 68 87 D4 [ 0 ;"fY h ] 01 86 13 4D 7E 07 60 55 22 1C FB BC F7 C6 14 32 [ M~ `U" 2] 00 94 A9 42 FC 82 D3 FA 63 49 06 56 75 7F 89 CF [ B cI Vu ] F9 F2 EC 91 82 2B [ +] S2->服务器用私钥解开传输密钥,并给回应给浏览器 length = 59 3b 14 03 01 00 01 01 16 03 01 00 30 C4 D9 08 B1 08 [ 0 ] 28 EC D5 64 55 00 E6 32 72 A7 3C B0 85 47 D4 E1 [( dU 2r < G ] 20 1F CD 71 D1 1C 24 44 19 77 94 F1 7C B9 E0 58 [ q $D w | X] D8 8F 2A D1 29 DD 77 F6 F0 24 F2 [ * ) w $ ] C2->用传输密钥加密信息,和服务器通信 length = 490 1ea 17 03 01 00 20 13 7C 08 03 8A 88 EC 4E 92 2D 73 [ | N -s] 39 A6 06 46 9F 29 7C 0A AA 06 67 8B 2F 0B BF 98 [9 F )| g / ] 8C 95 C3 EF 16 17 03 01 01 C0 2D 04 CA E0 F9 A4 [ - ] 4D DB 77 49 5B 7A E8 B9 E2 E7 24 EA D6 07 33 35 [M wI[z $ 35] B4 9F EE 16 54 C0 06 AF FC 0A B1 25 F9 AE 8D B1 [ T % ] 61 C2 5E 9F 3A 8A 55 25 51 18 39 88 68 4F 25 05 [a ^ : U%Q 9 hO% ] 33 EB 1E 14 7B 73 57 B5 1D 1F 04 17 28 15 82 56 [3 {sW ( V] FF 9B 2E 3D 9E 9C 49 2D 93 66 E1 D1 A2 7B D2 22 [ .= I- f { "] C7 54 08 FE B3 E4 93 AC 36 78 B0 8E 34 54 48 73 [ T 6x 4THs] 72 9C 43 83 9B A6 06 3F 9B CA 97 10 FB 1F 20 A9 [r C ? ] 51 B1 F4 05 23 68 5B DF 06 C5 5D C8 7D D3 21 80 [Q #h[ ] } ! ] 29 BD 36 CC 11 73 D7 CE 4D 03 86 78 DF E5 65 66 [) 6 s M x ef] 0A 53 D5 A0 47 EA AC A7 60 59 BD 41 8C 99 A5 E8 [ S G `Y A ] 3B D5 56 91 75 D7 B1 C4 0E 5F 61 B7 29 6E 62 86 [; V u _a )nb ] F3 89 90 0F 86 A9 18 92 2E 94 E8 20 AA 3D 13 D1 [ . = ] EE 2C 59 03 D3 0E 22 02 F7 67 77 64 AB C1 31 82 [ ,Y " gwd 1 ] 33 D5 27 85 77 BC 1D 5D 8C 31 1F 6E 0B 43 7F E8 [3 ' w ] 1 n C ] E0 CD 95 7E 98 DA 50 1F 75 9C 9B 68 8B E5 77 6E [ ~ P u h wn] F5 2B B2 5D 47 04 67 9F FE 7D 6A E0 73 0D C6 A7 [ + ]G g }j s ] 52 4D 2E D7 9F 26 D6 48 97 E6 B9 22 1D E3 7C A4 [RM. & H " | ] 3C D7 BB 56 AF 29 2A FE 24 01 96 01 34 0F CF E9 [< V )* $ 4 ] E7 EF 9A 31 0A 90 CB A6 D4 79 CC 30 88 B2 F4 3D [ 1 y 0 =] 69 DA D1 F4 0D 8F 38 40 C1 48 5F 34 35 55 91 FA [i 8@ H_45U ] FD D5 DE 4A 12 EB 66 D1 C9 7C B0 7C 1D F6 1F 45 [ J f | | E] CA C3 7E 0C BE DB 92 37 9D D0 98 83 89 D3 24 1F [ ~ 7 $ ] 31 88 7E 8C 2D 29 0F D1 B3 D5 C6 6D 0E 6D 83 1A [1 ~ -) m m ] B2 0E 2E DF A1 D5 A2 6A 5B 80 A5 39 03 92 AD 89 [ . j[ 9 ] DE 7B E5 2F F6 85 B4 D1 98 1D 80 F6 7B 55 51 1A [ { / {UQ ] B6 72 21 B5 05 0C 22 58 10 7A B9 4C F4 FC 6C 82 [ r! "X z L l ] 67 FB E9 CE 33 65 AF 92 75 D4 DA D0 7A 11 91 AB [g 3e u z ] CC 0A 50 E8 C3 62 2D BB DD 60 [ P b- `] S2->用传输密钥加密信息,回应给浏览器 (是不是压缩了?) length = 213 d5 17 03 01 00 D0 3D 9F DD F5 C4 C2 11 E8 89 49 C7 [ = I ] 2E CF CF 73 74 36 D8 F2 01 F7 A6 FF 53 44 56 0A [. st6 SDV ] 72 6F A5 C5 96 0B FC AC CA B8 E3 D9 78 CE 28 3B [ro x (;] 49 3D 31 53 4C 3B 5E E0 C1 D8 6A A6 CA CB D5 0B [I=1SL;^ j ] E8 06 5B B4 99 38 59 EC D8 6E 39 88 32 FC FA 1B [ [ 8Y n9 2 ] 71 70 1D 41 E6 57 D5 41 CF E8 24 D1 6F CC E0 43 [qp A W A $ o C] 04 19 67 A4 D8 E4 4E 38 57 84 1D 3A 8F F3 84 E7 [ g N8W : ] 2D CD 1A 0B 5C D2 DB 3B 81 5D 89 C6 1F 53 BE 28 [- \ ; ] S (] C3 22 A8 60 26 25 8B 88 9F 43 F5 65 7D 92 B2 02 [ " `&% C e} ] FF 4D 22 F4 F5 31 FD 3D FA 69 EB 2B 8A 4C 96 9C [ M" 1 = i + L ] 0B C1 DE E4 F1 C8 DD 1B 75 86 58 EE 06 99 9F C1 [ u X ] 16 6F 41 88 CC 80 47 58 B4 12 06 85 D5 7C 25 47 [ oA GX |%G] 08 AE 78 0D F0 7C D6 B3 7D 4C 90 98 02 85 5E 9B [ x | }L ^ ] 6F F3 D0 94 FA [o ]
#include <stdio.h> #include <Winsock2.h> #pragma comment(lib, "ws2_32.lib") #define HEX_LINE 16 void print_hex(char *data, int len) { printf("length = %d %x\n",len,len); int i,j; char *p = data; char vision[HEX_LINE+1]; int seg; for(i=0;i<len;i+=HEX_LINE) { seg = i+HEX_LINE > len ? len - i : HEX_LINE; memset(vision,0,sizeof(vision)); memcpy(vision,p+i,seg); for(j=0;j<seg;j++){ printf("%02X ",(unsigned char)vision[j]); if(vision[j]<0x20) vision[j] = ' '; } printf("[%s]\n",vision); } } int main() { WORD wVersionRequested; WSADATA wsaData; int err; wVersionRequested = MAKEWORD( 1, 1 ); err = WSAStartup( wVersionRequested, &wsaData ); if ( err != 0 ) { return 0; } if ( LOBYTE( wsaData.wVersion ) != 1 || HIBYTE( wsaData.wVersion ) != 1 ) { WSACleanup( ); return 0; } SOCKET sockSrv=socket(AF_INET,SOCK_STREAM,0); SOCKADDR_IN addrSrv; addrSrv.sin_addr.S_un.S_addr=htonl(INADDR_ANY); addrSrv.sin_family=AF_INET; addrSrv.sin_port=htons(8080); bind(sockSrv,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR)); listen(sockSrv,5); SOCKADDR_IN addrClient; int len=sizeof(SOCKADDR); SOCKET sockClient=socket(AF_INET,SOCK_STREAM,0); SOCKADDR_IN addrSrvClient; addrSrvClient.sin_addr.S_un.S_addr=inet_addr("172.28.250.184"); addrSrvClient.sin_family=AF_INET; addrSrvClient.sin_port=htons(1443); connect(sockClient,(SOCKADDR*)&addrSrvClient,sizeof(SOCKADDR)); SOCKET sockConn=accept(sockSrv,(SOCKADDR*)&addrClient,&len); char recvBuf[1500]; int recvLen = recv(sockConn,recvBuf,1500,0); printf("C1->浏览器告知服务器自身的信息\n"); print_hex(recvBuf,recvLen); send(sockClient,recvBuf,recvLen,0); recvLen = recv(sockClient,recvBuf,1500,0); printf("S1->服务器下发证书、公钥和加密算法\n"); print_hex(recvBuf,recvLen); send(sockConn,recvBuf,recvLen,0); //2.接收对称密钥 printf("C2->浏览器用公钥加密传输密钥,上送给服务器\n"); recvLen = recv(sockConn,recvBuf,1500,0); print_hex(recvBuf,recvLen); send(sockClient,recvBuf,recvLen,0); recvLen = recv(sockClient,recvBuf,1500,0); printf("S2->服务器用私钥解开传输密钥,并给回应给浏览器\n"); print_hex(recvBuf,recvLen); send(sockConn,recvBuf,recvLen,0); //3.数据传输 printf("C2->用传输密钥加密信息,和服务器通信\n"); recvLen = recv(sockConn,recvBuf,1500,0); print_hex(recvBuf,recvLen); send(sockClient,recvBuf,recvLen,0); recvLen = recv(sockClient,recvBuf,1500,0); printf("S2->用传输密钥加密信息,回应给浏览器\n"); print_hex(recvBuf,recvLen); send(sockConn,recvBuf,recvLen,0); closesocket(sockConn); closesocket(sockClient); return 0; }