1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
|
#!/bin/sh
#
# OTP Utilities
# Copyright (C) 2022 David M. Syzdek <david@syzdek.net>.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are
# met:
#
# * Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
# * Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
# * Neither the name of David M. Syzdek nor the
# names of its contributors may be used to endorse or promote products
# derived from this software without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
# IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
# THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL DAVID M SYZDEK BE LIABLE FOR
# ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
# SUCH DAMAGE.
#
my_field()
{
cut -b${1} \
|sed \
-e 's/^_\{1,\}//g' \
-e 's/_\{1,\}$//g' \
-e 's/_/ /g'
}
my_payload()
{
PAYLOAD_LINE=$(awk '/^__PAYLOAD_BELOW__/ {print NR + 1; exit 0; }' $0)
TOTAL_LINES=$(($(wc -l "$0" |awk '{print$1}')+1))
if test "x${PAYLOAD_LINE}" == "x${TOTAL_LINES}";then
return 0;
fi
tail -n+${PAYLOAD_LINE} $0 \
|egrep -v '^[[:space:]]{0,}#|^[[:space:]]{0,}$' \
|sed -e 's/[[:space:]]/_/g'
return 0;
}
my_raw()
{
sed \
-e 's/\([a-f0-9]\{2\}\)\([a-f0-9]\{2\}\)/0x\1, 0x\2, /gi' \
-e 's/ \{1,\}/ /g' \
-e 's/, $//g'
}
my_word_convert()
{
WORD_HASH="${1}"
shift;
ALTWORDS=""
for WORD in ${@};do
ALTWORD="$(./tests/otp-data-convert ${WORD_HASH} ${WORD})"
if test -z "${ALTWORD}";then
return 1;
fi
ALTWORDS="${ALTWORDS} ${ALTWORD}"
done
echo "${ALTWORDS}" |sed -e 's/^ \{1,\}//g' -e 's/ \{1,\}$//g'
}
for REC in $(my_payload);do
REC_HASH="$( echo "${REC}" |my_field 1-4 )"
REC_PASS="$( echo "${REC}" |my_field 6-20 )"
REC_SEED="$( echo "${REC}" |my_field 22-28 )"
REC_CNT="$( echo "${REC}" |my_field 30-31 )"
REC_HEX="$( echo "${REC}" |my_field 34-52 )"
REC_SIX="$( echo "${REC}" |my_field 54- )"
REC_RAW="$( echo "${REC}" |my_field 32-52 |my_raw )"
REC_MD4="$( my_word_convert md4 ${REC_SIX})"
REC_MD5="$( my_word_convert md5 ${REC_SIX})"
REC_SHA1="$( my_word_convert sha1 ${REC_SIX})"
cat << ' EOF' \
|sed \
-e "s/@HASH@/${REC_HASH}/g" \
-e "s/@PASS@/${REC_PASS}/g" \
-e "s/@SEED@/${REC_SEED}/g" \
-e "s/@COUNT@/${REC_CNT}/g" \
-e "s/@HEX@/${REC_HEX}/g" \
-e "s/@SIX@/${REC_SIX}/g" \
-e "s/@MD4@/${REC_MD4}/g" \
-e "s/@MD5@/${REC_MD5}/g" \
-e "s/@SHA1@/${REC_SHA1}/g" \
-e "s/@RAW@/${REC_RAW}/g"
{
.method = OTPUTIL_MD_@HASH@,
.pass = "@PASS@",
.seed = "@SEED@",
.count = @COUNT@,
.hex = "@HEX@",
.six = "@SIX@",
.alt_md4 = "@MD4@",
.alt_md5 = "@MD5@",
.alt_sha1 = "@SHA1@",
.dat.bv_val = (uint8_t []){ @RAW@ },
.dat.bv_len = 8,
},
EOF
done
exit 0
# end of script
__PAYLOAD_BELOW__
# RFC 2289 Appendix C - OTP Verification Examples: MD4 ENCODINGS
MD4 This is a test. TeSt 0 D185 4218 EBBB 0B51 ROME MUG FRED SCAN LIVE LACE
MD4 This is a test. TeSt 1 6347 3EF0 1CD0 B444 CARD SAD MINI RYE COL KIN
MD4 This is a test. TeSt 99 C5E6 1277 6E6C 237A NOTE OUT IBIS SINK NAVE MODE
MD4 AbCdEfGhIjK alpha1 0 5007 6F47 EB1A DE4E AWAY SEN ROOK SALT LICE MAP
MD4 AbCdEfGhIjK alpha1 1 65D2 0D19 49B5 F7AB CHEW GRIM WU HANG BUCK SAID
MD4 AbCdEfGhIjK alpha1 99 D150 C82C CE6F 62D1 ROIL FREE COG HUNK WAIT COCA
MD4 OTP's are good correct 0 849C 79D4 F6F5 5388 FOOL STEM DONE TOOL BECK NILE
MD4 OTP's are good correct 1 8C09 92FB 2508 47B1 GIST AMOS MOOT AIDS FOOD SEEM
MD4 OTP's are good correct 99 3F3B F4B4 145F D74B TAG SLOW NOV MIN WOOL KENO
# RFC 2289 Appendix C - OTP Verification Examples: MD5 ENCODINGS
MD5 This is a test. TeSt 0 9E87 6134 D904 99DD INCH SEA ANNE LONG AHEM TOUR
MD5 This is a test. TeSt 1 7965 E054 36F5 029F EASE OIL FUM CURE AWRY AVIS
MD5 This is a test. TeSt 99 50FE 1962 C496 5880 BAIL TUFT BITS GANG CHEF THY
MD5 AbCdEfGhIjK alpha1 0 8706 6DD9 644B F206 FULL PEW DOWN ONCE MORT ARC
MD5 AbCdEfGhIjK alpha1 1 7CD3 4C10 40AD D14B FACT HOOF AT FIST SITE KENT
MD5 AbCdEfGhIjK alpha1 99 5AA3 7A81 F212 146C BODE HOP JAKE STOW JUT RAP
MD5 OTP's are good correct 0 F205 7539 43DE 4CF9 ULAN NEW ARMY FUSE SUIT EYED
MD5 OTP's are good correct 1 DDCD AC95 6F23 4937 SKIM CULT LOB SLAM POE HOWL
MD5 OTP's are good correct 99 B203 E28F A525 BE47 LONG IVY JULY AJAR BOND LEE
# RFC 2289 Appendix C - OTP Verification Examples: SHA1 ENCODINGS
SHA1 This is a test. TeSt 0 BB9E 6AE1 979D 8FF4 MILT VARY MAST OK SEES WENT
SHA1 This is a test. TeSt 1 63D9 3663 9734 385B CART OTTO HIVE ODE VAT NUT
SHA1 This is a test. TeSt 99 87FE C776 8B73 CCF9 GAFF WAIT SKID GIG SKY EYED
SHA1 AbCdEfGhIjK alpha1 0 AD85 F658 EBE3 83C9 LEST OR HEEL SCOT ROB SUIT
SHA1 AbCdEfGhIjK alpha1 1 D07C E229 B5CF 119B RITE TAKE GELD COST TUNE RECK
SHA1 AbCdEfGhIjK alpha1 99 27BC 7103 5AAF 3DC6 MAY STAR TIN LYON VEDA STAN
SHA1 OTP's are good correct 0 D51F 3E99 BF8E 6F0B RUST WELT KICK FELL TAIL FRAU
SHA1 OTP's are good correct 1 82AE B52D 9437 74E4 FLIT DOSE ALSO MEW DRUM DEFY
SHA1 OTP's are good correct 99 4F29 6A74 FE15 67EC AURA ALOE HURL WING BERG WAIT
# end of payload
|