This repository has been archived on 2025-09-14. You can view files and clone it, but cannot push or open issues or pull requests.
Files
enderbyendera-realtime-prot…/fake_dynamic_test/fakecc_test_send2.py
Hao Miao 7429ef37a0 1、更新fake_dynamic_test的fakecc_test_send2.py文件
2、修改fakecc_test_send2.py相应返回值
2024-04-28 16:34:09 +08:00

133 lines
5.0 KiB
Python

import socket
import struct
from flask import request, jsonify,Flask
import json
app = Flask(__name__)
import socket
import struct
def convert_ipv4_to_int(ip_str):
binary_ip = socket.inet_aton(ip_str)
# 使用 struct.unpack 解包二进制数据到一个大端整数
ip_int = struct.unpack('!I', binary_ip)[0]
return ip_int
def convert_ipv4_address(ip_int):
return socket.inet_ntoa(struct.pack('!I', ip_int))
def parse_and_convert_ip(data_part):
parts = data_part.split('-')
src_ip = convert_ipv4_address(int(parts[0]))
dst_ip = convert_ipv4_address(int(parts[1]))
src_port = int(parts[2])
dst_port = int(parts[3])
protocol = int(parts[4])
return src_ip, dst_ip, src_port, dst_port, protocol
def send_test_data(host, port, data):
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
s.connect((host, port))
s.sendall(data.encode())
def format_data_to_json(test_data):
data_parts = test_data.split(",")
src_ip_v4, dst_ip_v4, src_port_v4, dst_port_v4, protocol_v4 = parse_and_convert_ip(data_parts[1])
formatted_data = {
"task_id": 30650,
"rule_id": 39,
"five_tuple_with_mask": {
"src_ip": src_ip_v4,
"dst_ip": dst_ip_v4,
"src_port": src_port_v4,
"dst_port": dst_port_v4,
"protocol": protocol_v4,
"mask_src_ip": data_parts[5],
"mask_dst_ip": data_parts[6],
"mask_src_port": int(data_parts[7]),
"mask_dst_ip": int(data_parts[8]),
"mask_protocol": int(data_parts[9])
},
"content": test_data # Keeping the original content in the 'content' field
}
return formatted_data
# if __name__ == "__main__":
# HOST = '127.0.0.1'
# PORT = 65432
# send_test_data(HOST, PORT, test_data)
#
# test_data="1702017420-1-175833107,1921297587-310737541-53420-6379-6-127-0,140717936336976-140717936336992-0-0-0-131-4481,0,000,440000,1,7,107,1,111,Amazon Data Services UK,0,0,440100,0,0,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,,9,10060101189,tcp.banner=$5115,39,0"
# test_data_2= "log_info,stream_v4,stream_v6,tunnel_v4,s_boundary,s_region,d_boundary,d_region,s_operators,s_owner,d_operators,d_owner,priority,flowid,s_city,s_district,d_city,d_district,msisdn,imsi,meid,uli,bsid,apn,event_id,return_info,file_type,file_name,file,url,cookie"
# print(len(test_data.split(",")), len(test_data_2.split(",")))
# print(test_data.split(",")[-7])
# print(test_data_2.split(",")[-7])
# print(test_data_2.split(",")[24])
#
# # formatted_json = format_data_to_json(test_data)
# # print(formatted_json)
# #
# # send_test_data(HOST, PORT, formatted_json)
# send_test_data(HOST, PORT, test_data)
#
# @app.route('/api/v1/kafkasend', methods=['POST'])
# def kafka_send():
# if request.method == 'POST' and request.is_json:
# data = request.json
# task_id = data.get('task_id', '')
# rule_id = data.get('rule_id', '')
#
# test_data = "1702017420-1-175833107,1921297587-310737541-53420-6379-6-127-0,140717936336976-140717936336992-0-0-0-131-4481,0,000,440000,1,7,107,1,111,Amazon Data Services UK,0,0,440100,0,0,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,,9,10060101189,tcp.banner=$5115,39,0"
#
# modified_data = f"{test_data}, {task_id}, {rule_id},{0}"
# HOST = '127.0.0.1'
# PORT = 65432
#
# send_test_data(HOST, PORT, modified_data)
# return jsonify({'message': 'Data processed successfully'}), 200
#
#
# return jsonify({'error': 'Invalid request'}), 400
@app.route('/api/v1/kafkasend', methods=['POST'])
def kafka_send():
if request.method == 'POST' and request.is_json:
data = request.get_json()
base_data = "1702017420-1-175833107,2682412653-760391609-53420-6379-6-127-0,140717936336976-140717936336992-0-0-0-131-4481,0,000,440000,1,7,107,1,111,Amazon Data Services UK,0,0,440100,0,0,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,,9,10060101189,tcp.banner=$5115"
base_data2 = "1702017420-1-175833107,760391609-2682412653-53420-6379-6-127-0,140717936336976-140717936336992-0-0-0-131-4481,0,000,440000,1,7,107,1,111,Amazon Data Services UK,0,0,440100,0,0,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,,9,10060101189,tcp.banner=$5115"
for item in data:
task_id = item.get('task_id', '')
rule_id = item.get('rule_id', '')
modified_data = f"{base_data}, {task_id}, {rule_id},{0}"
modified_data2 = f"{base_data2}, {task_id}, {rule_id},{0}"
HOST = '127.0.0.1'
PORT = 65432
print(modified_data)
send_test_data(HOST, PORT, modified_data)
send_test_data(HOST, PORT, modified_data2)
return jsonify({"success": True, "code": 200}), 200
return jsonify({'error': 'Invalid request'}), 400
if __name__ == "__main__":
print("convert_ipv4_to_int:", convert_ipv4_to_int("159.226.94.109"))
print("convert_ipv4_to_int:", convert_ipv4_to_int("45.82.167.185"))
app.run(host='0.0.0.0', port=8088, debug=True)