Init commit: open file and print link type

This commit is contained in:
maride 2019-11-26 22:45:27 +01:00
commit daa3cfd812
3 changed files with 91 additions and 0 deletions

20
src/analyzer.go Normal file
View File

@ -0,0 +1,20 @@
package main
import (
"github.com/google/gopacket"
"github.com/google/gopacket/layers"
"log"
)
// Analyzes the given packet source
func analyzePCAP(source *gopacket.PacketSource, linkType layers.LinkType) error {
log.Printf("PCAP capture link type is %s (ID %d)", getNameOfLinkType(linkType), linkType)
// TODO: maybe, just maybe, we wanna print more here than just the link type :)
_, _ = source, linkType
return nil
}
// Returns the name of the LinkType constant handed over
func getNameOfLinkType(lt layers.LinkType) string {
return lt.String()
}

31
src/file.go Normal file
View File

@ -0,0 +1,31 @@
package main
import (
"flag"
"github.com/google/gopacket"
"github.com/google/gopacket/layers"
"github.com/google/gopacket/pcap"
)
var (
filenameFlag *string
)
// Registers the flag --file
func registerFileFlags() {
filenameFlag = flag.String("file", "", "PCAP file to base analysis on")
}
// Opens the PCAP, returns its packets and the link type or an error
func openPCAP() (*gopacket.PacketSource, layers.LinkType, error) {
// Open specified file
handle, openErr := pcap.OpenOffline(*filenameFlag)
if openErr != nil {
// There were some problems opening the file
return nil, 0, openErr
}
// Open given handle as packet source and return it
packetSource := gopacket.NewPacketSource(handle, handle.LinkType())
return packetSource, handle.LinkType(), nil
}

40
src/main.go Normal file
View File

@ -0,0 +1,40 @@
package main
import (
"flag"
"fmt"
"log"
)
func main() {
// important things first
printMOTD()
// register flags
registerFileFlags()
flag.Parse()
// Open the given PCAP
packetSource, linkType, fileErr := openPCAP()
if fileErr != nil {
// Encountered problems with the PCAP - permission and/or existance error
log.Fatalf("Error occured while opeining specified file: %s", fileErr.Error())
}
// Start analyzing
analyzeErr := analyzePCAP(packetSource, linkType)
if analyzeErr != nil {
// Mh, encountered some problems while analyzingfil
log.Fatalf("Error occurred while analyzing: %s", analyzeErr.Error())
}
}
// Prints a simple figlet-style ASCII art
func printMOTD() {
fmt.Println(" _ __ __ _ _ __ ___ __ _ _ __")
fmt.Println("| '_ \\ / _` | '_ \\ / __/ _` | '_ \\")
fmt.Println("| |_) | (_| | | | | (_| (_| | |_) |")
fmt.Println("| .__/ \\__,_|_| |_|\\___\\__,_| .__/")
fmt.Println("|_| |_|")
fmt.Println("PanCAP: Analyzer for capture files\n")
}