是否有基于命令行的方式将ping发送到子网中的每台计算机?喜欢
for(int i = 1; i < 254; i++)
ping(192.168.1.i);
Run Code Online (Sandbox Code Playgroud)
执行arp决议?
我正在尝试配置ARP年龄超时.我想我应该设置/proc/sys/net/ipv4/neigh/default/base_reachable_time_ms所需的超时.但是,尽管我将其设置为30000毫秒(30秒),但仍需要将近10分钟才能从ARP缓存中删除条目.在阅读了几篇文章后,我发现还有更多的设置会影响超时:
/proc/sys/net/ipv4/neigh/default/gc_interval
/proc/sys/net/ipv4/neigh/default/gc_stale_time
/proc/sys/net/ipv4/route/gc_interval
/proc/sys/net/ipv4/route/gc_timeout
Run Code Online (Sandbox Code Playgroud)
我不知道该为这些程序编程.该gc_timeout默认为在Linux下5分钟.我把它改为30秒,但我仍然没有看到条目被移除base_reachable_time/2或3*base_reachable_time/2.
如何设置ARP缓存的到期时间?
我想弄清楚我们的局域网中有哪些设备在线和离线.我见过许多程序在进行一种图形网络概述,提供局域网IP和MAC地址.我想知道是否以及如何从C#/ .NET中提取这些(ARP?)信息?
任何示例代码片段/链接将不胜感激.
为了更好地理解网络概念并提高我的python技能,我试图用python实现一个数据包嗅探器.我刚开始学习python,所以代码当然可以优化;)
我已经实现了一个数据包嗅探器,它解压缩以太网帧和arp头.我想用原始套接字制作它,因为我想了解这些标题中的每个字节,所以请不要scapy帮助:)
问题是,我不会得到任何arp回复数据包.它始终是操作码1和我
这是我的源代码:
import socket
import struct
import binascii
rawSocket = socket.socket(socket.PF_PACKET, socket.SOCK_RAW, socket.htons(0x0806))
while True:
packet = rawSocket.recvfrom(2048)
ethernet_header = packet[0][0:14]
ethernet_detailed = struct.unpack("!6s6s2s", ethernet_header)
arp_header = packet[0][14:42]
arp_detailed = struct.unpack("2s2s1s1s2s6s4s6s4s", arp_header)
print "****************_ETHERNET_FRAME_****************"
print "Dest MAC: ", binascii.hexlify(ethernet_detailed[0])
print "Source MAC: ", binascii.hexlify(ethernet_detailed[1])
print "Type: ", binascii.hexlify(ethernet_detailed[2])
print "************************************************"
print "******************_ARP_HEADER_******************"
print "Hardware type: ", binascii.hexlify(arp_detailed[0])
print "Protocol type: ", binascii.hexlify(arp_detailed[1])
print "Hardware size: ", binascii.hexlify(arp_detailed[2])
print "Protocol size: ", binascii.hexlify(arp_detailed[3])
print "Opcode: ", binascii.hexlify(arp_detailed[4])
print "Source …Run Code Online (Sandbox Code Playgroud) 我是iPhone开发的新手,我想在我的应用程序中集成wake-on-lan而不会挤压我的用户在知道IP时输入计算机MAC地址.我用谷歌搜索了几个小时,拿了一个ARP工具的源代码,但我不知道如何在iPhone上管理它.
在我的应用程序中,我想查询Windows上的安全更新和修补程序框.为此,我已经查询HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall除了Windows 2008服务器和Windows 7之外的操作系统上的一切顺利...
appwiz.cpl在Windows 2008服务器计算机上运行时,它显示了大量的修补程序和安全更新,但它们中没有任何条目HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall.看起来Windows已经改变了Windows 2008服务器和Windows 7的注册表位置.
我需要查询安全更新和修补程序的详细信息.
我正在尝试编写一个批处理文件,当它连接到网络(Tenda WiFi路由器)时,应该找到我的Android手机动态分配的IP.
所以我正在尝试arp -a搜索手机的MAC地址,这样我就可以从桌面上获取IP.
C:\Users\Leeroy>arp -a
Interface: 192.168.0.100 --- 0xb
Internet Address Physical Address Type
192.168.0.1 c8-3a-35-35-f6-68 dynamic
192.168.0.255 ff-ff-ff-ff-ff-ff static
224.0.0.22 01-00-5e-00-00-16 static
224.0.0.251 01-00-5e-00-00-fb static
224.0.0.252 01-00-5e-00-00-fc static
239.255.255.250 01-00-5e-7f-ff-fa static
255.255.255.255 ff-ff-ff-ff-ff-ff static
Run Code Online (Sandbox Code Playgroud)
问题是它没有出现在表格中!我试过ping 192.168.0.255但它仍然没有显示出来.我尝试从手机的浏览器请求192.168.0.100(我的桌面电脑的IP),这确实足以让手机上雷.但是每次我希望它出现在arp表中时,我都没有选择手动执行此操作.
如何让Android手机出现在arp表中(除了连接到WiFi之外没有做任何事情)?
我正在Windows上编写本地网络扫描程序,以查找具有IP帮助程序功能的在线主机,这相当于nmap -PR没有WinPcap.我知道如果远程主机没有响应,SendARP将阻塞并发送arp请求3次,所以我用std::aync它为每个主机创建一个线程,但问题是我想每20ms发送一个ARP请求所以它不会太多在很短的时间内很多arp数据包.
#include <iostream>
#include <future>
#include <vector>
#include <winsock2.h>
#include <iphlpapi.h>
#pragma comment(lib, "iphlpapi.lib")
#pragma comment(lib, "ws2_32.lib")
using namespace std;
int main(int argc, char **argv)
{
ULONG MacAddr[2]; /* for 6-byte hardware addresses */
ULONG PhysAddrLen = 6; /* default to length of six bytes */
memset(&MacAddr, 0xff, sizeof (MacAddr));
PhysAddrLen = 6;
IPAddr SrcIp = 0;
IPAddr DestIp = 0;
char buf[64] = {0};
size_t start = time(NULL);
std::vector<std::future<DWORD> > vResults;
for …Run Code Online (Sandbox Code Playgroud) 好的,这是我的问题.请原谅我,因为它有点复杂.我几乎100%肯定它是由MacOS 10.6内核错误造成的,但由于我们不能指望修复错误,我需要一个解决方法.
我之前了解到"ipfw ... fwd"规则在MacOS 10.6上无法正常工作(它适用于10.5)除非你先做
sysctl -w net.inet.ip.scopedroute=0
Run Code Online (Sandbox Code Playgroud)
然而,事实证明这种解决方案也不完美; 在进行此更改后大约10到15分钟,我的Mac基本上停止与互联网通话.ping我本地网络外的任何东西开始说"没有到主机的路由",即使我绝对有一个有效的默认路由.我已将问题跟踪到错误的ARP条目.在运行上面的命令之前,我的arp表看起来像这样:
# arp -a
router (192.168.42.1) at 0:1c:10:b0:d4:79 on en1 ifscope [ethernet]
Run Code Online (Sandbox Code Playgroud)
运行上面的sysctl然后再做ping google.com,它看起来像这样:
# arp -a
dd-wrt (192.168.42.1) at 0:1c:10:b0:d4:79 on en1 [ethernet]
dd-wrt (192.168.42.1) at 0:1c:10:b0:d4:79 on en1 ifscope [ethernet]
Run Code Online (Sandbox Code Playgroud)
到目前为止,如此无害.但不久之后,原来的arp条目超时了,我们剩下的就是新的.MacOS尝试刷新旧条目,但它永远不会回来.tcpdump显示来自我的Mac的重复ARP请求,正确的ARP响应从路由器返回,但答案永远不会被放入ARP表.我怀疑答案只是更新同一IP 的其他 ARP条目,因为它们在某种哈希表中都有相同的密钥.
运行"arp -a -d"(或我试过的"arp -d"的任何变体)都不能成功删除这两个ARP条目 - 只有其中一个.而且显然不是正确的.
以下任何一种解决方法都会使问题消失,但这是不可取的:
route命令)并重新创建它们.但是,这些选项中的每一个都使系统暂时处于数据包不可路由的状态.此外,因为我实际上并不知道这个sysctl做了什么(有人能指出我的文档吗?)我真的希望我的程序能够在退出时将其恢复正常.但是,如果我这样做,那么下次我的程序开始时它会被打破.
我认为我真正需要做的就是清除ARP表,但也许我错过了一些明显的东西.有没有一种简单的方法来解决这个问题,还是我不得不求助于丑陋的事情?
(顺便说一句,我正在开发的程序是开源的,名为sshuttle.如果你在一台新的Mac上尝试将sysctl设置为默认值1,你应该能够轻松地复制问题.)
谢谢你的任何建议.
我需要使用 tcpdump 捕获接口并过滤掉所有 arp 和 stp/rstp 数据包。我尝试了这个命令,它确实过滤掉了 arp,但我仍然看到 rstp 数据包:
tcpdump -n -i ens224 not arp and not stp
也尝试了这个,仍然看到rstp数据包
tcpdump -n -i ens224 not stp
我究竟做错了什么?
我已经读过这篇文章,但它在 tcpdump 的上下文中没有帮助,寻找特定的语法: how to filter rtsp packet from a pcap file
arp ×10
networking ×2
windows ×2
.net ×1
asynchronous ×1
batch-file ×1
c# ×1
c++ ×1
command-line ×1
filter ×1
ip ×1
ip-address ×1
iphone ×1
lan ×1
linux ×1
linux-kernel ×1
mac-address ×1
macos ×1
ping ×1
python ×1
registry ×1
routing ×1
shell ×1
sniffer ×1
stp ×1
tcpdump ×1
winapi ×1