ssldump0.9b3版本的源码分析

一、目录结构

Base提供一些数据收集和调试打印的功能
Common

提供一些链表、字符串结构、位域、调试、错误打印、时间戳、线程操作等功能

Dummy
Null

提供了分析数据的功能,跟ssl目录中的analyze部分很像,还不明白具体的用处

Ssl对tcp连接的往返数据进行顺序解析https的过程
Win32window平台编译使用

二、内容介绍

   对Dummy、Null、Win32部分不介绍,只介绍以下部分:

   2.1 Base部分

common.c文件主要有一个xdump函数,打印十六进制数值
Debug.c文件主要有一个debug函数,打印到stderr
Network.c文件

函数如下:

network_handler_create()里调用了mod->vtbl->create_ctx()

network_handler_destroy()释放handler

network_process_packet()中有一个process_tcp_packet()函数来处理tcp的包数据

packet_copy()获取tcp头后面的真实数据

packet_destroy()释放packet结构的包

timestamp_diff()计算时间间隔

lookuphostname()通过gethostbyaddr()来转换hostname

Pcap-snoop.c文件

函数如下:

pcap_cb()调用network_process_packet()来处理包数据

main()函数先处理ssldump后的选项,然后调用pcap相关api来获取数据,然后调用network_handler_create(),最后调用pcap_loop处不断循环调用pcap_cb来处理数据

print_utils.c文件包含explain()和exdump()两个函数
Proto_mod.c文件

函数如下:

create_proto_handler()调用了mod->vtbl->create()

destroy_proto_handler()调用了(*handlerp)->vtbl->destroy()

tcpconn.c文件

函数如下:

tcp_find_conn()根据saddr、sport、daddr、dport查找到conn对象

tcp_create_conn()被new_connection()调用来创建conn对象并插入list中

tcp_destroy_conn()从list中删掉释放一些资源

free_tcp_segment_queue()

copy_tcp_segment_queue()调用packet_copy拷贝包

tcppack.c文件

函数如下:

process_tcp_packet()处理tcp的包,函数中会调用

          process_data_segment()来处理segment数据

new_connection()调用tcp_create_conn()创建tcp_conn对象,调用create_proto_handler()创建proto_mod对象

process_data_segment()调用packet_copy()来拷贝数据,然后调用conn->analyzer->vtbl->data()来分析数据

print_tcp_packet()调用lookuphostname()来转换ip,打印tcp的流程包,如ACK,FIN,SYN,RST,PUSH,URG等

   2.2 Common部分

debug.c文件包含debug()和xdump()函数
r_assoc.c文件

函数如下:

r_assoc_create()

r_assoc_destroy()调用了destroy_assoc_chain()

destroy_assoc_chain()释放资源

copy_assoc_chain()

r_assoc_fetch_bucket()

r_assoc_fetch()

r_assoc_insert()

r_assoc_copy()

r_assoc_init_iter()

r_assoc_iter()

r_assoc_iter_delete()

hash_compute()

r_assoc_test.c文件测试r_assoc.c文件中的api
r_bitfield.c文件

函数如下:

r_bitfield_create()

r_bitfield_destroy()

r_bitfield_set()

r_bitfield_isset()

r_data.c文件

函数如下:

r_data_create()

r_data_alloc()

r_data_make()

r_data_destroy()

r_data_copy()

r_data_zfree()

r_data_compare()

r_errors.c文件

函数如下:

verr_exit()

r_list.c文件

函数如下:

r_list_create()

r_list_destroy()

r_list_copy()

r_list_insert()

r_list_append()

r_list_init_iter()

r_list_iter()

r_replace.c文件strdup()
r_time.c文件

函数如下:

gettimeofday()

r_timeval_diff()

r_timeval_add()

r_timeval2int()

r_gettimeint()

pthread.c文件线程相关

   2.3 Ssl部分

ciphersuites.c文件包含一个CipherSuites结构体和一个ssl_find_cipher()函数
main.c
ssl.enums.c

ContentType_decoder结构体包含四个函数:

     decode_ContentType_ChangeCipherSpec()

     decode_ContentType_Alert()

     decode_ContentType_Handshake()

     decode_ContentType_application_data()

HandshakeType_decoder结构体包含以下函数:

     decode_HandshakeType_HelloRequest()

     decode_HandshakeType_ClientHello()

     decode_HandshakeType_ServerHello()

     decode_HandshakeType_Certificate()

     decode_HandshakeType_ServerKeyExchange()

     decode_HandshakeType_CertificateRequest()

     decode_HandshakeType_ServerHelloDone()

     decode_HandshakeType_CertificateVerify()

     decode_HandshakeType_ClientKeyExchange()

     decode_HandshakeType_Finished()

