# class1 **Repository Path**: pear2007/class1 ## Basic Information - **Project Name**: class1 - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-09-28 - **Last Updated**: 2025-09-29 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # tools 包说明文档 这是一个Go语言开发的工具包,提供了多种实用功能,包括基础数学运算、IP地址获取、端口扫描、密码验证和FTP相关功能。 ## 功能模块概览 1. **基础数学运算** 2. **IP地址信息获取** 3. **端口扫描**(支持单端口扫描和并发多IP多端口扫描) 4. **密码验证** 5. **FTP相关功能** ## 安装方法 确保您已经安装了Go环境,然后可以通过以下方式使用这个包: 1. 将这个包放在您的Go项目的合适位置 2. 在您的代码中导入这个包: ```go import "path/to/tools" ``` ## 功能详解与使用示例 ### 1. 基础数学运算 (tools.go) 提供简单的数学运算功能。 #### 函数列表: - `Add(a, b int) int` - 返回两个整数的和 - `Sub(a, b int) int` - 返回两个整数的差 - `Mul(a, b int) int` - 返回两个整数的积 #### 使用示例: ```go result1 := tools.Add(1, 2) // 结果: 3 result2 := tools.Sub(5, 3) // 结果: 2 result3 := tools.Mul(4, 6) // 结果: 24 ``` ### 2. IP地址信息获取 (ip.go) 提供获取Windows系统网络接口和IP地址信息的功能。 #### 结构体定义: ```go type IPInfo struct { InterfaceName string // 网络接口名称 IPAddress string // IP地址 IPVersion string // IP版本 (IPv4/IPv6) IsLoopback bool // 是否为回环地址 } ``` #### 函数: - `GetWindowsIPAddresses() ([]IPInfo, error)` - 获取Windows系统中所有网络接口的IP地址信息 #### 使用示例: ```go ipList, err := tools.GetWindowsIPAddresses() if err != nil { fmt.Printf("获取IP地址失败: %v\n", err) return } // 打印所有IP地址信息 for _, ipInfo := range ipList { fmt.Printf("接口: %s, IP: %s, 版本: %s, 回环: %v\n", ipInfo.InterfaceName, ipInfo.IPAddress, ipInfo.IPVersion, ipInfo.IsLoopback) } ``` ### 3. 端口扫描 (prot.go) 提供多种端口扫描功能,支持单端口扫描和并发多IP多端口扫描。 #### 函数列表: - `ScanPort(host string, port int) bool` - 扫描指定主机的指定端口是否开放 - `ScanPort80(host string) bool` - 快速扫描指定主机的80端口是否开放 - `ScanPortWithTimeout(host string, port int, timeout time.Duration) bool` - 带超时的端口扫描 - `ConcurrentScanIPs(network string, startIP, endIP int, ports []int, timeout time.Duration, maxConcurrency int) map[string][]int` - 并发扫描多个IP的多个端口 - `FastScanPort80Network(network string, startIP, endIP int) []string` - 快速扫描局域网IP的80端口 #### 使用示例: 1. 单端口扫描 ```go ip := "192.168.1.1" port := 80 if tools.ScanPort(ip, port) { fmt.Printf("端口 %d 开放\n", port) } else { fmt.Printf("端口 %d 关闭\n", port) } ``` 2. 并发扫描多个IP的多个端口 ```go network := "192.168.1" ports := []int{21, 22, 80, 443} timeout := 1 * time.Second maxConcurrency := 100 results := tools.ConcurrentScanIPs(network, 1, 254, ports, timeout, maxConcurrency) // 打印扫描结果 for ip, openPorts := range results { if len(openPorts) > 0 { fmt.Printf("%s 开放端口: %v\n", ip, openPorts) } } ``` 3. 快速扫描局域网80端口 ```go network := "192.168.1" hosts := tools.FastScanPort80Network(network, 1, 254) fmt.Println("开放80端口的主机:", hosts) ``` ### 4. 密码验证 (cai.go) 提供简单的用户名密码验证功能。 #### 函数: - `CheckPassword(userName, password string) bool` - 验证用户名和密码是否正确 #### 使用示例: ```go var userName, password string fmt.Println("请输入用户名") fmt.Scanln(&userName) fmt.Println("请输入密码") fmt.Scanln(&password) if tools.CheckPassword(userName, password) { fmt.Println("登录成功") } else { fmt.Println("登录失败") } ``` ### 5. FTP相关功能 (ftp.go和jgt.go) 提供FTP登录验证和FTP结构体定义。 #### 结构体定义: ```go type FtpStruct struct { Host string Port int UserName string Password string } ``` #### 结构体方法: - `SetDefault()` - 设置FtpStruct的默认值 #### 函数: - `FtpLogin(host, userName, password string) bool` - 验证FTP登录信息 #### 使用示例: 1. 创建FTP连接信息 ```go ftp := &tools.FtpStruct{} ftp.SetDefault() // 设置默认值 // 可以覆盖默认值 ftp.Host = "ftp.example.com" ftp.UserName = "user" ftp.Password = "pass" ``` 2. FTP登录验证 ```go if tools.FtpLogin(ftp.Host, ftp.UserName, ftp.Password) { fmt.Println("FTP登录成功") } else { fmt.Println("FTP登录失败") } ``` ## 注意事项 1. `GetWindowsIPAddresses()` 函数仅支持Windows系统 2. 端口扫描功能可能受到网络环境和防火墙设置的影响 3. 目前的密码验证和FTP登录验证功能比较简单,仅作为示例使用 ## 完整示例 项目中的 `main.go` 文件包含了各种功能的使用示例,您可以参考该文件了解更多使用方法。