首页 > 系统相关 >golang获取windows版本和详细信息

golang获取windows版本和详细信息

时间:2023-03-06 19:35:05浏览次数:84  
标签:case 10 major return nil windows golang Windows 详细信息

场景:

将木马丢到感染机运行后回连时希望返回感染机的操作系统信息.golang 可以通过runtime.OS获取到操作系统类型,但是无法获取详细的版本信息,如win7 win10等,

解决方案;

下面是chatgpt的写法;


package main

import (
    "fmt"
    "os"
    "syscall"
    "unsafe"
)

func main() {
    version, err := getWindowsVersion()
    if err != nil {
        fmt.Println("Failed to get Windows version:", err)
        return
    }

    fmt.Println("Windows version:", version)
}

func getWindowsVersion() (string, error) {
    kernel32, err := syscall.LoadDLL("kernel32.dll")
    if err != nil {
        return "", err
    }

    proc, err := kernel32.FindProc("GetVersion")
    if err != nil {
        return "", err
    }

    version, _, _ := proc.Call()
    major := byte(version & 0xFF)
    minor := byte((version >> 8) & 0xFF)
    build := uint16((version >> 16) & 0xFFFF)

    var info syscall.RtlOsVersionInfoEx
    info.OSVersionInfoSize = uint32(unsafe.Sizeof(info))
    err = syscall.RtlGetVersion(&info)
    if err != nil {
        return "", err
    }

    switch {
    case major == 10 && build >= 22000:
        return "Windows 11", nil
    case major == 10 && build >= 19041:
        return "Windows 10 Version 2004 or later", nil
    case major == 10 && build >= 18362:
        return "Windows 10 Version 1903 or later", nil
    case major == 10 && build >= 17763:
        return "Windows 10 Version 1809 or later", nil
    case major == 10 && build >= 17134:
        return "Windows 10 Version 1803 or later", nil
    case major == 10 && build >= 16299:
        return "Windows 10 Version 1709 or later", nil
    case major == 10 && build >= 15063:
        return "Windows 10 Version 1703 or later", nil
    case major == 10 && build >= 14393:
        return "Windows 10 Version 1607 or later", nil
    case major == 10 && build >= 10586:
        return "Windows 10 Version 1511 or later", nil
    case major == 10:
        return "Windows 10 or later", nil
    case major == 6 && minor == 3:
        return "Windows 8.1", nil
    case major == 6 && minor == 2:
        return "Windows 8", nil
    case major == 6 && minor == 1:
        return "Windows 7", nil
    case major == 6 && minor == 0:
        return "Windows Vista", nil
    case major == 5 && minor == 2:
        return "Windows Server 2003", nil
    case major == 5 && minor == 1:
        return "Windows XP", nil
    default:
        return fmt.Sprintf("Windows %d.%d (Build %d)", major, minor, build), nil
    }
}

标签:case,10,major,return,nil,windows,golang,Windows,详细信息
From: https://www.cnblogs.com/gatling/p/17185078.html

相关文章

  • windows内核网络调试
    1windows网络调试2bcdedit/dbgsettingsnethostip:192.168.2.1port:500003Key=sfz54lfnnz7r.2qv9aiovadd5i.2gtkz3xamru32.cdwwl45caxfl456bcdedit/set{......
  • windows下载符号
    1"C:\ProgramFiles(x86)\WindowsKits\10\Debuggers\x86\symchk.exe""c:\windows\system32\calc.exe"/sSRV*c:\symbols\*http://msdl.microsoft.com/download/symbo......
  • 网络安全(中职组)-B模块:Windows操作系统渗透测试
    任务环境说明:服务器场景:teltest服务器场景操作系统:Windows7(封闭靶机)1.通过本地PC中渗透测试平台Kali对服务器场景Windows进行系统服务及版本扫描渗透测试,并将该作显示......
  • Windows Torch 安装
    首先,电脑要有显卡(没有显卡建议查cpu版本Torch安装和使用)一、基础装备(一)、Pycharm下载地址:DownloadPyCharm:PythonIDEforProfessionalDevelopersbyJetBrains......
  • golang jenkinsapi 批量构建jenkins job
    golang批量构建jenkinsjob   py批量构建jenkinsjob是,若job在某个floder下面则无法调用,目前测试发现只要job在jenkins根目录下才可调用,不够灵活。golang则没有这......
  • Windows server 2008 R2 无法启用网络发现
    问题描述:就算在高级共享设置中启用网络发现并保存修改也会变回关闭网络发现解决方法:打开服务设置(win+R在运行栏里输入services.msc),开启以下三个服务FunctionDisco......
  • windows server 2008 R2虚拟机安装问题
    安装流程安装主要有两种方式:1.自定义安装2.自动安装自定义安装选择稍后安装操作系统,同时CD/DVD选择想要安装的镜像​ 满足需要自定义需求的安装流程自动安......
  • Windows环境下go项目无法执行wire命令
    原因是,路径有问题。需要手动的指定路径。$ROOT_DIR=e/workProject/cloud-base/src/talon/appmakewirewire:generatefailedmake:***[Makefile:17:wire]Error1......
  • json转golang结构
    在Golang中,我们可以使用标准库中的encoding/json包来将JSON数据转换为结构体。本文将介绍如何使用该包将JSON数据转换为Golang结构体。首先,让我们看一下JSON数据的格式。......
  • 02 Golang 基础简介
    一、标识符标识符是指定义的具有特殊意义的词,例如变量、常量、函数名等等,任何一门语言中都对自己的标识符有特殊定义的规则。在Go语言中,标识符由字母数字和下划线组成,并......