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 consolehexadecimal-and-fields
parent
b4b01a5cf4
commit
399459c744
1 changed files with 58 additions and 6 deletions
@ -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…
Reference in new issue