libnids study

本文介绍了NIDS网络入侵检测系统的实现原理与核心组件。详细解释了main()函数的工作流程,包括初始化、注册回调函数及运行等过程。此外,还深入解析了nids_params结构体的各参数配置及其作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先是main()函数,格式是:

int main ()

{

if (!nids_init ())

{

fprintf(stderr,"%s/n",nids_errbuf);

exit(1);

}

nids_register_tcp (tcp_callback);//registration of callback functions

nids_run ();

// not reached in normal situation

return 0;

}

nids_init()初始话抓包的应用程序,基于全局变量nids_params,格式如下:

struct nids_prm {
    int    n_tcp_streams;//
Size of the hash table used for storing TCP connection information, defult 1024
    int    n_hosts;          // Size of the hash table used for storing IP defragmentation information. Default value: 256
    char    *device;/* Interface to monitor. Default value: NULL (in which case an appropriate device is determined automatically). If this variable is assigned value all , libnids will attempt to capture packets on all interfaces (which works on Linux only) */
    char    *filename;
//call pcap_open_offline with this variable as the argument
    int    sk_buff_size;
    int    dev_addon;
    void    (*syslog)(int type, int err, struct ip *iph, void *data);
    int    syslog_level;
    int    scan_num_hosts;
    int    scan_num_ports;
    int    scan_delay;
    void    (*no_mem)(void);
    int    (*ip_filter)(struct ip *iph);
    char    *pcap_filter;
    int    promisc;
    int    one_loop_less;
    int    pcap_timeout;
    int    multiproc;
    int    queue_limit;
    int    tcp_workarounds;
    pcap_t    *pcap_desc;
} nids_params;


 


sk_buff_size
Size of struct sk_buff (used for queuing packets), which should be set to match the value on the hosts being monitored. Default value: 168
dev_addon
Number of bytes in struct sk_buff reserved for link-layer information. Default value: -1 (in which case an appropriate offset if determined automatically based on link-layer type)
syslog
Syslog callback function, used to report unusual conditions, such as port scan attempts, invalid TCP header flags, etc. Default value: nids_syslog (which logs messages via syslog (3) without regard for message rate per second or free disk space)
syslog_level
Log level used by nids_syslog for reporting events via syslog (3) . Default value: LOG_ALERT
scan_num_hosts
Size of hash table used for storing portscan information (the maximum number portscans that will be detected simultaneously). If set to 0, portscan detection will be disabled. Default value: 256
scan_num_ports
Minimum number of ports that must be scanned from the same source host before it is identifed as a portscan. Default value: 10
scan_delay
Maximum delay (in milliseconds) between connections to different ports for them to be identified as part of a portscan. Default value: 3000
no_mem
Out-of-memory callback function, used to terminate the calling process gracefully.
ip_filter
IP filtering callback function, used to selectively discard IP packets, inspected after reassembly. If the function returns a non-zero value, the packet is processed; otherwise, it is discarded. Default value: nids_ip_filter (which always returns 1)
pcap_filter
pcap (3) filter string applied to the link-layer (raw, unassembled) packets. Note : filters like ''tcp dst port 23'' will NOT correctly handle appropriately fragmented traffic, e.g. 8-byte IP fragments; one should add "or (ip[6:2] & 0x1fff != 0)" at the end of the filter to process reassembled packets. Default value: NULL
promisc
If non-zero, libnids will set the interface (s) it listens on to promiscuous mode. Default value: 1
one_loop_less
Disabled by default; see comments in API.html file
pcap_timeout
Sets the pcap read timeout, which may or may not be supported by your platform. Default value: 1024.
multiproc
If nonzero, creates a separate thread for packets processing. See API.html. Default value: 0.
queue_limit
If multiproc is nonzero, this is the maximum number of packets queued in the thread which reads packets from libpcap. Default value: 20000
tcp_workarounds
Enables extra checks for faulty implementations of TCP such as the ones which allow connections to be closed despite the fact that there should be retransmissions for lost packets first (as stated by RFC 793, section 3.5). If non-zero, libnids will set the NIDS_TIMED_OUT state for savagely closed connections. Default value: 0
pcap_desc
It this variable is set, libnids will call neither pcap_open_live nor pcap_open_offline, but will use a pre-opened PCAP descriptor; use this with nids_pcap_handler() in order to interactively feed packets to libnids. Default value: NULL

内容概要:本文档提供了关于“微型车间生产线的设计与生产数据采集试验研究”的毕业设计复现代码,涵盖从论文结构生成、机械结构设计、PLC控制系统设计、生产数据采集与分析系统、有限元分析、进度管理、文献管理和论文排版系统的完整实现。通过Python代码和API调用,详细展示了各个模块的功能实现和相互协作。例如,利用SolidWorks API设计机械结构,通过PLC控制系统模拟生产流程,使用数据分析工具进行生产数据的采集和异常检测,以及利用进度管理系统规划项目时间表。 适合人群:具有机械工程、自动化控制或计算机编程基础的学生或研究人员,尤其是从事智能制造领域相关工作的人员。 使用场景及目标:①帮助学生或研究人员快速搭建和理解微型车间生产线的设计与实现;②提供完整的代码框架,便于修改和扩展以适应不同的应用场景;③作为教学或科研项目的参考资料,用于学习和研究智能制造技术。 阅读建议:此资源不仅包含详细的代码实现,还涉及多个学科领域的知识,如机械设计、电气控制、数据分析等。因此,在学习过程中,建议读者结合实际操作,逐步理解每个模块的功能和原理,并尝试调整参数以观察不同设置下的系统表现。同时,可以参考提供的文献资料,深入研究相关理论和技术背景。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值