Network Testing Automation
FlowCoder is a WISIWYG programming framework for prototyping, debugging, validation, fuzzing as well as functional, load, and security testing of computer networks. It allows building packets for a variety of network protocols, sending them on the wire, receiving and analyzing incoming network traffic, matching requests with replies, keeping and changing the state and much more.
Local Execution is the simplest case. All packets sent by FlowCoder originate on a local host. Packets coming back in response are processed there as well.
Only FlowCoder IDE components run locally. A Flowchart, once created, is shipped for execution to a Cloud running multiple instances of Flowchart processor engine. Packets are originated and processed in a Cloud. Local user gets back diagnostics and statistical data.
An executable flowchart of a protocol finite-state machine built from graphical blocks interconnected with software wires. Sends, receives, analyzes packets, matches requests with replies, keeps and changes the state.
Build any packet from scratch. Select the layers and the stacking order. Mandatory elements are added by default. Optional elements are added with a few clicks.
Your Pcap file is your template. Import it into FlowCoder and get an executable Flowchart boilerplate right away. You'll be up and running in a few mins.
The incoming packets are delivered to Flowchart fully pre-parsed. The packet received or any part of it can be saved into a local or global variable for further use.
Change a packet field on the fly by assigning a new value to a field. Encoding is performed automatically before the packet hits the wire.
FlowCoder can play a role of a MITM Proxy. The passing through packets are decoded, modified at any layer and re-encoded on the fly.
One Flowchart works with any combination of stacks/protocols. If a particular protocol runs over UDP and TCP, the same Flowchart will work for both.
FlowCoder Flowchart processor can run locally or in a Linux VM inside the Cloud. The latter allows for unlimited scalability.
Execute Flowchart step-by-step. Set/Clear breakpoints. View Execution Log for detailed debug output, Data Watch Pane for real time changes in variables' values.
FlowCoder supports automatic parallelization. Run multiple independent calls, transactions, flows simultaneously.
One can start an RTP session, call a crypto function and much more via an API call from a Flowchart block.
Flowchart blocks can call external Python scripts. That way a Flowchart can use host OS services.
Stateless: Suppose you have a Pcap file with a packet to be sent on a wire with tcpreplay to test the robustness of an SUT stack. Often you want to vary values of the sample packet's fields to make the test coverage more thorough. FlowCoder automates creation of pcap files with all the desired "in spec" permutations of the packet. One can create "out of spec" variations of the packet for negative testing as well.
Stateful: In this case one is building an executable mini state machine reflecting the logic of packet exchange. Suppose you have a Pcap file with a record of a stateful packet exchange between two parties. Party A sends something to party B, B analyses the received packet and replies to A, A follows-up and so on. You want to simulate party A live and see how B reacts if you vary the way party A behaves slightly or not so slightly. This includes altering logic of the state machine Party A executes, and/or altering the packets it sends to B. And you want to do it quickly and with zero coding involved.
FlowCoder visualizes and speeds up development of packet driven finite-state machines and requires no coding in many cases. One can start quickly by importing a Pcap file with the packet exchange of interest.
Packet generators are often just Pcap file replayers. The best known example is tcpreplay. The fast ones usually are Intel DPDK based (CISCO T-Rex). Products of this category are either stateless, or support very simple states only (SYN/SYN ACK). Another category of the tools is targeted for testing networking state machines at application stack layers. Those systems are usually configured via a set of static GUI tables, have no or limited programmability and support for a limited set of protocols. Then there is Scapy. It's programmable, but one has to know Python from the get-go, slow (it's Python after all), with a very limited set of L4-L7 protocols supported.
FlowCoder is fully stateful, WYSIWYG programmable at any stack layer, fast (coded in C++), scalable, with a huge and growing library of supported L4-L7 and L2-L3 protocols. It allows on the fly editing of packets at any stack layer and importing of a Pcap file as a starting point of designing a networking state machine. No other networking product has a full stack packet editor as powerful as WireEdit.
If you can dissect the stack with the latest WireEdit, it is supported by FlowCoder today.
Any layer from IP up, including binary encoded application layers.
Yes. You have full read/write access to *all* packet fields at *all* stack layers before pushing packets out to a wire, and when packets are received.
Yes. An individual field, a whole PDU (networking stack layer data), or the whole packet. All parsing/encoding/decoding is done transparently by the tool, i. e. you don't have to write any code to do that.
Yes. This is how the load is scaled.
Yes and yes. You can do packet fuzzing on the fly.