github.com/vchain-us/vcn@v0.9.11-0.20210921212052-a2484d23c0b3/pkg/extractor/file/internal/sniff/macho.go (about)

     1  /*
     2   * Copyright (c) 2018-2020 vChain, Inc. All Rights Reserved.
     3   * This software is released under GPL3.
     4   * The full license information can be found under:
     5   * https://www.gnu.org/licenses/gpl-3.0.en.html
     6   *
     7   */
     8  
     9  package sniff
    10  
    11  import (
    12  	"debug/macho"
    13  	"os"
    14  	"strings"
    15  )
    16  
    17  const Platform_MachO = "Mach"
    18  
    19  func MachO(file *os.File) (*Data, error) {
    20  	f, err := macho.NewFile(file)
    21  	if err != nil {
    22  		return nil, err
    23  	}
    24  
    25  	cpu := strings.TrimPrefix(f.Cpu.String(), "Cpu")
    26  
    27  	d := &Data{
    28  		Type:     f.Type.String(),
    29  		Platform: Platform_MachO,
    30  		Arch:     cpu,
    31  		X64:      strings.HasSuffix(cpu, "64"),
    32  	}
    33  	return d, nil
    34  }