12代太强了
iPhone13 PRO MAX 1T 国行远峰蓝 非海南免税版
我知道的:
- 不介意
GCC
版本的话,下载并解压MinGW-W64 GCC-8.1.0,环境变量加下bin
路径就好- Cygwin/MSYS2 有更加新的版本,但也要加环境变量
- WSL?
注:
- 加环境变量,是为了能让你在
cmd
里能直接打gcc
- 如果是
IDE
使用,可以直接在IDE
里指定Toolchain
的路径
继续优化挑选方法:
dd if=/dev/urandom bs=256 count=1 status=none | tr -dc 'A-Za-z0-9!@#%^&*/(){}<>[]~' | cut -b 1-24
@无名啊,哦,那更方便
继续优化挑选方法:
tr -dc 'A-Za-z0-9!@#%^&*/(){}<>[]~' </dev/urandom 2>/dev/null | dd bs=24 count=1 2>/dev/null
现在不会产生不够长的字符串了,一定能得到bs指定的长度。
@老虎会游泳,
tr
那个不算正则吧。。开头和末尾的[]
可以不要的
@老虎会游泳,直接把可打印的字符(即
ASCII: [32, 126]
,会包括空格、感叹号等)当作用户密码,可以不?我记得以前
Deepin
的Terminal
登录用户,若密码包含“感叹号”,会出错来着?
@无名啊,我为什么一定要写一个正则表达式呢,意思就是:你可以自己添加删除想要的字符。
@无名啊,其实都一样,普通用户和root用户都是用户。允许登录的和不允许登录的用户,以这个条件判断。
@爱消,@老虎会游泳,写了个纯
bash
版本的,但不是很确定楼主的意图猜对没,以及找普通用户的方法是否正确#!/bin/bash # # 此脚本用于root账号密码修改 # 常量 PASSWD_LEN=16 OUTPUT_FILE='./passwd.txt' # 获取IP,展示,保存 if ip=$(curl 'members.3322.org/dyndns/getip'); then echo "$ip" | tee "$OUTPUT_FILE" else echo '无法获取IP' exit 1 fi # 找到普通用户和root用户,生成随机密码,展示,保存,修改 paste -d ':' \ <(awk -F: '($3 >= 1000 && $7 ~ /\/(bash|sh)$/ || $3 == 0){print $1}' </etc/passwd) \ <(tr -dc '[:print:]' </dev/urandom | fold -w $PASSWD_LEN) | sed -n '/^:/q; p' | tee -a "$OUTPUT_FILE" | chpasswd
@爱消,你要产生1024字节,就必须提高
bs
,产生更多的随机数供挑选。优化挑选前:
dd if=/dev/urandom bs=1M count=1 2>/dev/null | strings | grep -E '^[A-Za-z0-9!@#%^&*/(){}<>~]*$' | strings -s '' | cut -b 1-1024 -
优化挑选后:
dd if=/dev/urandom bs=8k count=1 2>/dev/null | grep -aoE '[A-Za-z0-9!@#%^&*/(){}<>~]*' | tr -d '\n' | cut -b 1-1024
优化挑选的方法:
dd if=/dev/urandom bs=256 count=1 2>/dev/null | grep -aoE '[A-Za-z0-9!@#%^&*/(){}<>~]*' | tr -d '\n' | cut -b 1-24
挑选法一定会产生足够长的字符串吗?
不一定。
有极小概率产生的字符串不够长,原因显而易见:产生的随机字节中的大部分都不符合要求。
但是只要产生的字节够多,远比最后需要的多,那出现该问题的概率就无限接近于0,以至于可以忽略。
当然,如果你想确保产生足够长的字符串,你可以写一个循环进行检测,这用shell完全能做到。
@老虎会游泳,可以!很完美了。
@老虎会游泳,![]()
关于
/dev/random
和/dev/urandom
:前者生成的随机字节很安全,不容易被预测,但会耗尽,所以一次只能读取几个字节。如果一次读取很多字节,可能需要等很久才能完成,或者干脆完不成(读取不到指定长度)。
后者生成的随机字节没有前者那么安全,存在被预测的可能性(可能性很小),但可以无限生成。所以要生成大量随机字节时通常用后者。
详细介绍:
shell 应该也能生成随机数吧
纯 shell 做不到吗