modified: main.go

Functions:
			hexadecimal handling
			whitespace management
			csv-like interpolation
	Next steps:
		Create map of key-value pairs using column headers
		Iterate hex conversion fucntions across values
		Track changes every 10 minutes using loop with timestamp
		Report changes to the console
hexadecimal-and-fields
Mike Holloway 4 years ago
parent b4b01a5cf4
commit 399459c744
  1. 64
      main.go

@ -1,21 +1,73 @@
package main package main
import ( import (
"fmt" "fmt"
"strings"
"regexp"
"io/ioutil" "io/ioutil"
"encoding/hex"
) )
func main() {
// How to split on space-delimited fields, then colon-delimited fields?
// How to turn this byte into a string?
// /proc/net/tcp hex addresses need to be reversed two-character-wise
// and then converted byte by byte (2 char at a time)
//fmt.Println(convert_address(reverse_string(reverse_bytes("0100007F"))))
tcp_rows(read_tcp_file("/proc/net/tcp"))
}
func check(e error) { func check(e error) {
if e != nil { if e != nil {
panic(e) panic(e)
} }
} }
func read_connections_file() { func tcp_rows(connections_file string) {
var connections_file_path string = "/proc/net/tcp" regexpression := regexp.MustCompile(`[^a-zA-Z0-9\r\n\t\v]+`)
data, err := ioutil.ReadFile(connections_file_path) tcp_lines := strings.Split(connections_file, "\n")
for _, line := range tcp_lines {
trim_line := strings.TrimSpace(line)
values := regexpression.ReplaceAllString(trim_line, ",")
// Debug
// fmt.Println("New Line ==========")
fmt.Println(values)
}
}
// Take a string, create a rune slice, and use a loop to reverse it character-wise.
func reverse_bytes(s string) string {
runes := []rune(s)
for i, j := len(runes)-2, len(runes)-1; j > 0; i, j = i-2, j-2 {
runes[i], runes[j] = runes[j], runes[i]
}
return string(runes)
}
func reverse_string(s string) string {
runes := []rune(s)
for i, j := 0, len(runes)-1; i < j; i, j = i+1, j-1 {
runes[i], runes[j] = runes[j], runes[i]
}
return string(runes)
}
// Store data function
// Loads all fields and subfields into storage (memory? where?)
// State check function
// hash each line, use to determine new lines, convert to readable, and print
func convert_address(address string) []byte {
output, err := hex.DecodeString(address)
check(err) check(err)
fmt.Println(string(data)) return output
} }
func main() { func read_tcp_file(connections_file_path string) string {
read_connections_file() data, err := ioutil.ReadFile(connections_file_path)
check(err)
fmt.Println("Data file read successfully.\n")
return string(data)
} }

Loading…
Cancel
Save