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
}
}
golang获取windows版本和详细信息的更多相关文章
- 获取windows版本信息的做法
作者:朱金灿 来源:http://blog.csdn.net/clever101 个人不建议用 GetVersion 或GetVersionEx 之类的 API 来获取系统版本号.注意微软也说过,这个 ...
- php反射机制获取未知类的详细信息
使用ReflectionClass就可以获取未知类的详细信息 demo: require("hello.php"); $class = new ReflectionClass(&q ...
- [C语言](二)01 获取Windows图形构件大小信息
SYSMETS.c #include <windows.h> #include "SYSMETS.H"//自定义的单元,所以用"",不是用<& ...
- android笔记---百度地图api应用 (二) 获取公交路线的详细信息
package com.example.bdtest; import com.baidu.mapapi.MKEvent; import com.baidu.mapapi.MKPlanNode; imp ...
- 使用GetLogicalProcessorInformation获取逻辑处理器的详细信息(NUMA节点数、物理CPU数、CPU核心数、逻辑CPU数、各级Cache)
不过必须XP SP3以上才行.所有API大全: https://msdn.microsoft.com/en-us/library/windows/desktop/aa363804(v=vs.85).a ...
- PHP怎么获取系统信息和服务器详细信息
https://zhidao.baidu.com/question/1435990326608475859.html 获取系统类型及版本号: php_uname() (例:Windows NT COM ...
- Python使用WMI模块获取Windows系统的硬件信息,并使用pyinstaller库编译打包成exe的可执行文件
由于公司现阶段大多数应用软件都是基于Windows系统开发和部署,很多软件安装部署都是在windows server 2012.windows server 2008之类的服务器上,部门同事每次测试一 ...
- 怎样快速免费获取Windows版本的ZBrush
ZBrush是一款专业的3D绘制软件及数字雕刻软件,随着3D技术的不断进步,ZBrush也是越来越受到业内欢迎,在世界拥有了众多的粉丝和爱好者.相信很多用户对软件的体验就是从使用的版本开始的,本文就教 ...
- 获取windows版本信息
procedure TForm1.Button1Click(Sender: TObject); Var OSVI:OSVERSIONINFO; begin OSVI.dwOSversi ...
- sigar获取Windows系统的硬件信息进行JAVA后台系统资源监控
windows下,将sigar-amd64-winnt.dll复制到jdk的bin目录下或者拷贝到WEB-INF/lib下 linux下,将libsigar-amd64-linux.so拷贝到jdk的 ...
随机推荐
- Grub2 内核启动参数总结
Grub2 内核启动参数总结 部分参数 biosdevname=0 net.ifnames=0 # 注意这个配置会修改网卡的名字, 比如之前是ens192 # 添加如上两个内容后就会变成 eth0 类 ...
- [转帖]CentOS-7-x86_64-Everything-2009 rpm包列表(CentOS7.9)
CentOS-7-x86_64-Everything-2009 rpm包列表(CentOS7.9) 共10073个文件 复制389-ds-base-1.3.10.2-6.el7.x86_64.rpm ...
- [转帖]Jmeter压力测试工具安装及使用教程
https://www.cnblogs.com/monjeo/p/9330464.html 一.Jmeter下载 进入官网:http://jmeter.apache.org/ 1.第一步进入官网如下图 ...
- [转帖]OceanBase 在线与离线安装方式详解
各位好,今天给大家带来一篇有关 OceanBase 在线与离线安装方式的解读.首先我们来讨论一下一日常工作中的一些场景,大家经常会遇到以下几种情况: 公司网络条件很不错,在线下载速度很快,安装软件直接 ...
- Stream的简单学习
Stream的简单学习 前言 https://github.com/jeffhammond/STREAM unzip STREAM-master.zip cd /STREAM-master/ make ...
- SQLServer 隔离级别的简单学习
SQLServer 隔离级别的简单学习 背景 上周北京一个项目出现了卡顿的现象. 周末开发测试加紧制作测试发布了补丁,但是并没有好转. 上周四时跟研发訾总简单沟通过, 怀疑是隔离级别有关系.但是不敢确 ...
- [转帖]02-rsync备份方式
https://developer.aliyun.com/article/885789?spm=a2c6h.24874632.expert-profile.283.7c46cfe9h5DxWK 简介: ...
- Mysql数据库部分管理命令极简学习总结
背景 今天遇到一个得很奇怪的问题. Mysql一个运行时间很长的select阻塞了对select里面左连接表做create index 操作的SQL 当时感觉不应该, 一直以为读锁不会与独占更新锁互斥 ...
- 随性翻译: Java的运行时参数简单总结
Java的运行时参数简单总结 简单学习了下Oracle官方的资料: https://docs.oracle.com/javase/8/docs/technotes/tools/unix/java.ht ...
- with(上下文管理器)的用法
with语句可以自动管理上下文资源,不论什么原因(成功或失败)跳出with语句,都能保证文件正确关闭,并 释放资源,不用手动去close掉资源 1.with语句中有两个内置方法__enter__和__ ...