标签: packets

在合法代码中出现0x90(NOP)序列

背景:我编写了一个python脚本来检查IP数据包,特别是数据包的有效负载/数据,以便检测它是否可以用于缓冲区(堆栈)溢出.现在据我所知,NOP雪橇用于填充堆栈,以便指令指针最终会进入您的漏洞利用代码,我可以通过查找重复出现的0x90轻松检测到.我已经看到有很多NOP命令的代码,在SQL slammer的情况下只有8个,所以我或许可以使用8作为最小值.

现在我的问题是,NOP雪橇经常用于合法代码吗?如果答案是肯定的,是否有一些特定情况(这意味着我可以查找这些情况,然后排除数据包可能无害)或者这种方法对于识别恶意代码是不实际的?

stack-overflow security x86 packets

2
推荐指数
1
解决办法
9639
查看次数

SSLStrip不适合我

我在使用Backtrack 5的MITM设置中遇到SSLStrip问题.我正在使用外部无线卡来广播无线信号,并通过以太网进行路由.我在Wireshark中成功查看了数据包,但我想使用SSLStrip查看SSL数据.这些是我用来设置MITM的初步命令.

airmon-ng start wlan1
airbase-ng --essid mitm 11 mon0
Run Code Online (Sandbox Code Playgroud)

- 新终端 -

brctl addbr mitm-bridge
brctl addif mitm-bridge eth0
brctl addif mitm-bridge at0
ifconfig eth0 0.0.0.0 up
ifconfig at0 0.0.0.0 up
ifconfig mitm-bridge 192.168.0.199 up
echo 1 > /proc/sys/net/ipv4/ip_forward
Run Code Online (Sandbox Code Playgroud)

此时,我可以在WireShark中查看数据包数据.我按照以下步骤设置SSLStrip

iptables -t nat -A PREROUTING -p tcp --destination-port 80 -j REDIRECT --to-port 666
cd /pentest/web/sslstrip
sslstrip -l 8080
Run Code Online (Sandbox Code Playgroud)

当我完成会话并打开sslstrip.log时,我没有看到任何写入该文件的数据.此外,一旦我执行iptables重定向,我无法访问互联网.请让我知道您认为问题可能是什么.

packets packet-sniffers

2
推荐指数
1
解决办法
5899
查看次数

在定义的以太网接口上发送数据包

我在Linux机器上配置了2个以太网接口.让我们说接口A和接口B.

我正在编写一个tcp客户端套接字程序,需要在定义的接口上发送数据包.

例如.

./client -intf接口A/B.

如果输入是接口A,则客户端必须仅通过接口A发送数据包,反之亦然.

任何人都可以提供一些如何实现这一点的提示吗?

提前致谢!!!

c sockets packets

2
推荐指数
1
解决办法
1776
查看次数

找出消息中发送/接收的特定字节数。(蟒蛇)

这是一个简单的python 3.x TCP服务器:

import socketserver

class MyTCPHandler(socketserver.BaseRequestHandler):

    def handle(self):
        self.data = self.request.recv(1024).strip()
        print(str(self.client_address[0]) + " wrote: " + str(self.data.decode()))

if __name__ == "__main__":
    HOST, PORT = "localhost", 9999

    server = socketserver.TCPServer((HOST, PORT), MyTCPHandler)
    server.serve_forever()
Run Code Online (Sandbox Code Playgroud)

和客户:

import socket
import sys

HOST, PORT = "localhost", 9999

sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.connect((HOST, PORT))

while( True ):
    data = input("Msg: ")

    if data == "exit()":
        print("Exiting...")
        sock.close()
        exit();

    sock.sendall(bytes(data, "utf-8"))

#numBytes = ....?
#print("Sent: " + str( numBytes ) + " bytes\n")
Run Code Online (Sandbox Code Playgroud)

我无法弄清楚如何查看消息中发送的确切字节数。我可以使用len(data),但它不能说明空终止符,因此...。是否也要发送空终止符,还是无关紧要?我尝试研究已发送/已接收消息的确切字节数,但是我找不到任何特定于python的文档,只看到了使用len()的人的示例,我认为这不是确切的...

有任何想法吗?

python sockets packets

2
推荐指数
1
解决办法
2417
查看次数

如何记录所有传入的数据包

我尝试了一个预先路由规则,将传入的数据包重定向到内部虚拟IP地址.

如何在重定向之前记录传入的数据包?

iptables -t nat -A PREROUTING -d 46.X.XX.XX -s 78.XX.XX.XX -p tcp --dport 80 --sport 1024: -j DNAT --to-destination 192.168.122.10:8080
Run Code Online (Sandbox Code Playgroud)

以下规则不起作用.

iptables -t nat -A PREROUTING -d 0/0 -s 0/0 -p tcp -j LOG --log-level 4
iptables -t nat -I PREROUTING -d 0/0 -s 0/0 -p tcp -j LOG --log-level 4
Run Code Online (Sandbox Code Playgroud)

iptables packets

2
推荐指数
1
解决办法
7728
查看次数

网络数据包究竟是什么时候创建的?

在从客户端到主机(或反之亦然)的消息传输过程中,消息实际上是在哪个点被分割成数据包?

根据我目前的理解,应用程序将整个文件放入套接字并将其完全移交给 TCP。TCP 首先缓冲文件/消息,然后在合适的时候(什么时候合适?)切割缓冲区数据的块(创建数据包)并添加 TCP 标头以将块转换为段。

如果应用层根本没有数据包,我们为什么要在应用层谈论数据包?只是整个文件......这不正确。

有人可以证实我的理解吗?

