一、目录结构
Base | 提供一些数据收集和调试打印的功能 |
Common | 提供一些链表、字符串结构、位域、调试、错误打印、时间戳、线程操作等功能 |
Dummy | 无 |
Null | 提供了分析数据的功能,跟ssl目录中的analyze部分很像,还不明白具体的用处 |
Ssl | 对tcp连接的往返数据进行顺序解析https的过程 |
Win32 | window平台编译使用 |
二、内容介绍
对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 ={ struct proto_mod_ ssl_mod = { |
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() |