hex.count / 2 var data = Data(capacity: len) for i in 0..<len { let j = hex.index(hex.startIndex, offsetBy: i * 2) let k = hex.index(j, offsetBy: 2) let bytes = hex[j..<k] if var num = UInt8(bytes, radix: 16) { data.append(&num, count: 1) } else { return nil } } self = data } var hex: String { return reduce("") { $0 + String(format: "%02x", $1) } } }
hex.count / 2 var data = Data(capacity: len) for i in 0..<len { let j = hex.index(hex.startIndex, offsetBy: i * 2) let k = hex.index(j, offsetBy: 2) let bytes = hex[j..<k] if var num = UInt8(bytes, radix: 16) { data.append(&num, count: 1) } else { return nil } } self = data } var hex: String { return reduce("") { $0 + String(format: "%02x", $1) } } }
hex.count / 2 var data = Data(capacity: len) for i in 0..<len { let j = hex.index(hex.startIndex, offsetBy: i * 2) let k = hex.index(j, offsetBy: 2) let bytes = hex[j..<k] if var num = UInt8(bytes, radix: 16) { data.append(&num, count: 1) } else { return nil } } self = data } var hex: String { return reduce("") { $0 + String(format: "%02x", $1) } } }
structureSize: UInt16 public let creditCharge: UInt16 public let status: UInt32 public let command: UInt16 public let creditRequestResponse: UInt16 public let flags: Flags public let nextCommand: UInt32 public let messageId: UInt64 public let reserved: UInt32 public let treeId: UInt32 public let sessionId: UInt64 public let signature: Data } $POTUSVDU4.#%BUB4USVDUVSF 4.#1BDLFU)FBEFS
sessionSetup = 0x0001 case logoff = 0x0002 case treeConnect = 0x0003 case treeDisconnect = 0x0004 case create = 0x0005 case close = 0x0006 case flush = 0x0007 case read = 0x0008 case write = 0x0009 case lock = 0x000A case ioctl = 0x000B case cancel = 0x000C case echo = 0x000D case queryDirectory = 0x000E case changeNotify = 0x000F case queryInfo = 0x0010 case setInfo = 0x0011 case oplockBreak = 0x0012 case serverToClientNotification = 0x0013 }
public init(rawValue: UInt32) { self.rawValue = rawValue } public static let serverToRedir = Flags(rawValue: 0x00000001) public static let asyncCommand = Flags(rawValue: 0x00000002) public static let relatedOperations = Flags(rawValue: 0x00000004) public static let signed = Flags(rawValue: 0x00000008) public static let priorityMask = Flags(rawValue: 0x00000070) public static let dfsOperation = Flags(rawValue: 0x10000000) public static let replayOperation = Flags(rawValue: 0x20000000) }
structureSize: UInt16 public let dialectCount: UInt16 public let securityMode: SecurityMode public let reserved: UInt16 public let capabilities: Capabilities public let clientGuid: UUID public let clientStartTime: UInt64 public let dialects: [Dialects] public let padding: Data public let negotiateContextList: Data } 4.#/&(05*"5&3FRVFTU $POTUSVDU4.#%BUB4USVDUVSF
var protocolId = protocolId data += withUnsafeBytes(of: &protocolId) { Data($0) } var structureSize = structureSize data += withUnsafeBytes(of: &structureSize) { Data($0) } var creditCharge = creditCharge data += withUnsafeBytes(of: &creditCharge) { Data($0) } var status = status data += withUnsafeBytes(of: &status) { Data($0) } ... 4FSJBMJ[F4.#1BDLFU 4.#1BDLFU)FBEFS
data += protocolId data += structureSize data += creditCharge data += status data += command data += creditRequestResponse data += flags.rawValue data += nextCommand data += messageId data += reserved data += treeId data += sessionId data += signature return data }
data += protocolId data += structureSize data += creditCharge data += status data += command data += creditRequestResponse data += flags.rawValue data += nextCommand data += messageId data += reserved data += treeId data += sessionId data += signature return data }
data += header.encoded() data += structureSize data += UInt16(dialects.count) data += securityMode.rawValue data += reserved data += capabilities.rawValue data += Data(from: clientGuid) data += clientStartTime for dialect in dialects { data += dialect.rawValue } data += padding data += negotiateContextList return data }
streamProtocolLength: Data public let smb2Message: Data public init(smb2Message: Data) { zero = 0x00 let length = UInt32(truncatingIfNeeded: smb2Message.count) var data = Data(capacity: 3) let byte1 = UInt8((length >> 16) & 0x000000FF) let byte2 = UInt8((length >> 8) & 0x000000FF) let byte3 = UInt8(length & 0x000000FF) data.append(byte1) data.append(byte2) data.append(byte3) streamProtocolLength = data self.smb2Message = smb2Message } public func encoded() -> Data { var data = Data() data += zero data += streamProtocolLength data += smb2Message return data } }
streamProtocolLength: Data public let smb2Message: Data public init(smb2Message: Data) { zero = 0x00 let length = UInt32(truncatingIfNeeded: smb2Message.count) var data = Data(capacity: 3) let byte1 = UInt8((length >> 16) & 0xFF) let byte2 = UInt8((length >> 8) & 0xFF) let byte3 = UInt8(length & 0xFF) data.append(byte1) data.append(byte2) data.append(byte3) streamProtocolLength = data self.smb2Message = smb2Message } public func encoded() -> Data { var data = Data() data += zero data += streamProtocolLength data += smb2Message return data } } public init(smb2Message: Data) { zero = 0x00 let length = UInt32(truncatingIfNeeded: smb2Message.count) var data = Data(capacity: 3) let byte1 = UInt8((length >> 16) & 0x000000FF) let byte2 = UInt8((length >> 8) & 0x000000FF) let byte3 = UInt8(length & 0x000000FF) data.append(byte1) data.append(byte2) data.append(byte3) streamProtocolLength = data self.smb2Message = smb2Message }
streamProtocolLength: Data public let smb2Message: Data public init(smb2Message: Data) { zero = 0x00 let length = UInt32(truncatingIfNeeded: smb2Message.count) var data = Data(capacity: 3) let byte1 = UInt8((length >> 16) & 0xFF) let byte2 = UInt8((length >> 8) & 0xFF) let byte3 = UInt8(length & 0xFF) data.append(byte1) data.append(byte2) data.append(byte3) streamProtocolLength = data self.smb2Message = smb2Message } public func encoded() -> Data { var data = Data() data += zero data += streamProtocolLength data += smb2Message return data } } public init(smb2Message: Data) { zero = 0x00 let length = UInt32(truncatingIfNeeded: smb2Message.count) var data = Data(capacity: 3) let byte1 = UInt8((length >> 16) & 0x000000FF) let byte2 = UInt8((length >> 8) & 0x000000FF) let byte3 = UInt8(length & 0x000000FF) data.append(byte1) data.append(byte2) data.append(byte3) streamProtocolLength = data self.smb2Message = smb2Message }
streamProtocolLength: Data public let smb2Message: Data public init(smb2Message: Data) { zero = 0x00 let length = UInt32(truncatingIfNeeded: smb2Message.count) var data = Data(capacity: 3) let byte1 = UInt8((length >> 16) & 0xFF) let byte2 = UInt8((length >> 8) & 0xFF) let byte3 = UInt8(length & 0xFF) data.append(byte1) data.append(byte2) data.append(byte3) streamProtocolLength = data self.smb2Message = smb2Message } public func encoded() -> Data { var data = Data() data += zero data += streamProtocolLength data += smb2Message return data } } public init(smb2Message: Data) { zero = 0x00 let length = UInt32(truncatingIfNeeded: smb2Message.count) var data = Data(capacity: 3) let byte1 = UInt8((length >> 16) & 0x000000FF) let byte2 = UInt8((length >> 8) & 0x000000FF) let byte3 = UInt8(length & 0x000000FF) data.append(byte1) data.append(byte2) data.append(byte3) streamProtocolLength = data self.smb2Message = smb2Message }
streamProtocolLength: Data public let smb2Message: Data public init(smb2Message: Data) { zero = 0x00 let length = UInt32(truncatingIfNeeded: smb2Message.count) var data = Data(capacity: 3) let byte1 = UInt8((length >> 16) & 0xFF) let byte2 = UInt8((length >> 8) & 0xFF) let byte3 = UInt8(length & 0xFF) data.append(byte1) data.append(byte2) data.append(byte3) streamProtocolLength = data self.smb2Message = smb2Message } public func encoded() -> Data { var data = Data() data += zero data += streamProtocolLength data += smb2Message return data } } public init(smb2Message: Data) { zero = 0x00 let length = UInt32(truncatingIfNeeded: smb2Message.count) var data = Data(capacity: 3) let byte1 = UInt8((length >> 16) & 0x000000FF) let byte2 = UInt8((length >> 8) & 0x000000FF) let byte3 = UInt8(length & 0x000000FF) data.append(byte1) data.append(byte2) data.append(byte3) streamProtocolLength = data self.smb2Message = smb2Message }
structureSize: UInt16 public let securityMode: SecurityMode public let dialectRevision: UInt16 public let negotiateContextCount: UInt16 public let serverGuid: UUID public let capabilities: Capabilities public let maxTransactSize: UInt32 public let maxReadSize: UInt32 public let maxWriteSize: UInt32 public let systemTime: UInt64 public let serverStartTime: UInt64 public let securityBufferOffset: UInt16 public let securityBufferLength: UInt16 public let negotiateContextOffset: UInt32 public let securityBuffer: Data }
r $3&"5& r $-04& r '-64) r 3&"% r 83*5& r -0$, r &$)0 r $"/$&- r *0$5- r 26&3:@%*3&$503: r $)"/(&@/05*': r 26&3:@*/'0 r 4&5@*/'0 ϩάΠϯ ϩάΦϑ μϯϩʔυ Ξοϓϩʔυ σΟϨΫτϦҰཡ 4.#.FTTBHFT
.contentProcessed() { (error) in if let error { continuation.resume(throwing: error) return } self.receive() { (result) in switch result { case .success(let data): continuation.resume(returning: data) case .failure(let error): continuation.resume(throwing: error) } } }) } 4XJGU$PODVSSFODZ "TZOD"XBJU