networking tcp packets packet tcp-ip

2
推荐指数
1
解决办法
954
查看次数

新的没有分配足够的内存?

好吧,我正在直接从数据包中取出数据包并从中提取TCP流.

简而言之,这意味着剥离各种标题(例如,eth-> IP-> TCP->流数据).

在我最终通过所有标题时调用的函数中,我遇到了一个奇怪的错误.

    /*Meta is a pointer to the IP header, pkt is a pointer to the TCP header*/
    virtual const u_char* processPacket(const u_char* pkt, const u_char* meta) {
        //Extract IP info from meta.
        iphdr* metaHdr = (iphdr*)meta;
        //Form TCP header from the current offset, hdr.
        const tcphdr* hdr = (const tcphdr*)pkt;

        //Do pointer math to figure out the size of the stream data.
        u_int32_t len = ntohs(metaHdr->tot_len) - metaHdr->ihl*4 - hdr->doff*4;
        if(len > 0)
        {
            //Store TCP …
Run Code Online (Sandbox Code Playgroud)

c++ packets memcpy new-operator

1
推荐指数
1
解决办法
323
查看次数

使用python解码tcp包

我正在尝试解码通过tcp连接接收的数据.数据包很小,不超过100个字节.然而,当它们中有很多时我会收到一些连接在一起的数据包.有没有办法防止这种情况发生.我正在使用python

我试图分开数据包,我的来源如下.数据包以STX字节开头,以ETX字节结束,STX后面的字节是数据包长度(数据包长度小于5无效)校验和是ETX之前的最后一个字节

def decode(data):
  while True:
    start = data.find(STX)
    if start == -1: #no stx in message
        pkt = ''
        data = ''
        break
    #stx found , next byte is the length
    pktlen = ord(data[1])
    #check message ends in ETX (pktken -1) or checksum invalid
    if pktlen < 5 or data[pktlen-1] != ETX or checksum_valid(data[start:pktlen]) == False:
        print "Invalid Pkt"
        data = data[start+1:]
        continue
    else:
        pkt = data[start:pktlen]
        data = data[pktlen:]
        break

return data , pkt
Run Code Online (Sandbox Code Playgroud)

我这样用它

#process reports
try: …
Run Code Online (Sandbox Code Playgroud)

python string tcp packets decoding

1
推荐指数
1
解决办法
1万
查看次数

Winsock替代方案(不,不是WinPCAP)

有没有可行的替代Winsock for C++?我需要的原因是因为Winsock的原始套接字行为不正常(不,这是不可修复的,不要浪费你的时间)和WinPCAP只能监控网络流量,而不是实际接收数据包.我需要能够接收完整数据包的东西,包括任何IP,UDP,TCP标头等.这样的东西是否存在,如果没有,为什么不呢?

c++ packets winsock

1
推荐指数
1
解决办法
2356
查看次数

如何动态编辑任何tcp数据包然后重新发送?

Client Application     ====>               Server Application
                   Natural TCP Packets
Local Machine          ====>               Remote Machine 




Client Application     ====> INTERCEPTOR PACKETS   ===>        Server Application
                          Edited TCP Packets
Local Machine          ====> INTERCEPTOR PACKETS   ===>            Remote Machine 
Run Code Online (Sandbox Code Playgroud)

我听说过分层服务提供商,但我不知道有什么意义

我的意思是编辑任何类型的数据包(http/https/rtmp/smtp/....)

或者有任何工具可以做到这一点吗?或者任何使用pcap库的C#?还是使用TcpListener类?

这是我的记忆研究项目,任何帮助都将非常感谢!

c# networking tcp packets

1
推荐指数
1
解决办法
5661
查看次数

如何在PCAP文件中打印所有目标端口和源端口?

import pyshark
pkts = pyshark.FileCapture("test.pcap")


for p in pkts:
      print
Run Code Online (Sandbox Code Playgroud)

我试图打印PCAP文件中的所有目标端口和源端口.我怎么能这样做?

python packets python-2.7 python-3.x pyshark

1
推荐指数
1
解决办法
741
查看次数

制作可变大小结构的方法

我需要制作一个包含头部,尾部和可变长度有效载荷字段的数据包.到目前为止,我一直在使用向量作为有效负载,所以我的结构设置如下:

struct a_struct{
 hdr a_hdr;
 vector<unsigned int> a_vector;
 tr a_tr;
};
Run Code Online (Sandbox Code Playgroud)

当我尝试访问向量的成员时,我得到一个seg错误,整个结构的sizeof给我32(在我向向量添加了大约100个元素之后).

这是一个好方法吗?什么是更好的?

我发现这篇文章 变量大小的结构C++ 他使用了一个char数组,但我正在使用一个向量.

c++ packets data-structures

0
推荐指数
1
解决办法
1352
查看次数

如何在C#中创建数据包

我总是想知道游戏如何生成这样的数据包:

22 00 11 00 6D 79 75 73 65 72 6E 61 6D 65 00 00 00 00 00 00 6D 79 70 61 73 73 77 6F 72 64 00 00 00 00 00 00

LENGTH-HEADER-USERNAME-PASSWORD
Run Code Online (Sandbox Code Playgroud)

在游戏代码中应该是他们的功能,或者他们如何编写类似的东西?简单Encoding.ASCII.GetBytes("Some String Values")吗?虽然我怀疑是这样写的.

每当我试图问某人时,他认为我想分析数据包.我没有 - 我想知道我需要做什么才能在C#中创建类似上面的数据包.

c# packets

-2
推荐指数
1
解决办法
4404
查看次数