DICOM通讯诊断工具
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
DICOM通讯诊断工具Post By:2006-3-17 15:55:43
最近几天做了DICOM通讯诊断个小工具,奉献给大家:)
下载地址:/yycnet/source/dcmSniffer.rar
dcmSniffer1.2 使用说明
程序介绍:dcmSniffer是一个DICOM通讯诊断工具.它采用旁路侦听方式无需参与DICOM通讯过程。
dcmSniffer可以记录双方的通讯,并进行DICOM解析然后打印输出
程序原理: 本程序支持下列两种旁路侦听并分析通讯协议方式
1、通过端口映射转发方式获取通讯包
这种方式是在映射SCP到另外的侦听端口上,参与通讯的SCU客户机访问映射服务而不直接访问
SCP,映射服务会将收到的数据包转发给原SCP,在转发的同时进行数据的记录和分析。
例如:假设胶片打印机(SCP)的IP是192.168.0.2,端口是5588,想要跟踪胶片打印通讯过程。
我们可以在网络的任意一个机器上运行dcmSniffer,例如192.168.0.10上运行。
将打印SCP
映射到192.168.0.10的106上,然后我们更改客户机上的胶片打印机的配置信息,将打印机的
IP地址和端口配成192.168.0.10和106就行了
优点: 适应任何网络
缺点: 需要更改通讯一方的配置,将客户机上的服务的IP地址指向运行dcmSniffer的机器的IP和映射的端口
2、sniffer嗅探方式
此种方式通过网络嗅探方式获取双方通讯的ip包,然后进行记录解析。
优点: 它无需更改通讯双方的任何配置
缺点: 不适应交换网络,现在大多数的网络基本上都是交换网络,因此无法在网络的任意机器上
嗅探。
只能在参与通讯的双方的任意机器上或在交换机的配置将所有的IP包转发给运行
嗅探的机器(不考虑采用ARP欺骗方式获取IP包)
1.2新增功能: sniffer方式可以记录原始IP包,然后进行离线分析。
用sniffer嗅探进行dicom通讯包分析的方式,由于需要进行IP->TCP->DICOM协议分析,如果网络流量很大
可能丢包,导致DICOM通讯协议记录不全。
1.2版本新增只记录原始ip包不解析的功能,记录完成后再针对原始ip包进行dicom解析
[2006-03-31]
增加将c-store传输的dicom保存为本地dicom文件
增加将胶片打印的图像数据保存为本地pix文件,见ini配置中sets配置命令说明
【程序运行】:
dcmSniffer是一个控制台应用程序,支持命令行参数和配置文件两种运行方式。
1、命令行方式
!!!!端口映射方式获取数据包并记录分析
dcmSniffer.exe -d <SCP_ip>:<SCP_port>-<mapped_port>
参数含义: SCP_ip 实际要映射的SCP服务的ip或域名。
SCP_port 实际要映射的SCP服务的端口
mapped_port 映射端口,即将此SCP映射到本机(dcmSniffer运行的机器)哪个端口上如果指定为0,则随机分配
例如映射上例中胶片打印服务,可在CMD命令行下输入:
dcmSniffer.exe -d 192.168.0.2:104-106
如果要将记录输出到指定的文件aa.log 可用管道,范例如下
dcmSniffer.exe -d 192.168.0.2:104-106 >> aa.log
!!!!嗅探方式获取数据包并记录分析
如果仅仅指定-d参数而不指定<SCP_ip>:<SCP_port>-<mapped_port>则以嗅探方式获取数据包并记录分析
范例如下:
dcmSniffer.exe -d
如果要将记录输出到指定的文件aa.log 可用管道,范例如下
dcmSniffer.exe -d >> aa.log
!!!!!1.2新增功能: sniffer方式可以记录原始IP包,然后进行离线分析。
嗅探并记录原始ip包,将原始ip包保存到ip.log文件中,范例如下:
dcmSniffer.exe -d -w ip.log
如果仅仅想记录特定机器的ip包,可在ini文件中配置sniff命令,指定过滤规则。
从原始ip记录包ip.log中分析并记录dicom通讯,范例如下:
dcmsniffer.exe -d -r ip.log
如果仅仅想分析并记录特定的dicom通讯,可在ini中配置sniff命令,指定记录的dicom通讯
2、配置ini文件方式
dcmSniffer支持ini配置文件,通过配置文件用户可以指定跟踪并记录哪些通讯以及过滤某些
机器的通讯,配置文件的名字是和程序同名但扩展名为ini的文件。
ini配置文件由程序支持的一系列配置命令组成,每行为一个配置命令。
如果行开头为!,说明此行为注释,不作解释。
关于支持的配置命令见下面的说明。
=====================begin==================
设置日志记录文件
命令格式:
sets [log=<日志输出文件>] [opentype=APPEND] savefile=TRUE
log=<日志输出文件> : 设置程序是否数促日志文件,如果不指定则不输出否则输出指定的日志文件opentype=APPEND : 设置程序启动时是否为追加写日志文件还是覆盖写,如果不设置此项则为覆盖写savefile=TRUE :将c-store传输的图像保存为本地dicom文件,将打印的图像数据保存为PIX文件
//PIX文件格式
//开头两字节为ZK,后6字节是图像的款高,以及存储位数,文件头共为0x24字节,再以后为原始图像数据
typedef struct tagZKPIXFILEHEADER {
WORD bfType; //ZK
WORD bfWidth;
WORD bfHeight;
WORD bfBits;
BYTE bfReserved[24];
DWORD bfSize; //图像数据大小
} ZKPIXFILEHEADER;
启动嗅探sniffer
命令格式:
sniff log=<DCM_STORE|DCM_WORKLIST|DCM_PRINT|DCM_PPS|DCM_QR> rules="<IP过滤规
则>,<IP过滤规则>,..."
log=<DCM_STORE|DCM_WORKLIST|DCM_PRINT|DCM_PPS|DCM_QR> : 指定要记录哪些通讯过程例如如果你仅仅想记录存储以及打印过程则可设置为DCM_STORE|DCM_PRINT
如果设置为DCM_ALL则记录所有的通讯过程
rules="<IP过滤规则>,<IP过滤规则>,..." : 设置IP过滤规则,IP过滤规则要用"括起。
用以设定要记录并分析的ip数据包。
如果有多个IP过滤规则则各个规则之间以,分割。
IP过滤规则格式含义如下:
<ip:port><方向><ip:port> RULETYPE_TCP <enabled>
<方向> : 此域可有下面三个值->,<-或<-> 指明数据的流向
<ip:port> : 指明数据的ip地址和端口。
如果端口为0则不判断端口,任何端口都符合.
如果ip地址设为0.0.0.0则不判断ip地址,任何地址都符合
<enabled> - true或者false ,如果指定true则符合此条件的记录并分析,否则不记录分析
例如:rules="192.168.1.0:0<->192.168.1.1:104 RULETYPE_TCP true"
上面的ip过滤规则指明记录并分析客户机地址为192.168.1.XXX的访问192.168.1.1机器104端口的双向ip数据包,即
同时记录192.168.1.1:104返回的响应数据包
例如:rules="192.168.1.5:0<->192.168.1.1:104 RULETYPE_TCP true"
上面的ip过滤规则指明记录并分析客户机地址为192.168.1.5的访问192.168.1.1机器104端口的双向i p数据包,即
同时记录192.168.1.1:104返回的响应数据包
例如:rules="192.168.1.5:0->192.168.1.1:104 RULETYPE_TCP true"
上面的ip过滤规则指明记录并分析客户机地址为192.168.1.5的访问192.168.1.1机器104端口的ip数据包,但不记录
192.168.1.1:104返回的响应数据包。
范例:
sniff log=DCM_ALL rules="192.168.1.5:0<->192.168.1.1:104 RULETYPE_TCP true"
映射指定的SCP服务
格式: maps app=<应用服务:端口> port=<映射到本地端口> log=<DCM_STORE|DCM_WORKLIST|DC M_PRINT|DCM_PPS|DCM_QR>
app=<应用服务:端口> : 指定要映射的SCP的ip和端口
port=<映射到本地端口> : 指定映射到本地的端口,如果设置为0则自动分配
log=<DCM_STORE|DCM_WORKLIST|DCM_PRINT|DCM_PPS|DCM_QR> : 指定要记录哪些通讯过程例如如果你仅仅想记录存储以及打印过程则可设置为DCM_STORE|DCM_PRINT
如果设置为DCM_ALL则记录所有的通讯过程
=================end===============================
例如映射上例中胶片打印服务,ini文件可如下配置,下面是dcmSniffer.ini文件中内容
!设置记录日志文件
sets log=print.log opentype=APPEND
!如果采用sniffer方式配置如下
sniff log=DCM_PRINT rules="0.0.0.0:0<->192.168.0.2:104 RULETYPE_TCP true"
!如果采用端口映射方式则配置如下
maps app=192.168.0.2:104 port=106 log=DCM_PRINT。