ASN.1 Tag correcr

This commit is contained in:
citronneur
2015-02-19 23:05:21 +01:00
parent d6bb21565d
commit 1c3119cffd
2 changed files with 30 additions and 24 deletions

View File

@@ -22,8 +22,8 @@
@see: https://msdn.microsoft.com/en-us/library/cc226764.aspx @see: https://msdn.microsoft.com/en-us/library/cc226764.aspx
""" """
from pyasn1.type import namedtype, univ from pyasn1.type import namedtype, univ, tag
from pyasn1.codec.ber import encoder from pyasn1.codec.der import encoder
from rdpy.core.type import Stream from rdpy.core.type import Stream
class NegoData(univ.SequenceOf): class NegoData(univ.SequenceOf):
@@ -31,7 +31,7 @@ class NegoData(univ.SequenceOf):
@summary: contain spnego ntlm of kerberos data @summary: contain spnego ntlm of kerberos data
@see: https://msdn.microsoft.com/en-us/library/cc226781.aspx @see: https://msdn.microsoft.com/en-us/library/cc226781.aspx
""" """
componentType = univ.OctetString() componentType = univ.OctetString().subtype(explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 0))
class TSRequest(univ.Sequence): class TSRequest(univ.Sequence):
""" """
@@ -39,11 +39,11 @@ class TSRequest(univ.Sequence):
@see: https://msdn.microsoft.com/en-us/library/cc226780.aspx @see: https://msdn.microsoft.com/en-us/library/cc226780.aspx
""" """
componentType = namedtype.NamedTypes( componentType = namedtype.NamedTypes(
namedtype.NamedType('version', univ.Integer()), namedtype.NamedType('version', univ.Integer().subtype(explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 0))),
namedtype.OptionalNamedType('negoTokens', NegoData()), namedtype.OptionalNamedType('negoTokens', NegoData().subtype(explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 1))),
namedtype.OptionalNamedType('authInfo', univ.OctetString()), namedtype.OptionalNamedType('authInfo', univ.OctetString().subtype(explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 2))),
namedtype.OptionalNamedType('pubKeyAuth', univ.OctetString()), namedtype.OptionalNamedType('pubKeyAuth', univ.OctetString().subtype(explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 3))),
namedtype.OptionalNamedType('errorCode', univ.Integer()) namedtype.OptionalNamedType('errorCode', univ.Integer().subtype(explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 4)))
) )
class TSCredentials(univ.Sequence): class TSCredentials(univ.Sequence):
@@ -52,8 +52,8 @@ class TSCredentials(univ.Sequence):
@see: https://msdn.microsoft.com/en-us/library/cc226782.aspx @see: https://msdn.microsoft.com/en-us/library/cc226782.aspx
""" """
componentType = namedtype.NamedTypes( componentType = namedtype.NamedTypes(
namedtype.NamedType('credType', univ.Integer()), namedtype.NamedType('credType', univ.Integer().subtype(explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 0))),
namedtype.NamedType('credentials', univ.OctetString()) namedtype.NamedType('credentials', univ.OctetString().subtype(explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 1)))
) )
class TSPasswordCreds(univ.Sequence): class TSPasswordCreds(univ.Sequence):
@@ -62,9 +62,9 @@ class TSPasswordCreds(univ.Sequence):
@see: https://msdn.microsoft.com/en-us/library/cc226783.aspx @see: https://msdn.microsoft.com/en-us/library/cc226783.aspx
""" """
componentType = namedtype.NamedTypes( componentType = namedtype.NamedTypes(
namedtype.NamedType('domainName', univ.OctetString()), namedtype.NamedType('domainName', univ.OctetString().subtype(explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 0))),
namedtype.NamedType('userName', univ.OctetString()), namedtype.NamedType('userName', univ.OctetString().subtype(explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 1))),
namedtype.NamedType('password', univ.OctetString()) namedtype.NamedType('password', univ.OctetString().subtype(explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 2)))
) )
class TSCspDataDetail(univ.Sequence): class TSCspDataDetail(univ.Sequence):
@@ -73,11 +73,11 @@ class TSCspDataDetail(univ.Sequence):
@see: https://msdn.microsoft.com/en-us/library/cc226785.aspx @see: https://msdn.microsoft.com/en-us/library/cc226785.aspx
""" """
componentType = namedtype.NamedTypes( componentType = namedtype.NamedTypes(
namedtype.NamedType('keySpec', univ.Integer()), namedtype.NamedType('keySpec', univ.Integer().subtype(explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 0))),
namedtype.OptionalNamedType('cardName', univ.OctetString()), namedtype.OptionalNamedType('cardName', univ.OctetString().subtype(explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 1))),
namedtype.OptionalNamedType('readerName', univ.OctetString()), namedtype.OptionalNamedType('readerName', univ.OctetString().subtype(explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 2))),
namedtype.OptionalNamedType('containerName', univ.OctetString()), namedtype.OptionalNamedType('containerName', univ.OctetString().subtype(explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 3))),
namedtype.OptionalNamedType('cspName', univ.OctetString()) namedtype.OptionalNamedType('cspName', univ.OctetString().subtype(explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 4)))
) )
class TSSmartCardCreds(univ.Sequence): class TSSmartCardCreds(univ.Sequence):
@@ -86,10 +86,10 @@ class TSSmartCardCreds(univ.Sequence):
@see: https://msdn.microsoft.com/en-us/library/cc226784.aspx @see: https://msdn.microsoft.com/en-us/library/cc226784.aspx
""" """
componentType = namedtype.NamedTypes( componentType = namedtype.NamedTypes(
namedtype.NamedType('pin', univ.OctetString()), namedtype.NamedType('pin', univ.OctetString().subtype(explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 0))),
namedtype.NamedType('cspData', TSCspDataDetail()), namedtype.NamedType('cspData', TSCspDataDetail().subtype(explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 1))),
namedtype.OptionalNamedType('userHint', univ.OctetString()), namedtype.OptionalNamedType('userHint', univ.OctetString().subtype(explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 2))),
namedtype.OptionalNamedType('domainHint', univ.OctetString()) namedtype.OptionalNamedType('domainHint', univ.OctetString().subtype(explicitTag=tag.Tag(tag.tagClassContext, tag.tagFormatConstructed, 3)))
) )
def createBERRequest(negoTokens): def createBERRequest(negoTokens):

