def main(): """ Main function """ x = Ether() / IP(dst="www.secdev.org") / TCP() print(x.summary()) print(x.show()) data = 'test_MACsec' pkt = Ether(dst="00:00:01:00:00:01", src="00:10:94:00:00:02") / MACsec() / data sendp(pkt, iface="en0", count=400) print(pkt.summary()) print(pkt.show()) sa = MACsecSA(sci=b'\x52\x54\x00\x13\x01\x56\x00\x01', an=0, pn=100, key=b'aaaaaaaaaaaaaaaa', icvlen=16, encrypt=1, send_sci=1) p = Ether(src='aa:aa:aa:bb:bb:bb', dst='cc:cc:cc:dd:dd:dd')/IP(src='192.168.0.1', dst='192.168.0.2')/ICMP(type='echo-request') / \ "1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890" m = sa.encap(p) print(m.type == ETH_P_MACSEC) print(m[MACsec].type == ETH_P_IP) print(len(m) == len(p) + 16) print(m[MACsec].an == 0) print(m[MACsec].pn == 100) print(m[MACsec].shortlen == 0) print(m[MACsec].SC) print(m[MACsec].E) print(m[MACsec].C) print(m[MACsec].sci == b'\x52\x54\x00\x13\x01\x56\x00\x01') print(p.show())
""" Date: 2022.04.22 09:11:40 LastEditors: Rustle Karl LastEditTime: 2022.04.23 23:53:21 """ from scapy.data import * from scapy.layers.inet import Ether, RandNum from scapy.layers.l2 import ARP, arping, srp from scapy.sendrecv import send """ scapy -H """ # ether = Ether(type=0x0806) ether = Ether(type=ETH_P_ARP) ether.show() arp = Ether() / ARP() arp.show() # ---------------------------------------------------------------------- # ARP Ping 在本地以太网络上最快速地发现主机的方法 answer, unanswer = srp(Ether(dst="ff:ff:ff:ff:ff:ff") / ARP(pdst="192.168.0.0/24"), timeout=2) answer.summary(lambda s, r: r.sprintf("%Ether.src% %ARP.psrc%")) # 以上两个命令相当于 arping("192.168.0.*", timeout=2)
print("Exo 2") pad = Padding(b"EVIRUEB sineD") packet = BASE_IP_FRAME /\ ICMP(type='echo-reply') packet.add_payload(b"Denis BEURIVE") packet /= pad packet.show() sendp(packet, iface='eno1') # Exo #3 if False: print("Exo 3") packet = Ether(dst=MAC) / IP(id=MY_ID, src=DST_IP, dst=DST_IP) / TCP( sport=1234, dport=1234) packet.add_payload(b"Denis BEURIVE") packet.show() sendp(packet, iface='eno1') # Exo #4 if False: print("Exo 4") packet = Ether(dst=MAC) / IP(id=MY_ID, src=SRC_IP, dst=DST_IP) / UDP( dport=5353, len=8) packet.add_payload(b"Denis BEURIVE") packet.show() sendp(packet, iface='eno1') # Exo #5 if False: print("Exo 5") packet = Ether(dst=MAC) / IP(id=MY_ID, src='8.8.8.8', dst=DST_IP) / \
src='192.168.250.3', dst='192.168.111.37') / TCP( sport=52724, dport=2404, seq=2577176935, ack=3669025911, dataofs=8, reserved=0, flags='PA', window=501, urgptr=0, options=[('NOP', None), ('NOP', None), ('Timestamp', (3164612021, 91549761)) ]) / APDU() / APCI(ApduLen=4, Type=0x01, Rx=10593) a = pkt.build() pkt.show() print('Result:', hexlify(a)) pkt = APDU() pkt /= APCI(ApduLen=25, Type=0x00, Tx=23, Rx=44) pkt /= ASDU( TypeId=36, SQ=0, NumIx=1, CauseTx=1, Test=0, OA=1, Addr=2, IOA=[IOAS[36](IOA=1001, Value=2.3414123, QDS=0x81, CP56Time=ct)]) pkt.show() print('Result:', hexlify(pkt.build()))
""" Date: 2022.04.21 11:26:28 LastEditors: Rustle Karl LastEditTime: 2022.04.21 11:41:49 """ from scapy.layers.inet import Ether, raw from scapy.data import * # 0x800 表示此帧的数据为 IP 数据 # 0x0806 表示此帧为 ARP 请求应答 ether = Ether(dst="ff:ff:ff:ff:ff:ff", src="b4:2e:c4:20:cd:0b", type=0x800) # ether = Ether(type=ETH_P_IP) # ether = Ether(type=ETH_P_IPV6) ether.show() # ether = Ether(type=0x0806) ether = Ether(type=ETH_P_ARP) ether.show() ether_raw = raw(ether) print(ether_raw) print(len(ether_raw)) # 以太网的封包在 IP 数据的基础上增加了共 14 个字节
def main(p4info_file_path, bmv2_file_path): # Instantiate a P4Runtime helper from the p4info file p4info_helper = p4runtime_lib.helper.P4InfoHelper(p4info_file_path) try: # Create a switch connection object for s1 and s2; # this is backed by a P4Runtime gRPC connection. # Also, dump all P4Runtime messages sent to switch to given txt files. s1 = p4runtime_lib.bmv2.Bmv2SwitchConnection( name='s1', address='127.0.0.1:50051', device_id=0, proto_dump_file='logs/s1-p4runtime-requests.txt') s2 = p4runtime_lib.bmv2.Bmv2SwitchConnection( name='s2', address='127.0.0.1:50052', device_id=1, proto_dump_file='logs/s2-p4runtime-requests.txt') # Send master arbitration update message to establish this controller as # master (required by P4Runtime before performing any other write operation) s1.MasterArbitrationUpdate() s2.MasterArbitrationUpdate() # Install the P4 program on the switches s1.SetForwardingPipelineConfig(p4info=p4info_helper.p4info, bmv2_json_file_path=bmv2_file_path) print("Installed P4 Program using SetForwardingPipelineConfig on s1") s2.SetForwardingPipelineConfig(p4info=p4info_helper.p4info, bmv2_json_file_path=bmv2_file_path) print("Installed P4 Program using SetForwardingPipelineConfig on s2") # Write the rules that tunnel traffic from h1 to h2 writeInitRules(p4info_helper, ingress_sw=s1, dst_eth_addr="08:00:00:00:02:22", dst_ip_addr="10.0.2.2", port=64) writeInitRules(p4info_helper, ingress_sw=s1, dst_eth_addr="08:00:00:00:01:11", dst_ip_addr="10.0.1.1", port=1) # Write the rules that tunnel traffic from h2 to h1 writeInitRules(p4info_helper, ingress_sw=s2, dst_eth_addr="08:00:00:00:01:11", dst_ip_addr="10.0.1.1", port=2) writeInitRules(p4info_helper, ingress_sw=s2, dst_eth_addr="08:00:00:00:02:22", dst_ip_addr="10.0.2.2", port=1) while 1: print('cap') for item in s1.stream_msg_resp: print(item) eth = Ether(item.packet.payload) # eth.dst = '08:00:00:00:02:33' eth.show() request = p4runtime_pb2.StreamMessageRequest() request.packet.payload = item.packet.payload s2.requests_stream.put(request) time.sleep(1) except KeyboardInterrupt: print(" Shutting down.") except grpc.RpcError as e: printGrpcError(e) ShutdownAllSwitchConnections()
#puerto origen aeatorio p=sr(IP(src="192.168.43.55", dst="www.secdev.org")/TCP(sport=RandShort(),dport=[20,21,80,443,3389], flags="S"),inter=0.5,retry=2,timeout=1) #traceroute traceroute(["www.google.com"], maxttl=20) #traceroute con puerto 23 traceroute (["10.1.99.2"],dport=23,maxttl=20) #paquete por capas IP() IP()/TCP() Ether()/IP()/TCP() IP()/TCP()/"GET / HTTP/1.1\r\n\r\n" Ether()/IP(dst="api.tidex.com")/TCP(dport=443)/"GET /api/3/ticker/eth_btc HTTP/1.1\r\nHost: api.tidex.com\r\nConnection: close\r\n\r\n" Ether()/IP()/IP()/UDP() #armado de paquetes por capas a=Ether(); a.show() b=IP(); b.show() c=TCP(); c.show() d=sr(a/b/c,timeout=2) #enviar paquete por capas ans,unans=sr(IP(dst="api.tidex.com")/TCP(sport=RandShort(),dport=443)/"GET /api/3/ticker/eth_btc HTTP/1.1\r\nHost: api.tidex.com\r\nConnection: close\r\n\r\n") #############HTTP ##super importante #https://stackoverflow.com/questions/9058052/unwanted-rst-tcp-packet-with-scapy #iptables -A OUTPUT -p tcp --tcp-flags RST RST -s 192.168.43.55 -j DROP load_layer("http") req = HTTP()/HTTPRequest( Accept_Encoding=b'gzip, deflate', Cache_Control=b'no-cache',