python黑帽子学习中的疑难-(一)取代netcat

本文介绍如何在Linux环境下配置Python脚本使其能够直接运行,包括解释器路径的设置方法,echo命令的使用及服务器端socket绑定IP的技巧。

1.在linux下可直接像运行.exe文件一样运行.py文件,方法是在.py文件的第一行加上下面的任意一行:
1. #!/usr/bin/python
#!/usr/bin/env python
二者的区别在于:
2. #!/usr/bin/python是告诉操作系统在调用脚本时调用/usr/bin目录下的python解释器,python解释器的路径被明确给出(在终端用whereis
python查看python解释器的路径)。
#!/usr/bin/env python是为了防止用户没有将python 装在默认的 /usr/bin 路径里。当系统看到这一行的时候,首先会到env设置里查找 python
的安装路径,再调用对应路径下的解释器程序完成操作。#!/usr/bin/env
python会去环境设置寻找python目录通常推荐第二种写法。
需要再次强调的是,上述解析路径应该放在 Python 脚本的第一行。
2.echo命令的功能是在显示器上显示一段文字,一般起到一个提示的作用。
该命令的一般格式为: echo [ -n ] 字符串
其中选项n表示输出文字后不换行;字符串能加引号,也能不加引号。用echo命令输出加引号的字符串时,将字符串原样输出;用echo命令输出不加引号的字符串时,将字符串中的各个单词作为字符串输出,各字符串之间用一个空格分割。
功能说明:显示文字。
语   法:echo [-ne][字符串]或 echo [–help][–version]
补充说明:echo会将输入的字符串送往标准输出。输出的字符串间以空白字符隔开, 并在最后加上换行号。
参   数:-n 不要在最后自动换行
-e字符串出现转义字符必须使用
echo -ne “GET / HTTP/1.1\r\nHost:www.baidu.com\r\n\r\n” | ./bhnet.py -t www.baidu.com -p 80 中echo后的字符串会被sys.stdin.read()接收
3.python服务器端socket绑定IP,别的地方只用绑定port
s.bind((‘0.0.0.0’, 9999))
我们要绑定监听的地址和端口。服务器可能有多块网卡,可以绑定到某一块网卡的IP地址上,也可以用0.0.0.0绑定到所有的网络地址,还可以用127.0.0.1绑定到本机地址。127.0.0.1是一个特殊的IP地址,表示本机地址,如果绑定到这个地址,客户端必须同时在本机运行才能连接,也就是说,外部的计算机无法连接进来。
服务器绑定IP地址,绑定的是本机使用的多个IP:
可以指定某一网卡的IP;0.0.0.0表示所有IP;127.0.0.1特殊IP,只限于本地范围的通信使用(客户端要想与之通信,发送的目标地址必须是该绑定IP)

### 关于《Python黑帽子第二版》中的Netcat实现 在网络安全工具中,`netcat`是个非常重要的网络实用程序。通过使用Python来重新构建这个功能强大的工具,《Python黑帽子第二版》提供了详细的指导以及源码实例。 书中提到创建个简单的TCP客户端和服务端的例子[^1]: #### 创建TCP服务器 ```python import socket def tcp_server(host='localhost', port=9999): """启动个基本的TCP服务器""" with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s: s.bind((host, port)) s.listen(5) print(f'[*] Listening on {host}:{port}') while True: client_socket, addr = s.accept() print(f'[+] Accepted connection from {addr[0]}:{addr[1]}') request = client_socket.recv(1024) print(f"[++] Received: {request.decode('utf-8')}") client_socket.send(b"ACK!") client_socket.close() if __name__ == '__main__': tcp_server() ``` 此脚本会监听指定地址上的连接请求,并处理来自客户端的消息。当接收到数据包时,它将打印消息并回复确认信息给发送者。 #### 构建TCP客户端 为了与上述服务端通信,可以编写如下所示的个简易客户端: ```python import socket def tcp_client(target_host="127.0.0.1", target_port=9999): """向目标主机发起TCP连接""" with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as client: client.connect((target_host, target_port)) client.send(b"GET / HTTP/1.1\r\nHost: google.com\r\n\r\n") response = client.recv(4096) print(response.decode()) if __name__ == "__main__": tcp_client() ``` 这段代码尝试连接到特定的目标机器和端口上,模拟HTTP GET请求的行为并向对方发送些数据;之后读取响应内容显示出来。 这两个例子展示了如何利用Python快速搭建起基础版本的Netcat工具。当然,在实际应用过程中还需要考虑更多因素如错误处理机制、多线程支持等特性以增强其健壮性和功能性。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值