mirror of
				https://github.com/maride/pancap.git
				synced 2025-10-10 19:36:51 +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…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user