
#!/bin/bash# # 龍魂系统 · DNA 生成器 v2.0# 在客户端设备上运行生成 DNA 常量文件# 可选自动注册到服务器# UID9622 | 龍芯北辰# DNA: #龍芯⚡️丙午·辛未·乙酉·亥时·豫-DNA-GENERATOR-v2.0# set-euopipefailRED\033[0;31mGREEN\033[0;32mYELLOW\033[1;33mBLUE\033[0;34mNC\033[0m# ── 配置 ──SERVER_URL${LH_DNA_SERVER_URL:-http://119.13.90.27:7000}OUTPUT_DIR${LH_DNA_OUTPUT_DIR:-${HOME}/longhun-system/data/sources}DNA_CONST_FILE${OUTPUT_DIR}/dna_const.shCURL_TIMEOUT10echo╔══════════════════════════════════════════╗echo║ 龍魂系统 · DNA 生成器 v2.0 ║echo║ 生成设备 DNA 设备指纹 注册 ║echo╚══════════════════════════════════════════╝echo# ═══════════════════════════════════════════# 干支计算# ═══════════════════════════════════════════get_ganzhi(){python3PYEOF import datetime tiangan [甲,乙,丙,丁,戊,己,庚,辛,壬,癸] dizhi [子,丑,寅,卯,辰,巳,午,未,申,酉,戌,亥] now datetime.datetime.now() y, m, d, h now.year, now.month, now.day, now.hour base 1984 offset y - base year_gz tiangan[offset % 10] dizhi[offset % 12] month_dz (m 1) % 12 month_gz tiangan[(offset % 10 * 2 m) % 10] dizhi[month_dz] ref datetime.datetime(1984, 1, 1) day_offset (now - ref).days day_gz tiangan[day_offset % 10] dizhi[day_offset % 12] hour_dz_idx (h 1) // 2 % 12 hour_gz tiangan[(day_offset % 10 * 2 hour_dz_idx) % 10] dizhi[hour_dz_idx] print(f{year_gz}·{month_gz}·{hour_gz}) PYEOF}GANZHI$(get_ganzhi)# ═══════════════════════════════════════════# 收集设备指纹# ═══════════════════════════════════════════echo-e${BLUE}[1/5]${NC}收集设备指纹...# macOSif[[$(uname-s)Darwin]];thenHW_UUID$(ioreg-d2-cIOPlatformExpertDevice|awk-F/IOPlatformUUID/{print $4}2/dev/null||echounknown)HW_MODEL$(sysctl-nhw.model2/dev/null||echounknown)HW_SERIAL$(system_profiler SPHardwareDataType|awk/Serial Number/{print $NF}2/dev/null||echounknown)HOSTNAME$(hostname-s2/dev/null||echounknown)OS_VER$(sw_vers-productVersion2/dev/null||echounknown)DEVICE_TYPEmacOS-${HW_MODEL}# Linuxelif[[$(uname-s)Linux]];thenHW_UUID$(cat/etc/machine-id2/dev/null||cat/var/lib/dbus/machine-id2/dev/null||echounknown)HW_MODEL$(cat/sys/class/dmi/id/product_name2/dev/null||echounknown)HW_SERIAL$(cat/sys/class/dmi/id/product_serial2/dev/null||echounknown)HOSTNAME$(hostname-s2/dev/null||echounknown)OS_VER$(cat/etc/os-release2/dev/null|grepPRETTY_NAME|cut-d-f2||echounknown)DEVICE_TYPELinux-${HW_MODEL}elseHW_UUIDunknownHW_MODELunknownHW_SERIALunknownHOSTNAMEunknownOS_VERunknownDEVICE_TYPEUnknownfiecho 主机名:${HOSTNAME}echo 系统:${OS_VER}echo 设备:${DEVICE_TYPE}echo UUID:${HW_UUID:0:16}...# ═══════════════════════════════════════════# 生成设备指纹哈希# ═══════════════════════════════════════════DEVICE_SEED${HW_UUID}|${HW_SERIAL}|${HW_MODEL}|${HOSTNAME}DEVICE_HASH$(echo-n${DEVICE_SEED}|shasum-a256|awk{print $1}|cut-c1-32)echo 指纹:${DEVICE_HASH}echo# ═══════════════════════════════════════════# 生成 DNA# ═══════════════════════════════════════════echo-e${BLUE}[2/5]${NC}生成 DNA...# DNA 种子 设备指纹 时间戳 随机盐 GANZHITIMESTAMP_NOW$(date%s)RANDOM_SALT$(head-c16/dev/urandom2/dev/null|base64|tr-dca-zA-Z0-9|head-c16||python3-cimport random,string;print(.join(random.choice(string.ascii_lettersstring.digits)for_inrange(16)))) DNA_SEED${DEVICE_HASH}|${TIMESTAMP_NOW}|${RANDOM_SALT}|${GANZHI}|longhun-dna-gen DNA_FULL$(echo-n${DNA_SEED}|shasum-a256|awk{print $1})DNA_SHORT$(echo-n${DNA_FULL}|shasum-a256|awk{print $1}|cut-c1-32)echo 完整 DNA:${DNA_FULL} echo 短 DNA:${DNA_SHORT} echo # ═══════════════════════════════════════════# 生成 DNA 签章用于注册时验证身份# ═══════════════════════════════════════════DNA_SIGNATURE$(python3-cimporthashlibdna_full${DNA_FULL}device_hash${DEVICE_HASH}salt${RANDOM_SALT}rawf{dna_full}|{device_hash}|{salt}|longhun-dna-registersighashlib.sha256(raw.encode()).hexdigest()[:32]print(sig)) echo -e ${BLUE}[3/5]${NC}询问设备别名... echo -n 请输入设备别名(如: Mac本地/鲲鹏服务器/办公室PC): read -r DEVICE_ALIAS DEVICE_ALIAS${DEVICE_ALIAS:-UNKNOWN} echo 设备别名:${DEVICE_ALIAS} echo # ═══════════════════════════════════════════# 写入本地常量文件# ═══════════════════════════════════════════echo-e${BLUE}[4/5]${NC}写入 DNA 常量文件...mkdir-p$OUTPUT_DIRcat$DNA_CONST_FILEDNAEOF #!/bin/bash # # 龍魂系统 · DNA 常量文件 # 生成时间:$(date%Y-%m-%d %H:%M:%S)# 干支:${GANZHI}# 设备:${DEVICE_ALIAS}# ⚠️ 此文件被删除/篡改 DNA 抹除 系统失效 # # DNA: #龍芯⚡️${GANZHI}-${DEVICE_TYPE}-DNA-GEN-v2.0 export LONGHUN_DNA_FULL${DNA_FULL} export LONGHUN_DNA_SHORT${DNA_SHORT} export LONGHUN_DEVICE_HASH${DEVICE_HASH} export LONGHUN_DEVICE_ALIAS${DEVICE_ALIAS} export LONGHUN_DEVICE_TYPE${DEVICE_TYPE} export LONGHUN_OS_VERSION${OS_VER} export LONGHUN_DNA_GANZHI${GANZHI} export LONGHUN_DNA_SIGNATURE${DNA_SIGNATURE} export LONGHUN_DNA_SALT${RANDOM_SALT} export LONGHUN_DNA_CREATED_AT${TIMESTAMP_NOW} DNAEOFchmod600$DNA_CONST_FILEecho-e${GREEN}✅ 已写入:${DNA_CONST_FILE}${NC}echo# ═══════════════════════════════════════════# 可选自动注册到服务器# ═══════════════════════════════════════════echo-e${BLUE}[5/5]${NC}注册 DNA 到服务器...echo# 检查服务器连通性SERVER_HEALTH$(curl-s-o/dev/null-w%{http_code}\--connect-timeout$CURL_TIMEOUT\--max-time$CURL_TIMEOUT\${SERVER_URL}/health2/dev/null||echo000)if[[$SERVER_HEALTH!200]];thenecho-e${YELLOW}⚠️ 服务器不可达 (HTTP${SERVER_HEALTH})跳过自动注册${NC}echoecho-e 请稍后手动注册:echocatREGCMD curl -X POST${SERVER_URL}/dna/register\\-H Content-Type: application/json\\-d { dna_full: ${DNA_FULL}, dna_short: ${DNA_SHORT}, device_hash: ${DEVICE_HASH}, device_alias: ${DEVICE_ALIAS}, dna_signature: ${DNA_SIGNATURE}, ganzhi: ${GANZHI}, salt: ${RANDOM_SALT}, timestamp:${TIMESTAMP_NOW}} REGCMDelseecho-n 正在注册...REGISTER_RESP$(curl-s\--connect-timeout$CURL_TIMEOUT\--max-time$CURL_TIMEOUT\-XPOST${SERVER_URL}/dna/register\-HContent-Type: application/json\-d{\dna_full\:\${DNA_FULL}\,\dna_short\:\${DNA_SHORT}\,\device_hash\:\${DEVICE_HASH}\,\device_alias\:\${DEVICE_ALIAS}\,\dna_signature\:\${DNA_SIGNATURE}\,\ganzhi\:\${GANZHI}\,\salt\:\${RANDOM_SALT}\,\timestamp\:${TIMESTAMP_NOW}}2/dev/null)REG_STATUS$(echo$REGISTER_RESP|python3-cimport sys,json;print(json.load(sys.stdin).get(status,ERROR))2/dev/null||echoERROR)if[[$REG_STATUSREGISTERED]]||[[$REG_STATUSRENEWED]];thenecho-e${GREEN}✅${REG_STATUS}${NC}echoecho$(echo$REGISTER_RESP|python3-cimport sys,json;print(json.load(sys.stdin).get(message,))2/dev/null) else echo -e ${RED}❌ 失败${NC} echo echo 服务器响应:${REGISTER_RESP}fifiechoecho╔══════════════════════════════════════════╗echo║ DNA 生成完成 ║echo╠══════════════════════════════════════════╣echo║ 设备:${DEVICE_ALIAS}echo║ 指纹:${DEVICE_HASH:0:16}...echo║ DNA:${DNA_SHORT:0:16}...echo║ 干支:${GANZHI}echo╠══════════════════════════════════════════╣echo║ 常量文件:${DNA_CONST_FILE}║echo║ ║echo║ 在启动脚本中添加: ║echo║ source longhun_dna_verify.sh || exit 1 ║echo╚══════════════════════════════════════════╝echoecho 下次启动时DNA 会自动验证。echo 删除${DNA_CONST_FILE} DNA 被抹除 系统失效