首页 > 其他分享 >2788647047_process_packet_2

2788647047_process_packet_2

时间:2024-08-14 14:08:47浏览次数:6  
标签:src HTTP process dst packet 2788647047 TCP 解析 port

在函数 `_process_packet` 中,这段代码的功能是处理TCP协议的数据包,并执行一系列的分析和日志记录。这段代码是函数的一部分,用于处理捕获到的单个原始IP层数据包。
代码中的 `try` 块尝试执行以下操作:
1. **解析TCP头部**:
- `src_port, dst_port, _, _, doff_reserved, flags = struct.unpack("!HHLLBB", ip_data[iph_length:iph_length + 14])`: 使用 `struct.unpack` 函数解析TCP头部,提取源端口、目的端口、数据偏移量、保留字段和标志位。
2. **处理SYN标志**:
- `if flags == 2: # SYN set (only)`: 如果TCP标志位中只有SYN标志,则进行特殊处理。
- `_ = _last_syn`: 保存当前SYN包的时间戳和相关信息。
- `_last_syn = (sec, src_ip, src_port, dst_ip, dst_port)`: 更新全局变量 `_last_syn` 为当前SYN包的时间戳和相关信息。
- `if _ == _last_syn: # skip bursts`: 如果当前SYN包与上一次检测到的SYN包相同,则跳过,避免重复检测。
3. **检查目标IP地址是否在轨迹中**:
- `if dst_ip in trails or addr_port(dst_ip, dst_port) in trails:`: 如果目标IP地址或目标IP地址与端口的组合在轨迹中,则记录事件。
4. **更新连接源和目标信息**:
- `if config.USE_HEURISTICS:`: 如果启用了启发式分析,则更新连接源和目标信息。
- `_connect_src_dst[key].add(dst_port)`: 将目标端口添加到连接源和目标信息中。
- `_connect_src_details[key].add((sec, usec, src_port, dst_port))`: 添加时间戳、源端口、目标端口到连接源和目标信息中。
5. **解析HTTP请求**:
- `if tcp_data.startswith("HTTP/"):`: 如果TCP数据开始于 "HTTP/",则解析HTTP请求。
- `if " HTTP/" in tcp_data:`: 如果TCP数据中包含 " HTTP/",则解析HTTP请求。
- `if method and path:`: 如果解析出HTTP方法(如GET或POST)和路径,则继续处理。
6. **记录HTTP请求事件**:
- `log_event((sec, usec, src_ip, src_port, dst_ip, dst_port, PROTO.TCP, TRAIL.HTTP, trail, "sinkhole response (malware)", "(heuristic)"), packet)`: 记录HTTP请求事件,包括时间戳、源IP、源端口、目标IP、目标端口、协议类型、轨迹类型、轨迹描述和原始数据包。
7. **解析URL和POST数据**:
- `if url is None:`: 如果未解析出URL,则继续尝试解析。
- `if "://" in path:`: 如果路径中包含 "://",则解析URL和POST数据。
8. **检查域名是否在轨迹中**:
- `if _check_domain_whitelisted(path.split('/')[2]):`: 如果域名在白名单中,则继续处理。
9. **更新轨迹信息**:
- `_path_src_dst[key].add(_path)`: 将路径添加到轨迹信息中。
- `_path_src_dst_details[key].add((sec, usec, src_port, dst_port, path))`: 添加时间戳、源端口、目标端口和路径到轨迹信息中。
函数的总体功能是解析TCP协议的数据包,并执行一系列的分析和日志记录。这包括解析TCP头部、处理SYN标志、解析HTTP请求、记录HTTP请求事件、解析URL和POST数据,以及检查域名是否在轨迹中。如果检测到可疑活动,函数会记录事件,并将相关信息存储在轨迹信息中。

标签:src,HTTP,process,dst,packet,2788647047,TCP,解析,port
From: https://www.cnblogs.com/JLPeng/p/18358837

相关文章

  • 2788647047_process_packet_3
    key="codeexecution"ifkeynotin_local_cache:_local_cache[key]=next(_[1]for_inSUSPICIOUS_HTTP_REQUEST_REGEXESif"codeexecution"in_[0])ifre.sea......
  • 2788647047_process_packet_4
    elifprotocol==socket.IPPROTO_UDP:#UDP_=ip_data[iph_length:iph_length+4]iflen(_)<4:returnsrc_port,dst_port=struct.unpack("!HH",_)_=_last_udp_last_u......
  • 2788647047_process_packet_5
    \iftype_notin(12,28)andclass_==1:#Typenotin(PTR,AAAA),ClassINifaddr_port(dst_ip,dst_port)intrails:trail=addr_port(dst_ip,dst_port)......
  • 2788647047_6
    elifconfig.USE_HEURISTICS:iford(dns_data[2:3])&0x80:#standardresponseiford(dns_data[3:4])==0x80:#recursionavailable,noerror_=offset+5......
  • 2788647047_process_packet_1
    在函数`_process_packet`中,IPv4和IPv6的处理代码如下:```pythonifip_version==0x04:#IPv4ip_header=struct.unpack("!BBHHHBBH4s4s",ip_data[:20])fragment_offset=ip_header[4]&0x1fffiffragment_offset!=0:returniph_lengt......
  • GUI编程process4
    1、GUI编程(AWT,Swing)图形界面编程元素:窗口,弹窗,面板,文本框,列表框,按钮,图片,监听时间,鼠标,键盘事件,破解工具2、简介Gui的核心技术:Wing和AWT,因为界面不美观,需要jre环境AWT(AbstractWindowToolkit)是‌Java中最早的图形用户界面开发包,而Swing是在AWT的基础上构建的。Swing组件......
  • Android Studio报错: A problem occurred starting process command ,CreateProcess er
    AndroidStudio报错:Aproblemoccurredstartingprocesscommand,CreateProcesserror=2,系统找不到指定的文件一、遇到问题二、解决问题重新下载了22.0.7026061和22.1.7171670只在cmake.dir中修改了路径(ndk.dir中修改了路径[未尝试])clean+SyncProject,OK了!......
  • IO流process3
    1、IO流(JDKAPI1.6.0中文版)I:intput输入O:output输出流:内存与存储设备之间传输数据的通道流的分类:按方向:输入流——将<内存设备>中的内容读入到<内存>中​输出流——将<内存>中的内容读入到<内存内存设备>中按单位:字节流——以字......
  • 聚焦IOC容器刷新环节postProcessBeanFactory(BeanFactory后置处理)专项
    目录一、IOC容器的刷新环节快速回顾二、postProcessBeanFactory源码展示分析(一)模版方法postProcessBeanFactory(二)AnnotationConfigServletWebServerApplicationContext调用父类的postProcessBeanFactory包扫描注解类注册(三)postProcessBeanFactory主要功能三、调用父......
  • yum和rpm安装的Jenkins启动报错"Job for jenkins.service failed because the control
    jenkins卸载方式servicejenkinsstopyumcleanallyum-yremovejenkinsfind/-inamejenkins|xargs-n500rm-rf#文件名称符合name的文件。iname会忽略大小写#xargs命令可以将管道或标准输入(stdin)数据转换成命令行参数,也能够从文件的输出中读取数......