mirror of
https://github.com/maride/pancap.git
synced 2024-11-24 17:54:24 +00:00
Init commit: open file and print link type
This commit is contained in:
commit
daa3cfd812
20
src/analyzer.go
Normal file
20
src/analyzer.go
Normal 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
31
src/file.go
Normal 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
40
src/main.go
Normal 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")
|
||||
}
|
Loading…
Reference in New Issue
Block a user