Articles of filter

如何在Red Hat上过滤远程Syslog消息?

我在运行Red Hat 6的服务器上使用统一日志,从其他服务器接收定向日志消息,并使用RSyslogpipe理它们。 到目前为止,/ etc/rsyslog.conf有这个规则: if $fromhost-ip startswith '172.20.' then /var/log/mylog.log 但是我不想logging包含“kernel”和“dnat”的消息,所以我想过滤所有消息,增强规则。 我怎样才能做到这一点?

是否有可能从日志中删除一些键值对?

我有一个nginx日志文件,看起来类似于这个: { "@timestamp": "2013-09-03T14:21:51-04:00", "@fields": { "remote_addr": "xxxxxxxxxxxx", "remote_user": "-", "body_bytes_sent": "5", "request_time": "0.000", "status": "200", "request": "POST foo/bar/1 HTTP/1.1", "request_body": "{\x22id\x22: \x22460\x22, \x22source_id\x22: \x221\x22, \x22email_address\x22: \x22foo@bar.com\x22, \x22password\x22: \x2JQ6I\x22}", "request_method": "POST", "request_uri": "foo/bar/1", "http_referrer": "-", "http_user_agent": "Java/1.6.0_27" } } 我想知道是否有可能使用logstashfilter发送日志,看起来类似于这样的: {"@fields": { "request": "POST foo/bar/1 HTTP/1.1", "request_body": "{\x22id\x22: \x22460\x22, \x22source_id\x22: \x221\x22, \x22email_address\x22: \x22foo@bar.com\x22, \x22password\x22: \x2JQ6I\x22}"} […]

awk – 用另外2个文件过滤一个文件

$ cat arquivo1.txt 6|1000|121|999 1|1000|2000|3001 2|1000|2000|3001 3|2000|11|11 4| 100|22|1 5|1000|2000|4000 1000|10|11|12 $ cat arquivo2.txt 5 1000 7 $ cat arquivo3.txt 20 我想从arquivo1.txt输出第二个字段(arquivo1.txt)不在arquivo2.txt中的所有行,第二个字段(arquivo1.txt)的子string(前2个字符)不在arquivo3.txt中。 在这个例子中,输出将是: 4| 100|22|1 1000|10|11|12 所以,我做了arquivo2.txt的filter: $ awk -F'|' 'FNR==NR { a[$1]; next } !($2 in a)' arquivo2.txt arquivo1.txt 我做了arquivo3.txt的filter: $ awk -F'|' 'FNR==NR { a[$1]; next } !(substr($2,1,2) in a)' arquivo3.txt arquivo1.txt 是否有可能在一行代码中包含这些命令? […]

文件筛选器驱动程序页面文件

我有一个文件filter驱动程序应该在特定情况下不允许文件/目录访问。 我使用IoRegisterFsRegistrationChange来获取有关文件系统更改的通知,并附加到适当的卷设备对象。 它通常是一个传递filter。 它唯一处理的是IRP_MJ_CREATE (实际上不允许某些types的文件/目录访问)。 所有其他IRP和快速I / O请求只传递给底层设备。 除了一件事情,它工作正常。 如果驱动程序在系统启动时加载( SERVICE_SYSTEM_START ) – 因为我不太明白系统页面文件被禁用。 用户login后会显示“性能选项”popup对话框。 虚拟内存分页文件被禁用(这是什么触发这个对话框popup恕我直言)。 如果驱动程序在后期dynamic加载 – 没有明显问题,一切正常。 我试图禁用处理IRP_MJ_CREATE (只是像所有其他请求传递),但没有任何改变。 我明白,通常很难说在没有看到代码的情况下问题出在哪里。 但无论如何,这是一个已知的问题? 我应该检查什么? 这是不是以适当的方式传递某些请求的症状,或者将设备对象附加到卷设备对象的偶然事实可能会导致这样的问题? 欢迎所有可能的想法。 提前致谢。

为什么我的64位微filter驱动程序安装在SysWOW64 \ drivers文件夹中?

我是Windows设备驱动程序的新手。 我目前的任务是采取现有的32位微型filter驱动程序,并将其移植到64位Windows。 我的开发环境是Windows 7/64位,Visual Studio 2012 Ultimate,DDK 7600.16385.1和SDK 7.1A。 安装包是使用InstallShield 2013创build的setup.exe。 我已经find了一些关于将驱动程序移植到64位的文档,但这都是关于代码问题的。 我一直没有find一个白痴的指导,涵盖了你可能不得不改变的一切的一步一步的指示,所以我决定采取天真的尝试,看看会发生什么的方法,只是重新编译64位,有一个例外,那就是代码签名,因为我在某处读过Win64要求签名的驱动程序。 使用DDKBuild.cmd的驱动程序项目的预先存在的版本,我修改了Win64平台的属性,以在构build命令行上指定../scripts/build.cmd -WNETAMD64 free $(OutDir) 。 编译和链接是成功的。 我修改了InstallShield项目来取代签名的64位代码文件,而不是32位代码。 安装似乎在64位系统(Win2008 R2)上成功运行。 有一个在安装过程中运行的两行脚本: rundll32.exe setupapi,InstallHinfSection DefaultInstall 132 .\xxxxxflt.inf fltmc load xxxxxflt 我们应用程序的其余部分实际上是Java,它对一些DLL进行了一些JNI调用,其中一个调用了FilterLoad() 。 (顺便说一句,JVM和DLLs保持32位,但我的理解是,32位代码应该能够通过FilterLoad()加载64位驱动程序,请纠正我,如果我错了)。FilterLoad()是ERROR_FILE_NOT_FOUND,这使我注意到,如上面在问题中所述,xxxxxxflt.sys文件已被复制到SysWOW64 \驱动程序而不是System32 \ drivers。 我知道这是错误的,因为Win64是相反的,所以System32是64位的东西应该去的地方,而SysWOW64是32位的东西应该去的地方。 我不知道的是为什么它结束了。 .inf文件中是否需要进行更改以将其识别为64位驱动程序? 在InstallShield项目中,我可能需要做什么才能让它在64位引擎中构build64位安装程序或运行脚本? 脚本是否必须要强制使用64位版本的rundll32? 别的,也许?

Minifilter驱动程序:如何replace打开的文件内容?

我有一个顶级微filter驱动程序和一个用户模式的服务,这与Scanner MSDN示例类似。 我想要我的用户模式服务来replaceA.txt文件内容,当它在记事本中打开。 因此,在IRP_MJ_CREATE操作后callbackIRP_MJ_CREATE我向服务发送通知,并等待它向文件写入新的数据。 但服务无法打开A.txt ,因为它已被记事本locking。 如何让我的服务在不使用内核FltWriteFile的情况下写入数据? 这样做的最好方法是什么? 也许取消文件打开,让服务写入数据,并重新打开相同的参数,而不离开后操作callback? 也许我应该覆盖在预操作期望的访问? — 任何信息将不胜感激。 如果您认为这个问题缺乏细节,请让我知道。

微filter:阻止通知的应用程序

我正在写一个微filter来阻止应用程序的执行。 微filter将请求IRP_MJ_CREATE到用户模式应用程序的文件扫描。 用户模式应用程序将扫描是否允许执行PE文件(.exe / .dll / etc)或否。 目前,当用户模式应用程序显示“否”时,微filter将发出拒绝访问状态,并取消打开的文件。 (是的,使用FltCancelFileOpen ) 发出访问被拒绝返回值的问题是,从用户的angular度来看,他们会从系统中得到一个消息框,如下所示: 另一个例子,阻止特定的dll被加载,另一个消息框将出现: 我想完成的是仍然否认公开,但抑制消息框,并有我自己的通知,这是一个用户友好的错误消息,指示应用程序被阻止。 例子就像Windows 8智能屏幕function,它会通知用户,当运行被阻止的exe文件没有任何消息框说拒绝访问或类似。 我怎样才能做到这一点?

如何从WDK 8.1多士炉驱动程序安装KMDFfilter驱动程序?

我正在通过检查WDK 8.1 多士炉示例驱动程序来学习Windows驱动程序开发。 我可以构build,安装,debugging和与KMDF总线和KMDFfunction驱动程序通信。 我遇到的问题是安装KMDFfilter驱动程序。 我尝试使用devcon来安装筛选器驱动程序,但它总是失败。 任何帮助,将不胜感激。 主机系统 : Windows 8.1 Pro x64 构build:Visual Studio 2013 Pro和WDK 8.1 debugging:WinDbg(命名pipe道) 目标系统(虚拟机) : Windows 8.1企业评估 内核debugging和testing签名,启用 安装:devcon

如何设置和查询NDIS虚拟微型端口驱动程序的组播地址?

我想添加多播支持虚拟Miniport驱动程序。 我有一个筛选器驱动程序绑定在每个物理网卡上。 按照Microsoft文档 https://msdn.microsoft.com/en-us/library/windows/hardware/ff569073(v=vs.85).aspx 我盯着添加支持多播地址: 这些是我的步骤:在微型端口驱动程序中:在miniport initialization期间,我在NDIS_MINIPORT_ADAPTER_GENERAL_ATTRIBUTES添加了MaxMulticastListSize = 32 。 NDIS_MINIPORT_ADAPTER_GENERAL_ATTRIBUTES MiniportAdapterGeneralAttributes; MiniportAdapterGeneralAttributes.MediaType = NdisMedium802_3; MiniportAdapterGeneralAttributes.PhysicalMediumType = NdisPhysicalMediumUnspecified; MiniportAdapterGeneralAttributes.MaxMulticastListSize = 32; 我还更新了OID_802_3_MAXIMUM_LIST_SIZE OID中的32个最大地址。 接下来我更新了PacketFilters MiniportAdapterGeneralAttributes.SupportedPacketFilters = NDIS_PACKET_TYPE_DIRECTED | NDIS_PACKET_TYPE_MULTICAST | NDIS_PACKET_TYPE_BROADCAST | NDIS_PACKET_TYPE_PROMISCUOUS | NDIS_PACKET_TYPE_ALL_MULTICAST; 在OID_GEN_CURRENT_PACKET_FILTER OID设置请求期间,我用DATA.SET_INFORMATION.InformationBuffer值更新了PacketFilters。 和OID_GEN_MAC_OPTION我在添加macros: NDIS_MAC_OPTION_NO_LOOPBACK | NDIS_MAC_OPTION_FULL_DUPLEX | NDIS_MAC_OPTION_8021P_PRIORITY ; NDIS_MAC_OPTION_NO_LOOPBACK | NDIS_MAC_OPTION_FULL_DUPLEX | NDIS_MAC_OPTION_8021P_PRIORITY ; 接下来在OID_802_3_MULTICAST_LIST OID设置请求中,我维护了一个多播列表 OidRequest->DATA.SET_INFORMATION.BytesNeeded = 6; […]

我可以挂起IRP_MJ_WRITE和IRP_MJ_READ使用FltQueueDeferredIoWorkItem?

我正在写一个文件系统微filter驱动程序,将监视IRP_MJ_CREATE,IRP_MJ_CLOSE,IRP_MJ_READ和IRP_MJ_WRITE操作。 我必须以这样的方式实现它,当我的预callback函数被调用的时候,我需要从用户程序得到一个input,以允许还是阻止我计划的操作(对于所选文件的列表)使用FltQueueDeferredIoWorkItem和FltCompletePendedPreOperation()。 我写了一个示例,我的Preopcallback函数执行以下操作(作为testing) – 分配工作项 – 调用FltQueueDeferredIoWorkItem并将其排队 – 将CompletionContext设置为NULL – 返回FLT_PREOP_PENDING 我的延迟IOcallback例程将创build一个logging(我的自定义types从非分页池),从PFLT_CALLBACK_DATA复制细节,并将其传递给Completioncontext参数,并返回状态FLT_PREOP_SUCCESS_WITH_CALLBACK。 这工作正常,如果我只监视IRP_MJ_CREATE。 如果我注册IRP_MJ_WRITE / READ / CLOSE的前后操作例程,它只能运行几秒钟,然后我的机器会冻结。 在Pre-Create例程中,我不应该像这样为IRP_MJ_WRITE / READ / CLOSE挂起IO吗?