Page Menu
Home
VyOS Platform
Search
Configure Global Search
Log In
Files
F118305563
snmpv3_hashgen.py
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Flag For Later
Award Token
Size
1 KB
Referenced Files
None
Subscribers
None
snmpv3_hashgen.py
View Options
# Copyright 2020 VyOS maintainers and contributors <maintainers@vyos.io>
#
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public
# License as published by the Free Software Foundation; either
# version 2.1 of the License, or (at your option) any later version.
#
# This library is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public
# License along with this library. If not, see <http://www.gnu.org/licenses/>.
# Documentation / Inspiration
# - https://tools.ietf.org/html/rfc3414#appendix-A.3
# - https://github.com/TheMysteriousX/SNMPv3-Hash-Generator
key_length
=
1048576
def
random
(
l
):
# os.urandom(8) returns 8 bytes of random data
import
os
from
binascii
import
hexlify
return
hexlify
(
os
.
urandom
(
l
))
.
decode
(
'utf-8'
)
def
expand
(
s
,
l
):
""" repead input string (s) as long as we reach the desired length in bytes """
from
itertools
import
repeat
reps
=
l
//
len
(
s
)
+
1
# approximation; worst case: overrun = l + len(s)
return
''
.
join
(
list
(
repeat
(
s
,
reps
)))[:
l
]
.
encode
(
'utf-8'
)
def
plaintext_to_md5
(
passphrase
,
engine
):
""" Convert input plaintext passphrase to MD5 hashed version usable by net-snmp """
from
hashlib
import
md5
tmp
=
expand
(
passphrase
,
key_length
)
hash
=
md5
(
tmp
)
.
digest
()
engine
=
bytearray
.
fromhex
(
engine
)
out
=
b
''
.
join
([
hash
,
engine
,
hash
])
return
md5
(
out
)
.
digest
()
.
hex
()
def
plaintext_to_sha1
(
passphrase
,
engine
):
""" Convert input plaintext passphrase to SHA1hashed version usable by net-snmp """
from
hashlib
import
sha1
tmp
=
expand
(
passphrase
,
key_length
)
hash
=
sha1
(
tmp
)
.
digest
()
engine
=
bytearray
.
fromhex
(
engine
)
out
=
b
''
.
join
([
hash
,
engine
,
hash
])
return
sha1
(
out
)
.
digest
()
.
hex
()
File Metadata
Details
Attached
Mime Type
text/x-script.python
Expires
Sat, Oct 17, 12:05 AM (12 h, 12 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
4342757
Default Alt Text
snmpv3_hashgen.py (1 KB)
Attached To
Mode
rVYOSONEX vyos-1x
Attached
Detach File
Event Timeline
Log In to Comment