我应该如何执行从IPv6到long的转换,反之亦然?
到目前为止,我有:
public static long IPToLong(String addr) {
String[] addrArray = addr.split("\\.");
long num = 0;
for (int i = 0; i < addrArray.length; i++) {
int power = 3 - i;
num += ((Integer.parseInt(addrArray[i], 16) % 256 * Math.pow(256, power)));
}
return num;
}
public static String longToIP(long ip) {
return ((ip >> 24) & 0xFF) + "."
+ ((ip >> 16) & 0xFF) + "."
+ ((ip >> 8) & 0xFF) + "."
+ (ip & 0xFF);
} …Run Code Online (Sandbox Code Playgroud) 是否有可能,如果是这样,如何获得用户的远程IP地址执行查询,类似于我们可以获得用户的名字:SUSER_SNAME()?
在赏金之前更新
我正在寻找一种解决方案,它允许获取普通凡人用户的IP地址,而不是数据库所有者.TheGameiswar或njc提出的想法不允许捕获仅被授予execute权限的用户的IP地址.但是,它们是解决问题的绝佳方法.在这里,我列出了这些想法的精髓:
请看我遵循的顺序:
create procedure MyStoredProcedure as
select client_net_address
from sys.dm_exec_connections
where session_id = @@SPID
Run Code Online (Sandbox Code Playgroud)
现在添加用户并授予权限:
CREATE LOGIN [user_mortal_jack] WITH PASSWORD=N'LongYouLive!!!';
GRANT EXECUTE ON MyStoredProcedure TO [user_mortal_jack];
Run Code Online (Sandbox Code Playgroud)
当我使用查询运行该过程时:
EXECUTE AS USER = 'user_mortal_jack'
exec MyStoredProcedure
REVERT
Run Code Online (Sandbox Code Playgroud)
我收到错误消息:
正在执行的模块不受信任.需要为模块的数据库所有者授予身份验证权限,或者需要对模块进行数字签名.
即使我授予了额外的许可,我也会收到此消息:
grant VIEW SERVER STATE to [user_mortal_jack];
Run Code Online (Sandbox Code Playgroud)
如果我将存储过程的开头更改为:
create procedure MyStoredProcedure
with execute as OWNER as
Run Code Online (Sandbox Code Playgroud)
我最终得到了不同类型的错误:
无法获取有关Windows NT组/用户'blahblah\admin_user'的信息,错误代码为0x534.
赏金后更新
赏金被授予Hadi,因为他们的答案中隐藏着这一行代码:
CONNECTIONPROPERTY('client_net_address')
Run Code Online (Sandbox Code Playgroud)
让我们捕获任何凡人用户的IP地址,既不给予用户任何额外的权利,也不设置数据库TRUSTWORTHY ON选项,甚至不创建过程WITH EXECUTE AS OWNER子句.
假设我有一个存储在字符串中的IP:
String ip ="192.168.2.1"
我想得到四个整数的字节数组.我该怎么做?谢谢!
因此,对于我正在编写的与安全相关的应用程序,我实际上想要使用RFC3514("邪恶位")来确定网络中的流量集是否是恶意的.这被用作辅助机器学习引擎的训练数据,因此应用程序必须事先知道哪些数据包是邪恶的,哪些不是.
这应该相当简单,它只是设置一个IP层位.我试过用iptables或libpcap来做这件事,但要么他们没有功能,要么我没有发现它.
能够为机器外的所有流量设置它会很好,但过滤出来的东西会更好.(比如能够指定更高层协议设置的内容等等)
我也在使用Ubuntu.所以Linux解决方案更受欢 但除此之外,使用什么方法来实现这一点并不重要.Bash脚本,c/c ++ app,设置一些sysctl,等等.
提供IP,是否有node.js模块可以确定它所在的城市和州?
我在我的PHP文件上有一个函数,用于检查IP是否被禁止.出于某种原因,我的网站非常慢,问题是当我检查IP是否被禁止时.
(我删除检查的代码,我的网站再次快速)
这是我的代码:
// index.php - everything redirects to this file in the .htaccess
<?php
include('config.php');
if(isIpBanned($_SERVER['REMOTE_ADDR'])) {
die('access denied');
}
// rest of the code
Run Code Online (Sandbox Code Playgroud)
这是我的功能
// config.php
<?php
function isIpBanned($db, $ip) { // $db is declared correctly
$goodIP = $db->getRecord("SELECT is_banned FROM security.ip WHERE ip = '$ip'"); // this function works and return 1 or 0
return (bool)$goodIP;
}
Run Code Online (Sandbox Code Playgroud)
此查询大约需要2秒到3秒才能运行.为什么?我没有离开加入或其他表.
谢谢
我阅读并了解如何使用htaccess阻止ip:
order deny,allow
deny from 111.222.33.44
deny from 55.66.77.88
...
allow from all
Run Code Online (Sandbox Code Playgroud)
但我的黑色IP列表包括数千个IP.我将所有IP保存到blacklist.txt文件中.
我可以使用htaccess调用blacklist.txt并阻止存储在此文件中的所有IP吗?如果是这样,怎么样?
我正在使用
public static String getLocalIPAddress(WifiManager wm){
return Formatter.formatIpAddress(wm.getConnectionInfo().getIpAddress());
}
Run Code Online (Sandbox Code Playgroud)
获取执行设备的IP地址.如果设备连接到"公共"wlan网络,并且设备连接到由其他Android设备通过热点托管的wifi网络,则工作正常.如果设备未连接到任何wifi网络,则返回"0.0.0.0"(正确).但是,如果设备通过提供热点来托管wifi网络,则该方法仍然返回"0.0.0.0".如何在"自己的wifi网络"中获取热点提供设备的真实IP地址?
感谢和问候
我正在EC2上运行ubuntu AMI.是否可以为正在运行的EC2实例分配/请求新的公共IP地址而不终止它并再次启动它?请注意,我对使用弹性IP功能不感兴趣,我只想使用EC2分配的常规随机公共IP地址.
使用终端工具时ip,每个接口都有许多标志.
例:
eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
意义BROADCAST,MULTICAST并且UP很明确,但是什么LOWER_UP意思?我试图谷歌这个,但我没有找到一个明确的答案.当另一台主机连接到此链路时,状态转到UP,当它断开连接时,状态转到DOWN并消失LOWER_UP.这与连接状态有关吗?
编辑:
我发现了另一个有趣的事实.当我ip link set eth0 down在另一台主机(电缆保持连接)上将连接接口设置为向下(通过)时,输出变为
1: eth0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN group default qlen 1000
然后UP标志仍然存在,但不是LOWER_UP.不应该是相反的方式吗?
ip ×10
java ×2
linux ×2
networking ×2
.htaccess ×1
amazon-ec2 ×1
android ×1
android-wifi ×1
block ×1
bytearray ×1
geoip ×1
geolocation ×1
ipv6 ×1
javascript ×1
long-integer ×1
mysql ×1
node.js ×1
performance ×1
php ×1
security ×1
sql ×1
sql-server ×1
t-sql ×1
terminal ×1
text-files ×1
ubuntu ×1
wifimanager ×1