1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
#! /usr/bin/env tclsh
package require starkit
starkit::startup
lappend auto_path [file join $::starkit::topdir twapi]
package require twapi
# http://blogs.msdn.com/b/david.wang/archive/2006/03/26/howto-detect-process-bitness.aspx
if {[info exists ::env(PROCESSOR_ARCHITEW6432)]} {
set arch $::env(PROCESSOR_ARCHITEW6432)
} else {
if {[info exists ::env(PROCESSOR_ARCHITECTURE)]} {
set arch $::env(PROCESSOR_ARCHITECTURE)
} else {
set arch "x86"
|
>
|
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
#! /usr/bin/env tclsh
package require starkit
starkit::startup
lappend auto_path [file join $::starkit::topdir twapi]
package require twapi
# Determine platform to install driver for
## http://blogs.msdn.com/b/david.wang/archive/2006/03/26/howto-detect-process-bitness.aspx
if {[info exists ::env(PROCESSOR_ARCHITEW6432)]} {
set arch $::env(PROCESSOR_ARCHITEW6432)
} else {
if {[info exists ::env(PROCESSOR_ARCHITECTURE)]} {
set arch $::env(PROCESSOR_ARCHITECTURE)
} else {
set arch "x86"
|
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
|
set iface_adapter [lindex [::twapi::get_netif_info $iface_idx -adaptername] 1]
set iface_npf "\\Device\\NPF_${iface_adapter}"
set argv [lreplace $argv $dest_parm_idx $dest_parm_idx $iface_npf]
}
}
# Copy files neeed to temporary directory
for {set i 0} {$i < 20} {incr i} {
append random_bin [format %c [expr {int(rand() * 256)}]]
}
binary scan $random_bin H* random
set srcdir [file join $::starkit::topdir files]
set dstdir [file join $tmpdir tcpdmp-$random]
file delete -force -- $dstdir
# Run tcpdump
set exit 1
set start_npf_service 0
set npf_failed 0
if {[catch {
set filesdir [file join $dstdir files]
file mkdir $dstdir
file copy -- $srcdir $filesdir
## Delete extraneous service
catch {
::twapi::stop_service npf
}
|
|
|
<
<
<
>
|
>
>
|
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
|
set iface_adapter [lindex [::twapi::get_netif_info $iface_idx -adaptername] 1]
set iface_npf "\\Device\\NPF_${iface_adapter}"
set argv [lreplace $argv $dest_parm_idx $dest_parm_idx $iface_npf]
}
}
# Determine name of temporary directory
for {set i 0} {$i < 20} {incr i} {
append random_bin [format %c [expr {int(rand() * 256)}]]
}
binary scan $random_bin H* random
set srcdir [file join $::starkit::topdir files]
set dstdir [file join $tmpdir tcpdump-temp-$random]
# Run tcpdump
set exit 1
set npf_failed 0
if {[catch {
## Create directory
file delete -force -- $dstdir
file mkdir $dstdir
## Copy files to directory
set filesdir [file join $dstdir files]
file copy -- $srcdir $filesdir
## Delete extraneous service
catch {
::twapi::stop_service npf
}
|
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
|
if {!$started} {
error "npf did not start"
}
} npf_err]} {
set npf_failed 1
}
after 5000
## Launch tcpdump with the apropriate parameters
#puts [list exec -- [file join $filesdir tcpdump.exe] {*}$argv]
exec -- [file join $filesdir tcpdump.exe] {*}$argv >&@ stdout
set exit 0
} err]} {
if {$npf_failed} {
puts "NPF Failed: $npf_err"
}
|
<
<
<
|
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
|
if {!$started} {
error "npf did not start"
}
} npf_err]} {
set npf_failed 1
}
## Launch tcpdump with the apropriate parameters
exec -- [file join $filesdir tcpdump.exe] {*}$argv >&@ stdout
set exit 0
} err]} {
if {$npf_failed} {
puts "NPF Failed: $npf_err"
}
|