场景:

将木马丢到感染机运行后回连时希望返回感染机的操作系统信息.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
}
}

golang获取windows版本和详细信息的更多相关文章

  1. 获取windows版本信息的做法

    作者:朱金灿 来源:http://blog.csdn.net/clever101 个人不建议用 GetVersion 或GetVersionEx 之类的 API 来获取系统版本号.注意微软也说过,这个 ...

  2. php反射机制获取未知类的详细信息

    使用ReflectionClass就可以获取未知类的详细信息 demo: require("hello.php"); $class = new ReflectionClass(&q ...

  3. [C语言](二)01 获取Windows图形构件大小信息

    SYSMETS.c #include <windows.h> #include "SYSMETS.H"//自定义的单元,所以用"",不是用<& ...

  4. android笔记---百度地图api应用 (二) 获取公交路线的详细信息

    package com.example.bdtest; import com.baidu.mapapi.MKEvent; import com.baidu.mapapi.MKPlanNode; imp ...

  5. 使用GetLogicalProcessorInformation获取逻辑处理器的详细信息(NUMA节点数、物理CPU数、CPU核心数、逻辑CPU数、各级Cache)

    不过必须XP SP3以上才行.所有API大全: https://msdn.microsoft.com/en-us/library/windows/desktop/aa363804(v=vs.85).a ...

  6. PHP怎么获取系统信息和服务器详细信息

    https://zhidao.baidu.com/question/1435990326608475859.html 获取系统类型及版本号: php_uname() (例:Windows NT COM ...

  7. Python使用WMI模块获取Windows系统的硬件信息,并使用pyinstaller库编译打包成exe的可执行文件

    由于公司现阶段大多数应用软件都是基于Windows系统开发和部署,很多软件安装部署都是在windows server 2012.windows server 2008之类的服务器上,部门同事每次测试一 ...

  8. 怎样快速免费获取Windows版本的ZBrush

    ZBrush是一款专业的3D绘制软件及数字雕刻软件,随着3D技术的不断进步,ZBrush也是越来越受到业内欢迎,在世界拥有了众多的粉丝和爱好者.相信很多用户对软件的体验就是从使用的版本开始的,本文就教 ...

  9. 获取windows版本信息

    procedure TForm1.Button1Click(Sender: TObject); Var     OSVI:OSVERSIONINFO; begin     OSVI.dwOSversi ...

  10. sigar获取Windows系统的硬件信息进行JAVA后台系统资源监控

    windows下,将sigar-amd64-winnt.dll复制到jdk的bin目录下或者拷贝到WEB-INF/lib下 linux下,将libsigar-amd64-linux.so拷贝到jdk的 ...

随机推荐

  1. [转帖]等待事件 enq:TX - row lock contention分析与解决

    6月30日,数据库发生了大量锁表.大概持续1小时,并且越锁越多.后来通过业务人员停掉程序,并kill掉会话后解决. 几天后再EM上查看CPU占用: CPU发生了明显等待. 主要是由于enq:TX - ...

  2. [转帖]Linux权限详解(chmod、600、644、666、700、711、755、777、4755、6755、7755)

    https://www.cnblogs.com/monjeo/p/12191673.html 权限简介Linux系统上对文件的权限有着严格的控制,用于如果相对某个文件执行某种操作,必须具有对应的权限方 ...

  3. [转帖]Linux—CPU核数、上下文切换介绍及pidstat等命令详解

    https://www.jianshu.com/p/0ae0c1153c34 关注:CodingTechWork,一起学习进步. 引言 并发编程   并发编程的目的是为了改善串行程序执行慢问题,但是, ...

  4. rabbitmq rpm包安装以及简单设置用户的方法

    公司有一台性能比较好的power机器. 同事要求安装rabbitmq 今天尝试进行了一下处理 公司里面有网络有相应的源 性能还不错 第一步安装一下依赖的erlang yum install erlan ...

  5. SHA加密在实际应用中的优势与局限

    SHA加密算法简介 SHA(Secure Hash Algorithm)加密算法是一种单向加密算法,常用于加密数据的完整性校验和加密签名.它是由美国国家安全局(NSA)设计并广泛应用于各种安全场景.S ...

  6. 可持久化非确定状态AC自动分块维护线段平衡仙人掌优化最小费用最大流预处理混合图上莫比乌斯反演莫队带花舞蹈链并查集树状数组套主席树预处理动态DP分治FFT求多项式逆元对数函数的指数函数用可持久化并查集合并最小费用循环流上插头DP

    P8946 - The Lost Symbol 这种类型的 dp 的特点就是大部分转移形如 \(f(i,j)\rightarrow f(i+1,j+1)\) 之类的,并且当以上转移出现时原数组被清空, ...

  7. elementui更改Slider 滑块颜色样式

    <div class="con-slider"> <el-slider :disabled="disabledFlag" @change=&q ...

  8. http 中使用 gzip 输出内容时,如何预先压缩前一半页面?

    作者:张富春(ahfuzhang),转载时请注明作者和引用链接,谢谢! cnblogs博客 zhihu Github 公众号:一本正经的瞎扯 背景是这样:要输出一个很大的动态页面,不开 gzip 压缩 ...

  9. 【windows Server 2019系列】 构建IIS服务器

    个人名片: 对人间的热爱与歌颂,可抵岁月冗长 Github‍:念舒_C.ying CSDN主页️:念舒_C.ying 个人博客 :念舒_C.ying Web服务器也称为WWW(World Wide W ...

  10. SqlSugar的Select用法

    Select 位置 正常情况:应该在最后面, 一般是 .Where(..).OrderBy(..).Select(..).ToList() 特殊情况:如果Select不是最后一个位置,则Select要 ...