struct ip
{
#if __BYTE_ORDER == __LITTLE_ENDIAN
unsigned int ip_hl:4 /* header length */
unsigned int ip_v:4 /* version */
#endif
#if __BYTE_ORDER == __BIG_ENDIAN
unsigned int ip_v:4 /* version */
unsigned int ip_hl:4 /* header length */
#endif
u_int8_t ip_tos /* type of service */
u_short ip_len /* total length */
u_short ip_id /* identification */
u_short ip_off /* fragment offset field */
#define IP_RF 0x8000 /* reserved fragment flag */
#define IP_DF 0x4000 /* dont fragment flag */
#define IP_MF 0x2000 /* more fragments flag */
#define IP_OFFMASK 0x1fff /* mask for fragmenting bits */
u_int8_t ip_ttl /* time to live */
u_int8_t ip_p /* protocol */
u_short ip_sum /* checksum */
struct in_addr ip_src, ip_dst /* source and dest address */
}
如果你仅仅是想改变某个IP包里面的ttl值,你需要自己创建这个ip结构。如果你是想在创建socket的时候改ttl值,用setsockopt函数,具体说明在此——http://linux.die.net/man/2/setsockopt。
1.打开“记事本”程序,编写批处理命令:@echo REGEDIT4>>ChangeTTL.reg
@echo.>>ChangeTTL.reg
@echo [HKEY_LOCAL_MACHlNE\System\CurrentControlSet\Services\T cpip\Parameters]>>ChangeTTL.reg
@echo "DefaultTTL"=dword:000000">>ChangeTTL.reg
@REGEDIT /S/C ChangeTTL.reg
2.把编好的程序另存为以.bat为扩展名的批处理文件, 点击这个文件,你的 *** 作系统的缺省TTL值就会被修改为ff,即 10进制的255,也就是说把你的 *** 作系统人为地改为UNIX系统了 。同时,在该文件所在的文件夹下会生成一个名为 ChangeTTL.reg 的注册表文件。如果你想运行完这个批处理文件而不产生 ChangeTTL.reg文件,可以在此批处理文件的最后一行加上 deltree/Y ChangeTTL.reg,就可以无须确认自动删除ChangeTTL.reg文件 。
说明:在上面的命令中,echo是DOS下的回显命令,如 果想看到程序执行过程,请将“@”去掉。“>>”产生的内容将追加到它后面的文件即ChangeTTL.reg中。 而“DefaultTTL"=dword�000000ff”则是用来设置系统缺省TTL 值的,如果你想将自己的 *** 作系统的TTL值改为其他 *** 作系统的 ICMP回显应答值,请改变“"DefaultTTL"”的键值,要注意将 对应 *** 作系统的TTL值改为十六进制才可以。
一、TTL的默认值是多少?
不同的 *** 作系统,它的TTL值是不相同的。这里和大家谈谈一些常用的 *** 作系统的默认TTL值,默认情况下,Linux系统的TTL值为64或255,Windows NT/2000/XP系统的TTL值为128,Windows 98系统的TTL值为32,UNIX主机的TTL值为255。域名的dns解析默认的TTL值一般是60。
二、 *** 作系统的TTL最大值:
TTL最大值为255,如UNIX *** 作系统的TT值初始默认TTL值就是225。不同的系统最大值也是有所不同,对于实验室环境所使用 *** 作系统默认的TTL 最大值是128,所以要视情况而定。
三、如何修改TTL值
首先提醒大家这个TTL最好是设定初始默认值,不要去乱修改。一般情况下改动可能会出现错误,而且我们也不知道修改TTL值才是最合适。当然如果需要修改TTL值的话,修改TTL值其实非常简单。具体 *** 作如下:
1、点击“开始→运行”,在“运行”对话框中输入“regedit”命令并回车,d出“注册表编辑器”对话框,展开“HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesTcpipParameters”,找到“DefaultTTL”,将该值修改为十进制的“64”,重新启动服务器系统后即可。
2、或者尝试批处理文件来修改TTL值。首先打开记事本txt,将下面的代码粘贴到记事本上面:
@echo REGEDIT4>>ChangeTTL.reg
@echo.>>ChangeTTL.reg
@echo [HKEY_LOCAL_MACHlNESystemCurrentControlSetServicesT cpipParameters]>>ChangeTTL.reg
@echo "DefaultTTL"=dword:000000">>ChangeTTL.reg
@REGEDIT /S/C ChangeTTL.reg
然后在将记事本文件另存为.bat的批处理文件,文件夹自己设置,然后在运行这个.bat文件。你的 *** 作系统的缺省TTL值就会被修改为ff,即 10进制的255,也就是说把你的 *** 作系统人为地改为UNIX系统了。在修改之后会在当前文件夹.bat的路径上自动生成一个ChangeTTL.reg 的注册表文件。如果你想运行完这个批处理文件而不产生 ChangeTTL.reg文件,可以在此批处理文件的最后一行加上 deltree/Y ChangeTTL.reg,就可以无须确认自动删除ChangeTTL.reg文件 。
友情提示:
3、还有就是通过一些第三方工具来修改你的TTL值,比如苏苏查看TTL值工具就是可以查看TTL值及修改TTL值,建议你可以去试试。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)