This commit is contained in:
g3rzi
2022-07-31 14:15:49 +03:00
commit 772c784d9f
110 changed files with 249498 additions and 0 deletions
+66
View File
@@ -0,0 +1,66 @@
# CyberArk Community Code of Conduct
CyberArk is a leader in Privileged Access Management, thanks to its customers and community. We listen to our community and wish to provide additional relevant tools. We believe that our mission is best served in an environment that is friendly, safe, and accepting; free from intimidation or harassment.
Towards this end, CyberArks developers have created this Community Code of Conduct for the CyberArk open source community. Our Code of Conduct sets the standard for how developers, and community members can work together in a respectful and collaborative manner. Those who do not abide by this Code of Conduct will not be permitted to remain part of our community.
## Summary of Key Principles
- Be respectful to others in the community at all times.
- Report harassing or abusive behavior that you experience or witness at ReportAbuse@cyberark.com
- The CyberArk community will not tolerate abusive or disrespectful behavior towards its members; anyone engaging in such behavior will be suspended from the CyberArk community.
## Scope
This Code of Conduct applies to all members of the CyberArk community, including paid and unpaid agents, administrators, users, and customers of CyberArk. It applies in all CyberArk community venues, online and in person, including CyberArk Open Source project communities (such as public GitHub repositories, chat channels, social media, mailing lists, and public events) and in one-on-one communications pertaining to CyberArk affairs.
This policy covers the usage of CyberArk hosted services, as well as the CyberArk website, CyberArk related events, and any other services offered by or on behalf of CyberArk (collectively, the "Service").
This Code of Conduct is in addition to, and does not in any way nullify or invalidate, any other terms or conditions related to use of the Service.
## Maintaining a Friendly, Harassment-Free Space
We are committed to providing a friendly, safe and welcoming environment for all, regardless of gender identity, sexual orientation, ability, ethnicity, religion, age, physical appearance, body size, race, or similar personal characteristics.
We ask that you please respect that people have differences of opinion regarding technical choices, and that every design or implementation choice carries a trade-off and numerous costs. There is seldom a single right answer. A difference of technology preferences is not a license to be rude.
Harassing other users of the Service for any reason is never tolerated, whether via public or private media. Any spamming, trolling, flaming, baiting, or other attention-stealing behavior is not welcome, and will not be tolerated.
Even if your intent is not to harass or offend others, be mindful of how your comments might be perceived by others in the community.
## Unacceptable Behavior
The following behaviors are considered harassment under this Code of Conduct and are unacceptable within our community:
- Violence, threats of violence, or violent language directed against another person or group of people.
- Sexist, racist, homophobic, transphobic, ableist, or otherwise discriminatory jokes and language.
- Posting or displaying sexually explicit or violent material.
- Posting or threatening to post other peoples personally identifying information ("doxing").
- Personal insults, particularly those related to related to gender identity, sexual orientation, ability, ethnicity, religion, age, physical appearance, body size, race, or similar personal characteristics.
- Using offensive or harassing nicknames or other identifiers.
- Inappropriate photography or recording.
- Inappropriate physical contact. You should have someones consent before touching them.
- Unwelcome sexual attention. This includes: sexualized comments or jokes; inappropriate touching, groping, and unwelcome sexual advances.
- Deliberate intimidation, stalking, or following (online or in person).
- Sustained disruption of community events, including talks and presentations.
- Advocating for, or encouraging, any of the above behavior.
## Reporting Violations
If you witness or experience unacceptable behavior in the CyberArk community, please promptly report it to our team at ReportAbuse@cyberark.com. If this is the initial report of a problem, please include as much detail as possible. It is easiest for us to address issues when we have more context.
The CyberArk Community Team will look into any reported issues in a confidential manner and take any necessary actions to address and resolve the problem.
We will not tolerate any form of retaliation towards users who report these issues to us.
If you feel that you have been falsely or unfairly accused of violating this Code of Conduct by others in the community, you should notify the ReportAbuse@cyberark.com team so that we can address and resolve the accusation.
As always, if you have an urgent security issue, contact product_security@cyberark.com and if you have concerns about a potential copyright violation, contact legal@cyberark.com.
## Consequences
All content published to the Service, including user account credentials, is hosted at the sole discretion of the CyberArk administrators. If a community member engages in unacceptable behavior, the CyberArk administrators may take any action they deem appropriate, up to and including a temporary ban or permanent expulsion from the community without warning. In general, we will choose the course of action that we judge as being most in the interest of fostering a safe and friendly community.
## Contact Info
Please contact ReportAbuse@cyberark.com if you need to report a problem or address a grievance related to an abuse report.
You are also encouraged to contact us if you have questions about what constitutes appropriate and inappropriate content. We are happy to provide guidance to help you be a successful part of our community. Our technical community is available [here](https://cyberark-customers.force.com/s/).
## Credit and License
This Code of Conduct borrows from the [npm Code of Conduct](https://www.npmjs.com/policies/conduct), Stumptown Syndicate [Citizen's Code of Conduct](http://citizencodeofconduct.org/), and the [Rust Project Code of Conduct](https://www.rust-lang.org/conduct.html).
This document may be reused under a [Creative Commons Attribution-ShareAlike License](https://creativecommons.org/licenses/by-sa/4.0/).
File diff suppressed because it is too large Load Diff
+201
View File
@@ -0,0 +1,201 @@
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.
"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.
"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.
3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.
4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:
(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and
(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and
(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and
(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.
You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.
5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.
6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.
7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.
8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.
9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.
END OF TERMS AND CONDITIONS
APPENDIX: How to apply the Apache License to your work.
To apply the Apache License to your work, attach the following
boilerplate notice, with the fields enclosed by brackets "[]"
replaced with your own identifying information. (Don't include
the brackets!) The text should be enclosed in the appropriate
comment syntax for the file format. We also recommend that a
file or class name and description of purpose be included on the
same "printed page" as the copyright notice for easier
identification within third-party archives.
Copyright (c) 2022 CyberArk Software Ltd. All rights reserved.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
+211
View File
@@ -0,0 +1,211 @@
RPCMon is using the following open source components:
NtApiDotNet (https://github.com/googleprojectzero/sandbox-attacksurface-analysis-tools) : Apache License 2.0
(c) Google LLC. 2015 - 2021
Developed by James Forshaw
Apache License 2.0
======================
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.
"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.
"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.
3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.
4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:
(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and
(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and
(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and
(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.
You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.
5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.
6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.
7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.
8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.
9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.
END OF TERMS AND CONDITIONS
APPENDIX: How to apply the Apache License to your work.
To apply the Apache License to your work, attach the following
boilerplate notice, with the fields enclosed by brackets "[]"
replaced with your own identifying information. (Don't include
the brackets!) The text should be enclosed in the appropriate
comment syntax for the file format. We also recommend that a
file or class name and description of purpose be included on the
same "printed page" as the copyright notice for easier
identification within third-party archives.
Copyright [yyyy] [name of copyright owner]
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
@@ -0,0 +1,58 @@
<?xml version="1.0" encoding="utf-8"?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<None Condition="Exists('$(MSBuildThisFileDirectory)..\lib\native\x86\KernelTraceControl.dll')" Include="$(MSBuildThisFileDirectory)..\lib\native\x86\KernelTraceControl.dll">
<Link>x86\KernelTraceControl.dll</Link>
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
<Visible>False</Visible>
</None>
<None Condition="Exists('$(MSBuildThisFileDirectory)..\lib\native\x86\KernelTraceControl.Win61.dll')" Include="$(MSBuildThisFileDirectory)..\lib\native\x86\KernelTraceControl.Win61.dll">
<Link>x86\KernelTraceControl.Win61.dll</Link>
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
<Visible>False</Visible>
</None>
<None Condition="Exists('$(MSBuildThisFileDirectory)..\lib\native\x86\msdia140.dll')" Include="$(MSBuildThisFileDirectory)..\lib\native\x86\msdia140.dll">
<Link>x86\msdia140.dll</Link>
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
<Visible>False</Visible>
</None>
<None Condition="Exists('$(MSBuildThisFileDirectory)..\lib\native\amd64\KernelTraceControl.dll')" Include="$(MSBuildThisFileDirectory)..\lib\native\amd64\KernelTraceControl.dll">
<Link>amd64\KernelTraceControl.dll</Link>
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
<Visible>False</Visible>
</None>
<None Condition="Exists('$(MSBuildThisFileDirectory)..\lib\native\amd64\msdia140.dll')" Include="$(MSBuildThisFileDirectory)..\lib\native\amd64\msdia140.dll">
<Link>amd64\msdia140.dll</Link>
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
<Visible>False</Visible>
</None>
<!-- There are no static references to these so I need to copy them explicitly.
The first two COM interop assemblies so they are the same for all targets, I pick netstandard1.6 pretty arbitraily
OSExtensions is also the same for all targets. It needs to be copied for the dev-time case since in that case it runs the DLLs from the .nuget cache
by default, and OSExtensions needs to be in the right relative location with respect to the native DLLs (since it loads them via relative path).
-->
<None Condition="Exists('$(MSBuildThisFileDirectory)..\lib\netstandard1.6\TraceReloggerLib.dll')" Include="$(MSBuildThisFileDirectory)..\lib\netstandard1.6\TraceReloggerLib.dll">
<Link>TraceReloggerLib.dll</Link>
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
<Visible>False</Visible>
</None>
<None Condition="Exists('$(MSBuildThisFileDirectory)..\lib\netstandard1.6\Dia2Lib.dll')" Include="$(MSBuildThisFileDirectory)..\lib\netstandard1.6\Dia2Lib.dll">
<Link>Dia2Lib.dll</Link>
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
<Visible>False</Visible>
</None>
<!-- you have to pick the right version of this DLL because it depends on things besides System.Runtime.dll -->
<None Condition="'$(TargetFrameworkIdentifier)' != '.NETFramework' AND Exists('$(MSBuildThisFileDirectory)..\lib\netstandard1.6\OSExtensions.dll')" Include="$(MSBuildThisFileDirectory)..\lib\netstandard1.6\OSExtensions.dll">
<Link>OSExtensions.dll</Link>
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
<Visible>False</Visible>
</None>
<None Condition="'$(TargetFrameworkIdentifier)' == '.NETFramework' AND Exists('$(MSBuildThisFileDirectory)..\lib\net45\OSExtensions.dll')" Include="$(MSBuildThisFileDirectory)..\lib\net45\OSExtensions.dll">
<Link>OSExtensions.dll</Link>
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
<Visible>False</Visible>
</None>
</ItemGroup>
</Project>
Binary file not shown.
+20
View File
@@ -0,0 +1,20 @@
The MIT License (MIT)
Copyright (c) 2007 James Newton-King
Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the "Software"), to deal in
the Software without restriction, including without limitation the rights to
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
the Software, and to permit persons to whom the Software is furnished to do so,
subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Binary file not shown.
Binary file not shown.
File diff suppressed because it is too large Load Diff
Binary file not shown.
File diff suppressed because it is too large Load Diff
Binary file not shown.
File diff suppressed because it is too large Load Diff
Binary file not shown.
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
Binary file not shown.

After

Width:  |  Height:  |  Size: 8.7 KiB

Binary file not shown.
Binary file not shown.
Binary file not shown.
File diff suppressed because it is too large Load Diff
Binary file not shown.
File diff suppressed because it is too large Load Diff
+42
View File
@@ -0,0 +1,42 @@
[![GitHub release][release-img]][release]
[![License][license-img]][license]
<img src="https://github.com/cyberark/RPCMon/blob/assets/RPCMonLogo.png" width="260">
A GUI tool for scanning RPC communication through Event Tracing for Windows (ETW).
The tool was published as part of a research on RPC communication between the host and a Windows container.
## Overview
RPCMon can help researchers to get a high level view over an RPC communication between processes. It was built like Procmon for easy usage, and uses James Forshaw .NET library for RPC. RPCMon can show you the RPC functions being called, the process who called them, and other relevant information.
RPCMon uses a hardcoded RPC dictionary for fast RPC information processing which contains information about RPC modules. It also have an option to build an RPC database so it will be updated from your computer in case some details are missing in the hardcoded RPC dictionary.
## Usage
Double click the EXE binary and you will get the GUI Windows.
RPCMon needs a DB to be able to get the details on the RPC functions, without a DB you will have missing information.
To load the DB, press on `DB -> Load DB...` and choose your DB. You can a DB we added to this project: `/DB/RPC_UUID_Map_Windows10_1909_18363.1977.rpcdb.json`.
## Features
* A detailed overview of RPC functions activity.
* Build an RPC database to parse RPC modules or use hardcoded database.
* Filter\highlight rows based on cells.
* Bold specific rows.
## Demo
https://user-images.githubusercontent.com/11998736/165285471-e143eebd-bfbf-49a2-8e70-107f083c60fc.mp4
## License
Copyright (c) 2022 CyberArk Software Ltd. All rights reserved
This repository is licensed under Apache-2.0 License - see [`LICENSE`](LICENSE) for more details.
## References:
For more comments, suggestions or questions, you can contact Eviatar Gerzi ([@g3rzi](https://twitter.com/g3rzi)) and CyberArk Labs.
[release-img]: https://img.shields.io/github/release/cyberark/RPCMon.svg
[release]: https://github.com/cyberark/RPCMon/releases
[license-img]: https://img.shields.io/github/license/cyberark/RPCMon.svg
[license]: https://github.com/cyberark/RPCMon/blob/master/LICENSE
+25
View File
@@ -0,0 +1,25 @@
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 15
VisualStudioVersion = 15.0.28307.1259
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "RPCMon", "RPCMon\RPCMon.csproj", "{9DE6BB01-5955-4EE7-BD74-B47AEC15EFBB}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{9DE6BB01-5955-4EE7-BD74-B47AEC15EFBB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{9DE6BB01-5955-4EE7-BD74-B47AEC15EFBB}.Debug|Any CPU.Build.0 = Debug|Any CPU
{9DE6BB01-5955-4EE7-BD74-B47AEC15EFBB}.Release|Any CPU.ActiveCfg = Release|Any CPU
{9DE6BB01-5955-4EE7-BD74-B47AEC15EFBB}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {3E5F2A9C-F3C4-44CA-BA75-CD69F673F609}
EndGlobalSection
EndGlobal
+6
View File
@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1" />
</startup>
</configuration>
+268
View File
@@ -0,0 +1,268 @@
namespace RPCMon
{
partial class ColumnFilter
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.label1 = new System.Windows.Forms.Label();
this.comboBoxSearchByColumn = new System.Windows.Forms.ComboBox();
this.comboBoxRelation = new System.Windows.Forms.ComboBox();
this.comboBoxValue = new System.Windows.Forms.ComboBox();
this.listViewColumnFilters = new System.Windows.Forms.ListView();
this.columnHeaderColumn = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
this.columnHeaderRelation = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
this.columnHeaderValue = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
this.columnHeaderAction = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
this.comboBoxAction = new System.Windows.Forms.ComboBox();
this.buttonOK = new System.Windows.Forms.Button();
this.buttonCancel = new System.Windows.Forms.Button();
this.buttonAdd = new System.Windows.Forms.Button();
this.buttonRemove = new System.Windows.Forms.Button();
this.labelThen = new System.Windows.Forms.Label();
this.buttonReset = new System.Windows.Forms.Button();
this.SuspendLayout();
//
// label1
//
this.label1.AutoSize = true;
this.label1.Location = new System.Drawing.Point(12, 9);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(205, 13);
this.label1.TabIndex = 0;
this.label1.Text = "Display entried matching these conditions:";
//
// comboBoxSearchByColumn
//
this.comboBoxSearchByColumn.BackColor = System.Drawing.SystemColors.Window;
this.comboBoxSearchByColumn.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.comboBoxSearchByColumn.FormattingEnabled = true;
this.comboBoxSearchByColumn.Items.AddRange(new object[] {
"PID",
"TID",
"ProcessName",
"UUID",
"Module",
"ModulePath",
"ProceduresCount",
"Service",
"Function",
"NetworkAddress",
"Protocol",
"Endpoint",
"Options",
"AuthenticationLevel",
"AuthenticationService",
"ImpersonationLevel"});
this.comboBoxSearchByColumn.Location = new System.Drawing.Point(12, 25);
this.comboBoxSearchByColumn.Name = "comboBoxSearchByColumn";
this.comboBoxSearchByColumn.Size = new System.Drawing.Size(121, 21);
this.comboBoxSearchByColumn.TabIndex = 1;
//
// comboBoxRelation
//
this.comboBoxRelation.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.comboBoxRelation.FormattingEnabled = true;
this.comboBoxRelation.Items.AddRange(new object[] {
"contains",
"is",
"begins with",
"ends with"});
this.comboBoxRelation.Location = new System.Drawing.Point(140, 26);
this.comboBoxRelation.Name = "comboBoxRelation";
this.comboBoxRelation.Size = new System.Drawing.Size(87, 21);
this.comboBoxRelation.TabIndex = 2;
//
// comboBoxValue
//
this.comboBoxValue.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.comboBoxValue.FormattingEnabled = true;
this.comboBoxValue.Location = new System.Drawing.Point(244, 25);
this.comboBoxValue.Name = "comboBoxValue";
this.comboBoxValue.Size = new System.Drawing.Size(412, 21);
this.comboBoxValue.TabIndex = 3;
//
// listViewColumnFilters
//
this.listViewColumnFilters.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.listViewColumnFilters.CheckBoxes = true;
this.listViewColumnFilters.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] {
this.columnHeaderColumn,
this.columnHeaderRelation,
this.columnHeaderValue,
this.columnHeaderAction});
this.listViewColumnFilters.HideSelection = false;
this.listViewColumnFilters.Location = new System.Drawing.Point(15, 85);
this.listViewColumnFilters.Name = "listViewColumnFilters";
this.listViewColumnFilters.Size = new System.Drawing.Size(776, 312);
this.listViewColumnFilters.TabIndex = 4;
this.listViewColumnFilters.UseCompatibleStateImageBehavior = false;
this.listViewColumnFilters.View = System.Windows.Forms.View.Details;
this.listViewColumnFilters.MouseDoubleClick += new System.Windows.Forms.MouseEventHandler(this.listViewColumnFilters_MouseDoubleClick);
//
// columnHeaderColumn
//
this.columnHeaderColumn.Text = "Column";
this.columnHeaderColumn.Width = 92;
//
// columnHeaderRelation
//
this.columnHeaderRelation.Text = "Relation";
//
// columnHeaderValue
//
this.columnHeaderValue.Text = "Value";
//
// columnHeaderAction
//
this.columnHeaderAction.Text = "Action";
//
// comboBoxAction
//
this.comboBoxAction.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.comboBoxAction.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.comboBoxAction.FormattingEnabled = true;
this.comboBoxAction.Items.AddRange(new object[] {
"Include",
"Exclude"});
this.comboBoxAction.Location = new System.Drawing.Point(704, 25);
this.comboBoxAction.Name = "comboBoxAction";
this.comboBoxAction.Size = new System.Drawing.Size(84, 21);
this.comboBoxAction.TabIndex = 5;
//
// buttonOK
//
this.buttonOK.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
this.buttonOK.Location = new System.Drawing.Point(623, 415);
this.buttonOK.Name = "buttonOK";
this.buttonOK.Size = new System.Drawing.Size(75, 23);
this.buttonOK.TabIndex = 6;
this.buttonOK.Text = "OK";
this.buttonOK.UseVisualStyleBackColor = true;
this.buttonOK.Click += new System.EventHandler(this.buttonOK_Click);
//
// buttonCancel
//
this.buttonCancel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
this.buttonCancel.Location = new System.Drawing.Point(713, 415);
this.buttonCancel.Name = "buttonCancel";
this.buttonCancel.Size = new System.Drawing.Size(75, 23);
this.buttonCancel.TabIndex = 7;
this.buttonCancel.Text = "Cancel";
this.buttonCancel.UseVisualStyleBackColor = true;
this.buttonCancel.Click += new System.EventHandler(this.buttonCancel_Click);
//
// buttonAdd
//
this.buttonAdd.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.buttonAdd.Location = new System.Drawing.Point(623, 56);
this.buttonAdd.Name = "buttonAdd";
this.buttonAdd.Size = new System.Drawing.Size(75, 23);
this.buttonAdd.TabIndex = 8;
this.buttonAdd.Text = "Add";
this.buttonAdd.UseVisualStyleBackColor = true;
this.buttonAdd.Click += new System.EventHandler(this.buttonAdd_Click);
//
// buttonRemove
//
this.buttonRemove.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.buttonRemove.Location = new System.Drawing.Point(713, 56);
this.buttonRemove.Name = "buttonRemove";
this.buttonRemove.Size = new System.Drawing.Size(75, 23);
this.buttonRemove.TabIndex = 9;
this.buttonRemove.Text = "Remove";
this.buttonRemove.UseVisualStyleBackColor = true;
this.buttonRemove.Click += new System.EventHandler(this.buttonRemove_Click);
//
// labelThen
//
this.labelThen.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.labelThen.AutoSize = true;
this.labelThen.Location = new System.Drawing.Point(662, 28);
this.labelThen.Name = "labelThen";
this.labelThen.Size = new System.Drawing.Size(28, 13);
this.labelThen.TabIndex = 10;
this.labelThen.Text = "then";
//
// buttonReset
//
this.buttonReset.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.buttonReset.Location = new System.Drawing.Point(15, 56);
this.buttonReset.Name = "buttonReset";
this.buttonReset.Size = new System.Drawing.Size(75, 23);
this.buttonReset.TabIndex = 11;
this.buttonReset.Text = "Reset";
this.buttonReset.UseVisualStyleBackColor = true;
this.buttonReset.Click += new System.EventHandler(this.buttonReset_Click);
//
// ColumnFilter
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(800, 450);
this.Controls.Add(this.buttonReset);
this.Controls.Add(this.labelThen);
this.Controls.Add(this.buttonRemove);
this.Controls.Add(this.buttonAdd);
this.Controls.Add(this.buttonCancel);
this.Controls.Add(this.buttonOK);
this.Controls.Add(this.comboBoxAction);
this.Controls.Add(this.listViewColumnFilters);
this.Controls.Add(this.comboBoxValue);
this.Controls.Add(this.comboBoxRelation);
this.Controls.Add(this.comboBoxSearchByColumn);
this.Controls.Add(this.label1);
this.Name = "ColumnFilter";
this.ShowIcon = false;
this.Text = "RPCMon Filter";
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private System.Windows.Forms.Label label1;
private System.Windows.Forms.ComboBox comboBoxSearchByColumn;
private System.Windows.Forms.ComboBox comboBoxRelation;
private System.Windows.Forms.ComboBox comboBoxValue;
private System.Windows.Forms.ListView listViewColumnFilters;
private System.Windows.Forms.ColumnHeader columnHeaderColumn;
private System.Windows.Forms.ColumnHeader columnHeaderRelation;
private System.Windows.Forms.ColumnHeader columnHeaderValue;
private System.Windows.Forms.ColumnHeader columnHeaderAction;
private System.Windows.Forms.ComboBox comboBoxAction;
private System.Windows.Forms.Button buttonOK;
private System.Windows.Forms.Button buttonCancel;
private System.Windows.Forms.Button buttonAdd;
private System.Windows.Forms.Button buttonRemove;
private System.Windows.Forms.Label labelThen;
private System.Windows.Forms.Button buttonReset;
}
}
+128
View File
@@ -0,0 +1,128 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using static System.Windows.Forms.ListViewItem;
namespace RPCMon
{
public delegate void FilterOKEventHandler(ListView i_listViewColumnFilter);
public partial class ColumnFilter : Form
{
private DataGridView m_DataGridView;
public event FilterOKEventHandler FilterOKUpdate;
public ColumnFilter(ref ListView i_ListViewColumnFilter)
{
InitializeComponentWrapper();
foreach (ListViewItem item in i_ListViewColumnFilter.Items)
{
ListViewItem clonedItem = (ListViewItem)item.Clone();
this.listViewColumnFilters.Items.Add(clonedItem);
}
}
public virtual void OnFilterOKUpdate(ListView i_listViewColumnFilter)
{
if (FilterOKUpdate != null)
{
FilterOKUpdate.Invoke(i_listViewColumnFilter);
}
}
private void InitializeComponentWrapper()
{
InitializeComponent();
this.comboBoxSearchByColumn.SelectedIndex = 0;
this.comboBoxRelation.SelectedIndex = 0;
this.comboBoxAction.SelectedIndex = 0;
this.listViewColumnFilters.FullRowSelect = true;
}
public ColumnFilter(ref DataGridView i_DataGridView)
{
m_DataGridView = i_DataGridView;
InitializeComponentWrapper();
}
private void buttonOK_Click(object sender, EventArgs e)
{
OnFilterOKUpdate(this.listViewColumnFilters);
this.Close();
}
private void buttonCancel_Click(object sender, EventArgs e)
{
this.Close();
}
// DUPLICATED function in FormHighlighting
// Maybe create a shared function in Utils but it threw an exception for "type initializer"
private bool isRowExist(string i_Column, string i_Relation, string i_Value, string i_Action)
{
bool isExist = false;
string newRow = i_Column + i_Relation + i_Value + i_Action;
foreach (ListViewItem item in listViewColumnFilters.Items)
{
string rawRow = "";
foreach (ListViewSubItem subItem in item.SubItems)
{
rawRow += subItem.Text;
}
if (newRow == rawRow)
{
isExist = true;
break;
}
}
return isExist;
}
private void buttonAdd_Click(object sender, EventArgs e)
{
if (!isRowExist(comboBoxSearchByColumn.Text, comboBoxRelation.Text, comboBoxValue.Text, comboBoxAction.Text))
{
ListViewItem item = new ListViewItem(comboBoxSearchByColumn.Text);
item.SubItems.Add(comboBoxRelation.Text);
item.SubItems.Add(comboBoxValue.Text);
item.SubItems.Add(comboBoxAction.Text);
item.Checked = true;
this.listViewColumnFilters.Items.Add(item);
}
}
private void buttonRemove_Click(object sender, EventArgs e)
{
foreach (ListViewItem item in this.listViewColumnFilters.SelectedItems)
{
item.Remove();
}
}
private void listViewColumnFilters_MouseDoubleClick(object sender, MouseEventArgs e)
{
foreach (ListViewItem item in ((ListView)sender).SelectedItems)
{
this.comboBoxSearchByColumn.Text = item.SubItems[0].Text;
this.comboBoxRelation.Text = item.SubItems[1].Text;
this.comboBoxValue.Text = item.SubItems[2].Text;
this.comboBoxAction.Text = item.SubItems[3].Text;
item.Remove();
}
}
private void buttonReset_Click(object sender, EventArgs e)
{
listViewColumnFilters.Items.Clear();
}
}
}
+120
View File
@@ -0,0 +1,120 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>
+362
View File
@@ -0,0 +1,362 @@
namespace RPCMon
{
partial class ColumnSelection
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.groupBoxProcessManagement = new System.Windows.Forms.GroupBox();
this.checkBoxProcessName = new System.Windows.Forms.CheckBox();
this.checkBoxTID = new System.Windows.Forms.CheckBox();
this.checkBoxPID = new System.Windows.Forms.CheckBox();
this.label1 = new System.Windows.Forms.Label();
this.groupBoxRPC = new System.Windows.Forms.GroupBox();
this.checkBoxImpersonationLevel = new System.Windows.Forms.CheckBox();
this.checkBoxAuthenticationLevel = new System.Windows.Forms.CheckBox();
this.checkBoxAuthenticationService = new System.Windows.Forms.CheckBox();
this.checkBoxOptions = new System.Windows.Forms.CheckBox();
this.checkBoxEndpoint = new System.Windows.Forms.CheckBox();
this.checkBoxProtocol = new System.Windows.Forms.CheckBox();
this.checkBoxNetworkAddress = new System.Windows.Forms.CheckBox();
this.checkBoxService = new System.Windows.Forms.CheckBox();
this.checkBoxUUID = new System.Windows.Forms.CheckBox();
this.buttonOK = new System.Windows.Forms.Button();
this.buttonCancel = new System.Windows.Forms.Button();
this.groupBoxRPCServer = new System.Windows.Forms.GroupBox();
this.checkBoxModulePath = new System.Windows.Forms.CheckBox();
this.checkBoxModule = new System.Windows.Forms.CheckBox();
this.checkBoxProceduresCount = new System.Windows.Forms.CheckBox();
this.checkBoxFunction = new System.Windows.Forms.CheckBox();
this.groupBoxProcessManagement.SuspendLayout();
this.groupBoxRPC.SuspendLayout();
this.groupBoxRPCServer.SuspendLayout();
this.SuspendLayout();
//
// groupBoxProcessManagement
//
this.groupBoxProcessManagement.Controls.Add(this.checkBoxProcessName);
this.groupBoxProcessManagement.Controls.Add(this.checkBoxTID);
this.groupBoxProcessManagement.Controls.Add(this.checkBoxPID);
this.groupBoxProcessManagement.Location = new System.Drawing.Point(12, 47);
this.groupBoxProcessManagement.Name = "groupBoxProcessManagement";
this.groupBoxProcessManagement.Size = new System.Drawing.Size(272, 77);
this.groupBoxProcessManagement.TabIndex = 0;
this.groupBoxProcessManagement.TabStop = false;
this.groupBoxProcessManagement.Text = "RPC Client";
//
// checkBoxProcessName
//
this.checkBoxProcessName.AutoSize = true;
this.checkBoxProcessName.Checked = true;
this.checkBoxProcessName.CheckState = System.Windows.Forms.CheckState.Checked;
this.checkBoxProcessName.Location = new System.Drawing.Point(6, 53);
this.checkBoxProcessName.Name = "checkBoxProcessName";
this.checkBoxProcessName.Size = new System.Drawing.Size(92, 17);
this.checkBoxProcessName.TabIndex = 2;
this.checkBoxProcessName.Text = "ProcessName";
this.checkBoxProcessName.UseVisualStyleBackColor = true;
//
// checkBoxTID
//
this.checkBoxTID.AutoSize = true;
this.checkBoxTID.Checked = true;
this.checkBoxTID.CheckState = System.Windows.Forms.CheckState.Checked;
this.checkBoxTID.Location = new System.Drawing.Point(132, 30);
this.checkBoxTID.Name = "checkBoxTID";
this.checkBoxTID.Size = new System.Drawing.Size(44, 17);
this.checkBoxTID.TabIndex = 1;
this.checkBoxTID.Text = "TID";
this.checkBoxTID.UseVisualStyleBackColor = true;
//
// checkBoxPID
//
this.checkBoxPID.AutoSize = true;
this.checkBoxPID.Checked = true;
this.checkBoxPID.CheckState = System.Windows.Forms.CheckState.Checked;
this.checkBoxPID.Location = new System.Drawing.Point(7, 30);
this.checkBoxPID.Name = "checkBoxPID";
this.checkBoxPID.Size = new System.Drawing.Size(44, 17);
this.checkBoxPID.TabIndex = 0;
this.checkBoxPID.Text = "PID";
this.checkBoxPID.UseVisualStyleBackColor = true;
//
// label1
//
this.label1.AutoSize = true;
this.label1.Location = new System.Drawing.Point(12, 19);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(243, 13);
this.label1.TabIndex = 1;
this.label1.Text = "Select columns to appear in the Procnoid window:";
//
// groupBoxRPC
//
this.groupBoxRPC.Controls.Add(this.checkBoxImpersonationLevel);
this.groupBoxRPC.Controls.Add(this.checkBoxAuthenticationLevel);
this.groupBoxRPC.Controls.Add(this.checkBoxAuthenticationService);
this.groupBoxRPC.Controls.Add(this.checkBoxOptions);
this.groupBoxRPC.Controls.Add(this.checkBoxEndpoint);
this.groupBoxRPC.Controls.Add(this.checkBoxProtocol);
this.groupBoxRPC.Controls.Add(this.checkBoxNetworkAddress);
this.groupBoxRPC.Location = new System.Drawing.Point(12, 253);
this.groupBoxRPC.Name = "groupBoxRPC";
this.groupBoxRPC.Size = new System.Drawing.Size(272, 122);
this.groupBoxRPC.TabIndex = 3;
this.groupBoxRPC.TabStop = false;
this.groupBoxRPC.Text = "RPC Misc";
//
// checkBoxImpersonationLevel
//
this.checkBoxImpersonationLevel.AutoSize = true;
this.checkBoxImpersonationLevel.Checked = true;
this.checkBoxImpersonationLevel.CheckState = System.Windows.Forms.CheckState.Checked;
this.checkBoxImpersonationLevel.Location = new System.Drawing.Point(8, 97);
this.checkBoxImpersonationLevel.Name = "checkBoxImpersonationLevel";
this.checkBoxImpersonationLevel.Size = new System.Drawing.Size(118, 17);
this.checkBoxImpersonationLevel.TabIndex = 8;
this.checkBoxImpersonationLevel.Text = "ImpersonationLevel";
this.checkBoxImpersonationLevel.UseVisualStyleBackColor = true;
//
// checkBoxAuthenticationLevel
//
this.checkBoxAuthenticationLevel.AutoSize = true;
this.checkBoxAuthenticationLevel.Location = new System.Drawing.Point(7, 74);
this.checkBoxAuthenticationLevel.Name = "checkBoxAuthenticationLevel";
this.checkBoxAuthenticationLevel.Size = new System.Drawing.Size(120, 17);
this.checkBoxAuthenticationLevel.TabIndex = 7;
this.checkBoxAuthenticationLevel.Text = "AuthenticationLevel";
this.checkBoxAuthenticationLevel.UseVisualStyleBackColor = true;
//
// checkBoxAuthenticationService
//
this.checkBoxAuthenticationService.AutoSize = true;
this.checkBoxAuthenticationService.Location = new System.Drawing.Point(133, 74);
this.checkBoxAuthenticationService.Name = "checkBoxAuthenticationService";
this.checkBoxAuthenticationService.Size = new System.Drawing.Size(130, 17);
this.checkBoxAuthenticationService.TabIndex = 6;
this.checkBoxAuthenticationService.Text = "AuthenticationService";
this.checkBoxAuthenticationService.UseVisualStyleBackColor = true;
//
// checkBoxOptions
//
this.checkBoxOptions.AutoSize = true;
this.checkBoxOptions.Location = new System.Drawing.Point(133, 51);
this.checkBoxOptions.Name = "checkBoxOptions";
this.checkBoxOptions.Size = new System.Drawing.Size(62, 17);
this.checkBoxOptions.TabIndex = 5;
this.checkBoxOptions.Text = "Options";
this.checkBoxOptions.UseVisualStyleBackColor = true;
//
// checkBoxEndpoint
//
this.checkBoxEndpoint.AutoSize = true;
this.checkBoxEndpoint.Checked = true;
this.checkBoxEndpoint.CheckState = System.Windows.Forms.CheckState.Checked;
this.checkBoxEndpoint.Location = new System.Drawing.Point(7, 51);
this.checkBoxEndpoint.Name = "checkBoxEndpoint";
this.checkBoxEndpoint.Size = new System.Drawing.Size(68, 17);
this.checkBoxEndpoint.TabIndex = 4;
this.checkBoxEndpoint.Text = "Endpoint";
this.checkBoxEndpoint.UseVisualStyleBackColor = true;
//
// checkBoxProtocol
//
this.checkBoxProtocol.AutoSize = true;
this.checkBoxProtocol.Checked = true;
this.checkBoxProtocol.CheckState = System.Windows.Forms.CheckState.Checked;
this.checkBoxProtocol.Location = new System.Drawing.Point(133, 28);
this.checkBoxProtocol.Name = "checkBoxProtocol";
this.checkBoxProtocol.Size = new System.Drawing.Size(65, 17);
this.checkBoxProtocol.TabIndex = 3;
this.checkBoxProtocol.Text = "Protocol";
this.checkBoxProtocol.UseVisualStyleBackColor = true;
//
// checkBoxNetworkAddress
//
this.checkBoxNetworkAddress.AutoSize = true;
this.checkBoxNetworkAddress.Location = new System.Drawing.Point(7, 28);
this.checkBoxNetworkAddress.Name = "checkBoxNetworkAddress";
this.checkBoxNetworkAddress.Size = new System.Drawing.Size(104, 17);
this.checkBoxNetworkAddress.TabIndex = 2;
this.checkBoxNetworkAddress.Text = "NetworkAddress";
this.checkBoxNetworkAddress.UseVisualStyleBackColor = true;
//
// checkBoxService
//
this.checkBoxService.AutoSize = true;
this.checkBoxService.Checked = true;
this.checkBoxService.CheckState = System.Windows.Forms.CheckState.Checked;
this.checkBoxService.Location = new System.Drawing.Point(132, 76);
this.checkBoxService.Name = "checkBoxService";
this.checkBoxService.Size = new System.Drawing.Size(62, 17);
this.checkBoxService.TabIndex = 1;
this.checkBoxService.Text = "Service";
this.checkBoxService.UseVisualStyleBackColor = true;
//
// checkBoxUUID
//
this.checkBoxUUID.AutoSize = true;
this.checkBoxUUID.Checked = true;
this.checkBoxUUID.CheckState = System.Windows.Forms.CheckState.Checked;
this.checkBoxUUID.Location = new System.Drawing.Point(6, 30);
this.checkBoxUUID.Name = "checkBoxUUID";
this.checkBoxUUID.Size = new System.Drawing.Size(53, 17);
this.checkBoxUUID.TabIndex = 0;
this.checkBoxUUID.Text = "UUID";
this.checkBoxUUID.UseVisualStyleBackColor = true;
//
// buttonOK
//
this.buttonOK.Location = new System.Drawing.Point(113, 391);
this.buttonOK.Name = "buttonOK";
this.buttonOK.Size = new System.Drawing.Size(75, 23);
this.buttonOK.TabIndex = 4;
this.buttonOK.Text = "OK";
this.buttonOK.UseVisualStyleBackColor = true;
this.buttonOK.Click += new System.EventHandler(this.buttonOK_Click);
//
// buttonCancel
//
this.buttonCancel.Location = new System.Drawing.Point(209, 391);
this.buttonCancel.Name = "buttonCancel";
this.buttonCancel.Size = new System.Drawing.Size(75, 23);
this.buttonCancel.TabIndex = 5;
this.buttonCancel.Text = "Cancel";
this.buttonCancel.UseVisualStyleBackColor = true;
this.buttonCancel.Click += new System.EventHandler(this.buttonCancel_Click);
//
// groupBoxRPCServer
//
this.groupBoxRPCServer.Controls.Add(this.checkBoxFunction);
this.groupBoxRPCServer.Controls.Add(this.checkBoxModulePath);
this.groupBoxRPCServer.Controls.Add(this.checkBoxModule);
this.groupBoxRPCServer.Controls.Add(this.checkBoxProceduresCount);
this.groupBoxRPCServer.Controls.Add(this.checkBoxUUID);
this.groupBoxRPCServer.Controls.Add(this.checkBoxService);
this.groupBoxRPCServer.Location = new System.Drawing.Point(12, 139);
this.groupBoxRPCServer.Name = "groupBoxRPCServer";
this.groupBoxRPCServer.Size = new System.Drawing.Size(272, 108);
this.groupBoxRPCServer.TabIndex = 3;
this.groupBoxRPCServer.TabStop = false;
this.groupBoxRPCServer.Text = "RPC Server";
//
// checkBoxModulePath
//
this.checkBoxModulePath.AutoSize = true;
this.checkBoxModulePath.Location = new System.Drawing.Point(6, 53);
this.checkBoxModulePath.Name = "checkBoxModulePath";
this.checkBoxModulePath.Size = new System.Drawing.Size(83, 17);
this.checkBoxModulePath.TabIndex = 2;
this.checkBoxModulePath.Text = "ModulePath";
this.checkBoxModulePath.UseVisualStyleBackColor = true;
//
// checkBoxModule
//
this.checkBoxModule.AutoSize = true;
this.checkBoxModule.Checked = true;
this.checkBoxModule.CheckState = System.Windows.Forms.CheckState.Checked;
this.checkBoxModule.Location = new System.Drawing.Point(132, 30);
this.checkBoxModule.Name = "checkBoxModule";
this.checkBoxModule.Size = new System.Drawing.Size(61, 17);
this.checkBoxModule.TabIndex = 1;
this.checkBoxModule.Text = "Module";
this.checkBoxModule.UseVisualStyleBackColor = true;
//
// checkBoxProceduresCount
//
this.checkBoxProceduresCount.AutoSize = true;
this.checkBoxProceduresCount.Location = new System.Drawing.Point(132, 53);
this.checkBoxProceduresCount.Name = "checkBoxProceduresCount";
this.checkBoxProceduresCount.Size = new System.Drawing.Size(108, 17);
this.checkBoxProceduresCount.TabIndex = 0;
this.checkBoxProceduresCount.Text = "ProceduresCount";
this.checkBoxProceduresCount.UseVisualStyleBackColor = true;
//
// checkBoxFunction
//
this.checkBoxFunction.AutoSize = true;
this.checkBoxFunction.Checked = true;
this.checkBoxFunction.CheckState = System.Windows.Forms.CheckState.Checked;
this.checkBoxFunction.Location = new System.Drawing.Point(7, 76);
this.checkBoxFunction.Name = "checkBoxFunction";
this.checkBoxFunction.Size = new System.Drawing.Size(67, 17);
this.checkBoxFunction.TabIndex = 3;
this.checkBoxFunction.Text = "Function";
this.checkBoxFunction.UseVisualStyleBackColor = true;
//
// ColumnSelection
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(292, 425);
this.Controls.Add(this.groupBoxRPCServer);
this.Controls.Add(this.buttonCancel);
this.Controls.Add(this.buttonOK);
this.Controls.Add(this.groupBoxRPC);
this.Controls.Add(this.label1);
this.Controls.Add(this.groupBoxProcessManagement);
this.MaximizeBox = false;
this.MinimizeBox = false;
this.Name = "ColumnSelection";
this.ShowIcon = false;
this.Text = "RPC Monitor Column Selection";
this.groupBoxProcessManagement.ResumeLayout(false);
this.groupBoxProcessManagement.PerformLayout();
this.groupBoxRPC.ResumeLayout(false);
this.groupBoxRPC.PerformLayout();
this.groupBoxRPCServer.ResumeLayout(false);
this.groupBoxRPCServer.PerformLayout();
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private System.Windows.Forms.GroupBox groupBoxProcessManagement;
private System.Windows.Forms.CheckBox checkBoxProcessName;
private System.Windows.Forms.CheckBox checkBoxTID;
private System.Windows.Forms.CheckBox checkBoxPID;
private System.Windows.Forms.Label label1;
private System.Windows.Forms.GroupBox groupBoxRPC;
private System.Windows.Forms.CheckBox checkBoxImpersonationLevel;
private System.Windows.Forms.CheckBox checkBoxAuthenticationLevel;
private System.Windows.Forms.CheckBox checkBoxAuthenticationService;
private System.Windows.Forms.CheckBox checkBoxOptions;
private System.Windows.Forms.CheckBox checkBoxEndpoint;
private System.Windows.Forms.CheckBox checkBoxProtocol;
private System.Windows.Forms.CheckBox checkBoxNetworkAddress;
private System.Windows.Forms.CheckBox checkBoxService;
private System.Windows.Forms.CheckBox checkBoxUUID;
private System.Windows.Forms.Button buttonOK;
private System.Windows.Forms.Button buttonCancel;
private System.Windows.Forms.GroupBox groupBoxRPCServer;
private System.Windows.Forms.CheckBox checkBoxFunction;
private System.Windows.Forms.CheckBox checkBoxModulePath;
private System.Windows.Forms.CheckBox checkBoxModule;
private System.Windows.Forms.CheckBox checkBoxProceduresCount;
}
}
+41
View File
@@ -0,0 +1,41 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace RPCMon
{
public delegate void selectColumnsEventHandler(GroupBox i_RPCClient, GroupBox i_RPCServer, GroupBox i_RPCMisc);
public partial class ColumnSelection : Form
{
public event selectColumnsEventHandler selectColumnsUpdate;
public ColumnSelection()
{
InitializeComponent();
}
public virtual void OnselectColumnsUpdate(GroupBox i_RPCClient, GroupBox i_RPCServer, GroupBox i_RPCMisc)
{
if (selectColumnsUpdate != null)
{
selectColumnsUpdate.Invoke(i_RPCClient, i_RPCServer, i_RPCMisc);
}
}
private void buttonCancel_Click(object sender, EventArgs e)
{
this.Close();
}
private void buttonOK_Click(object sender, EventArgs e)
{
OnselectColumnsUpdate(groupBoxProcessManagement, groupBoxRPCServer, groupBoxRPC);
this.Close();
}
}
}
+120
View File
@@ -0,0 +1,120 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>
+311
View File
@@ -0,0 +1,311 @@
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Newtonsoft.Json;
namespace RPCMon.Control
{
public delegate void BuildRPCDBEventHandler(string i_File, string i_FileStatus, int i_NumOfFilesWithRPC, int i_TotalNumberOfFiles);
public delegate void DoneRPCSearchEventHandler(List<IEnumerable<NtApiDotNet.Win32.RpcServer>> i_RPCServers);
static class Engine
{
public static event BuildRPCDBEventHandler BuildRPCDBStatusUpdate;
public static event DoneRPCSearchEventHandler DoneRPCSearchUpdate;
private const string m_SymbolsPath = @"srv*c:\symbols*http://msdl.microsoft.com/download/symbols";
private static List<IEnumerable<NtApiDotNet.Win32.RpcServer>> m_RPCServersDB;
private static string m_DbgHelp = @"C:\Program Files (x86)\Windows Kits\10\Debuggers\x64\dbghelp.dll";
private static int m_TotalNumberOfFiles, m_NumOfFilesWithRPC;
private const string c_FolderToSearch = @"C:\Windows\";
private static bool m_IsDoneRPCSearch = false;
private static Dictionary<string, bool> m_ExcludedFoldersMap = new Dictionary<string, bool>();
public static void StopRPCSearch()
{
m_IsDoneRPCSearch = true;
}
public static string DbgHelpFilePath
{
get { return m_DbgHelp; }
set { m_DbgHelp = value; }
}
public static void BuildRPCDataBase(string i_FolderToSearch, string i_SavedFilePath, bool i_Recursive, string[] i_ExcludedFolders, params string[] i_Extensions)
{
m_TotalNumberOfFiles = 0;
m_NumOfFilesWithRPC = 0;
m_IsDoneRPCSearch = false;
m_RPCServersDB = new List<IEnumerable<NtApiDotNet.Win32.RpcServer>>();
if (i_FolderToSearch == "")
{
i_FolderToSearch = c_FolderToSearch;
}
m_ExcludedFoldersMap.Clear();
foreach (string folder in i_ExcludedFolders)
{
m_ExcludedFoldersMap.Add(folder.ToLower(), true);
}
buildRPCServersList(i_FolderToSearch, i_Recursive, i_Extensions);
OnDoneRPCSearchUpdate(m_RPCServersDB);
saveDBAsJson(m_RPCServersDB, i_SavedFilePath);
// var a = NtApiDotNet.Win32.RpcAlpcServer.GetAlpcServers();
}
private static void saveDBAsJson(List<IEnumerable<NtApiDotNet.Win32.RpcServer>> i_RPCList, string i_FileName)
{
int i = 0;
Dictionary<string, RPCServerInfo> rpcDB = new Dictionary<string, RPCServerInfo>();
foreach (IEnumerable<NtApiDotNet.Win32.RpcServer> rpcServerEnumerator in i_RPCList)
{
foreach (NtApiDotNet.Win32.RpcServer rpcServer in rpcServerEnumerator)
{
// Maybe it is not enough to check only by UUID and add version to the check.
// But it will require to change the key.
if (rpcDB.ContainsKey(rpcServer.InterfaceId.ToString()))
{
continue;
}
i = 0;
List<string> functions = new List<string>();
foreach (var function in rpcServer.Procedures)
{
functions.Add(function.Name);
// We are assuming the functions are already in order, but are they?
// It is better to check with ProcNum of each function
//if (i != function.ProcNum)
//{
// int b = 2;
//}
i += 1;
}
RPCServerInfo serverInfo = new RPCServerInfo(
rpcServer.Name,
rpcServer.FilePath,
rpcServer.InterfaceId.ToString(),
rpcServer.Offset,
rpcServer.ProcedureCount,
functions,
rpcServer.ServiceName,
rpcServer.IsServiceRunning
);
rpcDB.Add(rpcServer.InterfaceId.ToString(), serverInfo);
}
}
string json = JsonConvert.SerializeObject(rpcDB);
File.WriteAllText(i_FileName, json);
}
public static void OnDoneRPCSearchUpdate(List<IEnumerable<NtApiDotNet.Win32.RpcServer>> i_RPCServers)
{
if (DoneRPCSearchUpdate != null)
{
DoneRPCSearchUpdate.Invoke(i_RPCServers);
}
}
public static void OnBuildRPCDBStatusUpdate(string i_File, string i_FileStatus, int i_NumOfFilesWithRPC, int i_TotalNumberOfFiles)
{
if (BuildRPCDBStatusUpdate != null)
{
BuildRPCDBStatusUpdate.Invoke(i_File, i_FileStatus, i_NumOfFilesWithRPC, i_TotalNumberOfFiles);
}
}
public static IEnumerable<FileInfo> GetFilesByExtensions(this DirectoryInfo dir, params string[] extensions)
{
if (extensions == null)
throw new ArgumentNullException("extensions");
IEnumerable<FileInfo> files = dir.EnumerateFiles();
return files.Where(f => extensions.Contains(f.Extension));
}
private static bool isBinaryMZFile(string i_FileName)
{
bool isBinary = false;
int numBytesToRead = 2;
int numBytesRead = 0;
byte[] bytes = new byte[2];
int n;
using (FileStream fsSource = new FileStream(i_FileName, FileMode.Open, FileAccess.Read))
{
n = fsSource.Read(bytes, numBytesRead, numBytesToRead);
}
//const Int32 BufferSize = 4;
//using (var fileStream = File.OpenRead(name))
//{
// using (var streamReader = new StreamReader(fileStream, Encoding.UTF8, true, BufferSize))
// {
// String line;
// line = streamReader.ReadLine();
// int a = line.Length;
// }
//}
// 77 = 'M', 90 = 'Z'
if (n > 0 && bytes[0] == 77 && bytes[1] == 90)
{
isBinary = true;
}
return isBinary;
}
// Original: https://stackoverflow.com/questions/172544/ignore-folders-files-when-directory-getfiles-is-denied-access
// https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/file-system/how-to-iterate-through-a-directory-tree
private static void buildRPCServersList(string root, bool isRecursive, params string[] extensions)
{
// Data structure to hold names of subfolders to be
// examined for files.
Stack<string> dirs = new Stack<string>(10);
IEnumerable<NtApiDotNet.Win32.RpcServer> rpcServer = Enumerable.Empty<NtApiDotNet.Win32.RpcServer>();
if (!System.IO.Directory.Exists(root))
{
throw new ArgumentException();
}
dirs.Push(root);
while (dirs.Count > 0)
{
if (m_IsDoneRPCSearch)
{
break;
}
string currentDir = dirs.Pop();
if (m_ExcludedFoldersMap.ContainsKey(currentDir.ToLower()))
{
continue;
}
//updateStatusToolStrip(currentDir);
string[] subDirs;
try
{
subDirs = System.IO.Directory.GetDirectories(currentDir);
}
// An UnauthorizedAccessException exception will be thrown if we do not have
// discovery permission on a folder or file. It may or may not be acceptable
// to ignore the exception and continue enumerating the remaining files and
// folders. It is also possible (but unlikely) that a DirectoryNotFound exception
// will be raised. This will happen if currentDir has been deleted by
// another application or thread after our call to Directory.Exists. The
// choice of which exceptions to catch depends entirely on the specific task
// you are intending to perform and also on how much you know with certainty
// about the systems on which this code will run.
catch (UnauthorizedAccessException e)
{
//Console.WriteLine(e.Message);
continue;
}
catch (System.IO.DirectoryNotFoundException e)
{
//Console.WriteLine(e.Message);
continue;
}
//string[] files = null;
IEnumerable<FileInfo> files;
try
{
//files = System.IO.Directory.GetFiles(currentDir, extension);
DirectoryInfo dInfo = new DirectoryInfo(currentDir);
files = dInfo.GetFilesByExtensions(extensions);
m_TotalNumberOfFiles += files.Count();
}
catch (UnauthorizedAccessException e)
{
//Console.WriteLine(e.Message);
continue;
}
catch (System.IO.DirectoryNotFoundException e)
{
//Console.WriteLine(e.Message);
continue;
}
// Perform the required action on each file here.
// Modify this block to perform your required task.
foreach (FileInfo file in files)
{
if (m_IsDoneRPCSearch)
{
break;
}
try
{
// Eviatar: Error when trying to load this file. There are more.
// string name = @"C:\Windows\winsxs\x86_wcf-system.identitymodel_b03f5f7f11d50a3a_10.0.19041.1_none_e690fdc7d17e3f70\System.IdentityModel.dll";
// We are doing this check to avoid the uncatchable exception of Bad Image
// It won't help against the file C:\Windows\winsxs\x86_microsoft-windows-n..nd-syswow64-payload_31bf3856ad364e35_1.0.19041.1_none_beac3411b23832d5\compobj.dll
// which have "MZ" in the beginning but Bad Image. I add work around to execlude some folders.
// The "MZ" is not enough because there are files like
// C:\Windows\winsxs\x86_microsoft-windows-n..nd-syswow64-payload_31bf3856ad364e35_1.0.19041.1_none_beac3411b23832d5\compobj.dll
// Which have bad image and starts with "MZ". The workaround might be by trying to load it as data file first and if succeed call the ParsePe function.
//if (isBinaryMZFile(file.FullName))
if (Win32NativeMethods.isSucceedLoadLibrary(file.FullName, LoadLibraryFlags.LoadLibraryAsDataFile))
{
rpcServer = NtApiDotNet.Win32.RpcServer.ParsePeFile(file.FullName, m_DbgHelp, m_SymbolsPath, NtApiDotNet.Win32.RpcServerParserFlags.None);
}
if (rpcServer.Count() > 0)
{
m_RPCServersDB.Add(rpcServer);
m_NumOfFilesWithRPC += 1;
OnBuildRPCDBStatusUpdate(file.FullName, "Yes", m_NumOfFilesWithRPC, m_TotalNumberOfFiles);
} else
{
OnBuildRPCDBStatusUpdate(file.FullName, "No", m_NumOfFilesWithRPC, m_TotalNumberOfFiles);
}
//ManifestInfo info = Engine.GetManifestInfo(file);
/*if (info != null && (String.Empty != info.Level + info.uiAccess + info.autoElevate + info.dpiAware))
{
if (UserMatchesFilters(info))
{
//if(isFilteredByCheckboxes(info)){
updateTable(info, file);
}
}*/
}
catch (System.IO.FileNotFoundException e)
{
// If file was deleted by a separate application
// or thread since the call to TraverseTree()
// then just continue.
//Console.WriteLine(e.Message);
continue;
}
}
if (!isRecursive)
{
break;
}
// Push the subdirectories onto the stack for traversal.
// This could also be done before handing the files.
foreach (string str in subDirs)
dirs.Push(str);
}
//this.toolStripStatusLabel1.Text = "Done";
}
}
}
File diff suppressed because it is too large Load Diff
+138
View File
@@ -0,0 +1,138 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace RPCMon.Control
{
class RPCServerInfo
{
private string m_Module;
private string m_ModulePath;
private string m_InterfaceId;
private long m_InterfaceStructOffset;
private int m_ProceduresCount;
private List<string> m_Procedures;
private string m_Service;
private bool m_IsServiceRunning;
public RPCServerInfo(string i_Module, string i_ModulePath, string i_InterfaceId,
long i_InterfaceStructOffset, int i_ProceduresCount, List<string> i_Procedures, string i_Service, bool
i_IsServiceRunning)
{
m_Module = i_Module;
m_ModulePath = i_ModulePath;
m_InterfaceId = i_InterfaceId;
m_InterfaceStructOffset = i_InterfaceStructOffset;
m_ProceduresCount = i_ProceduresCount;
m_Procedures = i_Procedures;
m_Service = i_Service;
m_IsServiceRunning = i_IsServiceRunning;
}
public string Module
{
get
{
return m_Module;
}
set
{
m_Module = value;
}
}
public string ModulePath
{
get
{
return m_ModulePath;
}
set
{
m_ModulePath = value;
}
}
public string InterfaceId
{
get
{
return m_InterfaceId;
}
set
{
m_InterfaceId = value;
}
}
public long InterfaceStructOffset
{
get
{
return m_InterfaceStructOffset;
}
set
{
m_InterfaceStructOffset = value;
}
}
public int ProceduresCount
{
get
{
return m_ProceduresCount;
}
set
{
m_ProceduresCount = value;
}
}
public List<string> Procedures
{
get
{
return m_Procedures;
}
set
{
m_Procedures = value;
}
}
public string Service
{
get
{
return m_Service;
}
set
{
m_Service = value;
}
}
public bool IsServiceRunning
{
get
{
return m_IsServiceRunning;
}
set
{
m_IsServiceRunning = value;
}
}
}
}
+80
View File
@@ -0,0 +1,80 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading.Tasks;
using NtApiDotNet.Win32;
namespace RPCMon.Control
{
public static class Win32NativeMethods
{
[DllImport("kernel32.dll", CharSet = CharSet.Unicode, SetLastError = true)]
internal static extern SafeLoadLibraryHandle LoadLibraryEx(string name, IntPtr reserved, LoadLibraryFlags flags);
public static bool isSucceedLoadLibrary(string i_Name, LoadLibraryFlags flags)
{
bool isSuceed = false;
SafeLoadLibraryHandle ret = LoadLibraryEx(i_Name, IntPtr.Zero, flags);
if (!ret.IsInvalid)
{
isSuceed = true;
}
return isSuceed;
}
}
public enum LoadLibraryFlags
{
/// <summary>
/// None.
/// </summary>
None = 0,
/// <summary>
/// Don't resolve DLL references
/// </summary>
DontResolveDllReferences = 0x00000001,
/// <summary>
/// Load library as a data file.
/// </summary>
LoadLibraryAsDataFile = 0x00000002,
/// <summary>
/// Load with an altered search path.
/// </summary>
LoadWithAlteredSearchPath = 0x00000008,
/// <summary>
/// Ignore code authz level.
/// </summary>
LoadIgnoreCodeAuthzLevel = 0x00000010,
/// <summary>
/// Load library as an image resource.
/// </summary>
LoadLibraryAsImageResource = 0x00000020,
/// <summary>
/// Load library as a data file exclusively.
/// </summary>
LoadLibraryAsDataFileExclusive = 0x00000040,
/// <summary>
/// Add the DLL's directory temporarily to the search list.
/// </summary>
LoadLibrarySearchDllLoadDir = 0x00000100,
/// <summary>
/// Search application directory for the DLL.
/// </summary>
LoadLibrarySearchApplicationDir = 0x00000200,
/// <summary>
/// Search the user's directories for the DLL.
/// </summary>
LoadLibrarySearchUserDirs = 0x00000400,
/// <summary>
/// Search system32 for the DLL.
/// </summary>
LoadLibrarySearchSystem32 = 0x00000800,
/// <summary>
/// Search the default directories for the DLL.
/// </summary>
LoadLibrarySearchDefaultDirs = 0x00001000,
}
}
+509
View File
@@ -0,0 +1,509 @@
namespace RPCMon
{
partial class Form1
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.components = new System.ComponentModel.Container();
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Form1));
this.menuStrip1 = new System.Windows.Forms.MenuStrip();
this.fileToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.saveToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.dBToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.loadDBToolStripMenuItemLoadDB = new System.Windows.Forms.ToolStripMenuItem();
this.buildDBToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.optionsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.setDbgHelpFilePathToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.helpToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.aboutToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.toolStrip1 = new System.Windows.Forms.ToolStrip();
this.toolStripButtonStart = new System.Windows.Forms.ToolStripButton();
this.toolStripButtonClear = new System.Windows.Forms.ToolStripButton();
this.toolStripButtonFilter = new System.Windows.Forms.ToolStripButton();
this.toolStripButtonFind = new System.Windows.Forms.ToolStripButton();
this.toolStripButtonHighlight = new System.Windows.Forms.ToolStripButton();
this.toolStripButtonGrid = new System.Windows.Forms.ToolStripButton();
this.toolStripButtonRemoveDuplicate = new System.Windows.Forms.ToolStripButton();
this.dataGridView1 = new System.Windows.Forms.DataGridView();
this.ColumnPID = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.ColumnTID = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.ColumnProcessName = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.ColumnUUID = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.ColumnModule = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.ColumnModulePath = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.ColumnProceduresCount = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.ColumnService = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.ColumnFunction = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.ColumnNetworkAddress = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.ColumnProtocol = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.ColumnEndpoint = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.ColumnOptions = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.ColumnAuthenticationLevel = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.ColumnAuthenticationService = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.ColumnImpersonationLevel = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.statusStrip1 = new System.Windows.Forms.StatusStrip();
this.toolStripStatusLabelTotalEvents = new System.Windows.Forms.ToolStripStatusLabel();
this.toolStripStatusLabelDBPath = new System.Windows.Forms.ToolStripStatusLabel();
this.toolTipDBPath = new System.Windows.Forms.ToolTip(this.components);
this.contextMenuStripRightClickGridView = new System.Windows.Forms.ContextMenuStrip(this.components);
this.copyRowToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.copyCellToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.menuStrip1.SuspendLayout();
this.toolStrip1.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).BeginInit();
this.statusStrip1.SuspendLayout();
this.contextMenuStripRightClickGridView.SuspendLayout();
this.SuspendLayout();
//
// menuStrip1
//
this.menuStrip1.ImageScalingSize = new System.Drawing.Size(20, 20);
this.menuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.fileToolStripMenuItem,
this.dBToolStripMenuItem,
this.optionsToolStripMenuItem,
this.helpToolStripMenuItem});
this.menuStrip1.Location = new System.Drawing.Point(0, 0);
this.menuStrip1.Name = "menuStrip1";
this.menuStrip1.Size = new System.Drawing.Size(828, 24);
this.menuStrip1.TabIndex = 0;
this.menuStrip1.Text = "menuStrip1";
//
// fileToolStripMenuItem
//
this.fileToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.saveToolStripMenuItem});
this.fileToolStripMenuItem.Name = "fileToolStripMenuItem";
this.fileToolStripMenuItem.Size = new System.Drawing.Size(37, 20);
this.fileToolStripMenuItem.Text = "File";
//
// saveToolStripMenuItem
//
this.saveToolStripMenuItem.Name = "saveToolStripMenuItem";
this.saveToolStripMenuItem.Size = new System.Drawing.Size(107, 22);
this.saveToolStripMenuItem.Text = "Save...";
this.saveToolStripMenuItem.Click += new System.EventHandler(this.saveToolStripMenuItem_Click);
//
// dBToolStripMenuItem
//
this.dBToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.loadDBToolStripMenuItemLoadDB,
this.buildDBToolStripMenuItem});
this.dBToolStripMenuItem.Name = "dBToolStripMenuItem";
this.dBToolStripMenuItem.Size = new System.Drawing.Size(34, 20);
this.dBToolStripMenuItem.Text = "DB";
//
// loadDBToolStripMenuItemLoadDB
//
this.loadDBToolStripMenuItemLoadDB.Name = "loadDBToolStripMenuItemLoadDB";
this.loadDBToolStripMenuItemLoadDB.Size = new System.Drawing.Size(128, 22);
this.loadDBToolStripMenuItemLoadDB.Text = "Load DB...";
this.loadDBToolStripMenuItemLoadDB.Click += new System.EventHandler(this.loadDBToolStripMenuItemLoadDB_Click);
//
// buildDBToolStripMenuItem
//
this.buildDBToolStripMenuItem.Name = "buildDBToolStripMenuItem";
this.buildDBToolStripMenuItem.Size = new System.Drawing.Size(128, 22);
this.buildDBToolStripMenuItem.Text = "Build DB...";
this.buildDBToolStripMenuItem.Click += new System.EventHandler(this.buildDBToolStripMenuItem_Click);
//
// optionsToolStripMenuItem
//
this.optionsToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.setDbgHelpFilePathToolStripMenuItem});
this.optionsToolStripMenuItem.Name = "optionsToolStripMenuItem";
this.optionsToolStripMenuItem.Size = new System.Drawing.Size(61, 20);
this.optionsToolStripMenuItem.Text = "Options";
//
// setDbgHelpFilePathToolStripMenuItem
//
this.setDbgHelpFilePathToolStripMenuItem.Name = "setDbgHelpFilePathToolStripMenuItem";
this.setDbgHelpFilePathToolStripMenuItem.Size = new System.Drawing.Size(197, 22);
this.setDbgHelpFilePathToolStripMenuItem.Text = "Set DbgHelp File Path...";
this.setDbgHelpFilePathToolStripMenuItem.Click += new System.EventHandler(this.setDbgHelpFilePathToolStripMenuItem_Click);
//
// helpToolStripMenuItem
//
this.helpToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.aboutToolStripMenuItem});
this.helpToolStripMenuItem.Name = "helpToolStripMenuItem";
this.helpToolStripMenuItem.Size = new System.Drawing.Size(44, 20);
this.helpToolStripMenuItem.Text = "Help";
//
// aboutToolStripMenuItem
//
this.aboutToolStripMenuItem.Name = "aboutToolStripMenuItem";
this.aboutToolStripMenuItem.Size = new System.Drawing.Size(116, 22);
this.aboutToolStripMenuItem.Text = "About...";
this.aboutToolStripMenuItem.Click += new System.EventHandler(this.aboutToolStripMenuItem_Click);
//
// toolStrip1
//
this.toolStrip1.ImageScalingSize = new System.Drawing.Size(20, 20);
this.toolStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.toolStripButtonStart,
this.toolStripButtonClear,
this.toolStripButtonFilter,
this.toolStripButtonFind,
this.toolStripButtonHighlight,
this.toolStripButtonGrid,
this.toolStripButtonRemoveDuplicate});
this.toolStrip1.Location = new System.Drawing.Point(0, 24);
this.toolStrip1.Name = "toolStrip1";
this.toolStrip1.Size = new System.Drawing.Size(828, 27);
this.toolStrip1.TabIndex = 1;
this.toolStrip1.Text = "toolStrip1";
//
// toolStripButtonStart
//
this.toolStripButtonStart.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
this.toolStripButtonStart.Image = global::RPCMon.Properties.Resources.startIcon;
this.toolStripButtonStart.ImageTransparentColor = System.Drawing.Color.Magenta;
this.toolStripButtonStart.Name = "toolStripButtonStart";
this.toolStripButtonStart.Size = new System.Drawing.Size(24, 24);
this.toolStripButtonStart.Text = "Capture";
this.toolStripButtonStart.ToolTipText = "Capture";
this.toolStripButtonStart.Click += new System.EventHandler(this.toolStripButtonStart_Click);
//
// toolStripButtonClear
//
this.toolStripButtonClear.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
this.toolStripButtonClear.Image = global::RPCMon.Properties.Resources.eraser;
this.toolStripButtonClear.ImageTransparentColor = System.Drawing.Color.Magenta;
this.toolStripButtonClear.Name = "toolStripButtonClear";
this.toolStripButtonClear.Size = new System.Drawing.Size(24, 24);
this.toolStripButtonClear.Text = "Clear (Ctrl+X)";
this.toolStripButtonClear.Click += new System.EventHandler(this.toolStripButtonClear_Click);
//
// toolStripButtonFilter
//
this.toolStripButtonFilter.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
this.toolStripButtonFilter.Image = global::RPCMon.Properties.Resources.filter;
this.toolStripButtonFilter.ImageTransparentColor = System.Drawing.Color.Magenta;
this.toolStripButtonFilter.Name = "toolStripButtonFilter";
this.toolStripButtonFilter.Size = new System.Drawing.Size(24, 24);
this.toolStripButtonFilter.Text = "Filter (Ctrl+L)";
this.toolStripButtonFilter.ToolTipText = "Filter (Ctrl+L)";
this.toolStripButtonFilter.Click += new System.EventHandler(this.toolStripButtonFilter_Click);
//
// toolStripButtonFind
//
this.toolStripButtonFind.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
this.toolStripButtonFind.Image = global::RPCMon.Properties.Resources.find;
this.toolStripButtonFind.ImageTransparentColor = System.Drawing.Color.Magenta;
this.toolStripButtonFind.Name = "toolStripButtonFind";
this.toolStripButtonFind.Size = new System.Drawing.Size(24, 24);
this.toolStripButtonFind.Text = "Find (Ctrl+F)";
this.toolStripButtonFind.Click += new System.EventHandler(this.toolStripButtonFind_Click);
//
// toolStripButtonHighlight
//
this.toolStripButtonHighlight.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
this.toolStripButtonHighlight.Image = global::RPCMon.Properties.Resources.highlighter;
this.toolStripButtonHighlight.ImageTransparentColor = System.Drawing.Color.Magenta;
this.toolStripButtonHighlight.Name = "toolStripButtonHighlight";
this.toolStripButtonHighlight.Size = new System.Drawing.Size(24, 24);
this.toolStripButtonHighlight.Text = "HighLight (Ctrl+H)";
this.toolStripButtonHighlight.Click += new System.EventHandler(this.toolStripButtonHighlight_Click);
//
// toolStripButtonGrid
//
this.toolStripButtonGrid.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
this.toolStripButtonGrid.Image = global::RPCMon.Properties.Resources.grid_disable;
this.toolStripButtonGrid.ImageTransparentColor = System.Drawing.Color.Magenta;
this.toolStripButtonGrid.Name = "toolStripButtonGrid";
this.toolStripButtonGrid.Size = new System.Drawing.Size(24, 24);
this.toolStripButtonGrid.Text = "Show Grid";
this.toolStripButtonGrid.Click += new System.EventHandler(this.toolStripButtonGrid_Click);
//
// toolStripButtonRemoveDuplicate
//
this.toolStripButtonRemoveDuplicate.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
this.toolStripButtonRemoveDuplicate.Image = global::RPCMon.Properties.Resources.duplicate_disable;
this.toolStripButtonRemoveDuplicate.ImageTransparentColor = System.Drawing.Color.Magenta;
this.toolStripButtonRemoveDuplicate.Name = "toolStripButtonRemoveDuplicate";
this.toolStripButtonRemoveDuplicate.Size = new System.Drawing.Size(24, 24);
this.toolStripButtonRemoveDuplicate.Text = "Remove Duplicate Rows";
this.toolStripButtonRemoveDuplicate.Click += new System.EventHandler(this.toolStripButtonRemoveDuplicate_Click);
//
// dataGridView1
//
this.dataGridView1.AllowUserToAddRows = false;
this.dataGridView1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.dataGridView1.AutoSizeColumnsMode = System.Windows.Forms.DataGridViewAutoSizeColumnsMode.Fill;
this.dataGridView1.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
this.dataGridView1.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] {
this.ColumnPID,
this.ColumnTID,
this.ColumnProcessName,
this.ColumnUUID,
this.ColumnModule,
this.ColumnModulePath,
this.ColumnProceduresCount,
this.ColumnService,
this.ColumnFunction,
this.ColumnNetworkAddress,
this.ColumnProtocol,
this.ColumnEndpoint,
this.ColumnOptions,
this.ColumnAuthenticationLevel,
this.ColumnAuthenticationService,
this.ColumnImpersonationLevel});
this.dataGridView1.Location = new System.Drawing.Point(0, 51);
this.dataGridView1.Name = "dataGridView1";
this.dataGridView1.ReadOnly = true;
this.dataGridView1.Size = new System.Drawing.Size(828, 486);
this.dataGridView1.TabIndex = 3;
this.dataGridView1.CellMouseClick += new System.Windows.Forms.DataGridViewCellMouseEventHandler(this.dataGridView1_CellMouseClick);
this.dataGridView1.ColumnHeaderMouseClick += new System.Windows.Forms.DataGridViewCellMouseEventHandler(this.dataGridView1_ColumnHeaderMouseClick);
//
// ColumnPID
//
this.ColumnPID.HeaderText = "PID";
this.ColumnPID.Name = "ColumnPID";
this.ColumnPID.ReadOnly = true;
//
// ColumnTID
//
this.ColumnTID.HeaderText = "TID";
this.ColumnTID.Name = "ColumnTID";
this.ColumnTID.ReadOnly = true;
//
// ColumnProcessName
//
this.ColumnProcessName.HeaderText = "ProcessName";
this.ColumnProcessName.Name = "ColumnProcessName";
this.ColumnProcessName.ReadOnly = true;
//
// ColumnUUID
//
this.ColumnUUID.HeaderText = "UUID";
this.ColumnUUID.Name = "ColumnUUID";
this.ColumnUUID.ReadOnly = true;
//
// ColumnModule
//
this.ColumnModule.HeaderText = "Module";
this.ColumnModule.Name = "ColumnModule";
this.ColumnModule.ReadOnly = true;
//
// ColumnModulePath
//
this.ColumnModulePath.HeaderText = "ModulePath";
this.ColumnModulePath.Name = "ColumnModulePath";
this.ColumnModulePath.ReadOnly = true;
this.ColumnModulePath.Visible = false;
//
// ColumnProceduresCount
//
this.ColumnProceduresCount.HeaderText = "ProceduresCount";
this.ColumnProceduresCount.Name = "ColumnProceduresCount";
this.ColumnProceduresCount.ReadOnly = true;
this.ColumnProceduresCount.Visible = false;
//
// ColumnService
//
this.ColumnService.HeaderText = "Service";
this.ColumnService.Name = "ColumnService";
this.ColumnService.ReadOnly = true;
//
// ColumnFunction
//
this.ColumnFunction.HeaderText = "Function";
this.ColumnFunction.Name = "ColumnFunction";
this.ColumnFunction.ReadOnly = true;
//
// ColumnNetworkAddress
//
this.ColumnNetworkAddress.HeaderText = "NetworkAddress";
this.ColumnNetworkAddress.Name = "ColumnNetworkAddress";
this.ColumnNetworkAddress.ReadOnly = true;
this.ColumnNetworkAddress.Visible = false;
//
// ColumnProtocol
//
this.ColumnProtocol.HeaderText = "Protocol";
this.ColumnProtocol.Name = "ColumnProtocol";
this.ColumnProtocol.ReadOnly = true;
//
// ColumnEndpoint
//
this.ColumnEndpoint.HeaderText = "Endpoint";
this.ColumnEndpoint.Name = "ColumnEndpoint";
this.ColumnEndpoint.ReadOnly = true;
//
// ColumnOptions
//
this.ColumnOptions.HeaderText = "Options";
this.ColumnOptions.Name = "ColumnOptions";
this.ColumnOptions.ReadOnly = true;
this.ColumnOptions.Visible = false;
//
// ColumnAuthenticationLevel
//
this.ColumnAuthenticationLevel.HeaderText = "AuthenticationLevel";
this.ColumnAuthenticationLevel.Name = "ColumnAuthenticationLevel";
this.ColumnAuthenticationLevel.ReadOnly = true;
this.ColumnAuthenticationLevel.Visible = false;
//
// ColumnAuthenticationService
//
this.ColumnAuthenticationService.HeaderText = "AuthenticationService";
this.ColumnAuthenticationService.Name = "ColumnAuthenticationService";
this.ColumnAuthenticationService.ReadOnly = true;
this.ColumnAuthenticationService.Visible = false;
//
// ColumnImpersonationLevel
//
this.ColumnImpersonationLevel.HeaderText = "ImpersonationLevel";
this.ColumnImpersonationLevel.Name = "ColumnImpersonationLevel";
this.ColumnImpersonationLevel.ReadOnly = true;
//
// statusStrip1
//
this.statusStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.toolStripStatusLabelTotalEvents,
this.toolStripStatusLabelDBPath});
this.statusStrip1.Location = new System.Drawing.Point(0, 538);
this.statusStrip1.Name = "statusStrip1";
this.statusStrip1.Size = new System.Drawing.Size(828, 24);
this.statusStrip1.TabIndex = 4;
this.statusStrip1.Text = "statusStrip1";
//
// toolStripStatusLabelTotalEvents
//
this.toolStripStatusLabelTotalEvents.BorderSides = System.Windows.Forms.ToolStripStatusLabelBorderSides.Right;
this.toolStripStatusLabelTotalEvents.Name = "toolStripStatusLabelTotalEvents";
this.toolStripStatusLabelTotalEvents.Size = new System.Drawing.Size(85, 19);
this.toolStripStatusLabelTotalEvents.Text = "Total events: 0";
//
// toolStripStatusLabelDBPath
//
this.toolStripStatusLabelDBPath.Name = "toolStripStatusLabelDBPath";
this.toolStripStatusLabelDBPath.Size = new System.Drawing.Size(49, 19);
this.toolStripStatusLabelDBPath.Text = "DB File: ";
this.toolStripStatusLabelDBPath.MouseLeave += new System.EventHandler(this.toolStripStatusLabelDBPath_MouseLeave);
this.toolStripStatusLabelDBPath.MouseHover += new System.EventHandler(this.toolStripStatusLabelDBPath_MouseHover);
//
// contextMenuStripRightClickGridView
//
this.contextMenuStripRightClickGridView.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.copyRowToolStripMenuItem,
this.copyCellToolStripMenuItem});
this.contextMenuStripRightClickGridView.Name = "contextMenuStripRightClickGridView";
this.contextMenuStripRightClickGridView.Size = new System.Drawing.Size(129, 48);
//
// copyRowToolStripMenuItem
//
this.copyRowToolStripMenuItem.Name = "copyRowToolStripMenuItem";
this.copyRowToolStripMenuItem.Size = new System.Drawing.Size(128, 22);
this.copyRowToolStripMenuItem.Text = "Copy Row";
this.copyRowToolStripMenuItem.Click += new System.EventHandler(this.copyRowToolStripMenuItem_Click);
//
// copyCellToolStripMenuItem
//
this.copyCellToolStripMenuItem.Name = "copyCellToolStripMenuItem";
this.copyCellToolStripMenuItem.Size = new System.Drawing.Size(128, 22);
this.copyCellToolStripMenuItem.Text = "Copy Cell";
this.copyCellToolStripMenuItem.Click += new System.EventHandler(this.copyCellToolStripMenuItem_Click);
//
// Form1
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(828, 562);
this.Controls.Add(this.statusStrip1);
this.Controls.Add(this.dataGridView1);
this.Controls.Add(this.toolStrip1);
this.Controls.Add(this.menuStrip1);
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.MainMenuStrip = this.menuStrip1;
this.Name = "Form1";
this.Text = "RPCMon - RPC Monitor Based Windows Events";
this.Shown += new System.EventHandler(this.Form1_Shown);
this.menuStrip1.ResumeLayout(false);
this.menuStrip1.PerformLayout();
this.toolStrip1.ResumeLayout(false);
this.toolStrip1.PerformLayout();
((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).EndInit();
this.statusStrip1.ResumeLayout(false);
this.statusStrip1.PerformLayout();
this.contextMenuStripRightClickGridView.ResumeLayout(false);
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private System.Windows.Forms.MenuStrip menuStrip1;
private System.Windows.Forms.ToolStripMenuItem fileToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem helpToolStripMenuItem;
private System.Windows.Forms.ToolStrip toolStrip1;
private System.Windows.Forms.ToolStripButton toolStripButtonStart;
private System.Windows.Forms.ToolStripButton toolStripButtonFilter;
private System.Windows.Forms.DataGridView dataGridView1;
private System.Windows.Forms.ToolStripMenuItem aboutToolStripMenuItem;
private System.Windows.Forms.ToolStripButton toolStripButtonClear;
private System.Windows.Forms.ToolStripButton toolStripButtonFind;
private System.Windows.Forms.StatusStrip statusStrip1;
private System.Windows.Forms.ToolStripStatusLabel toolStripStatusLabelTotalEvents;
private System.Windows.Forms.ToolStripStatusLabel toolStripStatusLabelDBPath;
private System.Windows.Forms.ToolStripButton toolStripButtonHighlight;
private System.Windows.Forms.ToolStripMenuItem saveToolStripMenuItem;
private System.Windows.Forms.ToolTip toolTipDBPath;
private System.Windows.Forms.ToolStripMenuItem dBToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem loadDBToolStripMenuItemLoadDB;
private System.Windows.Forms.ContextMenuStrip contextMenuStripRightClickGridView;
private System.Windows.Forms.ToolStripMenuItem copyRowToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem copyCellToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem buildDBToolStripMenuItem;
private System.Windows.Forms.ToolStripButton toolStripButtonGrid;
private System.Windows.Forms.ToolStripButton toolStripButtonRemoveDuplicate;
private System.Windows.Forms.DataGridViewTextBoxColumn ColumnPID;
private System.Windows.Forms.DataGridViewTextBoxColumn ColumnTID;
private System.Windows.Forms.DataGridViewTextBoxColumn ColumnProcessName;
private System.Windows.Forms.DataGridViewTextBoxColumn ColumnUUID;
private System.Windows.Forms.DataGridViewTextBoxColumn ColumnModule;
private System.Windows.Forms.DataGridViewTextBoxColumn ColumnModulePath;
private System.Windows.Forms.DataGridViewTextBoxColumn ColumnProceduresCount;
private System.Windows.Forms.DataGridViewTextBoxColumn ColumnService;
private System.Windows.Forms.DataGridViewTextBoxColumn ColumnFunction;
private System.Windows.Forms.DataGridViewTextBoxColumn ColumnNetworkAddress;
private System.Windows.Forms.DataGridViewTextBoxColumn ColumnProtocol;
private System.Windows.Forms.DataGridViewTextBoxColumn ColumnEndpoint;
private System.Windows.Forms.DataGridViewTextBoxColumn ColumnOptions;
private System.Windows.Forms.DataGridViewTextBoxColumn ColumnAuthenticationLevel;
private System.Windows.Forms.DataGridViewTextBoxColumn ColumnAuthenticationService;
private System.Windows.Forms.DataGridViewTextBoxColumn ColumnImpersonationLevel;
private System.Windows.Forms.ToolStripMenuItem optionsToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem setDbgHelpFilePathToolStripMenuItem;
}
}
+1032
View File
File diff suppressed because it is too large Load Diff
+2132
View File
File diff suppressed because it is too large Load Diff
+287
View File
@@ -0,0 +1,287 @@
using System.Drawing;
using System.Windows.Forms;
namespace RPCMon
{
partial class FormBuildDB
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.components = new System.ComponentModel.Container();
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FormBuildDB));
this.buttonBuild = new System.Windows.Forms.Button();
this.labelRPCFolder = new System.Windows.Forms.Label();
this.textBoxFolderForRPC = new System.Windows.Forms.TextBox();
this.checkBoxRecursive = new System.Windows.Forms.CheckBox();
this.comboBox1 = new System.Windows.Forms.ComboBox();
this.listViewRPCFiles = new System.Windows.Forms.ListView();
this.columnHeaderFileName = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
this.columnHeaderHasRpc = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
this.buttonStop = new System.Windows.Forms.Button();
this.statusStrip1 = new System.Windows.Forms.StatusStrip();
this.toolStripStatusLabelTotalFiles = new System.Windows.Forms.ToolStripStatusLabel();
this.toolStripStatusLabelRPCFiles = new System.Windows.Forms.ToolStripStatusLabel();
this.label1 = new System.Windows.Forms.Label();
this.textBoxSaveFile = new System.Windows.Forms.TextBox();
this.buttonJumpFolder = new System.Windows.Forms.Button();
this.toolTipJumpButton = new System.Windows.Forms.ToolTip(this.components);
this.buttonClear = new System.Windows.Forms.Button();
this.textBoxExcludedFolders = new System.Windows.Forms.TextBox();
this.label2 = new System.Windows.Forms.Label();
this.statusStrip1.SuspendLayout();
this.SuspendLayout();
//
// buttonBuild
//
this.buttonBuild.Location = new System.Drawing.Point(12, 100);
this.buttonBuild.Name = "buttonBuild";
this.buttonBuild.Size = new System.Drawing.Size(75, 23);
this.buttonBuild.TabIndex = 0;
this.buttonBuild.Text = "Build";
this.buttonBuild.UseVisualStyleBackColor = true;
this.buttonBuild.Click += new System.EventHandler(this.buttonBuild_Click);
//
// labelRPCFolder
//
this.labelRPCFolder.AutoSize = true;
this.labelRPCFolder.Location = new System.Drawing.Point(12, 23);
this.labelRPCFolder.Name = "labelRPCFolder";
this.labelRPCFolder.Size = new System.Drawing.Size(82, 13);
this.labelRPCFolder.TabIndex = 1;
this.labelRPCFolder.Text = "Folder for RPC: ";
//
// textBoxFolderForRPC
//
this.textBoxFolderForRPC.Location = new System.Drawing.Point(100, 20);
this.textBoxFolderForRPC.Name = "textBoxFolderForRPC";
this.textBoxFolderForRPC.Size = new System.Drawing.Size(244, 20);
this.textBoxFolderForRPC.TabIndex = 2;
this.textBoxFolderForRPC.Text = "C:\\Windows";
//
// checkBoxRecursive
//
this.checkBoxRecursive.AutoSize = true;
this.checkBoxRecursive.Location = new System.Drawing.Point(100, 46);
this.checkBoxRecursive.Name = "checkBoxRecursive";
this.checkBoxRecursive.Size = new System.Drawing.Size(74, 17);
this.checkBoxRecursive.TabIndex = 3;
this.checkBoxRecursive.Text = "Recursive";
this.checkBoxRecursive.UseVisualStyleBackColor = true;
//
// comboBox1
//
this.comboBox1.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.comboBox1.FormattingEnabled = true;
this.comboBox1.Items.AddRange(new object[] {
"All",
"*.exe",
"*.dll",
"*.com"});
this.comboBox1.Location = new System.Drawing.Point(359, 19);
this.comboBox1.Name = "comboBox1";
this.comboBox1.Size = new System.Drawing.Size(121, 21);
this.comboBox1.TabIndex = 5;
//
// listViewRPCFiles
//
this.listViewRPCFiles.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.listViewRPCFiles.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] {
this.columnHeaderFileName,
this.columnHeaderHasRpc});
this.listViewRPCFiles.HideSelection = false;
this.listViewRPCFiles.Location = new System.Drawing.Point(2, 178);
this.listViewRPCFiles.Name = "listViewRPCFiles";
this.listViewRPCFiles.Size = new System.Drawing.Size(555, 314);
this.listViewRPCFiles.TabIndex = 8;
this.listViewRPCFiles.UseCompatibleStateImageBehavior = false;
this.listViewRPCFiles.View = System.Windows.Forms.View.Details;
this.listViewRPCFiles.ColumnClick += new System.Windows.Forms.ColumnClickEventHandler(this.listViewRPCFiles_ColumnClick);
//
// columnHeaderFileName
//
this.columnHeaderFileName.Text = "File Name";
this.columnHeaderFileName.Width = 125;
//
// columnHeaderHasRpc
//
this.columnHeaderHasRpc.Text = "Has RPC?";
this.columnHeaderHasRpc.Width = 83;
//
// buttonStop
//
this.buttonStop.Location = new System.Drawing.Point(100, 100);
this.buttonStop.Name = "buttonStop";
this.buttonStop.Size = new System.Drawing.Size(75, 23);
this.buttonStop.TabIndex = 9;
this.buttonStop.Text = "Stop";
this.buttonStop.UseVisualStyleBackColor = true;
this.buttonStop.Click += new System.EventHandler(this.buttonStop_Click);
//
// statusStrip1
//
this.statusStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.toolStripStatusLabelTotalFiles,
this.toolStripStatusLabelRPCFiles});
this.statusStrip1.Location = new System.Drawing.Point(0, 498);
this.statusStrip1.Name = "statusStrip1";
this.statusStrip1.Size = new System.Drawing.Size(555, 24);
this.statusStrip1.TabIndex = 10;
this.statusStrip1.Text = "statusStrip1";
//
// toolStripStatusLabelTotalFiles
//
this.toolStripStatusLabelTotalFiles.BorderSides = System.Windows.Forms.ToolStripStatusLabelBorderSides.Right;
this.toolStripStatusLabelTotalFiles.Name = "toolStripStatusLabelTotalFiles";
this.toolStripStatusLabelTotalFiles.Size = new System.Drawing.Size(125, 19);
this.toolStripStatusLabelTotalFiles.Text = "Total Searched Files: 0";
//
// toolStripStatusLabelRPCFiles
//
this.toolStripStatusLabelRPCFiles.Name = "toolStripStatusLabelRPCFiles";
this.toolStripStatusLabelRPCFiles.Size = new System.Drawing.Size(67, 19);
this.toolStripStatusLabelRPCFiles.Text = "RPC Files: 0";
//
// label1
//
this.label1.AutoSize = true;
this.label1.Location = new System.Drawing.Point(12, 141);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(88, 13);
this.label1.TabIndex = 11;
this.label1.Text = "Saved File Path: ";
//
// textBoxSaveFile
//
this.textBoxSaveFile.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.textBoxSaveFile.Location = new System.Drawing.Point(100, 138);
this.textBoxSaveFile.Name = "textBoxSaveFile";
this.textBoxSaveFile.Size = new System.Drawing.Size(400, 20);
this.textBoxSaveFile.TabIndex = 12;
//
// buttonJumpFolder
//
this.buttonJumpFolder.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.buttonJumpFolder.BackColor = System.Drawing.Color.Transparent;
this.buttonJumpFolder.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch;
this.buttonJumpFolder.FlatAppearance.BorderSize = 0;
this.buttonJumpFolder.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.buttonJumpFolder.Image = ((System.Drawing.Image)(resources.GetObject("buttonJumpFolder.Image")));
this.buttonJumpFolder.Location = new System.Drawing.Point(506, 136);
this.buttonJumpFolder.Name = "buttonJumpFolder";
this.buttonJumpFolder.Size = new System.Drawing.Size(25, 22);
this.buttonJumpFolder.TabIndex = 13;
this.buttonJumpFolder.TabStop = false;
this.buttonJumpFolder.UseVisualStyleBackColor = false;
this.buttonJumpFolder.Click += new System.EventHandler(this.button1_Click);
this.buttonJumpFolder.MouseLeave += new System.EventHandler(this.buttonJumpFolder_MouseLeave);
this.buttonJumpFolder.MouseHover += new System.EventHandler(this.buttonJumpFolder_MouseHover);
//
// buttonClear
//
this.buttonClear.Location = new System.Drawing.Point(191, 100);
this.buttonClear.Name = "buttonClear";
this.buttonClear.Size = new System.Drawing.Size(75, 23);
this.buttonClear.TabIndex = 14;
this.buttonClear.Text = "Clear";
this.buttonClear.UseVisualStyleBackColor = true;
this.buttonClear.Click += new System.EventHandler(this.buttonClear_Click);
//
// textBoxExcludedFolders
//
this.textBoxExcludedFolders.Location = new System.Drawing.Point(100, 69);
this.textBoxExcludedFolders.Name = "textBoxExcludedFolders";
this.textBoxExcludedFolders.Size = new System.Drawing.Size(244, 20);
this.textBoxExcludedFolders.TabIndex = 16;
this.textBoxExcludedFolders.Text = "C:\\Windows\\WinSxS";
//
// label2
//
this.label2.AutoSize = true;
this.label2.Location = new System.Drawing.Point(12, 72);
this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(88, 13);
this.label2.TabIndex = 15;
this.label2.Text = "Exclude Folders: ";
//
// FormBuildDB
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(555, 522);
this.Controls.Add(this.textBoxExcludedFolders);
this.Controls.Add(this.label2);
this.Controls.Add(this.buttonClear);
this.Controls.Add(this.buttonJumpFolder);
this.Controls.Add(this.textBoxSaveFile);
this.Controls.Add(this.label1);
this.Controls.Add(this.statusStrip1);
this.Controls.Add(this.buttonStop);
this.Controls.Add(this.listViewRPCFiles);
this.Controls.Add(this.comboBox1);
this.Controls.Add(this.checkBoxRecursive);
this.Controls.Add(this.textBoxFolderForRPC);
this.Controls.Add(this.labelRPCFolder);
this.Controls.Add(this.buttonBuild);
this.MaximizeBox = false;
this.MinimizeBox = false;
this.Name = "FormBuildDB";
this.ShowIcon = false;
this.Text = "Build DB";
this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.FormBuildDB_FormClosing);
this.statusStrip1.ResumeLayout(false);
this.statusStrip1.PerformLayout();
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private System.Windows.Forms.Button buttonBuild;
private System.Windows.Forms.Label labelRPCFolder;
private System.Windows.Forms.TextBox textBoxFolderForRPC;
private System.Windows.Forms.CheckBox checkBoxRecursive;
private System.Windows.Forms.ComboBox comboBox1;
private System.Windows.Forms.ListView listViewRPCFiles;
private System.Windows.Forms.ColumnHeader columnHeaderFileName;
private System.Windows.Forms.ColumnHeader columnHeaderHasRpc;
private System.Windows.Forms.Button buttonStop;
private System.Windows.Forms.StatusStrip statusStrip1;
private System.Windows.Forms.ToolStripStatusLabel toolStripStatusLabelTotalFiles;
private System.Windows.Forms.ToolStripStatusLabel toolStripStatusLabelRPCFiles;
private System.Windows.Forms.Label label1;
private System.Windows.Forms.TextBox textBoxSaveFile;
private System.Windows.Forms.Button buttonJumpFolder;
private ToolTip toolTipJumpButton;
private Button buttonClear;
private TextBox textBoxExcludedFolders;
private Label label2;
}
}
+233
View File
@@ -0,0 +1,233 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Drawing;
using System.Drawing.Text;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;
using RPCMon.Control;
namespace RPCMon
{
public partial class FormBuildDB : Form
{
private ListViewColumnSorter m_LvwColumnSorter;
private const string c_DBDefaultName = "RPC_DB";
public FormBuildDB()
{
InitializeComponent();
m_LvwColumnSorter = new ListViewColumnSorter();
this.listViewRPCFiles.ListViewItemSorter = m_LvwColumnSorter;
this.textBoxSaveFile.Text = generateDBName();
this.comboBox1.SelectedIndex = 0;
this.buttonJumpFolder.Image = (Image)(new Bitmap(global::RPCMon.Properties.Resources.share, new Size(15, 15)));
this.buttonJumpFolder.TabStop = false;
this.buttonJumpFolder.FlatStyle = FlatStyle.Flat;
this.buttonJumpFolder.FlatAppearance.BorderSize = 0;
}
private string generateDBName()
{
string newPathNoExtension = Path.Combine(Directory.GetCurrentDirectory(), c_DBDefaultName);
int num = 0;
bool isExist = false;
while (!isExist)
{
if (File.Exists(newPathNoExtension + num.ToString() + ".rpcdb.json"))
{
num += 1;
} else
{
isExist = true;
newPathNoExtension = newPathNoExtension + num.ToString();
}
}
return newPathNoExtension + ".rpcdb.json";
}
//public Thread m_SearchingRPCThread;
//CancellationTokenSource cts = new CancellationTokenSource();
private void buttonBuild_Click(object sender, EventArgs e)
{
Engine.BuildRPCDBStatusUpdate -= Engine_BuildRPCDBStatusUpdate;
Engine.DoneRPCSearchUpdate -= Engine_DoneRPCSearchUpdate;
Engine.BuildRPCDBStatusUpdate += Engine_BuildRPCDBStatusUpdate;
Engine.DoneRPCSearchUpdate += Engine_DoneRPCSearchUpdate;
//string[] extensions = {".exe", ".dll", ".com" };
string[] extensions = new string[1];
switch (comboBox1.Text)
{
case (".exe"):
extensions[0] = ".exe";
break;
case (".dll"):
extensions[0] = ".exe";
break;
case (".com"):
extensions[0] = ".com";
break;
default:
extensions = new string[3]{ ".exe", ".dll", ".com" };
break;
}
string[] excludedFolders = textBoxExcludedFolders.Text.Split(';');
ThreadPool.QueueUserWorkItem(o => Engine.BuildRPCDataBase(textBoxFolderForRPC.Text, textBoxSaveFile.Text, checkBoxRecursive.Checked, excludedFolders, extensions));
//ThreadPool.QueueUserWorkItem(o =>
//{ CancellationToken token = (CancellationToken)o;
// while (!token.IsCancellationRequested)
// {
// Engine.BuildRPCDataBase(textBoxFolderForRPC.Text);
// }
//ThreadPool.QueueUserWorkItem(s =>
//{
// CancellationToken token = (CancellationToken)s;
// if (token.IsCancellationRequested)
// return;
// Engine.BuildRPCDataBase(textBoxFolderForRPC.Text);
// token.WaitHandle.WaitOne(1000);
//}, cts.Token);
//}, cts.Token);
//List<IEnumerable<NtApiDotNet.Win32.RpcServer>> rpcList = Engine.BuildRPCDataBase(textBoxFolderForRPC.Text);
//var rpcList = Engine.BuildRPCDataBase(textBoxFolderForRPC.Text);
//MessageBox.Show("Done!", "Creating DB", MessageBoxButtons.OK);
// progressBar1.Refre
}
private void Engine_DoneRPCSearchUpdate(List<IEnumerable<NtApiDotNet.Win32.RpcServer>> i_RPCServers)
{
MessageBox.Show("Done!", "Creating DB", MessageBoxButtons.OK);
//progressBar1.Value = progressBar1.Maximum;
}
//private void Engine_BuildRPCDBStatusUpdate(string i_File, string i_FileStatus, int i_NumOfFilesWithRPC, int i_TotalNumberOfFiles)
//{
// //textBoxLogs.Text += "\n" + i_FileStatus;
// ListViewItem item = new ListViewItem(i_File);
// item.SubItems.Add(i_FileStatus);
// listViewRPCFiles.Items.Add(item);
// progressBar1.Value += (int)((i_NumOfFilesWithRPC / i_TotalNumberOfFiles)*100);
//}
private delegate void buildRPCDBStatusUpdateCallBack(string i_File, string i_FileStatus, int i_NumOfFilesWithRPC, int i_TotalNumberOfFiles);
private void Engine_BuildRPCDBStatusUpdate(string i_File, string i_FileStatus, int i_NumOfFilesWithRPC, int i_TotalNumberOfFiles)
{
if (this.InvokeRequired)
{
buildRPCDBStatusUpdateCallBack s = new buildRPCDBStatusUpdateCallBack(Engine_BuildRPCDBStatusUpdate);
this.Invoke(s, i_File, i_FileStatus, i_NumOfFilesWithRPC, i_TotalNumberOfFiles);
}
else
{
ListViewItem item = new ListViewItem(i_File);
item.SubItems.Add(i_FileStatus);
listViewRPCFiles.Items.Add(item);
if (i_FileStatus == "Yes")
{
item.BackColor = Color.Cyan;
}
toolStripStatusLabelRPCFiles.Text = "RPC Files: " + i_NumOfFilesWithRPC.ToString();
toolStripStatusLabelTotalFiles.Text = "Total Searched Files: " + i_TotalNumberOfFiles.ToString();
// progressBar1.Value += (int)(((double)i_NumOfFilesWithRPC / (double)i_TotalNumberOfFiles) * 100);
//progressBar1.Maximum += progressBar1.Value;
}
}
private void buttonStop_Click(object sender, EventArgs e)
{
Engine.StopRPCSearch();
// cts.Cancel();
//if (m_SearchingRPCThread != null)
//{
// m_SearchingRPCThread.Abort();
//}
}
// https://docs.microsoft.com/en-us/troubleshoot/developer/visualstudio/csharp/general/sort-listview-by-column
private void listViewRPCFiles_ColumnClick(object sender, ColumnClickEventArgs e)
{
// Determine if clicked column is already the column that is being sorted.
if (e.Column == m_LvwColumnSorter.SortColumn)
{
// Reverse the current sort direction for this column.
if (m_LvwColumnSorter.Order == SortOrder.Ascending)
{
m_LvwColumnSorter.Order = SortOrder.Descending;
}
else
{
m_LvwColumnSorter.Order = SortOrder.Ascending;
}
}
else
{
// Set the column number that is to be sorted; default to ascending.
m_LvwColumnSorter.SortColumn = e.Column;
m_LvwColumnSorter.Order = SortOrder.Ascending;
}
this.listViewRPCFiles.Sort();
}
private void FormBuildDB_FormClosing(object sender, FormClosingEventArgs e)
{
Engine.StopRPCSearch();
}
private void button1_Click(object sender, EventArgs e)
{
string directory = Path.GetDirectoryName(textBoxSaveFile.Text);
if (Directory.Exists(directory))
{
ProcessStartInfo startInfo = new ProcessStartInfo
{
Arguments = directory,
FileName = "explorer.exe"
};
Process.Start(startInfo);
}
else
{
MessageBox.Show(string.Format("{0} Directory does not exist!", directory));
}
}
private void buttonJumpFolder_MouseHover(object sender, EventArgs e)
{
toolTipJumpButton.Show("Jump to Saved Folder", buttonJumpFolder);
}
private void buttonJumpFolder_MouseLeave(object sender, EventArgs e)
{
toolTipJumpButton.Hide(buttonJumpFolder);
}
private void buttonClear_Click(object sender, EventArgs e)
{
listViewRPCFiles.Items.Clear();
Engine.BuildRPCDBStatusUpdate -= Engine_BuildRPCDBStatusUpdate;
Engine.DoneRPCSearchUpdate -= Engine_DoneRPCSearchUpdate;
toolStripStatusLabelRPCFiles.Text = "RPC Files: ";
toolStripStatusLabelTotalFiles.Text = "Total Searched Files: 0";
}
}
}
+138
View File
@@ -0,0 +1,138 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<metadata name="statusStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="buttonJumpFolder.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAAA8AAAAPCAYAAAA71pVKAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
wwAADsMBx2+oZAAAATJJREFUOE9joAvwP3PX1ufcvf76+nomqBDxwPfsfQ/f8w/+e59/0Fv//z/EABvd
AGMrnYAYZGys5iMClgSC0CsvJfwuPIzzOXtvCUgzCPude9DPADIAqPivpU7gHSB9BIYttQNNQRr9Lj4o
hWlAxz7nH0wDag78b6ETkAG2Bgn4nH0QDFT0F10TMsap2ff8/dfYNMCw96WHxlg1+1x84AxT5HP+/pvg
S3f1gAEWBBPzO/vQBKwQm2bfc/eLwRrPPZgPFQKHNtCgP76XH1hDhXBoPns3B6j5OjxKgMDnzF057yuP
zKBcCMCmub7+P1P8/fscUC5ugCvAcAEb7QAfS52AjWAOqZqttAMyrbQDr0M4QM1AgcdA0y4Qg0FqgXqu
QTSr+0lZ6wS6koJttf1lGRgYGACEyfG98X+pIQAAAABJRU5ErkJggg==
</value>
</data>
<metadata name="toolTipJumpButton.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>133, 17</value>
</metadata>
</root>
+269
View File
@@ -0,0 +1,269 @@
namespace RPCMon
{
partial class FormHighlighting
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.labelHighlight = new System.Windows.Forms.Label();
this.comboBoxColumn = new System.Windows.Forms.ComboBox();
this.comboBoxRelation = new System.Windows.Forms.ComboBox();
this.comboBoxValue = new System.Windows.Forms.ComboBox();
this.labelThen = new System.Windows.Forms.Label();
this.comboBoxAction = new System.Windows.Forms.ComboBox();
this.listViewHighlights = new System.Windows.Forms.ListView();
this.columnHeaderColumn = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
this.columnHeaderRelation = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
this.columnHeaderValue = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
this.columnHeaderAction = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
this.buttonOK = new System.Windows.Forms.Button();
this.buttonCancel = new System.Windows.Forms.Button();
this.buttonAdd = new System.Windows.Forms.Button();
this.buttonRemove = new System.Windows.Forms.Button();
this.buttonReset = new System.Windows.Forms.Button();
this.SuspendLayout();
//
// labelHighlight
//
this.labelHighlight.AutoSize = true;
this.labelHighlight.Location = new System.Drawing.Point(12, 9);
this.labelHighlight.Name = "labelHighlight";
this.labelHighlight.Size = new System.Drawing.Size(211, 13);
this.labelHighlight.TabIndex = 0;
this.labelHighlight.Text = "Highlight entries matching these conditions:";
//
// comboBoxColumn
//
this.comboBoxColumn.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.comboBoxColumn.FormattingEnabled = true;
this.comboBoxColumn.Items.AddRange(new object[] {
"PID",
"TID",
"ProcessName",
"UUID",
"Module",
"ModulePath",
"ProceduresCount",
"Service",
"Function",
"NetworkAddress",
"Protocol",
"Endpoint",
"Options",
"AuthenticationLevel",
"AuthenticationService",
"ImpersonationLevel"});
this.comboBoxColumn.Location = new System.Drawing.Point(12, 25);
this.comboBoxColumn.Name = "comboBoxColumn";
this.comboBoxColumn.Size = new System.Drawing.Size(121, 21);
this.comboBoxColumn.TabIndex = 1;
//
// comboBoxRelation
//
this.comboBoxRelation.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.comboBoxRelation.FormattingEnabled = true;
this.comboBoxRelation.Items.AddRange(new object[] {
"contains",
"is",
"begins with",
"ends with"});
this.comboBoxRelation.Location = new System.Drawing.Point(139, 25);
this.comboBoxRelation.Name = "comboBoxRelation";
this.comboBoxRelation.Size = new System.Drawing.Size(71, 21);
this.comboBoxRelation.TabIndex = 2;
//
// comboBoxValue
//
this.comboBoxValue.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.comboBoxValue.FormattingEnabled = true;
this.comboBoxValue.Location = new System.Drawing.Point(216, 25);
this.comboBoxValue.Name = "comboBoxValue";
this.comboBoxValue.Size = new System.Drawing.Size(297, 21);
this.comboBoxValue.TabIndex = 3;
//
// labelThen
//
this.labelThen.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.labelThen.AutoSize = true;
this.labelThen.Location = new System.Drawing.Point(519, 25);
this.labelThen.Name = "labelThen";
this.labelThen.Size = new System.Drawing.Size(28, 13);
this.labelThen.TabIndex = 4;
this.labelThen.Text = "then";
//
// comboBoxAction
//
this.comboBoxAction.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.comboBoxAction.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.comboBoxAction.FormattingEnabled = true;
this.comboBoxAction.Items.AddRange(new object[] {
"Include",
"Exclude"});
this.comboBoxAction.Location = new System.Drawing.Point(557, 22);
this.comboBoxAction.Name = "comboBoxAction";
this.comboBoxAction.Size = new System.Drawing.Size(71, 21);
this.comboBoxAction.TabIndex = 5;
//
// listViewHighlights
//
this.listViewHighlights.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.listViewHighlights.CheckBoxes = true;
this.listViewHighlights.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] {
this.columnHeaderColumn,
this.columnHeaderRelation,
this.columnHeaderValue,
this.columnHeaderAction});
this.listViewHighlights.HideSelection = false;
this.listViewHighlights.Location = new System.Drawing.Point(12, 85);
this.listViewHighlights.Name = "listViewHighlights";
this.listViewHighlights.Size = new System.Drawing.Size(619, 267);
this.listViewHighlights.TabIndex = 6;
this.listViewHighlights.UseCompatibleStateImageBehavior = false;
this.listViewHighlights.View = System.Windows.Forms.View.Details;
this.listViewHighlights.MouseDoubleClick += new System.Windows.Forms.MouseEventHandler(this.listViewHighlights_MouseDoubleClick);
//
// columnHeaderColumn
//
this.columnHeaderColumn.Text = "Column";
//
// columnHeaderRelation
//
this.columnHeaderRelation.Text = "Relation";
//
// columnHeaderValue
//
this.columnHeaderValue.Text = "Value";
//
// columnHeaderAction
//
this.columnHeaderAction.Text = "Action";
//
// buttonOK
//
this.buttonOK.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
this.buttonOK.Location = new System.Drawing.Point(472, 358);
this.buttonOK.Name = "buttonOK";
this.buttonOK.Size = new System.Drawing.Size(75, 23);
this.buttonOK.TabIndex = 7;
this.buttonOK.Text = "OK";
this.buttonOK.UseVisualStyleBackColor = true;
this.buttonOK.Click += new System.EventHandler(this.buttonOK_Click);
//
// buttonCancel
//
this.buttonCancel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
this.buttonCancel.Location = new System.Drawing.Point(553, 358);
this.buttonCancel.Name = "buttonCancel";
this.buttonCancel.Size = new System.Drawing.Size(75, 23);
this.buttonCancel.TabIndex = 8;
this.buttonCancel.Text = "Cancel";
this.buttonCancel.UseVisualStyleBackColor = true;
this.buttonCancel.Click += new System.EventHandler(this.buttonCancel_Click);
//
// buttonAdd
//
this.buttonAdd.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.buttonAdd.Location = new System.Drawing.Point(472, 56);
this.buttonAdd.Name = "buttonAdd";
this.buttonAdd.Size = new System.Drawing.Size(75, 23);
this.buttonAdd.TabIndex = 9;
this.buttonAdd.Text = "Add";
this.buttonAdd.UseVisualStyleBackColor = true;
this.buttonAdd.Click += new System.EventHandler(this.buttonAdd_Click);
//
// buttonRemove
//
this.buttonRemove.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.buttonRemove.Location = new System.Drawing.Point(553, 56);
this.buttonRemove.Name = "buttonRemove";
this.buttonRemove.Size = new System.Drawing.Size(75, 23);
this.buttonRemove.TabIndex = 10;
this.buttonRemove.Text = "Remove";
this.buttonRemove.UseVisualStyleBackColor = true;
this.buttonRemove.Click += new System.EventHandler(this.buttonRemove_Click);
//
// buttonReset
//
this.buttonReset.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.buttonReset.Location = new System.Drawing.Point(12, 56);
this.buttonReset.Name = "buttonReset";
this.buttonReset.Size = new System.Drawing.Size(75, 23);
this.buttonReset.TabIndex = 11;
this.buttonReset.Text = "Reset";
this.buttonReset.UseVisualStyleBackColor = true;
this.buttonReset.Click += new System.EventHandler(this.buttonReset_Click);
//
// FormHighlighting
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(643, 393);
this.Controls.Add(this.buttonReset);
this.Controls.Add(this.buttonRemove);
this.Controls.Add(this.buttonAdd);
this.Controls.Add(this.buttonCancel);
this.Controls.Add(this.buttonOK);
this.Controls.Add(this.listViewHighlights);
this.Controls.Add(this.comboBoxAction);
this.Controls.Add(this.labelThen);
this.Controls.Add(this.comboBoxValue);
this.Controls.Add(this.comboBoxRelation);
this.Controls.Add(this.comboBoxColumn);
this.Controls.Add(this.labelHighlight);
this.MaximizeBox = false;
this.MinimizeBox = false;
this.Name = "FormHighlighting";
this.ShowIcon = false;
this.Text = "RPC Monitor Highlighting";
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private System.Windows.Forms.Label labelHighlight;
private System.Windows.Forms.ComboBox comboBoxColumn;
private System.Windows.Forms.ComboBox comboBoxRelation;
private System.Windows.Forms.ComboBox comboBoxValue;
private System.Windows.Forms.Label labelThen;
private System.Windows.Forms.ComboBox comboBoxAction;
private System.Windows.Forms.ListView listViewHighlights;
private System.Windows.Forms.Button buttonOK;
private System.Windows.Forms.Button buttonCancel;
private System.Windows.Forms.Button buttonAdd;
private System.Windows.Forms.Button buttonRemove;
private System.Windows.Forms.ColumnHeader columnHeaderColumn;
private System.Windows.Forms.ColumnHeader columnHeaderRelation;
private System.Windows.Forms.ColumnHeader columnHeaderValue;
private System.Windows.Forms.ColumnHeader columnHeaderAction;
private System.Windows.Forms.Button buttonReset;
}
}
+122
View File
@@ -0,0 +1,122 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using static System.Windows.Forms.ListViewItem;
namespace RPCMon
{
public delegate void highlightRowsEventHandler(ListView i_ListView);
public partial class FormHighlighting : Form
{
public event highlightRowsEventHandler hightlightRowsUpdate;
public FormHighlighting(ref ListView i_ListViewHighlighFilter)
{
InitializeComponentWrapper();
foreach (ListViewItem item in i_ListViewHighlighFilter.Items)
{
ListViewItem clonedItem = (ListViewItem)item.Clone();
this.listViewHighlights.Items.Add(clonedItem);
}
}
private void InitializeComponentWrapper()
{
InitializeComponent();
this.comboBoxColumn.SelectedIndex = 0;
this.comboBoxRelation.SelectedIndex = 0;
this.comboBoxAction.SelectedIndex = 0;
this.listViewHighlights.FullRowSelect = true;
}
// DUPLICATED function in ColumnFilter
// Maybe create a shared function in Utils but it threw an exception for "type initializer"
private bool isRowExist(string i_Column, string i_Relation, string i_Value, string i_Action)
{
bool isExist = false;
string newRow = i_Column + i_Relation + i_Value + i_Action;
foreach (ListViewItem item in listViewHighlights.Items)
{
string rawRow = "";
foreach (ListViewSubItem subItem in item.SubItems)
{
rawRow += subItem.Text;
}
if (newRow == rawRow)
{
isExist = true;
break;
}
}
return isExist;
}
private void buttonAdd_Click(object sender, EventArgs e)
{
if (!isRowExist(comboBoxColumn.Text, comboBoxRelation.Text, comboBoxValue.Text, comboBoxAction.Text))
{
ListViewItem item = new ListViewItem(comboBoxColumn.Text);
item.SubItems.Add(comboBoxRelation.Text);
item.SubItems.Add(comboBoxValue.Text);
item.SubItems.Add(comboBoxAction.Text);
item.Checked = true;
this.listViewHighlights.Items.Add(item);
}
}
private void buttonCancel_Click(object sender, EventArgs e)
{
this.Close();
}
private void buttonRemove_Click(object sender, EventArgs e)
{
foreach (ListViewItem item in this.listViewHighlights.SelectedItems)
{
item.Remove();
}
}
private void listViewHighlights_MouseDoubleClick(object sender, MouseEventArgs e)
{
foreach (ListViewItem item in ((ListView)sender).SelectedItems)
{
this.comboBoxColumn.Text = item.SubItems[0].Text;
this.comboBoxRelation.Text = item.SubItems[1].Text;
this.comboBoxValue.Text = item.SubItems[2].Text;
this.comboBoxAction.Text = item.SubItems[3].Text;
item.Remove();
}
}
public virtual void OnHighlightRowsUpdate(ListView i_ListView)
{
if (hightlightRowsUpdate != null)
{
hightlightRowsUpdate.Invoke(i_ListView);
}
}
private void buttonOK_Click(object sender, EventArgs e)
{
OnHighlightRowsUpdate(listViewHighlights);
this.Close();
}
private void buttonReset_Click(object sender, EventArgs e)
{
this.listViewHighlights.Clear();
}
}
}
+120
View File
@@ -0,0 +1,120 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>
+143
View File
@@ -0,0 +1,143 @@
namespace RPCMon
{
partial class FormSearch
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.label1 = new System.Windows.Forms.Label();
this.comboBox1 = new System.Windows.Forms.ComboBox();
this.buttonFind = new System.Windows.Forms.Button();
this.buttonCancel = new System.Windows.Forms.Button();
this.groupBoxDirection = new System.Windows.Forms.GroupBox();
this.radioButtonUp = new System.Windows.Forms.RadioButton();
this.radioButtonDown = new System.Windows.Forms.RadioButton();
this.groupBoxDirection.SuspendLayout();
this.SuspendLayout();
//
// label1
//
this.label1.AutoSize = true;
this.label1.Location = new System.Drawing.Point(13, 13);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(56, 13);
this.label1.TabIndex = 0;
this.label1.Text = "Find what:";
//
// comboBox1
//
this.comboBox1.FormattingEnabled = true;
this.comboBox1.Location = new System.Drawing.Point(76, 13);
this.comboBox1.Name = "comboBox1";
this.comboBox1.Size = new System.Drawing.Size(215, 21);
this.comboBox1.TabIndex = 1;
//
// buttonFind
//
this.buttonFind.Location = new System.Drawing.Point(314, 11);
this.buttonFind.Name = "buttonFind";
this.buttonFind.Size = new System.Drawing.Size(75, 23);
this.buttonFind.TabIndex = 2;
this.buttonFind.Text = "Find Next";
this.buttonFind.UseVisualStyleBackColor = true;
this.buttonFind.Click += new System.EventHandler(this.buttonFind_Click);
//
// buttonCancel
//
this.buttonCancel.Location = new System.Drawing.Point(314, 53);
this.buttonCancel.Name = "buttonCancel";
this.buttonCancel.Size = new System.Drawing.Size(75, 23);
this.buttonCancel.TabIndex = 3;
this.buttonCancel.Text = "Cancel";
this.buttonCancel.UseVisualStyleBackColor = true;
this.buttonCancel.Click += new System.EventHandler(this.buttonCancel_Click);
//
// groupBoxDirection
//
this.groupBoxDirection.Controls.Add(this.radioButtonDown);
this.groupBoxDirection.Controls.Add(this.radioButtonUp);
this.groupBoxDirection.Location = new System.Drawing.Point(178, 53);
this.groupBoxDirection.Name = "groupBoxDirection";
this.groupBoxDirection.Size = new System.Drawing.Size(113, 63);
this.groupBoxDirection.TabIndex = 4;
this.groupBoxDirection.TabStop = false;
this.groupBoxDirection.Text = "Direction";
//
// radioButtonUp
//
this.radioButtonUp.AutoSize = true;
this.radioButtonUp.Location = new System.Drawing.Point(7, 29);
this.radioButtonUp.Name = "radioButtonUp";
this.radioButtonUp.Size = new System.Drawing.Size(39, 17);
this.radioButtonUp.TabIndex = 0;
this.radioButtonUp.Text = "Up";
this.radioButtonUp.UseVisualStyleBackColor = true;
//
// radioButtonDown
//
this.radioButtonDown.AutoSize = true;
this.radioButtonDown.Checked = true;
this.radioButtonDown.Location = new System.Drawing.Point(52, 29);
this.radioButtonDown.Name = "radioButtonDown";
this.radioButtonDown.Size = new System.Drawing.Size(53, 17);
this.radioButtonDown.TabIndex = 1;
this.radioButtonDown.TabStop = true;
this.radioButtonDown.Text = "Down";
this.radioButtonDown.UseVisualStyleBackColor = true;
//
// FormSearch
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(415, 144);
this.Controls.Add(this.groupBoxDirection);
this.Controls.Add(this.buttonCancel);
this.Controls.Add(this.buttonFind);
this.Controls.Add(this.comboBox1);
this.Controls.Add(this.label1);
this.MaximizeBox = false;
this.MinimizeBox = false;
this.Name = "FormSearch";
this.ShowIcon = false;
this.Text = "Find";
this.groupBoxDirection.ResumeLayout(false);
this.groupBoxDirection.PerformLayout();
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private System.Windows.Forms.Label label1;
private System.Windows.Forms.ComboBox comboBox1;
private System.Windows.Forms.Button buttonFind;
private System.Windows.Forms.Button buttonCancel;
private System.Windows.Forms.GroupBox groupBoxDirection;
private System.Windows.Forms.RadioButton radioButtonDown;
private System.Windows.Forms.RadioButton radioButtonUp;
}
}
+43
View File
@@ -0,0 +1,43 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace RPCMon
{
public delegate void searchEventHandler(string i_SearchString, bool i_SearchDown, bool i_MatchWholeWord, bool i_MatchSensitive);
public partial class FormSearch : Form
{
//internal searchEventHandler searchForMatch;
public event searchEventHandler searchForMatch;
public FormSearch()
{
InitializeComponent();
}
private void buttonCancel_Click(object sender, EventArgs e)
{
this.Close();
}
public virtual void OnSearchForMatch(string i_SearchString, bool i_SearchDown, bool i_MatchWholeWord, bool i_MatchSensitive)
{
if (searchForMatch != null)
{
searchForMatch.Invoke(i_SearchString, i_SearchDown, i_MatchWholeWord, i_MatchSensitive);
}
}
private void buttonFind_Click(object sender, EventArgs e)
{
OnSearchForMatch(comboBox1.Text, radioButtonDown.Checked, false, false);
}
}
}
+120
View File
@@ -0,0 +1,120 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>
+105
View File
@@ -0,0 +1,105 @@
using System.Collections;
using System.Windows.Forms;
namespace RPCMon
{
// https://stackoverflow.com/a/25761349/2153777
public class ListViewColumnSorter : IComparer
{
/// <summary>
/// Specifies the column to be sorted
/// </summary>
private int ColumnToSort;
/// <summary>
/// Specifies the order in which to sort (i.e. 'Ascending').
/// </summary>
private SortOrder OrderOfSort;
/// <summary>
/// Case insensitive comparer object
/// </summary>
private CaseInsensitiveComparer ObjectCompare;
/// <summary>
/// Class constructor. Initializes various elements
/// </summary>
public ListViewColumnSorter()
{
// Initialize the column to '0'
ColumnToSort = 0;
// Initialize the sort order to 'none'
OrderOfSort = SortOrder.None;
// Initialize the CaseInsensitiveComparer object
ObjectCompare = new CaseInsensitiveComparer();
}
/// <summary>
/// This method is inherited from the IComparer interface. It compares the two objects passed using a case insensitive comparison.
/// </summary>
/// <param name="x">First object to be compared</param>
/// <param name="y">Second object to be compared</param>
/// <returns>The result of the comparison. "0" if equal, negative if 'x' is less than 'y' and positive if 'x' is greater than 'y'</returns>
public int Compare(object x, object y)
{
int compareResult;
ListViewItem listviewX, listviewY;
// Cast the objects to be compared to ListViewItem objects
listviewX = (ListViewItem)x;
listviewY = (ListViewItem)y;
// Compare the two items
compareResult = ObjectCompare.Compare(listviewX.SubItems[ColumnToSort].Text, listviewY.SubItems[ColumnToSort].Text);
// Calculate correct return value based on object comparison
if (OrderOfSort == SortOrder.Ascending)
{
// Ascending sort is selected, return normal result of compare operation
return compareResult;
}
else if (OrderOfSort == SortOrder.Descending)
{
// Descending sort is selected, return negative result of compare operation
return (-compareResult);
}
else
{
// Return '0' to indicate they are equal
return 0;
}
}
/// <summary>
/// Gets or sets the number of the column to which to apply the sorting operation (Defaults to '0').
/// </summary>
public int SortColumn
{
set
{
ColumnToSort = value;
}
get
{
return ColumnToSort;
}
}
/// <summary>
/// Gets or sets the order of sorting to apply (for example, 'Ascending' or 'Descending').
/// </summary>
public SortOrder Order
{
set
{
OrderOfSort = value;
}
get
{
return OrderOfSort;
}
}
}
}
+22
View File
@@ -0,0 +1,22 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace RPCMon
{
static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}
}
}
+36
View File
@@ -0,0 +1,36 @@
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyTitle("RPCMon")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("RPCMon")]
[assembly: AssemblyCopyright("Copyright © 2022")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// Setting ComVisible to false makes the types in this assembly not visible
// to COM components. If you need to access a type in this assembly from
// COM, set the ComVisible attribute to true on that type.
[assembly: ComVisible(false)]
// The following GUID is for the ID of the typelib if this project is exposed to COM
[assembly: Guid("9de6bb01-5955-4ee7-bd74-b47aec15efbb")]
// Version information for an assembly consists of the following four values:
//
// Major Version
// Minor Version
// Build Number
// Revision
//
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]
+183
View File
@@ -0,0 +1,183 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.42000
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace RPCMon.Properties {
using System;
/// <summary>
/// A strongly-typed resource class, for looking up localized strings, etc.
/// </summary>
// This class was auto-generated by the StronglyTypedResourceBuilder
// class via a tool like ResGen or Visual Studio.
// To add or remove a member, edit your .ResX file then rerun ResGen
// with the /str option, or rebuild your VS project.
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "15.0.0.0")]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
internal class Resources {
private static global::System.Resources.ResourceManager resourceMan;
private static global::System.Globalization.CultureInfo resourceCulture;
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
internal Resources() {
}
/// <summary>
/// Returns the cached ResourceManager instance used by this class.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Resources.ResourceManager ResourceManager {
get {
if (object.ReferenceEquals(resourceMan, null)) {
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("RPCMon.Properties.Resources", typeof(Resources).Assembly);
resourceMan = temp;
}
return resourceMan;
}
}
/// <summary>
/// Overrides the current thread's CurrentUICulture property for all
/// resource lookups using this strongly typed resource class.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Globalization.CultureInfo Culture {
get {
return resourceCulture;
}
set {
resourceCulture = value;
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap duplicate {
get {
object obj = ResourceManager.GetObject("duplicate", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap duplicate_disable {
get {
object obj = ResourceManager.GetObject("duplicate-disable", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap eraser {
get {
object obj = ResourceManager.GetObject("eraser", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap filter {
get {
object obj = ResourceManager.GetObject("filter", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap find {
get {
object obj = ResourceManager.GetObject("find", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap grid {
get {
object obj = ResourceManager.GetObject("grid", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap grid_disable {
get {
object obj = ResourceManager.GetObject("grid-disable", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap highlighter {
get {
object obj = ResourceManager.GetObject("highlighter", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap pause_button {
get {
object obj = ResourceManager.GetObject("pause-button", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap share {
get {
object obj = ResourceManager.GetObject("share", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap startIcon {
get {
object obj = ResourceManager.GetObject("startIcon", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap stopIcon {
get {
object obj = ResourceManager.GetObject("stopIcon", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
}
}
+157
View File
@@ -0,0 +1,157 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="grid" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\grid.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="filter" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\filter.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="grid-disable" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\grid-disable.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="highlighter" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\highlighter.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="find" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\find.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="stopIcon" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\stopIcon.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="pause-button" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\pause-button.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="share" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\share.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="startIcon" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\startIcon.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="eraser" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\eraser.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="duplicate" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\duplicate.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="duplicate-disable" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\duplicate-disable.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
</root>
+30
View File
@@ -0,0 +1,30 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.42000
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace RPCMon.Properties
{
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")]
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase
{
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
public static Settings Default
{
get
{
return defaultInstance;
}
}
}
}
+7
View File
@@ -0,0 +1,7 @@
<?xml version='1.0' encoding='utf-8'?>
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)">
<Profiles>
<Profile Name="(Default)" />
</Profiles>
<Settings />
</SettingsFile>
+185
View File
@@ -0,0 +1,185 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{9DE6BB01-5955-4EE7-BD74-B47AEC15EFBB}</ProjectGuid>
<OutputType>WinExe</OutputType>
<RootNamespace>RPCMon</RootNamespace>
<AssemblyName>RPCMon</AssemblyName>
<TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
<Deterministic>true</Deterministic>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<PlatformTarget>x64</PlatformTarget>
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<Prefer32Bit>true</Prefer32Bit>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="Microsoft.Diagnostics.Tracing.TraceEvent">
<HintPath>..\Packages\Microsoft.Diagnostics.Tracing.TraceEvent.2.0.42\lib\net45\Microsoft.Diagnostics.Tracing.TraceEvent.dll</HintPath>
</Reference>
<Reference Include="Newtonsoft.Json">
<HintPath>..\Packages\Newtonsoft.Json.13.0.1\lib\net45\Newtonsoft.Json.dll</HintPath>
</Reference>
<Reference Include="NtApiDotNet, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\NtApiDotNet.1.1.33\lib\net461\NtApiDotNet.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.DirectoryServices" />
<Reference Include="System.Security" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" />
<Reference Include="System.Deployment" />
<Reference Include="System.Drawing" />
<Reference Include="System.Net.Http" />
<Reference Include="System.Windows.Forms" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="ColumnFilter.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="ColumnFilter.Designer.cs">
<DependentUpon>ColumnFilter.cs</DependentUpon>
</Compile>
<Compile Include="ColumnSelection.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="ColumnSelection.Designer.cs">
<DependentUpon>ColumnSelection.cs</DependentUpon>
</Compile>
<Compile Include="Control\Engine.cs" />
<Compile Include="Control\Microsoft-Windows-RPC.cs" />
<Compile Include="Control\RPCServerInfo.cs" />
<Compile Include="Control\Win32NativeMethods.cs" />
<Compile Include="Form1.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="Form1.Designer.cs">
<DependentUpon>Form1.cs</DependentUpon>
</Compile>
<Compile Include="FormBuildDB.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="FormBuildDB.Designer.cs">
<DependentUpon>FormBuildDB.cs</DependentUpon>
</Compile>
<Compile Include="FormHighlighting.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="FormHighlighting.Designer.cs">
<DependentUpon>FormHighlighting.cs</DependentUpon>
</Compile>
<Compile Include="FormSearch.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="FormSearch.Designer.cs">
<DependentUpon>FormSearch.cs</DependentUpon>
</Compile>
<Compile Include="ListViewColumnSorter.cs" />
<Compile Include="Program.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="Utils.cs" />
<EmbeddedResource Include="ColumnFilter.resx">
<DependentUpon>ColumnFilter.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="ColumnSelection.resx">
<DependentUpon>ColumnSelection.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Form1.resx">
<DependentUpon>Form1.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="FormBuildDB.resx">
<DependentUpon>FormBuildDB.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="FormHighlighting.resx">
<DependentUpon>FormHighlighting.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="FormSearch.resx">
<DependentUpon>FormSearch.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Properties\Resources.resx">
<Generator>ResXFileCodeGenerator</Generator>
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
<SubType>Designer</SubType>
</EmbeddedResource>
<Compile Include="Properties\Resources.Designer.cs">
<AutoGen>True</AutoGen>
<DependentUpon>Resources.resx</DependentUpon>
<DesignTime>True</DesignTime>
</Compile>
<None Include="packages.config" />
<None Include="Properties\Settings.settings">
<Generator>SettingsSingleFileGenerator</Generator>
<LastGenOutput>Settings.Designer.cs</LastGenOutput>
</None>
<Compile Include="Properties\Settings.Designer.cs">
<AutoGen>True</AutoGen>
<DependentUpon>Settings.settings</DependentUpon>
<DesignTimeSharedInput>True</DesignTimeSharedInput>
</Compile>
</ItemGroup>
<ItemGroup>
<None Include="App.config" />
</ItemGroup>
<ItemGroup>
<None Include="README.md" />
<None Include="Resources\startIcon.png" />
</ItemGroup>
<ItemGroup>
<None Include="Resources\stopIcon.png" />
</ItemGroup>
<ItemGroup>
<None Include="Resources\filter.png" />
</ItemGroup>
<ItemGroup>
<None Include="Resources\eraser.png" />
</ItemGroup>
<ItemGroup>
<None Include="Resources\pause-button.png" />
</ItemGroup>
<ItemGroup>
<None Include="Resources\find.png" />
</ItemGroup>
<ItemGroup>
<None Include="Resources\highlighter.png" />
</ItemGroup>
<ItemGroup>
<None Include="Resources\share.png" />
</ItemGroup>
<ItemGroup>
<None Include="Resources\grid.png" />
</ItemGroup>
<ItemGroup>
<None Include="Resources\grid-disable.png" />
</ItemGroup>
<ItemGroup>
<None Include="Resources\duplicate.png" />
</ItemGroup>
<ItemGroup>
<None Include="Resources\duplicate-disable.png" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project>
Binary file not shown.

After

Width:  |  Height:  |  Size: 789 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 633 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 915 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 727 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 747 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 919 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 805 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 975 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 838 B

Some files were not shown because too many files have changed in this diff Show More