Остання активність 1 month ago

One program, to listen to all TCP ports. It actually doesnt listen, but sniff them. - Based on http://maycon.hacknroll.io/hacking-tricks/2019/11/05/trick-check-outgoing-ports.html

racerxdl's Avatar Lucas Teske ревизій цього gist 4 years ago. До ревизії

1 file changed, 3 insertions, 1 deletion

onelisten.go

@@ -8,6 +8,7 @@ import (
8 8 "time"
9 9 )
10 10
11 + // Filter for syn packets
11 12 const filter = "(tcp[tcpflags] & tcp-syn != 0)"
12 13
13 14 func handlePacket(handle *pcap.Handle, packet gopacket.Packet) {
@@ -16,6 +17,7 @@ func handlePacket(handle *pcap.Handle, packet gopacket.Packet) {
16 17 tcp := packet.TransportLayer().(*layers.TCP)
17 18 fmt.Printf("[%s] SYN packet received from %s on port %d. Replying with SYN+ACK...\n", time.Now().String(), ipv4.SrcIP, tcp.DstPort)
18 19
20 + // Build syn+ack response
19 21 buf := gopacket.NewSerializeBuffer()
20 22 err := gopacket.SerializeLayers(buf, gopacket.SerializeOptions{},
21 23 &layers.Ethernet{
@@ -44,7 +46,7 @@ func handlePacket(handle *pcap.Handle, packet gopacket.Packet) {
44 46 }
45 47
46 48 func main() {
47 - handle, err := pcap.OpenLive("eth0", 1600, true, pcap.BlockForever)
49 + handle, err := pcap.OpenLive("eth0", 1600, true, pcap.BlockForever) // Change eth0 for your device
48 50 if err != nil {
49 51 panic(err)
50 52 }

racerxdl's Avatar Lucas Teske ревизій цього gist 4 years ago. До ревизії

Без змін

racerxdl's Avatar Lucas Teske ревизій цього gist 4 years ago. До ревизії

Без змін

racerxdl's Avatar Lucas Teske ревизій цього gist 4 years ago. До ревизії

1 file changed, 56 insertions

onelisten.go(файл створено)

@@ -0,0 +1,56 @@
1 + package main
2 +
3 + import (
4 + "fmt"
5 + "github.com/google/gopacket"
6 + "github.com/google/gopacket/layers"
7 + "github.com/google/gopacket/pcap"
8 + "time"
9 + )
10 +
11 + const filter = "(tcp[tcpflags] & tcp-syn != 0)"
12 +
13 + func handlePacket(handle *pcap.Handle, packet gopacket.Packet) {
14 + eth := packet.LinkLayer().(*layers.Ethernet)
15 + ipv4 := packet.NetworkLayer().(*layers.IPv4)
16 + tcp := packet.TransportLayer().(*layers.TCP)
17 + fmt.Printf("[%s] SYN packet received from %s on port %d. Replying with SYN+ACK...\n", time.Now().String(), ipv4.SrcIP, tcp.DstPort)
18 +
19 + buf := gopacket.NewSerializeBuffer()
20 + err := gopacket.SerializeLayers(buf, gopacket.SerializeOptions{},
21 + &layers.Ethernet{
22 + DstMAC: eth.SrcMAC,
23 + SrcMAC: eth.DstMAC,
24 + },
25 + &layers.IPv4{
26 + SrcIP: ipv4.DstIP,
27 + DstIP: ipv4.SrcIP,
28 + },
29 + &layers.TCP{
30 + SrcPort: tcp.DstPort,
31 + DstPort: tcp.SrcPort,
32 + Seq: tcp.Ack,
33 + Ack: tcp.Seq + 1,
34 + SYN: true,
35 + ACK: true,
36 + })
37 + if err != nil {
38 + panic(err)
39 + }
40 + err = handle.WritePacketData(buf.Bytes())
41 + if err != nil {
42 + panic(err)
43 + }
44 + }
45 +
46 + func main() {
47 + handle, err := pcap.OpenLive("eth0", 1600, true, pcap.BlockForever)
48 + if err != nil {
49 + panic(err)
50 + }
51 + _ = handle.SetBPFFilter(filter)
52 + packetSource := gopacket.NewPacketSource(handle, handle.LinkType())
53 + for packet := range packetSource.Packets() {
54 + handlePacket(handle, packet)
55 + }
56 + }
Новіше Пізніше