Releases: spearmin10/iptgen
0.13.0
iptgen
iptgen is a tool to generate network packets from scripts to play them onto your netowrk or create a pcap file.
Installing
Install in the standard way:
Windows
-
Install
npcap
driver. Visit https://nmap.org/npcap/ to download and install it. -
Extract
iptgen.win32.zip
.
Linux
- Choose the archive file appropriate for your platform,
iptgen.linux-x86_64.tar.gz
oriptgen.linux-i686.tar.gz
, and extract it.
Binaries
Here are binaries:
Usage
For playing packets onto your network.
iptgen.bin --in.file <script-file> --out.eth <ifname>
e.g.
** Linux
sudo iptgen.bin --in.file ./scripts/http-upload.json --out.eth eth0
** Windows
iptgen.exe --in.file ./scripts/http-upload.json --out.eth Ethernet0
For creating a pcap file.
iptgen.bin --in.file <script-file> --out.file <filename>
e.g.
** Linux
sudo iptgen.bin --in.file ./scripts/http-upload.json --out.file http.pcap
** Windows
iptgen.exe --in.file ./scripts/http-upload.json --out.file http.pcap
To see all options that are available, run:
iptgen.bin --help
Syntex for scripts
A script is text that a list of Process
or String (comment)
are concatenated.
Process
Data Type: Object[String, Any] or Array[Object[String, Any]]
Details
Key | Type | Description |
---|---|---|
client | String | Client IP Address (e.g. 192.168.1.2), Port numer is optional. |
server | String | Server IP Address (e.g. 1.2.3.4:80), Port numer is optional. |
eth.src (Optional) | String | Client MAC Address (e.g. 11:22:33:44:55:66) |
eth.dst (Optional) | String | Server MAC Address (e.g. 11:22:33:44:55:66) |
sequence | Sequence | Sequence of sessions |
Sequence
Data Type: Array[Operation]
Operation
Standard Syntex
Data Type: Object[String, Any]
Compact Syntex
Data Type: Operation or Array[Operation]
Operation: none
No operation.
Standard Syntex
Key | Type | Value |
---|---|---|
op | String | none |
{
"op": "none"
}
Compact Syntex
Index | Type | Value / Description |
---|---|---|
[0] | String | none |
["none"]
Operation: for
`for-loop` statement for specifying iteration.
Standard Syntex
Key | Type | Value |
---|---|---|
op | String | for |
l.begin | Number | Start value of the counter |
l.end | Number | End value of the counter |
l.step | Number | Specifies the amount the counter is increased (default:1) |
l.name | String | Name of the counter |
l.sequence | Sequence | Sequence of operations in the loop |
{
"op": "for",
"l.begin": 0,
"l.end": 10,
"l.name": "i",
"l.sequence": [
["dns.q.a", "www.domain.com", "3.3.3.3"]
]
}
Compact Syntex
Index | Type | Value / Description |
---|---|---|
[0] | String | for |
[1] | Array[l.begin, l.end, l.strp] | [0]: l.begin, [1]: l.end, [2]: l.step (default:1) |
[2] | String | l.name |
[3] | Sequence | l.sequence |
["for", [0, 10], "i",
[
["dns.q.a", "www.domain.com", "2.2.2.2"]
]
]
Operation: loop
Run operations in the infinite loop
Standard Syntex
Key | Type | Value |
---|---|---|
op | String | loop |
l.sequence | Sequence | Sequence of operations in the loop |
{
"op": "loop",
"l.sequence": [
["dns.q.a", "www.domain.com", "3.3.3.3"]
]
}
Compact Syntex
Index | Type | Value / Description |
---|---|---|
[0] | String | loop |
[1] | Sequence | l.sequence |
["loop",
[
["dns.q.a", "www.domain.com", "2.2.2.2"]
]
]
Operation: for.session
`for-loop` statement for specifying iteration. The session is closed whenever looping back or when breaking the loop. A new port is assigned for a new session when closing the session.
Standard Syntex
Key | Type | Value |
---|---|---|
op | String | for.session |
l.begin | Number | Start value of the counter |
l.end | Number | End value of the counter |
l.step | Number | Specifies the amount the counter is increased |
l.name | String | Name of the counter |
l.sequence | Sequence | Sequence of operations in the loop |
{
"op": "for.session",
"l.begin": 0,
"l.end": 10,
"l.name": "i",
"l.sequence": [
["tcp.send", "text", "Hello"],
["tcp.recv", "text", "Hello"]
]
}
Compact Syntex
Index | Type | Value / Description |
---|---|---|
[0] | String | for.session |
[1] | Array[l.begin, l.end, l.strp] | [0]: l.begin, [1]: l.end, [2]: l.step |
[2] | String | l.name |
[3] | Sequence | l.sequence |
["for.session", [0, 10], "i",
[
["tcp.send", "text", "Hello"],
["tcp.recv", "text", "Hello"]
]
]
Operation: loop.session
Run operations in the infinite loop. The session is closed whenever looping back. A new port is assigned for a new session when closing the session.
Standard Syntex
Key | Type | Value |
---|---|---|
op | String | loop.session |
l.sequence | Sequence | Sequence of operations in the loop |
{
"op": "loop.session",
"l.sequence": [
["tcp.send", "text", "Hello"],
["tcp.recv", "text", "Hello"]
]
}
Compact Syntex
Index | Type | Value / Description |
---|---|---|
[0] | String | loop.session |
[1] | Sequence | l.sequence |
["loop.session", [0, 10], "i",
[
["tcp.send", "text", "Hello"],
["tcp.recv", "text", "Hello"]
]
]
Operation: for.process
`for-loop` statement for specifying iteration. A new process separated from the session is created on each iteration. New client/server IPs can be used in the processes.
Standard Syntex
Key | Type | Value |
---|---|---|
op | String | for.process |
l.begin | Number | Start value of the counter |
l.end | Number | End value of the counter |
l.step | Number | Specifies the amount the counter is increased (default:1) |
l.name | String | Name of the counter |
l.sequence | Process | Sequence of processes in the loop |
{
"op": "for.process",
"l.begin": 0,
"l.end": 10,
"l.name": "i",
"l.sequence": {
"client": "1.1.1.1",
"server": "2.2.2.2:80",
"sequence": [
["tcp.send", "text", "Hello"],
["tcp.recv", "text", "Hello"]
]
}
}
Compact Syntex
Index | Type | Value / Description |
---|---|---|
[0] | String | for.process |
[1] | Array[l.begin, l.end, l.strp] | [0]: l.begin, [1]: l.end, [2]: l.step (default:1) |
[2] | String | l.name |
[3] | Process | l.sequence |
["for.process", [0, 10], "i",
{
"client": "1.1.1.1",
"server": "2.2.2.2:80",
"sequence": [
["tcp.send", "text", "Hello"],
["tcp.recv", "text", "Hello"]
]
}
]
Operation: comment
Comment statement. The statement doesn't affect the control flow.
Standard Syntex
Key | Type | Value |
---|---|---|
op | String | comment or `` (empty) |
Any | Comment |
{
"op": "comment",
"": "This is a comment."
}
{
"op": "",
"": "This is a comment."
}
Compact Syntex
Index | Type | Value / Description |
---|---|---|
[0] | String | comment or `` (empty) |
[1-] | Any | Comment |
["comment", "This is a comment."]
["", "This is a comment."]
Operation: process
A new process separated from the session is created. New client/server IPs can be used in the process.
Standard Syntex
Key | Type | Value |
---|---|---|
op | String | process |
sequence | Process | Sequence of processes |
{
"op": "process",
"sequence": [
{
"client": "1.1.1.1",
"server": "2.2.2.2:9999",
"sequence": [
["tcp.send", "text", "Hello"]
]
},
{
"client": "3.3.3.3",
"server": "4.4.4.4:9999",
"sequence": [
["tcp.send", "text", "Hello"]
]
}
]
}
Compact Syntex
Index | Type | Value / Description |
---|---|---|
[0] | String | process |
[1] | Process | sequence |
["process",
[
{
"client": "1.1.1.1",
"server": "2.2.2.2:9999",
"sequence": [
["tcp.send", "text", "Hello"]
]
},
{
"client": "3.3.3.3",
"server": "4.4.4.4:9999",
"sequence": [
["tcp.send", "text", "Hello"]
]
}
]
]
Operation: session.new
The session is closed and a new port ...
0.12.0
iptgen
iptgen is a tool to generate network packets from scripts to play them onto your netowrk or create a pcap file.
Installing
Install in the standard way:
Windows
-
Install
npcap
driver. Visit https://nmap.org/npcap/ to download and install it. -
Extract
iptgen.win32.zip
.
Linux
- Choose the archive file appropriate for your platform,
iptgen.linux-x86_64.tar.gz
oriptgen.linux-i686.tar.gz
, and extract it.
Binaries
Here are binaries:
Usage
For playing packets onto your network.
iptgen.bin --in.file <script-file> --out.eth <ifname>
e.g.
** Linux
sudo iptgen.bin --in.file ./scripts/http-upload.json --out.eth eth0
** Windows
iptgen.exe --in.file ./scripts/http-upload.json --out.eth Ethernet0
For creating a pcap file.
iptgen.bin --in.file <script-file> --out.file <filename>
e.g.
** Linux
sudo iptgen.bin --in.file ./scripts/http-upload.json --out.file http.pcap
** Windows
iptgen.exe --in.file ./scripts/http-upload.json --out.file http.pcap
To see all options that are available, run:
iptgen.bin --help
Syntex for scripts
A script is text that a list of Process
or String (comment)
are concatenated.
Process
Data Type: Object[String, Any] or Array[Object[String, Any]]
Details
Key | Type | Description |
---|---|---|
client | String | Client IP Address (e.g. 192.168.1.2), Port numer is optional. |
server | String | Server IP Address (e.g. 1.2.3.4:80), Port numer is optional. |
eth.src (Optional) | String | Client MAC Address (e.g. 11:22:33:44:55:66) |
eth.dst (Optional) | String | Server MAC Address (e.g. 11:22:33:44:55:66) |
sequence | Sequence | Sequence of sessions |
Sequence
Data Type: Array[Operation]
Operation
Standard Syntex
Data Type: Object[String, Any]
Compact Syntex
Data Type: Operation or Array[Operation]
Operation: none
No operation.
Standard Syntex
Key | Type | Value |
---|---|---|
op | String | none |
{
"op": "none"
}
Compact Syntex
Index | Type | Value / Description |
---|---|---|
[0] | String | none |
["none"]
Operation: for
`for-loop` statement for specifying iteration.
Standard Syntex
Key | Type | Value |
---|---|---|
op | String | for |
l.begin | Number | Start value of the counter |
l.end | Number | End value of the counter |
l.step | Number | Specifies the amount the counter is increased (default:1) |
l.name | String | Name of the counter |
l.sequence | Sequence | Sequence of operations in the loop |
{
"op": "for",
"l.begin": 0,
"l.end": 10,
"l.name": "i",
"l.sequence": [
["dns.q.a", "www.domain.com", "3.3.3.3"]
]
}
Compact Syntex
Index | Type | Value / Description |
---|---|---|
[0] | String | for |
[1] | Array[l.begin, l.end, l.strp] | [0]: l.begin, [1]: l.end, [2]: l.step (default:1) |
[2] | String | l.name |
[3] | Sequence | l.sequence |
["for", [0, 10], "i",
[
["dns.q.a", "www.domain.com", "2.2.2.2"]
]
]
Operation: loop
Run operations in the infinite loop
Standard Syntex
Key | Type | Value |
---|---|---|
op | String | loop |
l.sequence | Sequence | Sequence of operations in the loop |
{
"op": "loop",
"l.sequence": [
["dns.q.a", "www.domain.com", "3.3.3.3"]
]
}
Compact Syntex
Index | Type | Value / Description |
---|---|---|
[0] | String | loop |
[1] | Sequence | l.sequence |
["loop",
[
["dns.q.a", "www.domain.com", "2.2.2.2"]
]
]
Operation: for.session
`for-loop` statement for specifying iteration. The session is closed whenever looping back or when breaking the loop. A new port is assigned for a new session when closing the session.
Standard Syntex
Key | Type | Value |
---|---|---|
op | String | for.session |
l.begin | Number | Start value of the counter |
l.end | Number | End value of the counter |
l.step | Number | Specifies the amount the counter is increased |
l.name | String | Name of the counter |
l.sequence | Sequence | Sequence of operations in the loop |
{
"op": "for.session",
"l.begin": 0,
"l.end": 10,
"l.name": "i",
"l.sequence": [
["tcp.send", "text", "Hello"],
["tcp.recv", "text", "Hello"]
]
}
Compact Syntex
Index | Type | Value / Description |
---|---|---|
[0] | String | for.session |
[1] | Array[l.begin, l.end, l.strp] | [0]: l.begin, [1]: l.end, [2]: l.step |
[2] | String | l.name |
[3] | Sequence | l.sequence |
["for.session", [0, 10], "i",
[
["tcp.send", "text", "Hello"],
["tcp.recv", "text", "Hello"]
]
]
Operation: loop.session
Run operations in the infinite loop. The session is closed whenever looping back. A new port is assigned for a new session when closing the session.
Standard Syntex
Key | Type | Value |
---|---|---|
op | String | loop.session |
l.sequence | Sequence | Sequence of operations in the loop |
{
"op": "loop.session",
"l.sequence": [
["tcp.send", "text", "Hello"],
["tcp.recv", "text", "Hello"]
]
}
Compact Syntex
Index | Type | Value / Description |
---|---|---|
[0] | String | loop.session |
[1] | Sequence | l.sequence |
["loop.session", [0, 10], "i",
[
["tcp.send", "text", "Hello"],
["tcp.recv", "text", "Hello"]
]
]
Operation: for.process
`for-loop` statement for specifying iteration. A new process separated from the session is created on each iteration. New client/server IPs can be used in the processes.
Standard Syntex
Key | Type | Value |
---|---|---|
op | String | for.process |
l.begin | Number | Start value of the counter |
l.end | Number | End value of the counter |
l.step | Number | Specifies the amount the counter is increased (default:1) |
l.name | String | Name of the counter |
l.sequence | Process | Sequence of processes in the loop |
{
"op": "for.process",
"l.begin": 0,
"l.end": 10,
"l.name": "i",
"l.sequence": {
"client": "1.1.1.1",
"server": "2.2.2.2:80",
"sequence": [
["tcp.send", "text", "Hello"],
["tcp.recv", "text", "Hello"]
]
}
}
Compact Syntex
Index | Type | Value / Description |
---|---|---|
[0] | String | for.process |
[1] | Array[l.begin, l.end, l.strp] | [0]: l.begin, [1]: l.end, [2]: l.step (default:1) |
[2] | String | l.name |
[3] | Process | l.sequence |
["for.process", [0, 10], "i",
{
"client": "1.1.1.1",
"server": "2.2.2.2:80",
"sequence": [
["tcp.send", "text", "Hello"],
["tcp.recv", "text", "Hello"]
]
}
]
Operation: comment
Comment statement. The statement doesn't affect the control flow.
Standard Syntex
Key | Type | Value |
---|---|---|
op | String | comment or `` (empty) |
Any | Comment |
{
"op": "comment",
"": "This is a comment."
}
{
"op": "",
"": "This is a comment."
}
Compact Syntex
Index | Type | Value / Description |
---|---|---|
[0] | String | comment or `` (empty) |
[1-] | Any | Comment |
["comment", "This is a comment."]
["", "This is a comment."]
Operation: process
A new process separated from the session is created. New client/server IPs can be used in the process.
Standard Syntex
Key | Type | Value |
---|---|---|
op | String | process |
sequence | Process | Sequence of processes |
{
"op": "process",
"sequence": [
{
"client": "1.1.1.1",
"server": "2.2.2.2:9999",
"sequence": [
["tcp.send", "text", "Hello"]
]
},
{
"client": "3.3.3.3",
"server": "4.4.4.4:9999",
"sequence": [
["tcp.send", "text", "Hello"]
]
}
]
}
Compact Syntex
Index | Type | Value / Description |
---|---|---|
[0] | String | process |
[1] | Process | sequence |
["process",
[
{
"client": "1.1.1.1",
"server": "2.2.2.2:9999",
"sequence": [
["tcp.send", "text", "Hello"]
]
},
{
"client": "3.3.3.3",
"server": "4.4.4.4:9999",
"sequence": [
["tcp.send", "text", "Hello"]
]
}
]
]
Operation: session.new
The session is closed and a new port ...
0.11.0
iptgen
iptgen is a tool to generate network packets from scripts to play them onto your netowrk or create a pcap file.
Installing
Install in the standard way:
Windows
-
Install
npcap
driver. Visit https://nmap.org/npcap/ to download and install it. -
Extract
iptgen.win32.zip
.
Linux
- Choose the archive file appropriate for your platform,
iptgen.linux-x86_64.tar.gz
oriptgen.linux-i686.tar.gz
, and extract it.
Binaries
Here are binaries:
Usage
For playing packets onto your network.
iptgen.bin --in.file <script-file> --out.eth <ifname>
e.g.
** Linux
sudo iptgen.bin --in.file ./scripts/http-upload.json --out.eth eth0
** Windows
iptgen.exe --in.file ./scripts/http-upload.json --out.eth Ethernet0
For creating a pcap file.
iptgen.bin --in.file <script-file> --out.file <filename>
e.g.
** Linux
sudo iptgen.bin --in.file ./scripts/http-upload.json --out.file http.pcap
** Windows
iptgen.exe --in.file ./scripts/http-upload.json --out.file http.pcap
To see all options that are available, run:
iptgen.bin --help
Syntex for scripts
A script is text that a list of Process
or String (comment)
are concatenated.
Process
Data Type: Object[String, Any] or Array[Object[String, Any]]
Details
Key | Type | Description |
---|---|---|
client | String | Client IP Address (e.g. 192.168.1.2), Port numer is optional. |
server | String | Server IP Address (e.g. 1.2.3.4:80), Port numer is optional. |
eth.src (Optional) | String | Client MAC Address (e.g. 11:22:33:44:55:66) |
eth.dst (Optional) | String | Server MAC Address (e.g. 11:22:33:44:55:66) |
sequence | Sequence | Sequence of sessions |
Sequence
Data Type: Array[Operation]
Operation
Standard Syntex
Data Type: Object[String, Any]
Compact Syntex
Data Type: Operation or Array[Operation]
Operation: none
No operation.
Standard Syntex
Key | Type | Value |
---|---|---|
op | String | none |
{
"op": "none"
}
Compact Syntex
Index | Type | Value / Description |
---|---|---|
[0] | String | none |
["none"]
Operation: for
`for-loop` statement for specifying iteration.
Standard Syntex
Key | Type | Value |
---|---|---|
op | String | for |
l.begin | Number | Start value of the counter |
l.end | Number | End value of the counter |
l.step | Number | Specifies the amount the counter is increased (default:1) |
l.name | String | Name of the counter |
l.sequence | Sequence | Sequence of operations in the loop |
{
"op": "for",
"l.begin": 0,
"l.end": 10,
"l.name": "i",
"l.sequence": [
["dns.q.a", "www.domain.com", "3.3.3.3"]
]
}
Compact Syntex
Index | Type | Value / Description |
---|---|---|
[0] | String | for |
[1] | Array[l.begin, l.end, l.strp] | [0]: l.begin, [1]: l.end, [2]: l.step (default:1) |
[2] | String | l.name |
[3] | Sequence | l.sequence |
["for", [0, 10], "i",
[
["dns.q.a", "www.domain.com", "2.2.2.2"]
]
]
Operation: loop
Run operations in the infinite loop
Standard Syntex
Key | Type | Value |
---|---|---|
op | String | loop |
l.sequence | Sequence | Sequence of operations in the loop |
{
"op": "loop",
"l.sequence": [
["dns.q.a", "www.domain.com", "3.3.3.3"]
]
}
Compact Syntex
Index | Type | Value / Description |
---|---|---|
[0] | String | loop |
[1] | Sequence | l.sequence |
["loop",
[
["dns.q.a", "www.domain.com", "2.2.2.2"]
]
]
Operation: for.session
`for-loop` statement for specifying iteration. The session is closed whenever looping back or when breaking the loop. A new port is assigned for a new session when closing the session.
Standard Syntex
Key | Type | Value |
---|---|---|
op | String | for.session |
l.begin | Number | Start value of the counter |
l.end | Number | End value of the counter |
l.step | Number | Specifies the amount the counter is increased |
l.name | String | Name of the counter |
l.sequence | Sequence | Sequence of operations in the loop |
{
"op": "for.session",
"l.begin": 0,
"l.end": 10,
"l.name": "i",
"l.sequence": [
["tcp.send", "text", "Hello"],
["tcp.recv", "text", "Hello"]
]
}
Compact Syntex
Index | Type | Value / Description |
---|---|---|
[0] | String | for.session |
[1] | Array[l.begin, l.end, l.strp] | [0]: l.begin, [1]: l.end, [2]: l.step |
[2] | String | l.name |
[3] | Sequence | l.sequence |
["for.session", [0, 10], "i",
[
["tcp.send", "text", "Hello"],
["tcp.recv", "text", "Hello"]
]
]
Operation: loop.session
Run operations in the infinite loop. The session is closed whenever looping back. A new port is assigned for a new session when closing the session.
Standard Syntex
Key | Type | Value |
---|---|---|
op | String | loop.session |
l.sequence | Sequence | Sequence of operations in the loop |
{
"op": "loop.session",
"l.sequence": [
["tcp.send", "text", "Hello"],
["tcp.recv", "text", "Hello"]
]
}
Compact Syntex
Index | Type | Value / Description |
---|---|---|
[0] | String | loop.session |
[1] | Sequence | l.sequence |
["loop.session", [0, 10], "i",
[
["tcp.send", "text", "Hello"],
["tcp.recv", "text", "Hello"]
]
]
Operation: for.process
`for-loop` statement for specifying iteration. A new process separated from the session is created on each iteration. New client/server IPs can be used in the processes.
Standard Syntex
Key | Type | Value |
---|---|---|
op | String | for.process |
l.begin | Number | Start value of the counter |
l.end | Number | End value of the counter |
l.step | Number | Specifies the amount the counter is increased (default:1) |
l.name | String | Name of the counter |
l.sequence | Process | Sequence of processes in the loop |
{
"op": "for.process",
"l.begin": 0,
"l.end": 10,
"l.name": "i",
"l.sequence": {
"client": "1.1.1.1",
"server": "2.2.2.2:80",
"sequence": [
["tcp.send", "text", "Hello"],
["tcp.recv", "text", "Hello"]
]
}
}
Compact Syntex
Index | Type | Value / Description |
---|---|---|
[0] | String | for.process |
[1] | Array[l.begin, l.end, l.strp] | [0]: l.begin, [1]: l.end, [2]: l.step (default:1) |
[2] | String | l.name |
[3] | Process | l.sequence |
["for.process", [0, 10], "i",
{
"client": "1.1.1.1",
"server": "2.2.2.2:80",
"sequence": [
["tcp.send", "text", "Hello"],
["tcp.recv", "text", "Hello"]
]
}
]
Operation: comment
Comment statement. The statement doesn't affect the control flow.
Standard Syntex
Key | Type | Value |
---|---|---|
op | String | comment or `` (empty) |
Any | Comment |
{
"op": "comment",
"": "This is a comment."
}
{
"op": "",
"": "This is a comment."
}
Compact Syntex
Index | Type | Value / Description |
---|---|---|
[0] | String | comment or `` (empty) |
[1-] | Any | Comment |
["comment", "This is a comment."]
["", "This is a comment."]
Operation: process
A new process separated from the session is created. New client/server IPs can be used in the process.
Standard Syntex
Key | Type | Value |
---|---|---|
op | String | process |
sequence | Process | Sequence of processes |
{
"op": "process",
"sequence": [
{
"client": "1.1.1.1",
"server": "2.2.2.2:9999",
"sequence": [
["tcp.send", "text", "Hello"]
]
},
{
"client": "3.3.3.3",
"server": "4.4.4.4:9999",
"sequence": [
["tcp.send", "text", "Hello"]
]
}
]
}
Compact Syntex
Index | Type | Value / Description |
---|---|---|
[0] | String | process |
[1] | Process | sequence |
["process",
[
{
"client": "1.1.1.1",
"server": "2.2.2.2:9999",
"sequence": [
["tcp.send", "text", "Hello"]
]
},
{
"client": "3.3.3.3",
"server": "4.4.4.4:9999",
"sequence": [
["tcp.send", "text", "Hello"]
]
}
]
]
Operation: session.new
The session is closed and a new port ...
0.10.0
iptgen
iptgen is a tool to generate network packets from scripts to play them onto your netowrk or create a pcap file.
Installing
Install in the standard way:
Windows
-
Install
npcap
driver. Visit https://nmap.org/npcap/ to download and install it. -
Extract
iptgen.win32.zip
.
Linux
- Choose the archive file appropriate for your platform,
iptgen.linux-x86_64.tar.gz
oriptgen.linux-i686.tar.gz
, and extract it.
Binaries
Here are binaries:
Usage
For playing packets onto your network.
iptgen.bin --in.file <script-file> --out.eth <ifname>
e.g.
** Linux
sudo iptgen.bin --in.file ./scripts/http-upload.json --out.eth eth0
** Windows
iptgen.exe --in.file ./scripts/http-upload.json --out.eth Ethernet0
For creating a pcap file.
iptgen.bin --in.file <script-file> --out.file <filename>
e.g.
** Linux
sudo iptgen.bin --in.file ./scripts/http-upload.json --out.file http.pcap
** Windows
iptgen.exe --in.file ./scripts/http-upload.json --out.file http.pcap
To see all options that are available, run:
iptgen.bin --help
Syntex for scripts
A script is text that a list of Process
or String (comment)
are concatenated.
Process
Data Type: Object[String, Any] or Array[Object[String, Any]]
Details
Key | Type | Description |
---|---|---|
client | String | Client IP Address (e.g. 192.168.1.2), Port numer is optional. |
server | String | Server IP Address (e.g. 1.2.3.4:80), Port numer is optional. |
eth.src (Optional) | String | Client MAC Address (e.g. 11:22:33:44:55:66) |
eth.dst (Optional) | String | Server MAC Address (e.g. 11:22:33:44:55:66) |
sequence | Sequence | Sequence of sessions |
Sequence
Data Type: Array[Operation]
Operation
Standard Syntex
Data Type: Object[String, Any]
Compact Syntex
Data Type: Operation or Array[Operation]
Operation: none
No operation.
Standard Syntex
Key | Type | Value |
---|---|---|
op | String | none |
{
"op": "none"
}
Compact Syntex
Index | Type | Value / Description |
---|---|---|
[0] | String | none |
["none"]
Operation: for
`for-loop` statement for specifying iteration.
Standard Syntex
Key | Type | Value |
---|---|---|
op | String | for |
l.begin | Number | Start value of the counter |
l.end | Number | End value of the counter |
l.step | Number | Specifies the amount the counter is increased (default:1) |
l.name | String | Name of the counter |
l.sequence | Sequence | Sequence of operations in the loop |
{
"op": "for",
"l.begin": 0,
"l.end": 10,
"l.name": "i",
"l.sequence": [
["dns.q.a", "www.domain.com", "3.3.3.3"]
]
}
Compact Syntex
Index | Type | Value / Description |
---|---|---|
[0] | String | for |
[1] | Array[l.begin, l.end, l.strp] | [0]: l.begin, [1]: l.end, [2]: l.step (default:1) |
[2] | String | l.name |
[3] | Sequence | l.sequence |
["for", [0, 10], "i",
[
["dns.q.a", "www.domain.com", "2.2.2.2"]
]
]
Operation: loop
Run operations in the infinite loop
Standard Syntex
Key | Type | Value |
---|---|---|
op | String | loop |
l.sequence | Sequence | Sequence of operations in the loop |
{
"op": "loop",
"l.sequence": [
["dns.q.a", "www.domain.com", "3.3.3.3"]
]
}
Compact Syntex
Index | Type | Value / Description |
---|---|---|
[0] | String | loop |
[1] | Sequence | l.sequence |
["loop",
[
["dns.q.a", "www.domain.com", "2.2.2.2"]
]
]
Operation: for.session
`for-loop` statement for specifying iteration. The session is closed whenever looping back or when breaking the loop. A new port is assigned for a new session when closing the session.
Standard Syntex
Key | Type | Value |
---|---|---|
op | String | for.session |
l.begin | Number | Start value of the counter |
l.end | Number | End value of the counter |
l.step | Number | Specifies the amount the counter is increased |
l.name | String | Name of the counter |
l.sequence | Sequence | Sequence of operations in the loop |
{
"op": "for.session",
"l.begin": 0,
"l.end": 10,
"l.name": "i",
"l.sequence": [
["tcp.send", "text", "Hello"],
["tcp.recv", "text", "Hello"]
]
}
Compact Syntex
Index | Type | Value / Description |
---|---|---|
[0] | String | for.session |
[1] | Array[l.begin, l.end, l.strp] | [0]: l.begin, [1]: l.end, [2]: l.step |
[2] | String | l.name |
[3] | Sequence | l.sequence |
["for.session", [0, 10], "i",
[
["tcp.send", "text", "Hello"],
["tcp.recv", "text", "Hello"]
]
]
Operation: loop.session
Run operations in the infinite loop. The session is closed whenever looping back. A new port is assigned for a new session when closing the session.
Standard Syntex
Key | Type | Value |
---|---|---|
op | String | loop.session |
l.sequence | Sequence | Sequence of operations in the loop |
{
"op": "loop.session",
"l.sequence": [
["tcp.send", "text", "Hello"],
["tcp.recv", "text", "Hello"]
]
}
Compact Syntex
Index | Type | Value / Description |
---|---|---|
[0] | String | loop.session |
[1] | Sequence | l.sequence |
["loop.session", [0, 10], "i",
[
["tcp.send", "text", "Hello"],
["tcp.recv", "text", "Hello"]
]
]
Operation: for.process
`for-loop` statement for specifying iteration. A new process separated from the session is created on each iteration. New client/server IPs can be used in the processes.
Standard Syntex
Key | Type | Value |
---|---|---|
op | String | for.process |
l.begin | Number | Start value of the counter |
l.end | Number | End value of the counter |
l.step | Number | Specifies the amount the counter is increased (default:1) |
l.name | String | Name of the counter |
l.sequence | Process | Sequence of processes in the loop |
{
"op": "for.process",
"l.begin": 0,
"l.end": 10,
"l.name": "i",
"l.sequence": {
"client": "1.1.1.1",
"server": "2.2.2.2:80",
"sequence": [
["tcp.send", "text", "Hello"],
["tcp.recv", "text", "Hello"]
]
}
}
Compact Syntex
Index | Type | Value / Description |
---|---|---|
[0] | String | for.process |
[1] | Array[l.begin, l.end, l.strp] | [0]: l.begin, [1]: l.end, [2]: l.step (default:1) |
[2] | String | l.name |
[3] | Process | l.sequence |
["for.process", [0, 10], "i",
{
"client": "1.1.1.1",
"server": "2.2.2.2:80",
"sequence": [
["tcp.send", "text", "Hello"],
["tcp.recv", "text", "Hello"]
]
}
]
Operation: comment
Comment statement. The statement doesn't affect the control flow.
Standard Syntex
Key | Type | Value |
---|---|---|
op | String | comment or `` (empty) |
Any | Comment |
{
"op": "comment",
"": "This is a comment."
}
{
"op": "",
"": "This is a comment."
}
Compact Syntex
Index | Type | Value / Description |
---|---|---|
[0] | String | comment or `` (empty) |
[1-] | Any | Comment |
["comment", "This is a comment."]
["", "This is a comment."]
Operation: process
A new process separated from the session is created. New client/server IPs can be used in the process.
Standard Syntex
Key | Type | Value |
---|---|---|
op | String | process |
sequence | Process | Sequence of processes |
{
"op": "process",
"sequence": [
{
"client": "1.1.1.1",
"server": "2.2.2.2:9999",
"sequence": [
["tcp.send", "text", "Hello"]
]
},
{
"client": "3.3.3.3",
"server": "4.4.4.4:9999",
"sequence": [
["tcp.send", "text", "Hello"]
]
}
]
}
Compact Syntex
Index | Type | Value / Description |
---|---|---|
[0] | String | process |
[1] | Process | sequence |
["process",
[
{
"client": "1.1.1.1",
"server": "2.2.2.2:9999",
"sequence": [
["tcp.send", "text", "Hello"]
]
},
{
"client": "3.3.3.3",
"server": "4.4.4.4:9999",
"sequence": [
["tcp.send", "text", "Hello"]
]
}
]
]
Operation: session.new
The session is closed and a new port ...
0.9.0
iptgen
iptgen is a tool to generate network packets from scripts to play them onto your netowrk or create a pcap file.
Installing
Install in the standard way:
Windows
-
Install
npcap
driver. Visit https://nmap.org/npcap/ to download and install it. -
Extract
iptgen.win32.zip
.
Linux
- Choose the archive file appropriate for your platform,
iptgen.linux-x86_64.tar.gz
oriptgen.linux-i686.tar.gz
, and extract it.
Binaries
Here are binaries:
Usage
For playing packets onto your network.
iptgen.bin --in.file <script-file> --out.eth <ifname>
e.g.
** Linux
sudo iptgen.bin --in.file ./scripts/http-upload.json --out.eth eth0
** Windows
iptgen.exe --in.file ./scripts/http-upload.json --out.eth Ethernet0
For creating a pcap file.
iptgen.bin --in.file <script-file> --out.file <filename>
e.g.
** Linux
sudo iptgen.bin --in.file ./scripts/http-upload.json --out.file http.pcap
** Windows
iptgen.exe --in.file ./scripts/http-upload.json --out.file http.pcap
To see all options that are available, run:
iptgen.bin --help
Syntex for scripts
A script is text that a list of Process
or String (comment)
are concatenated.
Process
Data Type: Object[String, Any] or Array[Object[String, Any]]
Details
Key | Type | Description |
---|---|---|
client | String | Client IP Address (e.g. 192.168.1.2), Port numer is optional. |
server | String | Server IP Address (e.g. 1.2.3.4:80), Port numer is optional. |
eth.src (Optional) | String | Client MAC Address (e.g. 11:22:33:44:55:66) |
eth.dst (Optional) | String | Server MAC Address (e.g. 11:22:33:44:55:66) |
sequence | Sequence | Sequence of sessions |
Sequence
Data Type: Array[Operation]
Operation
Standard Syntex
Data Type: Object[String, Any]
Compact Syntex
Data Type: Operation or Array[Operation]
Operation: none
No operation.
Standard Syntex
Key | Type | Value |
---|---|---|
op | String | none |
{
"op": "none"
}
Compact Syntex
Index | Type | Value / Description |
---|---|---|
[0] | String | none |
["none"]
Operation: for
`for-loop` statement for specifying iteration.
Standard Syntex
Key | Type | Value |
---|---|---|
op | String | for |
l.begin | Number | Start value of the counter |
l.end | Number | End value of the counter |
l.step | Number | Specifies the amount the counter is increased (default:1) |
l.name | String | Name of the counter |
l.sequence | Sequence | Sequence of operations in the loop |
{
"op": "for",
"l.begin": 0,
"l.end": 10,
"l.name": "i",
"l.sequence": [
["dns.q.a", "www.domain.com", "3.3.3.3"]
]
}
Compact Syntex
Index | Type | Value / Description |
---|---|---|
[0] | String | for |
[1] | Array[l.begin, l.end, l.strp] | [0]: l.begin, [1]: l.end, [2]: l.step (default:1) |
[2] | String | l.name |
[3] | Sequence | l.sequence |
["for", [0, 10], "i",
[
["dns.q.a", "www.domain.com", "2.2.2.2"]
]
]
Operation: loop
Run operations in the infinite loop
Standard Syntex
Key | Type | Value |
---|---|---|
op | String | loop |
l.sequence | Sequence | Sequence of operations in the loop |
{
"op": "loop",
"l.sequence": [
["dns.q.a", "www.domain.com", "3.3.3.3"]
]
}
Compact Syntex
Index | Type | Value / Description |
---|---|---|
[0] | String | loop |
[1] | Sequence | l.sequence |
["loop",
[
["dns.q.a", "www.domain.com", "2.2.2.2"]
]
]
Operation: for.session
`for-loop` statement for specifying iteration. The session is closed whenever looping back or when breaking the loop. A new port is assigned for a new session when closing the session.
Standard Syntex
Key | Type | Value |
---|---|---|
op | String | for.session |
l.begin | Number | Start value of the counter |
l.end | Number | End value of the counter |
l.step | Number | Specifies the amount the counter is increased |
l.name | String | Name of the counter |
l.sequence | Sequence | Sequence of operations in the loop |
{
"op": "for.session",
"l.begin": 0,
"l.end": 10,
"l.name": "i",
"l.sequence": [
["tcp.send", "text", "Hello"],
["tcp.recv", "text", "Hello"]
]
}
Compact Syntex
Index | Type | Value / Description |
---|---|---|
[0] | String | for.session |
[1] | Array[l.begin, l.end, l.strp] | [0]: l.begin, [1]: l.end, [2]: l.step |
[2] | String | l.name |
[3] | Sequence | l.sequence |
["for.session", [0, 10], "i",
[
["tcp.send", "text", "Hello"],
["tcp.recv", "text", "Hello"]
]
]
Operation: loop.session
Run operations in the infinite loop. The session is closed whenever looping back. A new port is assigned for a new session when closing the session.
Standard Syntex
Key | Type | Value |
---|---|---|
op | String | loop.session |
l.sequence | Sequence | Sequence of operations in the loop |
{
"op": "loop.session",
"l.sequence": [
["tcp.send", "text", "Hello"],
["tcp.recv", "text", "Hello"]
]
}
Compact Syntex
Index | Type | Value / Description |
---|---|---|
[0] | String | loop.session |
[1] | Sequence | l.sequence |
["loop.session", [0, 10], "i",
[
["tcp.send", "text", "Hello"],
["tcp.recv", "text", "Hello"]
]
]
Operation: for.process
`for-loop` statement for specifying iteration. A new process separated from the session is created on each iteration. New client/server IPs can be used in the processes.
Standard Syntex
Key | Type | Value |
---|---|---|
op | String | for.process |
l.begin | Number | Start value of the counter |
l.end | Number | End value of the counter |
l.step | Number | Specifies the amount the counter is increased (default:1) |
l.name | String | Name of the counter |
l.sequence | Process | Sequence of processes in the loop |
{
"op": "for.process",
"l.begin": 0,
"l.end": 10,
"l.name": "i",
"l.sequence": {
"client": "1.1.1.1",
"server": "2.2.2.2:80",
"sequence": [
["tcp.send", "text", "Hello"],
["tcp.recv", "text", "Hello"]
]
}
}
Compact Syntex
Index | Type | Value / Description |
---|---|---|
[0] | String | for.process |
[1] | Array[l.begin, l.end, l.strp] | [0]: l.begin, [1]: l.end, [2]: l.step (default:1) |
[2] | String | l.name |
[3] | Process | l.sequence |
["for.process", [0, 10], "i",
{
"client": "1.1.1.1",
"server": "2.2.2.2:80",
"sequence": [
["tcp.send", "text", "Hello"],
["tcp.recv", "text", "Hello"]
]
}
]
Operation: comment
Comment statement. The statement doesn't affect the control flow.
Standard Syntex
Key | Type | Value |
---|---|---|
op | String | comment or `` (empty) |
Any | Comment |
{
"op": "comment",
"": "This is a comment."
}
{
"op": "",
"": "This is a comment."
}
Compact Syntex
Index | Type | Value / Description |
---|---|---|
[0] | String | comment or `` (empty) |
[1-] | Any | Comment |
["comment", "This is a comment."]
["", "This is a comment."]
Operation: process
A new process separated from the session is created. New client/server IPs can be used in the process.
Standard Syntex
Key | Type | Value |
---|---|---|
op | String | process |
sequence | Process | Sequence of processes |
{
"op": "process",
"sequence": [
{
"client": "1.1.1.1",
"server": "2.2.2.2:9999",
"sequence": [
["tcp.send", "text", "Hello"]
]
},
{
"client": "3.3.3.3",
"server": "4.4.4.4:9999",
"sequence": [
["tcp.send", "text", "Hello"]
]
}
]
}
Compact Syntex
Index | Type | Value / Description |
---|---|---|
[0] | String | process |
[1] | Process | sequence |
["process",
[
{
"client": "1.1.1.1",
"server": "2.2.2.2:9999",
"sequence": [
["tcp.send", "text", "Hello"]
]
},
{
"client": "3.3.3.3",
"server": "4.4.4.4:9999",
"sequence": [
["tcp.send", "text", "Hello"]
]
}
]
]
Operation: session.new
The session is closed and a new port is ...
0.8.0
iptgen
iptgen is a tool to generate network packets from scripts to play them onto your netowrk or create a pcap file.
Installing
Install in the standard way:
Windows
-
Install
npcap
driver. Visit https://nmap.org/npcap/ to download and install it. -
Extract
iptgen.win32.zip
.
Linux
- Choose the archive file appropriate for your platform,
iptgen.linux-x86_64.tar.gz
oriptgen.linux-i686.tar.gz
, and extract it.
Binaries
Here are binaries:
Usage
For playing packets onto your network.
iptgen.bin --in.file <script-file> --out.eth <ifname>
e.g.
** Linux
sudo iptgen.bin --in.file ./scripts/http-upload.json --out.eth eth0
** Windows
iptgen.exe --in.file ./scripts/http-upload.json --out.eth Ethernet0
For creating a pcap file.
iptgen.bin --in.file <script-file> --out.file <filename>
e.g.
** Linux
sudo iptgen.bin --in.file ./scripts/http-upload.json --out.file http.pcap
** Windows
iptgen.exe --in.file ./scripts/http-upload.json --out.file http.pcap
To see all options that are available, run:
iptgen.bin --help
Syntex for scripts
A script is text that a list of Process
or String (comment)
are concatenated.
Process
Data Type: Object[String, Any] or Array[Object[String, Any]]
Details
Key | Type | Description |
---|---|---|
client | String | Client IP Address (e.g. 192.168.1.2), Port numer is optional. |
server | String | Server IP Address (e.g. 1.2.3.4:80), Port numer is optional. |
eth.src (Optional) | String | Client MAC Address (e.g. 11:22:33:44:55:66) |
eth.dst (Optional) | String | Server MAC Address (e.g. 11:22:33:44:55:66) |
sequence | Sequence | Sequence of sessions |
Sequence
Data Type: Array[Operation]
Operation
Standard Syntex
Data Type: Object[String, Any]
Compact Syntex
Data Type: Operation or Array[Operation]
Operation: none
No operation.
Standard Syntex
Key | Type | Value |
---|---|---|
op | String | none |
{
"op": "none"
}
Compact Syntex
Index | Type | Value / Description |
---|---|---|
[0] | String | none |
["none"]
Operation: for
`for-loop` statement for specifying iteration.
Standard Syntex
Key | Type | Value |
---|---|---|
op | String | for |
l.begin | Number | Start value of the counter |
l.end | Number | End value of the counter |
l.step | Number | Specifies the amount the counter is increased (default:1) |
l.name | String | Name of the counter |
l.sequence | Sequence | Sequence of operations in the loop |
{
"op": "for",
"l.begin": 0,
"l.end": 10,
"l.name": "i",
"l.sequence": [
["dns.q.a", "www.domain.com", "3.3.3.3"]
]
}
Compact Syntex
Index | Type | Value / Description |
---|---|---|
[0] | String | for |
[1] | Array[l.begin, l.end, l.strp] | [0]: l.begin, [1]: l.end, [2]: l.step (default:1) |
[2] | String | l.name |
[3] | Sequence | l.sequence |
["for", [0, 10], "i",
[
["dns.q.a", "www.domain.com", "2.2.2.2"]
]
]
Operation: loop
Run operations in the infinite loop
Standard Syntex
Key | Type | Value |
---|---|---|
op | String | loop |
l.sequence | Sequence | Sequence of operations in the loop |
{
"op": "loop",
"l.sequence": [
["dns.q.a", "www.domain.com", "3.3.3.3"]
]
}
Compact Syntex
Index | Type | Value / Description |
---|---|---|
[0] | String | loop |
[1] | Sequence | l.sequence |
["loop",
[
["dns.q.a", "www.domain.com", "2.2.2.2"]
]
]
Operation: for.session
`for-loop` statement for specifying iteration. The session is closed whenever looping back or when breaking the loop. A new port is assigned for a new session when closing the session.
Standard Syntex
Key | Type | Value |
---|---|---|
op | String | for.session |
l.begin | Number | Start value of the counter |
l.end | Number | End value of the counter |
l.step | Number | Specifies the amount the counter is increased |
l.name | String | Name of the counter |
l.sequence | Sequence | Sequence of operations in the loop |
{
"op": "for.session",
"l.begin": 0,
"l.end": 10,
"l.name": "i",
"l.sequence": [
["tcp.send", "text", "Hello"],
["tcp.recv", "text", "Hello"]
]
}
Compact Syntex
Index | Type | Value / Description |
---|---|---|
[0] | String | for.session |
[1] | Array[l.begin, l.end, l.strp] | [0]: l.begin, [1]: l.end, [2]: l.step |
[2] | String | l.name |
[3] | Sequence | l.sequence |
["for.session", [0, 10], "i",
[
["tcp.send", "text", "Hello"],
["tcp.recv", "text", "Hello"]
]
]
Operation: loop.session
Run operations in the infinite loop. The session is closed whenever looping back. A new port is assigned for a new session when closing the session.
Standard Syntex
Key | Type | Value |
---|---|---|
op | String | loop.session |
l.sequence | Sequence | Sequence of operations in the loop |
{
"op": "loop.session",
"l.sequence": [
["tcp.send", "text", "Hello"],
["tcp.recv", "text", "Hello"]
]
}
Compact Syntex
Index | Type | Value / Description |
---|---|---|
[0] | String | loop.session |
[1] | Sequence | l.sequence |
["loop.session", [0, 10], "i",
[
["tcp.send", "text", "Hello"],
["tcp.recv", "text", "Hello"]
]
]
Operation: for.process
`for-loop` statement for specifying iteration. A new process separated from the session is created on each iteration. New client/server IPs can be used in the processes.
Standard Syntex
Key | Type | Value |
---|---|---|
op | String | for.process |
l.begin | Number | Start value of the counter |
l.end | Number | End value of the counter |
l.step | Number | Specifies the amount the counter is increased (default:1) |
l.name | String | Name of the counter |
l.sequence | Process | Sequence of processes in the loop |
{
"op": "for.process",
"l.begin": 0,
"l.end": 10,
"l.name": "i",
"l.sequence": {
"client": "1.1.1.1",
"server": "2.2.2.2:80",
"sequence": [
["tcp.send", "text", "Hello"],
["tcp.recv", "text", "Hello"]
]
}
}
Compact Syntex
Index | Type | Value / Description |
---|---|---|
[0] | String | for.process |
[1] | Array[l.begin, l.end, l.strp] | [0]: l.begin, [1]: l.end, [2]: l.step (default:1) |
[2] | String | l.name |
[3] | Process | l.sequence |
["for.process", [0, 10], "i",
{
"client": "1.1.1.1",
"server": "2.2.2.2:80",
"sequence": [
["tcp.send", "text", "Hello"],
["tcp.recv", "text", "Hello"]
]
}
]
Operation: comment
Comment statement. The statement doesn't affect the control flow.
Standard Syntex
Key | Type | Value |
---|---|---|
op | String | comment or `` (empty) |
Any | Comment |
{
"op": "comment",
"": "This is a comment."
}
{
"op": "",
"": "This is a comment."
}
Compact Syntex
Index | Type | Value / Description |
---|---|---|
[0] | String | comment or `` (empty) |
[1-] | Any | Comment |
["comment", "This is a comment."]
["", "This is a comment."]
Operation: process
A new process separated from the session is created. New client/server IPs can be used in the process.
Standard Syntex
Key | Type | Value |
---|---|---|
op | String | process |
sequence | Process | Sequence of processes |
{
"op": "process",
"sequence": [
{
"client": "1.1.1.1",
"server": "2.2.2.2:9999",
"sequence": [
["tcp.send", "text", "Hello"]
]
},
{
"client": "3.3.3.3",
"server": "4.4.4.4:9999",
"sequence": [
["tcp.send", "text", "Hello"]
]
}
]
}
Compact Syntex
Index | Type | Value / Description |
---|---|---|
[0] | String | process |
[1] | Process | sequence |
["process",
[
{
"client": "1.1.1.1",
"server": "2.2.2.2:9999",
"sequence": [
["tcp.send", "text", "Hello"]
]
},
{
"client": "3.3.3.3",
"server": "4.4.4.4:9999",
"sequence": [
["tcp.send", "text", "Hello"]
]
}
]
]
Operation: session.new
The session is closed and a new port is ...
0.7.0
iptgen
iptgen is a tool to generate network packets from scripts to play them onto your netowrk or create a pcap file.
Installing
Install in the standard way:
Windows
-
Install
npcap
driver. Visit https://nmap.org/npcap/ to download and install it. -
Extract
iptgen.win32.zip
.
Linux
- Choose the archive file appropriate for your platform,
iptgen.linux-x86_64.tar.gz
oriptgen.linux-i686.tar.gz
, and extract it.
Binaries
Here are binaries:
Usage
For playing packets onto your network.
iptgen.bin --in.file <script-file> --out.eth <ifname>
e.g.
** Linux
sudo iptgen.bin --in.file ./scripts/http-upload.json --out.eth eth0
** Windows
iptgen.exe --in.file ./scripts/http-upload.json --out.eth Ethernet0
For creating a pcap file.
iptgen.bin --in.file <script-file> --out.file <filename>
e.g.
** Linux
sudo iptgen.bin --in.file ./scripts/http-upload.json --out.file http.pcap
** Windows
iptgen.exe --in.file ./scripts/http-upload.json --out.file http.pcap
To see all options that are available, run:
iptgen.bin --help
Syntex for scripts
A script is text that a list of Process
or String (comment)
are concatenated.
Process
Data Type: Object[String, Any] or Array[Object[String, Any]]
Details
Key | Type | Description |
---|---|---|
client | String | Client IP Address (e.g. 192.168.1.2), Port numer is optional. |
server | String | Server IP Address (e.g. 1.2.3.4:80), Port numer is optional. |
eth.src (Optional) | String | Client MAC Address (e.g. 11:22:33:44:55:66) |
eth.dst (Optional) | String | Server MAC Address (e.g. 11:22:33:44:55:66) |
sequence | Sequence | Sequence of sessions |
Sequence
Data Type: Array[Operation]
Operation
Standard Syntex
Data Type: Object[String, Any]
Compact Syntex
Data Type: Operation or Array[Operation]
Operation: none
No operation.
Standard Syntex
Key | Type | Value |
---|---|---|
op | String | none |
{
"op": "none"
}
Compact Syntex
Index | Type | Value / Description |
---|---|---|
[0] | String | none |
["none"]
Operation: for
`for-loop` statement for specifying iteration.
Standard Syntex
Key | Type | Value |
---|---|---|
op | String | for |
l.begin | Number | Start value of the counter |
l.end | Number | End value of the counter |
l.step | Number | Specifies the amount the counter is increased (default:1) |
l.name | String | Name of the counter |
l.sequence | Sequence | Sequence of operations in the loop |
{
"op": "for",
"l.begin": 0,
"l.end": 10,
"l.name": "i",
"l.sequence": [
["dns.q.a", "www.domain.com", "3.3.3.3"]
]
}
Compact Syntex
Index | Type | Value / Description |
---|---|---|
[0] | String | for |
[1] | Array[l.begin, l.end, l.strp] | [0]: l.begin, [1]: l.end, [2]: l.step (default:1) |
[2] | String | l.name |
[3] | Sequence | l.sequence |
["for", [0, 10], "i",
[
["dns.q.a", "www.domain.com", "2.2.2.2"]
]
]
Operation: loop
Run operations in the infinite loop
Standard Syntex
Key | Type | Value |
---|---|---|
op | String | loop |
l.sequence | Sequence | Sequence of operations in the loop |
{
"op": "loop",
"l.sequence": [
["dns.q.a", "www.domain.com", "3.3.3.3"]
]
}
Compact Syntex
Index | Type | Value / Description |
---|---|---|
[0] | String | loop |
[1] | Sequence | l.sequence |
["loop",
[
["dns.q.a", "www.domain.com", "2.2.2.2"]
]
]
Operation: for.session
`for-loop` statement for specifying iteration. The session is closed whenever looping back or when breaking the loop. A new port is assigned for a new session when closing the session.
Standard Syntex
Key | Type | Value |
---|---|---|
op | String | for.session |
l.begin | Number | Start value of the counter |
l.end | Number | End value of the counter |
l.step | Number | Specifies the amount the counter is increased |
l.name | String | Name of the counter |
l.sequence | Sequence | Sequence of operations in the loop |
{
"op": "for.session",
"l.begin": 0,
"l.end": 10,
"l.name": "i",
"l.sequence": [
["tcp.send", "text", "Hello"],
["tcp.recv", "text", "Hello"]
]
}
Compact Syntex
Index | Type | Value / Description |
---|---|---|
[0] | String | for.session |
[1] | Array[l.begin, l.end, l.strp] | [0]: l.begin, [1]: l.end, [2]: l.step |
[2] | String | l.name |
[3] | Sequence | l.sequence |
["for.session", [0, 10], "i",
[
["tcp.send", "text", "Hello"],
["tcp.recv", "text", "Hello"]
]
]
Operation: loop.session
Run operations in the infinite loop. The session is closed whenever looping back. A new port is assigned for a new session when closing the session.
Standard Syntex
Key | Type | Value |
---|---|---|
op | String | loop.session |
l.sequence | Sequence | Sequence of operations in the loop |
{
"op": "loop.session",
"l.sequence": [
["tcp.send", "text", "Hello"],
["tcp.recv", "text", "Hello"]
]
}
Compact Syntex
Index | Type | Value / Description |
---|---|---|
[0] | String | loop.session |
[1] | Sequence | l.sequence |
["loop.session", [0, 10], "i",
[
["tcp.send", "text", "Hello"],
["tcp.recv", "text", "Hello"]
]
]
Operation: for.process
`for-loop` statement for specifying iteration. A new process separated from the session is created on each iteration. New client/server IPs can be used in the processes.
Standard Syntex
Key | Type | Value |
---|---|---|
op | String | for.process |
l.begin | Number | Start value of the counter |
l.end | Number | End value of the counter |
l.step | Number | Specifies the amount the counter is increased (default:1) |
l.name | String | Name of the counter |
l.sequence | Process | Sequence of processes in the loop |
{
"op": "for.process",
"l.begin": 0,
"l.end": 10,
"l.name": "i",
"l.sequence": {
"client": "1.1.1.1",
"server": "2.2.2.2:80",
"sequence": [
["tcp.send", "text", "Hello"],
["tcp.recv", "text", "Hello"]
]
}
}
Compact Syntex
Index | Type | Value / Description |
---|---|---|
[0] | String | for.process |
[1] | Array[l.begin, l.end, l.strp] | [0]: l.begin, [1]: l.end, [2]: l.step (default:1) |
[2] | String | l.name |
[3] | Process | l.sequence |
["for.process", [0, 10], "i",
{
"client": "1.1.1.1",
"server": "2.2.2.2:80",
"sequence": [
["tcp.send", "text", "Hello"],
["tcp.recv", "text", "Hello"]
]
}
]
Operation: comment
Comment statement. The statement doesn't affect the control flow.
Standard Syntex
Key | Type | Value |
---|---|---|
op | String | comment or `` (empty) |
Any | Comment |
{
"op": "comment",
"": "This is a comment."
}
{
"op": "",
"": "This is a comment."
}
Compact Syntex
Index | Type | Value / Description |
---|---|---|
[0] | String | comment or `` (empty) |
[1-] | Any | Comment |
["comment", "This is a comment."]
["", "This is a comment."]
Operation: process
A new process separated from the session is created. New client/server IPs can be used in the process.
Standard Syntex
Key | Type | Value |
---|---|---|
op | String | process |
sequence | Process | Sequence of processes |
{
"op": "process",
"sequence": [
{
"client": "1.1.1.1",
"server": "2.2.2.2:9999",
"sequence": [
["tcp.send", "text", "Hello"]
]
},
{
"client": "3.3.3.3",
"server": "4.4.4.4:9999",
"sequence": [
["tcp.send", "text", "Hello"]
]
}
]
}
Compact Syntex
Index | Type | Value / Description |
---|---|---|
[0] | String | process |
[1] | Process | sequence |
["process",
[
{
"client": "1.1.1.1",
"server": "2.2.2.2:9999",
"sequence": [
["tcp.send", "text", "Hello"]
]
},
{
"client": "3.3.3.3",
"server": "4.4.4.4:9999",
"sequence": [
["tcp.send", "text", "Hello"]
]
}
]
]
Operation: session.new
The session is closed and a new port is ...
0.6.0
iptgen
iptgen is a tool to generate network packets from scripts to play them onto your netowrk or create a pcap file.
Installing
Install in the standard way:
Windows
-
Install
npcap
driver. Visit https://nmap.org/npcap/ to download and install it. -
Extract
iptgen.win32.zip
.
Linux
- Choose the archive file appropriate for your platform,
iptgen.linux-x86_64.tar.gz
oriptgen.linux-i686.tar.gz
, and extract it.
Binaries
Here are binaries:
Usage
For playing packets onto your network.
iptgen.bin --in.file <script-file> --out.eth <ifname>
e.g.
** Linux
sudo iptgen.bin --in.file ./scripts/http-upload.json --out.eth eth0
** Windows
iptgen.exe --in.file ./scripts/http-upload.json --out.eth Ethernet0
For creating a pcap file.
iptgen.bin --in.file <script-file> --out.file <filename>
e.g.
** Linux
sudo iptgen.bin --in.file ./scripts/http-upload.json --out.file http.pcap
** Windows
iptgen.exe --in.file ./scripts/http-upload.json --out.file http.pcap
To see all options that are available, run:
iptgen.bin --help
Syntex for scripts
A script is text that a list of Process
or String (comment)
are concatenated.
Process
Data Type: Object[String, Any] or Array[Object[String, Any]]
Details
Key | Type | Description |
---|---|---|
client | String | Client IP Address (e.g. 192.168.1.2), Port numer is optional. |
server | String | Server IP Address (e.g. 1.2.3.4:80), Port numer is optional. |
eth.src (Optional) | String | Client MAC Address (e.g. 11:22:33:44:55:66) |
eth.dst (Optional) | String | Server MAC Address (e.g. 11:22:33:44:55:66) |
sequence | Sequence | Sequence of sessions |
Sequence
Data Type: Array[Operation]
Operation
Standard Syntex
Data Type: Object[String, Any]
Compact Syntex
Data Type: Operation or Array[Operation]
Operation: none
No operation.
Standard Syntex
Key | Type | Value |
---|---|---|
op | String | none |
{
"op": "none"
}
Compact Syntex
Index | Type | Value / Description |
---|---|---|
[0] | String | none |
["none"]
Operation: for
`for-loop` statement for specifying iteration.
Standard Syntex
Key | Type | Value |
---|---|---|
op | String | for |
l.begin | Number | Start value of the counter |
l.end | Number | End value of the counter |
l.step | Number | Specifies the amount the counter is increased (default:1) |
l.name | String | Name of the counter |
l.sequence | Sequence | Sequence of operations in the loop |
{
"op": "for",
"l.begin": 0,
"l.end": 10,
"l.name": "i",
"l.sequence": [
["dns.q.a", "www.domain.com", "3.3.3.3"]
]
}
Compact Syntex
Index | Type | Value / Description |
---|---|---|
[0] | String | for |
[1] | Array[l.begin, l.end, l.strp] | [0]: l.begin, [1]: l.end, [2]: l.step (default:1) |
[2] | String | l.name |
[3] | Sequence | l.sequence |
["for", [0, 10], "i",
[
["dns.q.a", "www.domain.com", "2.2.2.2"]
]
]
Operation: loop
Run operations in the infinite loop
Standard Syntex
Key | Type | Value |
---|---|---|
op | String | loop |
l.sequence | Sequence | Sequence of operations in the loop |
{
"op": "loop",
"l.sequence": [
["dns.q.a", "www.domain.com", "3.3.3.3"]
]
}
Compact Syntex
Index | Type | Value / Description |
---|---|---|
[0] | String | loop |
[1] | Sequence | l.sequence |
["loop",
[
["dns.q.a", "www.domain.com", "2.2.2.2"]
]
]
Operation: for.session
`for-loop` statement for specifying iteration. The session is closed whenever looping back or when breaking the loop. A new port is assigned for a new session when closing the session.
Standard Syntex
Key | Type | Value |
---|---|---|
op | String | for.session |
l.begin | Number | Start value of the counter |
l.end | Number | End value of the counter |
l.step | Number | Specifies the amount the counter is increased |
l.name | String | Name of the counter |
l.sequence | Sequence | Sequence of operations in the loop |
{
"op": "for.session",
"l.begin": 0,
"l.end": 10,
"l.name": "i",
"l.sequence": [
["tcp.send", "text", "Hello"],
["tcp.recv", "text", "Hello"]
]
}
Compact Syntex
Index | Type | Value / Description |
---|---|---|
[0] | String | for.session |
[1] | Array[l.begin, l.end, l.strp] | [0]: l.begin, [1]: l.end, [2]: l.step |
[2] | String | l.name |
[3] | Sequence | l.sequence |
["for.session", [0, 10], "i",
[
["tcp.send", "text", "Hello"],
["tcp.recv", "text", "Hello"]
]
]
Operation: loop.session
Run operations in the infinite loop. The session is closed whenever looping back. A new port is assigned for a new session when closing the session.
Standard Syntex
Key | Type | Value |
---|---|---|
op | String | loop.session |
l.sequence | Sequence | Sequence of operations in the loop |
{
"op": "loop.session",
"l.sequence": [
["tcp.send", "text", "Hello"],
["tcp.recv", "text", "Hello"]
]
}
Compact Syntex
Index | Type | Value / Description |
---|---|---|
[0] | String | loop.session |
[1] | Sequence | l.sequence |
["loop.session", [0, 10], "i",
[
["tcp.send", "text", "Hello"],
["tcp.recv", "text", "Hello"]
]
]
Operation: for.process
`for-loop` statement for specifying iteration. A new process separated from the session is created on each iteration. New client/server IPs can be used in the processes.
Standard Syntex
Key | Type | Value |
---|---|---|
op | String | for.process |
l.begin | Number | Start value of the counter |
l.end | Number | End value of the counter |
l.step | Number | Specifies the amount the counter is increased (default:1) |
l.name | String | Name of the counter |
l.sequence | Process | Sequence of processes in the loop |
{
"op": "for.process",
"l.begin": 0,
"l.end": 10,
"l.name": "i",
"l.sequence": {
"client": "1.1.1.1",
"server": "2.2.2.2:80",
"sequence": [
["tcp.send", "text", "Hello"],
["tcp.recv", "text", "Hello"]
]
}
}
Compact Syntex
Index | Type | Value / Description |
---|---|---|
[0] | String | for.process |
[1] | Array[l.begin, l.end, l.strp] | [0]: l.begin, [1]: l.end, [2]: l.step (default:1) |
[2] | String | l.name |
[3] | Process | l.sequence |
["for.process", [0, 10], "i",
{
"client": "1.1.1.1",
"server": "2.2.2.2:80",
"sequence": [
["tcp.send", "text", "Hello"],
["tcp.recv", "text", "Hello"]
]
}
]
Operation: comment
Comment statement. The statement doesn't affect the control flow.
Standard Syntex
Key | Type | Value |
---|---|---|
op | String | comment or `` (empty) |
Any | Comment |
{
"op": "comment",
"": "This is a comment."
}
{
"op": "",
"": "This is a comment."
}
Compact Syntex
Index | Type | Value / Description |
---|---|---|
[0] | String | comment or `` (empty) |
[1-] | Any | Comment |
["comment", "This is a comment."]
["", "This is a comment."]
Operation: process
A new process separated from the session is created. New client/server IPs can be used in the process.
Standard Syntex
Key | Type | Value |
---|---|---|
op | String | process |
sequence | Process | Sequence of processes |
{
"op": "process",
"sequence": [
{
"client": "1.1.1.1",
"server": "2.2.2.2:9999",
"sequence": [
["tcp.send", "text", "Hello"]
]
},
{
"client": "3.3.3.3",
"server": "4.4.4.4:9999",
"sequence": [
["tcp.send", "text", "Hello"]
]
}
]
}
Compact Syntex
Index | Type | Value / Description |
---|---|---|
[0] | String | process |
[1] | Process | sequence |
["process",
[
{
"client": "1.1.1.1",
"server": "2.2.2.2:9999",
"sequence": [
["tcp.send", "text", "Hello"]
]
},
{
"client": "3.3.3.3",
"server": "4.4.4.4:9999",
"sequence": [
["tcp.send", "text", "Hello"]
]
}
]
]