使用正则表达式提取 OTP 密钥
Extract OTP Key using regex
我有一个脚本可以在 linux 系统上通过 SSH 密钥和 OTP 启用 OTP/Google 身份验证。启用 OTP 后,我会向用户发送带有 otpauth URL 的短信。我需要从 otpauth URL 中提取(通常是 16 位数字密钥)。
如果他们想要可见的二维码,URL 的示例如下:
https://www.google.com/chart?chs=200x200&chld=M|0&cht=qr&chl=otpauth://totp/user@host.com%3Fsecret%3DWFHGHUFAUYXZFA44%26issuer%3DCOMPANY
如果他们想要一个 otpauth url 他们可以点击导入令牌/密码管理器,我使用以下方法:
otpauth://totp/user@host.com%3Fsecret%3DWFHGHUFAUYXZFA44%26issuer%3DCOMPANY
如何从 URL 中提取密钥?
使用grep -oP
:
url='https://www.google.com/chart?chs=200x200&chld=M|0&cht=qr&chl=otpauth://totp/user@host.com%3Fsecret%3DWFHGHUFAUYXZFA44%26issuer%3DCOMPANY'
grep -ioP '[?&]chl=.+?%3Fsecret%3D\K[^%]+' <<< "$url"
WFHGHUFAUYXZFA44
secret%3D(.*?)(?=%|$)
会找到 'secret'、%3D
,然后是数字,直到到达行尾或另一个 %
字符。
我有一个脚本可以在 linux 系统上通过 SSH 密钥和 OTP 启用 OTP/Google 身份验证。启用 OTP 后,我会向用户发送带有 otpauth URL 的短信。我需要从 otpauth URL 中提取(通常是 16 位数字密钥)。
如果他们想要可见的二维码,URL 的示例如下:
https://www.google.com/chart?chs=200x200&chld=M|0&cht=qr&chl=otpauth://totp/user@host.com%3Fsecret%3DWFHGHUFAUYXZFA44%26issuer%3DCOMPANY
如果他们想要一个 otpauth url 他们可以点击导入令牌/密码管理器,我使用以下方法:
otpauth://totp/user@host.com%3Fsecret%3DWFHGHUFAUYXZFA44%26issuer%3DCOMPANY
如何从 URL 中提取密钥?
使用grep -oP
:
url='https://www.google.com/chart?chs=200x200&chld=M|0&cht=qr&chl=otpauth://totp/user@host.com%3Fsecret%3DWFHGHUFAUYXZFA44%26issuer%3DCOMPANY'
grep -ioP '[?&]chl=.+?%3Fsecret%3D\K[^%]+' <<< "$url"
WFHGHUFAUYXZFA44
secret%3D(.*?)(?=%|$)
会找到 'secret'、%3D
,然后是数字,直到到达行尾或另一个 %
字符。