Full Code of x-nas/WinPacketsEdit for AI

master 8066a5a715b5 cached
165 files
31.3 MB
8.2M tokens
1264 symbols
1 requests
Copy disabled (too large) Download .txt
Showing preview only (32,915K chars total). Download the full file to get everything.
Repository: x-nas/WinPacketsEdit
Branch: master
Commit: 8066a5a715b5
Files: 165
Total size: 31.3 MB

Directory structure:
gitextract_dgoijda3/

├── .gitattributes
├── .gitignore
├── LICENSE
├── README.md
├── WPELibrary/
│   ├── Lib/
│   │   ├── IconExtractor/
│   │   │   ├── IconExtractor.cs
│   │   │   └── IconUtil.cs
│   │   ├── MultiLanguage.cs
│   │   ├── NativeMethods/
│   │   │   ├── Kernel32.cs
│   │   │   ├── Mswsock.cs
│   │   │   ├── User32.cs
│   │   │   ├── WS2_32.cs
│   │   │   └── WSock32.cs
│   │   ├── Proxy_AccountInfo.cs
│   │   ├── Proxy_AuthInfo.cs
│   │   ├── Proxy_MapLocal.cs
│   │   ├── Proxy_MapRemote.cs
│   │   ├── Socket_BitInfo.cs
│   │   ├── Socket_Cache.cs
│   │   ├── Socket_FilterInfo.cs
│   │   ├── Socket_LogInfo.cs
│   │   ├── Socket_Operation.cs
│   │   ├── Socket_PacketInfo.cs
│   │   ├── Socket_ProxyData.cs
│   │   ├── Socket_ProxyTCP.cs
│   │   ├── Socket_ProxyUDP.cs
│   │   ├── Socket_Robot.cs
│   │   ├── Socket_RobotInfo.cs
│   │   ├── Socket_Send.cs
│   │   ├── Socket_SendInfo.cs
│   │   ├── UserControl/
│   │   │   └── HotkeyTextBox.cs
│   │   ├── WebAPI/
│   │   │   ├── CCProxy_Controller.cs
│   │   │   ├── ProxyAccount_Controller.cs
│   │   │   ├── ProxyInfo_Controller.cs
│   │   │   ├── SocketInfo_Controller.cs
│   │   │   ├── Socket_Web.cs
│   │   │   └── SystemInfo_Controller.cs
│   │   └── WinSockHook.cs
│   ├── Properties/
│   │   ├── AssemblyInfo.cs
│   │   ├── Resources.Designer.cs
│   │   ├── Resources.resx
│   │   └── app.manifest
│   ├── Proxy_AccountAuthForm.Designer.cs
│   ├── Proxy_AccountAuthForm.cs
│   ├── Proxy_AccountAuthForm.en-US.resx
│   ├── Proxy_AccountAuthForm.resx
│   ├── Proxy_AccountDevicesForm.Designer.cs
│   ├── Proxy_AccountDevicesForm.cs
│   ├── Proxy_AccountDevicesForm.en-US.resx
│   ├── Proxy_AccountDevicesForm.resx
│   ├── Proxy_AccountForm.Designer.cs
│   ├── Proxy_AccountForm.cs
│   ├── Proxy_AccountForm.en-US.resx
│   ├── Proxy_AccountForm.resx
│   ├── Proxy_AccountLinksForm.Designer.cs
│   ├── Proxy_AccountLinksForm.cs
│   ├── Proxy_AccountLinksForm.en-US.resx
│   ├── Proxy_AccountLinksForm.resx
│   ├── Proxy_AccountListForm.Designer.cs
│   ├── Proxy_AccountListForm.cs
│   ├── Proxy_AccountListForm.en-US.resx
│   ├── Proxy_AccountListForm.resx
│   ├── Proxy_AccountLoginForm.Designer.cs
│   ├── Proxy_AccountLoginForm.cs
│   ├── Proxy_AccountLoginForm.en-US.resx
│   ├── Proxy_AccountLoginForm.resx
│   ├── Proxy_AccountTimeForm.Designer.cs
│   ├── Proxy_AccountTimeForm.cs
│   ├── Proxy_AccountTimeForm.en-US.resx
│   ├── Proxy_AccountTimeForm.resx
│   ├── Proxy_MapLocalForm.Designer.cs
│   ├── Proxy_MapLocalForm.cs
│   ├── Proxy_MapLocalForm.en-US.resx
│   ├── Proxy_MapLocalForm.resx
│   ├── Proxy_MapLocalListForm.Designer.cs
│   ├── Proxy_MapLocalListForm.cs
│   ├── Proxy_MapLocalListForm.en-US.resx
│   ├── Proxy_MapLocalListForm.resx
│   ├── Proxy_MapRemoteForm.Designer.cs
│   ├── Proxy_MapRemoteForm.cs
│   ├── Proxy_MapRemoteForm.en-US.resx
│   ├── Proxy_MapRemoteForm.resx
│   ├── Proxy_MapRemoteListForm.Designer.cs
│   ├── Proxy_MapRemoteListForm.cs
│   ├── Proxy_MapRemoteListForm.en-US.resx
│   ├── Proxy_MapRemoteListForm.resx
│   ├── Socket_CompareForm.Designer.cs
│   ├── Socket_CompareForm.cs
│   ├── Socket_CompareForm.en-US.resx
│   ├── Socket_CompareForm.resx
│   ├── Socket_FilterForm.Designer.cs
│   ├── Socket_FilterForm.cs
│   ├── Socket_FilterForm.en-US.resx
│   ├── Socket_FilterForm.resx
│   ├── Socket_FindForm.Designer.cs
│   ├── Socket_FindForm.cs
│   ├── Socket_FindForm.en-US.resx
│   ├── Socket_FindForm.resx
│   ├── Socket_Form.Designer.cs
│   ├── Socket_Form.cs
│   ├── Socket_Form.en-US.resx
│   ├── Socket_Form.resx
│   ├── Socket_PasswordFrom.Designer.cs
│   ├── Socket_PasswordFrom.cs
│   ├── Socket_PasswordFrom.en-US.resx
│   ├── Socket_PasswordFrom.resx
│   ├── Socket_RobotForm.Designer.cs
│   ├── Socket_RobotForm.cs
│   ├── Socket_RobotForm.en-US.resx
│   ├── Socket_RobotForm.resx
│   ├── Socket_SendForm.Designer.cs
│   ├── Socket_SendForm.cs
│   ├── Socket_SendForm.en-US.resx
│   ├── Socket_SendForm.resx
│   ├── Socket_SendListForm.Designer.cs
│   ├── Socket_SendListForm.cs
│   ├── Socket_SendListForm.en-US.resx
│   ├── Socket_SendListForm.resx
│   ├── TextComparison/
│   │   ├── TextCompareForm.Designer.cs
│   │   ├── TextCompareForm.cs
│   │   ├── TextCompareForm.en-US.resx
│   │   ├── TextCompareForm.resx
│   │   ├── TextDuplicateForm.Designer.cs
│   │   ├── TextDuplicateForm.cs
│   │   ├── TextDuplicateForm.en-US.resx
│   │   └── TextDuplicateForm.resx
│   ├── WPELibrary.csproj
│   ├── app.config
│   └── packages.config
├── WinSockPacketEditor.sln
└── WinsockPacketEditor/
    ├── Injector_Form.Designer.cs
    ├── Injector_Form.cs
    ├── Injector_Form.en-US.resx
    ├── Injector_Form.resx
    ├── Lib/
    │   └── Program.cs
    ├── ProcessList_Form.Designer.cs
    ├── ProcessList_Form.cs
    ├── ProcessList_Form.en-US.resx
    ├── ProcessList_Form.resx
    ├── Properties/
    │   ├── AssemblyInfo.cs
    │   ├── Resources.Designer.cs
    │   ├── Resources.resx
    │   └── app.manifest
    ├── SocketProxy_Form.Designer.cs
    ├── SocketProxy_Form.cs
    ├── SocketProxy_Form.en-US.resx
    ├── SocketProxy_Form.resx
    ├── SystemMode_Form.Designer.cs
    ├── SystemMode_Form.cs
    ├── SystemMode_Form.en-US.resx
    ├── SystemMode_Form.resx
    ├── Web/
    │   ├── CCProxy/
    │   │   └── cn_acclistadmin.htm
    │   ├── EditAccount.html
    │   ├── ProxyAccount.html
    │   ├── SystemLog.html
    │   ├── footer.html
    │   ├── header.html
    │   ├── index.html
    │   └── web_images/
    │       ├── downloads.css
    │       ├── github-dark.css
    │       ├── print.css
    │       ├── script.js
    │       └── stylesheet.css
    ├── WinsockPacketEditor.csproj
    ├── app.config
    └── packages.config

================================================
FILE CONTENTS
================================================

================================================
FILE: .gitattributes
================================================
###############################################################################
# Set default behavior to automatically normalize line endings.
###############################################################################
* text=auto

###############################################################################
# Set default behavior for command prompt diff.
#
# This is need for earlier builds of msysgit that does not have it on by
# default for csharp files.
# Note: This is only used by command line
###############################################################################
#*.cs     diff=csharp

###############################################################################
# Set the merge driver for project and solution files
#
# Merging from the command prompt will add diff markers to the files if there
# are conflicts (Merging from VS is not affected by the settings below, in VS
# the diff markers are never inserted). Diff markers may cause the following 
# file extensions to fail to load in VS. An alternative would be to treat
# these files as binary and thus will always conflict and require user
# intervention with every merge. To do so, just uncomment the entries below
###############################################################################
#*.sln       merge=binary
#*.csproj    merge=binary
#*.vbproj    merge=binary
#*.vcxproj   merge=binary
#*.vcproj    merge=binary
#*.dbproj    merge=binary
#*.fsproj    merge=binary
#*.lsproj    merge=binary
#*.wixproj   merge=binary
#*.modelproj merge=binary
#*.sqlproj   merge=binary
#*.wwaproj   merge=binary

###############################################################################
# behavior for image files
#
# image files are treated as binary by default.
###############################################################################
#*.jpg   binary
#*.png   binary
#*.gif   binary

###############################################################################
# diff behavior for common document formats
# 
# Convert binary document formats to text before diffing them. This feature
# is only available from the command line. Turn it on by uncommenting the 
# entries below.
###############################################################################
#*.doc   diff=astextplain
#*.DOC   diff=astextplain
#*.docx  diff=astextplain
#*.DOCX  diff=astextplain
#*.dot   diff=astextplain
#*.DOT   diff=astextplain
#*.pdf   diff=astextplain
#*.PDF   diff=astextplain
#*.rtf   diff=astextplain
#*.RTF   diff=astextplain


================================================
FILE: .gitignore
================================================
## Ignore Visual Studio temporary files, build results, and
## files generated by popular Visual Studio add-ons.
##
## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore

# User-specific files
*.rsuser
*.suo
*.user
*.userosscache
*.sln.docstates

# User-specific files (MonoDevelop/Xamarin Studio)
*.userprefs

# Mono auto generated files
mono_crash.*

# Build results
[Dd]ebug/
[Dd]ebugPublic/
[Rr]elease/
[Rr]eleases/
x64/
x86/
[Ww][Ii][Nn]32/
[Aa][Rr][Mm]/
[Aa][Rr][Mm]64/
bld/
[Bb]in/
[Oo]bj/
[Oo]ut/
[Ll]og/
[Ll]ogs/

# Visual Studio 2015/2017 cache/options directory
.vs/
# Uncomment if you have tasks that create the project's static files in wwwroot
#wwwroot/

# Visual Studio 2017 auto generated files
Generated\ Files/

# MSTest test Results
[Tt]est[Rr]esult*/
[Bb]uild[Ll]og.*

# NUnit
*.VisualState.xml
TestResult.xml
nunit-*.xml

# Build Results of an ATL Project
[Dd]ebugPS/
[Rr]eleasePS/
dlldata.c

# Benchmark Results
BenchmarkDotNet.Artifacts/

# .NET Core
project.lock.json
project.fragment.lock.json
artifacts/

# ASP.NET Scaffolding
ScaffoldingReadMe.txt

# StyleCop
StyleCopReport.xml

# Files built by Visual Studio
*_i.c
*_p.c
*_h.h
*.ilk
*.meta
*.obj
*.iobj
*.pch
*.pdb
*.ipdb
*.pgc
*.pgd
*.rsp
*.sbr
*.tlb
*.tli
*.tlh
*.tmp
*.tmp_proj
*_wpftmp.csproj
*.log
*.vspscc
*.vssscc
.builds
*.pidb
*.svclog
*.scc

# Chutzpah Test files
_Chutzpah*

# Visual C++ cache files
ipch/
*.aps
*.ncb
*.opendb
*.opensdf
*.sdf
*.cachefile
*.VC.db
*.VC.VC.opendb

# Visual Studio profiler
*.psess
*.vsp
*.vspx
*.sap

# Visual Studio Trace Files
*.e2e

# TFS 2012 Local Workspace
$tf/

# Guidance Automation Toolkit
*.gpState

# ReSharper is a .NET coding add-in
_ReSharper*/
*.[Rr]e[Ss]harper
*.DotSettings.user

# TeamCity is a build add-in
_TeamCity*

# DotCover is a Code Coverage Tool
*.dotCover

# AxoCover is a Code Coverage Tool
.axoCover/*
!.axoCover/settings.json

# Coverlet is a free, cross platform Code Coverage Tool
coverage*.json
coverage*.xml
coverage*.info

# Visual Studio code coverage results
*.coverage
*.coveragexml

# NCrunch
_NCrunch_*
.*crunch*.local.xml
nCrunchTemp_*

# MightyMoose
*.mm.*
AutoTest.Net/

# Web workbench (sass)
.sass-cache/

# Installshield output folder
[Ee]xpress/

# DocProject is a documentation generator add-in
DocProject/buildhelp/
DocProject/Help/*.HxT
DocProject/Help/*.HxC
DocProject/Help/*.hhc
DocProject/Help/*.hhk
DocProject/Help/*.hhp
DocProject/Help/Html2
DocProject/Help/html

# Click-Once directory
publish/

# Publish Web Output
*.[Pp]ublish.xml
*.azurePubxml
# Note: Comment the next line if you want to checkin your web deploy settings,
# but database connection strings (with potential passwords) will be unencrypted
*.pubxml
*.publishproj

# Microsoft Azure Web App publish settings. Comment the next line if you want to
# checkin your Azure Web App publish settings, but sensitive information contained
# in these scripts will be unencrypted
PublishScripts/

# NuGet Packages
*.nupkg
# NuGet Symbol Packages
*.snupkg
# The packages folder can be ignored because of Package Restore
**/[Pp]ackages/*
# except build/, which is used as an MSBuild target.
!**/[Pp]ackages/build/
# Uncomment if necessary however generally it will be regenerated when needed
#!**/[Pp]ackages/repositories.config
# NuGet v3's project.json files produces more ignorable files
*.nuget.props
*.nuget.targets

# Microsoft Azure Build Output
csx/
*.build.csdef

# Microsoft Azure Emulator
ecf/
rcf/

# Windows Store app package directories and files
AppPackages/
BundleArtifacts/
Package.StoreAssociation.xml
_pkginfo.txt
*.appx
*.appxbundle
*.appxupload

# Visual Studio cache files
# files ending in .cache can be ignored
*.[Cc]ache
# but keep track of directories ending in .cache
!?*.[Cc]ache/

# Others
ClientBin/
~$*
*~
*.dbmdl
*.dbproj.schemaview
*.jfm
*.pfx
*.publishsettings
orleans.codegen.cs

# Including strong name files can present a security risk
# (https://github.com/github/gitignore/pull/2483#issue-259490424)
#*.snk

# Since there are multiple workflows, uncomment next line to ignore bower_components
# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
#bower_components/

# RIA/Silverlight projects
Generated_Code/

# Backup & report files from converting an old project file
# to a newer Visual Studio version. Backup files are not needed,
# because we have git ;-)
_UpgradeReport_Files/
Backup*/
UpgradeLog*.XML
UpgradeLog*.htm
ServiceFabricBackup/
*.rptproj.bak

# SQL Server files
*.mdf
*.ldf
*.ndf

# Business Intelligence projects
*.rdl.data
*.bim.layout
*.bim_*.settings
*.rptproj.rsuser
*- [Bb]ackup.rdl
*- [Bb]ackup ([0-9]).rdl
*- [Bb]ackup ([0-9][0-9]).rdl

# Microsoft Fakes
FakesAssemblies/

# GhostDoc plugin setting file
*.GhostDoc.xml

# Node.js Tools for Visual Studio
.ntvs_analysis.dat
node_modules/

# Visual Studio 6 build log
*.plg

# Visual Studio 6 workspace options file
*.opt

# Visual Studio 6 auto-generated workspace file (contains which files were open etc.)
*.vbw

# Visual Studio LightSwitch build output
**/*.HTMLClient/GeneratedArtifacts
**/*.DesktopClient/GeneratedArtifacts
**/*.DesktopClient/ModelManifest.xml
**/*.Server/GeneratedArtifacts
**/*.Server/ModelManifest.xml
_Pvt_Extensions

# Paket dependency manager
.paket/paket.exe
paket-files/

# FAKE - F# Make
.fake/

# CodeRush personal settings
.cr/personal

# Python Tools for Visual Studio (PTVS)
__pycache__/
*.pyc

# Cake - Uncomment if you are using it
# tools/**
# !tools/packages.config

# Tabs Studio
*.tss

# Telerik's JustMock configuration file
*.jmconfig

# BizTalk build output
*.btp.cs
*.btm.cs
*.odx.cs
*.xsd.cs

# OpenCover UI analysis results
OpenCover/

# Azure Stream Analytics local run output
ASALocalRun/

# MSBuild Binary and Structured Log
*.binlog

# NVidia Nsight GPU debugger configuration file
*.nvuser

# MFractors (Xamarin productivity tool) working folder
.mfractor/

# Local History for Visual Studio
.localhistory/

# BeatPulse healthcheck temp database
healthchecksdb

# Backup folder for Package Reference Convert tool in Visual Studio 2017
MigrationBackup/

# Ionide (cross platform F# VS Code tools) working folder
.ionide/

# Fody - auto-generated XML schema
FodyWeavers.xsd
/WinsockPacketEditor/Resources/Thumbs.db


================================================
FILE: LICENSE
================================================
MIT License

Copyright (c) 2024 x-nas

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.


================================================
FILE: README.md
================================================
<div align="center">
<p><img src="https://www.wpe64.com/web_images/wpe.png" height="150"></p>

# Winsock Packet Editor(WPE x64)

<img src="https://img.shields.io/github/license/x-nas/WinsockPacketEditor" alt="License"></img>
[![Visitors](https://visitor-badge.laobi.icu/badge?page_id=x-nas.WinsockPacketEditor&title=Visitors)](https://github.com/x-nas/WinsockPacketEditor)
![GitHub Repo stars](https://img.shields.io/github/stars/x-nas/WinsockPacketEditor?style=dark)
![GitHub Repo forks](https://img.shields.io/github/forks/x-nas/WinsockPacketEditor?style=dark)
[![Release](https://img.shields.io/github/v/release/x-nas/WinsockPacketEditor?sort=semver)](https://github.com/x-nas/WinsockPacketEditor/releases)

&bull; <a href="https://www.wpe64.com">官方网站</a>
&bull; <a href="https://www.wpe64.com">Official website</a>

</div>

## [⭐] 星星历史

[![Star History Chart](https://api.star-history.com/svg?repos=x-nas/WinsockPacketEditor&type=Date)](https://www.star-history.com/#x-nas/WinsockPacketEditor&Date)

## [📚] 软件简介

WPE x64 是一款可以拦截并修改 WinSock 封包的 Windows 软件,自适应支持 32 位及 64 位的目标程序,软件支持 SOCKS 代理和进程注入两种模式,并且具有高级滤镜和自动化机器人等功能,开发中使用了 C# 的多线程和消息队列技术,测试拦截了 100 万+的封包不会卡死或退出.

WPE x64 支持直接注入 Windows 进程来拦截 Winsock 封包,也可以通过 SOCKS 代理模式来拦截 Winsock 封包.

## [📚] Introduction

WPE x64 is a Windows software that can intercept and modify WinSock packets, with adaptive support for 32-bit and 64-bit target programs. The software supports two modes: SOCKS proxy and process injection, and has advanced filters and automated robots. It uses C# multi threading and message queue technology in development, and has intercepted over 1 million packets without freezing or exiting. 

WPE x64 supports direct injection into Windows processes to intercept Winsock packets, and can also intercept Winsock packets through SOCKS proxy mode.

## [🎖️] 软件特色

- [x] 支持 SOCKS 代理和进程注入两种模式,确保在各种情况下都可以拦截到 Winsock 封包.
- [x] 代理模式下支持多种主流代理协议和 SSL 安全协议,并具有端口映射和断点调试等功能.
- [x] 具备自动化的可编程机器人功能,可在满足触发条件的情况下执行预定义的指令集.
- [x] 消息队列缓存模式,所有的封包依次排队进入 MQ 队列,无需等待缓存结束后再显示封包.
- [x] 您可以自定义需要拦截的封包类型,已包含 WinSock 1.1 和 2.0 的 APIs.
- [x] 注入器和封包编辑器相对独立,可一次注入多个软件后,分别获取不同程序的网络封包.
- [x] 您可以通过选择一个尚未运行的程序注入后,从启动阶段即开始获取程序的所有封包数据.
- [x] 直观的封包对比功能,支持多种数据格式之间快速切换.
- [x] 您可以方便的对封包内容进行搜索,支持多种数据格式的快速搜索定位.
- [x] 支持批量发送封包,您可以自定义发送的顺序和循环次数,并支持导入导出和备注功能.
- [x] 强大的滤镜功能,支持高级滤镜,并且可以自定义修改封包的长度和修改次数.
- [x] 支持注入 Winsock 代理程序后,再获取目标程序的网络封包.
- [x] 您可以直接注入各类模拟器,并直接获取模拟器以及运行的程序的网络封包.
- [x] 您对系统的各种配置都会及时的进行保存,下次启动软件时会自动带出上一次的设置.
- [x] 软件运行期间会实时记录运行日志并支持导出,方便定位问题和提交处理.
- [x] 支持 64 位的 Windows 操作系统和 64 位的目标程序,并且会根据目标进程的类型来自动调用 32 位或 64 位的动态库注入目标程序.
- [x] 软件使用的 .NET 程序集不需要在全局程序集缓存(GAC)中注册,大大简化了使用和二次开发.
- [x] 支持多线程技术,处理封包时不会影响程序的正常操作.
- [x] 拦截封包结束后会自动处理挂钩并释放资源,避免对程序运行产生影响.
- [x] 不会使目标程序产生资源和内存泄露风险.
- [x] 软件安装时会自动检测必须的组件和运行库,确保NET框架已安装.
- [x] 采用微软 ClickOnce 发布技术,支持在线自动安装和更新.
- [x] 支持多语言版本,方便不同国家和地区的用户使用.

## [🎖️] Features

- [x] Supports both SOCKS proxy and process injection modes to ensure that Winsock packets can be intercepted in various situations.
- [x] In proxy mode, it supports multiple mainstream proxy protocols and SSL security protocols, and has functions such as port mapping and breakpoint debugging.
- [x] Equipped with automated programmable robot functionality, capable of executing pre-defined instruction sets under triggering conditions.
- [x] Message queue caching mode, where all packets are queued in sequence to enter the MQ queue and processed according to the first in, first out rule, without waiting for the cache to finish before displaying the packets.
- [x] You can customize the packet types that need to be intercepted, which already include APIs for WinSock 1.1 and 2.0.
- [x] The injector and packet editor are relatively independent, and can inject multiple software at once to obtain network packets from different programs separately.
- [x] You can inject a program that has not yet been run and start obtaining all packet data of the program from the startup phase.
- [x] Intuitive packet comparison function, supporting quick switching between multiple data formats.
- [x] You can easily search the contents of the package and support fast search and location of multiple data formats.
- [x] Support batch sending of packets, you can customize the order and number of cycles of sending, and support import/export and remark functions.
- [x] Powerful filter function, supports advanced filters, and can customize the length and modification times of the package.
- [x] Support injecting Winsock proxy program and then obtaining network packets of the target program.
- [x] You can directly inject various simulators and obtain network packets of simulators and running programs directly.
- [x] You will save various configurations of the system in a timely manner, and the next time you start the software, the previous settings will be automatically brought up.
- [x] During software operation, real-time running logs will be recorded and exported, making it easy to locate problems and submit for processing.
- [x] Supports 64 bit Windows operating system and 64 bit target programs, and automatically calls 32-bit or 64 bit dynamic libraries to inject target programs based on the type of target process.
- [x] The NET assembly used by the software does not need to be registered in the Global Assembly Cache (GAC), greatly simplifying usage and secondary development.
- [x] Support multi-threaded technology, processing packets will not affect the normal operation of the program.
- [x] After intercepting packets, hooks will be automatically processed and resources will be released to avoid any impact on program operation.
- [x] Will not pose a risk of resource and memory leakage to the target program.
- [x] During software installation, necessary components and runtime libraries will be automatically detected to ensure that the NET framework is installed.
- [x] Adopting Microsoft ClickOnce release technology, supporting online automatic installation and updates.
- [x] Supports multiple language versions, making it convenient for users from different countries and regions to use.

## [🖼️] 软件界面 Software UI

<img width="1200" height="750" alt="Home" src="https://github.com/user-attachments/assets/fbdaba92-edf8-486c-905a-a92ebb523ea2" />

<img width="1450" height="802" alt="PacketList" src="https://github.com/user-attachments/assets/59f26b9d-e6df-4ccd-b3a4-9807d7db5ba8" />

<img width="1450" height="802" alt="Statistical" src="https://github.com/user-attachments/assets/9e5f5330-ebe0-4b3f-92eb-c13ec6329a78" />

<img width="1450" height="802" alt="Robot" src="https://github.com/user-attachments/assets/b7eb16b7-fee1-4381-8b7f-0ab6e49287a4" />

![111](https://github.com/user-attachments/assets/e33412c1-3a9f-41f8-b23e-aada6a1bb104)

![222](https://github.com/user-attachments/assets/6c9f6fa8-94a9-4aea-8119-2ebe152ff7c2)

## [👏] 特别说明 Special Note

本项目已加入 [DotNetGuide](https://github.com/YSGStudyHards/DotNetGuide)  列表。<br/>
本项目已加入 [dotNET China](https://gitee.com/dotnetchina)  组织。<br/>

![dotnetchina](https://images.gitee.com/uploads/images/2021/0324/120117_2da9922c_416720.png "132645_21007ea0_974299.png")


================================================
FILE: WPELibrary/Lib/IconExtractor/IconExtractor.cs
================================================
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.IO;
using System.Runtime.InteropServices;
using System.Text;
using WPELibrary.Lib.NativeMethods;

namespace WPELibrary.Lib.IconExtractor
{
    public class IconExtractor
    {
        ////////////////////////////////////////////////////////////////////////
        // Constants

        // Flags for LoadLibraryEx().

        private const uint LOAD_LIBRARY_AS_DATAFILE = 0x00000002;

        // Resource types for EnumResourceNames().

        private readonly static IntPtr RT_ICON = (IntPtr)3;
        private readonly static IntPtr RT_GROUP_ICON = (IntPtr)14;

        private const int MAX_PATH = 260;

        ////////////////////////////////////////////////////////////////////////
        // Fields

        private byte[][] iconData = null;   // Binary data of each icon.

        ////////////////////////////////////////////////////////////////////////
        // Public properties

        /// <summary>
        /// Gets the full path of the associated file.
        /// </summary>
        public string FileName
        {
            get;
            private set;
        }

        /// <summary>
        /// Gets the count of the icons in the associated file.
        /// </summary>
        public int Count
        {
            get { return iconData.Length; }
        }

        /// <summary>
        /// Initializes a new instance of the IconExtractor class from the specified file name.
        /// </summary>
        /// <param name="fileName">The file to extract icons from.</param>
        public IconExtractor(string fileName)
        {
            Initialize(fileName);
        }

        /// <summary>
        /// Extracts an icon from the file.
        /// </summary>
        /// <param name="index">Zero based index of the icon to be extracted.</param>
        /// <returns>A System.Drawing.Icon object.</returns>
        /// <remarks>Always returns new copy of the Icon. It should be disposed by the user.</remarks>
        public Icon GetIcon(int index)
        {
            if (index < 0 || Count <= index)
                throw new ArgumentOutOfRangeException("index");

            // Create an Icon based on a .ico file in memory.

            using (var ms = new MemoryStream(iconData[index]))
            {
                return new Icon(ms);
            }
        }

        /// <summary>
        /// Extracts all the icons from the file.
        /// </summary>
        /// <returns>An array of System.Drawing.Icon objects.</returns>
        /// <remarks>Always returns new copies of the Icons. They should be disposed by the user.</remarks>
        public Icon[] GetAllIcons()
        {
            var icons = new List<Icon>();
            for (int i = 0; i < Count; ++i)
                icons.Add(GetIcon(i));

            return icons.ToArray();
        }

        private void Initialize(string fileName)
        {
            if (fileName == null)
                throw new ArgumentNullException("fileName");

            IntPtr hModule = IntPtr.Zero;
            try
            {
                hModule = Kernel32.LoadLibraryEx(fileName, IntPtr.Zero, LOAD_LIBRARY_AS_DATAFILE);
                if (hModule == IntPtr.Zero)
                    throw new Win32Exception();

                FileName = GetFileName(hModule);

                // Enumerate the icon resource and build .ico files in memory.

                var tmpData = new List<byte[]>();

                ENUMRESNAMEPROC callback = (h, t, name, l) =>
                {
                    // Refer the following URL for the data structures used here:
                    // http://msdn.microsoft.com/en-us/library/ms997538.aspx

                    // RT_GROUP_ICON resource consists of a GRPICONDIR and GRPICONDIRENTRY's.

                    var dir = GetDataFromResource(hModule, RT_GROUP_ICON, name);

                    // Calculate the size of an entire .icon file.

                    int count = BitConverter.ToUInt16(dir, 4);  // GRPICONDIR.idCount
                    int len = 6 + 16 * count;                   // sizeof(ICONDIR) + sizeof(ICONDIRENTRY) * count
                    for (int i = 0; i < count; ++i)
                        len += BitConverter.ToInt32(dir, 6 + 14 * i + 8);   // GRPICONDIRENTRY.dwBytesInRes

                    using (var dst = new BinaryWriter(new MemoryStream(len)))
                    {
                        // Copy GRPICONDIR to ICONDIR.

                        dst.Write(dir, 0, 6);

                        int picOffset = 6 + 16 * count; // sizeof(ICONDIR) + sizeof(ICONDIRENTRY) * count

                        for (int i = 0; i < count; ++i)
                        {
                            // Copy GRPICONDIRENTRY to ICONDIRENTRY.

                            dst.Seek(6 + 16 * i, SeekOrigin.Begin);

                            dst.Write(dir, 6 + 14 * i, 12);  // First 12bytes are identical.
                            dst.Write(picOffset);               // Write offset instead of ID.

                            // Copy a picture.

                            dst.Seek(picOffset, SeekOrigin.Begin);

                            ushort id = BitConverter.ToUInt16(dir, 6 + 14 * i + 12);    // GRPICONDIRENTRY.nID
                            var pic = GetDataFromResource(hModule, RT_ICON, (IntPtr)id);

                            dst.Write(pic, 0, pic.Length);

                            picOffset += pic.Length;
                        }

                        tmpData.Add(((MemoryStream)dst.BaseStream).ToArray());
                    }

                    return true;
                };
                Kernel32.EnumResourceNames(hModule, RT_GROUP_ICON, callback, IntPtr.Zero);

                iconData = tmpData.ToArray();
            }
            finally
            {
                if (hModule != IntPtr.Zero)
                    Kernel32.FreeLibrary(hModule);
            }
        }

        private byte[] GetDataFromResource(IntPtr hModule, IntPtr type, IntPtr name)
        {
            // Load the binary data from the specified resource.

            IntPtr hResInfo = Kernel32.FindResource(hModule, name, type);
            if (hResInfo == IntPtr.Zero)
                throw new Win32Exception();

            IntPtr hResData = Kernel32.LoadResource(hModule, hResInfo);
            if (hResData == IntPtr.Zero)
                throw new Win32Exception();

            IntPtr pResData = Kernel32.LockResource(hResData);
            if (pResData == IntPtr.Zero)
                throw new Win32Exception();

            uint size = Kernel32.SizeofResource(hModule, hResInfo);
            if (size == 0)
                throw new Win32Exception();

            byte[] buf = new byte[size];
            Marshal.Copy(pResData, buf, 0, buf.Length);

            return buf;
        }

        private string GetFileName(IntPtr hModule)
        {
            // Alternative to GetModuleFileName() for the module loaded with
            // LOAD_LIBRARY_AS_DATAFILE option.

            // Get the file name in the format like:
            // "\\Device\\HarddiskVolume2\\Windows\\System32\\shell32.dll"

            string fileName;
            {
                var buf = new StringBuilder(MAX_PATH);
                int len = Kernel32.GetMappedFileName(
                    Kernel32.GetCurrentProcess(), hModule, buf, buf.Capacity);
                if (len == 0)
                    throw new Win32Exception();

                fileName = buf.ToString();
            }

            // Convert the device name to drive name like:
            // "C:\\Windows\\System32\\shell32.dll"

            for (char c = 'A'; c <= 'Z'; ++c)
            {
                var drive = c + ":";
                var buf = new StringBuilder(MAX_PATH);
                int len = Kernel32.QueryDosDevice(drive, buf, buf.Capacity);
                if (len == 0)
                    continue;

                var devPath = buf.ToString();
                if (fileName.StartsWith(devPath))
                    return (drive + fileName.Substring(devPath.Length));
            }

            return fileName;
        }
    }
}


================================================
FILE: WPELibrary/Lib/IconExtractor/IconUtil.cs
================================================
using System;
using System.Collections.Generic;
using System.Drawing;
using System.IO;
using System.Reflection.Emit;
using System.Reflection;

namespace WPELibrary.Lib.IconExtractor
{
    public static class IconUtil
    {
        private delegate byte[] GetIconDataDelegate(Icon icon);

        static GetIconDataDelegate getIconData;

        static IconUtil()
        {
            // Create a dynamic method to access Icon.iconData private field.

            var dm = new DynamicMethod(
                "GetIconData", typeof(byte[]), new Type[] { typeof(Icon) }, typeof(Icon));
            var fi = typeof(Icon).GetField(
                "iconData", BindingFlags.Instance | BindingFlags.NonPublic);
            var gen = dm.GetILGenerator();
            gen.Emit(OpCodes.Ldarg_0);
            gen.Emit(OpCodes.Ldfld, fi);
            gen.Emit(OpCodes.Ret);

            getIconData = (GetIconDataDelegate)dm.CreateDelegate(typeof(GetIconDataDelegate));
        }

        /// <summary>
        /// Split an Icon consists of multiple icons into an array of Icon each
        /// consists of single icons.
        /// </summary>
        /// <param name="icon">A System.Drawing.Icon to be split.</param>
        /// <returns>An array of System.Drawing.Icon.</returns>
        public static Icon[] Split(Icon icon)
        {
            if (icon == null)
                throw new ArgumentNullException("icon");

            // Create an .ico file in memory, then split it into separate icons.

            var src = GetIconData(icon);

            var splitIcons = new List<Icon>();
            {
                int count = BitConverter.ToUInt16(src, 4);

                for (int i = 0; i < count; i++)
                {
                    int length = BitConverter.ToInt32(src, 6 + 16 * i + 8);    // ICONDIRENTRY.dwBytesInRes
                    int offset = BitConverter.ToInt32(src, 6 + 16 * i + 12);   // ICONDIRENTRY.dwImageOffset

                    using (var dst = new BinaryWriter(new MemoryStream(6 + 16 + length)))
                    {
                        // Copy ICONDIR and set idCount to 1.

                        dst.Write(src, 0, 4);
                        dst.Write((short)1);

                        // Copy ICONDIRENTRY and set dwImageOffset to 22.

                        dst.Write(src, 6 + 16 * i, 12); // ICONDIRENTRY except dwImageOffset
                        dst.Write(22);                   // ICONDIRENTRY.dwImageOffset

                        // Copy a picture.

                        dst.Write(src, offset, length);

                        // Create an icon from the in-memory file.

                        dst.BaseStream.Seek(0, SeekOrigin.Begin);
                        splitIcons.Add(new Icon(dst.BaseStream));
                    }
                }
            }

            return splitIcons.ToArray();
        }

        /// <summary>
        /// Converts an Icon to a GDI+ Bitmap preserving the transparent area.
        /// </summary>
        /// <param name="icon">An System.Drawing.Icon to be converted.</param>
        /// <returns>A System.Drawing.Bitmap Object.</returns>
        public static Bitmap ToBitmap(Icon icon)
        {
            if (icon == null)
                throw new ArgumentNullException("icon");

            // Quick workaround: Create an .ico file in memory, then load it as a Bitmap.

            using (var ms = new MemoryStream())
            {
                icon.Save(ms);
                return (Bitmap)Image.FromStream(ms);
            }
        }

        /// <summary>
        /// Gets the bit depth of an Icon.
        /// </summary>
        /// <param name="icon">An System.Drawing.Icon object.</param>
        /// <returns>The biggest bit depth of the icons.</returns>
        public static int GetBitCount(Icon icon)
        {
            if (icon == null)
                throw new ArgumentNullException("icon");

            // Create an .ico file in memory, then read the header.

            var data = GetIconData(icon);

            int count = BitConverter.ToInt16(data, 4);
            int bitDepth = 0;
            for (int i = 0; i < count; ++i)
            {
                int depth = BitConverter.ToUInt16(data, 6 + 16 * i + 6);    // ICONDIRENTRY.wBitCount
                if (depth > bitDepth)
                    bitDepth = depth;
            }

            return bitDepth;
        }

        private static byte[] GetIconData(Icon icon)
        {
            var data = getIconData(icon);
            if (data != null)
            {
                return data;
            }
            else
            {
                using (var ms = new MemoryStream())
                {
                    icon.Save(ms);
                    return ms.ToArray();
                }
            }
        }
    }
}


================================================
FILE: WPELibrary/Lib/MultiLanguage.cs
================================================
using System;
using System.Reflection;
using System.Threading;

namespace WPELibrary.Lib
{    
    public static class MultiLanguage
    {        
        public static string DefaultLanguage = "zh-CN";

        #region//多语言

        public static string[] MutiLan_1 = { "选择进程", "Select Process" };
        public static string[] MutiLan_2 = { "注入进程", "Inject Process" };
        public static string[] MutiLan_3 = { "关于", "about" };
        public static string[] MutiLan_4 = { "选择语言", "Language" };
        public static string[] MutiLan_5 = { "当前内核版本: {0}", "Current kernel version: {0}" };
        public static string[] MutiLan_6 = { "请先选择要注入的进程", "Please select a process first" };
        public static string[] MutiLan_7 = { "开始注入目标进程 =>> {0}", "Start injecting target process =>> {0}" };
        public static string[] MutiLan_8 = { "目标进程是{0}位程序,已自动调用{0}位的注入模块", "The target process is a {0} bit program and has automatically called the {0} bit injection module" };
        public static string[] MutiLan_9 = { "已成功注入目标进程 =>> {0}[{1}]", "Successfully injected into the target process =>> {0}[{1}]" };
        public static string[] MutiLan_10 = { "注入完成,可关闭当前注入器或注入其它进程", "Injection completed, the current injector can be closed or inject other processes" };
        public static string[] MutiLan_11 = { "出现错误: {0}", "Error: {0}" };
        public static string[] MutiLan_12 = { "程序即将重新启动", "The program is about to restart" };
        public static string[] MutiLan_13 = { "请选择一个进程", "Please select a process" };
        public static string[] MutiLan_14 = { "请选择要注入的应用程序", "Please select the program to inject" };
        public static string[] MutiLan_15 = { "应用程序|*.exe|所有文件|*.*", "Program|*.exe|All Files|*.*" };
        public static string[] MutiLan_16 = { "滤镜 - {0}", "Filter - {0}" };
        public static string[] MutiLan_17 = { "确定重置为上次保存时的数据吗?", "Are you sure to reset to the last saved data?" };
        public static string[] MutiLan_18 = { "确定保存当前数据吗?", "Are you sure to save the current data?" };
        public static string[] MutiLan_19 = { "名称不能为空!", "The name cannot be empty!" };
        public static string[] MutiLan_20 = { "目标进程: ", "Process: " };
        public static string[] MutiLan_21 = { "不是有效的异或值!", "Not a valid XOR value!" };
        public static string[] MutiLan_22 = { "只执行滤镜,不显示封包", "Only execute filters, No display" };
        public static string[] MutiLan_23 = { "没有找到匹配的内容!", "No matching content found!" };
        public static string[] MutiLan_24 = { "[ 行 {0}  列 {1}  位置 {2} ]", "[ Ln {0}  Col {1}  Pstn {2} ]" };
        public static string[] MutiLan_25 = { "查找内容", "Search for content" };
        public static string[] MutiLan_26 = { "查找", "Search" };
        public static string[] MutiLan_27 = { "机器人 {0}", "Robot {0}" };
        public static string[] MutiLan_28 = { "数据加载出错!", "Data loading error!" };
        public static string[] MutiLan_29 = { "两个数据相同!", "The two data are the same!" };
        public static string[] MutiLan_30 = { "请正确设置查找内容!", "Please set the Find content correctly!" };
        public static string[] MutiLan_31 = { "发送: {0}  接收: {1}", "Sent: {0} Received: {1}" };
        public static string[] MutiLan_32 = { "页数:{0} / {1}", "Page:{0} / {1}" };
        public static string[] MutiLan_33 = { "文本 A  ( 长度 {0} )", "Text A  ( Length {0} )" };
        public static string[] MutiLan_34 = { "文本 B  ( 长度 {0} )", "Text B  ( Length {0} )" };
        public static string[] MutiLan_35 = { "加载系统配置成功!", "Load System Config successful!" };
        public static string[] MutiLan_36 = { "导出列表文件", "Export List File" };
        public static string[] MutiLan_37 = { "确定删除选中的数据吗", "Are you sure to delete the selected data" };
        public static string[] MutiLan_38 = { "确定删除所有数据吗", "Are you sure to delete all data" };
        public static string[] MutiLan_39 = { "开始拦截!", "Start Intercepting!" };
        public static string[] MutiLan_40 = { "结束拦截!", "Stop Intercepting!" };
        public static string[] MutiLan_41 = { "已开启极速模式!", "Speed mode has been activated!" };
        public static string[] MutiLan_42 = { "粘贴的不是有效的十六进制数据!", "The pasted data is not valid hex data!" };
        public static string[] MutiLan_43 = { "请求: {0}  响应: {1}", "Request: {0} Response: {1}" };
        public static string[] MutiLan_44 = { "请正确设置递进位置", "Please set the progressive position correctly" };
        public static string[] MutiLan_45 = { "套接字设置错误", "Socket setting error" };
        public static string[] MutiLan_46 = { "封包数据错误", "Packet data error" };
        public static string[] MutiLan_47 = { "递进位置设置错误", "Progressive position setting error" };
        public static string[] MutiLan_48 = { "发送列表 - {0}", "Send List - {0}" };
        public static string[] MutiLan_49 = { "请正确设置套接字", "Please set the socket correctly" };
        public static string[] MutiLan_50 = { "滤镜 {0}", "Filter {0}" };
        public static string[] MutiLan_51 = { "[{0}] {1} | [{2}] 封包长度: {3}", "[{0}] {1} | [{2}] Packet Length: {3}" };
        public static string[] MutiLan_52 = { "{0} | 封包长度: {1} | {2}", "{0} | Packet Length: {1} | {2}" };
        public static string[] MutiLan_53 = { "匹配滤镜出错: ", "Matching filter error: " };
        public static string[] MutiLan_54 = { "发送 1.1", "Send 1.1" };
        public static string[] MutiLan_55 = { "接收 1.1", "Recv 1.1" };
        public static string[] MutiLan_56 = { "发送到 1.1", "SendTo 1.1" };
        public static string[] MutiLan_57 = { "接收自 1.1", "RecvFrom 1.1" };
        public static string[] MutiLan_58 = { "WSA发送", "WSASend" };
        public static string[] MutiLan_59 = { "WSA接收", "WSARecv" };
        public static string[] MutiLan_60 = { "WSA发送到", "WSASendTo" };
        public static string[] MutiLan_61 = { "WSA接收自", "WSARecvFromd" };
        public static string[] MutiLan_62 = { "{0} - 副本", "{0} - Copy" };
        public static string[] MutiLan_63 = { "优先执行满足条件的,不执行其它的", "Prioritize executing those that meet the conditions and do not execute others" };
        public static string[] MutiLan_64 = { "顺序执行所有满足条件的", "Execute all items that meet the conditions in sequence" };
        public static string[] MutiLan_65 = { "替换", "Replace" };
        public static string[] MutiLan_66 = { "拦截", "Intercept" };
        public static string[] MutiLan_67 = { "不修改-只显示", "No Modify-Display" };
        public static string[] MutiLan_68 = { "不修改-不显示", "No Modify-No Display" };
        public static string[] MutiLan_69 = { "[{0}] {1} | [{2}] 封包长度: {3} | 匹配数: {4}", "[{0}] {1} | [{2}] Packet Length: {3} | Match: {4}" };
        public static string[] MutiLan_70 = { "发送列表文件", "Send List File" };
        public static string[] MutiLan_71 = { "加载机器人列表成功! [未加密]", "Load robot list successful! [Unencrypted]" };
        public static string[] MutiLan_72 = { "加载机器人列表成功! [已加密]", "Load robot list successful! [Encrypted]" };
        public static string[] MutiLan_73 = { "搜索位置不可设置递进!", "The search location cannot be set in a progressive manner!" };
        public static string[] MutiLan_74 = { "机器人数据文件", "Robot data file" };
        public static string[] MutiLan_75 = { "滤镜数据文件", "Filter data file" };
        public static string[] MutiLan_76 = { "保存为Excel文件", "Save as Excel file" };
        public static string[] MutiLan_77 = { "时间戳\t类别\t套接字\t源地址\t目的地址\t长度\t数据\t", "Time stamp\tCategory\tSocket\tFrom Address\tTo Address\tLength\tData\t" };
        public static string[] MutiLan_78 = { "记录时间\t模块\t日志内容\t", "Log Time\tModule Name\tLog content\t" };
        public static string[] MutiLan_79 = { "提示", "Prompt" };
        public static string[] MutiLan_80 = { "加载滤镜列表成功! [未加密]", "Load filter list successful! [Unencrypted]" };
        public static string[] MutiLan_81 = { "加载滤镜列表成功! [已加密]", "Load filter list successful! [Encrypted]" };
        public static string[] MutiLan_82 = { "递进位置超出封包长度", "Progressive position exceeds packet length" };
        public static string[] MutiLan_83 = { "不是合法的十六进制数据", "Not legal hexadecimal data" };
        public static string[] MutiLan_84 = { "执行发送 [{0}]", "Execute Send [{0}]" };
        public static string[] MutiLan_85 = { "十六进制", "Hexadecimal" };
        public static string[] MutiLan_86 = { "二进制", "Binary" };
        public static string[] MutiLan_87 = { "十进制", "Decimal" };
        public static string[] MutiLan_88 = { " 请输入密码, 此密码在导入列表文件时会要求输入验证!\r\n 如无需设置密码,请点击 [ 取消 ] 按钮!", " Please enter the password. This password will require verification when importing the list file.\r\n If you do not need to set a password, please click the [ Cancel ] button!" };
        public static string[] MutiLan_89 = { "密码不能为空!", "Password cannot be empty!" };
        public static string[] MutiLan_90 = { "导入列表文件", "Import List File" };
        public static string[] MutiLan_91 = { " 请输入密码", " Please enter the password" };
        public static string[] MutiLan_92 = { "加载失败: 密码错误!", "Failed to load: Password incorrect!" };
        public static string[] MutiLan_93 = { "机器人 - {0}", "Robot - {0}" };
        public static string[] MutiLan_94 = { "发送", "Send" };
        public static string[] MutiLan_95 = { "延迟", "Delay" };
        public static string[] MutiLan_96 = { "循环开始", "Loop Start" };
        public static string[] MutiLan_97 = { "循环结束", "Loop End" };
        public static string[] MutiLan_98 = { "指令 {0}", "Inst {0}" };
        public static string[] MutiLan_99 = { "[ 指令 {0} ] 错误: {1}", "[Inst {0}] Error: {1}" };
        public static string[] MutiLan_100 = { "加载发送列表成功! [未加密]", "Load send list successful! [Unencrypted]" };
        public static string[] MutiLan_101 = { "加载发送列表成功! [已加密]", "Load send list successful! [Encrypted]" };
        public static string[] MutiLan_102 = { "请参阅: {0}/tutorials.html 问题与解答!", "Please refer to the {0}/tutorials_enUS.html Q&A!" };
        public static string[] MutiLan_103 = { "发送列表不正确!", "Incorrect Send List!" };
        public static string[] MutiLan_104 = { "循环指令设置不正确!", "The loop instruction setting is incorrect!" };
        public static string[] MutiLan_105 = { "键盘", "Keyboard" };
        public static string[] MutiLan_106 = { "按键 {0}", "Press {0}" };
        public static string[] MutiLan_107 = { "鼠标", "Mouse" };
        public static string[] MutiLan_108 = { "移动到 ( {0} )", "Move To ( {0} )" };
        public static string[] MutiLan_109 = { "启动机器人 [{0}]", "Start Robot [{0}]" };
        public static string[] MutiLan_110 = { "机器人 [{0}] 已停止!", "Robot [{0}] has stopped!" };
        public static string[] MutiLan_111 = { "机器人 [{0}] 发生错误: {1}", "Robot [{0}] error occurred: {1}" };
        public static string[] MutiLan_112 = { "机器人 [{0}] 执行完毕!", "Robot [{0}] execution completed!" };
        public static string[] MutiLan_113 = { "发送列表 - [{0}]", "Send List - [{0}]" };
        public static string[] MutiLan_114 = { "发送集文件", "Send Collection File" };
        public static string[] MutiLan_115 = { "{0} 毫秒", "{0} ms" };
        public static string[] MutiLan_116 = { "循环 {0} 次", "Loop {0} Times" };
        public static string[] MutiLan_117 = { "左键单击", "Left Click" };
        public static string[] MutiLan_118 = { "右键单击", "Right Click" };
        public static string[] MutiLan_119 = { "左键双击", "Left Double Click" };
        public static string[] MutiLan_120 = { "右键双击", "Right Double Click" };
        public static string[] MutiLan_121 = { "向上滚动 {0}", "Wheel Up {0}" };
        public static string[] MutiLan_122 = { "向下滚动 {0}", "Wheel Down {0}" };
        public static string[] MutiLan_123 = { "机器人指令 {0} 错误! [{1}]", "Robot Inst {0} error! [{1}]" };
        public static string[] MutiLan_124 = { "按下 {0}", "Key Down {0}" };
        public static string[] MutiLan_125 = { "弹起 {0}", "Key Up {0}" };
        public static string[] MutiLan_126 = { "左键按下", "Left Down" };
        public static string[] MutiLan_127 = { "左键弹起", "Left Up" };
        public static string[] MutiLan_128 = { "右键按下", "Right Down" };
        public static string[] MutiLan_129 = { "右键弹起", "Right Up" };
        public static string[] MutiLan_130 = { "按键组合 {0}", "Key Combine {0}" };
        public static string[] MutiLan_131 = { "文本 {0}", "Text {0}" };
        public static string[] MutiLan_132 = { "相对移动 ( {0} )", "Move By ( {0} )" };
        public static string[] MutiLan_133 = { "{0} 注册成功!", "{0} registration successful!" };
        public static string[] MutiLan_134 = { "原始数据  ( 长度 {0} )", "Raw Data  ( Length {0} )" };
        public static string[] MutiLan_135 = { "修改后数据  ( 长度 {0} )", "Modified Data  ( Length {0} )" };
        public static string[] MutiLan_136 = { "账号 - 创建于 [ {0} ]", "Account - Created on [ {0} ]" };
        public static string[] MutiLan_137 = { "代理IP地址: TCP [{0}] UDP [{1}]", "Proxy IP: TCP [{0}] UDP [{1}]" };
        public static string[] MutiLan_138 = { "< 请求数据 >", "< Request >" };
        public static string[] MutiLan_139 = { "< 响应数据 >", "< Response >" };
        public static string[] MutiLan_140 = { "< {0} 字节 >", "< {0} Bytes >" };
        public static string[] MutiLan_141 = { "代理类型设置错误!", "Proxy type setting error!" };
        public static string[] MutiLan_142 = { "开始 SOCKS5 代理!", "Start SOCKS5 proxy!" };
        public static string[] MutiLan_143 = { "停止 SOCKS5 代理!", "Stop SOCKS5 proxy!" };
        public static string[] MutiLan_144 = { "{0} 句柄: {1}", "{0} Handle: {1}" };
        public static string[] MutiLan_145 = { "不支持的 SOCKS 协议版本: {0}", "Unsupported SOCKS protocol version: {0}" };
        public static string[] MutiLan_146 = { "封包长度", "Packet Length" };
        public static string[] MutiLan_147 = { "封包套接字", "Packet Socket" };
        public static string[] MutiLan_148 = { "启用系统代理", "Enable system proxy" };
        public static string[] MutiLan_149 = { "关闭系统代理", "Disable system proxy" };
        public static string[] MutiLan_150 = { "封包列表保存完毕 {0}", "The Socket List saved {0}" };
        public static string[] MutiLan_151 = { "正在保存封包列表,共计 {0} 条数据", "Saving socket list, with a total of {0} packets data" };
        public static string[] MutiLan_152 = { "{0} - 不支持的命令: {1}", "{0} - Unsupported command: {1}" };
        public static string[] MutiLan_153 = { "滤镜列表保存完毕 {0}", "The Filter List saved {0}" };
        public static string[] MutiLan_154 = { "机器人列表保存完毕 {0}", "The Robot List saved {0}" };
        public static string[] MutiLan_155 = { "正在进行数据比对,请稍候 . . .", "Data comparison is in progress, please wait . . ." };
        public static string[] MutiLan_156 = { "发送", "Send" };
        public static string[] MutiLan_157 = { "接收", "Recv" };
        public static string[] MutiLan_158 = { "发送到", "SendTo" };
        public static string[] MutiLan_159 = { "接收自", "RecvFrom" };
        public static string[] MutiLan_160 = { "发送列表保存完毕 {0}", "The Send List saved {0}" };
        public static string[] MutiLan_161 = { "[封包列表] 选中的封包", "[Socket List] Selected packet" };
        public static string[] MutiLan_162 = { "发送 {0}", "Send {0}" };
        public static string[] MutiLan_163 = { "发送 [{0}] 已停止!", "Send [{0}] has stopped!" };
        public static string[] MutiLan_164 = { "发送 [{0}] 发生错误: {1}", "Send [{0}] error occurred: {1}" };
        public static string[] MutiLan_165 = { "发送 [{0}] 执行完毕!", "Send [{0}] execution completed!" };
        public static string[] MutiLan_166 = { "发送集保存完毕 {0}", "The Send Collection Saved {0}" };
        public static string[] MutiLan_167 = { "加载发送集成功! [未加密]", "Load send collection successful! [Unencrypted]" };
        public static string[] MutiLan_168 = { "加载发送集成功! [已加密]", "Load send collection successful! [Encrypted]" };
        public static string[] MutiLan_169 = { "已启用身份认证!", "Identity authentication enabled!" };
        public static string[] MutiLan_170 = { "已启用外部 SOCKS5 代理!", "External SOCKS5 proxy enabled!" };
        public static string[] MutiLan_171 = { "已选中 ( {0} ) 个账号!", "Selected ( {0} ) accounts!" };
        public static string[] MutiLan_172 = { "上行: {0} KB/s 下行: {1} KB/s", "Uplink: {0} KB/s Downlink: {1} KB/s" };
        public static string[] MutiLan_173 = { "换包", "Change" };
        public static string[] MutiLan_174 = { "换包数据不完整!", "The change packet data is incomplete!" };
        public static string[] MutiLan_175 = { "正在加载滤镜数据: {0}%", "Loading Filter data: {0}%" };
        public static string[] MutiLan_176 = { "账号信息设置错误!", "Account information setting error!" };
        public static string[] MutiLan_177 = { "该用户名已存在!", "This UserName has already exists!" };
        public static string[] MutiLan_178 = { "远程管理已启用:{0}", "Remote MGT enabled: {0}" };
        public static string[] MutiLan_179 = { "远程管理启动失败: 请使用管理员权限启动 {0}", "Remote MGT startup failed: please use admin to start {0}" };
        public static string[] MutiLan_180 = { "管理账号密码不能为空!", "The Username and Password cannot be Empty!" };
        public static string[] MutiLan_181 = { "添加账号失败!", "Failed to Add account!" };
        public static string[] MutiLan_182 = { "删除账号失败!", "Failed to Delete account!" };
        public static string[] MutiLan_183 = { "添加账号成功!", "Account added successfully!" };
        public static string[] MutiLan_184 = { "删除账号成功!", "Account deleted successfully!" };
        public static string[] MutiLan_185 = { "代理模式", "Proxy Mode" };
        public static string[] MutiLan_186 = { "注入模式", "Injection Mode" };
        public static string[] MutiLan_187 = { "极速模式", "Speed Mode" };
        public static string[] MutiLan_188 = { "普通模式", "Normal Mode" };
        public static string[] MutiLan_189 = { "代理账号列表文件", "Proxy Account List file" };
        public static string[] MutiLan_190 = { "代理账号列表保存完毕 {0}", "The Proxy Account List saved {0}" };
        public static string[] MutiLan_191 = { "加载代理账号列表成功! [未加密]", "Load Proxy Account list successful! [Unencrypted]" };
        public static string[] MutiLan_192 = { "加载代理账号列表成功! [已加密]", "Load Proxy Account list successful! [Encrypted]" };
        public static string[] MutiLan_193 = { "导入账号失败!用户名:{0}", "Import account failed! Username: {0}" };
        public static string[] MutiLan_194 = { "更新账号成功!", "Account Update successfully!" };
        public static string[] MutiLan_195 = { "更新账号失败!", "Failed to Update Account!" };
        public static string[] MutiLan_196 = { "计数", "Count" };
        public static string[] MutiLan_197 = { "执行滤镜", "Filter Execution" };
        public static string[] MutiLan_198 = { "不支持的多缓存区模式!", "Unsupported multi cache mode!" };
        public static string[] MutiLan_199 = { "未知IP地址", "Invalid query" };
        public static string[] MutiLan_200 = { "本地局域网", "Private range" };
        public static string[] MutiLan_201 = { "保留IP地址", "Reserved range" };
        public static string[] MutiLan_202 = { "外部代理: 设置错误!", "External proxy: setting error!" };
        public static string[] MutiLan_203 = { "外部代理: 地址错误!", "External proxy: server setting error!" };
        public static string[] MutiLan_204 = { "外部代理: 认证设置错误!", "External proxy: auth setting error!" };
        public static string[] MutiLan_205 = { "无限制", "Unlimited" };
        public static string[] MutiLan_206 = { "连接超时!", "Connection timeout!" };
        public static string[] MutiLan_207 = { "外部代理: 不支持 SOCKS5 代理!", "External proxy: Not support SOCKS5 proxy!" };
        public static string[] MutiLan_208 = { "外部代理: 需要认证!", "External proxy: Require authentication!" };
        public static string[] MutiLan_209 = { "外部代理: 认证失败!", "External proxy: Authentication failed!" };
        public static string[] MutiLan_210 = { "不支持的认证方式!", "Unsupported authentication method!" };
        public static string[] MutiLan_211 = { "外部代理: 连接成功!", "External proxy: Connection successful!" };
        public static string[] MutiLan_212 = { "外部代理: 拒绝连接!", "External proxy: Refused connection!" };
        public static string[] MutiLan_213 = { "系统备份文件", "System backup file" };
        public static string[] MutiLan_214 = { "系统备份保存完毕 {0}", "System backup export {0}" };
        public static string[] MutiLan_215 = { "导入系统备份成功! [未加密]", "Import System Backup successful! [Unencrypted]" };
        public static string[] MutiLan_216 = { "导入系统备份成功! [已加密]", "Import System Backup successful! [Encrypted]" };
        public static string[] MutiLan_217 = { "不是有效的备份文件!", "Not a valid backup file!" };
        public static string[] MutiLan_218 = { "请选择一个用于本地映射的文件", "Please select a file for local mapping" };
        public static string[] MutiLan_219 = { "映射数据不完整!", "The mapping data is incomplete!" };
        public static string[] MutiLan_220 = { "本地代理映射文件", "Local proxy mapping file" };
        public static string[] MutiLan_221 = { "本地代理映射保存完毕 {0}", "The Local proxy mapping saved {0}" };
        public static string[] MutiLan_222 = { "加载本地代理映射成功! [未加密]", "Load Local proxy mapping successful! [Unencrypted]" };
        public static string[] MutiLan_223 = { "加载本地代理映射成功! [已加密]", "Load Local proxy mapping successful! [Encrypted]" };
        public static string[] MutiLan_224 = { "远程代理映射文件", "Remote proxy mapping file" };
        public static string[] MutiLan_225 = { "远程代理映射保存完毕 {0}", "The Remote proxy mapping saved {0}" };
        public static string[] MutiLan_226 = { "加载远程代理映射成功! [未加密]", "Load Remote proxy mapping successful! [Unencrypted]" };
        public static string[] MutiLan_227 = { "加载远程代理映射成功! [已加密]", "Load Remote proxy mapping successful! [Encrypted]" };
        public static string[] MutiLan_228 = { "系统套接字 = 选中封包的套接字", "System socket = Selected packet socket" };
        public static string[] MutiLan_229 = { "系统套接字 = 调用滤镜的套接字", "System socket = Socket for calling filters" };
        public static string[] MutiLan_230 = { "系统套接字 = {0}", "System socket = {0}" };
        public static string[] MutiLan_231 = { "设置", "Set" };

        #endregion

        #region//设置默认语言参数

        public static void SetDefaultLanguage(string lang)
        {
            try
            {
                Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo(lang);
                MultiLanguage.DefaultLanguage = lang;                
            }
            catch (Exception ex)
            {
                Socket_Operation.DoLog(MethodBase.GetCurrentMethod().Name, ex.Message);                
            }
        }

        #endregion

        #region//获取默认语言参数

        public static string GetDefaultLanguage(string[] MutiLanID)
        {
            try
            {
                switch (DefaultLanguage)
                {
                    case "zh-CN":
                        return MutiLanID[0];

                    case "en-US":
                        return MutiLanID[1];

                    default:
                        return string.Empty;
                }
            }
            catch (Exception ex)
            {
                Socket_Operation.DoLog(MethodBase.GetCurrentMethod().Name, ex.Message);
                return string.Empty;
            }
        }

        #endregion
    }
}



================================================
FILE: WPELibrary/Lib/NativeMethods/Kernel32.cs
================================================
using System;
using System.Runtime.InteropServices;
using System.Security;
using System.Text;

namespace WPELibrary.Lib.NativeMethods
{
    public static class Kernel32
    {
        [DllImport("psapi.dll", SetLastError = true, CharSet = CharSet.Unicode)]
        [SuppressUnmanagedCodeSecurity]
        public static extern int GetMappedFileName(IntPtr hProcess, IntPtr lpv, StringBuilder lpFilename, int nSize);

        [DllImport("kernel32.dll", SetLastError = true, CallingConvention = CallingConvention.Winapi)]
        [return: MarshalAs(UnmanagedType.Bool)]
        public static extern bool IsWow64Process([In] IntPtr process, [Out] out bool wow64Process);

        [DllImport("kernel32.dll", SetLastError = true, CharSet = CharSet.Unicode)]
        [SuppressUnmanagedCodeSecurity]
        public static extern IntPtr LoadLibraryEx(string lpFileName, IntPtr hFile, uint dwFlags);

        [DllImport("kernel32.dll", SetLastError = true)]
        [SuppressUnmanagedCodeSecurity]
        public static extern bool FreeLibrary(IntPtr hModule);

        [DllImport("kernel32.dll", SetLastError = true, CharSet = CharSet.Unicode)]
        [SuppressUnmanagedCodeSecurity]
        public static extern bool EnumResourceNames(IntPtr hModule, IntPtr lpszType, ENUMRESNAMEPROC lpEnumFunc, IntPtr lParam);

        [DllImport("kernel32.dll", SetLastError = true, CharSet = CharSet.Unicode)]
        [SuppressUnmanagedCodeSecurity]
        public static extern IntPtr FindResource(IntPtr hModule, IntPtr lpName, IntPtr lpType);

        [DllImport("kernel32.dll", SetLastError = true)]
        [SuppressUnmanagedCodeSecurity]
        public static extern IntPtr LoadResource(IntPtr hModule, IntPtr hResInfo);

        [DllImport("kernel32.dll", SetLastError = true)]
        [SuppressUnmanagedCodeSecurity]
        public static extern IntPtr LockResource(IntPtr hResData);

        [DllImport("kernel32.dll", SetLastError = true)]
        [SuppressUnmanagedCodeSecurity]
        public static extern uint SizeofResource(IntPtr hModule, IntPtr hResInfo);

        [DllImport("kernel32.dll", SetLastError = true)]
        [SuppressUnmanagedCodeSecurity]
        public static extern IntPtr GetCurrentProcess();

        [DllImport("kernel32.dll", SetLastError = true)]
        [SuppressUnmanagedCodeSecurity]
        public static extern uint GetCurrentThreadId();

        [DllImport("kernel32.dll", SetLastError = true, CharSet = CharSet.Unicode)]
        [SuppressUnmanagedCodeSecurity]
        public static extern int QueryDosDevice(string lpDeviceName, StringBuilder lpTargetPath, int ucchMax);
    }

    [UnmanagedFunctionPointer(CallingConvention.Winapi, SetLastError = true, CharSet = CharSet.Unicode)]
    [SuppressUnmanagedCodeSecurity]
    public delegate bool ENUMRESNAMEPROC(IntPtr hModule, IntPtr lpszType, IntPtr lpszName, IntPtr lParam);
}


================================================
FILE: WPELibrary/Lib/NativeMethods/Mswsock.cs
================================================
using System;
using System.Net.Sockets;
using System.Runtime.InteropServices;

namespace WPELibrary.Lib.NativeMethods
{
    public static class Mswsock
    {
        public static string ModuleName = "Mswsock.dll";

        #region//WSARecvEx

        [DllImport("Mswsock.dll", CharSet = CharSet.Unicode, SetLastError = true, CallingConvention = CallingConvention.StdCall)]
        public unsafe static extern Int32 WSARecvEx(
            [In] Int32 Socket,
            [Out] IntPtr lpBuffer,
            [In] Int32 Length,
            [In, Out] SocketFlags Flags
            );

        [UnmanagedFunctionPointer(CallingConvention.StdCall, CharSet = CharSet.Auto, SetLastError = true)]
        public unsafe delegate Int32 DWSARecvEx(
            [In] Int32 Socket,
            [Out] IntPtr lpBuffer,
            [In] Int32 Length,
            [In, Out] SocketFlags Flags
            );

        public static unsafe Int32 WSARecvExHook(
            [In] Int32 Socket,
            [Out] IntPtr lpBuffer,
            [In] Int32 Length,
            [In, Out] SocketFlags Flags)
        {
            Socket_Cache.SocketPacket.PacketType ptType = Socket_Cache.SocketPacket.PacketType.WSARecvEx;
            return WinSockHook.Recv_Hook(ptType, Socket, lpBuffer, Length, Flags);
        }

        #endregion
    }
}


================================================
FILE: WPELibrary/Lib/NativeMethods/User32.cs
================================================
using System;
using System.Runtime.InteropServices;
using System.Text;

namespace WPELibrary.Lib.NativeMethods
{
    public static class User32
    {
        public static int WM_HOTKEY = 0x0312;

        [DllImport("user32.dll")]
        public static extern bool SetProcessDPIAware();
        
        [DllImport("user32.dll", SetLastError = true)]
        public static extern bool RegisterHotKey(IntPtr hWnd, int id, uint fsModifiers, uint vlc);

        [DllImport("user32.dll", SetLastError = true)]
        public static extern bool UnregisterHotKey(IntPtr hWnd, int id);

        [DllImport("user32.dll")]
        private static extern IntPtr GetForegroundWindow();

        [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]
        private static extern int GetWindowText(IntPtr hWnd, StringBuilder lpString, int nMaxCount);    
    }
}


================================================
FILE: WPELibrary/Lib/NativeMethods/WS2_32.cs
================================================
using System;
using System.Net.Sockets;
using System.Runtime.InteropServices;

namespace WPELibrary.Lib.NativeMethods
{
    internal class WS2_32
    {
        public static string ModuleName = "WS2_32.dll";        

        #region//WSAGetLastError

        [DllImport("WS2_32.dll", CharSet = CharSet.Unicode, SetLastError = true, CallingConvention = CallingConvention.StdCall)]
        public static extern SocketError WSAGetLastError();

        #endregion

        #region//WSAGetOverlappedResult

        [DllImport("WS2_32.dll", CharSet = CharSet.Unicode, SetLastError = true, CallingConvention = CallingConvention.StdCall)]
        public static extern bool WSAGetOverlappedResult(
            Int32 Socket,
            ref Socket_Cache.SocketPacket.OVERLAPPED lpOverlapped,
            out int bytesTransferred,
            bool wait,
            out SocketFlags flags
            );

        #endregion

        #region//WSAWaitForMultipleEvents

        [DllImport("Ws2_32.dll", CharSet = CharSet.Auto, SetLastError = true)]
        public static extern int WSAWaitForMultipleEvents(
            int cEvents, 
            IntPtr[] lphEvents, 
            bool fWaitAll, 
            int dwMilliseconds, 
            bool bAlertable
            );

        #endregion

        #region//WSACreateEvent

        [DllImport("Ws2_32.dll", CharSet = CharSet.Auto, SetLastError = true)]
        public static extern IntPtr WSACreateEvent();

        #endregion

        #region//getsockname

        [DllImport("WS2_32.dll", CharSet = CharSet.Unicode, SetLastError = true, CallingConvention = CallingConvention.StdCall)]

        public static extern int getsockname(
            [In] int Socket, 
            [In, Out] ref Socket_Cache.SocketPacket.SockAddr Address, 
            [In, Out] ref int namelen
            );

        #endregion

        #region//getpeername

        [DllImport("WS2_32.dll", CharSet = CharSet.Unicode, SetLastError = true, CallingConvention = CallingConvention.StdCall)]

        public static extern int getpeername(
            [In] int Socket, 
            [In, Out] ref Socket_Cache.SocketPacket.SockAddr Address, 
            [In, Out] ref int namelen
            );

        #endregion

        #region//inet_ntoa

        [DllImport("WS2_32.dll", CharSet = CharSet.Unicode, SetLastError = true, CallingConvention = CallingConvention.StdCall)]

        public static extern IntPtr inet_ntoa(uint a);

        #endregion

        #region//inet_addr

        [DllImport("WS2_32.dll", CharSet = CharSet.Unicode, SetLastError = true, CallingConvention = CallingConvention.StdCall)]

        public static extern uint inet_addr(string cp);

        #endregion

        #region//ntohs

        [DllImport("WS2_32.dll", CharSet = CharSet.Unicode, SetLastError = true, CallingConvention = CallingConvention.StdCall)]

        public static extern ushort ntohs(ushort netshort);

        #endregion

        #region//htons

        [DllImport("WS2_32.dll", CharSet = CharSet.Unicode, SetLastError = true, CallingConvention = CallingConvention.StdCall)]

        public static extern ushort htons(ushort hostshort);

        #endregion

        #region//Send

        [DllImport("WS2_32.dll", CharSet = CharSet.Unicode, SetLastError = true, CallingConvention = CallingConvention.StdCall)]
        public unsafe static extern Int32 send(
            [In] Int32 Socket,
            [In] IntPtr lpBuffer,
            [In] Int32 Length,
            [In] SocketFlags Flags
            );

        [UnmanagedFunctionPointer(CallingConvention.StdCall, CharSet = CharSet.Auto, SetLastError = true)]
        public unsafe delegate Int32 DSend(
            [In] Int32 Socket,
            [In] IntPtr lpBuffer,
            [In] Int32 Length,
            [In] SocketFlags Flags
            );

        public static unsafe Int32 SendHook(
            [In] Int32 Socket,
            [In] IntPtr lpBuffer,
            [In] Int32 Length,
            [In] SocketFlags Flags)
        {
            Socket_Cache.SocketPacket.PacketType ptType = Socket_Cache.SocketPacket.PacketType.WS2_Send;
            return WinSockHook.Send_Hook(ptType, Socket, lpBuffer, Length, Flags);
        }

        #endregion

        #region//Recv

        [DllImport("WS2_32.dll", CharSet = CharSet.Unicode, SetLastError = true, CallingConvention = CallingConvention.StdCall)]
        public unsafe static extern Int32 recv(
            [In] Int32 Socket,
            [Out] IntPtr lpBuffer,
            [In] Int32 Length,
            [In] SocketFlags Flags
            );

        [UnmanagedFunctionPointer(CallingConvention.StdCall, CharSet = CharSet.Auto, SetLastError = true)]
        public unsafe delegate Int32 Drecv(
            [In] Int32 Socket,
            [Out] IntPtr lpBuffer,
            [In] Int32 Length,
            [In] SocketFlags Flags
            );

        public static unsafe Int32 RecvHook(
            [In] Int32 Socket,
            [Out] IntPtr lpBuffer,
            [In] Int32 Length,
            [In] SocketFlags Flags)
        {
            Socket_Cache.SocketPacket.PacketType ptType = Socket_Cache.SocketPacket.PacketType.WS2_Recv;
            return WinSockHook.Recv_Hook(ptType, Socket, lpBuffer, Length,Flags);          
        }

        #endregion

        #region//SendTo

        [DllImport("WS2_32.dll", CharSet = CharSet.Unicode, SetLastError = true, CallingConvention = CallingConvention.StdCall)]
        public unsafe static extern Int32 sendto(
            [In] Int32 Socket,
            [In] IntPtr lpBuffer,
            [In] Int32 Length,
            [In] SocketFlags Flags,
            [In] ref Socket_Cache.SocketPacket.SockAddr To,
            [In] Int32 ToLen
            );

        [UnmanagedFunctionPointer(CallingConvention.StdCall, CharSet = CharSet.Auto, SetLastError = true)]

        public unsafe delegate Int32 DSendTo(
            [In] Int32 Socket,
            [In] IntPtr lpBuffer,
            [In] Int32 Length,
            [In] SocketFlags Flags,
            [In] ref Socket_Cache.SocketPacket.SockAddr To,
            [In] Int32 ToLen
            );

        public static unsafe Int32 SendToHook(
            [In] Int32 Socket,
            [In] IntPtr lpBuffer,
            [In] Int32 Length,
            [In] SocketFlags Flags,
            [In] ref Socket_Cache.SocketPacket.SockAddr To,
            [In] Int32 ToLen)
        {
            Socket_Cache.SocketPacket.PacketType ptType = Socket_Cache.SocketPacket.PacketType.WS2_SendTo;
            return WinSockHook.SendTo_Hook(ptType, Socket, lpBuffer, Length, Flags, ref To, ToLen);
        }

        #endregion

        #region//RecvFrom

        [DllImport("WS2_32.dll", CharSet = CharSet.Unicode, SetLastError = true, CallingConvention = CallingConvention.StdCall)]
        public unsafe static extern Int32 recvfrom(
            [In] Int32 Socket,
            [Out] IntPtr lpBuffer,
            [In] Int32 Length,
            [In] SocketFlags Flags,
            [In, Out] ref Socket_Cache.SocketPacket.SockAddr From,
            [In, Out, Optional] IntPtr FromLen
            );

        [UnmanagedFunctionPointer(CallingConvention.StdCall, CharSet = CharSet.Auto, SetLastError = true)]

        public unsafe delegate Int32 DRecvFrom(
            [In] Int32 Socket,
            [Out] IntPtr lpBuffer,
            [In] Int32 Length,
            [In] SocketFlags Flags,
            [In, Out] ref Socket_Cache.SocketPacket.SockAddr From,
            [In, Out, Optional] IntPtr FromLen
            );

        public static unsafe Int32 RecvFromHook(
            [In] Int32 Socket,
            [Out] IntPtr lpBuffer,
            [In] Int32 Length,
            [In] SocketFlags Flags,
            [In, Out] ref Socket_Cache.SocketPacket.SockAddr From,
            [In, Out, Optional] IntPtr FromLen)
        {
            Socket_Cache.SocketPacket.PacketType ptType = Socket_Cache.SocketPacket.PacketType.WS2_RecvFrom;
            return WinSockHook.RecvFrom_Hook(ptType, Socket, lpBuffer, Length, Flags, ref From, FromLen);
        }

        #endregion

        #region//WSASend

        [DllImport("ws2_32.dll", CharSet = CharSet.Unicode, SetLastError = true, CallingConvention = CallingConvention.StdCall)]
        public unsafe static extern SocketError WSASend(
            [In] Int32 Socket,
            [In] IntPtr lpWSABuffer,
            [In] Int32 BufferCount,
            [Out] IntPtr lpNumberOfBytesSend,
            [In] SocketFlags Flags,
            [In] IntPtr lpOverlapped,
            [In] IntPtr lpCompletionRoutine
            );

        [UnmanagedFunctionPointer(CallingConvention.StdCall, CharSet = CharSet.Auto, SetLastError = true)]
        public unsafe delegate SocketError DWSASend(
            [In] Int32 Socket,
            [In] IntPtr lpWSABuffer,
            [In] Int32 BufferCount,
            [Out] IntPtr lpNumberOfBytesSend,
            [In] SocketFlags Flags,
            [In] IntPtr lpOverlapped,
            [In] IntPtr lpCompletionRoutine
            );

        #endregion

        #region//WSARecv

        [DllImport("WS2_32.dll", CharSet = CharSet.Unicode, SetLastError = true, CallingConvention = CallingConvention.StdCall)]
        public unsafe static extern SocketError WSARecv(
            [In] Int32 Socket,
            [In, Out] IntPtr lpWSABuffer,
            [In] Int32 BufferCount,
            [Out] IntPtr lpNumberOfBytesRecvd,
            [In, Out] ref SocketFlags Flags,
            [In] IntPtr lpOverlapped,
            [In] IntPtr lpCompletionRoutine
            );

        [UnmanagedFunctionPointer(CallingConvention.StdCall, CharSet = CharSet.Auto, SetLastError = true)]

        public unsafe delegate SocketError DWSARecv(
            [In] Int32 Socket,
            [In, Out] IntPtr lpWSABuffer,
            [In] Int32 BufferCount,
            [Out] IntPtr lpNumberOfBytesRecvd,
            [In, Out] ref SocketFlags Flags,
            [In] IntPtr lpOverlapped,
            [In] IntPtr lpCompletionRoutine
            );

        #endregion

        #region//WSASendTo

        [DllImport("ws2_32.dll", CharSet = CharSet.Unicode, SetLastError = true, CallingConvention = CallingConvention.StdCall)]
        public unsafe static extern SocketError WSASendTo(
            [In] Int32 Socket,
            [In] IntPtr lpWSABuffer,
            [In] Int32 BufferCount,
            [Out] IntPtr lpNumberOfBytesSend,
            [In] SocketFlags Flags,
            [In] ref Socket_Cache.SocketPacket.SockAddr To,
            [In] IntPtr lpToLen,
            [In] IntPtr lpOverlapped,
            [In] IntPtr lpCompletionRoutine
            );

        [UnmanagedFunctionPointer(CallingConvention.StdCall, CharSet = CharSet.Auto, SetLastError = true)]

        public unsafe delegate SocketError DWSASendTo(
            [In] Int32 Socket,
            [In] IntPtr lpWSABuffer,
            [In] Int32 BufferCount,
            [Out] IntPtr lpNumberOfBytesSend,
            [In] SocketFlags Flags,
            [In] ref Socket_Cache.SocketPacket.SockAddr To,
            [In] IntPtr lpToLen,
            [In] IntPtr lpOverlapped,
            [In] IntPtr lpCompletionRoutine
            );

        #endregion

        #region//WSARecvFrom       

        [DllImport("WS2_32.dll", CharSet = CharSet.Unicode, SetLastError = true, CallingConvention = CallingConvention.StdCall)]
        public unsafe static extern SocketError WSARecvFrom(
            [In] Int32 Socket,
            [In, Out] IntPtr lpWSABuffer,
            [In] Int32 BufferCount,
            [Out] IntPtr lpNumberOfBytesRecvd,
            [In, Out] ref SocketFlags Flags,
            [In, Out] ref Socket_Cache.SocketPacket.SockAddr From,
            [In, Out] IntPtr lpFromlen,
            [In] IntPtr lpOverlapped,
            [In] IntPtr lpCompletionRoutine
            );
       
        [UnmanagedFunctionPointer(CallingConvention.StdCall, CharSet = CharSet.Auto, SetLastError = true)]

        public unsafe delegate SocketError DWSARecvFrom(
            [In] Int32 Socket,
            [In, Out] IntPtr lpWSABuffer,
            [In] Int32 BufferCount,
            [Out] IntPtr lpNumberOfBytesRecvd,
            [In, Out] ref SocketFlags Flags,
            [In, Out] ref Socket_Cache.SocketPacket.SockAddr From,
            [In, Out] IntPtr lpFromlen,
            [In] IntPtr lpOverlapped,
            [In] IntPtr lpCompletionRoutine
           );

        #endregion
    }
}


================================================
FILE: WPELibrary/Lib/NativeMethods/WSock32.cs
================================================
using System.Net.Sockets;
using System.Runtime.InteropServices;
using System;

namespace WPELibrary.Lib.NativeMethods
{
    public static class WSock32
    {
        public static string ModuleName = "WSOCK32.dll";

        #region//Send

        [DllImport("WSOCK32.dll", CharSet = CharSet.Unicode, SetLastError = true, CallingConvention = CallingConvention.StdCall)]
        public unsafe static extern Int32 send(
            [In] Int32 Socket,
            [In] IntPtr lpBuffer,
            [In] Int32 Length,
            [In] SocketFlags Flags
            );

        [UnmanagedFunctionPointer(CallingConvention.StdCall, CharSet = CharSet.Auto, SetLastError = true)]
        public unsafe delegate Int32 DSend(
            [In] Int32 Socket,
            [In] IntPtr lpBuffer,
            [In] Int32 Length,
            [In] SocketFlags Flags
            );

        public static unsafe Int32 SendHook(
            [In] Int32 Socket,
            [In] IntPtr lpBuffer,
            [In] Int32 Length,
            [In] SocketFlags Flags)
        {
            Socket_Cache.SocketPacket.PacketType ptType = Socket_Cache.SocketPacket.PacketType.WS1_Send;
            return WinSockHook.Send_Hook(ptType, Socket, lpBuffer, Length, Flags);
        }

        #endregion

        #region//Recv

        [DllImport("WSOCK32.dll", CharSet = CharSet.Unicode, SetLastError = true, CallingConvention = CallingConvention.StdCall)]
        public unsafe static extern Int32 recv(
            [In] Int32 Socket,
            [Out] IntPtr lpBuffer,
            [In] Int32 Length,
            [In] SocketFlags Flags
            );

        [UnmanagedFunctionPointer(CallingConvention.StdCall, CharSet = CharSet.Auto, SetLastError = true)]
        public unsafe delegate Int32 Drecv(
            [In] Int32 Socket,
            [Out] IntPtr lpBuffer,
            [In] Int32 Length,
            [In] SocketFlags Flags
            );

        public static unsafe Int32 RecvHook(
            [In] Int32 Socket,
            [Out] IntPtr lpBuffer,
            [In] Int32 Length,
            [In] SocketFlags Flags)
        {
            Socket_Cache.SocketPacket.PacketType ptType = Socket_Cache.SocketPacket.PacketType.WS1_Recv;
            return WinSockHook.Recv_Hook(ptType, Socket, lpBuffer, Length, Flags);
        }

        #endregion

        #region//SendTo

        [DllImport("WSOCK32.dll", CharSet = CharSet.Unicode, SetLastError = true, CallingConvention = CallingConvention.StdCall)]
        public unsafe static extern Int32 sendto(
            [In] Int32 Socket,
            [In] IntPtr lpBuffer,
            [In] Int32 Length,
            [In] SocketFlags Flags,
            [In] ref Socket_Cache.SocketPacket.SockAddr To,
            [In] Int32 ToLen
            );

        [UnmanagedFunctionPointer(CallingConvention.StdCall, CharSet = CharSet.Auto, SetLastError = true)]

        public unsafe delegate Int32 DSendTo(
            [In] Int32 Socket,
            [In] IntPtr lpBuffer,
            [In] Int32 Length,
            [In] SocketFlags Flags,
            [In] ref Socket_Cache.SocketPacket.SockAddr To,
            [In] Int32 ToLen
            );

        public static unsafe Int32 SendToHook(
            [In] Int32 Socket,
            [In] IntPtr lpBuffer,
            [In] Int32 Length,
            [In] SocketFlags Flags,
            [In] ref Socket_Cache.SocketPacket.SockAddr To,
            [In] Int32 ToLen)
        {
            Socket_Cache.SocketPacket.PacketType ptType = Socket_Cache.SocketPacket.PacketType.WS1_SendTo;
            return WinSockHook.SendTo_Hook(ptType, Socket, lpBuffer, Length, Flags, ref To, ToLen);
        }

        #endregion

        #region//RecvFrom

        [DllImport("WSOCK32.dll", CharSet = CharSet.Unicode, SetLastError = true, CallingConvention = CallingConvention.StdCall)]
        public unsafe static extern Int32 recvfrom(
            [In] Int32 Socket,
            [Out] IntPtr lpBuffer,
            [In] Int32 Length,
            [In] SocketFlags Flags,
            [In, Out] ref Socket_Cache.SocketPacket.SockAddr From,
            [In, Out, Optional] IntPtr FromLen
            );

        [UnmanagedFunctionPointer(CallingConvention.StdCall, CharSet = CharSet.Auto, SetLastError = true)]

        public unsafe delegate Int32 DRecvFrom(
            [In] Int32 Socket,
            [Out] IntPtr lpBuffer,
            [In] Int32 Length,
            [In] SocketFlags Flags,
            [In, Out] ref Socket_Cache.SocketPacket.SockAddr From,
            [In, Out, Optional] IntPtr FromLen
            );

        public static unsafe Int32 RecvFromHook(
            [In] Int32 Socket,
            [Out] IntPtr lpBuffer,
            [In] Int32 Length,
            [In] SocketFlags Flags,
            [In, Out] ref Socket_Cache.SocketPacket.SockAddr From,
            [In, Out, Optional] IntPtr FromLen)
        {
            Socket_Cache.SocketPacket.PacketType ptType = Socket_Cache.SocketPacket.PacketType.WS1_RecvFrom;
            return WinSockHook.RecvFrom_Hook(ptType, Socket, lpBuffer, Length, Flags, ref From, FromLen);
        }

        #endregion
    }
}


================================================
FILE: WPELibrary/Lib/Proxy_AccountInfo.cs
================================================
using System;

namespace WPELibrary.Lib
{
    public class Proxy_AccountInfo
    {
        #region//序号

        protected Guid aid;

        public Guid AID
        {
            get { return aid; }
            set { aid = value; }
        }

        #endregion        

        #region//是否启用

        protected bool isenable;

        public bool IsEnable
        {
            get { return isenable; }
            set { isenable = value; }
        }

        #endregion

        #region//账号

        protected string username;

        public string UserName
        {
            get { return username; }
            set { username = value; }
        }

        #endregion

        #region//密码

        protected string password;

        public string PassWord
        {
            get { return password; }
            set { password = value; }
        }

        #endregion

        #region//登录时间

        protected DateTime logintime;

        public DateTime LoginTime
        {
            get { return logintime; }
            set { logintime = value; }
        }

        #endregion

        #region//登录IP

        protected string loginip;

        public string LoginIP
        {
            get { return loginip; }
            set { loginip = value; }
        }

        #endregion

        #region//IP所属地

        protected string iplocation;

        public string IPLocation
        {
            get { return iplocation; }
            set { iplocation = value; }
        }

        #endregion

        #region//是否限制链接数

        protected bool islimitlinks;

        public bool IsLimitLinks
        {
            get { return islimitlinks; }
            set { islimitlinks = value; }
        }

        #endregion

        #region//最大链接数  

        protected int limitlinks;

        public int LimitLinks
        {
            get { return limitlinks; }
            set { limitlinks = value; }
        }

        #endregion

        #region//是否限制设备数

        protected bool islimitdevices;

        public bool IsLimitDevices
        {
            get { return islimitdevices; }
            set { islimitdevices = value; }
        }

        #endregion

        #region//最大设备数

        protected int limitdevices;

        public int LimitDevices
        {
            get { return limitdevices; }
            set { limitdevices = value; }
        }

        #endregion

        #region//是否过期

        protected bool isexpiry;

        public bool IsExpiry
        {
            get { return isexpiry; }
            set { isexpiry = value; }
        }

        #endregion

        #region//过期时间

        protected DateTime expirytime;

        public DateTime ExpiryTime
        {
            get { return expirytime; }
            set { expirytime = value; }
        }

        #endregion

        #region//开通时间

        protected DateTime createtime;

        public DateTime CreateTime
        {
            get { return createtime; }
            set { createtime = value; }
        }

        #endregion

        #region//是否在线

        protected bool isonline;

        public bool IsOnLine
        {
            get { return isonline; }
            set { isonline = value; }
        }

        #endregion

        #region//Proxy_AccountInfo

        public Proxy_AccountInfo()
        {
            //
        }

        public Proxy_AccountInfo(
            Guid AID, 
            bool IsEnable, 
            string UserName, 
            string PassWord, 
            DateTime LoginTime, 
            string LoginIP, 
            string IPLocation, 
            bool IsLimitLinks, 
            int LimitLinks,
            bool IsLimitDevices,
            int LimitDevices,
            bool IsExpiry, 
            DateTime ExpiryTime, 
            DateTime CreateTime) 
        {
            this.aid = AID;
            this.isenable = IsEnable;
            this.username = UserName;
            this.password = PassWord;
            this.logintime = LoginTime;
            this.loginip = LoginIP;
            this.iplocation = IPLocation;
            this.islimitlinks = IsLimitLinks;
            this.limitlinks = LimitLinks;
            this.islimitdevices = IsLimitDevices;
            this.limitdevices = LimitDevices;
            this.isexpiry = IsExpiry;
            this.expirytime = ExpiryTime;
            this.createtime = CreateTime;
            this.isonline = false;
        }

        #endregion
    }
}


================================================
FILE: WPELibrary/Lib/Proxy_AuthInfo.cs
================================================
using System;

namespace WPELibrary.Lib
{
    public class Proxy_AuthInfo
    {
        #region//代理账号序号

        public Guid AID { get; set; }

        #endregion

        #region//IP地址

        public string IPAddress { get; set; }

        #endregion

        #region//链接数

        public int LinksNumber { get; set; }

        #endregion        

        #region//设备数

        public int DevicesNumber { get; set; }

        #endregion        

        #region//是否验证成功

        public bool AuthResult { get; set; }

        #endregion

        #region//验证时间

        public DateTime AuthTime { get; set; }

        #endregion

        #region//Proxy_AuthInfo

        public Proxy_AuthInfo(Guid AID, string ipAddress, bool authResult, DateTime authTime)
        {
            this.AID = AID;
            this.IPAddress = ipAddress;
            this.LinksNumber = 0;
            this.DevicesNumber = 0;
            this.AuthResult = authResult;
            this.AuthTime = authTime;
        }

        #endregion
    }
}


================================================
FILE: WPELibrary/Lib/Proxy_MapLocal.cs
================================================

namespace WPELibrary.Lib
{
    public class Proxy_MapLocal
    {
        //是否启用
        public bool IsEnable { get; set; }

        //协议类型
        public Socket_Cache.SocketProxy.MapProtocol ProtocolType { get; set; }

        //主机地址
        public string Host { get; set; }

        //主机端口
        public int Port { get; set; }

        //远程地址
        public string RemotePath { get; set; }

        //本地文件
        public string LocalPath { get; set; }        

        public Proxy_MapLocal(bool IsEnable, Socket_Cache.SocketProxy.MapProtocol ProtocolType, string Host, int Port, string RemotePath, string LocalPath) 
        {
            this.IsEnable = IsEnable;
            this.ProtocolType = ProtocolType;
            this.Host = Host;
            this.Port = Port;
            this.RemotePath = RemotePath;
            this.LocalPath = LocalPath;   
        }
    }
}


================================================
FILE: WPELibrary/Lib/Proxy_MapRemote.cs
================================================

namespace WPELibrary.Lib
{
    public class Proxy_MapRemote
    {
        //是否启用
        public bool IsEnable { get; set; }

        #region//请求地址

        //协议类型
        public Socket_Cache.SocketProxy.MapProtocol ProtocolType_From { get; set; }

        //主机地址
        public string Host_From { get; set; }

        //主机端口
        public int Port_From { get; set; }

        //路径地址
        public string Path_From { get; set; }

        #endregion

        #region//映射地址

        //协议类型
        public Socket_Cache.SocketProxy.MapProtocol ProtocolType_To { get; set; }

        //主机地址
        public string Host_To { get; set; }

        //主机端口
        public int Port_To { get; set; }

        //路径地址
        public string Path_To { get; set; }

        #endregion

        #region//Proxy_MapRemote

        public Proxy_MapRemote(
            bool IsEnable, 
            Socket_Cache.SocketProxy.MapProtocol ProtocolType_From, 
            string Host_From, 
            int Port_From, 
            string Path_From,
            Socket_Cache.SocketProxy.MapProtocol ProtocolType_To,
            string Host_To,
            int Port_To,
            string Path_To) 
        {
            this.IsEnable = IsEnable;
            this.ProtocolType_From = ProtocolType_From;
            this.Host_From = Host_From;
            this.Port_From = Port_From;
            this.Path_From = Path_From;
            this.ProtocolType_To = ProtocolType_To;
            this.Host_To = Host_To;
            this.Port_To = Port_To;
            this.Path_To = Path_To;           
        }

        #endregion
    }
}


================================================
FILE: WPELibrary/Lib/Socket_BitInfo.cs
================================================
using System;
using System.Collections;

namespace WPELibrary.Lib
{    
    public class Socket_BitInfo
    {
        private byte _value;

        public byte Value
        {
            get { return _value; }
            set { _value = value; }
        }

        public long Position { get; set; }

        public override string ToString()
        {
            var result = string.Format("{0}{1}{2}{3}{4}{5}{6}{7}"
                , GetBitAsString(7)
                , GetBitAsString(6)
                , GetBitAsString(5)
                , GetBitAsString(4)
                , GetBitAsString(3)
                , GetBitAsString(2)
                , GetBitAsString(1)
                , GetBitAsString(0)
                );
            return result;
        }

        public string GetBitAsString(int index)
        {
            if (this[index])
                return "1";
            else
                return "0";
        }

        public bool this[int index]
        {
            get
            {
                return (_value & (1 << index)) != 0;
            }
            set
            {
                if (value)
                    _value |= (byte)(1 << index);
                else
                    _value &= (byte)(~(1 << index));
            }
        }

        byte ConvertToByte(BitArray bits)
        {
            if (bits.Count != 8)
            {
                throw new ArgumentException("bits");
            }
            byte[] bytes = new byte[1];
            bits.CopyTo(bytes, 0);
            return bytes[0];
        }

        public Socket_BitInfo(byte value, long position)
        {
            this._value = value;
            this.Position = position;
        }
    }
}


================================================
FILE: WPELibrary/Lib/Socket_Cache.cs
================================================
using System;
using System.Collections.Concurrent;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.SQLite;
using System.Diagnostics;
using System.Drawing;
using System.Globalization;
using System.IO;
using System.Linq;
using System.Net;
using System.Net.Sockets;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Xml.Linq;
using Be.Windows.Forms;

namespace WPELibrary.Lib
{
    public static class Socket_Cache
    {
        #region//系统

        public static class System
        {
            public static string DefaultLanguage = "zh-CN";
            public static string LastInjection = string.Empty;
            public static string WPE64_URL = "https://www.wpe64.com";
            public static string WPE64_IP = "http://101.132.222.195";
            public static string WPE64_DLL = "WPELibrary.dll";
            public static string WPE = "Winsock Packet Editor x64";
            public static Socket_Cache.System.SystemMode StartMode = SystemMode.None;
            public static DateTime StartTime = DateTime.Now;
            public static IntPtr MainHandle = IntPtr.Zero;
            public static int SystemSocket = 0;
            public static bool ShowDebug = false;
            public static bool IsRemote = false;
            public static string Remote_URL, Remote_UserName, Remote_PassWord;
            public static ushort Remote_Port = 89;
            public static IDisposable WebServer;
            public static PerformanceCounter cpuCounter;
            public static string AESKey = string.Empty;
            public static bool IsShow_TextCompare = false, IsShow_TextDuplicate = false;
            public static Socket_Cache.System.Execute ListExecute = Socket_Cache.System.Execute.Sequence;

            public static Action<Action> InvokeAction { get; set; }

            #region//结构定义

            public enum SystemMode
            {
                None = 0,
                Process = 1,
                Proxy = 2,
            }

            public enum PWType
            {
                FilterList_Import = 0,
                FilterList_Export = 1,
                RobotList_Import = 2,
                RobotList_Export = 3,
                SendList_Import = 4,
                SendList_Export = 5,
                SendCollection_Import = 6,
                SendCollection_Export = 7,
                ProxyAccount_Import = 8,
                ProxyAccount_Export = 9,
                SystemBackUp_Import = 10,
                SystemBackUp_Export = 11,
                MapLocal_Import = 12,
                MapLocal_Export = 13,
                MapRemote_Import = 14,
                MapRemote_Export = 15,
            }

            public enum ListAction
            {
                Top = 0,
                Up = 1,
                Down = 2,
                Bottom = 3,
                Copy = 4,
                Export = 5,
                Delete = 6,
                CleanUp = 7,
                Import = 8,
            }

            public enum LogType
            {
                Socket,
                Proxy,
            }

            public enum Execute
            {
                Together,
                Sequence,
            }

            #endregion

            #region//获取列表执行模式

            public static Socket_Cache.System.Execute GetListExecute_ByString(string sListExecute)
            {
                Socket_Cache.System.Execute leReturn = Socket_Cache.System.Execute.Sequence;

                try
                {
                    return (Socket_Cache.System.Execute)Enum.Parse(typeof(Socket_Cache.System.Execute), sListExecute);
                }
                catch (Exception ex)
                {
                    Socket_Operation.DoLog(MethodBase.GetCurrentMethod().Name, ex.Message);
                }

                return leReturn;
            }

            #endregion          

            #region//保存系统配置到数据库

            public static void SaveSystemConfig_ToDB()
            {
                try
                {
                    Socket_Cache.DataBase.DeleteTable_SystemConfig();
                    Socket_Cache.DataBase.InsertTable_SystemConfig();
                }
                catch (Exception ex)
                {
                    Socket_Operation.DoLog(MethodBase.GetCurrentMethod().Name, ex.Message);
                }
            }

            public static XElement GetSystemConfig_XML()
            {
                try
                {
                    XElement xeSystemConfig = 
                        new XElement("SystemConfig",                 
                        new XElement("DefaultLanguage", Socket_Cache.System.DefaultLanguage),
                        new XElement("LastInjection", Socket_Cache.System.LastInjection),
                        new XElement("StartMode", Socket_Cache.System.StartMode),
                        new XElement("Remote_IsEnable", Socket_Cache.System.IsRemote),
                        new XElement("Remote_UserName", Socket_Cache.System.Remote_UserName),
                        new XElement("Remote_PassWord", Socket_Cache.System.Remote_PassWord),
                        new XElement("Remote_Port", Socket_Cache.System.Remote_Port),
                        new XElement("Remote_URL", Socket_Cache.System.Remote_URL)  
                        );
                    
                    return xeSystemConfig;
                }
                catch (Exception ex)
                {
                    Socket_Operation.DoLog(MethodBase.GetCurrentMethod().Name, ex.Message);
                }

                return null;
            }

            #endregion

            #region//从数据库加载系统配置

            public static void LoadSystemConfig_FromDB()
            {
                try
                {
                    DataTable SystemConfig = Socket_Cache.DataBase.SelectTable_SystemConfig();

                    if (SystemConfig.Rows.Count > 0)
                    {
                        Socket_Cache.System.DefaultLanguage = SystemConfig.Rows[0]["SystemConfig_DefaultLanguage"].ToString();
                        Socket_Cache.System.LastInjection = SystemConfig.Rows[0]["SystemConfig_LastInjection"].ToString();
                        Socket_Cache.System.StartMode = Socket_Cache.System.GetSystemMode_ByString(SystemConfig.Rows[0]["SystemConfig_StartMode"].ToString());
                        Socket_Cache.System.IsRemote = Convert.ToBoolean(SystemConfig.Rows[0]["SystemConfig_Remote_IsEnable"]);
                        Socket_Cache.System.Remote_UserName = SystemConfig.Rows[0]["SystemConfig_Remote_UserName"].ToString();
                        Socket_Cache.System.Remote_PassWord = SystemConfig.Rows[0]["SystemConfig_Remote_PassWord"].ToString();
                        Socket_Cache.System.Remote_Port = ushort.Parse(SystemConfig.Rows[0]["SystemConfig_Remote_Port"].ToString());
                        Socket_Cache.System.Remote_URL = SystemConfig.Rows[0]["SystemConfig_Remote_URL"].ToString();
                    }                    
                }
                catch (Exception ex)
                {
                    Socket_Operation.DoLog(MethodBase.GetCurrentMethod().Name, ex.Message);
                }
            }

            public static void SetSystemConfig_FromXML(XElement xeSystemConfig)
            {
                try
                {
                    XElement DefaultLanguage = xeSystemConfig.Element("DefaultLanguage");
                    if (DefaultLanguage != null)
                    {
                        Socket_Cache.System.DefaultLanguage = DefaultLanguage.Value;
                    }

                    XElement LastInjection = xeSystemConfig.Element("LastInjection");
                    if (LastInjection != null)
                    {
                        Socket_Cache.System.LastInjection = LastInjection.Value;
                    }

                    XElement StartMode = xeSystemConfig.Element("StartMode");
                    if (StartMode != null)
                    {
                        Socket_Cache.System.StartMode = Socket_Cache.System.GetSystemMode_ByString(StartMode.Value);
                    }

                    XElement Remote_IsEnable = xeSystemConfig.Element("Remote_IsEnable");
                    if (Remote_IsEnable != null)
                    {
                        Socket_Cache.System.IsRemote = Convert.ToBoolean(Remote_IsEnable.Value);
                    }

                    XElement Remote_UserName = xeSystemConfig.Element("Remote_UserName");
                    if (Remote_UserName != null)
                    {
                        Socket_Cache.System.Remote_UserName = Remote_UserName.Value;
                    }

                    XElement Remote_PassWord = xeSystemConfig.Element("Remote_PassWord");
                    if (Remote_PassWord != null)
                    {
                        Socket_Cache.System.Remote_PassWord = Remote_PassWord.Value;
                    }

                    XElement Remote_Port = xeSystemConfig.Element("Remote_Port");
                    if (Remote_Port != null)
                    {
                        Socket_Cache.System.Remote_Port = ushort.Parse(Remote_Port.Value);
                    }

                    XElement Remote_URL = xeSystemConfig.Element("Remote_URL");
                    if (Remote_URL != null)
                    {
                        Socket_Cache.System.Remote_URL = Remote_URL.Value;
                    }
                }
                catch (Exception ex)
                {
                    Socket_Operation.DoLog(MethodBase.GetCurrentMethod().Name, ex.Message);
                }
            }

            #endregion

            #region//保存注入进程名称到数据库

            public static void SaveSystemConfig_LastInjection_ToDB()
            {
                try
                {
                    Socket_Cache.DataBase.UpdateTable_SystemConfig_LastInjection();
                }
                catch (Exception ex)
                {
                    Socket_Operation.DoLog(MethodBase.GetCurrentMethod().Name, ex.Message);
                }
            }

            #endregion            

            #region//保存运行配置到数据库

            public static void SaveRunConfig_ToDB(Socket_Cache.System.SystemMode FromMode)
            {
                try
                {
                    if (Socket_Cache.System.StartMode.Equals(FromMode))
                    {
                        Socket_Cache.DataBase.DeleteTable_RunConfig();
                        Socket_Cache.DataBase.InsertTable_RunConfig();
                    }                    
                }
                catch (Exception ex)
                {
                    Socket_Operation.DoLog(MethodBase.GetCurrentMethod().Name, ex.Message);
                }
            }

            public static XElement GetProxyConfig_XML()
            {
                try
                {
                    XElement xeProxyConfig =
                        new XElement("ProxyConfig",
                        new XElement("ProxyIP_Auto", Socket_Cache.SocketProxy.ProxyIP_Auto),
                        new XElement("Enable_SOCKS5", Socket_Cache.SocketProxy.Enable_SOCKS5),
                        new XElement("ProxyPort", Socket_Cache.SocketProxy.ProxyPort),
                        new XElement("Enable_Auth", Socket_Cache.SocketProxy.Enable_Auth),
                        new XElement("NoRecord", Socket_Cache.SocketProxy.NoRecord),
                        new XElement("DelClosed", Socket_Cache.SocketProxy.DelClosed),
                        new XElement("LogList_AutoRoll", Socket_Cache.LogList.Proxy_AutoRoll),
                        new XElement("LogList_AutoClear", Socket_Cache.LogList.Proxy_AutoClear),
                        new XElement("LogList_AutoClear_Value", Socket_Cache.LogList.Proxy_AutoClear_Value),
                        new XElement("Enable_MapLocal", Socket_Cache.ProxyMapping.Enable_MapLocal),
                        new XElement("Enable_MapRemote", Socket_Cache.ProxyMapping.Enable_MapRemote),
                        new XElement("Enable_ExternalProxy", Socket_Cache.SocketProxy.Enable_ExternalProxy),
                        new XElement("ExternalProxy_IP", Socket_Cache.SocketProxy.ExternalProxy_IP),
                        new XElement("ExternalProxy_Port", Socket_Cache.SocketProxy.ExternalProxy_Port),
                        new XElement("Enable_ExternalProxy_AppointPort", Socket_Cache.SocketProxy.Enable_ExternalProxy_AppointPort),
                        new XElement("ExternalProxy_AppointPort", Socket_Cache.SocketProxy.ExternalProxy_AppointPort),
                        new XElement("Enable_ExternalProxy_Auth", Socket_Cache.SocketProxy.Enable_ExternalProxy_Auth),
                        new XElement("ExternalProxy_UserName", Socket_Cache.SocketProxy.ExternalProxy_UserName),
                        new XElement("ExternalProxy_PassWord", Socket_Cache.SocketProxy.ExternalProxy_PassWord),
                        new XElement("SpeedMode", Socket_Cache.SocketProxy.SpeedMode)
                        );

                    return xeProxyConfig;
                }
                catch (Exception ex)
                {
                    Socket_Operation.DoLog(MethodBase.GetCurrentMethod().Name, ex.Message);
                }

                return null;
            }

            public static XElement GetInjectionConfig_XML()
            {
                try
                {
                    XElement xeInjectionConfig =
                        new XElement("InjectionConfig",
                        new XElement("CheckNotShow", Socket_Cache.SocketPacket.CheckNotShow),
                        new XElement("CheckSocket", Socket_Cache.SocketPacket.CheckSocket),
                        new XElement("CheckSocket_Value", Socket_Cache.SocketPacket.CheckSocket_Value),
                        new XElement("CheckIP", Socket_Cache.SocketPacket.CheckIP),
                        new XElement("CheckIP_Value", Socket_Cache.SocketPacket.CheckIP_Value),
                        new XElement("CheckPort", Socket_Cache.SocketPacket.CheckPort),
                        new XElement("CheckPort_Value", Socket_Cache.SocketPacket.CheckPort_Value),
                        new XElement("CheckHead", Socket_Cache.SocketPacket.CheckHead),
                        new XElement("CheckHead_Value", Socket_Cache.SocketPacket.CheckHead_Value),
                        new XElement("CheckData", Socket_Cache.SocketPacket.CheckData),
                        new XElement("CheckData_Value", Socket_Cache.SocketPacket.CheckData_Value),
                        new XElement("CheckSize", Socket_Cache.SocketPacket.CheckSize),
                        new XElement("CheckLength_Value", Socket_Cache.SocketPacket.CheckLength_Value),
                        new XElement("HookWS1_Send", Socket_Cache.SocketPacket.HookWS1_Send),
                        new XElement("HookWS1_SendTo", Socket_Cache.SocketPacket.HookWS1_SendTo),
                        new XElement("HookWS1_Recv", Socket_Cache.SocketPacket.HookWS1_Recv),
                        new XElement("HookWS1_RecvFrom", Socket_Cache.SocketPacket.HookWS1_RecvFrom),
                        new XElement("HookWS2_Send", Socket_Cache.SocketPacket.HookWS2_Send),
                        new XElement("HookWS2_SendTo", Socket_Cache.SocketPacket.HookWS2_SendTo),
                        new XElement("HookWS2_Recv", Socket_Cache.SocketPacket.HookWS2_Recv),
                        new XElement("HookWS2_RecvFrom", Socket_Cache.SocketPacket.HookWS2_RecvFrom),
                        new XElement("HookWSA_Send", Socket_Cache.SocketPacket.HookWSA_Send),
                        new XElement("HookWSA_SendTo", Socket_Cache.SocketPacket.HookWSA_SendTo),
                        new XElement("HookWSA_Recv", Socket_Cache.SocketPacket.HookWSA_Recv),
                        new XElement("HookWSA_RecvFrom", Socket_Cache.SocketPacket.HookWSA_RecvFrom),
                        new XElement("HotKey1", Socket_Cache.SocketPacket.HotKey1),
                        new XElement("HotKey2", Socket_Cache.SocketPacket.HotKey2),
                        new XElement("HotKey3", Socket_Cache.SocketPacket.HotKey3),
                        new XElement("HotKey4", Socket_Cache.SocketPacket.HotKey4),
                        new XElement("HotKey5", Socket_Cache.SocketPacket.HotKey5),
                        new XElement("HotKey6", Socket_Cache.SocketPacket.HotKey6),
                        new XElement("HotKey7", Socket_Cache.SocketPacket.HotKey7),
                        new XElement("HotKey8", Socket_Cache.SocketPacket.HotKey8),
                        new XElement("HotKey9", Socket_Cache.SocketPacket.HotKey9),
                        new XElement("HotKey10", Socket_Cache.SocketPacket.HotKey10),
                        new XElement("HotKey11", Socket_Cache.SocketPacket.HotKey11),
                        new XElement("HotKey12", Socket_Cache.SocketPacket.HotKey12),
                        new XElement("SocketList_AutoRoll", Socket_Cache.SocketList.AutoRoll),
                        new XElement("SocketList_AutoClear", Socket_Cache.SocketList.AutoClear),
                        new XElement("SocketList_AutoClear_Value", Socket_Cache.SocketList.AutoClear_Value),
                        new XElement("LogList_AutoRoll", Socket_Cache.LogList.Socket_AutoRoll),
                        new XElement("LogList_AutoClear", Socket_Cache.LogList.Socket_AutoClear),
                        new XElement("LogList_AutoClear_Value", Socket_Cache.LogList.Socket_AutoClear_Value),
                        new XElement("SpeedMode", Socket_Cache.SocketPacket.SpeedMode),
                        new XElement("ListExecute", Socket_Cache.System.ListExecute),
                        new XElement("FilterExecute", Socket_Cache.Filter.FilterExecute)
                        );

                    return xeInjectionConfig;
                }
                catch (Exception ex)
                {
                    Socket_Operation.DoLog(MethodBase.GetCurrentMethod().Name, ex.Message);
                }

                return null;
            }

            #endregion

            #region//从数据库加载运行配置

            public static void LoadRunConfig_FromDB()
            {
                try
                {
                    DataTable RunConfig = Socket_Cache.DataBase.SelectTable_RunConfig();

                    if (RunConfig.Rows.Count > 0)
                    {
                        Socket_Cache.SocketProxy.ProxyIP_Auto = Convert.ToBoolean(RunConfig.Rows[0]["ProxyConfig_ProxyIP_Auto"]);
                        Socket_Cache.SocketProxy.Enable_SOCKS5 = Convert.ToBoolean(RunConfig.Rows[0]["ProxyConfig_EnableSOCKS5"]);
                        Socket_Cache.SocketProxy.ProxyPort = ushort.Parse(RunConfig.Rows[0]["ProxyConfig_ProxyPort"].ToString());
                        Socket_Cache.SocketProxy.Enable_Auth = Convert.ToBoolean(RunConfig.Rows[0]["ProxyConfig_EnableAuth"]);
                        Socket_Cache.SocketProxy.NoRecord = Convert.ToBoolean(RunConfig.Rows[0]["ProxyConfig_ProxyList_NoRecord"]);
                        Socket_Cache.SocketProxy.DelClosed = Convert.ToBoolean(RunConfig.Rows[0]["ProxyConfig_ClientList_DelClosed"]);
                        Socket_Cache.LogList.Proxy_AutoRoll = Convert.ToBoolean(RunConfig.Rows[0]["ProxyConfig_LogList_AutoRoll"]);
                        Socket_Cache.LogList.Proxy_AutoClear = Convert.ToBoolean(RunConfig.Rows[0]["ProxyConfig_LogList_AutoClear"]);
                        Socket_Cache.LogList.Proxy_AutoClear_Value = Convert.ToInt32(RunConfig.Rows[0]["ProxyConfig_LogList_AutoClear_Value"]);
                        Socket_Cache.ProxyMapping.Enable_MapLocal = Convert.ToBoolean(RunConfig.Rows[0]["ProxyConfig_Enable_MapLocal"]);
                        Socket_Cache.ProxyMapping.Enable_MapRemote = Convert.ToBoolean(RunConfig.Rows[0]["ProxyConfig_Enable_MapRemote"]);
                        Socket_Cache.SocketProxy.Enable_ExternalProxy = Convert.ToBoolean(RunConfig.Rows[0]["ProxyConfig_Enable_ExternalProxy"]);
                        Socket_Cache.SocketProxy.ExternalProxy_IP = RunConfig.Rows[0]["ProxyConfig_ExternalProxy_IP"].ToString();
                        Socket_Cache.SocketProxy.ExternalProxy_Port = ushort.Parse(RunConfig.Rows[0]["ProxyConfig_ExternalProxy_Port"].ToString());                                                
                        Socket_Cache.SocketProxy.Enable_ExternalProxy_AppointPort = Convert.ToBoolean(RunConfig.Rows[0]["ProxyConfig_Enable_ExternalProxy_AppointPort"]);
                        Socket_Cache.SocketProxy.ExternalProxy_AppointPort = RunConfig.Rows[0]["ProxyConfig_ExternalProxy_AppointPort"].ToString();
                        Socket_Cache.SocketProxy.Enable_ExternalProxy_Auth = Convert.ToBoolean(RunConfig.Rows[0]["ProxyConfig_Enable_ExternalProxy_Auth"]);
                        Socket_Cache.SocketProxy.ExternalProxy_UserName = RunConfig.Rows[0]["ProxyConfig_ExternalProxy_UserName"].ToString();
                        Socket_Cache.SocketProxy.ExternalProxy_PassWord = RunConfig.Rows[0]["ProxyConfig_ExternalProxy_PassWord"].ToString();
                        Socket_Cache.SocketProxy.SpeedMode = Convert.ToBoolean(RunConfig.Rows[0]["ProxyConfig_SpeedMode"]);
                        Socket_Cache.SocketPacket.CheckNotShow = Convert.ToBoolean(RunConfig.Rows[0]["InjectionConfig_CheckNotShow"]);
                        Socket_Cache.SocketPacket.CheckSocket = Convert.ToBoolean(RunConfig.Rows[0]["InjectionConfig_CheckSocket"]);
                        Socket_Cache.SocketPacket.CheckSocket_Value = RunConfig.Rows[0]["InjectionConfig_CheckSocket_Value"].ToString();
                        Socket_Cache.SocketPacket.CheckIP = Convert.ToBoolean(RunConfig.Rows[0]["InjectionConfig_CheckIP"]);
                        Socket_Cache.SocketPacket.CheckIP_Value = RunConfig.Rows[0]["InjectionConfig_CheckIP_Value"].ToString();
                        Socket_Cache.SocketPacket.CheckPort = Convert.ToBoolean(RunConfig.Rows[0]["InjectionConfig_CheckPort"]);
                        Socket_Cache.SocketPacket.CheckPort_Value = RunConfig.Rows[0]["InjectionConfig_CheckPort_Value"].ToString();
                        Socket_Cache.SocketPacket.CheckHead = Convert.ToBoolean(RunConfig.Rows[0]["InjectionConfig_CheckHead"]);
                        Socket_Cache.SocketPacket.CheckHead_Value = RunConfig.Rows[0]["InjectionConfig_CheckHead_Value"].ToString();
                        Socket_Cache.SocketPacket.CheckData = Convert.ToBoolean(RunConfig.Rows[0]["InjectionConfig_CheckData"]);
                        Socket_Cache.SocketPacket.CheckData_Value = RunConfig.Rows[0]["InjectionConfig_CheckData_Value"].ToString();
                        Socket_Cache.SocketPacket.CheckSize = Convert.ToBoolean(RunConfig.Rows[0]["InjectionConfig_CheckSize"]);
                        Socket_Cache.SocketPacket.CheckLength_Value = RunConfig.Rows[0]["InjectionConfig_CheckLength_Value"].ToString();
                        Socket_Cache.SocketPacket.HookWS1_Send = Convert.ToBoolean(RunConfig.Rows[0]["InjectionConfig_HookWS1_Send"]);
                        Socket_Cache.SocketPacket.HookWS1_SendTo = Convert.ToBoolean(RunConfig.Rows[0]["InjectionConfig_HookWS1_SendTo"]);
                        Socket_Cache.SocketPacket.HookWS1_Recv = Convert.ToBoolean(RunConfig.Rows[0]["InjectionConfig_HookWS1_Recv"]);
                        Socket_Cache.SocketPacket.HookWS1_RecvFrom = Convert.ToBoolean(RunConfig.Rows[0]["InjectionConfig_HookWS1_RecvFrom"]);
                        Socket_Cache.SocketPacket.HookWS2_Send = Convert.ToBoolean(RunConfig.Rows[0]["InjectionConfig_HookWS2_Send"]);
                        Socket_Cache.SocketPacket.HookWS2_SendTo = Convert.ToBoolean(RunConfig.Rows[0]["InjectionConfig_HookWS2_SendTo"]);
                        Socket_Cache.SocketPacket.HookWS2_Recv = Convert.ToBoolean(RunConfig.Rows[0]["InjectionConfig_HookWS2_Recv"]);
                        Socket_Cache.SocketPacket.HookWS2_RecvFrom = Convert.ToBoolean(RunConfig.Rows[0]["InjectionConfig_HookWS2_RecvFrom"]);
                        Socket_Cache.SocketPacket.HookWSA_Send = Convert.ToBoolean(RunConfig.Rows[0]["InjectionConfig_HookWSA_Send"]);
                        Socket_Cache.SocketPacket.HookWSA_SendTo = Convert.ToBoolean(RunConfig.Rows[0]["InjectionConfig_HookWSA_SendTo"]);
                        Socket_Cache.SocketPacket.HookWSA_Recv = Convert.ToBoolean(RunConfig.Rows[0]["InjectionConfig_HookWSA_Recv"]);
                        Socket_Cache.SocketPacket.HookWSA_RecvFrom = Convert.ToBoolean(RunConfig.Rows[0]["InjectionConfig_HookWSA_RecvFrom"]);
                        Socket_Cache.SocketPacket.HotKey1 = RunConfig.Rows[0]["InjectionConfig_HotKey1"].ToString();
                        Socket_Cache.SocketPacket.HotKey2 = RunConfig.Rows[0]["InjectionConfig_HotKey2"].ToString();
                        Socket_Cache.SocketPacket.HotKey3 = RunConfig.Rows[0]["InjectionConfig_HotKey3"].ToString();
                        Socket_Cache.SocketPacket.HotKey4 = RunConfig.Rows[0]["InjectionConfig_HotKey4"].ToString();
                        Socket_Cache.SocketPacket.HotKey5 = RunConfig.Rows[0]["InjectionConfig_HotKey5"].ToString();
                        Socket_Cache.SocketPacket.HotKey6 = RunConfig.Rows[0]["InjectionConfig_HotKey6"].ToString();
                        Socket_Cache.SocketPacket.HotKey7 = RunConfig.Rows[0]["InjectionConfig_HotKey7"].ToString();
                        Socket_Cache.SocketPacket.HotKey8 = RunConfig.Rows[0]["InjectionConfig_HotKey8"].ToString();
                        Socket_Cache.SocketPacket.HotKey9 = RunConfig.Rows[0]["InjectionConfig_HotKey9"].ToString();
                        Socket_Cache.SocketPacket.HotKey10 = RunConfig.Rows[0]["InjectionConfig_HotKey10"].ToString();
                        Socket_Cache.SocketPacket.HotKey11 = RunConfig.Rows[0]["InjectionConfig_HotKey11"].ToString();
                        Socket_Cache.SocketPacket.HotKey12 = RunConfig.Rows[0]["InjectionConfig_HotKey12"].ToString();
                        Socket_Cache.SocketList.AutoRoll = Convert.ToBoolean(RunConfig.Rows[0]["InjectionConfig_SocketList_AutoRoll"]);
                        Socket_Cache.SocketList.AutoClear = Convert.ToBoolean(RunConfig.Rows[0]["InjectionConfig_SocketList_AutoClear"]);
                        Socket_Cache.SocketList.AutoClear_Value = Convert.ToInt32(RunConfig.Rows[0]["InjectionConfig_SocketList_AutoClear_Value"]);
                        Socket_Cache.LogList.Socket_AutoRoll = Convert.ToBoolean(RunConfig.Rows[0]["InjectionConfig_LogList_AutoRoll"]);
                        Socket_Cache.LogList.Socket_AutoClear = Convert.ToBoolean(RunConfig.Rows[0]["InjectionConfig_LogList_AutoClear"]);
                        Socket_Cache.LogList.Socket_AutoClear_Value = Convert.ToInt32(RunConfig.Rows[0]["InjectionConfig_LogList_AutoClear_Value"]);
                        Socket_Cache.SocketPacket.SpeedMode = Convert.ToBoolean(RunConfig.Rows[0]["InjectionConfig_SpeedMode"]);
                        Socket_Cache.System.ListExecute = Socket_Cache.System.GetListExecute_ByString(RunConfig.Rows[0]["InjectionConfig_ListExecute"].ToString());
                        Socket_Cache.Filter.FilterExecute = Socket_Cache.FilterList.GetFilterListExecute_ByString(RunConfig.Rows[0]["InjectionConfig_FilterExecute"].ToString());
                    }
                }
                catch (Exception ex)
                {
                    Socket_Operation.DoLog(MethodBase.GetCurrentMethod().Name, ex.Message);
                }
            }

            public static void SetProxyConfig_FromXML(XElement xeProxyConfig)
            {
                try
                {
                    XElement ProxyIP_Auto = xeProxyConfig.Element("ProxyIP_Auto");
                    if (ProxyIP_Auto != null)
                    {
                        Socket_Cache.SocketProxy.ProxyIP_Auto = Convert.ToBoolean(ProxyIP_Auto.Value);
                    }

                    XElement Enable_SOCKS5 = xeProxyConfig.Element("Enable_SOCKS5");
                    if (Enable_SOCKS5 != null)
                    {
                        Socket_Cache.SocketProxy.Enable_SOCKS5 = Convert.ToBoolean(Enable_SOCKS5.Value);
                    }

                    XElement ProxyPort = xeProxyConfig.Element("ProxyPort");
                    if (ProxyPort != null)
                    {
                        Socket_Cache.SocketProxy.ProxyPort = ushort.Parse(ProxyPort.Value);
                    }

                    XElement Enable_Auth = xeProxyConfig.Element("Enable_Auth");
                    if (Enable_Auth != null)
                    {
                        Socket_Cache.SocketProxy.Enable_Auth = Convert.ToBoolean(Enable_Auth.Value);
                    }

                    XElement NoRecord = xeProxyConfig.Element("NoRecord");
                    if (NoRecord != null)
                    {
                        Socket_Cache.SocketProxy.NoRecord = Convert.ToBoolean(NoRecord.Value);
                    }

                    XElement DelClosed = xeProxyConfig.Element("DelClosed");
                    if (DelClosed != null)
                    {
                        Socket_Cache.SocketProxy.DelClosed = Convert.ToBoolean(DelClosed.Value);
                    }

                    XElement LogList_AutoRoll = xeProxyConfig.Element("LogList_AutoRoll");
                    if (LogList_AutoRoll != null)
                    {
                        Socket_Cache.LogList.Proxy_AutoRoll = Convert.ToBoolean(LogList_AutoRoll.Value);
                    }

                    XElement LogList_AutoClear = xeProxyConfig.Element("LogList_AutoClear");
                    if (LogList_AutoClear != null)
                    {
                        Socket_Cache.LogList.Proxy_AutoClear = Convert.ToBoolean(LogList_AutoClear.Value);
                    }

                    XElement LogList_AutoClear_Value = xeProxyConfig.Element("LogList_AutoClear_Value");
                    if (LogList_AutoClear_Value != null)
                    {
                        Socket_Cache.LogList.Proxy_AutoClear_Value = int.Parse(LogList_AutoClear_Value.Value);
                    }

                    XElement Enable_MapLocal = xeProxyConfig.Element("Enable_MapLocal");
                    if (Enable_MapLocal != null)
                    {
                        Socket_Cache.ProxyMapping.Enable_MapLocal = Convert.ToBoolean(Enable_MapLocal.Value);
                    }

                    XElement Enable_MapRemote = xeProxyConfig.Element("Enable_MapRemote");
                    if (Enable_MapRemote != null)
                    {
                        Socket_Cache.ProxyMapping.Enable_MapRemote = Convert.ToBoolean(Enable_MapRemote.Value);
                    }

                    XElement Enable_ExternalProxy = xeProxyConfig.Element("Enable_ExternalProxy");
                    if (Enable_ExternalProxy != null)
                    {
                        Socket_Cache.SocketProxy.Enable_ExternalProxy = Convert.ToBoolean(Enable_ExternalProxy.Value);
                    }

                    XElement ExternalProxy_IP = xeProxyConfig.Element("ExternalProxy_IP");
                    if (ExternalProxy_IP != null)
                    {
                        Socket_Cache.SocketProxy.ExternalProxy_IP = ExternalProxy_IP.Value;
                    }

                    XElement ExternalProxy_Port = xeProxyConfig.Element("ExternalProxy_Port");
                    if (ExternalProxy_Port != null)
                    {
                        Socket_Cache.SocketProxy.ExternalProxy_Port = ushort.Parse(ExternalProxy_Port.Value);
                    }

                    XElement Enable_ExternalProxy_AppointPort = xeProxyConfig.Element("Enable_ExternalProxy_AppointPort");
                    if (Enable_ExternalProxy_AppointPort != null)
                    {
                        Socket_Cache.SocketProxy.Enable_ExternalProxy_AppointPort = Convert.ToBoolean(Enable_ExternalProxy_AppointPort.Value);
                    }

                    XElement ExternalProxy_AppointPort = xeProxyConfig.Element("ExternalProxy_AppointPort");
                    if (ExternalProxy_AppointPort != null)
                    {
                        Socket_Cache.SocketProxy.ExternalProxy_AppointPort = ExternalProxy_AppointPort.Value;
                    }

                    XElement Enable_ExternalProxy_Auth = xeProxyConfig.Element("Enable_ExternalProxy_Auth");
                    if (Enable_ExternalProxy_Auth != null)
                    {
                        Socket_Cache.SocketProxy.Enable_ExternalProxy_Auth = Convert.ToBoolean(Enable_ExternalProxy_Auth.Value);
                    }

                    XElement ExternalProxy_UserName = xeProxyConfig.Element("ExternalProxy_UserName");
                    if (ExternalProxy_UserName != null)
                    {
                        Socket_Cache.SocketProxy.ExternalProxy_UserName = ExternalProxy_UserName.Value;
                    }

                    XElement ExternalProxy_PassWord = xeProxyConfig.Element("ExternalProxy_PassWord");
                    if (ExternalProxy_PassWord != null)
                    {
                        Socket_Cache.SocketProxy.ExternalProxy_PassWord = ExternalProxy_PassWord.Value;
                    }

                    XElement SpeedMode = xeProxyConfig.Element("SpeedMode");
                    if (SpeedMode != null)
                    {
                        Socket_Cache.SocketProxy.SpeedMode = Convert.ToBoolean(SpeedMode.Value);
                    }
                }
                catch (Exception ex)
                {
                    Socket_Operation.DoLog(MethodBase.GetCurrentMethod().Name, ex.Message);
                }
            }

            public static void SetInjectionConfig_FromXML(XElement xeInjectionConfig)
            {
                try
                {
                    XElement CheckNotShow = xeInjectionConfig.Element("CheckNotShow");
                    if (CheckNotShow != null)
                    {
                        Socket_Cache.SocketPacket.CheckNotShow = Convert.ToBoolean(CheckNotShow.Value);
                    }

                    XElement CheckSocket = xeInjectionConfig.Element("CheckSocket");
                    if (CheckSocket != null)
                    {
                        Socket_Cache.SocketPacket.CheckSocket = Convert.ToBoolean(CheckSocket.Value);
                    }

                    XElement CheckSocket_Value = xeInjectionConfig.Element("CheckSocket_Value");
                    if (CheckSocket_Value != null)
                    {
                        Socket_Cache.SocketPacket.CheckSocket_Value = CheckSocket_Value.Value;
                    }

                    XElement CheckIP = xeInjectionConfig.Element("CheckIP");
                    if (CheckIP != null)
                    {
                        Socket_Cache.SocketPacket.CheckIP = Convert.ToBoolean(CheckIP.Value);
                    }

                    XElement CheckIP_Value = xeInjectionConfig.Element("CheckIP_Value");
                    if (CheckIP_Value != null)
                    {
                        Socket_Cache.SocketPacket.CheckIP_Value = CheckIP_Value.Value;
                    }

                    XElement CheckPort = xeInjectionConfig.Element("CheckPort");
                    if (CheckPort != null)
                    {
                        Socket_Cache.SocketPacket.CheckPort = Convert.ToBoolean(CheckPort.Value);
                    }

                    XElement CheckPort_Value = xeInjectionConfig.Element("CheckPort_Value");
                    if (CheckPort_Value != null)
                    {
                        Socket_Cache.SocketPacket.CheckPort_Value = CheckPort_Value.Value;
                    }

                    XElement CheckHead = xeInjectionConfig.Element("CheckHead");
                    if (CheckHead != null)
                    {
                        Socket_Cache.SocketPacket.CheckHead = Convert.ToBoolean(CheckHead.Value);
                    }

                    XElement CheckHead_Value = xeInjectionConfig.Element("CheckHead_Value");
                    if (CheckHead_Value != null)
                    {
                        Socket_Cache.SocketPacket.CheckHead_Value = CheckHead_Value.Value;
                    }

                    XElement CheckData = xeInjectionConfig.Element("CheckData");
                    if (CheckData != null)
                    {
                        Socket_Cache.SocketPacket.CheckData = Convert.ToBoolean(CheckData.Value);
                    }

                    XElement CheckData_Value = xeInjectionConfig.Element("CheckData_Value");
                    if (CheckData_Value != null)
                    {
                        Socket_Cache.SocketPacket.CheckData_Value = CheckData_Value.Value;
                    }

                    XElement CheckSize = xeInjectionConfig.Element("CheckSize");
                    if (CheckSize != null)
                    {
                        Socket_Cache.SocketPacket.CheckSize = Convert.ToBoolean(CheckSize.Value);
                    }

                    XElement CheckLength_Value = xeInjectionConfig.Element("CheckLength_Value");
                    if (CheckLength_Value != null)
                    {
                        Socket_Cache.SocketPacket.CheckLength_Value = CheckLength_Value.Value;
                    }

                    XElement HookWS1_Send = xeInjectionConfig.Element("HookWS1_Send");
                    if (HookWS1_Send != null)
                    {
                        Socket_Cache.SocketPacket.HookWS1_Send = Convert.ToBoolean(HookWS1_Send.Value);
                    }

                    XElement HookWS1_SendTo = xeInjectionConfig.Element("HookWS1_SendTo");
                    if (HookWS1_SendTo != null)
                    {
                        Socket_Cache.SocketPacket.HookWS1_SendTo = Convert.ToBoolean(HookWS1_SendTo.Value);
                    }

                    XElement HookWS1_Recv = xeInjectionConfig.Element("HookWS1_Recv");
                    if (HookWS1_Recv != null)
                    {
                        Socket_Cache.SocketPacket.HookWS1_Recv = Convert.ToBoolean(HookWS1_Recv.Value);
                    }

                    XElement HookWS1_RecvFrom = xeInjectionConfig.Element("HookWS1_RecvFrom");
                    if (HookWS1_RecvFrom != null)
                    {
                        Socket_Cache.SocketPacket.HookWS1_RecvFrom = Convert.ToBoolean(HookWS1_RecvFrom.Value);
                    }

                    XElement HookWS2_Send = xeInjectionConfig.Element("HookWS2_Send");
                    if (HookWS2_Send != null)
                    {
                        Socket_Cache.SocketPacket.HookWS2_Send = Convert.ToBoolean(HookWS2_Send.Value);
                    }

                    XElement HookWS2_SendTo = xeInjectionConfig.Element("HookWS2_SendTo");
                    if (HookWS2_SendTo != null)
                    {
                        Socket_Cache.SocketPacket.HookWS2_SendTo = Convert.ToBoolean(HookWS2_SendTo.Value);
                    }

                    XElement HookWS2_Recv = xeInjectionConfig.Element("HookWS2_Recv");
                    if (HookWS2_Recv != null)
                    {
                        Socket_Cache.SocketPacket.HookWS2_Recv = Convert.ToBoolean(HookWS2_Recv.Value);
                    }

                    XElement HookWS2_RecvFrom = xeInjectionConfig.Element("HookWS2_RecvFrom");
                    if (HookWS2_RecvFrom != null)
                    {
                        Socket_Cache.SocketPacket.HookWS2_RecvFrom = Convert.ToBoolean(HookWS2_RecvFrom.Value);
                    }

                    XElement HookWSA_Send = xeInjectionConfig.Element("HookWSA_Send");
                    if (HookWSA_Send != null)
                    {
                        Socket_Cache.SocketPacket.HookWSA_Send = Convert.ToBoolean(HookWSA_Send.Value);
                    }

                    XElement HookWSA_SendTo = xeInjectionConfig.Element("HookWSA_SendTo");
                    if (HookWSA_SendTo != null)
                    {
                        Socket_Cache.SocketPacket.HookWSA_SendTo = Convert.ToBoolean(HookWSA_SendTo.Value);
                    }

                    XElement HookWSA_Recv = xeInjectionConfig.Element("HookWSA_Recv");
                    if (HookWSA_Recv != null)
                    {
                        Socket_Cache.SocketPacket.HookWSA_Recv = Convert.ToBoolean(HookWSA_Recv.Value);
                    }

                    XElement HookWSA_RecvFrom = xeInjectionConfig.Element("HookWSA_RecvFrom");
                    if (HookWSA_RecvFrom != null)
                    {
                        Socket_Cache.SocketPacket.HookWSA_RecvFrom = Convert.ToBoolean(HookWSA_RecvFrom.Value);
                    }

                    XElement HotKey1 = xeInjectionConfig.Element("HotKey1");
                    if (HotKey1 != null)
                    {
                        Socket_Cache.SocketPacket.HotKey1 = HotKey1.Value;
                    }

                    XElement HotKey2 = xeInjectionConfig.Element("HotKey2");
                    if (HotKey2 != null)
                    {
                        Socket_Cache.SocketPacket.HotKey2 = HotKey2.Value;
                    }

                    XElement HotKey3 = xeInjectionConfig.Element("HotKey3");
                    if (HotKey3 != null)
                    {
                        Socket_Cache.SocketPacket.HotKey3 = HotKey3.Value;
                    }

                    XElement HotKey4 = xeInjectionConfig.Element("HotKey4");
                    if (HotKey4 != null)
                    {
                        Socket_Cache.SocketPacket.HotKey4 = HotKey4.Value;
                    }

                    XElement HotKey5 = xeInjectionConfig.Element("HotKey5");
                    if (HotKey5 != null)
                    {
                        Socket_Cache.SocketPacket.HotKey5 = HotKey5.Value;
                    }

                    XElement HotKey6 = xeInjectionConfig.Element("HotKey6");
                    if (HotKey6 != null)
                    {
                        Socket_Cache.SocketPacket.HotKey6 = HotKey6.Value;
                    }

                    XElement HotKey7 = xeInjectionConfig.Element("HotKey7");
                    if (HotKey7 != null)
                    {
                        Socket_Cache.SocketPacket.HotKey7 = HotKey7.Value;
                    }

                    XElement HotKey8 = xeInjectionConfig.Element("HotKey8");
                    if (HotKey8 != null)
                    {
                        Socket_Cache.SocketPacket.HotKey8 = HotKey8.Value;
                    }

                    XElement HotKey9 = xeInjectionConfig.Element("HotKey9");
                    if (HotKey9 != null)
                    {
                        Socket_Cache.SocketPacket.HotKey9 = HotKey9.Value;
                    }

                    XElement HotKey10 = xeInjectionConfig.Element("HotKey10");
                    if (HotKey10 != null)
                    {
                        Socket_Cache.SocketPacket.HotKey10 = HotKey10.Value;
                    }

                    XElement HotKey11 = xeInjectionConfig.Element("HotKey11");
                    if (HotKey11 != null)
                    {
                        Socket_Cache.SocketPacket.HotKey11 = HotKey11.Value;
                    }

                    XElement HotKey12 = xeInjectionConfig.Element("HotKey12");
                    if (HotKey12 != null)
                    {
                        Socket_Cache.SocketPacket.HotKey12 = HotKey12.Value;
                    }

                    XElement SocketList_AutoRoll = xeInjectionConfig.Element("SocketList_AutoRoll");
                    if (SocketList_AutoRoll != null)
                    {
                        Socket_Cache.SocketList.AutoRoll = Convert.ToBoolean(SocketList_AutoRoll.Value);
                    }

                    XElement SocketList_AutoClear = xeInjectionConfig.Element("SocketList_AutoClear");
                    if (SocketList_AutoClear != null)
                    {
                        Socket_Cache.SocketList.AutoClear = Convert.ToBoolean(SocketList_AutoClear.Value);
                    }

                    XElement SocketList_AutoClear_Value = xeInjectionConfig.Element("SocketList_AutoClear_Value");
                    if (SocketList_AutoClear_Value != null)
                    {
                        Socket_Cache.SocketList.AutoClear_Value = int.Parse(SocketList_AutoClear_Value.Value);
                    }

                    XElement LogList_AutoRoll = xeInjectionConfig.Element("LogList_AutoRoll");
                    if (LogList_AutoRoll != null)
                    {
                        Socket_Cache.LogList.Socket_AutoRoll = Convert.ToBoolean(LogList_AutoRoll.Value);
                    }

                    XElement LogList_AutoClear = xeInjectionConfig.Element("LogList_AutoClear");
                    if (LogList_AutoClear != null)
                    {
                        Socket_Cache.LogList.Socket_AutoClear = Convert.ToBoolean(LogList_AutoClear.Value);
                    }

                    XElement LogList_AutoClear_Value = xeInjectionConfig.Element("LogList_AutoClear_Value");
                    if (LogList_AutoClear_Value != null)
                    {
                        Socket_Cache.LogList.Socket_AutoClear_Value = int.Parse(LogList_AutoClear_Value.Value);
                    }

                    XElement SpeedMode = xeInjectionConfig.Element("SpeedMode");
                    if (SpeedMode != null)
                    {
                        Socket_Cache.SocketPacket.SpeedMode = Convert.ToBoolean(SpeedMode.Value);
                    }

                    XElement ListExecute = xeInjectionConfig.Element("ListExecute");
                    if (ListExecute != null)
                    {
                        Socket_Cache.System.ListExecute = Socket_Cache.System.GetListExecute_ByString(ListExecute.Value);
                    }

                    XElement FilterExecute = xeInjectionConfig.Element("FilterExecute");
                    if (FilterExecute != null)
                    {
                        Socket_Cache.Filter.FilterExecute = Socket_Cache.FilterList.GetFilterListExecute_ByString(FilterExecute.Value);
                    }
                }
                catch (Exception ex)
                {
                    Socket_Operation.DoLog(MethodBase.GetCurrentMethod().Name, ex.Message);
                }
            }

            #endregion

            #region//获取启动模式

            public static Socket_Cache.System.SystemMode GetSystemMode_ByString(string smMode)
            {
                Socket_Cache.System.SystemMode systemMode = Socket_Cache.System.SystemMode.None;

                try
                {
                    systemMode = (Socket_Cache.System.SystemMode)Enum.Parse(typeof(Socket_Cache.System.SystemMode), smMode);
                }
                catch (Exception ex)
                {
                    Socket_Operation.DoLog(MethodBase.GetCurrentMethod().Name, ex.Message);
                }

                return systemMode;
            }

            #endregion          

            #region//保存系统列表到数据库

            public static void SaveSystemList_ToDB()
            {
                Socket_Cache.FilterList.SaveFilterList_ToDB();
                Socket_Cache.SendList.SaveSendList_ToDB();
                Socket_Cache.RobotList.SaveRobotList_ToDB();
            }

            #endregion

            #region//从数据库加载系统列表

            public static void LoadSystemList_FromDB()
            {
                try
                {
                    Task.Run(() =>
                    {
                        Socket_Cache.FilterList.LoadFilterList_FromDB();
                        Socket_Cache.SendList.LoadSendList_FromDB();
                        Socket_Cache.RobotList.LoadRobotList_FromDB();
                    });
                }
                catch (Exception ex)
                {
                    Socket_Operation.DoLog(nameof(LoadSystemList_FromDB), ex.Message);
                }                
            }

            #endregion

            #region//导出系统备份到文件(对话框)

            public static void ExportSystemBackUp_Dialog(
                string FileName, 
                bool SystemConfig,
                bool ProxySet, 
                bool ProxyAccount, 
                bool ProxyMapping,
                bool InjectionSet, 
                bool FilterList, 
                bool SendList, 
                bool RobotList)
            {
                try
                {
                    SaveFileDialog sfdSaveFile = new SaveFileDialog();
                    sfdSaveFile.Filter = MultiLanguage.GetDefaultLanguage(MultiLanguage.MutiLan_213) + "(*.sb)|*.sb";

                    if (!string.IsNullOrEmpty(FileName))
                    {
                        sfdSaveFile.FileName = FileName;
                    }
                    sfdSaveFile.RestoreDirectory = true;

                    if (sfdSaveFile.ShowDialog() == DialogResult.OK)
                    {
                        Socket_PasswordFrom pwForm = new Socket_PasswordFrom(Socket_Cache.System.PWType.SystemBackUp_Export);
                        pwForm.ShowDialog();

                        string FilePath = sfdSaveFile.FileName;
                        if (!string.IsNullOrEmpty(FilePath))
                        {
                            Socket_Cache.System.ExportSystemBackUp(
                                FilePath,
                                SystemConfig,
                                ProxySet,
                                ProxyAccount,
                                ProxyMapping,
                                InjectionSet,
                                FilterList,
                                SendList,
                                RobotList,
                                true);

                            string sLog = string.Format(MultiLanguage.GetDefaultLanguage(MultiLanguage.MutiLan_214), FilePath);
                            Socket_Operation.DoLog(MethodBase.GetCurrentMethod().Name, sLog);
                        }
                    }
                }
                catch (Exception ex)
                {
                    Socket_Operation.DoLog(MethodBase.GetCurrentMethod().Name, ex.Message);
                }
            }

            private static void ExportSystemBackUp(
                string FilePath,
                bool SystemConfig,
                bool ProxySet,
                bool ProxyAccount,
                bool ProxyMapping,
                bool InjectionSet,
                bool FilterList,
                bool SendList,
                bool RobotList,
                bool DoEncrypt)
            {
                try
                {
                    XDocument xdoc = new XDocument
                    {
                        Declaration = new XDeclaration("1.0", "utf-8", "yes")
                    };

                    XElement xeBackUp = new XElement("WPE64_BackUp");

                    //系统设置
                    if (SystemConfig)
                    {
                        XElement xeSystemConfig = Socket_Cache.System.GetSystemConfig_XML();
                        if (xeSystemConfig != null)
                        {
                            xeBackUp.Add(xeSystemConfig);
                        }
                    }

                    //代理设置
                    if (ProxySet)
                    {
                        XElement xeProxyConfig = Socket_Cache.System.GetProxyConfig_XML();
                        if (xeProxyConfig != null)
                        {
                            xeBackUp.Add(xeProxyConfig);
                        }
                    }

                    //代理账号
                    if (ProxyAccount)
                    {
                        if (Socket_Cache.ProxyAccount.lstProxyAccount.Count > 0)
                        {
                            List<Guid> gExport = new List<Guid>();
                            foreach (Proxy_AccountInfo pai in Socket_Cache.ProxyAccount.lstProxyAccount)
                            {
                                gExport.Add(pai.AID);
                            }

                            XElement xeProxyAccount = Socket_Cache.ProxyAccount.GetProxyAccountList_XML(gExport);
                            if (xeProxyAccount != null)
                            {
                                xeBackUp.Add(xeProxyAccount);
                            }
                        }                        
                    }

                    //代理映射
                    if (ProxyMapping)
                    {
                        //本地映射
                        if (Socket_Cache.ProxyMapping.lstMapLocal.Count > 0)
                        {
                            XElement xeMapLocal = Socket_Cache.ProxyMapping.GetMapLocal_XML(Socket_Cache.ProxyMapping.lstMapLocal.ToList());
                            if (xeMapLocal != null)
                            {
                                xeBackUp.Add(xeMapLocal);
                            }
                        }
                    }

                    //注入设置
                    if (InjectionSet)
                    {
                        XElement xeInjectionConfig = Socket_Cache.System.GetInjectionConfig_XML();
                        if (xeInjectionConfig != null)
                        {
                            xeBackUp.Add(xeInjectionConfig);
                        }
                    }

                    //滤镜列表
                    if (FilterList)
                    {
                        if (Socket_Cache.FilterList.lstFilter.Count > 0)
                        {
                            XElement xeFilterList = Socket_Cache.FilterList.GetFilterList_XML(Socket_Cache.FilterList.lstFilter.ToList());
                            if (xeFilterList != null)
                            {
                                xeBackUp.Add(xeFilterList);
                            }
                        }                        
                    }

                    //发送列表
                    if (SendList)
                    {
                        if (Socket_Cache.SendList.lstSend.Count > 0)
                        {
                            XElement xeSendList = Socket_Cache.SendList.GetSendList_XML(Socket_Cache.SendList.lstSend.ToList());
                            if (xeSendList != null)
                            {
                                xeBackUp.Add(xeSendList);
                            }
                        }                        
                    }

                    //机器人列表
                    if (RobotList)
                    {
                        if (Socket_Cache.RobotList.lstRobot.Count > 0)
                        {
                            XElement xeRobotList = Socket_Cache.RobotList.GetRobotList_XML(Socket_Cache.RobotList.lstRobot.ToList());
                            if (xeRobotList != null)
                            {
                                xeBackUp.Add(xeRobotList);
                            }
                        }
                    }

                    xdoc.Add(xeBackUp);
                    xdoc.Save(FilePath);

                    if (DoEncrypt)
                    {
                        string sPassword = Socket_Cache.System.AESKey;

                        if (!string.IsNullOrEmpty(sPassword))
                        {
                            Socket_Operation.EncryptXMLFile(FilePath, sPassword);
                        }
                    }
                }
                catch (Exception ex)
                {
                    Socket_Operation.DoLog(MethodBase.GetCurrentMethod().Name, ex.Message);
                }
            }

            #endregion

            #region//从文件导入系统备份(对话框)

            public static void ImportSystemBackUp_Dialog()
            {
                try
                {
                    OpenFileDialog ofdLoadFile = new OpenFileDialog();

                    ofdLoadFile.Filter = MultiLanguage.GetDefaultLanguage(MultiLanguage.MutiLan_213) + "(*.sb)|*.sb";
                    ofdLoadFile.RestoreDirectory = true;

                    if (ofdLoadFile.ShowDialog() == DialogResult.OK)
                    {
                        string FilePath = ofdLoadFile.FileName;

                        if (!string.IsNullOrEmpty(FilePath))
                        {
                            ImportSystemBackUp(FilePath, true);
                        }
                    }
                }
                catch (Exception ex)
                {
                    Socket_Operation.DoLog(MethodBase.GetCurrentMethod().Name, ex.Message);
                }
            }

            private static void ImportSystemBackUp(string FilePath, bool LoadFromUser)
            {
                try
                {
                    if (File.Exists(FilePath))
                    {
                        XDocument xdoc = new XDocument();

                        bool bEncrypt = Socket_Operation.IsEncryptXMLFile(FilePath);
                        if (bEncrypt)
                        {
                            if (LoadFromUser)
                            {
                                Socket_PasswordFrom pwForm = new Socket_PasswordFrom(Socket_Cache.System.PWType.SystemBackUp_Import);
                                pwForm.ShowDialog();
                            }

                            xdoc = Socket_Operation.DecryptXMLFile(FilePath, Socket_Cache.System.AESKey);
                        }
                        else
                        {
                            xdoc = XDocument.Load(FilePath);
                        }

                        if (xdoc == null)
                        {
                            string sError = MultiLanguage.GetDefaultLanguage(MultiLanguage.MutiLan_92);

                            if (LoadFromUser)
                            {
                                Socket_Operation.ShowMessageBox(sError);
                            }
                            else
                            {
                                Socket_Operation.DoLog(MethodBase.GetCurrentMethod().Name, sError);
                            }
                        }
                        else
                        {
                            ImportSystemBackUp_FromXDocument(xdoc);

                            if (bEncrypt)
                            {
                                Socket_Operation.DoLog(MethodBase.GetCurrentMethod().Name, MultiLanguage.GetDefaultLanguage(MultiLanguage.MutiLan_216));
                            }
                            else
                            {
                                Socket_Operation.DoLog(MethodBase.GetCurrentMethod().Name, MultiLanguage.GetDefaultLanguage(MultiLanguage.MutiLan_215));
                            }
                        }
                    }
                }
                catch (Exception ex)
                {
                    Socket_Operation.DoLog(MethodBase.GetCurrentMethod().Name, ex.Message);
                }
            }

            private static void ImportSystemBackUp_FromXDocument(XDocument xdoc)
            {
                #region//有效性检测

                string RootName = xdoc.Root.Name.LocalName;
                if (!RootName.Equals("WPE64_BackUp"))
                {
                    Socket_Operation.ShowMessageBox(MultiLanguage.GetDefaultLanguage(MultiLanguage.MutiLan_217));
                    return;
                }

                #endregion

                #region//系统设置

                try
                {                    
                    XElement xeSystemConfig = xdoc.Root.Element("SystemConfig");
                    if (xeSystemConfig != null)
                    {
                        SetSystemConfig_FromXML(xeSystemConfig);
                        SaveSystemConfig_ToDB();
                    }
                }
                catch (Exception ex)
                {
                    Socket_Operation.DoLog("Import SystemConfig", ex.Message);
                }

                #endregion

                #region//代理设置

                try
                {                    
                    XElement xeProxyConfig = xdoc.Root.Element("ProxyConfig");
                    if (xeProxyConfig != null)
                    {
                        SetProxyConfig_FromXML(xeProxyConfig);
                        Socket_Cache.DataBase.DeleteTable_RunConfig();
                        Socket_Cache.DataBase.InsertTable_RunConfig();
                    }
                }
                catch (Exception ex)
                {
                    Socket_Operation.DoLog("Import ProxyConfig", ex.Message);
                }

                #endregion

                #region//注入设置

                try
                {                    
                    XElement xeInjectionConfig = xdoc.Root.Element("InjectionConfig");
                    if (xeInjectionConfig != null)
                    {
                        SetInjectionConfig_FromXML(xeInjectionConfig);
                        Socket_Cache.DataBase.DeleteTable_RunConfig();
                        Socket_Cache.DataBase.InsertTable_RunConfig();
                    }
                }
                catch (Exception ex)
                {
                    Socket_Operation.DoLog("Import InjectionConfig", ex.Message);
                }

                #endregion

                #region//代理账号

                try
                {                    
                    XElement xeProxyAccountList = xdoc.Root.Element("ProxyAccountList");                    
                    if (xeProxyAccountList != null)
                    {
                        XDocument ProxyAccountList = new XDocument
                        {
                            Declaration = new XDeclaration("1.0", "utf-8", "yes")
                        };
                        ProxyAccountList.Add(xeProxyAccountList);

                        Socket_Cache.ProxyAccount.LoadProxyAccountList_FromXDocument(ProxyAccountList);
                        Socket_Cache.DataBase.DeleteTable_ProxyAccount();
                        Socket_Cache.DataBase.InsertTable_ProxyAccount();
                        Socket_Cache.DataBase.DeleteTable_ProxyAccount_LoginInfo();
                    }
                }
                catch (Exception ex)
                {
                    Socket_Operation.DoLog("Import ProxyAccountList", ex.Message);
                }

                #endregion

                #region//代理映射

                try
                {
                    //本地代理映射
                    XElement xeMapLocal = xdoc.Root.Element("MapLocal");
                    if (xeMapLocal != null)
                    {
                        XDocument MapLocal = new XDocument
                        {
                            Declaration = new XDeclaration("1.0", "utf-8", "yes")
                        };
                        MapLocal.Add(xeMapLocal);

                        Socket_Cache.ProxyMapping.LoadMapLocal_FromXDocument(MapLocal);
                        Socket_Cache.DataBase.DeleteTable_ProxyMapLocal();
                        Socket_Cache.DataBase.InsertTable_ProxyMapLocal();                        
                    }

                    //远程代理映射
                    XElement xeMapRemote = xdoc.Root.Element("MapRemote");
                    if (xeMapRemote != null)
                    {
                        XDocument MapRemote = new XDocument
                        {
                            Declaration = new XDeclaration("1.0", "utf-8", "yes")
                        };
                        MapRemote.Add(xeMapRemote);

                        Socket_Cache.ProxyMapping.LoadMapRemote_FromXDocument(MapRemote);
                        Socket_Cache.DataBase.DeleteTable_ProxyMapRemote();
                        Socket_Cache.DataBase.InsertTable_ProxyMapRemote();
                    }
                }
                catch (Exception ex)
                {
                    Socket_Operation.DoLog("Import ProxyAccountList", ex.Message);
                }

                #endregion

                #region//滤镜列表

                try
                {                    
                    XElement xeFilterList = xdoc.Root.Element("FilterList");
                    if (xeFilterList != null)
                    {
                        XDocument FilterList = new XDocument
                        {
                            Declaration = new XDeclaration("1.0", "utf-8", "yes")
                        };
                        FilterList.Add(xeFilterList);

                        Socket_Cache.FilterList.LoadFilterList_FromXDocument(FilterList);
                        Socket_Cache.FilterList.SaveFilterList_ToDB();
                        Socket_Cache.FilterList.FilterListClear();
                    }
                }
                catch (Exception ex)
                {
                    Socket_Operation.DoLog("Import FilterList", ex.Message);
                }

                #endregion

                #region//发送列表

                try
                {                    
                    XElement xeSendList = xdoc.Root.Element("SendList");
                    if (xeSendList != null)
                    {
                        XDocument SendList = new XDocument
                        {
                            Declaration = new XDeclaration("1.0", "utf-8", "yes")
                        };
                        SendList.Add(xeSendList);

                        Socket_Cache.SendList.LoadSendList_FromXDocument(SendList);
                        Socket_Cache.SendList.SaveSendList_ToDB();
                        Socket_Cache.SendList.SendListClear();
                    }
                }
                catch (Exception ex)
                {
                    Socket_Operation.DoLog("Import SendList", ex.Message);
                }

                #endregion

                #region//机器人列表

                try
                {                    
                    XElement xeRobotList = xdoc.Root.Element("RobotList");
                    if (xeRobotList != null)
                    {
                        XDocument RobotList = new XDocument
                        {
                            Declaration = new XDeclaration("1.0", "utf-8", "yes")
                        };
                        RobotList.Add(xeRobotList);

                        Socket_Cache.RobotList.LoadRobotList_FromXDocument(RobotList);
                        Socket_Cache.RobotList.SaveRobotList_ToDB();
                        Socket_Cache.RobotList.RobotListClear();
                    }
                }
                catch (Exception ex)
                {
                    Socket_Operation.DoLog("Import RobotList", ex.Message);
                }

                #endregion
            }

            #endregion
        }

        #endregion

        #region//代理

        public static class SocketProxy
        {  
            public static ulong ProxyTotal_CNT, ProxyTCP_CNT, ProxyUDP_CNT;
            public static int ProxySpeed_Uplink, ProxySpeed_Downlink;
            public static IPAddress ProxyTCP_IP = IPAddress.Any;
            public static IPAddress ProxyUDP_IP = IPAddress.Any;
            public static bool NoRecord = true, DelClosed = true;
            public static bool SpeedMode = false;
            public static bool IsListening = false;            
            public static bool ProxyIP_Auto = true;
            public static bool Enable_SOCKS5 = true, Enable_Auth = true;
            public static bool Enable_ExternalProxy = false, Enable_ExternalProxy_AppointPort = false, Enable_ExternalProxy_Auth = false;
            public static string ExternalProxy_IP = "127.0.0.1";
            public static ushort ExternalProxy_Port = 8889;
            public static string ExternalProxy_AppointPort = "80,8080,443,8443", ExternalProxy_UserName, ExternalProxy_PassWord;            
            public static ushort ProxyPort = 1080;
            public static int UDPCloseTime = 60;
            public static long Total_Request = 0;
            public static long Total_Response = 0;
            public static int MaxChartPoint = 100;
            public const long MaxNetworkSpeed = 100000;
            public static string ProxyOnLineInfo = string.Empty;
            public static string ProxyBytesInfo = string.Empty;
            public static string ProxySpeedInfo = string.Empty;

            public static readonly ConcurrentDictionary<string, IPAddress> DnsCache = new ConcurrentDictionary<string, IPAddress>(StringComparer.OrdinalIgnoreCase);
            public static readonly TimeSpan CacheExpiration = TimeSpan.FromMinutes(5);

            #region//定义结构

            public enum ProxyType
            {
                None = 0,
                Http = 1,
                Socket5 = 5,
                Socket6 = 6,
            }

            public enum ProxyStep : byte
            {
                Handshake = 0,
                AuthUserName = 1,
                Command = 2,
                ForwardData = 3,
            }

            public enum AuthType : byte
            {
                None = 0,
                GSSAPI = 1,
                UserName = 2,
            }

            public enum AddressType : byte
            {
                Invalid = 0,
                IPv4 = 1,
                Domain = 3,
                IPv6 = 4,
            }

            public enum DomainType : byte
            {
                Socket = 0,
                Http = 1,
                Https = 2,
                External = 3,
            }

            public enum MapProtocol : byte
            {
                Http = 0,
                Https = 1,
            }

            public enum CommandType : byte
            {
                Connect = 1,
                Bind = 2,
                UDP = 3,
            }

            public enum CommandResponse : byte
            {
                Success = 0,
                Fault = 1,
                Unsupport =7,
            }

            public enum DataType : byte
            {
                Request = 0,
                Response = 1,
            }

            public enum ProxySpeedType
            {
                Uplink = 0,
                Downlink = 1,
            }            

            #endregion

            #region//接收客户端请求

            public static void HandleClient(Socket clientSocket)
            {
                Socket_ProxyTCP spt = null;

                try
                {
                    spt = new Socket_ProxyTCP(clientSocket, clientSocket.ReceiveBufferSize);
                    Socket_Cache.SocketProxy.StartReceive(spt);
                }
                catch (Exception ex)
                {
                    spt?.Dispose();
                    Socket_Operation.DoLog_Proxy(MethodBase.GetCurrentMethod().Name, ex.Message);
                }
            }

            private static void StartReceive(Socket_ProxyTCP spt)
            {
                try
                {
                    if (spt?.Client?.Socket == null)
                    {
                        spt?.Dispose();
                        return;
                    }

                    var args = new SocketAsyncEventArgs();
                    args.SetBuffer(spt.Client.Buffer, 0, spt.Client.Buffer.Length);
                    args.UserToken = spt;
                    args.Completed += ReceiveCompleted;

                    if (!spt.Client.Socket.ReceiveAsync(args))
                    {
                        Socket_Cache.SocketProxy.ReceiveCompleted(spt.Client.Socket, args);
                    }
                }
                catch (Exception ex)
                {
                    Socket_Operation.DoLog_Proxy(MethodBase.GetCurrentMethod().Name, ex.Message);
                    spt.Client.Close();
                }
            }

            private static void ReceiveCompleted(object sender, SocketAsyncEventArgs args)
            {
                Socket_ProxyTCP spt = (Socket_ProxyTCP)args.UserToken;

                try
                {
                    if (args.SocketError != SocketError.Success || args.BytesTransferred <= 0)
                    {
                        spt.Client.Close();
                        return;
                    }

                    if (Socket_Cache.SocketProxy.IsListening)
                    {
                        int bytesRead = args.BytesTransferred;
                        ReadOnlySpan<byte> proxyBufferSpan = spt.Client.Buffer.AsSpan(0, bytesRead);
                        Span<byte> combinedData = new byte[spt.Client.Data.Length + bytesRead].AsSpan();

                        if (spt.Client.Data.Length > 0)
                        {
                            spt.Client.Data.AsSpan().CopyTo(combinedData);
                        }
                        proxyBufferSpan.CopyTo(combinedData.Slice(spt.Client.Data.Length));

                        bool bIsMatch = Socket_Operation.CheckDataIsMatchProxyStep(combinedData, spt.ProxyStep);
                        if (bIsMatch)
                        {
                            switch (spt.ProxyStep)
                            {
                                case Socket_Cache.SocketProxy.ProxyStep.Handshake:
                                    Socket_Cache.SocketProxy.Handshake(spt, combinedData);
                                    break;

                                case Socket_Cache.SocketProxy.ProxyStep.AuthUserName:
                                    Socket_Cache.SocketProxy.AuthUserName(spt, combinedData);
                                    break;

                                case Socket_Cache.SocketProxy.ProxyStep.Command:
                                    Socket_Cache.SocketProxy.Command(spt, combinedData);
                                    break;

                                case Socket_Cache.SocketProxy.ProxyStep.ForwardData:
                                    Socket_Cache.SocketProxy.ForwardData(spt, combinedData);
                                    break;
                            }

                            spt.Client.Data = Array.Empty<byte>();
                        }
                        else
                        {
                            spt.Client.Data = combinedData.ToArray();
                        }

                        Socket_Cache.SocketProxy.StartReceive(spt);
                    }
                }
                catch (SocketException ex) when (Socket_Operation.IsExpectedSocketError(ex.ErrorCode))
                {
                    spt.Client.Close();
                }
                catch (Exception ex)
                {
                    Socket_Operation.DoLog_Proxy(MethodBase.GetCurrentMethod().Name, ex.Message);
                    spt.Client.Close();
                }
                finally
                {
                    args.Dispose();
                }
            }            

            #endregion

            #region//握手过程

            private static void Handshake(Socket_ProxyTCP spt, ReadOnlySpan<byte> bData)
            {
                try
                {
                    spt.ProxyType = (Socket_Cache.SocketProxy.ProxyType)bData[0];

                    if (spt.ProxyType == Socket_Cache.SocketProxy.ProxyType.Socket5)
                    {
                        bool bSupportAuthType = false;

                        Socket_Cache.SocketProxy.AuthType atServer = new Socket_Cache.SocketProxy.AuthType();
                        if (Socket_Cache.SocketProxy.Enable_Auth)
                        {
                            atServer = Socket_Cache.SocketProxy.AuthType.UserName;
                        }
                        else
                        {
                            atServer = Socket_Cache.SocketProxy.AuthType.None;
                        }

                        int iMETHODS_COUNT = bData[1];
                        ReadOnlySpan<byte> bMETHODS = bData.Slice(2, iMETHODS_COUNT);
                        foreach (byte method in bMETHODS)
                        {
                            Socket_Cache.SocketProxy.AuthType atClient = (Socket_Cache.SocketProxy.AuthType)method;

                            if (atServer == atClient)
                            {
                                bSupportAuthType = true;
                                break;
                            }
                        }

                        if (bSupportAuthType)
                        {
                            Span<byte> bAuth = stackalloc byte[2];
                            bAuth[0] = (byte)Socket_Cache.SocketProxy.ProxyType.Socket5;
                            bAuth[1] = (byte)atServer;
                            Socket_Operation.SendTCPData(spt.Client.Socket, bAuth);

                            if (atServer == Socket_Cache.SocketProxy.AuthType.UserName)
                            {
                                spt.ProxyStep = Socket_Cache.SocketProxy.ProxyStep.AuthUserName;

                                if (bData.Length > iMETHODS_COUNT + 2)
                                {
                                    ReadOnlySpan<byte> bAuthDate = bData.Slice(iMETHODS_COUNT + 2);

                                    bool bIsMatch = Socket_Operation.CheckDataIsMatchProxyStep(bAuthDate, Socket_Cache.SocketProxy.ProxyStep.AuthUserName);
                                    if (bIsMatch)
                                    {
                                        Socket_Cache.SocketProxy.AuthUserName(spt, bAuthDate);
                                    }
                                }
                            }
                            else
                            {
                                spt.ProxyStep = Socket_Cache.SocketProxy.ProxyStep.Command;
                            }
                        }                        
                    }
                    else
                    {
                        string sLog = string.Format(MultiLanguage.GetDefaultLanguage(MultiLanguage.MutiLan_145), spt.ProxyType);
                        Socket_Operation.DoLog_Proxy(MethodBase.GetCurrentMethod().Name, sLog);
                    }
                }
                catch (Exception ex)
                {
                    Socket_Operation.DoLog_Proxy(MethodBase.GetCurrentMethod().Name, ex.Message);
                }
            }

            #endregion

            #region//验证账号密码

            private static void AuthUserName(Socket_ProxyTCP spt, ReadOnlySpan<byte> bData)
            {
                try
                {
                    byte VERSION = bData[0];

                    if (VERSION == 0x01)
                    {
                        int USERNAME_LENGTH = bData[1];
                        ReadOnlySpan<byte> USERNAME = bData.Slice(2, USERNAME_LENGTH);

                        int PASSWORD_LENGTH = bData[2 + USERNAME_LENGTH];
                        ReadOnlySpan<byte> PASSWORD = bData.Slice(3 + USERNAME_LENGTH, PASSWORD_LENGTH);

                        string sUserName = Socket_Operation.BytesToString(Socket_Cache.SocketPacket.EncodingFormat.UTF8, USERNAME);
                        string sPassWord = Socket_Operation.BytesToString(Socket_Cache.SocketPacket.EncodingFormat.UTF8, PASSWORD);
                        string ClientIP = spt.Client.EndPoint.Address.ToString();

                        Span<byte> bAuth = stackalloc byte[2];
                        bAuth[0] = 0x01;

                        // 第一步:先验证账号密码
                        bool bAuthOK = Socket_Cache.ProxyAccount.CheckUserNameAndPassWord(sUserName, sPassWord, out Guid AccountID);

                        if (!bAuthOK)
                        {
                            // 账号密码验证失败直接返回
                            bAuth[1] = (byte)0x01;
                            Socket_Operation.SendTCPData(spt.Client.Socket, bAuth);
                            return;
                        }

                        // 第二步:验证通过后检查连接数限制
                        bool isOverLinks = Socket_Cache.ProxyAccount.CheckLimitLinks(AccountID, ClientIP);
                        if (isOverLinks)
                        {
                            bAuth[1] = (byte)0x01;
                            Socket_Operation.SendTCPData(spt.Client.Socket, bAuth);
                            return;
                        }

                        // 第三步:检查设备数限制
                        bool isOverDevices = Socket_Cache.ProxyAccount.CheckLimitDevices(AccountID, ClientIP);                                                
                        if (isOverDevices)
                        {
                            bAuth[1] = (byte)0x01;
                            Socket_Operation.SendTCPData(spt.Client.Socket, bAuth);
                            return;
                        }

                        // 最终判断是否允许登录
                        bool isAllowed = bAuthOK && !isOverLinks && !isOverDevices;
                        bAuth[1] = isAllowed ? (byte)0x00 : (byte)0x01;

                        if (isAllowed)
                        {
                            Socket_Cache.ProxyAccount.SetOnline_ByAccountID(AccountID, true);
                            Socket_Cache.ProxyAccount.RecordLoginIP_ByAccountID(AccountID, ClientIP);
                            Socket_Cache.ProxyAccount.AuthResult_ToList(AccountID, ClientIP, true);

                            spt.AID = AccountID;
                            spt.ProxyStep = Socket_Cache.SocketProxy.ProxyStep.Command;
                        }

                        Socket_Operation.SendTCPData(spt.Client.Socket, bAuth);
                    }
                }
                catch (Exception ex)
                {
                    Socket_Operation.DoLog_Proxy(MethodBase.GetCurrentMethod().Name, ex.Message);
                }
            }

            #endregion

            #region//执行命令

            private static void Command(Socket_ProxyTCP spt, ReadOnlySpan<byte> bData)
            {
                try
                {
                    spt.ProxyType = (Socket_Cache.SocketProxy.ProxyType)bData[0];
                    spt.CommandType = (Socket_Cache.SocketProxy.CommandType)bData[1];
                    spt.AddressType = (Socket_Cache.SocketProxy.AddressType)bData[3];

                    if (spt.ProxyType == Socket_Cache.SocketProxy.ProxyType.Socket5)
                    {
                        try
                        {
                            ReadOnlySpan<byte> bADDRESS = bData.Slice(4, bData.Length - 4);
                            ReadOnlySpan<byte> bServerTCP_IP = Socket_Cache.SocketProxy.ProxyTCP_IP.GetAddressBytes();
                            ReadOnlySpan<byte> bServerTCP_Port = BitConverter.GetBytes(Socket_Cache.SocketProxy.ProxyPort);
                                                        
                            IPEndPoint epServer = Socket_Operation.GetIPEndPoint_ByAddressType(spt.AddressType, bADDRESS, out string AddressString);
                            if (epServer == null)
                            {
                                Socket_Operation.SendTCPData(spt.Client.Socket, Socket_Operation.GetProxyReturnData(Socket_Cache.SocketProxy.CommandResponse.Fault, bServerTCP_IP, bServerTCP_Port));
                                return;
                            }

                            spt.Server.Socket = new Socket(epServer.AddressFamily, SocketType.Stream, ProtocolType.Tcp);
                            spt.Server.EndPoint = epServer;
                            ushort uPort = ((ushort)epServer.Port);

                            spt.DomainType = Socket_Operation.GetDomainType_ByPort(uPort);
                            spt.Server.Address = Socket_Operation.GetServerAddress(spt.DomainType, AddressString, uPort);
                            spt.Client.Address = Socket_Operation.GetClientAddress(spt.Client.Socket, AddressString, uPort);                            

                            switch (spt.CommandType)
                            {
                                case Socket_Cache.SocketProxy.CommandType.Connect:

                                    #region//代理 TCP

                                    switch (spt.DomainType)
                                    {
                                        case Socket_Cache.SocketProxy.DomainType.External:

                                            try
                                            {
                                                IPEndPoint ExternalProxyEP = Socket_Operation.GetIPEndPoint_ByAddressString(Socket_Cache.SocketProxy.ExternalProxy_IP, Socket_Cache.SocketProxy.ExternalProxy_Port);
                                                if (ExternalProxyEP == null)
                                                {
                                                    spt.Server.Close();
                                                    spt.Client.Close();
                                                    return;
                                                }

                                                var connectResult = spt.Server.Socket.BeginConnect(ExternalProxyEP, null, null);
                                                if (!connectResult.AsyncWaitHandle.WaitOne(TimeSpan.FromSeconds(5)))
                                                {
                                                    spt.Server.Close();
                                                    spt.Client.Close();
                                                    return;
                                                }
                                                spt.Server.Socket.EndConnect(connectResult);

                                                byte[] handshakeRequest = null;
                                                if (Socket_Cache.SocketProxy.Enable_ExternalProxy_Auth)
                                                {
                                                    handshakeRequest = new byte[] { 0x05, 0x02, 0x00, 0x02 };
                                                }
                                                else
                                                {
                                                    handshakeRequest = new byte[] { 0x05, 0x01, 0x00 };
                                                }
                                                spt.Server.Socket.Send(handshakeRequest);

                                                byte[] handshakeResponse = new byte[2];
                                                spt.Server.Socket.Receive(handshakeResponse);

                                                if (handshakeResponse[0] != 0x05)
                                                {
                                                    return;
                                                }

                                                switch (handshakeResponse[1])
                                                {
                                                    case 0x00:
                                                        break;

                                                    case 0x02:

                                                        if (!Socket_Cache.SocketProxy.Enable_ExternalProxy_Auth)
                                                        {
                                                            return;
                                                        }

                                                        byte[] AuthRequest = Socket_Operation.CreateSOCKS5AuthPacket(Socket_Cache.SocketProxy.ExternalProxy_UserName, Socket_Cache.SocketProxy.ExternalProxy_PassWord);
                                                        if (AuthRequest == null)
                                                        {
                                                            return;
                                                        }
                                                        spt.Server.Socket.Send(AuthRequest);

                                                        byte[] AuthResponse = new byte[2];
                                                        spt.Server.Socket.Receive(AuthResponse);

                                                        if (AuthResponse[1] != 0x00)
                                                        {
                                                            return;
                                                        }

                                                        break;

                                                    default:
                                                        return;
                                                }

                                                spt.Server.Socket.Send(bData.ToArray());

                                                byte[] connectResponse = new byte[10];
                                                spt.Server.Socket.Receive(connectResponse);

                                                if (connectResponse[1] != 0x00)
                                                {
                                                    Socket_Operation.SendTCPData(spt.Client.Socket, Socket_Operation.GetProxyReturnData(Socket_Cache.SocketProxy.CommandResponse.Fault, bServerTCP_IP, bServerTCP_Port));
                                                    return;
                                                }

                                                Socket_Cache.SocketProxy.StartServerReceive(spt);
                                                spt.ProxyStep = Socket_Cache.SocketProxy.ProxyStep.ForwardData;
                                                Socket_Operation.SendTCPData(spt.Client.Socket, Socket_Operation.GetProxyReturnData(Socket_Cache.SocketProxy.CommandResponse.Success, bServerTCP_IP, bServerTCP_Port));

                                                Socket_Cache.SocketProxyQueue.ProxyTCP_ToQueue(spt);
                                            }
                                            catch (SocketException)
                                            {
                                                spt.Server.Close();
                                                spt.Client.Close();
                                                Socket_Operation.SendTCPData(spt.Client.Socket, Socket_Operation.GetProxyReturnData(Socket_Cache.SocketProxy.CommandResponse.Fault, bServerTCP_IP, bServerTCP_Port));
                                            }                                            

                                            break;

                                        case Socket_Cache.SocketProxy.DomainType.Http:
                                        case Socket_Cache.SocketProxy.DomainType.Https:
                                        case Socket_Cache.SocketProxy.DomainType.Socket:

                                            try
                                            {
                                                spt.Server.Socket.Connect(spt.Server.EndPoint);
                                                Socket_Cache.SocketProxy.StartServerReceive(spt);
                                                spt.ProxyStep = Socket_Cache.SocketProxy.ProxyStep.ForwardData;
                                                Socket_Operation.SendTCPData(spt.Client.Socket, Socket_Operation.GetProxyReturnData(Socket_Cache.SocketProxy.CommandResponse.Success, bServerTCP_IP, bServerTCP_Port));

                                                Socket_Cache.SocketProxyQueue.ProxyTCP_ToQueue(spt);
                                            }
                                            catch (SocketException)
                                            {
                                                Socket_Operation.SendTCPData(spt.Client.Socket, Socket_Operation.GetProxyReturnData(Socket_Cache.SocketProxy.CommandResponse.Fault, bServerTCP_IP, bServerTCP_Port));
                                            }

                                            break;                                        
                                    }

                                    #endregion

                                    break;

                                case Socket_Cache.SocketProxy.CommandType.UDP:

                                    #region//UDP 中继                                    

                                    try
                                    {
                                        Socket_ProxyUDP spu = new Socket_ProxyUDP(new IPEndPoint(IPAddress.Any, 0));
                                        Socket_Cache.SocketProxy.StartUdpReceive(spu);
                                        Socket_Cache.SocketProxyQueue.ProxyUDP_ToQueue(spu);

                                        ReadOnlySpan<byte> bServerUDP_IP = Socket_Cache.SocketProxy.ProxyUDP_IP.GetAddressBytes();
                                        ReadOnlySpan<byte> bServerUDP_Port = BitConverter.GetBytes(((IPEndPoint)spu.ClientUDP.Client.LocalEndPoint).Port);                                        

                                        Socket_Operation.SendTCPData(spt.Client.Socket, Socket_Operation.GetProxyReturnData(Socket_Cache.SocketProxy.CommandResponse.Success, bServerUDP_IP, bServerUDP_Port));                                        
                                    }
                                    catch (SocketException)
                                    {
                                        Socket_Operation.SendTCPData(spt.Client.Socket, Socket_Operation.GetProxyReturnData(Socket_Cache.SocketProxy.CommandResponse.Fault, bServerTCP_IP, bServerTCP_Port));
                                    }

                                    #endregion

                                    break;

                                default:

                                    #region//不支持的命令

                                    Socket_Operation.SendTCPData(spt.Client.Socket, Socket_Operation.GetProxyReturnData(Socket_Cache.SocketProxy.CommandResponse.Unsupport, bServerTCP_IP, bServerTCP_Port));

                                    string sLog = string.Format(MultiLanguage.GetDefaultLanguage(MultiLanguage.MutiLan_152), spt.Client.Socket.RemoteEndPoint, spt.CommandType);
                                    Socket_Operation.DoLog_Proxy(MethodBase.GetCurrentMethod().Name, sLog);

                                    #endregion

                                    break;
                            }
                        }
                        catch (SocketException ex)
                        {
                            Socket_Operation.DoLog_Proxy(MethodBase.GetCurrentMethod().Name, spt.Server.Address + " - " + ex.Message);
                        }
                    }
                }
                catch (Exception ex)
                {
                    Socket_Operation.DoLog_Proxy(MethodBase.GetCurrentMethod().Name, ex.Message);
                }
            }

            #endregion

            #region//请求数据(TCP)       

            private static void ForwardData(Socket_ProxyTCP spt, ReadOnlySpan<byte> bData)
            {
                try
                {
                    if (spt.CommandType == Socket_Cache.SocketProxy.CommandType.Connect)
                    {
                        bool enableProxyQueue = false;
                        switch (spt.DomainType)
                        {
                            case Socket_Cache.SocketProxy.DomainType.Http:

                                bool requestHandled = false;
                                string request = Encoding.ASCII.GetString(bData.ToArray());

                                if (request.StartsWith("GET") || request.StartsWith("POST") || request.StartsWith("HEAD") || request.StartsWith("PUT"))
                                {
                                    var headers = Socket_Operation.ParseHttpHeaders(request);
                                    if (headers.TryGetValue("Host", out string hostHeader))
                                    {
                                        string requestPath = request.Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries)[1];
                                        string cleanPath = requestPath.Split('?')[0];                                        

                                        #region//本地代理映射

                                        if (Socket_Cache.ProxyMapping.Enable_MapLocal)
                                        {
                                            var localRule = Socket_Cache.ProxyMapping.GetMapLocal(
                                                Socket_Cache.SocketProxy.MapProtocol.Http,
                                                hostHeader.Split(':')[0],
                                                spt.Server.EndPoint.Port,
                                                cleanPath);

                                            if (localRule != null)
                                            {
                                                if (File.Exists(localRule.LocalPath))
                                                {
                                                    byte[] fileBytes = File.ReadAllBytes(localRule.LocalPath);
                                                    string contentType = Socket_Operation.GetContentType(Path.GetExtension(localRule.LocalPath));

                                                    string response =
                                                        $"HTTP/1.1 200 OK\r\n" +
                                                        $"Content-Type: {contentType}\r\n" +
                                                        $"Content-Length: {fileBytes.Length}\r\n" +
                                                        "Connection: close\r\n\r\n";

                                                    byte[] headerBytes = Encoding.UTF8.GetBytes(response);
                                                    Socket_Operation.SendTCPData(spt.Client.Socket, headerBytes);
                                                    Socket_Operation.SendTCPData(spt.Client.Socket, fileBytes);
                                                    requestHandled = true;
                                                }
                                                else
                                                {
                                                    Socket_Operation.Send404Response(spt.Client.Socket);
                                                    requestHandled = true;
                                                }
                                            }
                                        }

                                        #endregion

                                        #region//远程代理映射

                                        if (!requestHandled && Socket_Cache.ProxyMapping.Enable_MapRemote)
                                        {
                                            var remoteRule = Socket_Cache.ProxyMapping.GetMapRemote(
                                                Socket_Cache.SocketProxy.MapProtocol.Http,
                                                hostHeader.Split(':')[0],
                                                spt.Server.EndPoint.Port,
                                                cleanPath);

                                            if (remoteRule != null)
                                            {
                                                string RemoteURL = remoteRule.ProtocolType_To.ToString() + "://" + remoteRule.Host_To + ":" + remoteRule.Port_To + remoteRule.Path_To;
                                                byte[] remoteResponse = Socket_Operation.GetRemoteMappedData(RemoteURL, request, headers);
                                                if (remoteResponse != null)
                                                {
                                                    Socket_Operation.SendTCPData(spt.Client.Socket, remoteResponse);
                                                    requestHandled = true;
                                                }
                                            }
                                        }

                                        #endregion                                        
                                    }
                                }

                                if (!requestHandled)
                                {
                                    Socket_Operation.SendTCPData(spt.Server.Socket, bData);
                                }

                                enableProxyQueue = true;

                                break;

                            case Socket_Cache.SocketProxy.DomainType.Https:
                                
                                Socket_Operation.SendTCPData(spt.Server.Socket, bData);
                                enableProxyQueue = true;

                                break;

                            case Socket_Cache.SocketProxy.DomainType.Socket:
                                
                                Socket_Operation.SendTCPData(spt.Server.Socket, bData);
                                enableProxyQueue = true;

                                break;

                            case Socket_Cache.SocketProxy.DomainType.External:
                                
                                Socket_Operation.SendTCPData(spt.Server.Socket, bData);
                                enableProxyQueue = true;

                                break;
                        }

                        if (enableProxyQueue)
                        {
                            Socket_Cache.SocketProxyQueue.ProxyData_ToQueue(spt, bData, Socket_Cache.SocketProxy.DataType.Request);
                        }
                    }
                }
                catch (Exception ex)
                {
                    spt.Server.Close();
                    spt.Client.Close();

                    Socket_Operation.DoLog_Proxy(MethodBase.GetCurrentMethod().Name, spt.Client.Address + " - " + ex.Message);
                }
            }

            #endregion

            #region//响应数据(TCP)

            private static void StartServerReceive(Socket_ProxyTCP spt)
            {
                try
                {
                    var args = new SocketAsyncEventArgs();
                    args.SetBuffer(spt.Server.Buffer, 0, spt.Server.Buffer.Length);
                    args.UserToken = spt;
                    args.Completed += Socket_Cache.SocketProxy.ServerReceiveCompleted;

                    if (!spt.Server.Socket.ReceiveAsync(args))
                    {
                        Socket_Cache.SocketProxy.ServerReceiveCompleted(spt.Server.Socket, args);
                    }
                }
                catch (Exception ex)
                {
                    Socket_Operation.DoLog_Proxy(MethodBase.GetCurrentMethod().Name, ex.Message);
                }
            }

            private static void ServerReceiveCompleted(object sender, SocketAsyncEventArgs args)
            {
                Socket_ProxyTCP spt = (Socket_ProxyTCP)args.UserToken;

                try
                {
                    if (args.SocketError != SocketError.Success || args.BytesTransferred <= 0)
                    {                        
                        spt.Server.Close();
                        spt.Client.Close();
                        return;
                    }

                    int bytesRead = args.BytesTransferred;
                    ReadOnlySpan<byte> receivedData = spt.Server.Buffer.AsSpan(0, bytesRead);

                    if (spt.CommandType == Socket_Cache.SocketProxy.CommandType.Connect)
                    {
                        Socket_Operation.SendTCPData(spt.Client.Socket, receivedData);

                        bool enableProxyQueue = false;
                        switch (spt.DomainType)
                        {
                            case Socket_Cache.SocketProxy.DomainType.Http:
                                enableProxyQueue = true;
                                break;

                            case Socket_Cache.SocketProxy.DomainType.Https:
                                enableProxyQueue = true;
                                break;

                            case Socket_Cache.SocketProxy.DomainType.Socket:
                                enableProxyQueue = true;
                                break;

                            case Socket_Cache.SocketProxy.DomainType.External:
                                enableProxyQueue = true;
                                break;
                        }

                        if (enableProxyQueue)
                        {
                            Socket_Cache.SocketProxyQueue.ProxyData_ToQueue(spt, receivedData, Socket_Cache.SocketProxy.DataType.Response);
                        }
                    }

                    Socket_Cache.SocketProxy.StartServerReceive(spt);
                }
                catch (SocketException ex) when (Socket_Operation.IsExpectedSocketError(ex.ErrorCode))
                {
                    spt.Server.Close();
                    spt.Client.Close();
                }
                catch (ObjectDisposedException)
                {
                    // 忽略已释放的对象
                }
                catch (Exception ex)
                {
                    Socket_Operation.DoLog_Proxy(MethodBase.GetCurrentMethod().Name, spt.Server.Address + " - " + ex.Message);
                    spt.Server.Close();
                    spt.Client.Close();
                }
                finally
                {
                    args.Dispose();
                }
            }

            #endregion

            #region//UDP 中继

            private static void StartUdpReceive(Socket_ProxyUDP spu)
            {
                try
                {
                    if (spu.ClientUDP != null)
                    {
                        spu.ClientUDP.BeginReceive(new AsyncCallback(UdpReceiveCallback), spu);
                    }                    
                }
                catch (Exception ex)
                {
                    Socket_Operation.DoLog_Proxy(MethodBase.GetCurrentMethod().Name, ex.Message);
                }
            }

            private static void UdpReceiveCallback(IAsyncResult ar)
            {
                if (ar == null || !(ar.AsyncState is Socket_ProxyUDP spu))
                {
                    return;
                }

                if (spu.ClientUDP == null)
                {
                    return;
                }

                try
                {
                    IPEndPoint remoteEndPoint = new IPEndPoint(IPAddress.Any, 0);
                    byte[] receivedData = Socket_Operation.ReceiveUDPData(spu.ClientUDP, ar, ref remoteEndPoint);
                    ReadOnlySpan<byte> bData = receivedData.AsSpan();
                    if (!bData.IsEmpty && !remoteEndPoint.Address.Equals(IPAddress.Any) && remoteEndPoint.Port != 0)
                    {
                        if (bData[0] == 0 && bData[1] == 0 && bData[2] == 0)
                        {
                            Socket_Cache.SocketProxy.AddressType addressType = (Socket_Cache.SocketProxy.AddressType)bData[3];

                            if (addressType == Socket_Cache.SocketProxy.AddressType.IPv4 ||
                                addressType == Socket_Cache.SocketProxy.AddressType.IPv6 ||
                                addressType == Socket_Cache.SocketProxy.AddressType.Domain)
                            {
                                spu.ClientUDP_EndPoint = remoteEndPoint;

                                ReadOnlySpan<byte> bADDRESS = bData.Slice(4, bData.Length - 4);
                                IPEndPoint targetEndPoint = Socket_Operation.GetIPEndPoint_ByAddressType(addressType, bADDRESS, out string AddressString);
                                if (targetEndPoint != null) 
                                {
                                    ReadOnlySpan<byte> bUDP_Data = Socket_Operation.GetUDPData_ByAddressType(addressType, bData);
                                    if (!bUDP_Data.IsEmpty)
                                    {
                                        spu.ClientUDP_Time = DateTime.Now;
                                        Socket_Cache.SocketProxy.Total_Request += bUDP_Data.Length;
                                        Socket_Operation.CountProxySpeed(Socket_Cache.SocketProxy.ProxySpeedType.Uplink, bUDP_Data.Length);
                                        Socket_Operation.SendUDPData(spu.ClientUDP, bUDP_Data, targetEndPoint);
                                    }
                                }                                
                            }
                        }
                        else
                        {
                            if (spu.ClientUDP_EndPoint == null)
                            {
                                return;
                            }

                            ReadOnlySpan<byte> bIP = spu.ClientUDP_EndPoint.Address.GetAddressBytes();
                            ushort port = ((ushort)spu.ClientUDP_EndPoint.Port);
                            ReadOnlySpan<byte> bPort = new byte[2] { (byte)(port >> 8), (byte)port };

                            Span<byte> bResponseData = stackalloc byte[4 + bIP.Length + bPort.Length + bData.Length];
                            bResponseData[0] = 0x00;
                            bResponseData[1] = 0x00;
                            bResponseData[2] = 0x00;
                            bResponseData[3] = (byte)Socket_Cache.SocketProxy.AddressType.IPv4;
                            bIP.CopyTo(bResponseData.Slice(4, bIP.Length));
                            bPort.CopyTo(bResponseData.Slice(8, bPort.Length));
                            bData.CopyTo(bResponseData.Slice(10, bData.Length));

                            if (!bResponseData.IsEmpty)
                            {
                                spu.ClientUDP_Time = DateTime.Now;
                                Socket_Cache.SocketProxy.Total_Response += bResponseData.Length;
                                Socket_Operation.CountProxySpeed(Socket_Cache.SocketProxy.ProxySpeedType.Downlink, bResponseData.Length);
                                Socket_Operation.SendUDPData(spu.ClientUDP, bResponseData, spu.ClientUDP_EndPoint);
                            }
                        }

                        Socket_Cache.SocketProxy.ProxyUDP_CNT++;
                        Socket_Cache.SocketProxy.StartUdpReceive(spu);
                    }
                }                
                catch (SocketException ex) when (Socket_Operation.IsExpectedSocketError(ex.ErrorCode))
                {
                    //
                }
                catch (Exception ex)
                {
                    Socket_Operation.DoLog_Proxy(MethodBase.GetCurrentMethod().Name, ex.Message);
                    Socket_Cache.SocketProxy.StartUdpReceive(spu);
                }
            }

            #endregion           
Download .txt
gitextract_dgoijda3/

├── .gitattributes
├── .gitignore
├── LICENSE
├── README.md
├── WPELibrary/
│   ├── Lib/
│   │   ├── IconExtractor/
│   │   │   ├── IconExtractor.cs
│   │   │   └── IconUtil.cs
│   │   ├── MultiLanguage.cs
│   │   ├── NativeMethods/
│   │   │   ├── Kernel32.cs
│   │   │   ├── Mswsock.cs
│   │   │   ├── User32.cs
│   │   │   ├── WS2_32.cs
│   │   │   └── WSock32.cs
│   │   ├── Proxy_AccountInfo.cs
│   │   ├── Proxy_AuthInfo.cs
│   │   ├── Proxy_MapLocal.cs
│   │   ├── Proxy_MapRemote.cs
│   │   ├── Socket_BitInfo.cs
│   │   ├── Socket_Cache.cs
│   │   ├── Socket_FilterInfo.cs
│   │   ├── Socket_LogInfo.cs
│   │   ├── Socket_Operation.cs
│   │   ├── Socket_PacketInfo.cs
│   │   ├── Socket_ProxyData.cs
│   │   ├── Socket_ProxyTCP.cs
│   │   ├── Socket_ProxyUDP.cs
│   │   ├── Socket_Robot.cs
│   │   ├── Socket_RobotInfo.cs
│   │   ├── Socket_Send.cs
│   │   ├── Socket_SendInfo.cs
│   │   ├── UserControl/
│   │   │   └── HotkeyTextBox.cs
│   │   ├── WebAPI/
│   │   │   ├── CCProxy_Controller.cs
│   │   │   ├── ProxyAccount_Controller.cs
│   │   │   ├── ProxyInfo_Controller.cs
│   │   │   ├── SocketInfo_Controller.cs
│   │   │   ├── Socket_Web.cs
│   │   │   └── SystemInfo_Controller.cs
│   │   └── WinSockHook.cs
│   ├── Properties/
│   │   ├── AssemblyInfo.cs
│   │   ├── Resources.Designer.cs
│   │   ├── Resources.resx
│   │   └── app.manifest
│   ├── Proxy_AccountAuthForm.Designer.cs
│   ├── Proxy_AccountAuthForm.cs
│   ├── Proxy_AccountAuthForm.en-US.resx
│   ├── Proxy_AccountAuthForm.resx
│   ├── Proxy_AccountDevicesForm.Designer.cs
│   ├── Proxy_AccountDevicesForm.cs
│   ├── Proxy_AccountDevicesForm.en-US.resx
│   ├── Proxy_AccountDevicesForm.resx
│   ├── Proxy_AccountForm.Designer.cs
│   ├── Proxy_AccountForm.cs
│   ├── Proxy_AccountForm.en-US.resx
│   ├── Proxy_AccountForm.resx
│   ├── Proxy_AccountLinksForm.Designer.cs
│   ├── Proxy_AccountLinksForm.cs
│   ├── Proxy_AccountLinksForm.en-US.resx
│   ├── Proxy_AccountLinksForm.resx
│   ├── Proxy_AccountListForm.Designer.cs
│   ├── Proxy_AccountListForm.cs
│   ├── Proxy_AccountListForm.en-US.resx
│   ├── Proxy_AccountListForm.resx
│   ├── Proxy_AccountLoginForm.Designer.cs
│   ├── Proxy_AccountLoginForm.cs
│   ├── Proxy_AccountLoginForm.en-US.resx
│   ├── Proxy_AccountLoginForm.resx
│   ├── Proxy_AccountTimeForm.Designer.cs
│   ├── Proxy_AccountTimeForm.cs
│   ├── Proxy_AccountTimeForm.en-US.resx
│   ├── Proxy_AccountTimeForm.resx
│   ├── Proxy_MapLocalForm.Designer.cs
│   ├── Proxy_MapLocalForm.cs
│   ├── Proxy_MapLocalForm.en-US.resx
│   ├── Proxy_MapLocalForm.resx
│   ├── Proxy_MapLocalListForm.Designer.cs
│   ├── Proxy_MapLocalListForm.cs
│   ├── Proxy_MapLocalListForm.en-US.resx
│   ├── Proxy_MapLocalListForm.resx
│   ├── Proxy_MapRemoteForm.Designer.cs
│   ├── Proxy_MapRemoteForm.cs
│   ├── Proxy_MapRemoteForm.en-US.resx
│   ├── Proxy_MapRemoteForm.resx
│   ├── Proxy_MapRemoteListForm.Designer.cs
│   ├── Proxy_MapRemoteListForm.cs
│   ├── Proxy_MapRemoteListForm.en-US.resx
│   ├── Proxy_MapRemoteListForm.resx
│   ├── Socket_CompareForm.Designer.cs
│   ├── Socket_CompareForm.cs
│   ├── Socket_CompareForm.en-US.resx
│   ├── Socket_CompareForm.resx
│   ├── Socket_FilterForm.Designer.cs
│   ├── Socket_FilterForm.cs
│   ├── Socket_FilterForm.en-US.resx
│   ├── Socket_FilterForm.resx
│   ├── Socket_FindForm.Designer.cs
│   ├── Socket_FindForm.cs
│   ├── Socket_FindForm.en-US.resx
│   ├── Socket_FindForm.resx
│   ├── Socket_Form.Designer.cs
│   ├── Socket_Form.cs
│   ├── Socket_Form.en-US.resx
│   ├── Socket_Form.resx
│   ├── Socket_PasswordFrom.Designer.cs
│   ├── Socket_PasswordFrom.cs
│   ├── Socket_PasswordFrom.en-US.resx
│   ├── Socket_PasswordFrom.resx
│   ├── Socket_RobotForm.Designer.cs
│   ├── Socket_RobotForm.cs
│   ├── Socket_RobotForm.en-US.resx
│   ├── Socket_RobotForm.resx
│   ├── Socket_SendForm.Designer.cs
│   ├── Socket_SendForm.cs
│   ├── Socket_SendForm.en-US.resx
│   ├── Socket_SendForm.resx
│   ├── Socket_SendListForm.Designer.cs
│   ├── Socket_SendListForm.cs
│   ├── Socket_SendListForm.en-US.resx
│   ├── Socket_SendListForm.resx
│   ├── TextComparison/
│   │   ├── TextCompareForm.Designer.cs
│   │   ├── TextCompareForm.cs
│   │   ├── TextCompareForm.en-US.resx
│   │   ├── TextCompareForm.resx
│   │   ├── TextDuplicateForm.Designer.cs
│   │   ├── TextDuplicateForm.cs
│   │   ├── TextDuplicateForm.en-US.resx
│   │   └── TextDuplicateForm.resx
│   ├── WPELibrary.csproj
│   ├── app.config
│   └── packages.config
├── WinSockPacketEditor.sln
└── WinsockPacketEditor/
    ├── Injector_Form.Designer.cs
    ├── Injector_Form.cs
    ├── Injector_Form.en-US.resx
    ├── Injector_Form.resx
    ├── Lib/
    │   └── Program.cs
    ├── ProcessList_Form.Designer.cs
    ├── ProcessList_Form.cs
    ├── ProcessList_Form.en-US.resx
    ├── ProcessList_Form.resx
    ├── Properties/
    │   ├── AssemblyInfo.cs
    │   ├── Resources.Designer.cs
    │   ├── Resources.resx
    │   └── app.manifest
    ├── SocketProxy_Form.Designer.cs
    ├── SocketProxy_Form.cs
    ├── SocketProxy_Form.en-US.resx
    ├── SocketProxy_Form.resx
    ├── SystemMode_Form.Designer.cs
    ├── SystemMode_Form.cs
    ├── SystemMode_Form.en-US.resx
    ├── SystemMode_Form.resx
    ├── Web/
    │   ├── CCProxy/
    │   │   └── cn_acclistadmin.htm
    │   ├── EditAccount.html
    │   ├── ProxyAccount.html
    │   ├── SystemLog.html
    │   ├── footer.html
    │   ├── header.html
    │   ├── index.html
    │   └── web_images/
    │       ├── downloads.css
    │       ├── github-dark.css
    │       ├── print.css
    │       ├── script.js
    │       └── stylesheet.css
    ├── WinsockPacketEditor.csproj
    ├── app.config
    └── packages.config
Download .txt
SYMBOL INDEX (1264 symbols across 86 files)

FILE: WPELibrary/Lib/IconExtractor/IconExtractor.cs
  class IconExtractor (line 12) | public class IconExtractor
    method IconExtractor (line 57) | public IconExtractor(string fileName)
    method GetIcon (line 68) | public Icon GetIcon(int index)
    method GetAllIcons (line 86) | public Icon[] GetAllIcons()
    method Initialize (line 95) | private void Initialize(string fileName)
    method GetDataFromResource (line 174) | private byte[] GetDataFromResource(IntPtr hModule, IntPtr type, IntPtr...
    method GetFileName (line 200) | private string GetFileName(IntPtr hModule)

FILE: WPELibrary/Lib/IconExtractor/IconUtil.cs
  class IconUtil (line 10) | public static class IconUtil
    method IconUtil (line 16) | static IconUtil()
    method Split (line 38) | public static Icon[] Split(Icon icon)
    method ToBitmap (line 88) | public static Bitmap ToBitmap(Icon icon)
    method GetBitCount (line 107) | public static int GetBitCount(Icon icon)
    method GetIconData (line 128) | private static byte[] GetIconData(Icon icon)

FILE: WPELibrary/Lib/MultiLanguage.cs
  class MultiLanguage (line 7) | public static class MultiLanguage
    method SetDefaultLanguage (line 249) | public static void SetDefaultLanguage(string lang)
    method GetDefaultLanguage (line 266) | public static string GetDefaultLanguage(string[] MutiLanID)

FILE: WPELibrary/Lib/NativeMethods/Kernel32.cs
  class Kernel32 (line 8) | public static class Kernel32
    method GetMappedFileName (line 10) | [DllImport("psapi.dll", SetLastError = true, CharSet = CharSet.Unicode)]
    method IsWow64Process (line 14) | [DllImport("kernel32.dll", SetLastError = true, CallingConvention = Ca...
    method LoadLibraryEx (line 18) | [DllImport("kernel32.dll", SetLastError = true, CharSet = CharSet.Unic...
    method FreeLibrary (line 22) | [DllImport("kernel32.dll", SetLastError = true)]
    method EnumResourceNames (line 26) | [DllImport("kernel32.dll", SetLastError = true, CharSet = CharSet.Unic...
    method FindResource (line 30) | [DllImport("kernel32.dll", SetLastError = true, CharSet = CharSet.Unic...
    method LoadResource (line 34) | [DllImport("kernel32.dll", SetLastError = true)]
    method LockResource (line 38) | [DllImport("kernel32.dll", SetLastError = true)]
    method SizeofResource (line 42) | [DllImport("kernel32.dll", SetLastError = true)]
    method GetCurrentProcess (line 46) | [DllImport("kernel32.dll", SetLastError = true)]
    method GetCurrentThreadId (line 50) | [DllImport("kernel32.dll", SetLastError = true)]
    method QueryDosDevice (line 54) | [DllImport("kernel32.dll", SetLastError = true, CharSet = CharSet.Unic...

FILE: WPELibrary/Lib/NativeMethods/Mswsock.cs
  class Mswsock (line 7) | public static class Mswsock
    method WSARecvEx (line 13) | [DllImport("Mswsock.dll", CharSet = CharSet.Unicode, SetLastError = tr...
    method WSARecvExHook (line 29) | public static unsafe Int32 WSARecvExHook(

FILE: WPELibrary/Lib/NativeMethods/User32.cs
  class User32 (line 7) | public static class User32
    method SetProcessDPIAware (line 11) | [DllImport("user32.dll")]
    method RegisterHotKey (line 14) | [DllImport("user32.dll", SetLastError = true)]
    method UnregisterHotKey (line 17) | [DllImport("user32.dll", SetLastError = true)]
    method GetForegroundWindow (line 20) | [DllImport("user32.dll")]
    method GetWindowText (line 23) | [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]

FILE: WPELibrary/Lib/NativeMethods/WS2_32.cs
  class WS2_32 (line 7) | internal class WS2_32
    method WSAGetLastError (line 13) | [DllImport("WS2_32.dll", CharSet = CharSet.Unicode, SetLastError = tru...
    method WSAGetOverlappedResult (line 20) | [DllImport("WS2_32.dll", CharSet = CharSet.Unicode, SetLastError = tru...
    method WSAWaitForMultipleEvents (line 33) | [DllImport("Ws2_32.dll", CharSet = CharSet.Auto, SetLastError = true)]
    method WSACreateEvent (line 46) | [DllImport("Ws2_32.dll", CharSet = CharSet.Auto, SetLastError = true)]
    method getsockname (line 53) | [DllImport("WS2_32.dll", CharSet = CharSet.Unicode, SetLastError = tru...
    method getpeername (line 65) | [DllImport("WS2_32.dll", CharSet = CharSet.Unicode, SetLastError = tru...
    method inet_ntoa (line 77) | [DllImport("WS2_32.dll", CharSet = CharSet.Unicode, SetLastError = tru...
    method inet_addr (line 85) | [DllImport("WS2_32.dll", CharSet = CharSet.Unicode, SetLastError = tru...
    method ntohs (line 93) | [DllImport("WS2_32.dll", CharSet = CharSet.Unicode, SetLastError = tru...
    method htons (line 101) | [DllImport("WS2_32.dll", CharSet = CharSet.Unicode, SetLastError = tru...
    method send (line 109) | [DllImport("WS2_32.dll", CharSet = CharSet.Unicode, SetLastError = tru...
    method SendHook (line 125) | public static unsafe Int32 SendHook(
    method recv (line 139) | [DllImport("WS2_32.dll", CharSet = CharSet.Unicode, SetLastError = tru...
    method RecvHook (line 155) | public static unsafe Int32 RecvHook(
    method sendto (line 169) | [DllImport("WS2_32.dll", CharSet = CharSet.Unicode, SetLastError = tru...
    method SendToHook (line 190) | public static unsafe Int32 SendToHook(
    method recvfrom (line 206) | [DllImport("WS2_32.dll", CharSet = CharSet.Unicode, SetLastError = tru...
    method RecvFromHook (line 227) | public static unsafe Int32 RecvFromHook(
    method WSASend (line 243) | [DllImport("ws2_32.dll", CharSet = CharSet.Unicode, SetLastError = tru...
    method WSARecv (line 269) | [DllImport("WS2_32.dll", CharSet = CharSet.Unicode, SetLastError = tru...
    method WSASendTo (line 296) | [DllImport("ws2_32.dll", CharSet = CharSet.Unicode, SetLastError = tru...
    method WSARecvFrom (line 327) | [DllImport("WS2_32.dll", CharSet = CharSet.Unicode, SetLastError = tru...

FILE: WPELibrary/Lib/NativeMethods/WSock32.cs
  class WSock32 (line 7) | public static class WSock32
    method send (line 13) | [DllImport("WSOCK32.dll", CharSet = CharSet.Unicode, SetLastError = tr...
    method SendHook (line 29) | public static unsafe Int32 SendHook(
    method recv (line 43) | [DllImport("WSOCK32.dll", CharSet = CharSet.Unicode, SetLastError = tr...
    method RecvHook (line 59) | public static unsafe Int32 RecvHook(
    method sendto (line 73) | [DllImport("WSOCK32.dll", CharSet = CharSet.Unicode, SetLastError = tr...
    method SendToHook (line 94) | public static unsafe Int32 SendToHook(
    method recvfrom (line 110) | [DllImport("WSOCK32.dll", CharSet = CharSet.Unicode, SetLastError = tr...
    method RecvFromHook (line 131) | public static unsafe Int32 RecvFromHook(

FILE: WPELibrary/Lib/Proxy_AccountInfo.cs
  class Proxy_AccountInfo (line 5) | public class Proxy_AccountInfo
    method Proxy_AccountInfo (line 189) | public Proxy_AccountInfo()
    method Proxy_AccountInfo (line 194) | public Proxy_AccountInfo(

FILE: WPELibrary/Lib/Proxy_AuthInfo.cs
  class Proxy_AuthInfo (line 5) | public class Proxy_AuthInfo
    method Proxy_AuthInfo (line 45) | public Proxy_AuthInfo(Guid AID, string ipAddress, bool authResult, Dat...

FILE: WPELibrary/Lib/Proxy_MapLocal.cs
  class Proxy_MapLocal (line 4) | public class Proxy_MapLocal
    method Proxy_MapLocal (line 24) | public Proxy_MapLocal(bool IsEnable, Socket_Cache.SocketProxy.MapProto...

FILE: WPELibrary/Lib/Proxy_MapRemote.cs
  class Proxy_MapRemote (line 4) | public class Proxy_MapRemote
    method Proxy_MapRemote (line 43) | public Proxy_MapRemote(

FILE: WPELibrary/Lib/Socket_BitInfo.cs
  class Socket_BitInfo (line 6) | public class Socket_BitInfo
    method ToString (line 18) | public override string ToString()
    method GetBitAsString (line 33) | public string GetBitAsString(int index)
    method ConvertToByte (line 56) | byte ConvertToByte(BitArray bits)
    method Socket_BitInfo (line 67) | public Socket_BitInfo(byte value, long position)

FILE: WPELibrary/Lib/Socket_Cache.cs
  class Socket_Cache (line 26) | public static class Socket_Cache
    class System (line 30) | public static class System
      type SystemMode (line 56) | public enum SystemMode
      type PWType (line 63) | public enum PWType
      type ListAction (line 83) | public enum ListAction
      type LogType (line 96) | public enum LogType
      type Execute (line 102) | public enum Execute
      method GetListExecute_ByString (line 112) | public static Socket_Cache.System.Execute GetListExecute_ByString(st...
      method SaveSystemConfig_ToDB (line 132) | public static void SaveSystemConfig_ToDB()
      method GetSystemConfig_XML (line 145) | public static XElement GetSystemConfig_XML()
      method LoadSystemConfig_FromDB (line 175) | public static void LoadSystemConfig_FromDB()
      method SetSystemConfig_FromXML (line 199) | public static void SetSystemConfig_FromXML(XElement xeSystemConfig)
      method SaveSystemConfig_LastInjection_ToDB (line 261) | public static void SaveSystemConfig_LastInjection_ToDB()
      method SaveRunConfig_ToDB (line 277) | public static void SaveRunConfig_ToDB(Socket_Cache.System.SystemMode...
      method GetProxyConfig_XML (line 293) | public static XElement GetProxyConfig_XML()
      method GetInjectionConfig_XML (line 331) | public static XElement GetInjectionConfig_XML()
      method LoadRunConfig_FromDB (line 399) | public static void LoadRunConfig_FromDB()
      method SetProxyConfig_FromXML (line 481) | public static void SetProxyConfig_FromXML(XElement xeProxyConfig)
      method SetInjectionConfig_FromXML (line 611) | public static void SetInjectionConfig_FromXML(XElement xeInjectionCo...
      method GetSystemMode_ByString (line 901) | public static Socket_Cache.System.SystemMode GetSystemMode_ByString(...
      method SaveSystemList_ToDB (line 921) | public static void SaveSystemList_ToDB()
      method LoadSystemList_FromDB (line 932) | public static void LoadSystemList_FromDB()
      method ExportSystemBackUp_Dialog (line 953) | public static void ExportSystemBackUp_Dialog(
      method ExportSystemBackUp (line 1006) | private static void ExportSystemBackUp(
      method ImportSystemBackUp_Dialog (line 1152) | public static void ImportSystemBackUp_Dialog()
      method ImportSystemBackUp (line 1177) | private static void ImportSystemBackUp(string FilePath, bool LoadFro...
      method ImportSystemBackUp_FromXDocument (line 1235) | private static void ImportSystemBackUp_FromXDocument(XDocument xdoc)
    class SocketProxy (line 1454) | public static class SocketProxy
      type ProxyType (line 1484) | public enum ProxyType
      type ProxyStep (line 1492) | public enum ProxyStep : byte
      type AuthType (line 1500) | public enum AuthType : byte
      type AddressType (line 1507) | public enum AddressType : byte
      type DomainType (line 1515) | public enum DomainType : byte
      type MapProtocol (line 1523) | public enum MapProtocol : byte
      type CommandType (line 1529) | public enum CommandType : byte
      type CommandResponse (line 1536) | public enum CommandResponse : byte
      type DataType (line 1543) | public enum DataType : byte
      type ProxySpeedType (line 1549) | public enum ProxySpeedType
      method HandleClient (line 1559) | public static void HandleClient(Socket clientSocket)
      method StartReceive (line 1575) | private static void StartReceive(Socket_ProxyTCP spt)
      method ReceiveCompleted (line 1602) | private static void ReceiveCompleted(object sender, SocketAsyncEvent...
      method Handshake (line 1677) | private static void Handshake(Socket_ProxyTCP spt, ReadOnlySpan<byte...
      method AuthUserName (line 1754) | private static void AuthUserName(Socket_ProxyTCP spt, ReadOnlySpan<b...
      method Command (line 1831) | private static void Command(Socket_ProxyTCP spt, ReadOnlySpan<byte> ...
      method ForwardData (line 2048) | private static void ForwardData(Socket_ProxyTCP spt, ReadOnlySpan<by...
      method StartServerReceive (line 2184) | private static void StartServerReceive(Socket_ProxyTCP spt)
      method ServerReceiveCompleted (line 2204) | private static void ServerReceiveCompleted(object sender, SocketAsyn...
      method StartUdpReceive (line 2277) | private static void StartUdpReceive(Socket_ProxyUDP spu)
      method UdpReceiveCallback (line 2292) | private static void UdpReceiveCallback(IAsyncResult ar)
      method GetClientIPAddress (line 2384) | public static string GetClientIPAddress(Socket_ProxyTCP spt)
      method UpdateProxyUDP (line 2409) | public static async Task UpdateProxyUDP()
    class SocketProxyQueue (line 2445) | public static class SocketProxyQueue
      method ProxyTCP_ToQueue (line 2453) | public static void ProxyTCP_ToQueue(Socket_ProxyTCP spc)
      method ProxyUDP_ToQueue (line 2462) | public static void ProxyUDP_ToQueue(Socket_ProxyUDP spu)
      method ProxyData_ToQueue (line 2474) | public static void ProxyData_ToQueue(Socket_ProxyTCP spc, ReadOnlySp...
      method ResetProxy_TCPQueue (line 2509) | public static void ResetProxy_TCPQueue()
      method ResetProxy_UDPQueue (line 2524) | public static void ResetProxy_UDPQueue()
      method ResetProxy_DataQueue (line 2539) | public static void ResetProxy_DataQueue()
    class SocketProxyList (line 2561) | public static class SocketProxyList
      method ProxyTCP_ToList (line 2577) | public static void ProxyTCP_ToList()
      method ProxyUDP_ToList (line 2590) | public static void ProxyUDP_ToList()
      method ProxyData_ToList (line 2603) | public static void ProxyData_ToList()
      method GetProxyTCP_ByAccountID (line 2615) | public static List<Socket_ProxyTCP> GetProxyTCP_ByAccountID(Guid AID)
      method GetProxyTCP_ByAIDandIP (line 2632) | public static List<Socket_ProxyTCP> GetProxyTCP_ByAIDandIP(Guid AID,...
      method CloseProxyTCP_ByAID (line 2661) | public static void CloseProxyTCP_ByAID(Guid AID)
      method CloseProxyTCP_ByAIDAndIP (line 2679) | public static void CloseProxyTCP_ByAIDAndIP(Guid AID, string ClientIP)
      method ClearTCP (line 2701) | public static void ClearTCP(Socket_ProxyTCP spt)
      method ClearUDP (line 2721) | public static void ClearUDP(Socket_ProxyUDP spu)
      method ResetProxy_TCPList (line 2730) | public static void ResetProxy_TCPList()
      method ResetProxy_UDPList (line 2735) | public static void ResetProxy_UDPList()
      method ResetProxy_DataList (line 2740) | public static void ResetProxy_DataList()
    class ProxyAccount (line 2752) | public static class ProxyAccount
      method AuthResult_ToList (line 2767) | public static void AuthResult_ToList(Guid AID, string IPAddress, boo...
      method GetProxyAuthInfo (line 2787) | public static Proxy_AuthInfo GetProxyAuthInfo(Guid AID, string IPAdd...
      method DeleteProxyAuthInfo_ByAID (line 2810) | public static void DeleteProxyAuthInfo_ByAID(Guid AID)
      method DeleteProxyAuthInfo_ByAIDAndIP (line 2831) | public static void DeleteProxyAuthInfo_ByAIDAndIP(Guid AID, string I...
      method ClearProxyAuthList (line 2855) | public static void ClearProxyAuthList()
      method GetLinksCount_FromProxyAuthList (line 2864) | public static int GetLinksCount_FromProxyAuthList()
      method GetDevicesCount_FromProxyAuthList (line 2869) | public static int GetDevicesCount_FromProxyAuthList()
      method SearchForProxyAuthList (line 2878) | public static int SearchForProxyAuthList(int fromIndex, string FindS...
      method IsValidAdmin (line 2923) | public static bool IsValidAdmin(string username, string password)
      method CheckProxyAccount_Exist (line 2946) | public static bool CheckProxyAccount_Exist(string UserName)
      method CheckUserNameAndPassWord (line 2970) | public static bool CheckUserNameAndPassWord(string UserName, string ...
      method CheckLimitLinks (line 3010) | public static bool CheckLimitLinks(Guid AID, string IPAddress)
      method CheckLimitDevices (line 3046) | public static bool CheckLimitDevices(Guid AID, string ClientIP)
      method GetImg_ByAuthResult (line 3096) | public static Image GetImg_ByAuthResult(bool AuthResult)
      method SetOnline_ByAccountID (line 3120) | public static void SetOnline_ByAccountID(Guid AID, bool IsOnline)
      method GetLinksNumber_ByAccountID (line 3152) | public static int GetLinksNumber_ByAccountID(Guid AID, string Client...
      method GetDevicesNumber_ByAccountID (line 3179) | public static int GetDevicesNumber_ByAccountID(Guid AID)
      method UpdateOnlineStatus (line 3188) | public static async Task UpdateOnlineStatus()
      method RecordLoginIP_ByAccountID (line 3227) | public static async void RecordLoginIP_ByAccountID(Guid AccountID, s...
      method AddProxyAccount (line 3273) | public static bool AddProxyAccount(
      method UpdateProxyAccount_ByAccountID (line 3329) | public static bool UpdateProxyAccount_ByAccountID(
      method UpdateProxyAccount_ByCCProxy (line 3374) | public static bool UpdateProxyAccount_ByCCProxy(
      method DeleteProxyAccount_Dialog (line 3419) | public static void DeleteProxyAccount_Dialog(List<Guid> gList)
      method DeleteProxyAccount_ByAccountID (line 3442) | public static bool DeleteProxyAccount_ByAccountID(Guid AID)
      method DeleteProxyAccount_ByUserName (line 3473) | public static bool DeleteProxyAccount_ByUserName(string UserName)
      method GetUserName_ByAccountID (line 3507) | public static string GetUserName_ByAccountID(Guid AID)
      method GetProxyAccount_ByAccountID (line 3529) | public static Proxy_AccountInfo GetProxyAccount_ByAccountID(Guid AID)
      method GetProxyAccount_ByUserName (line 3551) | public static BindingList<Proxy_AccountInfo> GetProxyAccount_ByUserN...
      method GetProxyAccount_ByIsEnable (line 3575) | public static BindingList<Proxy_AccountInfo> GetProxyAccount_ByIsEna...
      method GetProxyAccount_ByIsOnLine (line 3592) | public static BindingList<Proxy_AccountInfo> GetProxyAccount_ByIsOnL...
      method GetProxyAccount_ByIsExpiry (line 3609) | public static BindingList<Proxy_AccountInfo> GetProxyAccount_ByIsExp...
      method GetProxyAccount_ByIsLimitLinks (line 3626) | public static BindingList<Proxy_AccountInfo> GetProxyAccount_ByIsLim...
      method GetProxyAccount_ByIsLimitDevices (line 3643) | public static BindingList<Proxy_AccountInfo> GetProxyAccount_ByIsLim...
      method GetProxyAccount_ByExpireTime (line 3660) | public static BindingList<Proxy_AccountInfo> GetProxyAccount_ByExpir...
      method ProxyAccountToList (line 3681) | public static void ProxyAccountToList(Proxy_AccountInfo pai)
      method ProxyAccountAddTime_Dialog (line 3707) | public static void ProxyAccountAddTime_Dialog(List<Guid> gList, int ...
      method ProxyAccountLinks_Dialog (line 3746) | public static void ProxyAccountLinks_Dialog(List<Guid> gList, bool I...
      method ProxyAccountDevices_Dialog (line 3779) | public static void ProxyAccountDevices_Dialog(List<Guid> gList, bool...
      method SaveProxyAccount_LoginInfo_ToDB (line 3812) | public static void SaveProxyAccount_LoginInfo_ToDB(Proxy_AccountInfo...
      method LoadProxyAccount_LoginInfo_FromDB (line 3828) | public static DataTable LoadProxyAccount_LoginInfo_FromDB(Guid AID)
      method SaveProxyAccountList_ToDB (line 3851) | public static void SaveProxyAccountList_ToDB(Socket_Cache.System.Sys...
      method LoadProxyAccountList_FromDB (line 3879) | public static async void LoadProxyAccountList_FromDB()
      method SaveProxyAccountList_Dialog (line 3932) | public static void SaveProxyAccountList_Dialog(string FileName, List...
      method SaveProxyAccountList (line 3971) | private static void SaveProxyAccountList(string FilePath, List<Guid>...
      method GetProxyAccountList_XML (line 4005) | public static XElement GetProxyAccountList_XML(List<Guid> gList)
      method LoadProxyAccountList_Dialog (line 4053) | public static void LoadProxyAccountList_Dialog()
      method LoadProxyAccountList (line 4078) | private static void LoadProxyAccountList(string FilePath, bool LoadF...
      method LoadProxyAccountList_FromXDocument (line 4153) | public static void LoadProxyAccountList_FromXDocument(XDocument xdoc)
      method LoadProxyAccountList_FromInIFile (line 4274) | private static void LoadProxyAccountList_FromInIFile(string filePath)
      method AddProxyAccount_FromIniFile (line 4348) | private static void AddProxyAccount_FromIniFile(Proxy_AccountInfo pai)
    class ProxyMapping (line 4414) | public static class ProxyMapping
      method GetMapProtocol_ByString (line 4424) | public static Socket_Cache.SocketProxy.MapProtocol GetMapProtocol_By...
      method AddMapLocal (line 4444) | public static void AddMapLocal(bool IsEnable, Socket_Cache.SocketPro...
      method AddMapRemote (line 4464) | public static void AddMapRemote(
      method DelMapLocal (line 4503) | public static void DelMapLocal(Proxy_MapLocal pml)
      method DelMapRemote (line 4522) | public static void DelMapRemote(Proxy_MapRemote pmr)
      method CleanUpMapLocal_Dialog (line 4541) | public static void CleanUpMapLocal_Dialog()
      method MapLocalClear (line 4558) | public static void MapLocalClear()
      method CleanUpMapRemote_Dialog (line 4574) | public static void CleanUpMapRemote_Dialog()
      method MapRemoteClear (line 4591) | public static void MapRemoteClear()
      method UpdateMapLocal (line 4607) | public static void UpdateMapLocal(Proxy_MapLocal pml, Socket_Cache.S...
      method UpdateMapRemote (line 4630) | public static void UpdateMapRemote(
      method GetMapLocal (line 4665) | public static Proxy_MapLocal GetMapLocal(Socket_Cache.SocketProxy.Ma...
      method GetMapRemote (line 4691) | public static Proxy_MapRemote GetMapRemote(Socket_Cache.SocketProxy....
      method UpdateMapLocal_ByListAction (line 4716) | public static void UpdateMapLocal_ByListAction(Socket_Cache.System.L...
      method UpdateMapRemote_ByListAction (line 4789) | public static void UpdateMapRemote_ByListAction(Socket_Cache.System....
      method SaveProxyMapLocal_ToDB (line 4862) | public static void SaveProxyMapLocal_ToDB(Socket_Cache.System.System...
      method SaveProxyMapRemote_ToDB (line 4882) | public static void SaveProxyMapRemote_ToDB(Socket_Cache.System.Syste...
      method LoadProxyMapLocal_FromDB (line 4902) | public static async void LoadProxyMapLocal_FromDB()
      method LoadProxyMapRemote_FromDB (line 4933) | public static async void LoadProxyMapRemote_FromDB()
      method SaveMapLocal_Dialog (line 4978) | public static void SaveMapLocal_Dialog(string FileName, List<Proxy_M...
      method SaveMapLocal (line 5018) | private static void SaveMapLocal(string FilePath, List<Proxy_MapLoca...
      method GetMapLocal_XML (line 5052) | public static XElement GetMapLocal_XML(List<Proxy_MapLocal> pmlList)
      method SaveMapRemote_Dialog (line 5087) | public static void SaveMapRemote_Dialog(string FileName, List<Proxy_...
      method SaveMapRemote (line 5127) | private static void SaveMapRemote(string FilePath, List<Proxy_MapRem...
      method GetMapRemote_XML (line 5161) | public static XElement GetMapRemote_XML(List<Proxy_MapRemote> pmrList)
      method LoadMapLocal_Dialog (line 5199) | public static void LoadMapLocal_Dialog()
      method LoadMapLocal (line 5224) | private static void LoadMapLocal(string FilePath, bool LoadFromUser)
      method LoadMapLocal_FromXDocument (line 5283) | public static void LoadMapLocal_FromXDocument(XDocument xdoc)
      method LoadMapRemote_Dialog (line 5338) | public static void LoadMapRemote_Dialog()
      method LoadMapRemote (line 5363) | private static void LoadMapRemote(string FilePath, bool LoadFromUser)
      method LoadMapRemote_FromXDocument (line 5422) | public static void LoadMapRemote_FromXDocument(XDocument xdoc)
    class SocketPacket (line 5507) | public static class SocketPacket
      type SockAddr (line 5542) | [StructLayout(LayoutKind.Sequential)]
        method MarshalFromNative (line 5551) | public void MarshalFromNative(IntPtr native)
        method MarshalToNative (line 5558) | public void MarshalToNative(IntPtr native)
      type WSABUF (line 5566) | [StructLayout(LayoutKind.Sequential)]
      type OVERLAPPED (line 5574) | [StructLayout(LayoutKind.Sequential)]
      type PacketType (line 5585) | public enum PacketType
      type IPType (line 5602) | public enum IPType
      type EncodingFormat (line 5608) | public enum EncodingFormat
      method GetPacketType_ByString (line 5638) | public static Socket_Cache.SocketPacket.PacketType GetPacketType_ByS...
      class PacketTypeNames (line 5658) | private static class PacketTypeNames
      method GetName_ByPacketType (line 5675) | public static string GetName_ByPacketType(Socket_Cache.SocketPacket....
      method GetImg_ByPacketType (line 5735) | public static Image GetImg_ByPacketType(Socket_Cache.SocketPacket.Pa...
    class SocketQueue (line 5776) | public static class SocketQueue
      method SocketPacket_ToQueue (line 5792) | public static void SocketPacket_ToQueue(
      method ResetSocketQueue (line 5830) | public static void ResetSocketQueue()
    class SocketList (line 5852) | public static class SocketList
      method SocketToList (line 5865) | public static async Task SocketToList()
      method SearchForSocketList (line 5908) | public static int SearchForSocketList(int fromIndex, ReadOnlySpan<by...
      method StatisticalSocketList_ByPacketLen (line 5950) | public static DataTable StatisticalSocketList_ByPacketLen()
      method StatisticalSocketList_ByPacketSocket (line 5992) | public static DataTable StatisticalSocketList_ByPacketSocket()
      method StatisticalFilterList_ByExecutionCount (line 6034) | public static DataTable StatisticalFilterList_ByExecutionCount()
      method SendSocketList_BySelect (line 6065) | public static void SendSocketList_BySelect()
      method SaveSocketList_Dialog (line 6090) | public static async void SaveSocketList_Dialog()
      method SaveSocketListToExcel (line 6128) | private static async Task<int> SaveSocketListToExcel(string FilePath...
    class LogQueue (line 6192) | public static class LogQueue
      method LogToQueue (line 6199) | public static void LogToQueue(Socket_Cache.System.LogType logType, s...
      method ResetLogQueue (line 6226) | public static void ResetLogQueue(Socket_Cache.System.LogType logType)
    class LogList (line 6264) | public static class LogList
      method LogToList (line 6273) | public static void LogToList(Socket_Cache.System.LogType logType)
      method ResetLogList (line 6321) | public static void ResetLogList(Socket_Cache.System.LogType logType)
      method SaveLogListToExcel (line 6339) | public static int SaveLogListToExcel()
    class Filter (line 6401) | public static class Filter
      type Execute (line 6417) | public enum Execute
      type FilterMode (line 6423) | public enum FilterMode
      type FilterAction (line 6429) | public enum FilterAction
      type FilterExecuteType (line 6439) | public enum FilterExecuteType
      type FilterStartFrom (line 6445) | public enum FilterStartFrom
      type FilterFunction (line 6451) | public struct FilterFunction
        method FilterFunction (line 6462) | public FilterFunction(bool bSend, bool bSendTo, bool bRecv, bool b...
      type SearchCondition (line 6475) | private struct SearchCondition
      type Modification (line 6481) | private struct Modification
      method AddFilter_New (line 6491) | public static void AddFilter_New()
      method AddFilter_ByPacketInfo (line 6515) | public static void AddFilter_ByPacketInfo(Socket_PacketInfo spi, byt...
      method AddFilter (line 6547) | public static void AddFilter(
      method UpdateFilter (line 6624) | public static void UpdateFilter(
      method DeleteFilter_Dialog (line 6693) | public static void DeleteFilter_Dialog(List<Socket_FilterInfo> sfiList)
      method CopyFilter (line 6720) | public static void CopyFilter(Socket_FilterInfo sfi)
      method GetFilterMode_ByString (line 6793) | public static Socket_Cache.Filter.FilterMode GetFilterMode_ByString(...
      method GetFilterAction_ByString (line 6810) | public static Socket_Cache.Filter.FilterAction GetFilterAction_ByStr...
      method GetFilterExecuteType_ByString (line 6827) | public static Socket_Cache.Filter.FilterExecuteType GetFilterExecute...
      method GetFilterFunction_ByString (line 6843) | public static Socket_Cache.Filter.FilterFunction GetFilterFunction_B...
      method GetFilterStartFrom_ByString (line 6868) | public static Socket_Cache.Filter.FilterStartFrom GetFilterStartFrom...
      method GetFilterString_ByBytes (line 6889) | public static string GetFilterString_ByBytes(byte[] bBuffer)
      method GetName_ByFilterAction (line 6916) | public static string GetName_ByFilterAction(Socket_Cache.Filter.Filt...
      method GetFilterFunctionString (line 6952) | public static string GetFilterFunctionString(Socket_Cache.Filter.Fil...
      method GetFilterFunction_ByPacketType (line 6979) | public static Socket_Cache.Filter.FilterFunction GetFilterFunction_B...
      method CheckFilter_IsEffective (line 7052) | public static bool CheckFilter_IsEffective(
      method CheckFilterFunction_ByPacketType (line 7084) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
      method CheckPacket_IsMatch_AppointSocket (line 7120) | public static bool CheckPacket_IsMatch_AppointSocket(Int32 iSocket, ...
      method CheckPacket_IsMatch_AppointLength (line 7129) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
      method CheckPacket_IsMatch_AppointPort (line 7164) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
      method CheckPortInPart (line 7195) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
      method CheckPacket_IsMatch_AppointHeader (line 7217) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
      method CheckFilter_IsMatch_Normal (line 7246) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
      method TryParseNonNegativeInt (line 7287) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
      method HexCharsToByte (line 7294) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
      method CharToNibble (line 7309) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
      method CheckFilter_IsMatch_Advanced (line 7322) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
      method ParseSearchConditions (line 7382) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
      method Replace_Normal (line 7415) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
      method ProcessModifications (line 7450) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
      method ProcessProgressions (line 7478) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
      method Replace_Advanced (line 7528) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
      method ProcessAdvancedModifications (line 7564) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
      method ProcessAdvancedProgressions (line 7607) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
      method HandleCarryOver (line 7647) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
      method ChangePacket_Filter (line 7666) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
      method ParseModifications (line 7697) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
      method ApplyModifications (line 7722) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
      method ApplyProgressions (line 7734) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
    class FilterList (line 7782) | public static class FilterList
      method FilterToList (line 7789) | public static void FilterToList(Socket_FilterInfo sfi)
      method InitFilterList_Count (line 7815) | public static void InitFilterList_Count()
      method CleanUpFilterList_Dialog (line 7835) | public static void CleanUpFilterList_Dialog()
      method FilterListClear (line 7852) | public static void FilterListClear()
      method GetFilterListExecute_ByString (line 7868) | public static Socket_Cache.Filter.Execute GetFilterListExecute_ByStr...
      method UpdateFilterList_ByListAction (line 7889) | public static void UpdateFilterList_ByListAction(Socket_Cache.System...
      method DoFilterList (line 7982) | public static Socket_Cache.Filter.FilterAction DoFilterList(Int32 iS...
      method SaveFilterList_ToDB (line 8159) | public static void SaveFilterList_ToDB()
      method LoadFilterList_FromDB (line 8180) | public static void LoadFilterList_FromDB()
      method SaveFilterList_Dialog (line 8258) | public static void SaveFilterList_Dialog(string FileName, List<Socke...
      method SaveFilterList (line 8298) | private static void SaveFilterList(string FilePath, List<Socket_Filt...
      method GetFilterList_XML (line 8332) | public static XElement GetFilterList_XML(List<Socket_FilterInfo> sfi...
      method LoadFilterList_Dialog (line 8414) | public static void LoadFilterList_Dialog()
      method LoadFilterList (line 8439) | private static void LoadFilterList(string FilePath, bool LoadFromUser)
      method LoadFilterList_FromXDocument (line 8498) | public static void LoadFilterList_FromXDocument(XDocument xdoc)
    class Robot (line 8712) | public static class Robot
      type KeyBoardType (line 8716) | public enum KeyBoardType
      type MouseType (line 8725) | public enum MouseType
      type InstructionType (line 8741) | public enum InstructionType
      method InitInstructions (line 8757) | public static DataTable InitInstructions()
      method AddRobot_New (line 8778) | public static void AddRobot_New()
      method AddRobot (line 8795) | public static void AddRobot(bool IsEnable, Guid RID, string RName, D...
      method UpdateRobot (line 8815) | public static void UpdateRobot(Socket_RobotInfo sri, string RName, D...
      method CopyRobot (line 8835) | public static void CopyRobot(Socket_RobotInfo sri)
      method DeleteRobot_Dialog (line 8856) | public static void DeleteRobot_Dialog(List<Socket_RobotInfo> sriList)
      method GetName_ByInstructionType (line 8883) | public static string GetName_ByInstructionType(Socket_Cache.Robot.In...
      method GetColor_ByInstructionType (line 8936) | public static Color GetColor_ByInstructionType(Socket_Cache.Robot.In...
      method GetContentString_ByInstructionType (line 8989) | public static string GetContentString_ByInstructionType(Socket_Cache...
      method GetInstructionType_ByString (line 9162) | public static Socket_Cache.Robot.InstructionType GetInstructionType_...
      method GetKeyBoardType_ByString (line 9182) | public static Socket_Cache.Robot.KeyBoardType GetKeyBoardType_ByStri...
      method GetMouseType_ByString (line 9202) | public static Socket_Cache.Robot.MouseType GetMouseType_ByString(str...
      method CheckRobotInstruction (line 9222) | public static int CheckRobotInstruction(DataTable dtRInstruction, bo...
      method DoRobot (line 9338) | public static Socket_Robot DoRobot(Guid RID, Dictionary<string, obje...
      method DoRobot_ByIndex (line 9343) | private static void DoRobot_ByIndex(int RobotListIndex)
      method DoRobotAsync (line 9359) | private static async Task<Socket_Robot> DoRobotAsync(Guid RID, Dicti...
      method DoRobot_ByHotKey (line 9387) | public static void DoRobot_ByHotKey(int HOTKEY_ID)
    class RobotList (line 9448) | public static class RobotList
      method RobotToList (line 9456) | public static void RobotToList(Socket_RobotInfo sri)
      method CleanUpRobotList_Dialog (line 9482) | public static void CleanUpRobotList_Dialog()
      method RobotListClear (line 9499) | public static void RobotListClear()
      method UpdateRobotList_ByListAction (line 9515) | public static void UpdateRobotList_ByListAction(Socket_Cache.System....
      method SaveRobotList_ToDB (line 9608) | public static void SaveRobotList_ToDB()
      method LoadRobotList_FromDB (line 9629) | public static void LoadRobotList_FromDB()
      method SaveRobotList_Dialog (line 9666) | public static void SaveRobotList_Dialog(string FileName, List<Socket...
      method SaveRobotList (line 9706) | public static void SaveRobotList(string FilePath, List<Socket_RobotI...
      method GetRobotList_XML (line 9740) | public static XElement GetRobotList_XML(List<Socket_RobotInfo> sriList)
      method LoadRobotList_Dialog (line 9790) | public static void LoadRobotList_Dialog()
      method LoadRobotList (line 9815) | private static void LoadRobotList(string FilePath, bool LoadFromUser)
      method LoadRobotList_FromXDocument (line 9874) | public static void LoadRobotList_FromXDocument(XDocument xdoc)
    class Send (line 9926) | public static class Send
      method GetSendCollection_ByGuid (line 9932) | public static BindingList<Socket_PacketInfo> GetSendCollection_ByGui...
      method AddSendCollection_ByPacketInfo (line 9961) | public static void AddSendCollection_ByPacketInfo(Guid SID, List<Soc...
      method AddSendCollection (line 9985) | public static void AddSendCollection(BindingList<Socket_PacketInfo> ...
      method UpdateSendCollection_ByListAction (line 10007) | public static void UpdateSendCollection_ByListAction(BindingList<Soc...
      method GetSendName_ByGuid (line 10112) | public static string GetSendName_ByGuid(Guid SID)
      method AddSend_New (line 10141) | public static void AddSend_New()
      method AddSend (line 10163) | public static void AddSend(bool IsEnable, Guid SID, string SName, bo...
      method UpdateSend (line 10183) | public static void UpdateSend(Socket_SendInfo ssi, string SName, boo...
      method CopySend (line 10207) | public static void CopySend(Socket_SendInfo ssi)
      method DeleteSend_Dialog (line 10232) | public static void DeleteSend_Dialog(List<Socket_SendInfo> ssiList)
      method DoSend (line 10259) | public static Socket_Send DoSend(Guid SID)
      method DoSend_ByIndex (line 10267) | public static void DoSend_ByIndex(int SendListIndex)
      method DoSendAsync (line 10287) | public static async Task<Socket_Send> DoSendAsync(Guid SID)
      method DoSend_ByHotKey (line 10315) | public static void DoSend_ByHotKey(int HOTKEY_ID)
      method SetIsCheck_BySendIndex (line 10373) | public static void SetIsCheck_BySendIndex(int SIndex, bool bCheck)
      method SaveSendCollection_Dialog (line 10392) | public static void SaveSendCollection_Dialog(string FileName, Bindin...
      method SaveSendCollection (line 10431) | public static void SaveSendCollection(string FilePath, BindingList<S...
      method SaveSendCollection_ToXDocument (line 10453) | private static void SaveSendCollection_ToXDocument(string FilePath, ...
      method LoadSendCollection_Dialog (line 10493) | public static void LoadSendCollection_Dialog(BindingList<Socket_Pack...
      method LoadSendCollection (line 10517) | public static void LoadSendCollection(string FilePath, BindingList<S...
      method LoadSendCollection_FromXDocument (line 10575) | private static void LoadSendCollection_FromXDocument(XDocument xdoc,...
    class SendList (line 10683) | public static class SendList
      class SendListItem (line 10691) | public class SendListItem
        method ToString (line 10697) | public override string ToString()
      method SendToList (line 10707) | public static void SendToList(Socket_SendInfo ssi)
      method UpdateSendList_ByListAction (line 10733) | public static void UpdateSendList_ByListAction(Socket_Cache.System.L...
      method CleanUpSendList_Dialog (line 10826) | public static void CleanUpSendList_Dialog()
      method SendListClear (line 10843) | public static void SendListClear()
      method SaveSendList_ToDB (line 10859) | public static void SaveSendList_ToDB()
      method LoadSendList_FromDB (line 10880) | public static void LoadSendList_FromDB()
      method SaveSendList_Dialog (line 10921) | public static void SaveSendList_Dialog(string FileName, List<Socket_...
      method SaveSendList (line 10961) | private static void SaveSendList(string FilePath, List<Socket_SendIn...
      method GetSendList_XML (line 10995) | public static XElement GetSendList_XML(List<Socket_SendInfo> ssiList)
      method LoadSendList_Dialog (line 11053) | public static void LoadSendList_Dialog()
      method LoadSendList (line 11078) | private static void LoadSendList(string FilePath, bool LoadFromUser)
      method LoadSendList_FromXDocument (line 11137) | public static void LoadSendList_FromXDocument(XDocument xdoc)
    class DataBase (line 11237) | public static class DataBase
      method InitDB (line 11245) | public static void InitDB()
      method InitdbPath (line 11259) | private static void InitdbPath()
      method CreateTable_SystemConfig (line 11278) | private static bool CreateTable_SystemConfig()
      method SelectTable_SystemConfig (line 11314) | public static DataTable SelectTable_SystemConfig()
      method DeleteTable_SystemConfig (line 11338) | public static void DeleteTable_SystemConfig()
      method InsertTable_SystemConfig (line 11359) | public static void InsertTable_SystemConfig()
      method UpdateTable_SystemConfig_LastInjection (line 11407) | public static void UpdateTable_SystemConfig_LastInjection()
      method CreateTable_RunConfig (line 11434) | private static bool CreateTable_RunConfig()
      method SelectTable_RunConfig (line 11529) | public static DataTable SelectTable_RunConfig()
      method DeleteTable_RunConfig (line 11553) | public static void DeleteTable_RunConfig()
      method InsertTable_RunConfig (line 11574) | public static void InsertTable_RunConfig()
      method CreateTable_Filter (line 11800) | private static bool CreateTable_Filter()
      method SelectTable_Filter (line 11854) | public static DataTable SelectTable_Filter()
      method DeleteTable_Filter (line 11878) | public static void DeleteTable_Filter()
      method InsertTable_Filter (line 11899) | public static void InsertTable_Filter(Socket_FilterInfo sfi)
      method CreateTable_Send (line 12005) | private static bool CreateTable_Send()
      method SelectTable_Send (line 12050) | public static DataTable SelectTable_Send()
      method SelectTable_SendCollection (line 12074) | public static DataTable SelectTable_SendCollection(Guid guid)
      method DeleteTable_Send (line 12101) | public static void DeleteTable_Send()
      method InsertTable_Send (line 12123) | public static void InsertTable_Send(Socket_SendInfo ssi)
      method CreateTable_Robot (line 12202) | private static bool CreateTable_Robot()
      method SelectTable_Robot (line 12240) | public static DataTable SelectTable_Robot()
      method SelectTable_RobotInstruction (line 12264) | public static DataTable SelectTable_RobotInstruction(Guid guid)
      method DeleteTable_Robot (line 12291) | public static void DeleteTable_Robot()
      method InsertTable_Robot (line 12313) | public static void InsertTable_Robot(Socket_RobotInfo sri)
      method CreateTable_ProxyAccount (line 12371) | private static bool CreateTable_ProxyAccount()
      method SelectTable_ProxyAccount (line 12422) | public static DataTable SelectTable_ProxyAccount()
      method SelectTable_ProxyAccount_LoginInfo (line 12446) | public static DataTable SelectTable_ProxyAccount_LoginInfo(Guid guid)
      method DeleteTable_ProxyAccount (line 12473) | public static void DeleteTable_ProxyAccount()
      method DeleteTable_ProxyAccount_LoginInfo (line 12494) | public static void DeleteTable_ProxyAccount_LoginInfo()
      method UpdateTable_ProxyAccount_LoginInfo (line 12515) | public static void UpdateTable_ProxyAccount_LoginInfo(Guid guid, str...
      method InsertTable_ProxyAccount (line 12540) | public static void InsertTable_ProxyAccount()
      method InsertOrUpdateTable_ProxyAccount_LoginInfo (line 12604) | public static void InsertOrUpdateTable_ProxyAccount_LoginInfo(Proxy_...
      method CreateTable_ProxyMapLocal (line 12643) | private static bool CreateTable_ProxyMapLocal()
      method SelectTable_ProxyMapLocal (line 12677) | public static DataTable SelectTable_ProxyMapLocal()
      method DeleteTable_ProxyMapLocal (line 12701) | public static void DeleteTable_ProxyMapLocal()
      method InsertTable_ProxyMapLocal (line 12722) | public static void InsertTable_ProxyMapLocal()
      method CreateTable_ProxyMapRemote (line 12774) | private static bool CreateTable_ProxyMapRemote()
      method SelectTable_ProxyMapRemote (line 12811) | public static DataTable SelectTable_ProxyMapRemote()
      method DeleteTable_ProxyMapRemote (line 12835) | public static void DeleteTable_ProxyMapRemote()
      method InsertTable_ProxyMapRemote (line 12856) | public static void InsertTable_ProxyMapRemote()

FILE: WPELibrary/Lib/Socket_FilterInfo.cs
  class Socket_FilterInfo (line 5) | public class Socket_FilterInfo
    method Socket_FilterInfo (line 341) | public Socket_FilterInfo(

FILE: WPELibrary/Lib/Socket_LogInfo.cs
  class Socket_LogInfo (line 5) | public class Socket_LogInfo
    method Socket_LogInfo (line 45) | public Socket_LogInfo(string funcname, string logcontent)

FILE: WPELibrary/Lib/Socket_Operation.cs
  class Socket_Operation (line 34) | public static class Socket_Operation
    method IsWin64Process (line 149) | public static bool IsWin64Process(int ProcessID)
    method CheckWebSite (line 263) | public static async Task<bool> CheckWebSite(string sURL)
    method StartRemoteMGT (line 292) | public static void StartRemoteMGT()
    method StopRemoteMGT (line 326) | public static void StopRemoteMGT(Socket_Cache.System.SystemMode FromMode)
    method InitCPUAndMemoryCounter (line 348) | public static async void InitCPUAndMemoryCounter()
    method GetCPUAndMemory (line 364) | public static string[] GetCPUAndMemory()
    method GetProcess (line 404) | public static async Task<DataTable> GetProcess()
    method IconFromFile (line 453) | private static Image IconFromFile(Process process)
    method GetFilePath (line 488) | private static string GetFilePath(Process process)
    method GetBestIcon (line 501) | private static Image GetBestIcon(Icon[] icons)
    method PassWord_Encrypt (line 529) | public static string PassWord_Encrypt(string plainText)
    method PassWord_Decrypt (line 561) | public static string PassWord_Decrypt(string encryptedText)
    method StartSystemProxy (line 604) | public static bool StartSystemProxy()
    method StopSystemProxy (line 634) | public static bool StopSystemProxy()
    method ReturnBuffer (line 666) | public static void ReturnBuffer(byte[] buffer)
    method Base64_Encoding (line 678) | public static string Base64_Encoding(string sString)
    method Base64_Decoding (line 695) | public static string Base64_Decoding(string sString)
    method StringToBytes (line 716) | public static byte[] StringToBytes(Socket_Cache.SocketPacket.EncodingF...
    method BytesToString (line 769) | public static string BytesToString(Socket_Cache.SocketPacket.EncodingF...
    method Hex_To_Bytes (line 917) | private static byte[] Hex_To_Bytes(string hexString)
    method IsHexString (line 953) | public static bool IsHexString(string value)
    method IsValidFilterString (line 971) | public static bool IsValidFilterString(string value)
    method GetBoolFromChineseString (line 987) | public static bool GetBoolFromChineseString(string ChineseString)
    method ConvertFILTString (line 1016) | public static string ConvertFILTString(string FiltString, bool bPosition)
    method ByteArrayToInt16BigEndian (line 1060) | public static ushort ByteArrayToInt16BigEndian(ReadOnlySpan<byte> bytes)
    method StringToBool (line 1083) | public static bool StringToBool(string bString)
    method StringToDateTime (line 1105) | public static DateTime StringToDateTime(string sDate, string sTime)
    method IsValidIPv4 (line 1132) | private static bool IsValidIPv4(string IPString)
    method IsValidIPv6 (line 1138) | private static bool IsValidIPv6(string IPString)
    method IsValidDomain (line 1144) | private static bool IsValidDomain(string IPString)
    method GetAddressType_ByString (line 1150) | public static Socket_Cache.SocketProxy.AddressType GetAddressType_BySt...
    method ParseHttpHeaders (line 1168) | public static Dictionary<string, string> ParseHttpHeaders(string request)
    method Send404Response (line 1202) | public static void Send404Response(Socket clientSocket)
    method GetContentType (line 1225) | public static string GetContentType(string fileExtension)
    method GetRemoteMappedData (line 1273) | public static byte[] GetRemoteMappedData(string remoteUrl, string orig...
    method CountSocketInfo (line 1468) | public static void CountSocketInfo(Socket_Cache.SocketPacket.PacketTyp...
    method CountProxySpeed (line 1535) | public static void CountProxySpeed(Socket_Cache.SocketProxy.ProxySpeed...
    method CheckTextInput_IsDigit (line 1563) | public static bool CheckTextInput_IsDigit(char keyChar)
    method CheckTextInput_IsHex (line 1582) | public static bool CheckTextInput_IsHex(char keyChar)
    method IsHexChar (line 1601) | private static bool IsHexChar(char c)
    method CheckDataIsMatchProxyStep (line 1624) | public static bool CheckDataIsMatchProxyStep(ReadOnlySpan<byte> bData,...
    method InitDGVColumn (line 1727) | public static DataGridViewTextBoxColumn InitDGVColumn(int ColIndex, Co...
    method InitSendListComboBox (line 1753) | public static void InitSendListComboBox(ComboBox cbb)
    method InitSendListComboBox (line 1770) | public static void InitSendListComboBox(ToolStripComboBox tscb)
    method InitCCProxy_HTML (line 1791) | public static void InitCCProxy_HTML()
    method GetSystemModeName (line 1805) | public static string GetSystemModeName()
    method GetWorkModeName (line 1833) | public static string GetWorkModeName(bool IsSpeedMode)
    method GetProcessName (line 1859) | public static string GetProcessName()
    method GetProcessPath (line 1882) | public static string GetProcessPath(Process process)
    method GetProcessInfo (line 1898) | public static string GetProcessInfo()
    method GetWinSockSupportInfo (line 1941) | public static string GetWinSockSupportInfo()
    method ProcessingHookResultAsync (line 1997) | public static Task ProcessingHookResultAsync(
    method GetIPString_BySocketAddr (line 2030) | public static string GetIPString_BySocketAddr(int pSocket, Socket_Cach...
    method GetIP_BySockAddr (line 2077) | public static string GetIP_BySockAddr(Socket_Cache.SocketPacket.SockAd...
    method GetIP_BySocket (line 2098) | public static string GetIP_BySocket(int Socket, Socket_Cache.SocketPac...
    method GetSocketAddr_ByIPString (line 2133) | public static Socket_Cache.SocketPacket.SockAddr GetSocketAddr_ByIPStr...
    method DetectionExternalProxy (line 2163) | public static async Task<bool> DetectionExternalProxy()
    method IsExpectedSocketError (line 2257) | public static bool IsExpectedSocketError(int errorCode)
    method GetLocalIPAddress (line 2268) | public static IPAddress[] GetLocalIPAddress()
    method GetIPLocation (line 2278) | public static async Task<string> GetIPLocation(string ipAddress)
    method GetIPEndPoint_ByAddressString (line 2327) | public static IPEndPoint GetIPEndPoint_ByAddressString(string AddressS...
    method GetIPEndPoint_ByAddressType (line 2342) | public static IPEndPoint GetIPEndPoint_ByAddressType(Socket_Cache.Sock...
    method ResolveAddress (line 2391) | private static IPAddress ResolveAddress(string addressString)
    method ResolveAddressAsync (line 2396) | private static async Task<IPAddress> ResolveAddressAsync(string addres...
    method GetUDPData_ByAddressType (line 2447) | public static ReadOnlySpan<byte> GetUDPData_ByAddressType(Socket_Cache...
    method GetProxyReturnData (line 2485) | public static byte[] GetProxyReturnData(Socket_Cache.SocketProxy.Comma...
    method GetPacketData_Hex (line 2511) | public static string GetPacketData_Hex(Span<byte> bBuff, int Max_DataLen)
    method CreateSOCKS5AuthPacket (line 2541) | public static byte[] CreateSOCKS5AuthPacket(string username, string pa...
    method GetStepByte (line 2582) | public static byte GetStepByte(byte bStepByte, int iStepLen, out int i...
    method GetDisplayBytes (line 2595) | public static string GetDisplayBytes(long size)
    method ConvertBytesDisplay (line 2642) | private static string ConvertBytesDisplay(long size)
    method ConvertToOneDigit (line 2658) | private static string ConvertToOneDigit(long size, long quan)
    method GetDomainType_ByPort (line 2679) | public static Socket_Cache.SocketProxy.DomainType GetDomainType_ByPort...
    method GetEnableProxyAccountCount (line 2721) | public static int GetEnableProxyAccountCount(BindingList<Proxy_Account...
    method GetExpiryProxyAccountCount (line 2746) | public static int GetExpiryProxyAccountCount(BindingList<Proxy_Account...
    method GetOnLineProxyAccountCount (line 2774) | public static int GetOnLineProxyAccountCount(BindingList<Proxy_Account...
    method FindNodeSync (line 2800) | public static TreeNode FindNodeSync(TreeNodeCollection nodes, string n...
    method AddTreeNode (line 2831) | public static TreeNode AddTreeNode(TreeView treeView, TreeNodeCollecti...
    method AddNode (line 2857) | private static TreeNode AddNode(TreeNodeCollection nodes, string nodeN...
    method GetServerAddress (line 2886) | public static string GetServerAddress(Socket_Cache.SocketProxy.DomainT...
    method GetClientAddress (line 2926) | public static string GetClientAddress(Socket clientSocket, string Addr...
    method GetClientListName (line 2952) | public static string GetClientListName(string ClientIP, string ClientU...
    method GetSelectedSocket (line 2962) | public static List<Socket_PacketInfo> GetSelectedSocket(DataGridView d...
    method GetSelectedFilter (line 2985) | public static List<Socket_FilterInfo> GetSelectedFilter(DataGridView d...
    method GetSelectedSend (line 3008) | public static List<Socket_SendInfo> GetSelectedSend(DataGridView dgvSe...
    method GetSelectedSendCollection (line 3031) | public static List<Socket_PacketInfo> GetSelectedSendCollection(DataGr...
    method GetSelectedRobot (line 3054) | public static List<Socket_RobotInfo> GetSelectedRobot(DataGridView dgv...
    method GetSelectedProxyAccount (line 3077) | public static List<Guid> GetSelectedProxyAccount(DataGridView dgvProxy...
    method CompareData (line 3102) | public static async Task<string> CompareData(Font font, string sText_A...
    method AppendColoredText (line 3243) | private static void AppendColoredText(RichTextBox box, string text, Co...
    method SortDictionaryByKey (line 3276) | public static Dictionary<int, int> SortDictionaryByKey(Dictionary<int,...
    method SortDictionaryByValue (line 3294) | public static Dictionary<int, int> SortDictionaryByValue(Dictionary<in...
    method DoSleepAsync (line 3316) | public static async Task DoSleepAsync(int MilliSecond, CancellationTok...
    method SendTCPData (line 3332) | public static int SendTCPData(Socket socket, ReadOnlySpan<byte> bData)
    method SendUDPData (line 3355) | public static int SendUDPData(UdpClient ClientUDP, ReadOnlySpan<byte> ...
    method ReceiveUDPData (line 3378) | public static byte[] ReceiveUDPData(UdpClient ClientUDP, IAsyncResult ...
    method IsShowSocketPacket_ByFilter (line 3399) | public static bool IsShowSocketPacket_ByFilter(Socket_PacketInfo spi)
    method IsFilter_BySocket (line 3475) | private static bool IsFilter_BySocket(int iPacketSocket)
    method IsFilter_ByIP (line 3507) | private static bool IsFilter_ByIP(string sPacketIP)
    method IsFilter_ByPort (line 3533) | private static bool IsFilter_ByPort(string sPacketPort)
    method IsFilter_ByHead (line 3559) | private static bool IsFilter_ByHead(byte[] bBuffer)
    method IsFilter_ByPacket (line 3609) | private static bool IsFilter_ByPacket(byte[] bBuffer)
    method IsFilter_BySize (line 3643) | private static bool IsFilter_BySize(int PacketLength)
    method ShowSendForm (line 3698) | public static void ShowSendForm(Socket_PacketInfo spi)
    method ShowSocketCompareForm (line 3718) | public static void ShowSocketCompareForm(Socket_PacketInfo spi)
    method ShowFindForm (line 3738) | public static void ShowFindForm()
    method ShowProxyAccountListForm (line 3755) | public static void ShowProxyAccountListForm()
    method ShowProxyAccountForm (line 3771) | public static void ShowProxyAccountForm(Guid AID)
    method ShowProxyAuthForm (line 3788) | public static void ShowProxyAuthForm()
    method ShowAccountLoginForm (line 3808) | public static void ShowAccountLoginForm(Guid AID)
    method ShowAccountTimeForm (line 3828) | public static void ShowAccountTimeForm(List<Guid> gList)
    method ShowAccountLinksForm (line 3848) | public static void ShowAccountLinksForm(List<Guid> gList)
    method ShowAccountDevicesForm (line 3868) | public static void ShowAccountDevicesForm(List<Guid> gList)
    method ShowProxyMapLocalListForm (line 3888) | public static void ShowProxyMapLocalListForm()
    method ShowProxyMapLocalForm (line 3904) | public static void ShowProxyMapLocalForm(Proxy_MapLocal pml)
    method ShowProxyMapRemoteListForm (line 3921) | public static void ShowProxyMapRemoteListForm()
    method ShowProxyMapRemoteForm (line 3937) | public static void ShowProxyMapRemoteForm(Proxy_MapRemote pmr)
    method ShowFilterForm_Dialog (line 3954) | public static void ShowFilterForm_Dialog(Socket_FilterInfo sfi)
    method ShowSendListForm_Dialog (line 3974) | public static void ShowSendListForm_Dialog(Socket_SendInfo ssi)
    method ShowRobotForm_Dialog (line 3994) | public static void ShowRobotForm_Dialog(Socket_RobotInfo sri)
    method IsEncryptXMLFile (line 4014) | public static bool IsEncryptXMLFile(string FilePath)
    method GetAESKeyFromString (line 4031) | private static byte[] GetAESKeyFromString(string Password)
    method EncryptXMLFile (line 4055) | public static void EncryptXMLFile(string FilePath, string Password)
    method DecryptXMLFile (line 4085) | public static XDocument DecryptXMLFile(string FilterList_Path, string ...
    method ShowMessageBox (line 4128) | public static void ShowMessageBox(string sMessage)
    method ShowSelectMessageBox (line 4140) | public static DialogResult ShowSelectMessageBox(string sMessage)
    method DoLog (line 4160) | public static void DoLog(string sFuncName, string sLogContent)
    method DoLog_Proxy (line 4171) | public static void DoLog_Proxy(string sFuncName, string sLogContent)
    method SendPacket (line 4186) | public static unsafe bool SendPacket(int Socket, Socket_Cache.SocketPa...

FILE: WPELibrary/Lib/Socket_PacketInfo.cs
  class Socket_PacketInfo (line 5) | public class Socket_PacketInfo
    method Socket_PacketInfo (line 129) | public Socket_PacketInfo()
    method Socket_PacketInfo (line 134) | public Socket_PacketInfo(DateTime pTime, int pSocket, Socket_Cache.Soc...

FILE: WPELibrary/Lib/Socket_ProxyData.cs
  class Socket_ProxyData (line 4) | public class Socket_ProxyData
    method Socket_ProxyData (line 56) | public Socket_ProxyData(string Domain, Socket_Cache.SocketProxy.Domain...

FILE: WPELibrary/Lib/Socket_ProxyTCP.cs
  class Socket_ProxyTCP (line 8) | public class Socket_ProxyTCP : IDisposable
    method Socket_ProxyTCP (line 24) | public Socket_ProxyTCP(Socket clientSocket, int bufferSize)
    class ClientConnection (line 35) | public class ClientConnection : IDisposable
      method ClientConnection (line 45) | public ClientConnection(Socket socket, int bufferSize)
      method Close (line 53) | public void Close()
      method Dispose (line 101) | public void Dispose() => Close();
    class ServerConnection (line 108) | public class ServerConnection : IDisposable
      method ServerConnection (line 117) | public ServerConnection(int bufferSize)
      method Close (line 122) | public void Close()
      method Dispose (line 170) | public void Dispose() => Close();
    method Dispose (line 177) | public void Dispose()
    method Dispose (line 183) | protected virtual void Dispose(bool disposing)

FILE: WPELibrary/Lib/Socket_ProxyUDP.cs
  class Socket_ProxyUDP (line 7) | public class Socket_ProxyUDP
    method Socket_ProxyUDP (line 14) | public Socket_ProxyUDP(IPEndPoint UDPClient)
    method CloseUDPClient (line 23) | public void CloseUDPClient()

FILE: WPELibrary/Lib/Socket_Robot.cs
  class Socket_Robot (line 12) | public class Socket_Robot
    method Socket_Robot (line 26) | public Socket_Robot()
    method StartRobot (line 45) | public void StartRobot(string RobotName, DataTable dtRobotInstruction,...
    method StopRobot (line 94) | public void StopRobot()
    method Robot_DoWork (line 118) | private void Robot_DoWork(object sender, DoWorkEventArgs e)
    method Robot_ProgressChanged (line 480) | private void Robot_ProgressChanged(object sender, ProgressChangedEvent...
    method Robot_RunCompleted (line 489) | private void Robot_RunCompleted(object sender, RunWorkerCompletedEvent...
    method GetParameter (line 519) | private object GetParameter(string key)
    method GetParameter (line 536) | private T GetParameter<T>(string key, T defaultValue = default(T))

FILE: WPELibrary/Lib/Socket_RobotInfo.cs
  class Socket_RobotInfo (line 6) | public class Socket_RobotInfo
    method Socket_RobotInfo (line 58) | public Socket_RobotInfo(bool IsEnable, Guid RID, string RName, DataTab...

FILE: WPELibrary/Lib/Socket_Send.cs
  class Socket_Send (line 9) | public class Socket_Send
    method Socket_Send (line 26) | public Socket_Send()
    method StartSend (line 45) | public void StartSend(string SendName, bool SystemSocket, int LoopCNT,...
    method StopSend (line 81) | public void StopSend()
    method Send_DoWork (line 105) | private void Send_DoWork(object sender, DoWorkEventArgs e)
    method Send_ProgressChanged (line 170) | private void Send_ProgressChanged(object sender, ProgressChangedEventA...
    method Send_RunCompleted (line 179) | private void Send_RunCompleted(object sender, RunWorkerCompletedEventA...

FILE: WPELibrary/Lib/Socket_SendInfo.cs
  class Socket_SendInfo (line 6) | public class Socket_SendInfo
    method Socket_SendInfo (line 106) | public Socket_SendInfo(

FILE: WPELibrary/Lib/UserControl/HotkeyTextBox.cs
  class HotkeyTextBox (line 9) | public class HotkeyTextBox : TextBox
    method HotkeyTextBox (line 14) | public HotkeyTextBox()
    method HotkeyTextBox_KeyDown (line 25) | private void HotkeyTextBox_KeyDown(object sender, KeyEventArgs e)
    method HotkeyTextBox_KeyUp (line 60) | private void HotkeyTextBox_KeyUp(object sender, KeyEventArgs e)
    method IsModifierKey (line 85) | private bool IsModifierKey(Keys key)
    method ConvertHotkeyToString (line 98) | private string ConvertHotkeyToString(Keys key)
    method RegisterHotkeyFromText (line 142) | public bool RegisterHotkeyFromText(int KeyID)
    method RegisterRecordedHotkey (line 175) | private bool RegisterRecordedHotkey(int KeyID)
    method ParseHotkeyString (line 224) | private Keys ParseHotkeyString(string hotkeyString)

FILE: WPELibrary/Lib/WebAPI/CCProxy_Controller.cs
  class CCProxy_Controller (line 7) | public static class CCProxy_Controller
    method QueryUserAll (line 11) | public static string QueryUserAll()
    method AddUser (line 56) | public static bool AddUser(Proxy_AccountInfo pai)
    method UserUpdate (line 108) | public static bool UserUpdate(Proxy_AccountInfo pai)
    method DelUser (line 154) | public static bool DelUser(string UserName)

FILE: WPELibrary/Lib/WebAPI/ProxyAccount_Controller.cs
  class ProxyAccount_Controller (line 8) | [RoutePrefix("ProxyAccount")]
    method GetProxyAccountList (line 14) | [HttpGet]
    method GetProxyAccountByID (line 26) | [HttpGet]
    method GetPassWordDecrypt (line 38) | [HttpGet]
    method AddProxyAccount (line 50) | [HttpPost]
    method DeleteProxyAccount (line 107) | [HttpPost]
    method UpdateProxyAccount (line 128) | [HttpPost]

FILE: WPELibrary/Lib/WebAPI/ProxyInfo_Controller.cs
  class ProxyInfo_Controller (line 6) | [RoutePrefix("ProxyInfo")]
    method GetProxyInfo (line 12) | [HttpGet]
    method GetProxyAuthList (line 45) | [HttpGet]
    method GetProxyLogList (line 57) | [HttpGet]

FILE: WPELibrary/Lib/WebAPI/SocketInfo_Controller.cs
  class SocketInfo_Controller (line 6) | [RoutePrefix("SocketInfo")]
    method GetSocketInfo (line 12) | [HttpGet]
    method GetSocketLogList (line 57) | [HttpGet]

FILE: WPELibrary/Lib/WebAPI/Socket_Web.cs
  class Socket_Web (line 15) | public class Socket_Web
    method Configuration (line 17) | public void Configuration(IAppBuilder app)

FILE: WPELibrary/Lib/WebAPI/SystemInfo_Controller.cs
  class SystemInfo_Controller (line 5) | [RoutePrefix("SystemInfo")]
    method GetCPUAndMemory (line 11) | [HttpGet]
    method GetStartTime (line 23) | [HttpGet]
    method GetSelectMode (line 35) | [HttpGet]

FILE: WPELibrary/Lib/WinSockHook.cs
  class WinSockHook (line 11) | public class WinSockHook : IEntryPoint
    method WinSockHook (line 20) | public WinSockHook()
    method WinSockHook (line 25) | public WinSockHook(RemoteHooking.IContext InContext, string ChannelName)
    method Run (line 30) | public unsafe void Run(RemoteHooking.IContext InContext, string Channe...
    method StartHook (line 53) | public void StartHook()
    method StopHook (line 166) | public void StopHook()
    method ExitHook (line 266) | public void ExitHook()
    method Send_Hook (line 283) | public static unsafe Int32 Send_Hook(
    method Recv_Hook (line 337) | public static unsafe Int32 Recv_Hook(
    method SendTo_Hook (line 399) | public static unsafe Int32 SendTo_Hook(
    method RecvFrom_Hook (line 455) | public static unsafe Int32 RecvFrom_Hook(
    method WSASend_Hook (line 515) | public static unsafe SocketError WSASend_Hook(
    method WSARecv_Hook (line 713) | public static unsafe SocketError WSARecv_Hook(
    method WSASendTo_Hook (line 856) | public static unsafe SocketError WSASendTo_Hook(
    method WSARecvFrom_Hook (line 1060) | public static unsafe SocketError WSARecvFrom_Hook(

FILE: WPELibrary/Properties/Resources.Designer.cs
  class Resources (line 22) | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resource...
    method Resources (line 31) | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Mic...

FILE: WPELibrary/Proxy_AccountAuthForm.Designer.cs
  class Proxy_AccountAuthForm (line 3) | partial class Proxy_AccountAuthForm
    method Dispose (line 14) | protected override void Dispose(bool disposing)
    method InitializeComponent (line 29) | private void InitializeComponent()

FILE: WPELibrary/Proxy_AccountAuthForm.cs
  class Proxy_AccountAuthForm (line 9) | public partial class Proxy_AccountAuthForm : Form
    method Proxy_AccountAuthForm (line 15) | public Proxy_AccountAuthForm()
    method Proxy_AccountAuthForm_Load (line 22) | private void Proxy_AccountAuthForm_Load(object sender, EventArgs e)
    method Proxy_AccountAuthForm_FormClosed (line 27) | private void Proxy_AccountAuthForm_FormClosed(object sender, FormClose...
    method InitDGV (line 32) | private void InitDGV()
    method Event_RecProxyAuth (line 53) | private void Event_RecProxyAuth(Proxy_AuthInfo pai)
    method dgvAuth_CellFormatting (line 95) | private void dgvAuth_CellFormatting(object sender, DataGridViewCellFor...
    method ShowAuthListInfo (line 126) | private void ShowAuthListInfo()
    method bSearch_Account_Click (line 137) | private void bSearch_Account_Click(object sender, EventArgs e)

FILE: WPELibrary/Proxy_AccountDevicesForm.Designer.cs
  class Proxy_AccountDevicesForm (line 3) | partial class Proxy_AccountDevicesForm
    method Dispose (line 14) | protected override void Dispose(bool disposing)
    method InitializeComponent (line 29) | private void InitializeComponent()

FILE: WPELibrary/Proxy_AccountDevicesForm.cs
  class Proxy_AccountDevicesForm (line 9) | public partial class Proxy_AccountDevicesForm : Form
    method Proxy_AccountDevicesForm (line 15) | public Proxy_AccountDevicesForm(List<Guid> gList)
    method cbIsLimitDevices_CheckedChanged (line 27) | private void cbIsLimitDevices_CheckedChanged(object sender, EventArgs e)
    method InitForm (line 32) | private void InitForm()
    method bSure_Click (line 49) | private void bSure_Click(object sender, EventArgs e)
    method bCancel_Click (line 73) | private void bCancel_Click(object sender, EventArgs e)

FILE: WPELibrary/Proxy_AccountForm.Designer.cs
  class Proxy_AccountForm (line 3) | partial class Proxy_AccountForm
    method Dispose (line 14) | protected override void Dispose(bool disposing)
    method InitializeComponent (line 29) | private void InitializeComponent()

FILE: WPELibrary/Proxy_AccountForm.cs
  class Proxy_AccountForm (line 8) | public partial class Proxy_AccountForm : Form
    method Proxy_AccountForm (line 14) | public Proxy_AccountForm(Guid AID)
    method InitForm (line 26) | private void InitForm()
    method cbIsLimitLinks_CheckedChanged (line 85) | private void cbIsLimitLinks_CheckedChanged(object sender, EventArgs e)
    method LimitLinks_Changed (line 90) | private void LimitLinks_Changed()
    method cbIsLimitDevices_CheckedChanged (line 99) | private void cbIsLimitDevices_CheckedChanged(object sender, EventArgs e)
    method LimitDevices_Changed (line 104) | private void LimitDevices_Changed()
    method cbExpiryTime_CheckedChanged (line 113) | private void cbExpiryTime_CheckedChanged(object sender, EventArgs e)
    method ExpiryTime_Changed (line 118) | private void ExpiryTime_Changed()
    method bSave_Click (line 127) | private void bSave_Click(object sender, EventArgs e)
    method CheckAccountInfo (line 204) | private bool CheckAccountInfo()
    method bCancel_Click (line 234) | private void bCancel_Click(object sender, EventArgs e)

FILE: WPELibrary/Proxy_AccountLinksForm.Designer.cs
  class Proxy_AccountLinksForm (line 3) | partial class Proxy_AccountLinksForm
    method Dispose (line 14) | protected override void Dispose(bool disposing)
    method InitializeComponent (line 29) | private void InitializeComponent()

FILE: WPELibrary/Proxy_AccountLinksForm.cs
  class Proxy_AccountLinksForm (line 9) | public partial class Proxy_AccountLinksForm : Form
    method Proxy_AccountLinksForm (line 15) | public Proxy_AccountLinksForm(List<Guid> gList)
    method cbIsLimitLinks_CheckedChanged (line 27) | private void cbIsLimitLinks_CheckedChanged(object sender, EventArgs e)
    method InitForm (line 32) | private void InitForm()
    method bSure_Click (line 49) | private void bSure_Click(object sender, EventArgs e)
    method bCancel_Click (line 73) | private void bCancel_Click(object sender, EventArgs e)

FILE: WPELibrary/Proxy_AccountListForm.Designer.cs
  class Proxy_AccountListForm (line 3) | partial class Proxy_AccountListForm
    method Dispose (line 14) | protected override void Dispose(bool disposing)
    method InitializeComponent (line 29) | private void InitializeComponent()

FILE: WPELibrary/Proxy_AccountListForm.cs
  class Proxy_AccountListForm (line 11) | public partial class Proxy_AccountListForm : Form
    method Proxy_AccountListForm (line 23) | public Proxy_AccountListForm()
    method InitDGV (line 32) | private void InitDGV()
    method InitForm (line 38) | private void InitForm()
    method InitExpireTime (line 45) | private void InitExpireTime()
    method Proxy_AccountListForm_Load (line 59) | private void Proxy_AccountListForm_Load(object sender, EventArgs e)
    method Proxy_AccountListForm_FormClosed (line 64) | private void Proxy_AccountListForm_FormClosed(object sender, FormClose...
    method LoadData (line 73) | private void LoadData(string sType)
    method bgwAccountList_DoWork (line 100) | private void bgwAccountList_DoWork(object sender, DoWorkEventArgs e)
    method bgwAccountList_RunWorkerCompleted (line 169) | private void bgwAccountList_RunWorkerCompleted(object sender, RunWorke...
    method ShowAccountList (line 184) | private void ShowAccountList()
    method ShowProxyAccountInfo (line 234) | private void ShowProxyAccountInfo()
    method cbbPageSize_SelectedIndexChanged (line 246) | private void cbbPageSize_SelectedIndexChanged(object sender, EventArgs e)
    method PageSize_Changed (line 253) | private void PageSize_Changed()
    method bFirst_Click (line 273) | private void bFirst_Click(object sender, EventArgs e)
    method bPrevious_Click (line 279) | private void bPrevious_Click(object sender, EventArgs e)
    method bNext_Click (line 288) | private void bNext_Click(object sender, EventArgs e)
    method bLast_Click (line 300) | private void bLast_Click(object sender, EventArgs e)
    method bSelectAll_Click (line 313) | private void bSelectAll_Click(object sender, EventArgs e)
    method bAccount_New_Click (line 335) | private void bAccount_New_Click(object sender, EventArgs e)
    method dgvAccountList_CellDoubleClick (line 345) | private void dgvAccountList_CellDoubleClick(object sender, DataGridVie...
    method bDelete_Click (line 370) | private void bDelete_Click(object sender, EventArgs e)
    method bAddTime_Click (line 395) | private void bAddTime_Click(object sender, EventArgs e)
    method bExport_Click (line 420) | private void bExport_Click(object sender, EventArgs e)
    method bImport_Click (line 441) | private void bImport_Click(object sender, EventArgs e)
    method bSearch_UserName_Click (line 451) | private void bSearch_UserName_Click(object sender, EventArgs e)
    method bSearch_State_Click (line 472) | private void bSearch_State_Click(object sender, EventArgs e)
    method bSearch_Expire_Click (line 528) | private void bSearch_Expire_Click(object sender, EventArgs e)
    method cmsAccountList_ItemClicked (line 543) | private void cmsAccountList_ItemClicked(object sender, ToolStripItemCl...

FILE: WPELibrary/Proxy_AccountLoginForm.Designer.cs
  class Proxy_AccountLoginForm (line 3) | partial class Proxy_AccountLoginForm
    method Dispose (line 14) | protected override void Dispose(bool disposing)
    method InitializeComponent (line 29) | private void InitializeComponent()

FILE: WPELibrary/Proxy_AccountLoginForm.cs
  class Proxy_AccountLoginForm (line 8) | public partial class Proxy_AccountLoginForm : Form
    method Proxy_AccountLoginForm (line 14) | public Proxy_AccountLoginForm(Guid AID)
    method InitForm (line 27) | private void InitForm()
    method InitDGV (line 40) | private void InitDGV()
    method dgvAccountLogin_CellFormatting (line 54) | private void dgvAccountLogin_CellFormatting(object sender, DataGridVie...

FILE: WPELibrary/Proxy_AccountTimeForm.Designer.cs
  class Proxy_AccountTimeForm (line 3) | partial class Proxy_AccountTimeForm
    method Dispose (line 14) | protected override void Dispose(bool disposing)
    method InitializeComponent (line 29) | private void InitializeComponent()

FILE: WPELibrary/Proxy_AccountTimeForm.cs
  class Proxy_AccountTimeForm (line 9) | public partial class Proxy_AccountTimeForm : Form
    method Proxy_AccountTimeForm (line 15) | public Proxy_AccountTimeForm(List<Guid> gList)
    method InitForm (line 27) | private void InitForm()
    method bSure_Click (line 44) | private void bSure_Click(object sender, EventArgs e)
    method bCancel_Click (line 72) | private void bCancel_Click(object sender, EventArgs e)

FILE: WPELibrary/Proxy_MapLocalForm.Designer.cs
  class Proxy_MapLocalForm (line 3) | partial class Proxy_MapLocalForm
    method Dispose (line 14) | protected override void Dispose(bool disposing)
    method InitializeComponent (line 29) | private void InitializeComponent()

FILE: WPELibrary/Proxy_MapLocalForm.cs
  class Proxy_MapLocalForm (line 8) | public partial class Proxy_MapLocalForm : Form
    method Proxy_MapLocalForm (line 14) | public Proxy_MapLocalForm(Proxy_MapLocal pml)
    method Proxy_MapLocalForm_Load (line 21) | private void Proxy_MapLocalForm_Load(object sender, EventArgs e)
    method bSure_Click (line 43) | private void bSure_Click(object sender, EventArgs e)
    method bCancel_Click (line 89) | private void bCancel_Click(object sender, EventArgs e)
    method bLocalPath_Click (line 98) | private void bLocalPath_Click(object sender, EventArgs e)

FILE: WPELibrary/Proxy_MapLocalListForm.Designer.cs
  class Proxy_MapLocalListForm (line 3) | partial class Proxy_MapLocalListForm
    method Dispose (line 14) | protected override void Dispose(bool disposing)
    method InitializeComponent (line 29) | private void InitializeComponent()

FILE: WPELibrary/Proxy_MapLocalListForm.cs
  class Proxy_MapLocalListForm (line 8) | public partial class Proxy_MapLocalListForm : Form
    method Proxy_MapLocalListForm (line 14) | public Proxy_MapLocalListForm()
    method Proxy_MapLocalForm_Load (line 21) | private void Proxy_MapLocalForm_Load(object sender, EventArgs e)
    method Proxy_MapLocalForm_FormClosed (line 26) | private void Proxy_MapLocalForm_FormClosed(object sender, FormClosedEv...
    method InitDGV (line 35) | private void InitDGV()
    method dgvMapLocal_CellFormatting (line 43) | private void dgvMapLocal_CellFormatting(object sender, DataGridViewCel...
    method dgvMapLocal_CellDoubleClick (line 68) | private void dgvMapLocal_CellDoubleClick(object sender, DataGridViewCe...
    method dgvMapLocal_CellContentClick (line 85) | private void dgvMapLocal_CellContentClick(object sender, DataGridViewC...
    method bAdd_Click (line 106) | private void bAdd_Click(object sender, EventArgs e)
    method bRemove_Click (line 116) | private void bRemove_Click(object sender, EventArgs e)
    method bOK_Click (line 140) | private void bOK_Click(object sender, EventArgs e)
    method cmsMapLocal_ItemClicked (line 149) | private void cmsMapLocal_ItemClicked(object sender, ToolStripItemClick...

FILE: WPELibrary/Proxy_MapRemoteForm.Designer.cs
  class Proxy_MapRemoteForm (line 3) | partial class Proxy_MapRemoteForm
    method Dispose (line 14) | protected override void Dispose(bool disposing)
    method InitializeComponent (line 29) | private void InitializeComponent()

FILE: WPELibrary/Proxy_MapRemoteForm.cs
  class Proxy_MapRemoteForm (line 8) | public partial class Proxy_MapRemoteForm : Form
    method Proxy_MapRemoteForm (line 14) | public Proxy_MapRemoteForm(Proxy_MapRemote pmr)
    method Proxy_MapRemoteForm_Load (line 21) | private void Proxy_MapRemoteForm_Load(object sender, EventArgs e)
    method bSure_Click (line 56) | private void bSure_Click(object sender, EventArgs e)
    method bCancel_Click (line 134) | private void bCancel_Click(object sender, EventArgs e)

FILE: WPELibrary/Proxy_MapRemoteListForm.Designer.cs
  class Proxy_MapRemoteListForm (line 3) | partial class Proxy_MapRemoteListForm
    method Dispose (line 14) | protected override void Dispose(bool disposing)
    method InitializeComponent (line 29) | private void InitializeComponent()

FILE: WPELibrary/Proxy_MapRemoteListForm.cs
  class Proxy_MapRemoteListForm (line 8) | public partial class Proxy_MapRemoteListForm : Form
    method Proxy_MapRemoteListForm (line 14) | public Proxy_MapRemoteListForm()
    method Proxy_MapRemoteListForm_Load (line 21) | private void Proxy_MapRemoteListForm_Load(object sender, EventArgs e)
    method Proxy_MapRemoteListForm_FormClosed (line 26) | private void Proxy_MapRemoteListForm_FormClosed(object sender, FormClo...
    method InitDGV (line 35) | private void InitDGV()
    method dgvMapRemote_CellFormatting (line 43) | private void dgvMapRemote_CellFormatting(object sender, DataGridViewCe...
    method dgvMapRemote_CellDoubleClick (line 82) | private void dgvMapRemote_CellDoubleClick(object sender, DataGridViewC...
    method dgvMapRemote_CellContentClick (line 99) | private void dgvMapRemote_CellContentClick(object sender, DataGridView...
    method bAdd_Click (line 120) | private void bAdd_Click(object sender, EventArgs e)
    method bRemove_Click (line 130) | private void bRemove_Click(object sender, EventArgs e)
    method bOK_Click (line 154) | private void bOK_Click(object sender, EventArgs e)
    method cmsMapRemote_ItemClicked (line 163) | private void cmsMapRemote_ItemClicked(object sender, ToolStripItemClic...

FILE: WPELibrary/Socket_CompareForm.Designer.cs
  class Socket_CompareForm (line 3) | partial class Socket_CompareForm
    method Dispose (line 14) | protected override void Dispose(bool disposing)
    method InitializeComponent (line 29) | private void InitializeComponent()

FILE: WPELibrary/Socket_CompareForm.cs
  class Socket_CompareForm (line 9) | public partial class Socket_CompareForm : Form
    method Socket_CompareForm (line 15) | public Socket_CompareForm(Socket_PacketInfo spi)
    method InitForm (line 30) | private async void InitForm()

FILE: WPELibrary/Socket_FilterForm.Designer.cs
  class Socket_FilterForm (line 4) | partial class Socket_FilterForm
    method Dispose (line 15) | protected override void Dispose(bool disposing)
    method InitializeComponent (line 30) | private void InitializeComponent()

FILE: WPELibrary/Socket_FilterForm.cs
  class Socket_FilterForm (line 11) | public partial class Socket_FilterForm : Form
    method Socket_FilterForm (line 18) | public Socket_FilterForm(Socket_FilterInfo sfi)
    method InitFrom (line 57) | private void InitFrom()
    method InitDGV (line 188) | private void InitDGV()
    method InitDGV_Normal (line 227) | private void InitDGV_Normal()
    method InitDGV_Normal_ByAdvance (line 255) | private void InitDGV_Normal_ByAdvance()
    method InitDGV_Advanced_Search (line 272) | private void InitDGV_Advanced_Search()
    method InitDGV_Advanced_Modify_Head (line 299) | private void InitDGV_Advanced_Modify_Head()
    method InitDGV_Advanced_Modify_Position (line 326) | private void InitDGV_Advanced_Modify_Position()
    method InitProgressionPosition (line 355) | private void InitProgressionPosition()
    method cbFilterAction_Execute_CheckedChanged (line 422) | private void cbFilterAction_Execute_CheckedChanged(object sender, Even...
    method FilterAction_ExecuteChange (line 427) | private void FilterAction_ExecuteChange()
    method cbbFilterAction_ExecuteType_SelectedIndexChanged (line 432) | private void cbbFilterAction_ExecuteType_SelectedIndexChanged(object s...
    method FilterAction_ExecuteTypeChanged (line 437) | private void FilterAction_ExecuteTypeChanged()
    method InitSendInfo (line 456) | private void InitSendInfo()
    method InitRobotInfo (line 475) | private void InitRobotInfo()
    method rbFilterMode_CheckedChanged (line 498) | private void rbFilterMode_CheckedChanged(object sender, EventArgs e)
    method FilterModeChange (line 503) | private void FilterModeChange()
    method rbFilterModifyFrom_CheckedChanged (line 532) | private void rbFilterModifyFrom_CheckedChanged(object sender, EventArg...
    method FilterModifyFromChange (line 537) | private void FilterModifyFromChange()
    method cbFilter_AppointHeader_CheckedChanged (line 564) | private void cbFilter_AppointHeader_CheckedChanged(object sender, Even...
    method FilterAppointHeaderChange (line 569) | private void FilterAppointHeaderChange()
    method txtFilter_HeaderContent_KeyPress (line 574) | private void txtFilter_HeaderContent_KeyPress(object sender, KeyPressE...
    method cbFilter_AppointSocket_CheckedChanged (line 593) | private void cbFilter_AppointSocket_CheckedChanged(object sender, Even...
    method FilterAppointSocketChange (line 598) | private void FilterAppointSocketChange()
    method cbFilter_AppointLength_CheckedChanged (line 607) | private void cbFilter_AppointLength_CheckedChanged(object sender, Even...
    method FilterAppointLengthChange (line 612) | private void FilterAppointLengthChange()
    method cbFilter_AppointPort_CheckedChanged (line 621) | private void cbFilter_AppointPort_CheckedChanged(object sender, EventA...
    method FilterAppointPortChange (line 626) | private void FilterAppointPortChange()
    method cbProgressionCarry_CheckedChanged (line 637) | private void cbProgressionCarry_CheckedChanged(object sender, EventArg...
    method ProgressionCarryChange (line 642) | private void ProgressionCarryChange()
    method bgwFilterInfo_DoWork (line 658) | private void bgwFilterInfo_DoWork(object sender, System.ComponentModel...
    method bgwFilterInfo_ProgressChanged (line 663) | private void bgwFilterInfo_ProgressChanged(object sender, System.Compo...
    method bgwFilterInfo_RunWorkerCompleted (line 668) | private void bgwFilterInfo_RunWorkerCompleted(object sender, System.Co...
    method ShowFilterInfo (line 675) | private void ShowFilterInfo()
    method DGV_CellFormatting (line 780) | private void DGV_CellFormatting(object sender, DataGridViewCellFormatt...
    method dgvFilterNormal_KeyDown (line 800) | private void dgvFilterNormal_KeyDown(object sender, KeyEventArgs e)
    method dgvFilterAdvanced_Search_KeyDown (line 809) | private void dgvFilterAdvanced_Search_KeyDown(object sender, KeyEventA...
    method dgvFilterAdvanced_Modify_FromHead_KeyDown (line 818) | private void dgvFilterAdvanced_Modify_FromHead_KeyDown(object sender, ...
    method dgvFilterAdvanced_Modify_FromPosition_KeyDown (line 827) | private void dgvFilterAdvanced_Modify_FromPosition_KeyDown(object send...
    method PastePacketData (line 836) | private async void PastePacketData(DataGridView dgv, string sData)
    method CheckFilterIsValid (line 881) | public bool CheckFilterIsValid()
    method bFilterButton_Close_Click (line 1076) | private void bFilterButton_Close_Click(object sender, EventArgs e)
    method bFilterButton_Save_Click (line 1085) | private void bFilterButton_Save_Click(object sender, EventArgs e)
    method cmsDGV_ItemClicked (line 1362) | private void cmsDGV_ItemClicked(object sender, ToolStripItemClickedEve...

FILE: WPELibrary/Socket_FindForm.Designer.cs
  class Socket_FindForm (line 3) | partial class Socket_FindForm
    method Dispose (line 14) | protected override void Dispose(bool disposing)
    method InitializeComponent (line 29) | private void InitializeComponent()

FILE: WPELibrary/Socket_FindForm.cs
  class Socket_FindForm (line 9) | public partial class Socket_FindForm : Form
    method Socket_FindForm (line 15) | public Socket_FindForm()
    method InitForm (line 22) | private void InitForm()
    method ValidateFind (line 60) | private void ValidateFind()
    method btnOK_Click (line 86) | private void btnOK_Click(object sender, EventArgs e)
    method btnCancel_Click (line 132) | private void btnCancel_Click(object sender, EventArgs e)
    method rbString_CheckedChanged (line 148) | private void rbString_CheckedChanged(object sender, EventArgs e)
    method rbHex_CheckedChanged (line 153) | private void rbHex_CheckedChanged(object sender, EventArgs e)
    method FindTypeChanged (line 158) | private void FindTypeChanged()

FILE: WPELibrary/Socket_Form.Designer.cs
  class Socket_Form (line 4) | partial class Socket_Form
    method Dispose (line 15) | protected override void Dispose(bool disposing)
    method InitializeComponent (line 30) | private void InitializeComponent()

FILE: WPELibrary/Socket_Form.cs
  class Socket_Form (line 19) | public partial class Socket_Form : Form
    method Socket_Form (line 28) | public Socket_Form()
    method Socket_Form_Load (line 61) | private void Socket_Form_Load(object sender, EventArgs e)
    method Socket_Form_FormClosing (line 75) | private void Socket_Form_FormClosing(object sender, FormClosingEventAr...
    method Socket_Form_Resize (line 81) | private void Socket_Form_Resize(object sender, EventArgs e)
    method niWPE_Click (line 96) | private void niWPE_Click(object sender, EventArgs e)
    method ShowMainForm (line 111) | private void ShowMainForm()
    method ExitMainForm (line 125) | public void ExitMainForm()
    method WndProc (line 145) | protected override void WndProc(ref Message m)
    method InitSocketForm (line 175) | private void InitSocketForm()
    method InitHexBox_XOR (line 217) | private void InitHexBox_XOR()
    method InitHotKeys (line 230) | private void InitHotKeys()
    method InitSocketDGV (line 250) | private void InitSocketDGV()
    method LoadConfigs_Parameter (line 284) | private void LoadConfigs_Parameter()
    method SaveConfigs_Parameter (line 385) | private void SaveConfigs_Parameter()
    method txtCheckSocket_KeyPress (line 468) | private void txtCheckSocket_KeyPress(object sender, KeyPressEventArgs e)
    method txtCheckLength_KeyPress (line 483) | private void txtCheckLength_KeyPress(object sender, KeyPressEventArgs e)
    method txtCheckPacket_KeyPress (line 498) | private void txtCheckPacket_KeyPress(object sender, KeyPressEventArgs e)
    method txtCheckHead_KeyPress (line 513) | private void txtCheckHead_KeyPress(object sender, KeyPressEventArgs e)
    method txtCheckIP_KeyPress (line 528) | private void txtCheckIP_KeyPress(object sender, KeyPressEventArgs e)
    method txtCheckPort_KeyPress (line 543) | private void txtCheckPort_KeyPress(object sender, KeyPressEventArgs e)
    method cbSocketList_AutoClear_CheckedChanged (line 562) | private void cbSocketList_AutoClear_CheckedChanged(object sender, Even...
    method SocketList_AutoClearChange (line 567) | private void SocketList_AutoClearChange()
    method cbLogList_AutoClear_CheckedChanged (line 586) | private void cbLogList_AutoClear_CheckedChanged(object sender, EventAr...
    method LogList_AutoClearChange (line 591) | private void LogList_AutoClearChange()
    method AutoScrollDataGridView (line 610) | private void AutoScrollDataGridView(DataGridView dgv, bool autoScroll)
    method bHotKey1_Click (line 638) | private void bHotKey1_Click(object sender, EventArgs e)
    method bHotKey2_Click (line 647) | private void bHotKey2_Click(object sender, EventArgs e)
    method bHotKey3_Click (line 656) | private void bHotKey3_Click(object sender, EventArgs e)
    method bHotKey4_Click (line 665) | private void bHotKey4_Click(object sender, EventArgs e)
    method bHotKey5_Click (line 674) | private void bHotKey5_Click(object sender, EventArgs e)
    method bHotKey6_Click (line 683) | private void bHotKey6_Click(object sender, EventArgs e)
    method bHotKey7_Click (line 692) | private void bHotKey7_Click(object sender, EventArgs e)
    method bHotKey8_Click (line 701) | private void bHotKey8_Click(object sender, EventArgs e)
    method bHotKey9_Click (line 710) | private void bHotKey9_Click(object sender, EventArgs e)
    method bHotKey10_Click (line 719) | private void bHotKey10_Click(object sender, EventArgs e)
    method bHotKey11_Click (line 728) | private void bHotKey11_Click(object sender, EventArgs e)
    method bHotKey12_Click (line 737) | private void bHotKey12_Click(object sender, EventArgs e)
    method cbTopMost_CheckedChanged (line 750) | private void cbTopMost_CheckedChanged(object sender, EventArgs e)
    method TopMostCheckedChanged (line 755) | private void TopMostCheckedChanged()
    method cbWorkingMode_Speed_CheckedChanged (line 760) | private void cbWorkingMode_Speed_CheckedChanged(object sender, EventAr...
    method rbListExecute_Together_CheckedChanged (line 765) | private void rbListExecute_Together_CheckedChanged(object sender, Even...
    method ListExecute_Changed (line 770) | private void ListExecute_Changed()
    method InitFilterActionColor (line 782) | private void InitFilterActionColor()
    method bBackUp_Export_Click (line 808) | private void bBackUp_Export_Click(object sender, EventArgs e)
    method bCleanUp_Click (line 843) | private void bCleanUp_Click(object sender, EventArgs e)
    method CleanUp_MainForm (line 848) | private void CleanUp_MainForm()
    method CleanUp_SocketInfo (line 856) | private void CleanUp_SocketInfo()
    method CleanUp_SocketList (line 881) | private void CleanUp_SocketList()
    method CleanUp_LogList (line 896) | private void CleanUp_LogList()
    method CleanUp_HexBox (line 910) | private void CleanUp_HexBox()
    method AutoCleanUp_SocketList (line 925) | private void AutoCleanUp_SocketList()
    method AutoCleanUp_LogList (line 949) | private void AutoCleanUp_LogList()
    method bStartHook_Click (line 976) | private void bStartHook_Click(object sender, EventArgs e)
    method StartHook_MainForm (line 981) | private void StartHook_MainForm()
    method bStopHook_Click (line 1024) | private void bStopHook_Click(object sender, EventArgs e)
    method StopHook_MainForm (line 1029) | private void StopHook_MainForm()
    method tSocketInfo_Tick (line 1057) | private void tSocketInfo_Tick(object sender, EventArgs e)
    method tSocketList_Tick (line 1083) | private async void tSocketList_Tick(object sender, EventArgs e)
    method dgvSocketList_CellFormatting (line 1111) | private void dgvSocketList_CellFormatting(object sender, DataGridViewC...
    method dgvLogList_CellFormatting (line 1161) | private void dgvLogList_CellFormatting(object sender, DataGridViewCell...
    method dgvFilterList_CellContentClick (line 1181) | private void dgvFilterList_CellContentClick(object sender, DataGridVie...
    method dgvFilterList_CellDoubleClick (line 1200) | private void dgvFilterList_CellDoubleClick(object sender, DataGridView...
    method dgvSendList_CellContentClick (line 1221) | private void dgvSendList_CellContentClick(object sender, DataGridViewC...
    method dgvSendList_CellDoubleClick (line 1241) | private void dgvSendList_CellDoubleClick(object sender, DataGridViewCe...
    method dgvRobotList_CellContentClick (line 1265) | private void dgvRobotList_CellContentClick(object sender, DataGridView...
    method dgvRobotList_CellDoubleClick (line 1284) | private void dgvRobotList_CellDoubleClick(object sender, DataGridViewC...
    method bSearch_Click (line 1305) | private void bSearch_Click(object sender, EventArgs e)
    method bSearchNext_Click (line 1316) | private void bSearchNext_Click(object sender, EventArgs e)
    method HexBox_FindNext (line 1321) | private void HexBox_FindNext()
    method SearchSocketListNext (line 1342) | private void SearchSocketListNext()
    method bgwSearch_DoWork (line 1350) | private void bgwSearch_DoWork(object sender, System.ComponentModel.DoW...
    method bgwSearch_RunWorkerCompleted (line 1396) | private void bgwSearch_RunWorkerCompleted(object sender, System.Compon...
    method dgvSocketInfo_SelectionChanged (line 1429) | private void dgvSocketInfo_SelectionChanged(object sender, EventArgs e)
    method ShowSelectSocketData (line 1434) | private void ShowSelectSocketData()
    method bPacketStatistics_Click (line 1462) | private void bPacketStatistics_Click(object sender, EventArgs e)
    method bgwPacketStatistics_DoWork (line 1471) | private void bgwPacketStatistics_DoWork(object sender, DoWorkEventArgs e)
    method bgwPacketStatistics_RunWorkerCompleted (line 1502) | private void bgwPacketStatistics_RunWorkerCompleted(object sender, Run...
    method cmsHexBox_Opening (line 1518) | private void cmsHexBox_Opening(object sender, System.ComponentModel.Ca...
    method cmsHexBox_tscbSendList_SelectedIndexChanged (line 1523) | private void cmsHexBox_tscbSendList_SelectedIndexChanged(object sender...
    method cmsHexBox_ItemClicked (line 1567) | private void cmsHexBox_ItemClicked(object sender, ToolStripItemClicked...
    method cmsIcon_ItemClicked (line 1644) | private void cmsIcon_ItemClicked(object sender, ToolStripItemClickedEv...
    method cmsSocketList_Opening (line 1684) | private void cmsSocketList_Opening(object sender, System.ComponentMode...
    method tscbSendList_SelectedIndexChanged (line 1689) | private void tscbSendList_SelectedIndexChanged(object sender, EventArg...
    method cmsSocketList_ItemClicked (line 1714) | private void cmsSocketList_ItemClicked(object sender, ToolStripItemCli...
    method cmsFilterList_ItemClicked (line 1782) | private void cmsFilterList_ItemClicked(object sender, ToolStripItemCli...
    method cmsSendList_ItemClicked (line 1851) | private void cmsSendList_ItemClicked(object sender, ToolStripItemClick...
    method cmsRobotList_ItemClicked (line 1920) | private void cmsRobotList_ItemClicked(object sender, ToolStripItemClic...
    method cmsLogList_ItemClicked (line 1989) | private void cmsLogList_ItemClicked(object sender, ToolStripItemClicke...
    method tsFilterList_Load_Click (line 2024) | private void tsFilterList_Load_Click(object sender, EventArgs e)
    method tsFilterList_Save_Click (line 2029) | private void tsFilterList_Save_Click(object sender, EventArgs e)
    method tsFilterList_Add_Click (line 2047) | private void tsFilterList_Add_Click(object sender, EventArgs e)
    method tsFilterList_CleanUp_Click (line 2055) | private void tsFilterList_CleanUp_Click(object sender, EventArgs e)
    method tsFilterList_SelectAll_Click (line 2063) | private void tsFilterList_SelectAll_Click(object sender, EventArgs e)
    method tsFilterList_SelectNo_Click (line 2086) | private void tsFilterList_SelectNo_Click(object sender, EventArgs e)
    method tsSendList_Load_Click (line 2113) | private void tsSendList_Load_Click(object sender, EventArgs e)
    method tsSendList_Save_Click (line 2118) | private void tsSendList_Save_Click(object sender, EventArgs e)
    method tsSendList_Start_Click (line 2136) | private void tsSendList_Start_Click(object sender, EventArgs e)
    method tsSendList_Stop_Click (line 2151) | private void tsSendList_Stop_Click(object sender, EventArgs e)
    method tsSendList_Add_Click (line 2156) | private void tsSendList_Add_Click(object sender, EventArgs e)
    method tsSendList_CleanUp_Click (line 2164) | private void tsSendList_CleanUp_Click(object sender, EventArgs e)
    method bgwSendList_DoWork (line 2176) | private void bgwSendList_DoWork(object sender, DoWorkEventArgs e)
    method bgwSendList_RunWorkerCompleted (line 2234) | private void bgwSendList_RunWorkerCompleted(object sender, RunWorkerCo...
    method tsRobotList_Load_Click (line 2251) | private void tsRobotList_Load_Click(object sender, EventArgs e)
    method tsRobotList_Save_Click (line 2256) | private void tsRobotList_Save_Click(object sender, EventArgs e)
    method tsRobotList_Start_Click (line 2274) | private void tsRobotList_Start_Click(object sender, EventArgs e)
    method tsRobotList_Stop_Click (line 2289) | private void tsRobotList_Stop_Click(object sender, EventArgs e)
    method tsRobotList_Add_Click (line 2294) | private void tsRobotList_Add_Click(object sender, EventArgs e)
    method tsRobotList_CleanUp_Click (line 2302) | private void tsRobotList_CleanUp_Click(object sender, EventArgs e)
    method bgwRobotList_DoWork (line 2314) | private void bgwRobotList_DoWork(object sender, DoWorkEventArgs e)
    method bgwRobotList_RunWorkerCompleted (line 2372) | private void bgwRobotList_RunWorkerCompleted(object sender, System.Com...
    method bTextCompare_Click (line 2389) | private void bTextCompare_Click(object sender, EventArgs e)
    method bTextDuplicate_Click (line 2401) | private void bTextDuplicate_Click(object sender, EventArgs e)
    method bPacketInfo_Encoding_Click (line 2417) | private void bPacketInfo_Encoding_Click(object sender, EventArgs e)
    method bPacketInfo_Decoding_Click (line 2465) | private void bPacketInfo_Decoding_Click(object sender, EventArgs e)
    method bXOR_Click (line 2517) | private void bXOR_Click(object sender, EventArgs e)
    method txtXOR_KeyPress (line 2568) | private void txtXOR_KeyPress(object sender, KeyPressEventArgs e)
    method bXOR_Clear_Click (line 2583) | private void bXOR_Clear_Click(object sender, EventArgs e)
    method bExtraction_Click (line 2593) | private void bExtraction_Click(object sender, EventArgs e)
    method cmsExtraction_ItemClicked (line 2843) | private void cmsExtraction_ItemClicked(object sender, ToolStripItemCli...

FILE: WPELibrary/Socket_PasswordFrom.Designer.cs
  class Socket_PasswordFrom (line 3) | partial class Socket_PasswordFrom
    method Dispose (line 14) | protected override void Dispose(bool disposing)
    method InitializeComponent (line 29) | private void InitializeComponent()

FILE: WPELibrary/Socket_PasswordFrom.cs
  class Socket_PasswordFrom (line 8) | public partial class Socket_PasswordFrom : Form
    method Socket_PasswordFrom (line 15) | public Socket_PasswordFrom(Socket_Cache.System.PWType PWType)
    method InitForm (line 24) | private void InitForm()
    method Socket_PasswordFrom_FormClosing (line 67) | private void Socket_PasswordFrom_FormClosing(object sender, FormClosin...
    method bOK_Click (line 114) | private void bOK_Click(object sender, EventArgs e)
    method bCancel_Click (line 137) | private void bCancel_Click(object sender, EventArgs e)

FILE: WPELibrary/Socket_RobotForm.Designer.cs
  class Socket_RobotForm (line 3) | partial class Socket_RobotForm
    method Dispose (line 14) | protected override void Dispose(bool disposing)
    method InitializeComponent (line 29) | private void InitializeComponent()

FILE: WPELibrary/Socket_RobotForm.cs
  class Socket_RobotForm (line 10) | public partial class Socket_RobotForm : Form
    method Socket_RobotForm (line 19) | public Socket_RobotForm(Socket_RobotInfo sri)
    method InitFrom (line 44) | private void InitFrom()
    method InitRobot (line 66) | private void InitRobot()
    method InitDGV (line 82) | private void InitDGV()
    method InitComboBox (line 96) | private void InitComboBox()
    method dgvRobotInstruction_CellFormatting (line 113) | private void dgvRobotInstruction_CellFormatting(object sender, DataGri...
    method bSave_Click (line 148) | private void bSave_Click(object sender, EventArgs e)
    method bClose_Click (line 187) | private void bClose_Click(object sender, EventArgs e)
    method bExecute_Click (line 196) | private void bExecute_Click(object sender, EventArgs e)
    method Worker_RunWorkerCompleted (line 234) | private void Worker_RunWorkerCompleted(object sender, System.Component...
    method Worker_ProgressChanged (line 269) | private void Worker_ProgressChanged(object sender, System.ComponentMod...
    method bStop_Click (line 293) | private void bStop_Click(object sender, EventArgs e)
    method UpdateInstruction_ByListAction (line 302) | public int UpdateInstruction_ByListAction(Socket_Cache.System.ListActi...
    method cmsRobotInstruction_ItemClicked (line 383) | private void cmsRobotInstruction_ItemClicked(object sender, ToolStripI...
    method AddInstruction (line 443) | public void AddInstruction(Socket_Cache.Robot.InstructionType instruct...
    method bSend_SendList_Click (line 472) | private void bSend_SendList_Click(object sender, EventArgs e)
    method bSend_SocketList_Click (line 495) | private void bSend_SocketList_Click(object sender, EventArgs e)
    method bSet_SystemSocket_Click (line 511) | private void bSet_SystemSocket_Click(object sender, EventArgs e)
    method rbDelay_Fix_CheckedChanged (line 542) | private void rbDelay_Fix_CheckedChanged(object sender, EventArgs e)
    method rbDelay_Random_CheckedChanged (line 547) | private void rbDelay_Random_CheckedChanged(object sender, EventArgs e)
    method bDelay_Click (line 552) | private void bDelay_Click(object sender, EventArgs e)
    method bLoopStart_Click (line 582) | private void bLoopStart_Click(object sender, EventArgs e)
    method bLoopEnd_Click (line 597) | private void bLoopEnd_Click(object sender, EventArgs e)
    method bKeyBoard_Click (line 613) | private void bKeyBoard_Click(object sender, EventArgs e)
    method txtKeyBoard_Key_KeyDown (line 648) | private void txtKeyBoard_Key_KeyDown(object sender, KeyEventArgs e)
    method bKeyboard_combination_Click (line 667) | private void bKeyboard_combination_Click(object sender, EventArgs e)
    method txtKeyboard_combination_KeyDown (line 687) | private void txtKeyboard_combination_KeyDown(object sender, KeyEventAr...
    method txtKeyboard_combination_KeyUp (line 746) | private void txtKeyboard_combination_KeyUp(object sender, KeyEventArgs e)
    method bKeyboard_Text_Click (line 765) | private void bKeyboard_Text_Click(object sender, EventArgs e)
    method bMouse_Click (line 789) | private void bMouse_Click(object sender, EventArgs e)
    method bMouseWheel_Click (line 842) | private void bMouseWheel_Click(object sender, EventArgs e)
    method bMouseMove_Click (line 874) | private void bMouseMove_Click(object sender, EventArgs e)

FILE: WPELibrary/Socket_SendForm.Designer.cs
  class Socket_SendForm (line 4) | partial class Socket_SendForm
    method Dispose (line 15) | protected override void Dispose(bool disposing)
    method InitializeComponent (line 30) | private void InitializeComponent()

FILE: WPELibrary/Socket_SendForm.cs
  class Socket_SendForm (line 11) | public partial class Socket_SendForm : Form
    method Socket_SendForm (line 21) | public Socket_SendForm(Socket_PacketInfo spi)
    method Socket_SendForm_Load (line 43) | private void Socket_SendForm_Load(object sender, EventArgs e)
    method Socket_SendForm_FormClosing (line 54) | private void Socket_SendForm_FormClosing(object sender, FormClosingEve...
    method InitSendInfo (line 59) | private void InitSendInfo()
    method InitHexBox (line 79) | private void InitHexBox()
    method cbProgressionPosition_CheckedChanged (line 109) | private void cbProgressionPosition_CheckedChanged(object sender, Event...
    method ProgressionPositionChange (line 114) | private void ProgressionPositionChange()
    method cbProgressionCarry_CheckedChanged (line 133) | private void cbProgressionCarry_CheckedChanged(object sender, EventArg...
    method ProgressionCarryChange (line 138) | private void ProgressionCarryChange()
    method rbSendType_Continuously_CheckedChanged (line 147) | private void rbSendType_Continuously_CheckedChanged(object sender, Eve...
    method rbSendType_Times_CheckedChanged (line 152) | private void rbSendType_Times_CheckedChanged(object sender, EventArgs e)
    method SendTypeChanged (line 157) | private void SendTypeChanged()
    method CheckSendPacket (line 166) | private bool CheckSendPacket()
    method bSend_Click (line 208) | private void bSend_Click(object sender, EventArgs e)
    method bgwSendPacket_DoWork (line 241) | private void bgwSendPacket_DoWork(object sender, System.ComponentModel...
    method bgwSendPacket_RunWorkerCompleted (line 294) | private void bgwSendPacket_RunWorkerCompleted(object sender, System.Co...
    method DoSendPacket (line 314) | private void DoSendPacket(int iSocket, string sIPFrom, string sIPTo, b...
    method bSendStop_Click (line 376) | private void bSendStop_Click(object sender, EventArgs e)
    method StopSend (line 381) | private void StopSend()
    method bSave_Click (line 405) | private void bSave_Click(object sender, EventArgs e)
    method bClose_Click (line 443) | private void bClose_Click(object sender, EventArgs e)
    method cmsHexBox_Opening (line 452) | private void cmsHexBox_Opening(object sender, CancelEventArgs e)
    method tscbSendList_SelectedIndexChanged (line 457) | private void tscbSendList_SelectedIndexChanged(object sender, EventArg...
    method cmsHexBox_ItemClicked (line 498) | private void cmsHexBox_ItemClicked(object sender, ToolStripItemClicked...
    method hbPacketData_CurrentLineChanged (line 545) | private void hbPacketData_CurrentLineChanged(object sender, EventArgs e)
    method hbPacketData_CurrentPositionInLineChanged (line 550) | private void hbPacketData_CurrentPositionInLineChanged(object sender, ...
    method hbPacketData_Copied (line 555) | private void hbPacketData_Copied(object sender, EventArgs e)
    method hbPacketData_CopiedHex (line 560) | private void hbPacketData_CopiedHex(object sender, EventArgs e)
    method hbPacketData_SelectionLengthChanged (line 565) | private void hbPacketData_SelectionLengthChanged(object sender, EventA...
    method hbPacketData_SelectionStartChanged (line 570) | private void hbPacketData_SelectionStartChanged(object sender, EventAr...
    method ByteProvider_Changed (line 575) | private void ByteProvider_Changed(object sender, EventArgs e)
    method ByteProvider_LengthChanged (line 580) | private void ByteProvider_LengthChanged(object sender, EventArgs e)
    method HexBox_UpdatePacketLen (line 585) | private void HexBox_UpdatePacketLen()
    method HexBox_LinePositionChanged (line 597) | private void HexBox_LinePositionChanged()
    method HexBox_ManageAbility (line 680) | private void HexBox_ManageAbility()
    method HexBox_ManageAbilityForCopyAndPaste (line 709) | private void HexBox_ManageAbilityForCopyAndPaste()
    method tsPacketData_Cut_Click (line 728) | private void tsPacketData_Cut_Click(object sender, EventArgs e)
    method tsPacketData_Copy_ButtonClick (line 737) | private void tsPacketData_Copy_ButtonClick(object sender, EventArgs e)
    method tsPacketData_Copy_Copy_Click (line 742) | private void tsPacketData_Copy_Copy_Click(object sender, EventArgs e)
    method tsPacketData_Copy_CopyHex_Click (line 747) | private void tsPacketData_Copy_CopyHex_Click(object sender, EventArgs e)
    method tsPacketData_Paste_ButtonClick (line 756) | private void tsPacketData_Paste_ButtonClick(object sender, EventArgs e)
    method tsPacketData_Paste_Paste_Click (line 761) | private void tsPacketData_Paste_Paste_Click(object sender, EventArgs e)
    method tsPacketData_Paste_PasteHex_Click (line 766) | private void tsPacketData_Paste_PasteHex_Click(object sender, EventArg...
    method tsPacketData_Find_Click (line 775) | private void tsPacketData_Find_Click(object sender, EventArgs e)
    method tsPacketData_FindNext_Click (line 792) | private void tsPacketData_FindNext_Click(object sender, EventArgs e)
    method ShowFindForm (line 797) | private void ShowFindForm()
    method HexBox_FindNext (line 810) | private void HexBox_FindNext()
    method tscbEncoding_SelectedIndexChanged (line 834) | private void tscbEncoding_SelectedIndexChanged(object sender, EventArg...
    method tscbPerLine_SelectedIndexChanged (line 851) | private void tscbPerLine_SelectedIndexChanged(object sender, EventArgs e)

FILE: WPELibrary/Socket_SendListForm.Designer.cs
  class Socket_SendListForm (line 4) | partial class Socket_SendListForm
    method Dispose (line 15) | protected override void Dispose(bool disposing)
    method InitializeComponent (line 30) | private void InitializeComponent()

FILE: WPELibrary/Socket_SendListForm.cs
  class Socket_SendListForm (line 11) | public partial class Socket_SendListForm : Form
    method Socket_SendListForm (line 21) | public Socket_SendListForm(Socket_SendInfo ssi)
    method SocketSendList_Form_FormClosed (line 35) | private void SocketSendList_Form_FormClosed(object sender, FormClosedE...
    method dgvSendCollection_SelectionChanged (line 40) | private void dgvSendCollection_SelectionChanged(object sender, EventAr...
    method InitSendListDGV (line 64) | private void InitSendListDGV()
    method InitSendListForm (line 78) | private void InitSendListForm()
    method InitSend (line 102) | private void InitSend()
    method dgvSendCollection_CellFormatting (line 118) | private void dgvSendCollection_CellFormatting(object sender, DataGridV...
    method bSave_Click (line 159) | private void bSave_Click(object sender, EventArgs e)
    method bClose_Click (line 190) | private void bClose_Click(object sender, EventArgs e)
    method bExecute_Click (line 199) | private void bExecute_Click(object sender, EventArgs e)
    method Worker_RunWorkerCompleted (line 233) | private void Worker_RunWorkerCompleted(object sender, System.Component...
    method Worker_ProgressChanged (line 272) | private void Worker_ProgressChanged(object sender, ProgressChangedEven...
    method bStop_Click (line 292) | private void bStop_Click(object sender, EventArgs e)
    method CheckSendInfo (line 301) | private bool CheckSendInfo()
    method cmsSendCollection_ItemClicked (line 328) | private void cmsSendCollection_ItemClicked(object sender, ToolStripIte...

FILE: WPELibrary/TextComparison/TextCompareForm.Designer.cs
  class TextCompareForm (line 3) | partial class TextCompareForm
    method Dispose (line 14) | protected override void Dispose(bool disposing)
    method InitializeComponent (line 29) | private void InitializeComponent()

FILE: WPELibrary/TextComparison/TextCompareForm.cs
  class TextCompareForm (line 7) | public partial class TextCompareForm : Form
    method TextCompareForm (line 11) | public TextCompareForm(string TextA, string TextB)
    method TextCompareForm_Load (line 21) | private void TextCompareForm_Load(object sender, EventArgs e)
    method TextCompareForm_FormClosed (line 26) | private void TextCompareForm_FormClosed(object sender, FormClosedEvent...
    method rtbA_TextChanged (line 31) | private void rtbA_TextChanged(object sender, EventArgs e)
    method rtbB_TextChanged (line 36) | private void rtbB_TextChanged(object sender, EventArgs e)
    method bClear_Click (line 45) | private void bClear_Click(object sender, EventArgs e)
    method bExchange_Click (line 56) | private void bExchange_Click(object sender, EventArgs e)
    method bCompare_Click (line 69) | private void bCompare_Click(object sender, EventArgs e)
    method TextCompare (line 74) | private async void TextCompare()

FILE: WPELibrary/TextComparison/TextDuplicateForm.Designer.cs
  class TextDuplicateForm (line 3) | partial class TextDuplicateForm
    method Dispose (line 14) | protected override void Dispose(bool disposing)
    method InitializeComponent (line 29) | private void InitializeComponent()

FILE: WPELibrary/TextComparison/TextDuplicateForm.cs
  class TextDuplicateForm (line 10) | public partial class TextDuplicateForm : Form
    method TextDuplicateForm (line 17) | public TextDuplicateForm(string TextA, string TextB)
    method TextDuplicateForm_Load (line 27) | private void TextDuplicateForm_Load(object sender, EventArgs e)
    method TextDuplicateForm_FormClosed (line 32) | private void TextDuplicateForm_FormClosed(object sender, FormClosedEve...
    method rtbA_TextChanged (line 37) | private void rtbA_TextChanged(object sender, EventArgs e)
    method rtbB_TextChanged (line 42) | private void rtbB_TextChanged(object sender, EventArgs e)
    method bSearch_Click (line 51) | private void bSearch_Click(object sender, EventArgs e)
    method bRestore_Click (line 71) | private void bRestore_Click(object sender, EventArgs e)
    method ComparePackets (line 81) | private (string TextA, string TextB) ComparePackets(string stringA, st...
    method FormatHex (line 123) | private string FormatHex(string hex)
    method SplitIntoBytes (line 140) | private List<string> SplitIntoBytes(string hex)
    method FindCommonSequences (line 159) | private List<(int Pos1, int Pos2, int Length)> FindCommonSequences(Lis...
    method CleanAndNormalizeHex (line 191) | private string CleanAndNormalizeHex(string input)

FILE: WinsockPacketEditor/Injector_Form.Designer.cs
  class Injector_Form (line 4) | partial class Injector_Form
    method Dispose (line 15) | protected override void Dispose(bool disposing)
    method InitializeComponent (line 30) | private void InitializeComponent()

FILE: WinsockPacketEditor/Injector_Form.cs
  class Injector_Form (line 11) | public partial class Injector_Form : Form
    method Injector_Form (line 21) | public Injector_Form()
    method InitToolTip (line 30) | private void InitToolTip()
    method Injector_Form_FormClosing (line 45) | private void Injector_Form_FormClosing(object sender, FormClosingEvent...
    method InitLastInjection (line 54) | private void InitLastInjection()
    method bSelectProcess_Click (line 81) | private void bSelectProcess_Click(object sender, EventArgs e)
    method ShowSelectProcess (line 96) | private void ShowSelectProcess()
    method bInject_Click (line 121) | private void bInject_Click(object sender, EventArgs e)
    method ShowLog (line 172) | private void ShowLog(string ShowInfo)
    method rtbLog_LinkClicked (line 191) | private void rtbLog_LinkClicked(object sender, LinkClickedEventArgs e)

FILE: WinsockPacketEditor/Lib/Program.cs
  class Program (line 10) | static class Program
    method Main (line 18) | [STAThread]

FILE: WinsockPacketEditor/ProcessList_Form.Designer.cs
  class ProcessList_Form (line 4) | partial class ProcessList_Form
    method Dispose (line 15) | protected override void Dispose(bool disposing)
    method InitializeComponent (line 30) | private void InitializeComponent()

FILE: WinsockPacketEditor/ProcessList_Form.cs
  class ProcessList_Form (line 12) | public partial class ProcessList_Form : Form
    method ProcessList_Form (line 16) | public ProcessList_Form()
    method InitDGV (line 22) | private void InitDGV()
    method ProcessList_Form_Load (line 28) | private async void ProcessList_Form_Load(object sender, EventArgs e)
    method ShowProcessList (line 44) | private async Task ShowProcessList()
    method bSelected_Click (line 76) | private void bSelected_Click(object sender, EventArgs e)
    method bRefresh_Click (line 102) | private async void bRefresh_Click(object sender, EventArgs e)
    method bCreate_Click (line 123) | private void bCreate_Click(object sender, EventArgs e)
    method dgvProcessList_DataBindingComplete (line 150) | private void dgvProcessList_DataBindingComplete(object sender, DataGri...
    method dgvProcessList_CellMouseMove (line 155) | private void dgvProcessList_CellMouseMove(object sender, DataGridViewC...
    method dgvProcessList_CellMouseLeave (line 173) | private void dgvProcessList_CellMouseLeave(object sender, DataGridView...
    method txtProcessSearch_TextChanged (line 195) | private void txtProcessSearch_TextChanged(object sender, EventArgs e)

FILE: WinsockPacketEditor/Properties/Resources.Designer.cs
  class Resources (line 22) | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resource...
    method Resources (line 31) | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Mic...

FILE: WinsockPacketEditor/SocketProxy_Form.Designer.cs
  class SocketProxy_Form (line 3) | partial class SocketProxy_Form
    method Dispose (line 14) | protected override void Dispose(bool disposing)
    method InitializeComponent (line 29) | private void InitializeComponent()

FILE: WinsockPacketEditor/SocketProxy_Form.cs
  class SocketProxy_Form (line 16) | public partial class SocketProxy_Form : Form
    method SocketProxy_Form (line 24) | public SocketProxy_Form(Socket_Form socketForm)
    method SocketProxy_Form_Load (line 45) | private void SocketProxy_Form_Load(object sender, EventArgs e)
    method SocketProxy_Form_FormClosing (line 58) | private void SocketProxy_Form_FormClosing(object sender, FormClosingEv...
    method ExitMainForm (line 63) | private void ExitMainForm()
    method InitSocketDGV (line 95) | private void InitSocketDGV()
    method InitForm (line 121) | private void InitForm()
    method InitProxyIPAppoint (line 140) | private void InitProxyIPAppoint()
    method cbProxyIP_Auto_CheckedChanged (line 168) | private void cbProxyIP_Auto_CheckedChanged(object sender, EventArgs e)
    method ProxyIP_Appoint_Changed (line 173) | private void ProxyIP_Appoint_Changed()
    method cbEnable_Auth_CheckedChanged (line 182) | private void cbEnable_Auth_CheckedChanged(object sender, EventArgs e)
    method EnableAuth_Changed (line 187) | private void EnableAuth_Changed()
    method bAccount_Click (line 195) | private void bAccount_Click(object sender, EventArgs e)
    method bAuthInfo_Click (line 200) | private void bAuthInfo_Click(object sender, EventArgs e)
    method LoadConfigs_Parameter (line 209) | private void LoadConfigs_Parameter()
    method SaveConfigs_Parameter (line 253) | private void SaveConfigs_Parameter()
    method cbEnable_SystemProxy_CheckedChanged (line 293) | private void cbEnable_SystemProxy_CheckedChanged(object sender, EventA...
    method SystemProxy_CheckedChanged (line 298) | private void SystemProxy_CheckedChanged()
    method cbLogList_AutoClear_CheckedChanged (line 321) | private void cbLogList_AutoClear_CheckedChanged(object sender, EventAr...
    method LogList_AutoClear_Changed (line 326) | private void LogList_AutoClear_Changed()
    method cbEnable_MapLocal_CheckedChanged (line 335) | private void cbEnable_MapLocal_CheckedChanged(object sender, EventArgs e)
    method cbEnable_MapRemote_CheckedChanged (line 340) | private void cbEnable_MapRemote_CheckedChanged(object sender, EventArg...
    method Enable_MapLocal_Changed (line 345) | private void Enable_MapLocal_Changed()
    method Enable_MapRemote_Changed (line 351) | private void Enable_MapRemote_Changed()
    method bProxyMapping_Local_Click (line 357) | private void bProxyMapping_Local_Click(object sender, EventArgs e)
    method bProxyMapping_Remote_Click (line 362) | private void bProxyMapping_Remote_Click(object sender, EventArgs e)
    method cbEnable_ExternalProxy_CheckedChanged (line 371) | private void cbEnable_ExternalProxy_CheckedChanged(object sender, Even...
    method Enable_ExternalProxyChanged (line 376) | private void Enable_ExternalProxyChanged()
    method cbExternalProxy_AppointPort_CheckedChanged (line 387) | private void cbExternalProxy_AppointPort_CheckedChanged(object sender,...
    method ExternalProxy_AppointPort_Changed (line 392) | private void ExternalProxy_AppointPort_Changed()
    method cbExternalProxy_EnableAuth_CheckedChanged (line 397) | private void cbExternalProxy_EnableAuth_CheckedChanged(object sender, ...
    method ExternalProxy_EnableAuth_Changed (line 402) | private void ExternalProxy_EnableAuth_Changed()
    method bExternalProxy_Detection_Click (line 407) | private async void bExternalProxy_Detection_Click(object sender, Event...
    method cbSpeedMode_CheckedChanged (line 429) | private void cbSpeedMode_CheckedChanged(object sender, EventArgs e)
    method bStart_Click (line 438) | private void bStart_Click(object sender, EventArgs e)
    method UpdateUIState (line 463) | private void UpdateUIState(bool starting)
    method InitializeServerSocket (line 474) | private void InitializeServerSocket()
    method InitProxyStart (line 502) | private void InitProxyStart()
    method AcceptClients (line 546) | private void AcceptClients()
    method AcceptCompleted (line 572) | private void AcceptCompleted(object sender, SocketAsyncEventArgs e)
    method CheckProxySet (line 637) | private bool CheckProxySet()
    method bStop_Click (line 721) | private void bStop_Click(object sender, EventArgs e)
    method tSocketProxy_Tick (line 757) | private void tSocketProxy_Tick(object sender, EventArgs e)
    method tShowProxyState_Tick (line 797) | private void tShowProxyState_Tick(object sender, EventArgs e)
    method tUpdateProxyState_Tick (line 803) | private async void tUpdateProxyState_Tick(object sender, EventArgs e)
    method bCleanUp_Click (line 815) | private void bCleanUp_Click(object sender, EventArgs e)
    method CleanUp_ShowProxyInfo (line 832) | private void CleanUp_ShowProxyInfo()
    method CleanUp_ProxyData (line 841) | private void CleanUp_ProxyData()
    method CleanUp_ProxyInfo (line 848) | private void CleanUp_ProxyInfo()
    method CleanUp_LogList (line 855) | private void CleanUp_LogList()
    method CleanUp_HexBox (line 862) | private void CleanUp_HexBox()
    method AutoCleanUp_LogList (line 884) | private void AutoCleanUp_LogList()
    method Event_RecProxyData (line 911) | private async void Event_RecProxyData(Socket_ProxyData spd)
    method Event_RecProxyInfo (line 999) | private async void Event_RecProxyInfo(Socket_ProxyTCP spt)
    method UpdateClientLinks (line 1061) | private async Task UpdateClientLinks()
    method UpdateAccountLinksAndDevices (line 1149) | private async Task UpdateAccountLinksAndDevices()
    method dgvLogList_CellFormatting (line 1173) | private void dgvLogList_CellFormatting(object sender, DataGridViewCell...
    method tvSocketProxy_AfterSelect (line 1193) | private void tvSocketProxy_AfterSelect(object sender, TreeViewEventArg...
    method ShowProxyInfo (line 1218) | private void ShowProxyInfo()
    method ShowProxyChart (line 1248) | private void ShowProxyChart()
    method cmsHexBox_ItemClicked (line 1298) | private void cmsHexBox_ItemClicked(object sender, ToolStripItemClicked...

FILE: WinsockPacketEditor/SystemMode_Form.Designer.cs
  class SystemMode_Form (line 3) | partial class SystemMode_Form
    method Dispose (line 14) | protected override void Dispose(bool disposing)
    method InitializeComponent (line 29) | private void InitializeComponent()

FILE: WinsockPacketEditor/SystemMode_Form.cs
  class SystemMode_Form (line 10) | public partial class SystemMode_Form : Form
    method SystemMode_Form (line 18) | public SystemMode_Form()
    method SystemMode_Form_Load (line 24) | private async void SystemMode_Form_Load(object sender, EventArgs e)
    method SystemMode_Form_FormClosing (line 58) | private void SystemMode_Form_FormClosing(object sender, FormClosingEve...
    method InitRemote (line 63) | private void InitRemote()
    method bProxy_Start_Click (line 77) | private void bProxy_Start_Click(object sender, EventArgs e)
    method bProcess_Start_Click (line 83) | private void bProcess_Start_Click(object sender, EventArgs e)
    method ExitMainForm (line 89) | private void ExitMainForm()
    method tsmiChinese_Click (line 99) | private void tsmiChinese_Click(object sender, EventArgs e)
    method tsmiEnglish_Click (line 105) | private void tsmiEnglish_Click(object sender, EventArgs e)
    method LanguageChange (line 111) | private void LanguageChange()
    method tsmiAbout_Click (line 134) | private void tsmiAbout_Click(object sender, EventArgs e)
    method tsmiImport_Click (line 139) | private void tsmiImport_Click(object sender, EventArgs e)
    method cbIsRemote_Click (line 150) | private void cbIsRemote_Click(object sender, EventArgs e)
    method IsRemote_Changed (line 165) | private void IsRemote_Changed()
    method GetRemoteURL (line 192) | private string GetRemoteURL()
    method lRemoteURL_LinkClicked (line 212) | private void lRemoteURL_LinkClicked(object sender, LinkLabelLinkClicke...
Copy disabled (too large) Download .json
Condensed preview — 165 files, each showing path, character count, and a content snippet. Download the .json file for the full structured content (33,394K chars).
[
  {
    "path": ".gitattributes",
    "chars": 2518,
    "preview": "###############################################################################\n# Set default behavior to automatically "
  },
  {
    "path": ".gitignore",
    "chars": 6265,
    "preview": "## Ignore Visual Studio temporary files, build results, and\n## files generated by popular Visual Studio add-ons.\n##\n## G"
  },
  {
    "path": "LICENSE",
    "chars": 1062,
    "preview": "MIT License\n\nCopyright (c) 2024 x-nas\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof t"
  },
  {
    "path": "README.md",
    "chars": 7102,
    "preview": "<div align=\"center\">\n<p><img src=\"https://www.wpe64.com/web_images/wpe.png\" height=\"150\"></p>\n\n# Winsock Packet Editor(W"
  },
  {
    "path": "WPELibrary/Lib/IconExtractor/IconExtractor.cs",
    "chars": 8211,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.ComponentModel;\nusing System.Drawing;\nusing System.IO;\nusi"
  },
  {
    "path": "WPELibrary/Lib/IconExtractor/IconUtil.cs",
    "chars": 4829,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Drawing;\nusing System.IO;\nusing System.Reflection.Emit;\nus"
  },
  {
    "path": "WPELibrary/Lib/MultiLanguage.cs",
    "chars": 22790,
    "preview": "using System;\nusing System.Reflection;\nusing System.Threading;\n\nnamespace WPELibrary.Lib\n{    \n    public static class "
  },
  {
    "path": "WPELibrary/Lib/NativeMethods/Kernel32.cs",
    "chars": 2855,
    "preview": "using System;\nusing System.Runtime.InteropServices;\nusing System.Security;\nusing System.Text;\n\nnamespace WPELibrary.Lib"
  },
  {
    "path": "WPELibrary/Lib/NativeMethods/Mswsock.cs",
    "chars": 1315,
    "preview": "using System;\nusing System.Net.Sockets;\nusing System.Runtime.InteropServices;\n\nnamespace WPELibrary.Lib.NativeMethods\n{"
  },
  {
    "path": "WPELibrary/Lib/NativeMethods/User32.cs",
    "chars": 868,
    "preview": "using System;\nusing System.Runtime.InteropServices;\nusing System.Text;\n\nnamespace WPELibrary.Lib.NativeMethods\n{\n    pu"
  },
  {
    "path": "WPELibrary/Lib/NativeMethods/WS2_32.cs",
    "chars": 12415,
    "preview": "using System;\nusing System.Net.Sockets;\nusing System.Runtime.InteropServices;\n\nnamespace WPELibrary.Lib.NativeMethods\n{"
  },
  {
    "path": "WPELibrary/Lib/NativeMethods/WSock32.cs",
    "chars": 5125,
    "preview": "using System.Net.Sockets;\nusing System.Runtime.InteropServices;\nusing System;\n\nnamespace WPELibrary.Lib.NativeMethods\n{"
  },
  {
    "path": "WPELibrary/Lib/Proxy_AccountInfo.cs",
    "chars": 4445,
    "preview": "using System;\n\nnamespace WPELibrary.Lib\n{\n    public class Proxy_AccountInfo\n    {\n        #region//序号\n\n        protect"
  },
  {
    "path": "WPELibrary/Lib/Proxy_AuthInfo.cs",
    "chars": 1024,
    "preview": "using System;\n\nnamespace WPELibrary.Lib\n{\n    public class Proxy_AuthInfo\n    {\n        #region//代理账号序号\n\n        public"
  },
  {
    "path": "WPELibrary/Lib/Proxy_MapLocal.cs",
    "chars": 879,
    "preview": "\nnamespace WPELibrary.Lib\n{\n    public class Proxy_MapLocal\n    {\n        //是否启用\n        public bool IsEnable { get; se"
  },
  {
    "path": "WPELibrary/Lib/Proxy_MapRemote.cs",
    "chars": 1604,
    "preview": "\nnamespace WPELibrary.Lib\n{\n    public class Proxy_MapRemote\n    {\n        //是否启用\n        public bool IsEnable { get; s"
  },
  {
    "path": "WPELibrary/Lib/Socket_BitInfo.cs",
    "chars": 1723,
    "preview": "using System;\nusing System.Collections;\n\nnamespace WPELibrary.Lib\n{    \n    public class Socket_BitInfo\n    {\n        p"
  },
  {
    "path": "WPELibrary/Lib/Socket_Cache.cs",
    "chars": 541999,
    "preview": "using System;\nusing System.Collections.Concurrent;\nusing System.Collections.Generic;\nusing System.ComponentModel;\nusing"
  },
  {
    "path": "WPELibrary/Lib/Socket_FilterInfo.cs",
    "chars": 9040,
    "preview": "using System;\n\nnamespace WPELibrary.Lib\n{\n    public class Socket_FilterInfo\n    {\n        #region//是否启用\n\n        prote"
  },
  {
    "path": "WPELibrary/Lib/Socket_LogInfo.cs",
    "chars": 1014,
    "preview": "using System;\n\nnamespace WPELibrary.Lib\n{\n    public class Socket_LogInfo\n    {\n        #region//时间戳\n\n        protected"
  },
  {
    "path": "WPELibrary/Lib/Socket_Operation.cs",
    "chars": 146362,
    "preview": "using EasyHook;\nusing Microsoft.Owin.Hosting;\nusing Microsoft.Win32;\nusing Newtonsoft.Json.Linq;\nusing System;\nusing Sy"
  },
  {
    "path": "WPELibrary/Lib/Socket_PacketInfo.cs",
    "chars": 3107,
    "preview": "using System;\n\nnamespace WPELibrary.Lib\n{\n    public class Socket_PacketInfo\n    {\n        #region//时间戳\n\n        protec"
  },
  {
    "path": "WPELibrary/Lib/Socket_ProxyData.cs",
    "chars": 1429,
    "preview": "\nnamespace WPELibrary.Lib\n{\n    public class Socket_ProxyData\n    {\n        #region//域名\n\n        protected string domai"
  },
  {
    "path": "WPELibrary/Lib/Socket_ProxyTCP.cs",
    "chars": 6318,
    "preview": "using System;\nusing System.Buffers;\nusing System.Net;\nusing System.Net.Sockets;\n\nnamespace WPELibrary.Lib\n{\n    public "
  },
  {
    "path": "WPELibrary/Lib/Socket_ProxyUDP.cs",
    "chars": 901,
    "preview": "using System;\nusing System.Net.Sockets;\nusing System.Net;\n\nnamespace WPELibrary.Lib\n{\n    public class Socket_ProxyUDP\n"
  },
  {
    "path": "WPELibrary/Lib/Socket_Robot.cs",
    "chars": 24718,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.ComponentModel;\nusing System.Data;\nusing System.Reflection"
  },
  {
    "path": "WPELibrary/Lib/Socket_RobotInfo.cs",
    "chars": 1246,
    "preview": "using System;\nusing System.Data;\n\nnamespace WPELibrary.Lib\n{\n    public class Socket_RobotInfo\n    {\n        #region//是"
  },
  {
    "path": "WPELibrary/Lib/Socket_Send.cs",
    "chars": 6849,
    "preview": "using System;\nusing System.ComponentModel;\nusing System.Data;\nusing System.Reflection;\nusing System.Threading;\n\nnamespa"
  },
  {
    "path": "WPELibrary/Lib/Socket_SendInfo.cs",
    "chars": 2456,
    "preview": "using System;\nusing System.ComponentModel;\n\nnamespace WPELibrary.Lib\n{\n    public class Socket_SendInfo\n    {\n        #"
  },
  {
    "path": "WPELibrary/Lib/UserControl/HotkeyTextBox.cs",
    "chars": 8940,
    "preview": "using System;\nusing System.Drawing;\nusing System.Reflection;\nusing System.Windows.Forms;\nusing WPELibrary.Lib.NativeMet"
  },
  {
    "path": "WPELibrary/Lib/WebAPI/CCProxy_Controller.cs",
    "chars": 5319,
    "preview": "using System;\nusing System.Reflection;\nusing System.Text;\n\nnamespace WPELibrary.Lib.WebAPI\n{\n    public static class CC"
  },
  {
    "path": "WPELibrary/Lib/WebAPI/ProxyAccount_Controller.cs",
    "chars": 4501,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Reflection;\nusing System.Web.Http;\n\nnamespace WPELibrary.L"
  },
  {
    "path": "WPELibrary/Lib/WebAPI/ProxyInfo_Controller.cs",
    "chars": 1994,
    "preview": "using System.Collections.Generic;\nusing System.Web.Http;\n\nnamespace WPELibrary.Lib.WebAPI\n{\n    [RoutePrefix(\"ProxyInfo"
  },
  {
    "path": "WPELibrary/Lib/WebAPI/SocketInfo_Controller.cs",
    "chars": 2624,
    "preview": "using System.Collections.Generic;\nusing System.Web.Http;\n\nnamespace WPELibrary.Lib.WebAPI\n{\n    [RoutePrefix(\"SocketInf"
  },
  {
    "path": "WPELibrary/Lib/WebAPI/Socket_Web.cs",
    "chars": 10735,
    "preview": "using Owin;\nusing System.Web.Http;\nusing Microsoft.Owin.StaticFiles;\nusing Microsoft.Owin.FileSystems;\nusing System.Net"
  },
  {
    "path": "WPELibrary/Lib/WebAPI/SystemInfo_Controller.cs",
    "chars": 898,
    "preview": "using System.Web.Http;\n\nnamespace WPELibrary.Lib.WebAPI\n{\n    [RoutePrefix(\"SystemInfo\")]\n\n    public class SystemInfo_"
  },
  {
    "path": "WPELibrary/Lib/WinSockHook.cs",
    "chars": 48142,
    "preview": "using EasyHook;\nusing System;\nusing System.Net.Sockets;\nusing System.Reflection;\nusing System.Runtime.InteropServices;\n"
  },
  {
    "path": "WPELibrary/Properties/AssemblyInfo.cs",
    "chars": 937,
    "preview": "using System.Reflection;\nusing System.Runtime.CompilerServices;\nusing System.Runtime.InteropServices;\n\n// 有关程序集的一般信息由以下"
  },
  {
    "path": "WPELibrary/Properties/Resources.Designer.cs",
    "chars": 22413,
    "preview": "//------------------------------------------------------------------------------\n// <auto-generated>\n//     此代码由工具生成。\n/"
  },
  {
    "path": "WPELibrary/Properties/Resources.resx",
    "chars": 19954,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The prim"
  },
  {
    "path": "WPELibrary/Properties/app.manifest",
    "chars": 3058,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<assembly xmlns=\"urn:schemas-microsoft-com:asm.v1\" manifestVersion=\"1.0\" xmlns:a"
  },
  {
    "path": "WPELibrary/Proxy_AccountAuthForm.Designer.cs",
    "chars": 21062,
    "preview": "namespace WPELibrary\n{\n    partial class Proxy_AccountAuthForm\n    {\n        /// <summary>\n        /// Required designe"
  },
  {
    "path": "WPELibrary/Proxy_AccountAuthForm.cs",
    "chars": 6115,
    "preview": "using System;\nusing System.Linq;\nusing System.Reflection;\nusing System.Windows.Forms;\nusing WPELibrary.Lib;\n\nnamespace "
  },
  {
    "path": "WPELibrary/Proxy_AccountAuthForm.en-US.resx",
    "chars": 559866,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The prim"
  },
  {
    "path": "WPELibrary/Proxy_AccountAuthForm.resx",
    "chars": 579623,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The prim"
  },
  {
    "path": "WPELibrary/Proxy_AccountDevicesForm.Designer.cs",
    "chars": 6455,
    "preview": "namespace WPELibrary\n{\n    partial class Proxy_AccountDevicesForm\n    {\n        /// <summary>\n        /// Required desi"
  },
  {
    "path": "WPELibrary/Proxy_AccountDevicesForm.cs",
    "chars": 2052,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Reflection;\nusing System.Windows.Forms;\nusing WPELibrary.L"
  },
  {
    "path": "WPELibrary/Proxy_AccountDevicesForm.en-US.resx",
    "chars": 555678,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The prim"
  },
  {
    "path": "WPELibrary/Proxy_AccountDevicesForm.resx",
    "chars": 569467,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The prim"
  },
  {
    "path": "WPELibrary/Proxy_AccountForm.Designer.cs",
    "chars": 10425,
    "preview": "namespace WPELibrary\n{\n    partial class Proxy_AccountForm\n    {\n        /// <summary>\n        /// Required designer va"
  },
  {
    "path": "WPELibrary/Proxy_AccountForm.cs",
    "chars": 7484,
    "preview": "using System;\nusing System.Reflection;\nusing System.Windows.Forms;\nusing WPELibrary.Lib;\n\nnamespace WPELibrary\n{\n    pu"
  },
  {
    "path": "WPELibrary/Proxy_AccountForm.en-US.resx",
    "chars": 557628,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The prim"
  },
  {
    "path": "WPELibrary/Proxy_AccountForm.resx",
    "chars": 579477,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The prim"
  },
  {
    "path": "WPELibrary/Proxy_AccountLinksForm.Designer.cs",
    "chars": 6261,
    "preview": "namespace WPELibrary\n{\n    partial class Proxy_AccountLinksForm\n    {\n        /// <summary>\n        /// Required design"
  },
  {
    "path": "WPELibrary/Proxy_AccountLinksForm.cs",
    "chars": 2006,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Reflection;\nusing System.Windows.Forms;\nusing WPELibrary.L"
  },
  {
    "path": "WPELibrary/Proxy_AccountLinksForm.en-US.resx",
    "chars": 555310,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The prim"
  },
  {
    "path": "WPELibrary/Proxy_AccountLinksForm.resx",
    "chars": 569383,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The prim"
  },
  {
    "path": "WPELibrary/Proxy_AccountListForm.Designer.cs",
    "chars": 43770,
    "preview": "namespace WPELibrary\n{\n    partial class Proxy_AccountListForm\n    {\n        /// <summary>\n        /// Required designe"
  },
  {
    "path": "WPELibrary/Proxy_AccountListForm.cs",
    "chars": 21842,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.ComponentModel;\nusing System.Linq;\nusing System.Reflection"
  },
  {
    "path": "WPELibrary/Proxy_AccountListForm.en-US.resx",
    "chars": 561745,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The prim"
  },
  {
    "path": "WPELibrary/Proxy_AccountListForm.resx",
    "chars": 626011,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The prim"
  },
  {
    "path": "WPELibrary/Proxy_AccountLoginForm.Designer.cs",
    "chars": 8368,
    "preview": "namespace WPELibrary\n{\n    partial class Proxy_AccountLoginForm\n    {\n        /// <summary>\n        /// Required design"
  },
  {
    "path": "WPELibrary/Proxy_AccountLoginForm.cs",
    "chars": 2101,
    "preview": "using System;\nusing System.Reflection;\nusing System.Windows.Forms;\nusing WPELibrary.Lib;\n\nnamespace WPELibrary\n{\n    pu"
  },
  {
    "path": "WPELibrary/Proxy_AccountLoginForm.en-US.resx",
    "chars": 555788,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The prim"
  },
  {
    "path": "WPELibrary/Proxy_AccountLoginForm.resx",
    "chars": 561561,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The prim"
  },
  {
    "path": "WPELibrary/Proxy_AccountTimeForm.Designer.cs",
    "chars": 7014,
    "preview": "namespace WPELibrary\n{\n    partial class Proxy_AccountTimeForm\n    {\n        /// <summary>\n        /// Required designe"
  },
  {
    "path": "WPELibrary/Proxy_AccountTimeForm.cs",
    "chars": 1921,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Reflection;\nusing System.Windows.Forms;\nusing WPELibrary.L"
  },
  {
    "path": "WPELibrary/Proxy_AccountTimeForm.en-US.resx",
    "chars": 556145,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The prim"
  },
  {
    "path": "WPELibrary/Proxy_AccountTimeForm.resx",
    "chars": 571422,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The prim"
  },
  {
    "path": "WPELibrary/Proxy_MapLocalForm.Designer.cs",
    "chars": 9994,
    "preview": "namespace WPELibrary\n{\n    partial class Proxy_MapLocalForm\n    {\n        /// <summary>\n        /// Required designer v"
  },
  {
    "path": "WPELibrary/Proxy_MapLocalForm.cs",
    "chars": 3637,
    "preview": "using System;\nusing System.Reflection;\nusing System.Windows.Forms;\nusing WPELibrary.Lib;\n\nnamespace WPELibrary\n{\n    pu"
  },
  {
    "path": "WPELibrary/Proxy_MapLocalForm.en-US.resx",
    "chars": 557284,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The prim"
  },
  {
    "path": "WPELibrary/Proxy_MapLocalForm.resx",
    "chars": 580326,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The prim"
  },
  {
    "path": "WPELibrary/Proxy_MapLocalListForm.Designer.cs",
    "chars": 17453,
    "preview": "namespace WPELibrary\n{\n    partial class Proxy_MapLocalListForm\n    {\n        /// <summary>\n        /// Required design"
  },
  {
    "path": "WPELibrary/Proxy_MapLocalListForm.cs",
    "chars": 8859,
    "preview": "using System;\nusing System.Reflection;\nusing System.Windows.Forms;\nusing WPELibrary.Lib;\n\nnamespace WPELibrary\n{\n    pu"
  },
  {
    "path": "WPELibrary/Proxy_MapLocalListForm.en-US.resx",
    "chars": 558289,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The prim"
  },
  {
    "path": "WPELibrary/Proxy_MapLocalListForm.resx",
    "chars": 577828,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The prim"
  },
  {
    "path": "WPELibrary/Proxy_MapRemoteForm.Designer.cs",
    "chars": 13339,
    "preview": "namespace WPELibrary\n{\n    partial class Proxy_MapRemoteForm\n    {\n        /// <summary>\n        /// Required designer "
  },
  {
    "path": "WPELibrary/Proxy_MapRemoteForm.cs",
    "chars": 4774,
    "preview": "using System;\nusing System.Reflection;\nusing System.Windows.Forms;\nusing WPELibrary.Lib;\n\nnamespace WPELibrary\n{\n    pu"
  },
  {
    "path": "WPELibrary/Proxy_MapRemoteForm.en-US.resx",
    "chars": 558390,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The prim"
  },
  {
    "path": "WPELibrary/Proxy_MapRemoteForm.resx",
    "chars": 590322,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The prim"
  },
  {
    "path": "WPELibrary/Proxy_MapRemoteListForm.Designer.cs",
    "chars": 21966,
    "preview": "namespace WPELibrary\n{\n    partial class Proxy_MapRemoteListForm\n    {\n        /// <summary>\n        /// Required desig"
  },
  {
    "path": "WPELibrary/Proxy_MapRemoteListForm.cs",
    "chars": 9724,
    "preview": "using System;\nusing System.Reflection;\nusing System.Windows.Forms;\nusing WPELibrary.Lib;\n\nnamespace WPELibrary\n{\n    pu"
  },
  {
    "path": "WPELibrary/Proxy_MapRemoteListForm.en-US.resx",
    "chars": 557948,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The prim"
  },
  {
    "path": "WPELibrary/Proxy_MapRemoteListForm.resx",
    "chars": 581553,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The prim"
  },
  {
    "path": "WPELibrary/Socket_CompareForm.Designer.cs",
    "chars": 8133,
    "preview": "namespace WPELibrary\n{\n    partial class Socket_CompareForm\n    {\n        /// <summary>\n        /// Required designer v"
  },
  {
    "path": "WPELibrary/Socket_CompareForm.cs",
    "chars": 2042,
    "preview": "using Be.Windows.Forms;\nusing System;\nusing System.Reflection;\nusing System.Windows.Forms;\nusing WPELibrary.Lib;\n\nnames"
  },
  {
    "path": "WPELibrary/Socket_CompareForm.en-US.resx",
    "chars": 555209,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The prim"
  },
  {
    "path": "WPELibrary/Socket_CompareForm.resx",
    "chars": 568557,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The prim"
  },
  {
    "path": "WPELibrary/Socket_FilterForm.Designer.cs",
    "chars": 71483,
    "preview": "\nnamespace WPELibrary\n{\n    partial class Socket_FilterForm\n    {\n        /// <summary>\n        /// Required designer v"
  },
  {
    "path": "WPELibrary/Socket_FilterForm.cs",
    "chars": 59706,
    "preview": "using System;\nusing System.Drawing;\nusing System.Windows.Forms;\nusing WPELibrary.Lib;\nusing System.Reflection;\nusing Sy"
  },
  {
    "path": "WPELibrary/Socket_FilterForm.en-US.resx",
    "chars": 572195,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The prim"
  },
  {
    "path": "WPELibrary/Socket_FilterForm.resx",
    "chars": 676417,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The prim"
  },
  {
    "path": "WPELibrary/Socket_FindForm.Designer.cs",
    "chars": 8625,
    "preview": "namespace WPELibrary\n{\n    partial class Socket_FindForm\n    {\n        /// <summary>\n        /// Required designer vari"
  },
  {
    "path": "WPELibrary/Socket_FindForm.cs",
    "chars": 5514,
    "preview": "using Be.Windows.Forms;\nusing System;\nusing System.Reflection;\nusing System.Windows.Forms;\nusing WPELibrary.Lib;\n\nnames"
  },
  {
    "path": "WPELibrary/Socket_FindForm.en-US.resx",
    "chars": 555914,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The prim"
  },
  {
    "path": "WPELibrary/Socket_FindForm.resx",
    "chars": 574902,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The prim"
  },
  {
    "path": "WPELibrary/Socket_Form.Designer.cs",
    "chars": 250730,
    "preview": "\nnamespace WPELibrary\n{\n    partial class Socket_Form\n    {\n        /// <summary>\n        /// Required designer variabl"
  },
  {
    "path": "WPELibrary/Socket_Form.cs",
    "chars": 118372,
    "preview": "using Be.Windows.Forms;\nusing EasyHook;\nusing System;\nusing System.Collections.Generic;\nusing System.ComponentModel;\nus"
  },
  {
    "path": "WPELibrary/Socket_Form.en-US.resx",
    "chars": 1178409,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The prim"
  },
  {
    "path": "WPELibrary/Socket_Form.resx",
    "chars": 1567062,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The prim"
  },
  {
    "path": "WPELibrary/Socket_PasswordFrom.Designer.cs",
    "chars": 4917,
    "preview": "namespace WPELibrary\n{\n    partial class Socket_PasswordFrom\n    {\n        /// <summary>\n        /// Required designer "
  },
  {
    "path": "WPELibrary/Socket_PasswordFrom.cs",
    "chars": 5529,
    "preview": "using System;\nusing System.Reflection;\nusing System.Windows.Forms;\nusing WPELibrary.Lib;\n\nnamespace WPELibrary\n{\n    pu"
  },
  {
    "path": "WPELibrary/Socket_PasswordFrom.en-US.resx",
    "chars": 555091,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The prim"
  },
  {
    "path": "WPELibrary/Socket_PasswordFrom.resx",
    "chars": 564782,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The prim"
  },
  {
    "path": "WPELibrary/Socket_RobotForm.Designer.cs",
    "chars": 65363,
    "preview": "namespace WPELibrary\n{\n    partial class Socket_RobotForm\n    {\n        /// <summary>\n        /// Required designer var"
  },
  {
    "path": "WPELibrary/Socket_RobotForm.cs",
    "chars": 31993,
    "preview": "using System;\nusing System.Data;\nusing System.Drawing;\nusing System.Reflection;\nusing System.Windows.Forms;\nusing WPELi"
  },
  {
    "path": "WPELibrary/Socket_RobotForm.en-US.resx",
    "chars": 566679,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The prim"
  },
  {
    "path": "WPELibrary/Socket_RobotForm.resx",
    "chars": 698781,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The prim"
  },
  {
    "path": "WPELibrary/Socket_SendForm.Designer.cs",
    "chars": 56446,
    "preview": "\nnamespace WPELibrary\n{\n    partial class Socket_SendForm\n    {\n        /// <summary>\n        /// Required designer var"
  },
  {
    "path": "WPELibrary/Socket_SendForm.cs",
    "chars": 30076,
    "preview": "using Be.Windows.Forms;\nusing System;\nusing System.ComponentModel;\nusing System.Reflection;\nusing System.Threading;\nusi"
  },
  {
    "path": "WPELibrary/Socket_SendForm.en-US.resx",
    "chars": 566303,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The prim"
  },
  {
    "path": "WPELibrary/Socket_SendForm.resx",
    "chars": 684678,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The prim"
  },
  {
    "path": "WPELibrary/Socket_SendListForm.Designer.cs",
    "chars": 37468,
    "preview": "\nnamespace WPELibrary\n{\n    partial class Socket_SendListForm\n    {\n        /// <summary>\n        /// Required designer"
  },
  {
    "path": "WPELibrary/Socket_SendListForm.cs",
    "chars": 15133,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.ComponentModel;\nusing System.Linq;\nusing System.Reflection"
  },
  {
    "path": "WPELibrary/Socket_SendListForm.en-US.resx",
    "chars": 561668,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The prim"
  },
  {
    "path": "WPELibrary/Socket_SendListForm.resx",
    "chars": 614170,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The prim"
  },
  {
    "path": "WPELibrary/TextComparison/TextCompareForm.Designer.cs",
    "chars": 6660,
    "preview": "namespace WPELibrary.TextComparison\n{\n    partial class TextCompareForm\n    {\n        /// <summary>\n        /// Require"
  },
  {
    "path": "WPELibrary/TextComparison/TextCompareForm.cs",
    "chars": 2609,
    "preview": "using System;\nusing System.Windows.Forms;\nusing WPELibrary.Lib;\n\nnamespace WPELibrary.TextComparison\n{\n    public parti"
  },
  {
    "path": "WPELibrary/TextComparison/TextCompareForm.en-US.resx",
    "chars": 555468,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The prim"
  },
  {
    "path": "WPELibrary/TextComparison/TextCompareForm.resx",
    "chars": 571730,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The prim"
  },
  {
    "path": "WPELibrary/TextComparison/TextDuplicateForm.Designer.cs",
    "chars": 7012,
    "preview": "namespace WPELibrary.TextComparison\n{\n    partial class TextDuplicateForm\n    {\n        /// <summary>\n        /// Requi"
  },
  {
    "path": "WPELibrary/TextComparison/TextDuplicateForm.cs",
    "chars": 6199,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Reflection;\nusing System.Text;\nusing System.Windows.Forms;"
  },
  {
    "path": "WPELibrary/TextComparison/TextDuplicateForm.en-US.resx",
    "chars": 556054,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The prim"
  },
  {
    "path": "WPELibrary/TextComparison/TextDuplicateForm.resx",
    "chars": 572739,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The prim"
  },
  {
    "path": "WPELibrary/WPELibrary.csproj",
    "chars": 28088,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"15.0\" xmlns=\"http://schemas.microsoft.com/developer/msbui"
  },
  {
    "path": "WPELibrary/app.config",
    "chars": 2747,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<configuration>\n  <configSections>\n    <!-- For more information on Entity Frame"
  },
  {
    "path": "WPELibrary/packages.config",
    "chars": 2235,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<packages>\n  <package id=\"Be.Windows.Forms.HexBox\" version=\"1.6.1\" targetFramewo"
  },
  {
    "path": "WinSockPacketEditor.sln",
    "chars": 1613,
    "preview": "\nMicrosoft Visual Studio Solution File, Format Version 12.00\n# Visual Studio Version 17\nVisualStudioVersion = 17.9.3490"
  },
  {
    "path": "WinsockPacketEditor/Injector_Form.Designer.cs",
    "chars": 5382,
    "preview": "\nnamespace WinsockPacketEditor\n{\n    partial class Injector_Form\n    {\n        /// <summary>\n        /// 必需的设计器变量。\n    "
  },
  {
    "path": "WinsockPacketEditor/Injector_Form.cs",
    "chars": 6698,
    "preview": "using System;\nusing System.Windows.Forms;\nusing System.IO;\nusing WPELibrary.Lib;\nusing EasyHook;\nusing System.Reflectio"
  },
  {
    "path": "WinsockPacketEditor/Injector_Form.en-US.resx",
    "chars": 555209,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The prim"
  },
  {
    "path": "WinsockPacketEditor/Injector_Form.resx",
    "chars": 567056,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The prim"
  },
  {
    "path": "WinsockPacketEditor/Lib/Program.cs",
    "chars": 3248,
    "preview": "using System;\nusing System.Threading;\nusing System.Windows.Forms;\nusing WPELibrary;\nusing WPELibrary.Lib;\nusing WPELibr"
  },
  {
    "path": "WinsockPacketEditor/ProcessList_Form.Designer.cs",
    "chars": 13753,
    "preview": "\nnamespace WinsockPacketEditor\n{\n    partial class ProcessList_Form\n    {\n        /// <summary>\n        /// Required de"
  },
  {
    "path": "WinsockPacketEditor/ProcessList_Form.cs",
    "chars": 6289,
    "preview": "using System;\nusing System.Windows.Forms;\nusing System.Data;\nusing System.IO;\nusing System.Drawing;\nusing WPELibrary.Li"
  },
  {
    "path": "WinsockPacketEditor/ProcessList_Form.en-US.resx",
    "chars": 555553,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The prim"
  },
  {
    "path": "WinsockPacketEditor/ProcessList_Form.resx",
    "chars": 574504,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The prim"
  },
  {
    "path": "WinsockPacketEditor/Properties/AssemblyInfo.cs",
    "chars": 1010,
    "preview": "using System.Reflection;\nusing System.Runtime.CompilerServices;\nusing System.Runtime.InteropServices;\n\n// 有关程序集的一般信息由以下"
  },
  {
    "path": "WinsockPacketEditor/Properties/Resources.Designer.cs",
    "chars": 8245,
    "preview": "//------------------------------------------------------------------------------\n// <auto-generated>\n//     此代码由工具生成。\n/"
  },
  {
    "path": "WinsockPacketEditor/Properties/Resources.resx",
    "chars": 9926,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The prim"
  },
  {
    "path": "WinsockPacketEditor/Properties/app.manifest",
    "chars": 2818,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<assembly xmlns=\"urn:schemas-microsoft-com:asm.v1\" manifestVersion=\"1.0\" xmlns:a"
  },
  {
    "path": "WinsockPacketEditor/SocketProxy_Form.Designer.cs",
    "chars": 76470,
    "preview": "namespace WinsockPacketEditor\n{\n    partial class SocketProxy_Form\n    {\n        /// <summary>\n        /// Required des"
  },
  {
    "path": "WinsockPacketEditor/SocketProxy_Form.cs",
    "chars": 50201,
    "preview": "using Be.Windows.Forms;\nusing System;\nusing System.Collections.Concurrent;\nusing System.Linq;\nusing System.Net;\nusing S"
  },
  {
    "path": "WinsockPacketEditor/SocketProxy_Form.en-US.resx",
    "chars": 578677,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The prim"
  },
  {
    "path": "WinsockPacketEditor/SocketProxy_Form.resx",
    "chars": 713579,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The prim"
  },
  {
    "path": "WinsockPacketEditor/SystemMode_Form.Designer.cs",
    "chars": 14157,
    "preview": "namespace WinsockPacketEditor\n{\n    partial class SystemMode_Form\n    {\n        /// <summary>\n        /// Required desi"
  },
  {
    "path": "WinsockPacketEditor/SystemMode_Form.cs",
    "chars": 6675,
    "preview": "using System;\nusing System.Diagnostics;\nusing System.Net;\nusing System.Reflection;\nusing System.Windows.Forms;\nusing WP"
  },
  {
    "path": "WinsockPacketEditor/SystemMode_Form.en-US.resx",
    "chars": 560018,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The prim"
  },
  {
    "path": "WinsockPacketEditor/SystemMode_Form.resx",
    "chars": 590033,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The prim"
  },
  {
    "path": "WinsockPacketEditor/Web/CCProxy/cn_acclistadmin.htm",
    "chars": 5417,
    "preview": "<!-- header -->\n<html><head><title>CCProxy Account Manager</title>\n<meta http-equiv=\"Content-Type\" content=\"text/html; c"
  },
  {
    "path": "WinsockPacketEditor/Web/EditAccount.html",
    "chars": 6310,
    "preview": "<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n    <meta charset=\"UTF-8\">\n    <meta name=\"viewport\" content=\"width=device-widt"
  },
  {
    "path": "WinsockPacketEditor/Web/ProxyAccount.html",
    "chars": 12622,
    "preview": "<!DOCTYPE html>\n<html>\n\n<head>\n    <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">\n    <meta http-e"
  },
  {
    "path": "WinsockPacketEditor/Web/SystemLog.html",
    "chars": 10573,
    "preview": "<!DOCTYPE html>\n<html>\n\n<head>\n    <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">\n    <meta http-e"
  },
  {
    "path": "WinsockPacketEditor/Web/footer.html",
    "chars": 175,
    "preview": "<footer>\n    <div class=\"xfooter-col-3\">\n        Copyright (c) by <a href=\"https://www.wpe64.com\"><span class=\"username"
  },
  {
    "path": "WinsockPacketEditor/Web/header.html",
    "chars": 355,
    "preview": "<header>    \n    <h1>Winsock Packet Editor</h1>\n    <h2>远程管理系统</h2>\n\n    <section id=\"downloads\" class=\"clearfix\">\n    "
  },
  {
    "path": "WinsockPacketEditor/Web/index.html",
    "chars": 13698,
    "preview": "<!DOCTYPE html>\n<html>\n\n<head>\n    <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">\n    <meta http-e"
  },
  {
    "path": "WinsockPacketEditor/Web/web_images/downloads.css",
    "chars": 463,
    "preview": ".release-downloads {\n    margin-top: 10px;\n    margin-right: 0px;\n    margin-left: 0px;\n    width: 310px;\n    font-size"
  },
  {
    "path": "WinsockPacketEditor/Web/web_images/github-dark.css",
    "chars": 2721,
    "preview": "/*\n   Copyright 2014 GitHub Inc.\n\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may not use "
  },
  {
    "path": "WinsockPacketEditor/Web/web_images/print.css",
    "chars": 3277,
    "preview": "html, body, div, span, applet, object, iframe,\nh1, h2, h3, h4, h5, h6, p, blockquote, pre,\na, abbr, acronym, address, bi"
  },
  {
    "path": "WinsockPacketEditor/Web/web_images/script.js",
    "chars": 750,
    "preview": "fetch('header.html')\n    .then(response => {\n        if (!response.ok) {\n            throw new Error(`HTTP error! status"
  },
  {
    "path": "WinsockPacketEditor/Web/web_images/stylesheet.css",
    "chars": 9225,
    "preview": "html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,"
  },
  {
    "path": "WinsockPacketEditor/WinsockPacketEditor.csproj",
    "chars": 22532,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"15.0\" xmlns=\"http://schemas.microsoft.com/developer/msbui"
  },
  {
    "path": "WinsockPacketEditor/app.config",
    "chars": 2845,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<configuration>\n  <configSections>\n    <!-- For more information on Entity Frame"
  },
  {
    "path": "WinsockPacketEditor/packages.config",
    "chars": 2159,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<packages>\n  <package id=\"Be.Windows.Forms.HexBox\" version=\"1.6.1\" targetFramewo"
  }
]

About this extraction

This page contains the full source code of the x-nas/WinPacketsEdit GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 165 files (31.3 MB), approximately 8.2M tokens, and a symbol index with 1264 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!