pktcopy.rb
# ------------------------------------------------------------------
# pktcopy.rb	Copies given packets from file-1 to file-2
#	usage : pktcopy <from-file> <to-file> <pkts-csv>
#
# ------------------------------------------------------------------
require 'win32ole'
 
USAGE = "pktcopy <from-file> <to-file> <packet-list>"
 
if ARGV.length != 3
	puts USAGE
	exit 1
end
 
FromFile = ARGV[0]
ToFile   = ARGV[1]
PktIDs   = ARGV[2]
 
# Create required database objects
FromDB = WIN32OLE.new("Unsniff.Database")
ToDB   = WIN32OLE.new("Unsniff.Database")
FromDB.Open(FromFile)
if File.exists?(ToFile)
	ToDB.Open(ToFile)
else
	ToDB.New(ToFile)
end
 
FromPacketIndex = FromDB.PacketIndex
PacketIDArr = PktIDs.chomp.split(/\s*,\s*/)
PacketIDArr.each { |idx|
	pkt2copy = FromPacketIndex.Item(idx)
	ToDB.AddPacket(pkt2copy)
}
FromDB.Close()
ToDB.Save()
 
print "Copied #{PacketIDArr.length} packets to #{ToFile}\n"