AlertLevel_decoder结构体包含以下函数:

     decode_AlertLevel_warning()

     decode_AlertLevel_fatal()

AlertDescription_decoder结构体包含以下函数:

     decode_AlertDescription_close_notify()

     decode_AlertDescription_unexpected_message()

     decode_AlertDescription_bad_record_mac()

     decode_AlertDescription_decryption_failed()

     decode_AlertDescription_record_overflow()

     decode_AlertDescription_decompression_failure()

     decode_AlertDescription_handshake_failure()

     decode_AlertDescription_bad_certificate()

     decode_AlertDescription_unsupported_certificate()

     decode_AlertDescription_certificate_revoked()

     decode_AlertDescription_certificate_expired()

     decode_AlertDescription_certificate_unknown()

     decode_AlertDescription_certificate_unknown()

     decode_AlertDescription_certificate_unknown()

     decode_AlertDescription_access_denied()

     decode_AlertDescription_decode_error()

     decode_AlertDescription_decrypt_error()

     decode_AlertDescription_export_restriction()

     decode_AlertDescription_protocol_version()

     decode_AlertDescription_insufficient_security()

     decode_AlertDescription_internal_error()

     decode_AlertDescription_user_canceled()

     decode_AlertDescription_no_renegotiation()

client_certificate_type_decoder结构体包含以下函数:

     decode_client_certificate_type_rsa_sign()

     decode_client_certificate_type_dss_sign()

     decode_client_certificate_type_rsa_fixed_dh()

     decode_client_certificate_type_dss_fixed_dh()

ssldecode.c

函数如下:

    password_cb()

    ssl_decode_ctx_create()

    ssl_decoder_create()

    ssl_set_client_random()

    ssl_set_server_random()

    ssl_process_server_session_id()

    ssl_process_change_cipher_spec()

    ssl_decode_record()

    ssl_create_session_lookup_key()

    ssl_restore_session()

    ssl_save_session()

    ssl_process_client_key_exchange()

    tls_P_hash()

    tls_prf()

    ssl3_generate_export_iv()

    ssl3_prf()

    ssl_generate_keying_material()

    

sslprint.c文件

函数如下:

     process_beginning_plaintext()

     process_v2_hello()

     ssl_decode_switch()

     ssl_expand_record()

     ssl_decode_uintX()

     ssl_decode_opaque_array()

     ssl_lookup_enum()

     ssl_decode_enum()

     ssl_print_enum()

     explain()

     exdump()

     combodump()

     print_data()

     ssl_print_direction_indicator()

     ssl_print_timestamp()

     ssl_print_record_num()

     ssl_print_cipher_suite()

sslxprint.c

函数如下:

     sslx_print_certificate()

     sslx_print_dn()

     sslx__print_dn()

     sslx__print_serial()

ssl_analyze.c

函数如下:

     parse_ssl_flag()

     parse_ssl_flags()

     create_ssl_ctx()

     create_ssl_analyzer()

     destroy_ssl_analyzer()

     free_r_queue()

     create_r_queue()

     read_ssl_record()

     read_data()

     data_ssl_analyzer()

     print_ssl_header()

     print_ssl_record()

     close_ssl_analyzer()

主要的结构体:

static struct proto_mod_vtbl_ ssl_vtbl ={
     parse_ssl_flags,
     parse_ssl_flag,
     create_ssl_ctx,
     create_ssl_analyzer,
     destroy_ssl_analyzer,
     data_ssl_analyzer,
     close_ssl_analyzer,
};

struct proto_mod_ ssl_mod = {
     0,
     &ssl_vtbl
};

ssl_enum.c

ContentType_decoder结构体包含的函数:

     decode_ContentType_change_cipher_spec()

     decode_ContentType_alert()

     decode_ContentType_handshake()

     decode_ContentType_application_data()

HandshakeType_decoder结构体包含的函数:

     decode_HandshakeType_hello_request()

     decode_HandshakeType_client_hello()

     decode_HandshakeType_server_hello()

     decode_HandshakeType_certificate()

     decode_HandshakeType_server_key_exchange()

     decode_HandshakeType_certificate_request()

     decode_HandshakeType_server_hello_done()

     decode_HandshakeType_certificate_verify()

     decode_HandshakeType_client_key_exchange()

     decode_HandshakeType_finished()

 

ssl_rec.c

函数如下:

     ssl_create_rec_decoder()

     ssl_destroy_rec_decoder()

     ssl_decode_rec_data()

     fmt_seq()

     tls_check_mac()

     ssl3_check_mac()

  

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值