Skip to content

Commit 135958a

Browse files
author
HD Moore
committed
Cleanup the udp_(sweep|probe) SNMP generators
1 parent 6b05302 commit 135958a

File tree

2 files changed

+64
-52
lines changed

2 files changed

+64
-52
lines changed

modules/auxiliary/scanner/discovery/udp_probe.rb

Lines changed: 32 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -473,36 +473,42 @@ def probe_pkt_sentinel(ip)
473473
end
474474

475475
def probe_pkt_snmp1(ip)
476-
name = 'public'
477-
xid = rand(0x100000000)
478-
pdu =
479-
"\x02\x01\x00" +
480-
"\x04" + [name.length].pack('c') + name +
481-
"\xa0\x1c" +
482-
"\x02\x04" + [xid].pack('N') +
483-
"\x02\x01\x00" +
484-
"\x02\x01\x00" +
485-
"\x30\x0e\x30\x0c\x06\x08\x2b\x06\x01\x02\x01" +
486-
"\x01\x01\x00\x05\x00"
487-
head = "\x30" + [pdu.length].pack('C')
488-
data = head + pdu
476+
version = 1
477+
data = OpenSSL::ASN1::Sequence([
478+
OpenSSL::ASN1::Integer(version - 1),
479+
OpenSSL::ASN1::OctetString("public"),
480+
OpenSSL::ASN1::Set.new([
481+
OpenSSL::ASN1::Integer(rand(0x80000000)),
482+
OpenSSL::ASN1::Integer(0),
483+
OpenSSL::ASN1::Integer(0),
484+
OpenSSL::ASN1::Sequence([
485+
OpenSSL::ASN1::Sequence([
486+
OpenSSL::ASN1.ObjectId("1.3.6.1.2.1.1.1.0"),
487+
OpenSSL::ASN1.Null(nil)
488+
])
489+
]),
490+
], 0, :IMPLICIT)
491+
]).to_der
489492
[data, 161]
490493
end
491494

492495
def probe_pkt_snmp2(ip)
493-
name = 'public'
494-
xid = rand(0x100000000)
495-
pdu =
496-
"\x02\x01\x01" +
497-
"\x04" + [name.length].pack('c') + name +
498-
"\xa1\x19" +
499-
"\x02\x04" + [xid].pack('N') +
500-
"\x02\x01\x00" +
501-
"\x02\x01\x00" +
502-
"\x30\x0b\x30\x09\x06\x05\x2b\x06\x01\x02\x01" +
503-
"\x05\x00"
504-
head = "\x30" + [pdu.length].pack('C')
505-
data = head + pdu
496+
version = 2
497+
data = OpenSSL::ASN1::Sequence([
498+
OpenSSL::ASN1::Integer(version - 1),
499+
OpenSSL::ASN1::OctetString("public"),
500+
OpenSSL::ASN1::Set.new([
501+
OpenSSL::ASN1::Integer(rand(0x80000000)),
502+
OpenSSL::ASN1::Integer(0),
503+
OpenSSL::ASN1::Integer(0),
504+
OpenSSL::ASN1::Sequence([
505+
OpenSSL::ASN1::Sequence([
506+
OpenSSL::ASN1.ObjectId("1.3.6.1.2.1.1.1.0"),
507+
OpenSSL::ASN1.Null(nil)
508+
])
509+
]),
510+
], 0, :IMPLICIT)
511+
]).to_der
506512
[data, 161]
507513
end
508514

modules/auxiliary/scanner/discovery/udp_sweep.rb

Lines changed: 32 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -432,36 +432,42 @@ def probe_pkt_sentinel(ip)
432432
end
433433

434434
def probe_pkt_snmp1(ip)
435-
name = 'public'
436-
xid = rand(0x100000000)
437-
pdu =
438-
"\x02\x01\x00" +
439-
"\x04" + [name.length].pack('c') + name +
440-
"\xa0\x1c" +
441-
"\x02\x04" + [xid].pack('N') +
442-
"\x02\x01\x00" +
443-
"\x02\x01\x00" +
444-
"\x30\x0e\x30\x0c\x06\x08\x2b\x06\x01\x02\x01" +
445-
"\x01\x01\x00\x05\x00"
446-
head = "\x30" + [pdu.length].pack('C')
447-
data = head + pdu
435+
version = 1
436+
data = OpenSSL::ASN1::Sequence([
437+
OpenSSL::ASN1::Integer(version - 1),
438+
OpenSSL::ASN1::OctetString("public"),
439+
OpenSSL::ASN1::Set.new([
440+
OpenSSL::ASN1::Integer(rand(0x80000000)),
441+
OpenSSL::ASN1::Integer(0),
442+
OpenSSL::ASN1::Integer(0),
443+
OpenSSL::ASN1::Sequence([
444+
OpenSSL::ASN1::Sequence([
445+
OpenSSL::ASN1.ObjectId("1.3.6.1.2.1.1.1.0"),
446+
OpenSSL::ASN1.Null(nil)
447+
])
448+
]),
449+
], 0, :IMPLICIT)
450+
]).to_der
448451
[data, 161]
449452
end
450453

451454
def probe_pkt_snmp2(ip)
452-
name = 'public'
453-
xid = rand(0x100000000)
454-
pdu =
455-
"\x02\x01\x01" +
456-
"\x04" + [name.length].pack('c') + name +
457-
"\xa1\x19" +
458-
"\x02\x04" + [xid].pack('N') +
459-
"\x02\x01\x00" +
460-
"\x02\x01\x00" +
461-
"\x30\x0b\x30\x09\x06\x05\x2b\x06\x01\x02\x01" +
462-
"\x05\x00"
463-
head = "\x30" + [pdu.length].pack('C')
464-
data = head + pdu
455+
version = 2
456+
data = OpenSSL::ASN1::Sequence([
457+
OpenSSL::ASN1::Integer(version - 1),
458+
OpenSSL::ASN1::OctetString("public"),
459+
OpenSSL::ASN1::Set.new([
460+
OpenSSL::ASN1::Integer(rand(0x80000000)),
461+
OpenSSL::ASN1::Integer(0),
462+
OpenSSL::ASN1::Integer(0),
463+
OpenSSL::ASN1::Sequence([
464+
OpenSSL::ASN1::Sequence([
465+
OpenSSL::ASN1.ObjectId("1.3.6.1.2.1.1.1.0"),
466+
OpenSSL::ASN1.Null(nil)
467+
])
468+
]),
469+
], 0, :IMPLICIT)
470+
]).to_der
465471
[data, 161]
466472
end
467473

0 commit comments

Comments
 (0)