View File

@@ -24,14 +24,20 @@
from pyasn1.type import namedtype, univ from pyasn1.type import namedtype, univ
class MechTypeList(univ.SequenceOf):
"""
@see: http://www.rfc-editor.org/rfc/rfc4178.txt section 4.1
"""
componentType = univ.ObjectIdentifier()
class NegTokenInit2(univ.Sequence): class NegTokenInit2(univ.Sequence):
""" """
@summary: main structure @summary: main structure
@see: https://msdn.microsoft.com/en-us/library/cc247039.aspx @see: https://msdn.microsoft.com/en-us/library/cc247039.aspx
""" """
componentType = namedtype.NamedTypes( componentType = namedtype.NamedTypes(
namedtype.OptionalNamedType('mechTypes', univ.Integer()), namedtype.OptionalNamedType('mechTypes', MechTypeList()),
namedtype.OptionalNamedType('reqFlags', NegoData()), namedtype.OptionalNamedType('reqFlags', univ.BitString()),
namedtype.OptionalNamedType('mechToken', univ.OctetString()), namedtype.OptionalNamedType('mechToken', univ.OctetString()),
namedtype.OptionalNamedType('negHints', univ.OctetString()), namedtype.OptionalNamedType('negHints', univ.OctetString()),
namedtype.OptionalNamedType('mechListMIC', univ.Integer()) namedtype.OptionalNamedType('mechListMIC', univ.Integer())