snort-2.9.6.0/ 0000755 0000000 0000000 00000000000 12260606571 010007 5 0000000 0000000 snort-2.9.6.0/depcomp 0000755 0000000 0000000 00000056016 12260606526 011314 0000000 0000000 #! /bin/sh
# depcomp - compile a program generating dependencies as side-effects
scriptversion=2013-05-30.07; # UTC
# Copyright (C) 1999-2013 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2, or (at your option)
# any later version.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
# You should have received a copy of the GNU General Public License
# along with this program. If not, see .
# As a special exception to the GNU General Public License, if you
# distribute this file as part of a program that contains a
# configuration script generated by Autoconf, you may include it under
# the same distribution terms that you use for the rest of that program.
# Originally written by Alexandre Oliva .
case $1 in
'')
echo "$0: No command. Try '$0 --help' for more information." 1>&2
exit 1;
;;
-h | --h*)
cat <<\EOF
Usage: depcomp [--help] [--version] PROGRAM [ARGS]
Run PROGRAMS ARGS to compile a file, generating dependencies
as side-effects.
Environment variables:
depmode Dependency tracking mode.
source Source file read by 'PROGRAMS ARGS'.
object Object file output by 'PROGRAMS ARGS'.
DEPDIR directory where to store dependencies.
depfile Dependency file to output.
tmpdepfile Temporary file to use when outputting dependencies.
libtool Whether libtool is used (yes/no).
Report bugs to .
EOF
exit $?
;;
-v | --v*)
echo "depcomp $scriptversion"
exit $?
;;
esac
# Get the directory component of the given path, and save it in the
# global variables '$dir'. Note that this directory component will
# be either empty or ending with a '/' character. This is deliberate.
set_dir_from ()
{
case $1 in
*/*) dir=`echo "$1" | sed -e 's|/[^/]*$|/|'`;;
*) dir=;;
esac
}
# Get the suffix-stripped basename of the given path, and save it the
# global variable '$base'.
set_base_from ()
{
base=`echo "$1" | sed -e 's|^.*/||' -e 's/\.[^.]*$//'`
}
# If no dependency file was actually created by the compiler invocation,
# we still have to create a dummy depfile, to avoid errors with the
# Makefile "include basename.Plo" scheme.
make_dummy_depfile ()
{
echo "#dummy" > "$depfile"
}
# Factor out some common post-processing of the generated depfile.
# Requires the auxiliary global variable '$tmpdepfile' to be set.
aix_post_process_depfile ()
{
# If the compiler actually managed to produce a dependency file,
# post-process it.
if test -f "$tmpdepfile"; then
# Each line is of the form 'foo.o: dependency.h'.
# Do two passes, one to just change these to
# $object: dependency.h
# and one to simply output
# dependency.h:
# which is needed to avoid the deleted-header problem.
{ sed -e "s,^.*\.[$lower]*:,$object:," < "$tmpdepfile"
sed -e "s,^.*\.[$lower]*:[$tab ]*,," -e 's,$,:,' < "$tmpdepfile"
} > "$depfile"
rm -f "$tmpdepfile"
else
make_dummy_depfile
fi
}
# A tabulation character.
tab=' '
# A newline character.
nl='
'
# Character ranges might be problematic outside the C locale.
# These definitions help.
upper=ABCDEFGHIJKLMNOPQRSTUVWXYZ
lower=abcdefghijklmnopqrstuvwxyz
digits=0123456789
alpha=${upper}${lower}
if test -z "$depmode" || test -z "$source" || test -z "$object"; then
echo "depcomp: Variables source, object and depmode must be set" 1>&2
exit 1
fi
# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po.
depfile=${depfile-`echo "$object" |
sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`}
tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
rm -f "$tmpdepfile"
# Avoid interferences from the environment.
gccflag= dashmflag=
# Some modes work just like other modes, but use different flags. We
# parameterize here, but still list the modes in the big case below,
# to make depend.m4 easier to write. Note that we *cannot* use a case
# here, because this file can only contain one case statement.
if test "$depmode" = hp; then
# HP compiler uses -M and no extra arg.
gccflag=-M
depmode=gcc
fi
if test "$depmode" = dashXmstdout; then
# This is just like dashmstdout with a different argument.
dashmflag=-xM
depmode=dashmstdout
fi
cygpath_u="cygpath -u -f -"
if test "$depmode" = msvcmsys; then
# This is just like msvisualcpp but w/o cygpath translation.
# Just convert the backslash-escaped backslashes to single forward
# slashes to satisfy depend.m4
cygpath_u='sed s,\\\\,/,g'
depmode=msvisualcpp
fi
if test "$depmode" = msvc7msys; then
# This is just like msvc7 but w/o cygpath translation.
# Just convert the backslash-escaped backslashes to single forward
# slashes to satisfy depend.m4
cygpath_u='sed s,\\\\,/,g'
depmode=msvc7
fi
if test "$depmode" = xlc; then
# IBM C/C++ Compilers xlc/xlC can output gcc-like dependency information.
gccflag=-qmakedep=gcc,-MF
depmode=gcc
fi
case "$depmode" in
gcc3)
## gcc 3 implements dependency tracking that does exactly what
## we want. Yay! Note: for some reason libtool 1.4 doesn't like
## it if -MD -MP comes after the -MF stuff. Hmm.
## Unfortunately, FreeBSD c89 acceptance of flags depends upon
## the command line argument order; so add the flags where they
## appear in depend2.am. Note that the slowdown incurred here
## affects only configure: in makefiles, %FASTDEP% shortcuts this.
for arg
do
case $arg in
-c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;;
*) set fnord "$@" "$arg" ;;
esac
shift # fnord
shift # $arg
done
"$@"
stat=$?
if test $stat -ne 0; then
rm -f "$tmpdepfile"
exit $stat
fi
mv "$tmpdepfile" "$depfile"
;;
gcc)
## Note that this doesn't just cater to obsosete pre-3.x GCC compilers.
## but also to in-use compilers like IMB xlc/xlC and the HP C compiler.
## (see the conditional assignment to $gccflag above).
## There are various ways to get dependency output from gcc. Here's
## why we pick this rather obscure method:
## - Don't want to use -MD because we'd like the dependencies to end
## up in a subdir. Having to rename by hand is ugly.
## (We might end up doing this anyway to support other compilers.)
## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like
## -MM, not -M (despite what the docs say). Also, it might not be
## supported by the other compilers which use the 'gcc' depmode.
## - Using -M directly means running the compiler twice (even worse
## than renaming).
if test -z "$gccflag"; then
gccflag=-MD,
fi
"$@" -Wp,"$gccflag$tmpdepfile"
stat=$?
if test $stat -ne 0; then
rm -f "$tmpdepfile"
exit $stat
fi
rm -f "$depfile"
echo "$object : \\" > "$depfile"
# The second -e expression handles DOS-style file names with drive
# letters.
sed -e 's/^[^:]*: / /' \
-e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
## This next piece of magic avoids the "deleted header file" problem.
## The problem is that when a header file which appears in a .P file
## is deleted, the dependency causes make to die (because there is
## typically no way to rebuild the header). We avoid this by adding
## dummy dependencies for each header file. Too bad gcc doesn't do
## this for us directly.
## Some versions of gcc put a space before the ':'. On the theory
## that the space means something, we add a space to the output as
## well. hp depmode also adds that space, but also prefixes the VPATH
## to the object. Take care to not repeat it in the output.
## Some versions of the HPUX 10.20 sed can't process this invocation
## correctly. Breaking it into two sed invocations is a workaround.
tr ' ' "$nl" < "$tmpdepfile" \
| sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \
| sed -e 's/$/ :/' >> "$depfile"
rm -f "$tmpdepfile"
;;
hp)
# This case exists only to let depend.m4 do its work. It works by
# looking at the text of this script. This case will never be run,
# since it is checked for above.
exit 1
;;
sgi)
if test "$libtool" = yes; then
"$@" "-Wp,-MDupdate,$tmpdepfile"
else
"$@" -MDupdate "$tmpdepfile"
fi
stat=$?
if test $stat -ne 0; then
rm -f "$tmpdepfile"
exit $stat
fi
rm -f "$depfile"
if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files
echo "$object : \\" > "$depfile"
# Clip off the initial element (the dependent). Don't try to be
# clever and replace this with sed code, as IRIX sed won't handle
# lines with more than a fixed number of characters (4096 in
# IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines;
# the IRIX cc adds comments like '#:fec' to the end of the
# dependency line.
tr ' ' "$nl" < "$tmpdepfile" \
| sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' \
| tr "$nl" ' ' >> "$depfile"
echo >> "$depfile"
# The second pass generates a dummy entry for each header file.
tr ' ' "$nl" < "$tmpdepfile" \
| sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
>> "$depfile"
else
make_dummy_depfile
fi
rm -f "$tmpdepfile"
;;
xlc)
# This case exists only to let depend.m4 do its work. It works by
# looking at the text of this script. This case will never be run,
# since it is checked for above.
exit 1
;;
aix)
# The C for AIX Compiler uses -M and outputs the dependencies
# in a .u file. In older versions, this file always lives in the
# current directory. Also, the AIX compiler puts '$object:' at the
# start of each line; $object doesn't have directory information.
# Version 6 uses the directory in both cases.
set_dir_from "$object"
set_base_from "$object"
if test "$libtool" = yes; then
tmpdepfile1=$dir$base.u
tmpdepfile2=$base.u
tmpdepfile3=$dir.libs/$base.u
"$@" -Wc,-M
else
tmpdepfile1=$dir$base.u
tmpdepfile2=$dir$base.u
tmpdepfile3=$dir$base.u
"$@" -M
fi
stat=$?
if test $stat -ne 0; then
rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
exit $stat
fi
for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
do
test -f "$tmpdepfile" && break
done
aix_post_process_depfile
;;
tcc)
# tcc (Tiny C Compiler) understand '-MD -MF file' since version 0.9.26
# FIXME: That version still under development at the moment of writing.
# Make that this statement remains true also for stable, released
# versions.
# It will wrap lines (doesn't matter whether long or short) with a
# trailing '\', as in:
#
# foo.o : \
# foo.c \
# foo.h \
#
# It will put a trailing '\' even on the last line, and will use leading
# spaces rather than leading tabs (at least since its commit 0394caf7
# "Emit spaces for -MD").
"$@" -MD -MF "$tmpdepfile"
stat=$?
if test $stat -ne 0; then
rm -f "$tmpdepfile"
exit $stat
fi
rm -f "$depfile"
# Each non-empty line is of the form 'foo.o : \' or ' dep.h \'.
# We have to change lines of the first kind to '$object: \'.
sed -e "s|.*:|$object :|" < "$tmpdepfile" > "$depfile"
# And for each line of the second kind, we have to emit a 'dep.h:'
# dummy dependency, to avoid the deleted-header problem.
sed -n -e 's|^ *\(.*\) *\\$|\1:|p' < "$tmpdepfile" >> "$depfile"
rm -f "$tmpdepfile"
;;
## The order of this option in the case statement is important, since the
## shell code in configure will try each of these formats in the order
## listed in this file. A plain '-MD' option would be understood by many
## compilers, so we must ensure this comes after the gcc and icc options.
pgcc)
# Portland's C compiler understands '-MD'.
# Will always output deps to 'file.d' where file is the root name of the
# source file under compilation, even if file resides in a subdirectory.
# The object file name does not affect the name of the '.d' file.
# pgcc 10.2 will output
# foo.o: sub/foo.c sub/foo.h
# and will wrap long lines using '\' :
# foo.o: sub/foo.c ... \
# sub/foo.h ... \
# ...
set_dir_from "$object"
# Use the source, not the object, to determine the base name, since
# that's sadly what pgcc will do too.
set_base_from "$source"
tmpdepfile=$base.d
# For projects that build the same source file twice into different object
# files, the pgcc approach of using the *source* file root name can cause
# problems in parallel builds. Use a locking strategy to avoid stomping on
# the same $tmpdepfile.
lockdir=$base.d-lock
trap "
echo '$0: caught signal, cleaning up...' >&2
rmdir '$lockdir'
exit 1
" 1 2 13 15
numtries=100
i=$numtries
while test $i -gt 0; do
# mkdir is a portable test-and-set.
if mkdir "$lockdir" 2>/dev/null; then
# This process acquired the lock.
"$@" -MD
stat=$?
# Release the lock.
rmdir "$lockdir"
break
else
# If the lock is being held by a different process, wait
# until the winning process is done or we timeout.
while test -d "$lockdir" && test $i -gt 0; do
sleep 1
i=`expr $i - 1`
done
fi
i=`expr $i - 1`
done
trap - 1 2 13 15
if test $i -le 0; then
echo "$0: failed to acquire lock after $numtries attempts" >&2
echo "$0: check lockdir '$lockdir'" >&2
exit 1
fi
if test $stat -ne 0; then
rm -f "$tmpdepfile"
exit $stat
fi
rm -f "$depfile"
# Each line is of the form `foo.o: dependent.h',
# or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'.
# Do two passes, one to just change these to
# `$object: dependent.h' and one to simply `dependent.h:'.
sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile"
# Some versions of the HPUX 10.20 sed can't process this invocation
# correctly. Breaking it into two sed invocations is a workaround.
sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" \
| sed -e 's/$/ :/' >> "$depfile"
rm -f "$tmpdepfile"
;;
hp2)
# The "hp" stanza above does not work with aCC (C++) and HP's ia64
# compilers, which have integrated preprocessors. The correct option
# to use with these is +Maked; it writes dependencies to a file named
# 'foo.d', which lands next to the object file, wherever that
# happens to be.
# Much of this is similar to the tru64 case; see comments there.
set_dir_from "$object"
set_base_from "$object"
if test "$libtool" = yes; then
tmpdepfile1=$dir$base.d
tmpdepfile2=$dir.libs/$base.d
"$@" -Wc,+Maked
else
tmpdepfile1=$dir$base.d
tmpdepfile2=$dir$base.d
"$@" +Maked
fi
stat=$?
if test $stat -ne 0; then
rm -f "$tmpdepfile1" "$tmpdepfile2"
exit $stat
fi
for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2"
do
test -f "$tmpdepfile" && break
done
if test -f "$tmpdepfile"; then
sed -e "s,^.*\.[$lower]*:,$object:," "$tmpdepfile" > "$depfile"
# Add 'dependent.h:' lines.
sed -ne '2,${
s/^ *//
s/ \\*$//
s/$/:/
p
}' "$tmpdepfile" >> "$depfile"
else
make_dummy_depfile
fi
rm -f "$tmpdepfile" "$tmpdepfile2"
;;
tru64)
# The Tru64 compiler uses -MD to generate dependencies as a side
# effect. 'cc -MD -o foo.o ...' puts the dependencies into 'foo.o.d'.
# At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
# dependencies in 'foo.d' instead, so we check for that too.
# Subdirectories are respected.
set_dir_from "$object"
set_base_from "$object"
if test "$libtool" = yes; then
# Libtool generates 2 separate objects for the 2 libraries. These
# two compilations output dependencies in $dir.libs/$base.o.d and
# in $dir$base.o.d. We have to check for both files, because
# one of the two compilations can be disabled. We should prefer
# $dir$base.o.d over $dir.libs/$base.o.d because the latter is
# automatically cleaned when .libs/ is deleted, while ignoring
# the former would cause a distcleancheck panic.
tmpdepfile1=$dir$base.o.d # libtool 1.5
tmpdepfile2=$dir.libs/$base.o.d # Likewise.
tmpdepfile3=$dir.libs/$base.d # Compaq CCC V6.2-504
"$@" -Wc,-MD
else
tmpdepfile1=$dir$base.d
tmpdepfile2=$dir$base.d
tmpdepfile3=$dir$base.d
"$@" -MD
fi
stat=$?
if test $stat -ne 0; then
rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
exit $stat
fi
for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
do
test -f "$tmpdepfile" && break
done
# Same post-processing that is required for AIX mode.
aix_post_process_depfile
;;
msvc7)
if test "$libtool" = yes; then
showIncludes=-Wc,-showIncludes
else
showIncludes=-showIncludes
fi
"$@" $showIncludes > "$tmpdepfile"
stat=$?
grep -v '^Note: including file: ' "$tmpdepfile"
if test $stat -ne 0; then
rm -f "$tmpdepfile"
exit $stat
fi
rm -f "$depfile"
echo "$object : \\" > "$depfile"
# The first sed program below extracts the file names and escapes
# backslashes for cygpath. The second sed program outputs the file
# name when reading, but also accumulates all include files in the
# hold buffer in order to output them again at the end. This only
# works with sed implementations that can handle large buffers.
sed < "$tmpdepfile" -n '
/^Note: including file: *\(.*\)/ {
s//\1/
s/\\/\\\\/g
p
}' | $cygpath_u | sort -u | sed -n '
s/ /\\ /g
s/\(.*\)/'"$tab"'\1 \\/p
s/.\(.*\) \\/\1:/
H
$ {
s/.*/'"$tab"'/
G
p
}' >> "$depfile"
echo >> "$depfile" # make sure the fragment doesn't end with a backslash
rm -f "$tmpdepfile"
;;
msvc7msys)
# This case exists only to let depend.m4 do its work. It works by
# looking at the text of this script. This case will never be run,
# since it is checked for above.
exit 1
;;
#nosideeffect)
# This comment above is used by automake to tell side-effect
# dependency tracking mechanisms from slower ones.
dashmstdout)
# Important note: in order to support this mode, a compiler *must*
# always write the preprocessed file to stdout, regardless of -o.
"$@" || exit $?
# Remove the call to Libtool.
if test "$libtool" = yes; then
while test "X$1" != 'X--mode=compile'; do
shift
done
shift
fi
# Remove '-o $object'.
IFS=" "
for arg
do
case $arg in
-o)
shift
;;
$object)
shift
;;
*)
set fnord "$@" "$arg"
shift # fnord
shift # $arg
;;
esac
done
test -z "$dashmflag" && dashmflag=-M
# Require at least two characters before searching for ':'
# in the target name. This is to cope with DOS-style filenames:
# a dependency such as 'c:/foo/bar' could be seen as target 'c' otherwise.
"$@" $dashmflag |
sed "s|^[$tab ]*[^:$tab ][^:][^:]*:[$tab ]*|$object: |" > "$tmpdepfile"
rm -f "$depfile"
cat < "$tmpdepfile" > "$depfile"
# Some versions of the HPUX 10.20 sed can't process this sed invocation
# correctly. Breaking it into two sed invocations is a workaround.
tr ' ' "$nl" < "$tmpdepfile" \
| sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \
| sed -e 's/$/ :/' >> "$depfile"
rm -f "$tmpdepfile"
;;
dashXmstdout)
# This case only exists to satisfy depend.m4. It is never actually
# run, as this mode is specially recognized in the preamble.
exit 1
;;
makedepend)
"$@" || exit $?
# Remove any Libtool call
if test "$libtool" = yes; then
while test "X$1" != 'X--mode=compile'; do
shift
done
shift
fi
# X makedepend
shift
cleared=no eat=no
for arg
do
case $cleared in
no)
set ""; shift
cleared=yes ;;
esac
if test $eat = yes; then
eat=no
continue
fi
case "$arg" in
-D*|-I*)
set fnord "$@" "$arg"; shift ;;
# Strip any option that makedepend may not understand. Remove
# the object too, otherwise makedepend will parse it as a source file.
-arch)
eat=yes ;;
-*|$object)
;;
*)
set fnord "$@" "$arg"; shift ;;
esac
done
obj_suffix=`echo "$object" | sed 's/^.*\././'`
touch "$tmpdepfile"
${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"
rm -f "$depfile"
# makedepend may prepend the VPATH from the source file name to the object.
# No need to regex-escape $object, excess matching of '.' is harmless.
sed "s|^.*\($object *:\)|\1|" "$tmpdepfile" > "$depfile"
# Some versions of the HPUX 10.20 sed can't process the last invocation
# correctly. Breaking it into two sed invocations is a workaround.
sed '1,2d' "$tmpdepfile" \
| tr ' ' "$nl" \
| sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \
| sed -e 's/$/ :/' >> "$depfile"
rm -f "$tmpdepfile" "$tmpdepfile".bak
;;
cpp)
# Important note: in order to support this mode, a compiler *must*
# always write the preprocessed file to stdout.
"$@" || exit $?
# Remove the call to Libtool.
if test "$libtool" = yes; then
while test "X$1" != 'X--mode=compile'; do
shift
done
shift
fi
# Remove '-o $object'.
IFS=" "
for arg
do
case $arg in
-o)
shift
;;
$object)
shift
;;
*)
set fnord "$@" "$arg"
shift # fnord
shift # $arg
;;
esac
done
"$@" -E \
| sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
-e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
| sed '$ s: \\$::' > "$tmpdepfile"
rm -f "$depfile"
echo "$object : \\" > "$depfile"
cat < "$tmpdepfile" >> "$depfile"
sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile"
rm -f "$tmpdepfile"
;;
msvisualcpp)
# Important note: in order to support this mode, a compiler *must*
# always write the preprocessed file to stdout.
"$@" || exit $?
# Remove the call to Libtool.
if test "$libtool" = yes; then
while test "X$1" != 'X--mode=compile'; do
shift
done
shift
fi
IFS=" "
for arg
do
case "$arg" in
-o)
shift
;;
$object)
shift
;;
"-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
set fnord "$@"
shift
shift
;;
*)
set fnord "$@" "$arg"
shift
shift
;;
esac
done
"$@" -E 2>/dev/null |
sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile"
rm -f "$depfile"
echo "$object : \\" > "$depfile"
sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::'"$tab"'\1 \\:p' >> "$depfile"
echo "$tab" >> "$depfile"
sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile"
rm -f "$tmpdepfile"
;;
msvcmsys)
# This case exists only to let depend.m4 do its work. It works by
# looking at the text of this script. This case will never be run,
# since it is checked for above.
exit 1
;;
none)
exec "$@"
;;
*)
echo "Unknown depmode $depmode" 1>&2
exit 1
;;
esac
exit 0
# Local Variables:
# mode: shell-script
# sh-indentation: 2
# eval: (add-hook 'write-file-hooks 'time-stamp)
# time-stamp-start: "scriptversion="
# time-stamp-format: "%:y-%02m-%02d.%02H"
# time-stamp-time-zone: "UTC"
# time-stamp-end: "; # UTC"
# End:
snort-2.9.6.0/tools/ 0000755 0000000 0000000 00000000000 12260606571 011147 5 0000000 0000000 snort-2.9.6.0/tools/file_server/ 0000755 0000000 0000000 00000000000 12260606571 013454 5 0000000 0000000 snort-2.9.6.0/tools/file_server/file_server.c 0000644 0000000 0000000 00000034611 12260565733 016056 0000000 0000000 /*
**
**
** Copyright (C) 2014 Cisco and/or its affiliates. All rights reserved.
** Copyright (C) 2012-2013 Sourcefire, Inc.
**
** This program is free software; you can redistribute it and/or modify
** it under the terms of the GNU General Public License Version 2 as
** published by the Free Software Foundation. You may not use, modify or
** distribute this program under any other version of the GNU General
** Public License.
**
** This program is distributed in the hope that it will be useful,
** but WITHOUT ANY WARRANTY; without even the implied warranty of
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
** GNU General Public License for more details.
**
** You should have received a copy of the GNU General Public License
** along with this program; if not, write to the Free Software
** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
**
** Author(s): Hui Cao
**
*/
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define FILE_CAPTURE_SIZE 10485760 /*10M*/
#define VERBOSE_MODE_KEYWORD "-v"
#define STD_BUF 1024
typedef struct _THREAD_ELEMENT
{
struct _THREAD_ELEMENT *next;
int socket_fd;
} ThreadElement;
typedef enum
{
PRINT_MODE_FAST,
PRINT_MODE_DETAIL
} PrintMode;
static PrintMode print_mode = PRINT_MODE_FAST;
static int daemon_mode = 0;
static int exit_signal = 0;
int stop_processing = 0;
#define FILE_NAME_LEN 200
typedef void (*sighandler_t)(int);
typedef struct _FILE_MESSAGE_HEADER
{
/* All values must be in network byte order */
uint16_t version;
uint16_t type;
uint32_t length; /* Does not include the header */
char filename[FILE_NAME_LEN];
} FileMessageHeader;
#define FILE_HEADER_VERSION 0x0001
typedef struct _File_Storage_Stats
{
int file_count;
int file_storage_failures;
int file_duplicates_total;
} File_Storage_Stats;
static File_Storage_Stats file_stats;
static void CheckExit(void);
static void LogMessage(const char *format,...);
static void ErrorMessage(const char *format,...);
static int ReadHeader(int socket_fd, FileMessageHeader *hdr)
{
ssize_t numread;
unsigned total = 0;
do
{
numread = read(socket_fd, (*(uint8_t **)&hdr) + total,
sizeof(*hdr) - total);
if (!numread)
return 0;
else if (numread > 0)
total += numread;
else if (errno != EINTR && errno != EAGAIN)
return -1;
} while (total < sizeof(*hdr) );
if (total < sizeof(*hdr))
return 0;
hdr->length = ntohl(hdr->length);
hdr->type = ntohs(hdr->type);
hdr->version = ntohs(hdr->version);
LogMessage("Receiving file %s, length: %d\n", hdr->filename, hdr->length);
return 1;
}
static int ReadData(int socket_fd, uint8_t *buffer, uint32_t length)
{
ssize_t numread;
unsigned total = 0;
do
{
numread = read(socket_fd, buffer + total, length - total);
if (!numread)
return 0;
else if (numread > 0)
total += numread;
else if (errno != EINTR && errno != EAGAIN)
return -1;
} while (total < length);
if (total < length)
return 0;
return 1;
}
/*
* writing file to the disk.
*
* In the case of interrupt errors, the write is retried, but only for a
* finite number of times.
*
* Arguments
* uint8_t *: The buffer containing the data to write
* size_t: The length of the data to write
* FILE *fh: File handler
*
* Returns: None
*
*/
static void WriteFile(const uint8_t *buf, size_t buf_len, const char *file_name)
{
int max_retries = 3;
size_t bytes_written = 0;
int err;
char filename[1024];
FILE *fh;
struct stat buffer;
/*save the file*/
sprintf(filename, "%s", file_name);
filename[sizeof (filename) - 1] = '\0';
/*File exists*/
if(stat (filename, &buffer) == 0)
{
LogMessage("File exist: %s\n", filename);
file_stats.file_duplicates_total++;
return;
}
/*Opening file for writing in binary print_mode*/
fh = fopen(filename,"wb");
/* Nothing to write or nothing to write to */
if ((buf == NULL) || (fh == NULL))
return;
/* Writing data to file */
/* writing several times */
do
{
size_t bytes_left = buf_len - bytes_written;
bytes_written += fwrite(buf + bytes_written, 1, bytes_left, fh);
err = ferror(fh);
if (err && (err != EINTR) && (err != EAGAIN))
break;
max_retries--;
} while ((max_retries > 0) && (bytes_written < buf_len));
if (bytes_written < buf_len)
{
file_stats.file_storage_failures++;
ErrorMessage("File server: disk writing error - %s!\n", strerror(err));
}
/*Closing File*/
fclose(fh);
file_stats.file_count++;
}
static void *FileSocketProcessThread(void *arg)
{
ThreadElement *t = (ThreadElement *)arg;
if (t == NULL)
{
ErrorMessage("File Socket: Invalid process thread parameter\n");
return NULL;
}
if (t->socket_fd == -1)
{
ErrorMessage("File Socket: Invalid process thread socket\n");
return NULL;
}
while (!stop_processing)
{
FileMessageHeader hdr;
int rval;
if ((rval = ReadHeader(t->socket_fd, &hdr)) == 0)
break;
else if (rval < 0)
{
ErrorMessage("Failed to read!\n");
break;
}
if (hdr.version != FILE_HEADER_VERSION)
{
ErrorMessage("Bad message header version\n");
continue;
}
if (hdr.length > FILE_CAPTURE_SIZE)
{
ErrorMessage("Bad message data\n");
break;
}
if (hdr.length)
{
uint8_t *data;
if ((data = malloc(hdr.length)) == NULL)
{
break;
}
LogMessage( "File Socket: Reading %u bytes\n", hdr.length);
if ((rval = ReadData(t->socket_fd, data, hdr.length)) == 0)
{
ErrorMessage("File Socket: Socket closed before data read\n");
free(data);
break;
}
else if (rval < 0)
{
ErrorMessage("File Socket: Failed to read %d\n", rval);
free(data);
continue;
}
WriteFile(data, hdr.length, hdr.filename);
free(data);
}
CheckExit();
}
LogMessage("File Socket: Close a processing thread for %d\n", t->socket_fd);
free(t);
return NULL;
}
/* Add a signal handler
* Return:
* 0: error
* 1: success
*/
int AddSignal(int sig, sighandler_t signal_handler, int check_needed)
{
sighandler_t pre_handler;
#ifdef HAVE_SIGACTION
struct sigaction action;
struct sigaction old_action;
sigemptyset(&action.sa_mask);
action.sa_flags = 0;
action.sa_handler = signal_handler;
sigaction(sig, &action, &old_action);
pre_handler = old_action.sa_handler;
#else
pre_handler = signal(sig, signal_handler);
#endif
if (SIG_ERR == pre_handler)
{
ErrorMessage("Could not add handler for signal %d \n", sig);
return 0;
}
else if (check_needed && (SIG_IGN != pre_handler) && (SIG_DFL!= pre_handler))
{
ErrorMessage("WARNING: Handler is already installed for signal %d.\n", sig);
}
return 1;
}
/* Signal Handlers ************************************************************/
static void SigExitHandler(int signal)
{
exit_signal = signal;
}
static void CheckExit()
{
if ((SIGTERM == exit_signal) || (SIGINT == exit_signal))
{
stop_processing = 1;
}
}
static void PrintFileStats(File_Storage_Stats *stats)
{
LogMessage("Total files stored: %d\n", stats->file_count);
LogMessage("Total file storage errors: %d\n", stats->file_storage_failures);
LogMessage("Total duplicated files: %d\n", stats->file_duplicates_total);
}
static int ProcessClientRequest(int sockfd)
{
struct timeval to;
socklen_t clilen;
fd_set rfds;
struct sockaddr_in cli_addr;
int rval;
pthread_t tid;
ThreadElement *t;
int newsockfd;
to.tv_sec = 2;
to.tv_usec = 0;
FD_ZERO(&rfds);
FD_SET(sockfd, &rfds);
//accept incoming connections
clilen = sizeof(cli_addr);
rval = select(sockfd + 1, &rfds, NULL, NULL, &to);
if (rval > 0)
{
memset(&cli_addr, 0, sizeof(cli_addr));
if ((newsockfd = accept(sockfd, (struct sockaddr *)&cli_addr, &clilen)) == -1)
{
if (errno != EINTR)
{
ErrorMessage("File Socket: Accept failed: %s\n", strerror(errno));
return -1;
}
}
else
{
LogMessage("File Socket: Creating a processing thread for %d\n", newsockfd);
if ((t = calloc(1, sizeof(*t))) == NULL)
{
close(newsockfd);
ErrorMessage("File Socket: Failed to allocate a thread struct");
return -1;
}
t->socket_fd = newsockfd;
if ((rval = pthread_create(&tid, NULL, &FileSocketProcessThread, (void *)t)) != 0)
{
close(newsockfd);
ErrorMessage("File Socket: Unable to create a processing thread: %s", strerror(rval));
return -1;
}
pthread_join(tid, NULL);
}
}
else if (rval < 0)
{
if (errno != EINTR)
{
ErrorMessage("File Socket: Select failed: %s\n", strerror(errno));
return -1;
}
}
return 0;
}
/*
* Print a message to stderr or with logfacility.
*
* Arguments: format => the formatted error string to print out
* ... => format commands/fillers
*
* Returns: void function
*/
void LogMessage(const char *format,...)
{
char buf[STD_BUF+1];
va_list ap;
if (print_mode == PRINT_MODE_FAST)
return;
va_start(ap, format);
vsnprintf(buf, STD_BUF, format, ap);
buf[STD_BUF] = '\0';
syslog(LOG_DAEMON | LOG_NOTICE, "%s", buf);
printf("%s", buf);
va_end(ap);
}
/*
* Print a message to stderr or with logfacility.
*
* Arguments: format => the formatted error string to print out
* ... => format commands/fillers
*
* Returns: void function
*/
void ErrorMessage(const char *format,...)
{
char buf[STD_BUF+1];
va_list ap;
va_start(ap, format);
vsnprintf(buf, STD_BUF, format, ap);
buf[STD_BUF] = '\0';
syslog(LOG_CONS | LOG_DAEMON | LOG_ERR, "%s", buf);
printf("%s", buf);
va_end(ap);
}
/* Puts the program into daemon print_mode, nice and quiet like....*/
void GoDaemon(void)
{
int exit_val = 0;
pid_t cpid;
int i;
LogMessage("Initializing daemon mode\n");
/* Don't daemonize if we've already daemonized */
if(getppid() != 1)
{
/* now fork the child */
printf("Spawning daemon child...\n");
cpid = fork();
if(cpid > 0)
{
/* Parent */
printf("Daemon child %d lives...\n", cpid);
printf("Daemon parent exiting (%d)\n", exit_val);
exit(exit_val); /* parent */
}
if(cpid < 0)
{
/* Daemonizing failed... */
perror("fork");
exit(1);
}
}
/* Child */
setsid();
close(0);
close(1);
close(2);
/* redirect stdin/stdout/stderr to /dev/null */
i = open("/dev/null", O_RDWR); /* stdin, fd 0 */
dup(i);
dup(i);
}
static void PrintHelp()
{
printf("Usage: file_server <-dvh> -\n");
printf("d: daemon mode -\n");
printf("v: verbos mode -\n");
printf("h: help -\n");
}
static void ParseArgs(char *arg)
{
int len;
int i;
if (!arg)
return;
len = strlen(arg);
if (len < 2)
{
printf("Option length two short!\n");
return;
}
if (arg[0] != '-')
{
printf("Please provide option start with -\n");
}
for (i = 1; i < len; i++)
{
switch(arg[i])
{
case 'd':
daemon_mode = 1;
break;
case 'v':
print_mode = PRINT_MODE_DETAIL;
LogMessage("Verbose print_mode specified!\n");
break;
case 'h':
PrintHelp();
break;
default:
printf("Please provide correct option!\n");
PrintHelp();
exit(1);
}
}
}
int main(int argc, char *argv[])
{
int sockfd, portno;
struct sockaddr_in serv_addr;
int one = 1;
setlogmask (LOG_UPTO (LOG_NOTICE));
openlog("file_server", LOG_CONS | LOG_PID | LOG_NDELAY, LOG_LOCAL1);
if (argc < 2)
{
fprintf(stderr,"please specify a port number\n");
exit(1);
}
if(argc > 2)
{
int i;
for (i = 2; i < argc; i++)
ParseArgs(argv[i]);
}
if (daemon_mode)
{
GoDaemon();
}
AddSignal(SIGTERM, SigExitHandler, 1);
AddSignal(SIGINT, SigExitHandler, 1);
sockfd = socket(AF_INET, SOCK_STREAM, 0);
if (sockfd < 0)
{
ErrorMessage("ERROR create socket.\n");
exit(1);
}
//allow reuse of port
setsockopt(sockfd, SOL_SOCKET, SO_REUSEADDR, &one, sizeof one);
//bind to a local address
memset((char *) &serv_addr, 0, sizeof(serv_addr));
portno = atoi(argv[1]);
serv_addr.sin_family = AF_INET;
serv_addr.sin_addr.s_addr = INADDR_ANY;
serv_addr.sin_port = htons(portno);
if (bind(sockfd, (struct sockaddr *) &serv_addr, sizeof(serv_addr)) < 0)
{
ErrorMessage("ERROR on bind.\n");
exit(1);
}
//listen marks the socket as passive socket listening to incoming connections,
//it allows max 5 backlog connections: backlog connections are pending in queue
//if pending connections are more than 5, later request may be ignored
listen(sockfd,5);
while (!stop_processing)
{
if (ProcessClientRequest(sockfd) < 0)
break;
CheckExit();
}
close(sockfd);
LogMessage("----------Exiting.........!\n");
PrintFileStats(&file_stats);
closelog();
return 0;
}
snort-2.9.6.0/tools/file_server/README.file_server 0000644 0000000 0000000 00000001275 12232305217 016555 0000000 0000000 file-server - Tool to received captured files from snort
--------------------------------------------
file server is used along with file inspect preprocessor, to receive and store
files captured by file inspect preprocessor. This simple program should run on
the directory that you want to store files. In other words, file will be saved
on current directory. File name will be be SHA for that file (from file inspect
preprocessor)
Use -v option if you want to see what files are received/stored.
Use -d option if you want to run it in daemon mode
Use -h option for help
Use Ctrl - c to stop file server
Usage
-----
$ file_server <-vdh>
Example:
file_server 8000 -v
snort-2.9.6.0/tools/file_server/Makefile.am 0000644 0000000 0000000 00000000361 12232305217 015420 0000000 0000000 AUTOMAKE_OPTIONS=foreign
bin_PROGRAMS = file_server
docdir = ${datadir}/doc/${PACKAGE}
file_server_SOURCES = file_server.c
file_server_CFLAGS = @CFLAGS@ $(AM_CFLAGS)
INCLUDES = @INCLUDES@ @extra_incl@
dist_doc_DATA = README.file_server
snort-2.9.6.0/tools/file_server/Makefile.in 0000644 0000000 0000000 00000056667 12260606526 015465 0000000 0000000 # Makefile.in generated by automake 1.13.4 from Makefile.am.
# @configure_input@
# Copyright (C) 1994-2013 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.
@SET_MAKE@
VPATH = @srcdir@
am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
am__make_running_with_option = \
case $${target_option-} in \
?) ;; \
*) echo "am__make_running_with_option: internal error: invalid" \
"target option '$${target_option-}' specified" >&2; \
exit 1;; \
esac; \
has_opt=no; \
sane_makeflags=$$MAKEFLAGS; \
if $(am__is_gnu_make); then \
sane_makeflags=$$MFLAGS; \
else \
case $$MAKEFLAGS in \
*\\[\ \ ]*) \
bs=\\; \
sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
| sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
esac; \
fi; \
skip_next=no; \
strip_trailopt () \
{ \
flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
}; \
for flg in $$sane_makeflags; do \
test $$skip_next = yes && { skip_next=no; continue; }; \
case $$flg in \
*=*|--*) continue;; \
-*I) strip_trailopt 'I'; skip_next=yes;; \
-*I?*) strip_trailopt 'I';; \
-*O) strip_trailopt 'O'; skip_next=yes;; \
-*O?*) strip_trailopt 'O';; \
-*l) strip_trailopt 'l'; skip_next=yes;; \
-*l?*) strip_trailopt 'l';; \
-[dEDm]) skip_next=yes;; \
-[JT]) skip_next=yes;; \
esac; \
case $$flg in \
*$$target_option*) has_opt=yes; break;; \
esac; \
done; \
test $$has_opt = yes
am__make_dryrun = (target_option=n; $(am__make_running_with_option))
am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
pkgdatadir = $(datadir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
pkglibexecdir = $(libexecdir)/@PACKAGE@
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
install_sh_DATA = $(install_sh) -c -m 644
install_sh_PROGRAM = $(install_sh) -c
install_sh_SCRIPT = $(install_sh) -c
INSTALL_HEADER = $(INSTALL_DATA)
transform = $(program_transform_name)
NORMAL_INSTALL = :
PRE_INSTALL = :
POST_INSTALL = :
NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
bin_PROGRAMS = file_server$(EXEEXT)
subdir = tools/file_server
DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
$(top_srcdir)/depcomp $(dist_doc_DATA)
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/configure.in
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
mkinstalldirs = $(install_sh) -d
CONFIG_HEADER = $(top_builddir)/config.h
CONFIG_CLEAN_FILES =
CONFIG_CLEAN_VPATH_FILES =
am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(docdir)"
PROGRAMS = $(bin_PROGRAMS)
am_file_server_OBJECTS = file_server-file_server.$(OBJEXT)
file_server_OBJECTS = $(am_file_server_OBJECTS)
file_server_LDADD = $(LDADD)
AM_V_lt = $(am__v_lt_@AM_V@)
am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
am__v_lt_0 = --silent
am__v_lt_1 =
file_server_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
$(LIBTOOLFLAGS) --mode=link $(CCLD) $(file_server_CFLAGS) \
$(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
AM_V_P = $(am__v_P_@AM_V@)
am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
am__v_P_0 = false
am__v_P_1 = :
AM_V_GEN = $(am__v_GEN_@AM_V@)
am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
am__v_GEN_0 = @echo " GEN " $@;
am__v_GEN_1 =
AM_V_at = $(am__v_at_@AM_V@)
am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
am__v_at_0 = @
am__v_at_1 =
DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
depcomp = $(SHELL) $(top_srcdir)/depcomp
am__depfiles_maybe = depfiles
am__mv = mv -f
COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
$(AM_CFLAGS) $(CFLAGS)
AM_V_CC = $(am__v_CC_@AM_V@)
am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
am__v_CC_0 = @echo " CC " $@;
am__v_CC_1 =
CCLD = $(CC)
LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
$(AM_LDFLAGS) $(LDFLAGS) -o $@
AM_V_CCLD = $(am__v_CCLD_@AM_V@)
am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
am__v_CCLD_0 = @echo " CCLD " $@;
am__v_CCLD_1 =
SOURCES = $(file_server_SOURCES)
DIST_SOURCES = $(file_server_SOURCES)
am__can_run_installinfo = \
case $$AM_UPDATE_INFO_DIR in \
n|no|NO) false;; \
*) (install-info --version) >/dev/null 2>&1;; \
esac
am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
am__vpath_adj = case $$p in \
$(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
*) f=$$p;; \
esac;
am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
am__install_max = 40
am__nobase_strip_setup = \
srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
am__nobase_strip = \
for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
am__nobase_list = $(am__nobase_strip_setup); \
for p in $$list; do echo "$$p $$p"; done | \
sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
$(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
if (++n[$$2] == $(am__install_max)) \
{ print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
END { for (dir in files) print dir, files[dir] }'
am__base_list = \
sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
am__uninstall_files_from_dir = { \
test -z "$$files" \
|| { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
|| { echo " ( cd '$$dir' && rm -f" $$files ")"; \
$(am__cd) "$$dir" && rm -f $$files; }; \
}
DATA = $(dist_doc_DATA)
am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
# Read a list of newline-separated strings from the standard input,
# and print each of them once, without duplicates. Input order is
# *not* preserved.
am__uniquify_input = $(AWK) '\
BEGIN { nonempty = 0; } \
{ items[$$0] = 1; nonempty = 1; } \
END { if (nonempty) { for (i in items) print i; }; } \
'
# Make sure the list of sources is unique. This is necessary because,
# e.g., the same source file might be shared among _SOURCES variables
# for different programs/libraries.
am__define_uniq_tagged_files = \
list='$(am__tagged_files)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | $(am__uniquify_input)`
ETAGS = etags
CTAGS = ctags
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
ACLOCAL = @ACLOCAL@
AMTAR = @AMTAR@
AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
AR = @AR@
AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
CC = @CC@
CCDEPMODE = @CCDEPMODE@
CCONFIGFLAGS = @CCONFIGFLAGS@
CFLAGS = @CFLAGS@
CONFIGFLAGS = @CONFIGFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
DLLTOOL = @DLLTOOL@
DSYMUTIL = @DSYMUTIL@
DUMPBIN = @DUMPBIN@
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
FGREP = @FGREP@
GREP = @GREP@
ICONFIGFLAGS = @ICONFIGFLAGS@
INCLUDES = @INCLUDES@ @extra_incl@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
LD = @LD@
LDFLAGS = @LDFLAGS@
LEX = @LEX@
LIBOBJS = @LIBOBJS@
LIBS = @LIBS@
LIBTOOL = @LIBTOOL@
LIPO = @LIPO@
LN_S = @LN_S@
LTLIBOBJS = @LTLIBOBJS@
MAINT = @MAINT@
MAKEINFO = @MAKEINFO@
MANIFEST_TOOL = @MANIFEST_TOOL@
MKDIR_P = @MKDIR_P@
NM = @NM@
NMEDIT = @NMEDIT@
OBJDUMP = @OBJDUMP@
OBJEXT = @OBJEXT@
OTOOL = @OTOOL@
OTOOL64 = @OTOOL64@
PACKAGE = @PACKAGE@
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
PACKAGE_NAME = @PACKAGE_NAME@
PACKAGE_STRING = @PACKAGE_STRING@
PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_URL = @PACKAGE_URL@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
PKG_CONFIG = @PKG_CONFIG@
PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
RANLIB = @RANLIB@
RAZORBACK_CFLAGS = @RAZORBACK_CFLAGS@
RAZORBACK_LIBS = @RAZORBACK_LIBS@
SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SIGNAL_SNORT_DUMP_STATS = @SIGNAL_SNORT_DUMP_STATS@
SIGNAL_SNORT_READ_ATTR_TBL = @SIGNAL_SNORT_READ_ATTR_TBL@
SIGNAL_SNORT_RELOAD = @SIGNAL_SNORT_RELOAD@
SIGNAL_SNORT_ROTATE_STATS = @SIGNAL_SNORT_ROTATE_STATS@
STRIP = @STRIP@
VERSION = @VERSION@
XCCFLAGS = @XCCFLAGS@
YACC = @YACC@
abs_builddir = @abs_builddir@
abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
abs_top_srcdir = @abs_top_srcdir@
ac_ct_AR = @ac_ct_AR@
ac_ct_CC = @ac_ct_CC@
ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
am__tar = @am__tar@
am__untar = @am__untar@
bindir = @bindir@
build = @build@
build_alias = @build_alias@
build_cpu = @build_cpu@
build_os = @build_os@
build_vendor = @build_vendor@
builddir = @builddir@
datadir = @datadir@
datarootdir = @datarootdir@
docdir = ${datadir}/doc/${PACKAGE}
dvidir = @dvidir@
exec_prefix = @exec_prefix@
extra_incl = @extra_incl@
host = @host@
host_alias = @host_alias@
host_cpu = @host_cpu@
host_os = @host_os@
host_vendor = @host_vendor@
htmldir = @htmldir@
includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
libdir = @libdir@
libexecdir = @libexecdir@
localedir = @localedir@
localstatedir = @localstatedir@
mandir = @mandir@
mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
sysconfdir = @sysconfdir@
target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
AUTOMAKE_OPTIONS = foreign
file_server_SOURCES = file_server.c
file_server_CFLAGS = @CFLAGS@ $(AM_CFLAGS)
dist_doc_DATA = README.file_server
all: all-am
.SUFFIXES:
.SUFFIXES: .c .lo .o .obj
$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
@for dep in $?; do \
case '$(am__configure_deps)' in \
*$$dep*) \
( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
&& { if test -f $@; then exit 0; else break; fi; }; \
exit 1;; \
esac; \
done; \
echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign tools/file_server/Makefile'; \
$(am__cd) $(top_srcdir) && \
$(AUTOMAKE) --foreign tools/file_server/Makefile
.PRECIOUS: Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \
*config.status*) \
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
*) \
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
esac;
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(am__aclocal_m4_deps):
install-binPROGRAMS: $(bin_PROGRAMS)
@$(NORMAL_INSTALL)
@list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
if test -n "$$list"; then \
echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \
$(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \
fi; \
for p in $$list; do echo "$$p $$p"; done | \
sed 's/$(EXEEXT)$$//' | \
while read p p1; do if test -f $$p \
|| test -f $$p1 \
; then echo "$$p"; echo "$$p"; else :; fi; \
done | \
sed -e 'p;s,.*/,,;n;h' \
-e 's|.*|.|' \
-e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \
sed 'N;N;N;s,\n, ,g' | \
$(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \
{ d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
if ($$2 == $$4) files[d] = files[d] " " $$1; \
else { print "f", $$3 "/" $$4, $$1; } } \
END { for (d in files) print "f", d, files[d] }' | \
while read type dir files; do \
if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
test -z "$$files" || { \
echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \
$(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \
} \
; done
uninstall-binPROGRAMS:
@$(NORMAL_UNINSTALL)
@list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
files=`for p in $$list; do echo "$$p"; done | \
sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \
-e 's/$$/$(EXEEXT)/' \
`; \
test -n "$$list" || exit 0; \
echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \
cd "$(DESTDIR)$(bindir)" && rm -f $$files
clean-binPROGRAMS:
@list='$(bin_PROGRAMS)'; test -n "$$list" || exit 0; \
echo " rm -f" $$list; \
rm -f $$list || exit $$?; \
test -n "$(EXEEXT)" || exit 0; \
list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
echo " rm -f" $$list; \
rm -f $$list
file_server$(EXEEXT): $(file_server_OBJECTS) $(file_server_DEPENDENCIES) $(EXTRA_file_server_DEPENDENCIES)
@rm -f file_server$(EXEEXT)
$(AM_V_CCLD)$(file_server_LINK) $(file_server_OBJECTS) $(file_server_LDADD) $(LIBS)
mostlyclean-compile:
-rm -f *.$(OBJEXT)
distclean-compile:
-rm -f *.tab.c
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/file_server-file_server.Po@am__quote@
.c.o:
@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $<
.c.obj:
@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
.c.lo:
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
file_server-file_server.o: file_server.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(file_server_CFLAGS) $(CFLAGS) -MT file_server-file_server.o -MD -MP -MF $(DEPDIR)/file_server-file_server.Tpo -c -o file_server-file_server.o `test -f 'file_server.c' || echo '$(srcdir)/'`file_server.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/file_server-file_server.Tpo $(DEPDIR)/file_server-file_server.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='file_server.c' object='file_server-file_server.o' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(file_server_CFLAGS) $(CFLAGS) -c -o file_server-file_server.o `test -f 'file_server.c' || echo '$(srcdir)/'`file_server.c
file_server-file_server.obj: file_server.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(file_server_CFLAGS) $(CFLAGS) -MT file_server-file_server.obj -MD -MP -MF $(DEPDIR)/file_server-file_server.Tpo -c -o file_server-file_server.obj `if test -f 'file_server.c'; then $(CYGPATH_W) 'file_server.c'; else $(CYGPATH_W) '$(srcdir)/file_server.c'; fi`
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/file_server-file_server.Tpo $(DEPDIR)/file_server-file_server.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='file_server.c' object='file_server-file_server.obj' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(file_server_CFLAGS) $(CFLAGS) -c -o file_server-file_server.obj `if test -f 'file_server.c'; then $(CYGPATH_W) 'file_server.c'; else $(CYGPATH_W) '$(srcdir)/file_server.c'; fi`
mostlyclean-libtool:
-rm -f *.lo
clean-libtool:
-rm -rf .libs _libs
install-dist_docDATA: $(dist_doc_DATA)
@$(NORMAL_INSTALL)
@list='$(dist_doc_DATA)'; test -n "$(docdir)" || list=; \
if test -n "$$list"; then \
echo " $(MKDIR_P) '$(DESTDIR)$(docdir)'"; \
$(MKDIR_P) "$(DESTDIR)$(docdir)" || exit 1; \
fi; \
for p in $$list; do \
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
echo "$$d$$p"; \
done | $(am__base_list) | \
while read files; do \
echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(docdir)'"; \
$(INSTALL_DATA) $$files "$(DESTDIR)$(docdir)" || exit $$?; \
done
uninstall-dist_docDATA:
@$(NORMAL_UNINSTALL)
@list='$(dist_doc_DATA)'; test -n "$(docdir)" || list=; \
files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
dir='$(DESTDIR)$(docdir)'; $(am__uninstall_files_from_dir)
ID: $(am__tagged_files)
$(am__define_uniq_tagged_files); mkid -fID $$unique
tags: tags-am
TAGS: tags
tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
set x; \
here=`pwd`; \
$(am__define_uniq_tagged_files); \
shift; \
if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
test -n "$$unique" || unique=$$empty_fix; \
if test $$# -gt 0; then \
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
"$$@" $$unique; \
else \
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
$$unique; \
fi; \
fi
ctags: ctags-am
CTAGS: ctags
ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
$(am__define_uniq_tagged_files); \
test -z "$(CTAGS_ARGS)$$unique" \
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
$$unique
GTAGS:
here=`$(am__cd) $(top_builddir) && pwd` \
&& $(am__cd) $(top_srcdir) \
&& gtags -i $(GTAGS_ARGS) "$$here"
cscopelist: cscopelist-am
cscopelist-am: $(am__tagged_files)
list='$(am__tagged_files)'; \
case "$(srcdir)" in \
[\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
*) sdir=$(subdir)/$(srcdir) ;; \
esac; \
for i in $$list; do \
if test -f "$$i"; then \
echo "$(subdir)/$$i"; \
else \
echo "$$sdir/$$i"; \
fi; \
done >> $(top_builddir)/cscope.files
distclean-tags:
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
distdir: $(DISTFILES)
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
list='$(DISTFILES)'; \
dist_files=`for file in $$list; do echo $$file; done | \
sed -e "s|^$$srcdirstrip/||;t" \
-e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
case $$dist_files in \
*/*) $(MKDIR_P) `echo "$$dist_files" | \
sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
sort -u` ;; \
esac; \
for file in $$dist_files; do \
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
if test -d $$d/$$file; then \
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
if test -d "$(distdir)/$$file"; then \
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
fi; \
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
fi; \
cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
else \
test -f "$(distdir)/$$file" \
|| cp -p $$d/$$file "$(distdir)/$$file" \
|| exit 1; \
fi; \
done
check-am: all-am
check: check-am
all-am: Makefile $(PROGRAMS) $(DATA)
installdirs:
for dir in "$(DESTDIR)$(bindir)" "$(DESTDIR)$(docdir)"; do \
test -z "$$dir" || $(MKDIR_P) "$$dir"; \
done
install: install-am
install-exec: install-exec-am
install-data: install-data-am
uninstall: uninstall-am
install-am: all-am
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
installcheck: installcheck-am
install-strip:
if test -z '$(STRIP)'; then \
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
install; \
else \
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
"INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
fi
mostlyclean-generic:
clean-generic:
distclean-generic:
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
maintainer-clean-generic:
@echo "This command is intended for maintainers to use"
@echo "it deletes files that may require special tools to rebuild."
clean: clean-am
clean-am: clean-binPROGRAMS clean-generic clean-libtool mostlyclean-am
distclean: distclean-am
-rm -rf ./$(DEPDIR)
-rm -f Makefile
distclean-am: clean-am distclean-compile distclean-generic \
distclean-tags
dvi: dvi-am
dvi-am:
html: html-am
html-am:
info: info-am
info-am:
install-data-am: install-dist_docDATA
install-dvi: install-dvi-am
install-dvi-am:
install-exec-am: install-binPROGRAMS
install-html: install-html-am
install-html-am:
install-info: install-info-am
install-info-am:
install-man:
install-pdf: install-pdf-am
install-pdf-am:
install-ps: install-ps-am
install-ps-am:
installcheck-am:
maintainer-clean: maintainer-clean-am
-rm -rf ./$(DEPDIR)
-rm -f Makefile
maintainer-clean-am: distclean-am maintainer-clean-generic
mostlyclean: mostlyclean-am
mostlyclean-am: mostlyclean-compile mostlyclean-generic \
mostlyclean-libtool
pdf: pdf-am
pdf-am:
ps: ps-am
ps-am:
uninstall-am: uninstall-binPROGRAMS uninstall-dist_docDATA
.MAKE: install-am install-strip
.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean \
clean-binPROGRAMS clean-generic clean-libtool cscopelist-am \
ctags ctags-am distclean distclean-compile distclean-generic \
distclean-libtool distclean-tags distdir dvi dvi-am html \
html-am info info-am install install-am install-binPROGRAMS \
install-data install-data-am install-dist_docDATA install-dvi \
install-dvi-am install-exec install-exec-am install-html \
install-html-am install-info install-info-am install-man \
install-pdf install-pdf-am install-ps install-ps-am \
install-strip installcheck installcheck-am installdirs \
maintainer-clean maintainer-clean-generic mostlyclean \
mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
pdf pdf-am ps ps-am tags tags-am uninstall uninstall-am \
uninstall-binPROGRAMS uninstall-dist_docDATA
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:
snort-2.9.6.0/tools/control/ 0000755 0000000 0000000 00000000000 12260606571 012627 5 0000000 0000000 snort-2.9.6.0/tools/control/sfcontrol.c 0000644 0000000 0000000 00000024526 12260565733 014741 0000000 0000000 /*
** $Id$
**
** sfcontrol.c
**
** Copyright (C) 2014 Cisco and/or its affiliates. All rights reserved.
** Copyright (C) 2002-2013 Sourcefire, Inc.
** Author(s): Ron Dempster
**
** NOTES
** 5.5.11 - Initial Source Code. Dempster
**
** This program is free software; you can redistribute it and/or modify
** it under the terms of the GNU General Public License Version 2 as
** published by the Free Software Foundation. You may not use, modify or
** distribute this program under any other version of the GNU General
** Public License.
**
** This program is distributed in the hope that it will be useful,
** but WITHOUT ANY WARRANTY; without even the implied warranty of
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
** GNU General Public License for more details.
**
** You should have received a copy of the GNU General Public License
** along with this program; if not, write to the Free Software
** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
**
*/
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include "sfcontrol.h"
#ifndef PATH_MAX
#define PATH_MAX 4096
#endif
typedef enum
{
PRINT_MODE_FAST,
PRINT_MODE_DETAIL
}PrintMode;
#define PRINT_MODE_FAST_KEYWORD "-text"
struct _CS_MESSAGE
{
CSMessageHeader hdr;
CSMessageDataHeader msg_hdr;
uint8_t msg[4096];
} __attribute__((packed));
typedef struct _CS_MESSAGE CSMessage;
static void DumpHex(FILE *fp, const uint8_t *data, unsigned len)
{
char str[18];
unsigned i;
unsigned pos;
char c;
for (i=0, pos=0; i [-text]"
"[\"sub command string\"]\n",progname);
}
static int SendMessage(int socket_fd, const CSMessage *msg, uint32_t len)
{
ssize_t numsent;
unsigned total_len = sizeof(*msg) + len;
unsigned total = 0;
do
{
numsent = write(socket_fd, (*(uint8_t **)&msg) + total, total_len - total);
if (!numsent)
return 0;
else if (numsent > 0)
total += numsent;
else if (errno != EINTR && errno != EAGAIN)
return -1;
} while (total < total_len);
return 1;
}
static int ReadData(int socket_fd, uint8_t *buffer, uint32_t length)
{
ssize_t numread;
unsigned total = 0;
do
{
numread = read(socket_fd, buffer + total, length - total);
if (!numread)
return 0;
else if (numread > 0)
total += numread;
else if (errno != EINTR && errno != EAGAIN)
return -1;
} while (total < length);
if (total < length)
return 0;
return 1;
}
static int ReadResponse(int socket_fd, CSMessageHeader *hdr)
{
ssize_t numread;
unsigned total = 0;
do
{
numread = read(socket_fd, (*(uint8_t **)&hdr) + total, sizeof(*hdr) - total);
if (!numread)
return 0;
else if (numread > 0)
total += numread;
else if (errno != EINTR && errno != EAGAIN)
return -1;
} while (total < sizeof(*hdr));
if (total < sizeof(*hdr))
return 0;
hdr->length = ntohl(hdr->length);
hdr->version = ntohs(hdr->version);
hdr->type = ntohs(hdr->type);
return 1;
}
void ConnectToUnixSocket(const char * const name, int * const psock)
{
struct sockaddr_un sunaddr;
int sock = -1;
int rval;
memset(&sunaddr, 0, sizeof(sunaddr));
rval = snprintf(sunaddr.sun_path, sizeof(sunaddr.sun_path), "%s", name);
if (rval < 0 || (size_t)rval >= sizeof(sunaddr.sun_path))
{
fprintf(stderr, "Socket name '%s' is too long\n", name);
exit(-1);
}
sunaddr.sun_family = AF_UNIX;
/* open the socket */
if ((sock = socket(AF_UNIX, SOCK_STREAM, 0)) == -1)
{
fprintf(stderr, "Error opening socket: %s\n", strerror(errno));
exit(-1);
}
if (connect(sock, (struct sockaddr *) &sunaddr, sizeof(sunaddr)) == -1)
{
fprintf(stderr, "Unable to connect to UNIX socket at %s: %s\n", name, strerror(errno));
close(sock);
exit(-1);
}
*psock = sock;
}
int main(int argc, char *argv[])
{
int rval;
char socket_fn[PATH_MAX];
int socket_fd;
char *p;
CSMessage *message;
unsigned long type;
const char *sep;
ssize_t len;
PrintMode mode = PRINT_MODE_DETAIL;
const char *extra;
unsigned int extra_len = 0;
if (argc < 3 || argc > 5 || !*argv[1] || !*argv[2])
{
DisplayUsage(argv[0]);
exit(-1);
}
else if (argc > 3)
{
int idx = 3;
if((strlen(PRINT_MODE_FAST_KEYWORD) == strlen(argv[idx])) &&
(strcmp(PRINT_MODE_FAST_KEYWORD,argv[idx]) == 0))
{
mode = PRINT_MODE_FAST;
idx ++;
}
if (argc > idx)
{
extra = argv[idx];
extra_len = strlen(extra) + 1;
}
}
type = strtoul(argv[2], &p, 0);
if (*p || type > CS_TYPE_MAX)
{
DisplayUsage(argv[0]);
exit(-1);
}
len = strlen(argv[1]);
if (len && argv[1][len - 1] == '/')
sep = "";
else
sep = "/";
snprintf(socket_fn, sizeof(socket_fn), "%s%s%s", argv[1], sep, CONTROL_FILE);
ConnectToUnixSocket(socket_fn, &socket_fd);
if (extra_len > sizeof(message->msg))
{
fprintf(stderr, "snort_control: message is too long.\n");
exit(-1);
}
message = malloc(sizeof *message);
if (message == NULL)
{
fprintf(stderr, "snort_control: could not allocate message.\n");
exit(-1);
}
message->hdr.version = htons(CS_HEADER_VERSION);
message->hdr.type = htons((uint16_t)type);
message->hdr.length = 0;
if (extra_len)
{
message->hdr.length = htonl(extra_len + sizeof(message->msg_hdr));
message->msg_hdr.code = 0;
message->msg_hdr.length = htons(extra_len);
memcpy(message->msg, extra, extra_len);
}
if ((rval = SendMessage(socket_fd, message, extra_len)) < 0)
{
fprintf(stderr, "Failed to send the message: %s\n", strerror(errno));
close(socket_fd);
exit(-1);
}
else if (!rval)
{
fprintf(stderr, "Server closed the socket\n");
close(socket_fd);
exit(-1);
}
do
{
/* Reusing the same CSMessage to capture the response */
if ((rval = ReadResponse(socket_fd, &message->hdr)) < 0)
{
fprintf(stderr, "Failed to read the response: %s\n", strerror(errno));
close(socket_fd);
exit(-1);
}
else if (!rval)
{
fprintf(stderr, "Server closed the socket before sending a response\n");
close(socket_fd);
exit(-1);
}
if (message->hdr.version != CS_HEADER_VERSION)
{
printf("snort_control: bad response version\n");
close(socket_fd);
exit(-1);
}
if (message->hdr.length)
{
if (message->hdr.length < sizeof(message->msg_hdr))
{
printf("snort_control: response message is too small\n");
close(socket_fd);
exit(-1);
}
if (message->hdr.length > sizeof(message->msg))
{
printf("snort_control: response message is too large\n");
close(socket_fd);
exit(-1);
}
if ((rval = ReadData(socket_fd, (uint8_t *)message+sizeof(message->hdr), message->hdr.length)) < 0)
{
fprintf(stderr, "Failed to read the response data: %s\n", strerror(errno));
close(socket_fd);
exit(-1);
}
else if (!rval)
{
fprintf(stderr, "Server closed the socket before sending the response data\n");
close(socket_fd);
exit(-1);
}
message->msg_hdr.code = ntohl(message->msg_hdr.code);
message->msg_hdr.length = ntohs(message->msg_hdr.length);
if (mode == PRINT_MODE_DETAIL)
{
fprintf(stdout, "Response %04X with code %d and length %u\n",
message->hdr.type, message->msg_hdr.code, message->msg_hdr.length);
DumpHex(stdout, message->msg, message->msg_hdr.length);
}
else if (mode == PRINT_MODE_FAST)
{
if (message->msg_hdr.length == message->hdr.length - sizeof(message->msg_hdr))
{
message->msg[message->msg_hdr.length-1] = 0;
fprintf(stdout, "Response %04X with code %d (%s)\n",
message->hdr.type, message->msg_hdr.code, message->msg);
}
else
fprintf(stdout, "Response %04X with code %d\n", message->hdr.type, message->msg_hdr.code);
}
}
else
{
if (mode == PRINT_MODE_DETAIL)
printf("Response %04X without data\n", message->hdr.type);
else
printf("Response %04X\n", message->hdr.type);
}
} while (message->hdr.type == CS_HEADER_DATA);
return 0;
}
snort-2.9.6.0/tools/control/README.snort_control 0000644 0000000 0000000 00000001244 11652017025 016326 0000000 0000000 snort_control - Tool to connect to the snort control channel and issue a command
--------------------------------------------
About
-----
The current version of Snort can be configured to provide a Unix socket
that can be used to issue commands to the running process.
Installation
------------
snort_control is made and installed along with snort in the same bin directory
when configured with the --enable-control-socket option. The control socket
functionality is supported on Linux only.
Usage
-----
$ snort_control
"log path" specifies the directory passed to snort with the -l option
"command" is an unsigned 32-bit command value
snort-2.9.6.0/tools/control/Makefile.am 0000644 0000000 0000000 00000000367 11652017025 014603 0000000 0000000 AUTOMAKE_OPTIONS=foreign
bin_PROGRAMS = snort_control
docdir = ${datadir}/doc/${PACKAGE}
snort_control_SOURCES = sfcontrol.c
snort_control_CFLAGS = @CFLAGS@ $(AM_CFLAGS)
INCLUDES = @INCLUDES@ @extra_incl@
dist_doc_DATA = README.snort_control
snort-2.9.6.0/tools/control/Makefile.in 0000644 0000000 0000000 00000056675 12260606526 014637 0000000 0000000 # Makefile.in generated by automake 1.13.4 from Makefile.am.
# @configure_input@
# Copyright (C) 1994-2013 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.
@SET_MAKE@
VPATH = @srcdir@
am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
am__make_running_with_option = \
case $${target_option-} in \
?) ;; \
*) echo "am__make_running_with_option: internal error: invalid" \
"target option '$${target_option-}' specified" >&2; \
exit 1;; \
esac; \
has_opt=no; \
sane_makeflags=$$MAKEFLAGS; \
if $(am__is_gnu_make); then \
sane_makeflags=$$MFLAGS; \
else \
case $$MAKEFLAGS in \
*\\[\ \ ]*) \
bs=\\; \
sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
| sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
esac; \
fi; \
skip_next=no; \
strip_trailopt () \
{ \
flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
}; \
for flg in $$sane_makeflags; do \
test $$skip_next = yes && { skip_next=no; continue; }; \
case $$flg in \
*=*|--*) continue;; \
-*I) strip_trailopt 'I'; skip_next=yes;; \
-*I?*) strip_trailopt 'I';; \
-*O) strip_trailopt 'O'; skip_next=yes;; \
-*O?*) strip_trailopt 'O';; \
-*l) strip_trailopt 'l'; skip_next=yes;; \
-*l?*) strip_trailopt 'l';; \
-[dEDm]) skip_next=yes;; \
-[JT]) skip_next=yes;; \
esac; \
case $$flg in \
*$$target_option*) has_opt=yes; break;; \
esac; \
done; \
test $$has_opt = yes
am__make_dryrun = (target_option=n; $(am__make_running_with_option))
am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
pkgdatadir = $(datadir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
pkglibexecdir = $(libexecdir)/@PACKAGE@
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
install_sh_DATA = $(install_sh) -c -m 644
install_sh_PROGRAM = $(install_sh) -c
install_sh_SCRIPT = $(install_sh) -c
INSTALL_HEADER = $(INSTALL_DATA)
transform = $(program_transform_name)
NORMAL_INSTALL = :
PRE_INSTALL = :
POST_INSTALL = :
NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
bin_PROGRAMS = snort_control$(EXEEXT)
subdir = tools/control
DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
$(top_srcdir)/depcomp $(dist_doc_DATA)
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/configure.in
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
mkinstalldirs = $(install_sh) -d
CONFIG_HEADER = $(top_builddir)/config.h
CONFIG_CLEAN_FILES =
CONFIG_CLEAN_VPATH_FILES =
am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(docdir)"
PROGRAMS = $(bin_PROGRAMS)
am_snort_control_OBJECTS = snort_control-sfcontrol.$(OBJEXT)
snort_control_OBJECTS = $(am_snort_control_OBJECTS)
snort_control_LDADD = $(LDADD)
AM_V_lt = $(am__v_lt_@AM_V@)
am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
am__v_lt_0 = --silent
am__v_lt_1 =
snort_control_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
$(LIBTOOLFLAGS) --mode=link $(CCLD) $(snort_control_CFLAGS) \
$(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
AM_V_P = $(am__v_P_@AM_V@)
am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
am__v_P_0 = false
am__v_P_1 = :
AM_V_GEN = $(am__v_GEN_@AM_V@)
am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
am__v_GEN_0 = @echo " GEN " $@;
am__v_GEN_1 =
AM_V_at = $(am__v_at_@AM_V@)
am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
am__v_at_0 = @
am__v_at_1 =
DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
depcomp = $(SHELL) $(top_srcdir)/depcomp
am__depfiles_maybe = depfiles
am__mv = mv -f
COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
$(AM_CFLAGS) $(CFLAGS)
AM_V_CC = $(am__v_CC_@AM_V@)
am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
am__v_CC_0 = @echo " CC " $@;
am__v_CC_1 =
CCLD = $(CC)
LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
$(AM_LDFLAGS) $(LDFLAGS) -o $@
AM_V_CCLD = $(am__v_CCLD_@AM_V@)
am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
am__v_CCLD_0 = @echo " CCLD " $@;
am__v_CCLD_1 =
SOURCES = $(snort_control_SOURCES)
DIST_SOURCES = $(snort_control_SOURCES)
am__can_run_installinfo = \
case $$AM_UPDATE_INFO_DIR in \
n|no|NO) false;; \
*) (install-info --version) >/dev/null 2>&1;; \
esac
am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
am__vpath_adj = case $$p in \
$(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
*) f=$$p;; \
esac;
am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
am__install_max = 40
am__nobase_strip_setup = \
srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
am__nobase_strip = \
for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
am__nobase_list = $(am__nobase_strip_setup); \
for p in $$list; do echo "$$p $$p"; done | \
sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
$(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
if (++n[$$2] == $(am__install_max)) \
{ print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
END { for (dir in files) print dir, files[dir] }'
am__base_list = \
sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
am__uninstall_files_from_dir = { \
test -z "$$files" \
|| { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
|| { echo " ( cd '$$dir' && rm -f" $$files ")"; \
$(am__cd) "$$dir" && rm -f $$files; }; \
}
DATA = $(dist_doc_DATA)
am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
# Read a list of newline-separated strings from the standard input,
# and print each of them once, without duplicates. Input order is
# *not* preserved.
am__uniquify_input = $(AWK) '\
BEGIN { nonempty = 0; } \
{ items[$$0] = 1; nonempty = 1; } \
END { if (nonempty) { for (i in items) print i; }; } \
'
# Make sure the list of sources is unique. This is necessary because,
# e.g., the same source file might be shared among _SOURCES variables
# for different programs/libraries.
am__define_uniq_tagged_files = \
list='$(am__tagged_files)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | $(am__uniquify_input)`
ETAGS = etags
CTAGS = ctags
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
ACLOCAL = @ACLOCAL@
AMTAR = @AMTAR@
AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
AR = @AR@
AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
CC = @CC@
CCDEPMODE = @CCDEPMODE@
CCONFIGFLAGS = @CCONFIGFLAGS@
CFLAGS = @CFLAGS@
CONFIGFLAGS = @CONFIGFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
DLLTOOL = @DLLTOOL@
DSYMUTIL = @DSYMUTIL@
DUMPBIN = @DUMPBIN@
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
FGREP = @FGREP@
GREP = @GREP@
ICONFIGFLAGS = @ICONFIGFLAGS@
INCLUDES = @INCLUDES@ @extra_incl@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
LD = @LD@
LDFLAGS = @LDFLAGS@
LEX = @LEX@
LIBOBJS = @LIBOBJS@
LIBS = @LIBS@
LIBTOOL = @LIBTOOL@
LIPO = @LIPO@
LN_S = @LN_S@
LTLIBOBJS = @LTLIBOBJS@
MAINT = @MAINT@
MAKEINFO = @MAKEINFO@
MANIFEST_TOOL = @MANIFEST_TOOL@
MKDIR_P = @MKDIR_P@
NM = @NM@
NMEDIT = @NMEDIT@
OBJDUMP = @OBJDUMP@
OBJEXT = @OBJEXT@
OTOOL = @OTOOL@
OTOOL64 = @OTOOL64@
PACKAGE = @PACKAGE@
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
PACKAGE_NAME = @PACKAGE_NAME@
PACKAGE_STRING = @PACKAGE_STRING@
PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_URL = @PACKAGE_URL@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
PKG_CONFIG = @PKG_CONFIG@
PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
RANLIB = @RANLIB@
RAZORBACK_CFLAGS = @RAZORBACK_CFLAGS@
RAZORBACK_LIBS = @RAZORBACK_LIBS@
SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SIGNAL_SNORT_DUMP_STATS = @SIGNAL_SNORT_DUMP_STATS@
SIGNAL_SNORT_READ_ATTR_TBL = @SIGNAL_SNORT_READ_ATTR_TBL@
SIGNAL_SNORT_RELOAD = @SIGNAL_SNORT_RELOAD@
SIGNAL_SNORT_ROTATE_STATS = @SIGNAL_SNORT_ROTATE_STATS@
STRIP = @STRIP@
VERSION = @VERSION@
XCCFLAGS = @XCCFLAGS@
YACC = @YACC@
abs_builddir = @abs_builddir@
abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
abs_top_srcdir = @abs_top_srcdir@
ac_ct_AR = @ac_ct_AR@
ac_ct_CC = @ac_ct_CC@
ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
am__tar = @am__tar@
am__untar = @am__untar@
bindir = @bindir@
build = @build@
build_alias = @build_alias@
build_cpu = @build_cpu@
build_os = @build_os@
build_vendor = @build_vendor@
builddir = @builddir@
datadir = @datadir@
datarootdir = @datarootdir@
docdir = ${datadir}/doc/${PACKAGE}
dvidir = @dvidir@
exec_prefix = @exec_prefix@
extra_incl = @extra_incl@
host = @host@
host_alias = @host_alias@
host_cpu = @host_cpu@
host_os = @host_os@
host_vendor = @host_vendor@
htmldir = @htmldir@
includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
libdir = @libdir@
libexecdir = @libexecdir@
localedir = @localedir@
localstatedir = @localstatedir@
mandir = @mandir@
mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
sysconfdir = @sysconfdir@
target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
AUTOMAKE_OPTIONS = foreign
snort_control_SOURCES = sfcontrol.c
snort_control_CFLAGS = @CFLAGS@ $(AM_CFLAGS)
dist_doc_DATA = README.snort_control
all: all-am
.SUFFIXES:
.SUFFIXES: .c .lo .o .obj
$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
@for dep in $?; do \
case '$(am__configure_deps)' in \
*$$dep*) \
( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
&& { if test -f $@; then exit 0; else break; fi; }; \
exit 1;; \
esac; \
done; \
echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign tools/control/Makefile'; \
$(am__cd) $(top_srcdir) && \
$(AUTOMAKE) --foreign tools/control/Makefile
.PRECIOUS: Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \
*config.status*) \
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
*) \
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
esac;
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(am__aclocal_m4_deps):
install-binPROGRAMS: $(bin_PROGRAMS)
@$(NORMAL_INSTALL)
@list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
if test -n "$$list"; then \
echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \
$(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \
fi; \
for p in $$list; do echo "$$p $$p"; done | \
sed 's/$(EXEEXT)$$//' | \
while read p p1; do if test -f $$p \
|| test -f $$p1 \
; then echo "$$p"; echo "$$p"; else :; fi; \
done | \
sed -e 'p;s,.*/,,;n;h' \
-e 's|.*|.|' \
-e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \
sed 'N;N;N;s,\n, ,g' | \
$(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \
{ d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
if ($$2 == $$4) files[d] = files[d] " " $$1; \
else { print "f", $$3 "/" $$4, $$1; } } \
END { for (d in files) print "f", d, files[d] }' | \
while read type dir files; do \
if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
test -z "$$files" || { \
echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \
$(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \
} \
; done
uninstall-binPROGRAMS:
@$(NORMAL_UNINSTALL)
@list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
files=`for p in $$list; do echo "$$p"; done | \
sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \
-e 's/$$/$(EXEEXT)/' \
`; \
test -n "$$list" || exit 0; \
echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \
cd "$(DESTDIR)$(bindir)" && rm -f $$files
clean-binPROGRAMS:
@list='$(bin_PROGRAMS)'; test -n "$$list" || exit 0; \
echo " rm -f" $$list; \
rm -f $$list || exit $$?; \
test -n "$(EXEEXT)" || exit 0; \
list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
echo " rm -f" $$list; \
rm -f $$list
snort_control$(EXEEXT): $(snort_control_OBJECTS) $(snort_control_DEPENDENCIES) $(EXTRA_snort_control_DEPENDENCIES)
@rm -f snort_control$(EXEEXT)
$(AM_V_CCLD)$(snort_control_LINK) $(snort_control_OBJECTS) $(snort_control_LDADD) $(LIBS)
mostlyclean-compile:
-rm -f *.$(OBJEXT)
distclean-compile:
-rm -f *.tab.c
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/snort_control-sfcontrol.Po@am__quote@
.c.o:
@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $<
.c.obj:
@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
.c.lo:
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
snort_control-sfcontrol.o: sfcontrol.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(snort_control_CFLAGS) $(CFLAGS) -MT snort_control-sfcontrol.o -MD -MP -MF $(DEPDIR)/snort_control-sfcontrol.Tpo -c -o snort_control-sfcontrol.o `test -f 'sfcontrol.c' || echo '$(srcdir)/'`sfcontrol.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/snort_control-sfcontrol.Tpo $(DEPDIR)/snort_control-sfcontrol.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='sfcontrol.c' object='snort_control-sfcontrol.o' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(snort_control_CFLAGS) $(CFLAGS) -c -o snort_control-sfcontrol.o `test -f 'sfcontrol.c' || echo '$(srcdir)/'`sfcontrol.c
snort_control-sfcontrol.obj: sfcontrol.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(snort_control_CFLAGS) $(CFLAGS) -MT snort_control-sfcontrol.obj -MD -MP -MF $(DEPDIR)/snort_control-sfcontrol.Tpo -c -o snort_control-sfcontrol.obj `if test -f 'sfcontrol.c'; then $(CYGPATH_W) 'sfcontrol.c'; else $(CYGPATH_W) '$(srcdir)/sfcontrol.c'; fi`
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/snort_control-sfcontrol.Tpo $(DEPDIR)/snort_control-sfcontrol.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='sfcontrol.c' object='snort_control-sfcontrol.obj' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(snort_control_CFLAGS) $(CFLAGS) -c -o snort_control-sfcontrol.obj `if test -f 'sfcontrol.c'; then $(CYGPATH_W) 'sfcontrol.c'; else $(CYGPATH_W) '$(srcdir)/sfcontrol.c'; fi`
mostlyclean-libtool:
-rm -f *.lo
clean-libtool:
-rm -rf .libs _libs
install-dist_docDATA: $(dist_doc_DATA)
@$(NORMAL_INSTALL)
@list='$(dist_doc_DATA)'; test -n "$(docdir)" || list=; \
if test -n "$$list"; then \
echo " $(MKDIR_P) '$(DESTDIR)$(docdir)'"; \
$(MKDIR_P) "$(DESTDIR)$(docdir)" || exit 1; \
fi; \
for p in $$list; do \
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
echo "$$d$$p"; \
done | $(am__base_list) | \
while read files; do \
echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(docdir)'"; \
$(INSTALL_DATA) $$files "$(DESTDIR)$(docdir)" || exit $$?; \
done
uninstall-dist_docDATA:
@$(NORMAL_UNINSTALL)
@list='$(dist_doc_DATA)'; test -n "$(docdir)" || list=; \
files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
dir='$(DESTDIR)$(docdir)'; $(am__uninstall_files_from_dir)
ID: $(am__tagged_files)
$(am__define_uniq_tagged_files); mkid -fID $$unique
tags: tags-am
TAGS: tags
tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
set x; \
here=`pwd`; \
$(am__define_uniq_tagged_files); \
shift; \
if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
test -n "$$unique" || unique=$$empty_fix; \
if test $$# -gt 0; then \
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
"$$@" $$unique; \
else \
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
$$unique; \
fi; \
fi
ctags: ctags-am
CTAGS: ctags
ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
$(am__define_uniq_tagged_files); \
test -z "$(CTAGS_ARGS)$$unique" \
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
$$unique
GTAGS:
here=`$(am__cd) $(top_builddir) && pwd` \
&& $(am__cd) $(top_srcdir) \
&& gtags -i $(GTAGS_ARGS) "$$here"
cscopelist: cscopelist-am
cscopelist-am: $(am__tagged_files)
list='$(am__tagged_files)'; \
case "$(srcdir)" in \
[\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
*) sdir=$(subdir)/$(srcdir) ;; \
esac; \
for i in $$list; do \
if test -f "$$i"; then \
echo "$(subdir)/$$i"; \
else \
echo "$$sdir/$$i"; \
fi; \
done >> $(top_builddir)/cscope.files
distclean-tags:
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
distdir: $(DISTFILES)
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
list='$(DISTFILES)'; \
dist_files=`for file in $$list; do echo $$file; done | \
sed -e "s|^$$srcdirstrip/||;t" \
-e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
case $$dist_files in \
*/*) $(MKDIR_P) `echo "$$dist_files" | \
sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
sort -u` ;; \
esac; \
for file in $$dist_files; do \
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
if test -d $$d/$$file; then \
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
if test -d "$(distdir)/$$file"; then \
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
fi; \
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
fi; \
cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
else \
test -f "$(distdir)/$$file" \
|| cp -p $$d/$$file "$(distdir)/$$file" \
|| exit 1; \
fi; \
done
check-am: all-am
check: check-am
all-am: Makefile $(PROGRAMS) $(DATA)
installdirs:
for dir in "$(DESTDIR)$(bindir)" "$(DESTDIR)$(docdir)"; do \
test -z "$$dir" || $(MKDIR_P) "$$dir"; \
done
install: install-am
install-exec: install-exec-am
install-data: install-data-am
uninstall: uninstall-am
install-am: all-am
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
installcheck: installcheck-am
install-strip:
if test -z '$(STRIP)'; then \
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
install; \
else \
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
"INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
fi
mostlyclean-generic:
clean-generic:
distclean-generic:
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
maintainer-clean-generic:
@echo "This command is intended for maintainers to use"
@echo "it deletes files that may require special tools to rebuild."
clean: clean-am
clean-am: clean-binPROGRAMS clean-generic clean-libtool mostlyclean-am
distclean: distclean-am
-rm -rf ./$(DEPDIR)
-rm -f Makefile
distclean-am: clean-am distclean-compile distclean-generic \
distclean-tags
dvi: dvi-am
dvi-am:
html: html-am
html-am:
info: info-am
info-am:
install-data-am: install-dist_docDATA
install-dvi: install-dvi-am
install-dvi-am:
install-exec-am: install-binPROGRAMS
install-html: install-html-am
install-html-am:
install-info: install-info-am
install-info-am:
install-man:
install-pdf: install-pdf-am
install-pdf-am:
install-ps: install-ps-am
install-ps-am:
installcheck-am:
maintainer-clean: maintainer-clean-am
-rm -rf ./$(DEPDIR)
-rm -f Makefile
maintainer-clean-am: distclean-am maintainer-clean-generic
mostlyclean: mostlyclean-am
mostlyclean-am: mostlyclean-compile mostlyclean-generic \
mostlyclean-libtool
pdf: pdf-am
pdf-am:
ps: ps-am
ps-am:
uninstall-am: uninstall-binPROGRAMS uninstall-dist_docDATA
.MAKE: install-am install-strip
.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean \
clean-binPROGRAMS clean-generic clean-libtool cscopelist-am \
ctags ctags-am distclean distclean-compile distclean-generic \
distclean-libtool distclean-tags distdir dvi dvi-am html \
html-am info info-am install install-am install-binPROGRAMS \
install-data install-data-am install-dist_docDATA install-dvi \
install-dvi-am install-exec install-exec-am install-html \
install-html-am install-info install-info-am install-man \
install-pdf install-pdf-am install-ps install-ps-am \
install-strip installcheck installcheck-am installdirs \
maintainer-clean maintainer-clean-generic mostlyclean \
mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
pdf pdf-am ps ps-am tags tags-am uninstall uninstall-am \
uninstall-binPROGRAMS uninstall-dist_docDATA
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:
snort-2.9.6.0/tools/u2spewfoo/ 0000755 0000000 0000000 00000000000 12260606571 013100 5 0000000 0000000 snort-2.9.6.0/tools/u2spewfoo/u2spewfoo.dsp 0000644 0000000 0000000 00000010015 11662530534 015456 0000000 0000000 # Microsoft Developer Studio Project File - Name="u2spewfoo" - Package Owner=<4>
# Microsoft Developer Studio Generated Build File, Format Version 6.00
# ** DO NOT EDIT **
# TARGTYPE "Win32 (x86) Console Application" 0x0103
CFG=u2spewfoo - Win32 Debug
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
!MESSAGE use the Export Makefile command and run
!MESSAGE
!MESSAGE NMAKE /f "u2spewfoo.mak".
!MESSAGE
!MESSAGE You can specify a configuration when running NMAKE
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE
!MESSAGE NMAKE /f "u2spewfoo.mak" CFG="u2spewfoo - Win32 Debug"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
!MESSAGE "u2spewfoo - Win32 Release" (based on "Win32 (x86) Console Application")
!MESSAGE "u2spewfoo - Win32 Debug" (based on "Win32 (x86) Console Application")
!MESSAGE
# Begin Project
# PROP AllowPerConfigDependencies 0
# PROP Scc_ProjName ""
# PROP Scc_LocalPath ""
CPP=cl.exe
RSC=rc.exe
!IF "$(CFG)" == "u2spewfoo - Win32 Release"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
# PROP BASE Output_Dir "Release"
# PROP BASE Intermediate_Dir "Release"
# PROP BASE Target_Dir ""
# PROP Use_MFC 2
# PROP Use_Debug_Libraries 0
# PROP Output_Dir "Release"
# PROP Intermediate_Dir "Release"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
# ADD CPP /nologo /MD /W3 /GX /O2 /I "..\..\src\win32\WIN32-Includes" /I "..\..\src\sfutil" /D "NDEBUG" /D "_CONSOLE" /D "WIN32" /D "_MBCS" /D "HAVE_CONFIG_H" /D "_AFXDLL" /D SIGNAL_SNORT_READ_ATTR_TBL=30 /YX /FD /c
# ADD BASE RSC /l 0x409 /d "NDEBUG"
# ADD RSC /l 0x409 /d "NDEBUG" /d "_AFXDLL"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
# ADD LINK32 wsock32.lib /nologo /subsystem:console /machine:I386
!ELSEIF "$(CFG)" == "u2spewfoo - Win32 Debug"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
# PROP BASE Output_Dir "Debug"
# PROP BASE Intermediate_Dir "Debug"
# PROP BASE Target_Dir ""
# PROP Use_MFC 2
# PROP Use_Debug_Libraries 1
# PROP Output_Dir "Debug"
# PROP Intermediate_Dir "Debug"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "..\..\src\win32\WIN32-Includes" /I "..\..\src\sfutil" /D "_DEBUG" /D "_CONSOLE" /D "WIN32" /D "_MBCS" /D "HAVE_CONFIG_H" /D "_AFXDLL" /D SIGNAL_SNORT_READ_ATTR_TBL=30 /YX /FD /GZ /c
# ADD BASE RSC /l 0x409 /d "_DEBUG"
# ADD RSC /l 0x409 /d "_DEBUG" /d "_AFXDLL"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
# ADD LINK32 wsock32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
!ENDIF
# Begin Target
# Name "u2spewfoo - Win32 Release"
# Name "u2spewfoo - Win32 Debug"
# Begin Group "Source Files"
# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
# Begin Source File
SOURCE=.\u2spewfoo.c
# End Source File
# End Group
# Begin Group "Header Files"
# PROP Default_Filter "h;hpp;hxx;hm;inl"
# End Group
# Begin Group "Resource Files"
# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
# End Group
# End Target
# End Project
snort-2.9.6.0/tools/u2spewfoo/u2spewfoo.c 0000644 0000000 0000000 00000051527 12260565733 015133 0000000 0000000 /*
* Copyright (C) 2014 Cisco and/or its affiliates. All rights reserved.
* Copyright (C) 2002-2013 Sourcefire, Inc.
* Copyright (C) 1998-2002 Martin Roesch
* Author: Adam Keeton
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License Version 2 as
* published by the Free Software Foundation. You may not use, modify or
* distribute this program under any other version of the GNU General
* Public License.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
#ifndef WIN32
#include
#include
#include
#include
#include
#include
#include
#include
#include
#endif
#ifdef HAVE_UUID_UUID_H
#include
#endif
#include "Unified2_common.h"
#define SUCCESS 314159265
#define STEVE -1
#define FAILURE STEVE
#ifndef WIN32
#ifndef uint32_t
typedef unsigned int uint32_t;
typedef unsigned short uint16_t;
typedef unsigned char uint8_t;
#endif
#else
static void inet_ntop(int family, const void *ip_raw, char *buf, int bufsize) {
int i;
if(!ip_raw || !buf || !bufsize ||
(family != AF_INET && family != AF_INET6) ||
/* Make sure if it's IPv6 that the buf is large enough. */
/* Need atleast a max of 8 fields of 4 bytes plus 7 for colons in
* between. Need 1 more byte for null. */
(family == AF_INET6 && bufsize < 8*4 + 7 + 1) ||
/* Make sure if it's IPv4 that the buf is large enough. */
/* 4 fields of 3 numbers, plus 3 dots and a null byte */
(family == AF_INET && bufsize < 3*4 + 4) )
{
if(buf && bufsize > 0) buf[0] = 0;
return;
}
/* 4 fields of at most 3 characters each */
if(family == AF_INET) {
u_int8_t *p = (u_int8_t*)ip_raw;
for(i=0; p < ((u_int8_t*)ip_raw) + 4; p++) {
i += sprintf(&buf[i], "%d", *p);
/* If this is the last iteration, this could technically cause one
* extra byte to be written past the end. */
if(i < bufsize && ((p + 1) < ((u_int8_t*)ip_raw+4)))
buf[i] = '.';
i++;
}
/* Check if this is really just an IPv4 address represented as 6,
* in compatible format */
#if 0
}
else if(!field[0] && !field[1] && !field[2]) {
unsigned char *p = (unsigned char *)(&ip->ip[12]);
for(i=0; p < &ip->ip[16]; p++)
i += sprintf(&buf[i], "%d.", *p);
#endif
}
else {
u_int16_t *p = (u_int16_t*)ip_raw;
for(i=0; p < ((u_int16_t*)ip_raw) + 8; p++) {
i += sprintf(&buf[i], "%04x", ntohs(*p));
/* If this is the last iteration, this could technically cause one
* extra byte to be written past the end. */
if(i < bufsize && ((p + 1) < ((u_int16_t*)ip_raw) + 8))
buf[i] = ':';
i++;
}
}
}
#endif
typedef struct _record {
uint32_t type;
uint32_t length;
uint8_t *data;
} u2record;
typedef struct _u2iterator {
FILE *file;
char *filename;
u2record current;
} u2iterator;
static long s_pos = 0, s_off = 0;
#define TO_IP(x) x >> 24, (x >> 16) & 0xff, (x >> 8) & 0xff, x & 0xff
static u2iterator *new_iterator(char *filename) {
FILE *f = fopen(filename, "rb");
u2iterator *ret;
if(!f) {
printf("new_iterator: Failed to open file: %s\n\tErrno: %s\n",
filename, strerror(errno));
return NULL;
}
ret = (u2iterator*)malloc(sizeof(u2iterator));
if(!ret) {
printf("new_iterator: Failed to malloc %lu bytes.\n", (unsigned long)sizeof(u2iterator));
fclose(f);
return NULL;
}
ret->file = f;
ret->filename = strdup(filename);
return ret;
}
static inline void free_iterator(u2iterator *it) {
if(it->file) fclose(it->file);
if(it->filename) free(it->filename);
if(it) free(it);
}
static int get_record(u2iterator *it, u2record *record) {
uint32_t bytes_read;
uint8_t *tmp;
if(!it || !it->file) return FAILURE;
/* check if the log was rotated */
if(feof(it->file)) {
/* Get next timestamped file? */
puts("Hit the EOF .. and this is not being handled yet.");
return FAILURE;
}
if ( s_off )
{
fseek(it->file, s_pos+s_off, SEEK_SET);
s_off = 0;
}
/* read type and length */
bytes_read = fread(record, 1, sizeof(uint32_t) * 2, it->file);
/* But they're in network order! */
record->type= ntohl(record->type);
record->length= ntohl(record->length);
//if(record->type == UNIFIED2_PACKET) record->length+=4;
if(bytes_read == 0)
/* EOF */
return FAILURE;
if(bytes_read != sizeof(uint32_t)*2) {
puts("get_record: (1) Failed to read all of record.");
printf("\tRead %u of %lu bytes\n", bytes_read, (unsigned long)sizeof(uint32_t)*2);
return FAILURE;
}
s_pos = ftell(it->file);
tmp = (uint8_t *)realloc(record->data, record->length);
if (!tmp)
{
puts("get_record: (2) Failed to allocate memory.");
free(record->data);
return FAILURE;
}
record->data = tmp;
bytes_read = fread(record->data, 1, record->length, it->file);
if(bytes_read != record->length) {
puts("get_record: (3) Failed to read all of record data.");
printf("\tRead %u of %u bytes\n", bytes_read, record->length);
if ( record->type != UNIFIED2_PACKET ||
bytes_read < ntohl(((Serial_Unified2Packet*)record->data)->packet_length)
)
return FAILURE;
clearerr(it->file);
}
return SUCCESS;
}
static void extradata_dump(u2record *record) {
uint8_t *field, *data;
int i;
int len = 0;
SerialUnified2ExtraData event;
Unified2ExtraDataHdr eventHdr;
uint32_t ip;
char ip6buf[INET6_ADDRSTRLEN+1];
struct in6_addr ipAddr;
memcpy(&eventHdr, record->data, sizeof(Unified2ExtraDataHdr));
memcpy(&event, record->data + sizeof(Unified2ExtraDataHdr) , sizeof(SerialUnified2ExtraData));
/* network to host ordering */
field = (uint8_t*)&eventHdr;
for(i=0; i<2; i++, field+=4) {
*(uint32_t*)field = ntohl(*(uint32_t*)field);
}
field = (uint8_t*)&event;
for(i=0; i<6; i++, field+=4) {
*(uint32_t*)field = ntohl(*(uint32_t*)field);
}
printf("\n(ExtraDataHdr)\n"
"\tevent type: %u\tevent length: %u\n",
eventHdr.event_type, eventHdr.event_length);
printf("\n(ExtraData)\n"
"\tsensor id: %u\tevent id: %u\tevent second: %u\n"
"\ttype: %u\tdatatype: %u\tbloblength: %u\t",
event.sensor_id, event.event_id,
event.event_second, event.type,
event.data_type, event.blob_length);
len = event.blob_length - sizeof(event.blob_length) - sizeof(event.data_type);
switch(event.type)
{
case EVENT_INFO_XFF_IPV4:
memcpy(&ip, record->data + sizeof(Unified2ExtraDataHdr) + sizeof(SerialUnified2ExtraData), sizeof(uint32_t));
ip = ntohl(ip);
printf("Original Client IP: %u.%u.%u.%u\n",
TO_IP(ip));
break;
case EVENT_INFO_XFF_IPV6:
memcpy(&ipAddr, record->data + sizeof(Unified2ExtraDataHdr) + sizeof(SerialUnified2ExtraData), sizeof(struct in6_addr));
inet_ntop(AF_INET6, &ipAddr, ip6buf, INET6_ADDRSTRLEN);
printf("Original Client IP: %s\n",
ip6buf);
break;
case EVENT_INFO_GZIP_DATA:
printf("GZIP Decompressed Data: %.*s\n",
len, record->data + sizeof(Unified2ExtraDataHdr) + sizeof(SerialUnified2ExtraData));
break;
case EVENT_INFO_JSNORM_DATA:
printf("Normalized JavaScript Data: %.*s\n",
len, record->data + sizeof(Unified2ExtraDataHdr) + sizeof(SerialUnified2ExtraData));
break;
case EVENT_INFO_SMTP_FILENAME:
printf("SMTP Attachment Filename: %.*s\n",
len,record->data + sizeof(Unified2ExtraDataHdr) + sizeof(SerialUnified2ExtraData));
break;
case EVENT_INFO_SMTP_MAILFROM:
printf("SMTP MAIL FROM Addresses: %.*s\n",
len,record->data + sizeof(Unified2ExtraDataHdr) + sizeof(SerialUnified2ExtraData));
break;
case EVENT_INFO_SMTP_RCPTTO:
printf("SMTP RCPT TO Addresses: %.*s\n",
len, record->data + sizeof(Unified2ExtraDataHdr) + sizeof(SerialUnified2ExtraData));
break;
case EVENT_INFO_SMTP_EMAIL_HDRS:
printf("SMTP EMAIL HEADERS: \n%.*s\n",
len, record->data + sizeof(Unified2ExtraDataHdr) + sizeof(SerialUnified2ExtraData));
break;
case EVENT_INFO_HTTP_URI:
printf("HTTP URI: %.*s\n",
len, record->data + sizeof(Unified2ExtraDataHdr) + sizeof(SerialUnified2ExtraData));
break;
case EVENT_INFO_HTTP_HOSTNAME:
printf("HTTP Hostname: ");
data = record->data + sizeof(Unified2ExtraDataHdr) + sizeof(SerialUnified2ExtraData);
for(i=0; i < len; i++)
{
if(iscntrl(data[i]))
printf("%c",'.');
else
printf("%c",data[i]);
}
printf("\n");
break;
case EVENT_INFO_IPV6_SRC:
memcpy(&ipAddr, record->data + sizeof(Unified2ExtraDataHdr) + sizeof(SerialUnified2ExtraData), sizeof(struct in6_addr));
inet_ntop(AF_INET6, &ipAddr, ip6buf, INET6_ADDRSTRLEN);
printf("IPv6 Source Address: %s\n",
ip6buf);
break;
case EVENT_INFO_IPV6_DST:
memcpy(&ipAddr, record->data + sizeof(Unified2ExtraDataHdr) + sizeof(SerialUnified2ExtraData), sizeof(struct in6_addr));
inet_ntop(AF_INET6, &ipAddr, ip6buf, INET6_ADDRSTRLEN);
printf("IPv6 Destination Address: %s\n",
ip6buf);
break;
default :
break;
}
}
static void event_dump(u2record *record) {
uint8_t *field;
int i;
Serial_Unified2IDSEvent_legacy event;
memcpy(&event, record->data, sizeof(Serial_Unified2IDSEvent_legacy));
/* network to host ordering */
/* In the event structure, only the last 40 bits are not 32 bit fields */
/* The first 11 fields need to be convertted */
field = (uint8_t*)&event;
for(i=0; i<11; i++, field+=4) {
*(uint32_t*)field = ntohl(*(uint32_t*)field);
}
/* last 3 fields, with the exception of the last most since it's just one byte */
*(uint16_t*)field = ntohs(*(uint16_t*)field); /* sport_itype */
field += 2;
*(uint16_t*)field = ntohs(*(uint16_t*)field); /* dport_icode */
/* done changing the network ordering */
printf("\n(Event)\n"
"\tsensor id: %u\tevent id: %u\tevent second: %u\tevent microsecond: %u\n"
"\tsig id: %u\tgen id: %u\trevision: %u\t classification: %u\n"
"\tpriority: %u\tip source: %u.%u.%u.%u\tip destination: %u.%u.%u.%u\n"
"\tsrc port: %u\tdest port: %u\tprotocol: %u\timpact_flag: %u\tblocked: %u\n",
event.sensor_id, event.event_id,
event.event_second, event.event_microsecond,
event.signature_id, event.generator_id,
event.signature_revision, event.classification_id,
event.priority_id, TO_IP(event.ip_source),
TO_IP(event.ip_destination), event.sport_itype,
event.dport_icode, event.protocol,
event.impact_flag, event.blocked);
}
static void event6_dump(u2record *record) {
uint8_t *field;
int i;
Serial_Unified2IDSEventIPv6_legacy event;
char ip6buf[INET6_ADDRSTRLEN+1];
memcpy(&event, record->data, sizeof(Serial_Unified2IDSEventIPv6_legacy));
/* network to host ordering */
/* In the event structure, only the last 40 bits are not 32 bit fields */
/* The first fields need to be convertted */
field = (uint8_t*)&event;
for(i=0; i<9; i++, field+=4) {
*(uint32_t*)field = ntohl(*(uint32_t*)field);
}
field = field + 2*sizeof(struct in6_addr);
/* last 3 fields, with the exception of the last most since it's just one byte */
*(uint16_t*)field = ntohs(*(uint16_t*)field); /* sport_itype */
field += 2;
*(uint16_t*)field = ntohs(*(uint16_t*)field); /* dport_icode */
/* done changing the network ordering */
inet_ntop(AF_INET6, &event.ip_source, ip6buf, INET6_ADDRSTRLEN);
printf("\n(IPv6 Event)\n"
"\tsensor id: %u\tevent id: %u\tevent second: %u\tevent microsecond: %u\n"
"\tsig id: %u\tgen id: %u\trevision: %u\t classification: %u\n"
"\tpriority: %u\tip source: %s\t",
event.sensor_id, event.event_id,
event.event_second, event.event_microsecond,
event.signature_id, event.generator_id,
event.signature_revision, event.classification_id,
event.priority_id, ip6buf);
inet_ntop(AF_INET6, &event.ip_destination, ip6buf, INET6_ADDRSTRLEN);
printf("ip destination: %s\n"
"\tsrc port: %u\tdest port: %u\tprotocol: %u\timpact_flag: %u\tblocked: %u\n",
ip6buf, event.sport_itype,
event.dport_icode, event.protocol,
event.impact_flag, event.blocked);
}
static void event2_dump(u2record *record) {
uint8_t *field;
int i;
Serial_Unified2IDSEvent event;
memcpy(&event, record->data, sizeof(Serial_Unified2IDSEvent));
/* network to host ordering */
/* In the event structure, only the last 40 bits are not 32 bit fields */
/* The first 11 fields need to be convertted */
field = (uint8_t*)&event;
for(i=0; i<11; i++, field+=4) {
*(uint32_t*)field = ntohl(*(uint32_t*)field);
}
/* last 3 fields, with the exception of the last most since it's just one byte */
*(uint16_t*)field = ntohs(*(uint16_t*)field); /* sport_itype */
field += 2;
*(uint16_t*)field = ntohs(*(uint16_t*)field); /* dport_icode */
field +=6;
*(uint32_t*)field = ntohl(*(uint32_t*)field); /* mpls_label */
field += 4;
/* policy_id and vlanid */
for(i=0; i<2; i++, field+=2) {
*(uint16_t*)field = ntohs(*(uint16_t*)field);
}
/* done changing the network ordering */
printf("\n(Event)\n"
"\tsensor id: %u\tevent id: %u\tevent second: %u\tevent microsecond: %u\n"
"\tsig id: %u\tgen id: %u\trevision: %u\t classification: %u\n"
"\tpriority: %u\tip source: %u.%u.%u.%u\tip destination: %u.%u.%u.%u\n"
"\tsrc port: %u\tdest port: %u\tprotocol: %u\timpact_flag: %u\tblocked: %u\n"
"\tmpls label: %u\tvland id: %u\tpolicy id: %u\n",
event.sensor_id, event.event_id,
event.event_second, event.event_microsecond,
event.signature_id, event.generator_id,
event.signature_revision, event.classification_id,
event.priority_id, TO_IP(event.ip_source),
TO_IP(event.ip_destination), event.sport_itype,
event.dport_icode, event.protocol,
event.impact_flag, event.blocked,
event.mpls_label, event.vlanId, event.pad2);
}
static void event2_6_dump(u2record *record) {
uint8_t *field;
int i;
char ip6buf[INET6_ADDRSTRLEN+1];
Serial_Unified2IDSEventIPv6 event;
memcpy(&event, record->data, sizeof(Serial_Unified2IDSEventIPv6));
/* network to host ordering */
/* In the event structure, only the last 40 bits are not 32 bit fields */
/* The first fields need to be convertted */
field = (uint8_t*)&event;
for(i=0; i<9; i++, field+=4) {
*(uint32_t*)field = ntohl(*(uint32_t*)field);
}
field = field + 2*sizeof(struct in6_addr);
/* last 3 fields, with the exception of the last most since it's just one byte */
*(uint16_t*)field = ntohs(*(uint16_t*)field); /* sport_itype */
field += 2;
*(uint16_t*)field = ntohs(*(uint16_t*)field); /* dport_icode */
field +=6;
*(uint32_t*)field = ntohl(*(uint32_t*)field); /* mpls_label */
field += 4;
/* policy_id and vlanid */
for(i=0; i<2; i++, field+=2) {
*(uint16_t*)field = ntohs(*(uint16_t*)field);
}
/* done changing the network ordering */
inet_ntop(AF_INET6, &event.ip_source, ip6buf, INET6_ADDRSTRLEN);
printf("\n(IPv6 Event)\n"
"\tsensor id: %u\tevent id: %u\tevent second: %u\tevent microsecond: %u\n"
"\tsig id: %u\tgen id: %u\trevision: %u\t classification: %u\n"
"\tpriority: %u\tip source: %s\t",
event.sensor_id, event.event_id,
event.event_second, event.event_microsecond,
event.signature_id, event.generator_id,
event.signature_revision, event.classification_id,
event.priority_id, ip6buf);
inet_ntop(AF_INET6, &event.ip_destination, ip6buf, INET6_ADDRSTRLEN);
printf("ip destination: %s\n"
"\tsrc port: %u\tdest port: %u\tprotocol: %u\timpact_flag: %u\tblocked: %u\n"
"\tmpls label: %u\tvland id: %u\tpolicy id: %u\n",
ip6buf, event.sport_itype,
event.dport_icode, event.protocol,
event.impact_flag, event.blocked,
event.mpls_label, event.vlanId,event.pad2);
}
static inline void print_uuid (const char* label, uint8_t* data)
{
#ifdef HAVE_LIBUUID
char buf[37];
uuid_unparse(data, buf);
printf("%s: %s\n", label, buf);
#else
printf("%s: %.*s\n", label, 16, data);
#endif
}
#define LOG_CHARS 16
static void LogBuffer (const uint8_t* p, unsigned n)
{
char hex[(3*LOG_CHARS)+1];
char txt[LOG_CHARS+1];
unsigned odx = 0, idx = 0, at = 0;
for ( idx = 0; idx < n; idx++)
{
uint8_t byte = p[idx];
sprintf(hex + 3*odx, "%2.02X ", byte);
txt[odx++] = isprint(byte) ? byte : '.';
if ( odx == LOG_CHARS )
{
txt[odx] = hex[3*odx] = '\0';
printf("[%5u] %s %s\n", at, hex, txt);
at = idx + 1;
odx = 0;
}
}
if ( odx )
{
txt[odx] = hex[3*odx] = '\0';
printf("[%5u] %-48.48s %s\n", at, hex, txt);
}
}
static void packet_dump(u2record *record) {
uint32_t counter;
uint8_t *field;
unsigned offset = sizeof(Serial_Unified2Packet)-4;
unsigned reclen = record->length - offset;
Serial_Unified2Packet packet;
memcpy(&packet, record->data, sizeof(Serial_Unified2Packet));
/* network to host ordering */
/* The first 7 fields need to be convertted */
field = (uint8_t*)&packet;
for(counter=0; counter<7; counter++, field+=4) {
*(uint32_t*)field = ntohl(*(uint32_t*)field);
}
/* done changing from network ordering */
printf("\nPacket\n"
"\tsensor id: %u\tevent id: %u\tevent second: %u\n"
"\tpacket second: %u\tpacket microsecond: %u\n"
"\tlinktype: %u\tpacket_length: %u\n",
packet.sensor_id, packet.event_id, packet.event_second,
packet.packet_second, packet.packet_microsecond, packet.linktype,
packet.packet_length);
if ( record->length <= offset )
return;
if ( packet.packet_length != reclen )
{
printf("ERROR: logged %u but packet_length = %u\n",
record->length-offset, packet.packet_length);
if ( packet.packet_length < reclen )
{
reclen = packet.packet_length;
s_off = reclen + offset;
}
}
LogBuffer(record->data+offset, reclen);
}
static int u2dump(char *file) {
u2record record;
u2iterator *it = new_iterator(file);
memset(&record, 0, sizeof(record));
if(!it) {
printf("u2dump: Failed to create new iterator with file: %s\n", file);
return -1;
}
while( get_record(it, &record) == SUCCESS ) {
if(record.type == UNIFIED2_IDS_EVENT) event_dump(&record);
else if(record.type == UNIFIED2_IDS_EVENT_VLAN) event2_dump(&record);
else if(record.type == UNIFIED2_PACKET) packet_dump(&record);
else if(record.type == UNIFIED2_IDS_EVENT_IPV6) event6_dump(&record);
else if(record.type == UNIFIED2_IDS_EVENT_IPV6_VLAN) event2_6_dump(&record);
else if(record.type == UNIFIED2_EXTRA_DATA) extradata_dump(&record);
}
free_iterator(it);
if(record.data)
free(record.data);
return 0;
}
int main(int argc, char **argv) {
if(argc != 2) {
puts("usage: u2eventdump ");
return 1;
}
return u2dump(argv[1]);
}
snort-2.9.6.0/tools/u2spewfoo/Makefile.am 0000644 0000000 0000000 00000000277 11607650044 015060 0000000 0000000 AUTOMAKE_OPTIONS=foreign
bin_PROGRAMS = u2spewfoo
u2spewfoo_SOURCES = u2spewfoo.c
u2spewfoo_CFLAGS = @CFLAGS@ $(AM_CFLAGS)
EXTRA_DIST = \
u2spewfoo.dsp
INCLUDES = @INCLUDES@ @extra_incl@
snort-2.9.6.0/tools/u2spewfoo/Makefile.in 0000644 0000000 0000000 00000052244 12260606527 015075 0000000 0000000 # Makefile.in generated by automake 1.13.4 from Makefile.am.
# @configure_input@
# Copyright (C) 1994-2013 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.
@SET_MAKE@
VPATH = @srcdir@
am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
am__make_running_with_option = \
case $${target_option-} in \
?) ;; \
*) echo "am__make_running_with_option: internal error: invalid" \
"target option '$${target_option-}' specified" >&2; \
exit 1;; \
esac; \
has_opt=no; \
sane_makeflags=$$MAKEFLAGS; \
if $(am__is_gnu_make); then \
sane_makeflags=$$MFLAGS; \
else \
case $$MAKEFLAGS in \
*\\[\ \ ]*) \
bs=\\; \
sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
| sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
esac; \
fi; \
skip_next=no; \
strip_trailopt () \
{ \
flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
}; \
for flg in $$sane_makeflags; do \
test $$skip_next = yes && { skip_next=no; continue; }; \
case $$flg in \
*=*|--*) continue;; \
-*I) strip_trailopt 'I'; skip_next=yes;; \
-*I?*) strip_trailopt 'I';; \
-*O) strip_trailopt 'O'; skip_next=yes;; \
-*O?*) strip_trailopt 'O';; \
-*l) strip_trailopt 'l'; skip_next=yes;; \
-*l?*) strip_trailopt 'l';; \
-[dEDm]) skip_next=yes;; \
-[JT]) skip_next=yes;; \
esac; \
case $$flg in \
*$$target_option*) has_opt=yes; break;; \
esac; \
done; \
test $$has_opt = yes
am__make_dryrun = (target_option=n; $(am__make_running_with_option))
am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
pkgdatadir = $(datadir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
pkglibexecdir = $(libexecdir)/@PACKAGE@
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
install_sh_DATA = $(install_sh) -c -m 644
install_sh_PROGRAM = $(install_sh) -c
install_sh_SCRIPT = $(install_sh) -c
INSTALL_HEADER = $(INSTALL_DATA)
transform = $(program_transform_name)
NORMAL_INSTALL = :
PRE_INSTALL = :
POST_INSTALL = :
NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
bin_PROGRAMS = u2spewfoo$(EXEEXT)
subdir = tools/u2spewfoo
DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
$(top_srcdir)/depcomp
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/configure.in
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
mkinstalldirs = $(install_sh) -d
CONFIG_HEADER = $(top_builddir)/config.h
CONFIG_CLEAN_FILES =
CONFIG_CLEAN_VPATH_FILES =
am__installdirs = "$(DESTDIR)$(bindir)"
PROGRAMS = $(bin_PROGRAMS)
am_u2spewfoo_OBJECTS = u2spewfoo-u2spewfoo.$(OBJEXT)
u2spewfoo_OBJECTS = $(am_u2spewfoo_OBJECTS)
u2spewfoo_LDADD = $(LDADD)
AM_V_lt = $(am__v_lt_@AM_V@)
am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
am__v_lt_0 = --silent
am__v_lt_1 =
u2spewfoo_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
$(LIBTOOLFLAGS) --mode=link $(CCLD) $(u2spewfoo_CFLAGS) \
$(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
AM_V_P = $(am__v_P_@AM_V@)
am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
am__v_P_0 = false
am__v_P_1 = :
AM_V_GEN = $(am__v_GEN_@AM_V@)
am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
am__v_GEN_0 = @echo " GEN " $@;
am__v_GEN_1 =
AM_V_at = $(am__v_at_@AM_V@)
am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
am__v_at_0 = @
am__v_at_1 =
DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
depcomp = $(SHELL) $(top_srcdir)/depcomp
am__depfiles_maybe = depfiles
am__mv = mv -f
COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
$(AM_CFLAGS) $(CFLAGS)
AM_V_CC = $(am__v_CC_@AM_V@)
am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
am__v_CC_0 = @echo " CC " $@;
am__v_CC_1 =
CCLD = $(CC)
LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
$(AM_LDFLAGS) $(LDFLAGS) -o $@
AM_V_CCLD = $(am__v_CCLD_@AM_V@)
am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
am__v_CCLD_0 = @echo " CCLD " $@;
am__v_CCLD_1 =
SOURCES = $(u2spewfoo_SOURCES)
DIST_SOURCES = $(u2spewfoo_SOURCES)
am__can_run_installinfo = \
case $$AM_UPDATE_INFO_DIR in \
n|no|NO) false;; \
*) (install-info --version) >/dev/null 2>&1;; \
esac
am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
# Read a list of newline-separated strings from the standard input,
# and print each of them once, without duplicates. Input order is
# *not* preserved.
am__uniquify_input = $(AWK) '\
BEGIN { nonempty = 0; } \
{ items[$$0] = 1; nonempty = 1; } \
END { if (nonempty) { for (i in items) print i; }; } \
'
# Make sure the list of sources is unique. This is necessary because,
# e.g., the same source file might be shared among _SOURCES variables
# for different programs/libraries.
am__define_uniq_tagged_files = \
list='$(am__tagged_files)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | $(am__uniquify_input)`
ETAGS = etags
CTAGS = ctags
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
ACLOCAL = @ACLOCAL@
AMTAR = @AMTAR@
AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
AR = @AR@
AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
CC = @CC@
CCDEPMODE = @CCDEPMODE@
CCONFIGFLAGS = @CCONFIGFLAGS@
CFLAGS = @CFLAGS@
CONFIGFLAGS = @CONFIGFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
DLLTOOL = @DLLTOOL@
DSYMUTIL = @DSYMUTIL@
DUMPBIN = @DUMPBIN@
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
FGREP = @FGREP@
GREP = @GREP@
ICONFIGFLAGS = @ICONFIGFLAGS@
INCLUDES = @INCLUDES@ @extra_incl@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
LD = @LD@
LDFLAGS = @LDFLAGS@
LEX = @LEX@
LIBOBJS = @LIBOBJS@
LIBS = @LIBS@
LIBTOOL = @LIBTOOL@
LIPO = @LIPO@
LN_S = @LN_S@
LTLIBOBJS = @LTLIBOBJS@
MAINT = @MAINT@
MAKEINFO = @MAKEINFO@
MANIFEST_TOOL = @MANIFEST_TOOL@
MKDIR_P = @MKDIR_P@
NM = @NM@
NMEDIT = @NMEDIT@
OBJDUMP = @OBJDUMP@
OBJEXT = @OBJEXT@
OTOOL = @OTOOL@
OTOOL64 = @OTOOL64@
PACKAGE = @PACKAGE@
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
PACKAGE_NAME = @PACKAGE_NAME@
PACKAGE_STRING = @PACKAGE_STRING@
PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_URL = @PACKAGE_URL@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
PKG_CONFIG = @PKG_CONFIG@
PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
RANLIB = @RANLIB@
RAZORBACK_CFLAGS = @RAZORBACK_CFLAGS@
RAZORBACK_LIBS = @RAZORBACK_LIBS@
SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SIGNAL_SNORT_DUMP_STATS = @SIGNAL_SNORT_DUMP_STATS@
SIGNAL_SNORT_READ_ATTR_TBL = @SIGNAL_SNORT_READ_ATTR_TBL@
SIGNAL_SNORT_RELOAD = @SIGNAL_SNORT_RELOAD@
SIGNAL_SNORT_ROTATE_STATS = @SIGNAL_SNORT_ROTATE_STATS@
STRIP = @STRIP@
VERSION = @VERSION@
XCCFLAGS = @XCCFLAGS@
YACC = @YACC@
abs_builddir = @abs_builddir@
abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
abs_top_srcdir = @abs_top_srcdir@
ac_ct_AR = @ac_ct_AR@
ac_ct_CC = @ac_ct_CC@
ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
am__tar = @am__tar@
am__untar = @am__untar@
bindir = @bindir@
build = @build@
build_alias = @build_alias@
build_cpu = @build_cpu@
build_os = @build_os@
build_vendor = @build_vendor@
builddir = @builddir@
datadir = @datadir@
datarootdir = @datarootdir@
docdir = @docdir@
dvidir = @dvidir@
exec_prefix = @exec_prefix@
extra_incl = @extra_incl@
host = @host@
host_alias = @host_alias@
host_cpu = @host_cpu@
host_os = @host_os@
host_vendor = @host_vendor@
htmldir = @htmldir@
includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
libdir = @libdir@
libexecdir = @libexecdir@
localedir = @localedir@
localstatedir = @localstatedir@
mandir = @mandir@
mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
sysconfdir = @sysconfdir@
target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
AUTOMAKE_OPTIONS = foreign
u2spewfoo_SOURCES = u2spewfoo.c
u2spewfoo_CFLAGS = @CFLAGS@ $(AM_CFLAGS)
EXTRA_DIST = \
u2spewfoo.dsp
all: all-am
.SUFFIXES:
.SUFFIXES: .c .lo .o .obj
$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
@for dep in $?; do \
case '$(am__configure_deps)' in \
*$$dep*) \
( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
&& { if test -f $@; then exit 0; else break; fi; }; \
exit 1;; \
esac; \
done; \
echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign tools/u2spewfoo/Makefile'; \
$(am__cd) $(top_srcdir) && \
$(AUTOMAKE) --foreign tools/u2spewfoo/Makefile
.PRECIOUS: Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \
*config.status*) \
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
*) \
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
esac;
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(am__aclocal_m4_deps):
install-binPROGRAMS: $(bin_PROGRAMS)
@$(NORMAL_INSTALL)
@list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
if test -n "$$list"; then \
echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \
$(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \
fi; \
for p in $$list; do echo "$$p $$p"; done | \
sed 's/$(EXEEXT)$$//' | \
while read p p1; do if test -f $$p \
|| test -f $$p1 \
; then echo "$$p"; echo "$$p"; else :; fi; \
done | \
sed -e 'p;s,.*/,,;n;h' \
-e 's|.*|.|' \
-e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \
sed 'N;N;N;s,\n, ,g' | \
$(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \
{ d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
if ($$2 == $$4) files[d] = files[d] " " $$1; \
else { print "f", $$3 "/" $$4, $$1; } } \
END { for (d in files) print "f", d, files[d] }' | \
while read type dir files; do \
if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
test -z "$$files" || { \
echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \
$(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \
} \
; done
uninstall-binPROGRAMS:
@$(NORMAL_UNINSTALL)
@list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
files=`for p in $$list; do echo "$$p"; done | \
sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \
-e 's/$$/$(EXEEXT)/' \
`; \
test -n "$$list" || exit 0; \
echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \
cd "$(DESTDIR)$(bindir)" && rm -f $$files
clean-binPROGRAMS:
@list='$(bin_PROGRAMS)'; test -n "$$list" || exit 0; \
echo " rm -f" $$list; \
rm -f $$list || exit $$?; \
test -n "$(EXEEXT)" || exit 0; \
list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
echo " rm -f" $$list; \
rm -f $$list
u2spewfoo$(EXEEXT): $(u2spewfoo_OBJECTS) $(u2spewfoo_DEPENDENCIES) $(EXTRA_u2spewfoo_DEPENDENCIES)
@rm -f u2spewfoo$(EXEEXT)
$(AM_V_CCLD)$(u2spewfoo_LINK) $(u2spewfoo_OBJECTS) $(u2spewfoo_LDADD) $(LIBS)
mostlyclean-compile:
-rm -f *.$(OBJEXT)
distclean-compile:
-rm -f *.tab.c
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/u2spewfoo-u2spewfoo.Po@am__quote@
.c.o:
@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $<
.c.obj:
@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
.c.lo:
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
u2spewfoo-u2spewfoo.o: u2spewfoo.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(u2spewfoo_CFLAGS) $(CFLAGS) -MT u2spewfoo-u2spewfoo.o -MD -MP -MF $(DEPDIR)/u2spewfoo-u2spewfoo.Tpo -c -o u2spewfoo-u2spewfoo.o `test -f 'u2spewfoo.c' || echo '$(srcdir)/'`u2spewfoo.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/u2spewfoo-u2spewfoo.Tpo $(DEPDIR)/u2spewfoo-u2spewfoo.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='u2spewfoo.c' object='u2spewfoo-u2spewfoo.o' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(u2spewfoo_CFLAGS) $(CFLAGS) -c -o u2spewfoo-u2spewfoo.o `test -f 'u2spewfoo.c' || echo '$(srcdir)/'`u2spewfoo.c
u2spewfoo-u2spewfoo.obj: u2spewfoo.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(u2spewfoo_CFLAGS) $(CFLAGS) -MT u2spewfoo-u2spewfoo.obj -MD -MP -MF $(DEPDIR)/u2spewfoo-u2spewfoo.Tpo -c -o u2spewfoo-u2spewfoo.obj `if test -f 'u2spewfoo.c'; then $(CYGPATH_W) 'u2spewfoo.c'; else $(CYGPATH_W) '$(srcdir)/u2spewfoo.c'; fi`
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/u2spewfoo-u2spewfoo.Tpo $(DEPDIR)/u2spewfoo-u2spewfoo.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='u2spewfoo.c' object='u2spewfoo-u2spewfoo.obj' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(u2spewfoo_CFLAGS) $(CFLAGS) -c -o u2spewfoo-u2spewfoo.obj `if test -f 'u2spewfoo.c'; then $(CYGPATH_W) 'u2spewfoo.c'; else $(CYGPATH_W) '$(srcdir)/u2spewfoo.c'; fi`
mostlyclean-libtool:
-rm -f *.lo
clean-libtool:
-rm -rf .libs _libs
ID: $(am__tagged_files)
$(am__define_uniq_tagged_files); mkid -fID $$unique
tags: tags-am
TAGS: tags
tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
set x; \
here=`pwd`; \
$(am__define_uniq_tagged_files); \
shift; \
if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
test -n "$$unique" || unique=$$empty_fix; \
if test $$# -gt 0; then \
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
"$$@" $$unique; \
else \
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
$$unique; \
fi; \
fi
ctags: ctags-am
CTAGS: ctags
ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
$(am__define_uniq_tagged_files); \
test -z "$(CTAGS_ARGS)$$unique" \
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
$$unique
GTAGS:
here=`$(am__cd) $(top_builddir) && pwd` \
&& $(am__cd) $(top_srcdir) \
&& gtags -i $(GTAGS_ARGS) "$$here"
cscopelist: cscopelist-am
cscopelist-am: $(am__tagged_files)
list='$(am__tagged_files)'; \
case "$(srcdir)" in \
[\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
*) sdir=$(subdir)/$(srcdir) ;; \
esac; \
for i in $$list; do \
if test -f "$$i"; then \
echo "$(subdir)/$$i"; \
else \
echo "$$sdir/$$i"; \
fi; \
done >> $(top_builddir)/cscope.files
distclean-tags:
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
distdir: $(DISTFILES)
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
list='$(DISTFILES)'; \
dist_files=`for file in $$list; do echo $$file; done | \
sed -e "s|^$$srcdirstrip/||;t" \
-e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
case $$dist_files in \
*/*) $(MKDIR_P) `echo "$$dist_files" | \
sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
sort -u` ;; \
esac; \
for file in $$dist_files; do \
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
if test -d $$d/$$file; then \
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
if test -d "$(distdir)/$$file"; then \
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
fi; \
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
fi; \
cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
else \
test -f "$(distdir)/$$file" \
|| cp -p $$d/$$file "$(distdir)/$$file" \
|| exit 1; \
fi; \
done
check-am: all-am
check: check-am
all-am: Makefile $(PROGRAMS)
installdirs:
for dir in "$(DESTDIR)$(bindir)"; do \
test -z "$$dir" || $(MKDIR_P) "$$dir"; \
done
install: install-am
install-exec: install-exec-am
install-data: install-data-am
uninstall: uninstall-am
install-am: all-am
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
installcheck: installcheck-am
install-strip:
if test -z '$(STRIP)'; then \
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
install; \
else \
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
"INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
fi
mostlyclean-generic:
clean-generic:
distclean-generic:
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
maintainer-clean-generic:
@echo "This command is intended for maintainers to use"
@echo "it deletes files that may require special tools to rebuild."
clean: clean-am
clean-am: clean-binPROGRAMS clean-generic clean-libtool mostlyclean-am
distclean: distclean-am
-rm -rf ./$(DEPDIR)
-rm -f Makefile
distclean-am: clean-am distclean-compile distclean-generic \
distclean-tags
dvi: dvi-am
dvi-am:
html: html-am
html-am:
info: info-am
info-am:
install-data-am:
install-dvi: install-dvi-am
install-dvi-am:
install-exec-am: install-binPROGRAMS
install-html: install-html-am
install-html-am:
install-info: install-info-am
install-info-am:
install-man:
install-pdf: install-pdf-am
install-pdf-am:
install-ps: install-ps-am
install-ps-am:
installcheck-am:
maintainer-clean: maintainer-clean-am
-rm -rf ./$(DEPDIR)
-rm -f Makefile
maintainer-clean-am: distclean-am maintainer-clean-generic
mostlyclean: mostlyclean-am
mostlyclean-am: mostlyclean-compile mostlyclean-generic \
mostlyclean-libtool
pdf: pdf-am
pdf-am:
ps: ps-am
ps-am:
uninstall-am: uninstall-binPROGRAMS
.MAKE: install-am install-strip
.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean \
clean-binPROGRAMS clean-generic clean-libtool cscopelist-am \
ctags ctags-am distclean distclean-compile distclean-generic \
distclean-libtool distclean-tags distdir dvi dvi-am html \
html-am info info-am install install-am install-binPROGRAMS \
install-data install-data-am install-dvi install-dvi-am \
install-exec install-exec-am install-html install-html-am \
install-info install-info-am install-man install-pdf \
install-pdf-am install-ps install-ps-am install-strip \
installcheck installcheck-am installdirs maintainer-clean \
maintainer-clean-generic mostlyclean mostlyclean-compile \
mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
tags tags-am uninstall uninstall-am uninstall-binPROGRAMS
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:
snort-2.9.6.0/tools/u2boat/ 0000755 0000000 0000000 00000000000 12260606571 012343 5 0000000 0000000 snort-2.9.6.0/tools/u2boat/u2boat.h 0000644 0000000 0000000 00000002322 12260565733 013633 0000000 0000000 /*
* Copyright (C) 2014 Cisco and/or its affiliates. All rights reserved.
* Copyright (C) 2002-2013 Sourcefire, Inc.
* Copyright (C) 1998-2002 Martin Roesch
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License Version 2 as
* published by the Free Software Foundation. You may not use, modify or
* distribute this program under any other version of the GNU General
* Public License.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
#ifndef U2BOAT_H
#define U2BOAT_H
#include "Unified2_common.h"
typedef struct _record {
uint32_t type;
uint32_t length;
uint8_t *data;
} u2record;
typedef struct _u2iterator {
FILE *file;
char *filename;
u2record current;
} u2iterator;
#endif
snort-2.9.6.0/tools/u2boat/u2boat.c 0000644 0000000 0000000 00000022145 12260565733 013633 0000000 0000000 /*
* Copyright (C) 2014 Cisco and/or its affiliates. All rights reserved.
* Copyright (C) 2002-2013 Sourcefire, Inc.
* Copyright (C) 1998-2002 Martin Roesch
* Author: Ryan Jordan
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License Version 2 as
* published by the Free Software Foundation. You may not use, modify or
* distribute this program under any other version of the GNU General
* Public License.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
#include "u2boat.h"
#define FAILURE -1
#define SUCCESS 0
#define PCAP_MAGIC_NUMBER 0xa1b2c3d4
#define PCAP_TIMEZONE 0
#define PCAP_SIGFIGS 0
#define PCAP_SNAPLEN 65535
#define ETHERNET 1
#define PCAP_LINKTYPE ETHERNET
#define MAX_U2RECORD_DATA_LENGTH 65536
static int ConvertLog(FILE *input, FILE *output, char *format);
static int GetRecord(FILE *input, u2record *rec);
static int PcapInitOutput(FILE *output);
static int PcapConversion(u2record *rec, FILE *output);
static int ConvertLog(FILE *input, FILE *output, char *format)
{
u2record tmp_record;
/* Determine conversion function */
int (* ConvertRecord)(u2record *, FILE *) = NULL;
/* This will become an if/else series once more formats are supported.
* Callbacks are used so that this comparison only needs to happen once. */
if (strncmp(format, "pcap", 4) == 0)
{
ConvertRecord = PcapConversion;
}
if (ConvertRecord == NULL)
{
fprintf(stderr, "Error setting conversion routine, aborting...\n");
return FAILURE;
}
/* Initialize the record's data pointer */
tmp_record.data = malloc(MAX_U2RECORD_DATA_LENGTH * sizeof(uint8_t));
if (tmp_record.data == NULL)
{
fprintf(stderr, "Error allocating memory, aborting...\n");
return FAILURE;
}
/* Run through input file and convert records */
while ( !(feof(input) || ferror(input) || ferror(output)) )
{
if (GetRecord(input, &tmp_record) == FAILURE)
{
break;
}
if (ConvertRecord(&tmp_record, output) == FAILURE)
{
break;
}
}
if (tmp_record.data != NULL)
{
free(tmp_record.data);
tmp_record.data = NULL;
}
if (ferror(input))
{
fprintf(stderr, "Error reading input file, aborting...\n");
return FAILURE;
}
if (ferror(output))
{
fprintf(stderr, "Error reading output file, aborting...\n");
return FAILURE;
}
return SUCCESS;
}
/* Create and write the pcap file's global header */
static int PcapInitOutput(FILE *output)
{
size_t ret;
struct pcap_file_header hdr;
hdr.magic = PCAP_MAGIC_NUMBER;
hdr.version_major = PCAP_VERSION_MAJOR;
hdr.version_minor = PCAP_VERSION_MINOR;
hdr.thiszone = PCAP_TIMEZONE;
hdr.sigfigs = PCAP_SIGFIGS;
hdr.snaplen = PCAP_SNAPLEN;
hdr.linktype = PCAP_LINKTYPE;
ret = fwrite( (void *)&hdr, sizeof(struct pcap_file_header), 1, output );
if (ret < 1)
{
fprintf(stderr, "Error: Unable to write pcap file header\n");
return FAILURE;
}
return SUCCESS;
}
/* Convert a unified2 packet record to pcap format, then dump */
static int PcapConversion(u2record *rec, FILE *output)
{
Serial_Unified2Packet packet;
struct pcap_pkthdr pcap_hdr;
uint32_t *field;
uint8_t *pcap_data;
static int packet_found = 0;
/* Ignore IDS Events. We are only interested in Packets. */
if (rec->type != UNIFIED2_PACKET)
{
return SUCCESS;
}
/* Initialize the pcap file if this is the first packet */
if (!packet_found)
{
if (PcapInitOutput(output) == FAILURE)
{
return FAILURE;
}
packet_found = 1;
}
/* Fill out the Serial_Unified2Packet */
memcpy(&packet, rec->data, sizeof(Serial_Unified2Packet));
/* Unified 2 records are always stored in network order.
* Convert all fields except packet data to host order */
field = (uint32_t *)&packet;
while(field < (uint32_t *)packet.packet_data)
{
*field = ntohl(*field);
field++;
}
/* Create a pcap packet header */
pcap_hdr.ts.tv_sec = packet.packet_second;
pcap_hdr.ts.tv_usec = packet.packet_microsecond;
pcap_hdr.caplen = packet.packet_length;
pcap_hdr.len = packet.packet_length;
/* Write to the pcap file */
pcap_data = rec->data + sizeof(Serial_Unified2Packet) - 4;
pcap_dump( (u_char *)output, &pcap_hdr, (u_char *)pcap_data );
return SUCCESS;
}
/* Retrieve a single unified2 record from input file */
static int GetRecord(FILE *input, u2record *rec)
{
uint32_t items_read;
static uint32_t buffer_size = MAX_U2RECORD_DATA_LENGTH;
uint8_t *tmp;
if (!input || !rec)
return FAILURE;
items_read = fread(rec, sizeof(uint32_t), 2, input);
if (items_read != 2)
{
if ( !feof(input) ) /* Not really an error if at EOF */
{
fprintf(stderr, "Error: incomplete record.\n");
}
return FAILURE;
}
/* Type and Length are stored in network order */
rec->type = ntohl(rec->type);
rec->length = ntohl(rec->length);
/* Read in the data portion of the record */
if (rec->length > buffer_size)
{
tmp = malloc(rec->length * sizeof(uint8_t));
if (tmp == NULL)
{
fprintf(stderr, "Error: memory allocation failed.\n");
return FAILURE;
}
else
{
if (rec->data != NULL)
{
free(rec->data);
}
rec->data = tmp;
buffer_size = rec->length;
}
}
items_read = fread(rec->data, sizeof(uint8_t), rec->length, input);
if (items_read != rec->length)
{
fprintf(stderr, "Error: incomplete record. %d of %u bytes read.\n",
items_read, rec->length);
return FAILURE;
}
return SUCCESS;
}
int main (int argc, char *argv[])
{
char *input_filename = NULL;
char *output_filename = NULL;
char *output_type = NULL;
FILE *input_file = NULL;
FILE *output_file = NULL;
int c, i, errnum;
opterr = 0;
/* Use Getopt to parse options */
while ((c = getopt (argc, argv, "t:")) != -1)
{
switch (c)
{
case 't':
output_type = optarg;
break;
case '?':
if (optopt == 't')
fprintf(stderr,
"Option -%c requires an argument.\n", optopt);
else if (isprint (optopt))
fprintf(stderr, "Unknown option -%c.\n", optopt);
return FAILURE;
default:
abort();
}
}
/* At this point, there should be two filenames remaining. */
if (optind != (argc - 2))
{
fprintf(stderr, "Usage: u2boat [-t type] \n");
return FAILURE;
}
input_filename = argv[optind];
output_filename = argv[optind+1];
/* Check inputs */
if (input_filename == NULL)
{
fprintf(stderr, "Error: Input filename must be specified.\n");
return FAILURE;
}
if (output_type == NULL)
{
fprintf(stdout, "Defaulting to pcap output.\n");
output_type = "pcap";
}
else
{
for (i = 0; i < (int)strlen(output_type); i++)
output_type[i] = tolower(output_type[i]);
}
if (strcmp(output_type, "pcap"))
{
fprintf(stderr, "Invalid output type. Valid types are: pcap\n");
return FAILURE;
}
if (output_filename == NULL)
{
fprintf(stderr, "Error: Output filename must be specified.\n");
return FAILURE;
}
/* Open the files */
if ((input_file = fopen(input_filename, "r")) == NULL)
{
fprintf(stderr, "Unable to open file: %s\n", input_filename);
return FAILURE;
}
if ((output_file = fopen(output_filename, "w")) == NULL)
{
fprintf(stderr, "Unable to open/create file: %s\n", output_filename);
return FAILURE;
}
ConvertLog(input_file, output_file, output_type);
if (fclose(input_file) != 0)
{
errnum = errno;
fprintf(stderr, "Error closing input: %s\n", strerror(errnum));
}
if (fclose(output_file) != 0)
{
errnum = errno;
fprintf(stderr, "Error closing output: %s\n", strerror(errnum));
}
return 0;
}
snort-2.9.6.0/tools/u2boat/README.u2boat 0000644 0000000 0000000 00000001062 11404013614 014322 0000000 0000000 u2boat - Unified2 Binary Output & Alert Tool
--------------------------------------------
About
-----
The current version of SnortSP lacks support for some output formats that
were present in Snort 2.8.X. u2boat aims to fill these gaps by converting
Unified2 logs to other formats.
Installation
------------
u2boat is made and installed along with snortsp in the same bin directory.
Usage
-----
$ u2boat [-t type]
"type" specifies the type of output u2boat should create. Valid options are:
- pcap: Tcpdump format (default)
snort-2.9.6.0/tools/u2boat/Makefile.am 0000644 0000000 0000000 00000000367 11600174703 014317 0000000 0000000 AUTOMAKE_OPTIONS=foreign
bin_PROGRAMS = u2boat
docdir = ${datadir}/doc/${PACKAGE}
u2boat_SOURCES = u2boat.c u2boat.h
u2boat_CFLAGS = @CFLAGS@ $(AM_CFLAGS)
u2boat_LDADD = -lpcap
INCLUDES = @INCLUDES@ @extra_incl@
dist_doc_DATA = README.u2boat
snort-2.9.6.0/tools/u2boat/Makefile.in 0000644 0000000 0000000 00000056116 12260606526 014341 0000000 0000000 # Makefile.in generated by automake 1.13.4 from Makefile.am.
# @configure_input@
# Copyright (C) 1994-2013 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.
@SET_MAKE@
VPATH = @srcdir@
am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
am__make_running_with_option = \
case $${target_option-} in \
?) ;; \
*) echo "am__make_running_with_option: internal error: invalid" \
"target option '$${target_option-}' specified" >&2; \
exit 1;; \
esac; \
has_opt=no; \
sane_makeflags=$$MAKEFLAGS; \
if $(am__is_gnu_make); then \
sane_makeflags=$$MFLAGS; \
else \
case $$MAKEFLAGS in \
*\\[\ \ ]*) \
bs=\\; \
sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
| sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
esac; \
fi; \
skip_next=no; \
strip_trailopt () \
{ \
flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
}; \
for flg in $$sane_makeflags; do \
test $$skip_next = yes && { skip_next=no; continue; }; \
case $$flg in \
*=*|--*) continue;; \
-*I) strip_trailopt 'I'; skip_next=yes;; \
-*I?*) strip_trailopt 'I';; \
-*O) strip_trailopt 'O'; skip_next=yes;; \
-*O?*) strip_trailopt 'O';; \
-*l) strip_trailopt 'l'; skip_next=yes;; \
-*l?*) strip_trailopt 'l';; \
-[dEDm]) skip_next=yes;; \
-[JT]) skip_next=yes;; \
esac; \
case $$flg in \
*$$target_option*) has_opt=yes; break;; \
esac; \
done; \
test $$has_opt = yes
am__make_dryrun = (target_option=n; $(am__make_running_with_option))
am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
pkgdatadir = $(datadir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
pkglibexecdir = $(libexecdir)/@PACKAGE@
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
install_sh_DATA = $(install_sh) -c -m 644
install_sh_PROGRAM = $(install_sh) -c
install_sh_SCRIPT = $(install_sh) -c
INSTALL_HEADER = $(INSTALL_DATA)
transform = $(program_transform_name)
NORMAL_INSTALL = :
PRE_INSTALL = :
POST_INSTALL = :
NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
bin_PROGRAMS = u2boat$(EXEEXT)
subdir = tools/u2boat
DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
$(top_srcdir)/depcomp $(dist_doc_DATA)
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/configure.in
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
mkinstalldirs = $(install_sh) -d
CONFIG_HEADER = $(top_builddir)/config.h
CONFIG_CLEAN_FILES =
CONFIG_CLEAN_VPATH_FILES =
am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(docdir)"
PROGRAMS = $(bin_PROGRAMS)
am_u2boat_OBJECTS = u2boat-u2boat.$(OBJEXT)
u2boat_OBJECTS = $(am_u2boat_OBJECTS)
u2boat_DEPENDENCIES =
AM_V_lt = $(am__v_lt_@AM_V@)
am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
am__v_lt_0 = --silent
am__v_lt_1 =
u2boat_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
$(LIBTOOLFLAGS) --mode=link $(CCLD) $(u2boat_CFLAGS) $(CFLAGS) \
$(AM_LDFLAGS) $(LDFLAGS) -o $@
AM_V_P = $(am__v_P_@AM_V@)
am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
am__v_P_0 = false
am__v_P_1 = :
AM_V_GEN = $(am__v_GEN_@AM_V@)
am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
am__v_GEN_0 = @echo " GEN " $@;
am__v_GEN_1 =
AM_V_at = $(am__v_at_@AM_V@)
am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
am__v_at_0 = @
am__v_at_1 =
DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
depcomp = $(SHELL) $(top_srcdir)/depcomp
am__depfiles_maybe = depfiles
am__mv = mv -f
COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
$(AM_CFLAGS) $(CFLAGS)
AM_V_CC = $(am__v_CC_@AM_V@)
am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
am__v_CC_0 = @echo " CC " $@;
am__v_CC_1 =
CCLD = $(CC)
LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
$(AM_LDFLAGS) $(LDFLAGS) -o $@
AM_V_CCLD = $(am__v_CCLD_@AM_V@)
am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
am__v_CCLD_0 = @echo " CCLD " $@;
am__v_CCLD_1 =
SOURCES = $(u2boat_SOURCES)
DIST_SOURCES = $(u2boat_SOURCES)
am__can_run_installinfo = \
case $$AM_UPDATE_INFO_DIR in \
n|no|NO) false;; \
*) (install-info --version) >/dev/null 2>&1;; \
esac
am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
am__vpath_adj = case $$p in \
$(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
*) f=$$p;; \
esac;
am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
am__install_max = 40
am__nobase_strip_setup = \
srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
am__nobase_strip = \
for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
am__nobase_list = $(am__nobase_strip_setup); \
for p in $$list; do echo "$$p $$p"; done | \
sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
$(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
if (++n[$$2] == $(am__install_max)) \
{ print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
END { for (dir in files) print dir, files[dir] }'
am__base_list = \
sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
am__uninstall_files_from_dir = { \
test -z "$$files" \
|| { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
|| { echo " ( cd '$$dir' && rm -f" $$files ")"; \
$(am__cd) "$$dir" && rm -f $$files; }; \
}
DATA = $(dist_doc_DATA)
am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
# Read a list of newline-separated strings from the standard input,
# and print each of them once, without duplicates. Input order is
# *not* preserved.
am__uniquify_input = $(AWK) '\
BEGIN { nonempty = 0; } \
{ items[$$0] = 1; nonempty = 1; } \
END { if (nonempty) { for (i in items) print i; }; } \
'
# Make sure the list of sources is unique. This is necessary because,
# e.g., the same source file might be shared among _SOURCES variables
# for different programs/libraries.
am__define_uniq_tagged_files = \
list='$(am__tagged_files)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | $(am__uniquify_input)`
ETAGS = etags
CTAGS = ctags
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
ACLOCAL = @ACLOCAL@
AMTAR = @AMTAR@
AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
AR = @AR@
AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
CC = @CC@
CCDEPMODE = @CCDEPMODE@
CCONFIGFLAGS = @CCONFIGFLAGS@
CFLAGS = @CFLAGS@
CONFIGFLAGS = @CONFIGFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
DLLTOOL = @DLLTOOL@
DSYMUTIL = @DSYMUTIL@
DUMPBIN = @DUMPBIN@
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
FGREP = @FGREP@
GREP = @GREP@
ICONFIGFLAGS = @ICONFIGFLAGS@
INCLUDES = @INCLUDES@ @extra_incl@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
LD = @LD@
LDFLAGS = @LDFLAGS@
LEX = @LEX@
LIBOBJS = @LIBOBJS@
LIBS = @LIBS@
LIBTOOL = @LIBTOOL@
LIPO = @LIPO@
LN_S = @LN_S@
LTLIBOBJS = @LTLIBOBJS@
MAINT = @MAINT@
MAKEINFO = @MAKEINFO@
MANIFEST_TOOL = @MANIFEST_TOOL@
MKDIR_P = @MKDIR_P@
NM = @NM@
NMEDIT = @NMEDIT@
OBJDUMP = @OBJDUMP@
OBJEXT = @OBJEXT@
OTOOL = @OTOOL@
OTOOL64 = @OTOOL64@
PACKAGE = @PACKAGE@
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
PACKAGE_NAME = @PACKAGE_NAME@
PACKAGE_STRING = @PACKAGE_STRING@
PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_URL = @PACKAGE_URL@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
PKG_CONFIG = @PKG_CONFIG@
PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
RANLIB = @RANLIB@
RAZORBACK_CFLAGS = @RAZORBACK_CFLAGS@
RAZORBACK_LIBS = @RAZORBACK_LIBS@
SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SIGNAL_SNORT_DUMP_STATS = @SIGNAL_SNORT_DUMP_STATS@
SIGNAL_SNORT_READ_ATTR_TBL = @SIGNAL_SNORT_READ_ATTR_TBL@
SIGNAL_SNORT_RELOAD = @SIGNAL_SNORT_RELOAD@
SIGNAL_SNORT_ROTATE_STATS = @SIGNAL_SNORT_ROTATE_STATS@
STRIP = @STRIP@
VERSION = @VERSION@
XCCFLAGS = @XCCFLAGS@
YACC = @YACC@
abs_builddir = @abs_builddir@
abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
abs_top_srcdir = @abs_top_srcdir@
ac_ct_AR = @ac_ct_AR@
ac_ct_CC = @ac_ct_CC@
ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
am__tar = @am__tar@
am__untar = @am__untar@
bindir = @bindir@
build = @build@
build_alias = @build_alias@
build_cpu = @build_cpu@
build_os = @build_os@
build_vendor = @build_vendor@
builddir = @builddir@
datadir = @datadir@
datarootdir = @datarootdir@
docdir = ${datadir}/doc/${PACKAGE}
dvidir = @dvidir@
exec_prefix = @exec_prefix@
extra_incl = @extra_incl@
host = @host@
host_alias = @host_alias@
host_cpu = @host_cpu@
host_os = @host_os@
host_vendor = @host_vendor@
htmldir = @htmldir@
includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
libdir = @libdir@
libexecdir = @libexecdir@
localedir = @localedir@
localstatedir = @localstatedir@
mandir = @mandir@
mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
sysconfdir = @sysconfdir@
target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
AUTOMAKE_OPTIONS = foreign
u2boat_SOURCES = u2boat.c u2boat.h
u2boat_CFLAGS = @CFLAGS@ $(AM_CFLAGS)
u2boat_LDADD = -lpcap
dist_doc_DATA = README.u2boat
all: all-am
.SUFFIXES:
.SUFFIXES: .c .lo .o .obj
$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
@for dep in $?; do \
case '$(am__configure_deps)' in \
*$$dep*) \
( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
&& { if test -f $@; then exit 0; else break; fi; }; \
exit 1;; \
esac; \
done; \
echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign tools/u2boat/Makefile'; \
$(am__cd) $(top_srcdir) && \
$(AUTOMAKE) --foreign tools/u2boat/Makefile
.PRECIOUS: Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \
*config.status*) \
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
*) \
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
esac;
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(am__aclocal_m4_deps):
install-binPROGRAMS: $(bin_PROGRAMS)
@$(NORMAL_INSTALL)
@list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
if test -n "$$list"; then \
echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \
$(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \
fi; \
for p in $$list; do echo "$$p $$p"; done | \
sed 's/$(EXEEXT)$$//' | \
while read p p1; do if test -f $$p \
|| test -f $$p1 \
; then echo "$$p"; echo "$$p"; else :; fi; \
done | \
sed -e 'p;s,.*/,,;n;h' \
-e 's|.*|.|' \
-e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \
sed 'N;N;N;s,\n, ,g' | \
$(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \
{ d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
if ($$2 == $$4) files[d] = files[d] " " $$1; \
else { print "f", $$3 "/" $$4, $$1; } } \
END { for (d in files) print "f", d, files[d] }' | \
while read type dir files; do \
if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
test -z "$$files" || { \
echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \
$(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \
} \
; done
uninstall-binPROGRAMS:
@$(NORMAL_UNINSTALL)
@list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
files=`for p in $$list; do echo "$$p"; done | \
sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \
-e 's/$$/$(EXEEXT)/' \
`; \
test -n "$$list" || exit 0; \
echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \
cd "$(DESTDIR)$(bindir)" && rm -f $$files
clean-binPROGRAMS:
@list='$(bin_PROGRAMS)'; test -n "$$list" || exit 0; \
echo " rm -f" $$list; \
rm -f $$list || exit $$?; \
test -n "$(EXEEXT)" || exit 0; \
list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
echo " rm -f" $$list; \
rm -f $$list
u2boat$(EXEEXT): $(u2boat_OBJECTS) $(u2boat_DEPENDENCIES) $(EXTRA_u2boat_DEPENDENCIES)
@rm -f u2boat$(EXEEXT)
$(AM_V_CCLD)$(u2boat_LINK) $(u2boat_OBJECTS) $(u2boat_LDADD) $(LIBS)
mostlyclean-compile:
-rm -f *.$(OBJEXT)
distclean-compile:
-rm -f *.tab.c
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/u2boat-u2boat.Po@am__quote@
.c.o:
@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $<
.c.obj:
@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
.c.lo:
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
u2boat-u2boat.o: u2boat.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(u2boat_CFLAGS) $(CFLAGS) -MT u2boat-u2boat.o -MD -MP -MF $(DEPDIR)/u2boat-u2boat.Tpo -c -o u2boat-u2boat.o `test -f 'u2boat.c' || echo '$(srcdir)/'`u2boat.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/u2boat-u2boat.Tpo $(DEPDIR)/u2boat-u2boat.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='u2boat.c' object='u2boat-u2boat.o' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(u2boat_CFLAGS) $(CFLAGS) -c -o u2boat-u2boat.o `test -f 'u2boat.c' || echo '$(srcdir)/'`u2boat.c
u2boat-u2boat.obj: u2boat.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(u2boat_CFLAGS) $(CFLAGS) -MT u2boat-u2boat.obj -MD -MP -MF $(DEPDIR)/u2boat-u2boat.Tpo -c -o u2boat-u2boat.obj `if test -f 'u2boat.c'; then $(CYGPATH_W) 'u2boat.c'; else $(CYGPATH_W) '$(srcdir)/u2boat.c'; fi`
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/u2boat-u2boat.Tpo $(DEPDIR)/u2boat-u2boat.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='u2boat.c' object='u2boat-u2boat.obj' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(u2boat_CFLAGS) $(CFLAGS) -c -o u2boat-u2boat.obj `if test -f 'u2boat.c'; then $(CYGPATH_W) 'u2boat.c'; else $(CYGPATH_W) '$(srcdir)/u2boat.c'; fi`
mostlyclean-libtool:
-rm -f *.lo
clean-libtool:
-rm -rf .libs _libs
install-dist_docDATA: $(dist_doc_DATA)
@$(NORMAL_INSTALL)
@list='$(dist_doc_DATA)'; test -n "$(docdir)" || list=; \
if test -n "$$list"; then \
echo " $(MKDIR_P) '$(DESTDIR)$(docdir)'"; \
$(MKDIR_P) "$(DESTDIR)$(docdir)" || exit 1; \
fi; \
for p in $$list; do \
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
echo "$$d$$p"; \
done | $(am__base_list) | \
while read files; do \
echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(docdir)'"; \
$(INSTALL_DATA) $$files "$(DESTDIR)$(docdir)" || exit $$?; \
done
uninstall-dist_docDATA:
@$(NORMAL_UNINSTALL)
@list='$(dist_doc_DATA)'; test -n "$(docdir)" || list=; \
files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
dir='$(DESTDIR)$(docdir)'; $(am__uninstall_files_from_dir)
ID: $(am__tagged_files)
$(am__define_uniq_tagged_files); mkid -fID $$unique
tags: tags-am
TAGS: tags
tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
set x; \
here=`pwd`; \
$(am__define_uniq_tagged_files); \
shift; \
if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
test -n "$$unique" || unique=$$empty_fix; \
if test $$# -gt 0; then \
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
"$$@" $$unique; \
else \
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
$$unique; \
fi; \
fi
ctags: ctags-am
CTAGS: ctags
ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
$(am__define_uniq_tagged_files); \
test -z "$(CTAGS_ARGS)$$unique" \
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
$$unique
GTAGS:
here=`$(am__cd) $(top_builddir) && pwd` \
&& $(am__cd) $(top_srcdir) \
&& gtags -i $(GTAGS_ARGS) "$$here"
cscopelist: cscopelist-am
cscopelist-am: $(am__tagged_files)
list='$(am__tagged_files)'; \
case "$(srcdir)" in \
[\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
*) sdir=$(subdir)/$(srcdir) ;; \
esac; \
for i in $$list; do \
if test -f "$$i"; then \
echo "$(subdir)/$$i"; \
else \
echo "$$sdir/$$i"; \
fi; \
done >> $(top_builddir)/cscope.files
distclean-tags:
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
distdir: $(DISTFILES)
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
list='$(DISTFILES)'; \
dist_files=`for file in $$list; do echo $$file; done | \
sed -e "s|^$$srcdirstrip/||;t" \
-e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
case $$dist_files in \
*/*) $(MKDIR_P) `echo "$$dist_files" | \
sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
sort -u` ;; \
esac; \
for file in $$dist_files; do \
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
if test -d $$d/$$file; then \
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
if test -d "$(distdir)/$$file"; then \
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
fi; \
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
fi; \
cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
else \
test -f "$(distdir)/$$file" \
|| cp -p $$d/$$file "$(distdir)/$$file" \
|| exit 1; \
fi; \
done
check-am: all-am
check: check-am
all-am: Makefile $(PROGRAMS) $(DATA)
installdirs:
for dir in "$(DESTDIR)$(bindir)" "$(DESTDIR)$(docdir)"; do \
test -z "$$dir" || $(MKDIR_P) "$$dir"; \
done
install: install-am
install-exec: install-exec-am
install-data: install-data-am
uninstall: uninstall-am
install-am: all-am
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
installcheck: installcheck-am
install-strip:
if test -z '$(STRIP)'; then \
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
install; \
else \
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
"INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
fi
mostlyclean-generic:
clean-generic:
distclean-generic:
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
maintainer-clean-generic:
@echo "This command is intended for maintainers to use"
@echo "it deletes files that may require special tools to rebuild."
clean: clean-am
clean-am: clean-binPROGRAMS clean-generic clean-libtool mostlyclean-am
distclean: distclean-am
-rm -rf ./$(DEPDIR)
-rm -f Makefile
distclean-am: clean-am distclean-compile distclean-generic \
distclean-tags
dvi: dvi-am
dvi-am:
html: html-am
html-am:
info: info-am
info-am:
install-data-am: install-dist_docDATA
install-dvi: install-dvi-am
install-dvi-am:
install-exec-am: install-binPROGRAMS
install-html: install-html-am
install-html-am:
install-info: install-info-am
install-info-am:
install-man:
install-pdf: install-pdf-am
install-pdf-am:
install-ps: install-ps-am
install-ps-am:
installcheck-am:
maintainer-clean: maintainer-clean-am
-rm -rf ./$(DEPDIR)
-rm -f Makefile
maintainer-clean-am: distclean-am maintainer-clean-generic
mostlyclean: mostlyclean-am
mostlyclean-am: mostlyclean-compile mostlyclean-generic \
mostlyclean-libtool
pdf: pdf-am
pdf-am:
ps: ps-am
ps-am:
uninstall-am: uninstall-binPROGRAMS uninstall-dist_docDATA
.MAKE: install-am install-strip
.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean \
clean-binPROGRAMS clean-generic clean-libtool cscopelist-am \
ctags ctags-am distclean distclean-compile distclean-generic \
distclean-libtool distclean-tags distdir dvi dvi-am html \
html-am info info-am install install-am install-binPROGRAMS \
install-data install-data-am install-dist_docDATA install-dvi \
install-dvi-am install-exec install-exec-am install-html \
install-html-am install-info install-info-am install-man \
install-pdf install-pdf-am install-ps install-ps-am \
install-strip installcheck installcheck-am installdirs \
maintainer-clean maintainer-clean-generic mostlyclean \
mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
pdf pdf-am ps ps-am tags tags-am uninstall uninstall-am \
uninstall-binPROGRAMS uninstall-dist_docDATA
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:
snort-2.9.6.0/tools/Makefile.am 0000644 0000000 0000000 00000000363 12232305217 013115 0000000 0000000 AUTOMAKE_OPTIONS=foreign no-dependencies
if BUILD_CONTROL_SOCKET
CONTROL_DIR = control
endif
if FEAT_FILE_INSPECT
FILE_INSPECT_SERVER=file_server
endif
SUBDIRS = u2boat u2spewfoo $(CONTROL_DIR) $(FILE_INSPECT_SERVER)
INCLUDES = @INCLUDES@
snort-2.9.6.0/tools/Makefile.in 0000644 0000000 0000000 00000044554 12260606526 013150 0000000 0000000 # Makefile.in generated by automake 1.13.4 from Makefile.am.
# @configure_input@
# Copyright (C) 1994-2013 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.
@SET_MAKE@
VPATH = @srcdir@
am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
am__make_running_with_option = \
case $${target_option-} in \
?) ;; \
*) echo "am__make_running_with_option: internal error: invalid" \
"target option '$${target_option-}' specified" >&2; \
exit 1;; \
esac; \
has_opt=no; \
sane_makeflags=$$MAKEFLAGS; \
if $(am__is_gnu_make); then \
sane_makeflags=$$MFLAGS; \
else \
case $$MAKEFLAGS in \
*\\[\ \ ]*) \
bs=\\; \
sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
| sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
esac; \
fi; \
skip_next=no; \
strip_trailopt () \
{ \
flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
}; \
for flg in $$sane_makeflags; do \
test $$skip_next = yes && { skip_next=no; continue; }; \
case $$flg in \
*=*|--*) continue;; \
-*I) strip_trailopt 'I'; skip_next=yes;; \
-*I?*) strip_trailopt 'I';; \
-*O) strip_trailopt 'O'; skip_next=yes;; \
-*O?*) strip_trailopt 'O';; \
-*l) strip_trailopt 'l'; skip_next=yes;; \
-*l?*) strip_trailopt 'l';; \
-[dEDm]) skip_next=yes;; \
-[JT]) skip_next=yes;; \
esac; \
case $$flg in \
*$$target_option*) has_opt=yes; break;; \
esac; \
done; \
test $$has_opt = yes
am__make_dryrun = (target_option=n; $(am__make_running_with_option))
am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
pkgdatadir = $(datadir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
pkglibexecdir = $(libexecdir)/@PACKAGE@
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
install_sh_DATA = $(install_sh) -c -m 644
install_sh_PROGRAM = $(install_sh) -c
install_sh_SCRIPT = $(install_sh) -c
INSTALL_HEADER = $(INSTALL_DATA)
transform = $(program_transform_name)
NORMAL_INSTALL = :
PRE_INSTALL = :
POST_INSTALL = :
NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
subdir = tools
DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/configure.in
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
mkinstalldirs = $(install_sh) -d
CONFIG_HEADER = $(top_builddir)/config.h
CONFIG_CLEAN_FILES =
CONFIG_CLEAN_VPATH_FILES =
AM_V_P = $(am__v_P_@AM_V@)
am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
am__v_P_0 = false
am__v_P_1 = :
AM_V_GEN = $(am__v_GEN_@AM_V@)
am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
am__v_GEN_0 = @echo " GEN " $@;
am__v_GEN_1 =
AM_V_at = $(am__v_at_@AM_V@)
am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
am__v_at_0 = @
am__v_at_1 =
depcomp =
am__depfiles_maybe =
SOURCES =
DIST_SOURCES =
RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \
ctags-recursive dvi-recursive html-recursive info-recursive \
install-data-recursive install-dvi-recursive \
install-exec-recursive install-html-recursive \
install-info-recursive install-pdf-recursive \
install-ps-recursive install-recursive installcheck-recursive \
installdirs-recursive pdf-recursive ps-recursive \
tags-recursive uninstall-recursive
am__can_run_installinfo = \
case $$AM_UPDATE_INFO_DIR in \
n|no|NO) false;; \
*) (install-info --version) >/dev/null 2>&1;; \
esac
RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
distclean-recursive maintainer-clean-recursive
am__recursive_targets = \
$(RECURSIVE_TARGETS) \
$(RECURSIVE_CLEAN_TARGETS) \
$(am__extra_recursive_targets)
AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \
distdir
am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
# Read a list of newline-separated strings from the standard input,
# and print each of them once, without duplicates. Input order is
# *not* preserved.
am__uniquify_input = $(AWK) '\
BEGIN { nonempty = 0; } \
{ items[$$0] = 1; nonempty = 1; } \
END { if (nonempty) { for (i in items) print i; }; } \
'
# Make sure the list of sources is unique. This is necessary because,
# e.g., the same source file might be shared among _SOURCES variables
# for different programs/libraries.
am__define_uniq_tagged_files = \
list='$(am__tagged_files)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | $(am__uniquify_input)`
ETAGS = etags
CTAGS = ctags
DIST_SUBDIRS = u2boat u2spewfoo control file_server
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
am__relativize = \
dir0=`pwd`; \
sed_first='s,^\([^/]*\)/.*$$,\1,'; \
sed_rest='s,^[^/]*/*,,'; \
sed_last='s,^.*/\([^/]*\)$$,\1,'; \
sed_butlast='s,/*[^/]*$$,,'; \
while test -n "$$dir1"; do \
first=`echo "$$dir1" | sed -e "$$sed_first"`; \
if test "$$first" != "."; then \
if test "$$first" = ".."; then \
dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
else \
first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
if test "$$first2" = "$$first"; then \
dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
else \
dir2="../$$dir2"; \
fi; \
dir0="$$dir0"/"$$first"; \
fi; \
fi; \
dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
done; \
reldir="$$dir2"
ACLOCAL = @ACLOCAL@
AMTAR = @AMTAR@
AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
AR = @AR@
AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
CC = @CC@
CCDEPMODE = @CCDEPMODE@
CCONFIGFLAGS = @CCONFIGFLAGS@
CFLAGS = @CFLAGS@
CONFIGFLAGS = @CONFIGFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
DLLTOOL = @DLLTOOL@
DSYMUTIL = @DSYMUTIL@
DUMPBIN = @DUMPBIN@
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
FGREP = @FGREP@
GREP = @GREP@
ICONFIGFLAGS = @ICONFIGFLAGS@
INCLUDES = @INCLUDES@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
LD = @LD@
LDFLAGS = @LDFLAGS@
LEX = @LEX@
LIBOBJS = @LIBOBJS@
LIBS = @LIBS@
LIBTOOL = @LIBTOOL@
LIPO = @LIPO@
LN_S = @LN_S@
LTLIBOBJS = @LTLIBOBJS@
MAINT = @MAINT@
MAKEINFO = @MAKEINFO@
MANIFEST_TOOL = @MANIFEST_TOOL@
MKDIR_P = @MKDIR_P@
NM = @NM@
NMEDIT = @NMEDIT@
OBJDUMP = @OBJDUMP@
OBJEXT = @OBJEXT@
OTOOL = @OTOOL@
OTOOL64 = @OTOOL64@
PACKAGE = @PACKAGE@
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
PACKAGE_NAME = @PACKAGE_NAME@
PACKAGE_STRING = @PACKAGE_STRING@
PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_URL = @PACKAGE_URL@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
PKG_CONFIG = @PKG_CONFIG@
PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
RANLIB = @RANLIB@
RAZORBACK_CFLAGS = @RAZORBACK_CFLAGS@
RAZORBACK_LIBS = @RAZORBACK_LIBS@
SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SIGNAL_SNORT_DUMP_STATS = @SIGNAL_SNORT_DUMP_STATS@
SIGNAL_SNORT_READ_ATTR_TBL = @SIGNAL_SNORT_READ_ATTR_TBL@
SIGNAL_SNORT_RELOAD = @SIGNAL_SNORT_RELOAD@
SIGNAL_SNORT_ROTATE_STATS = @SIGNAL_SNORT_ROTATE_STATS@
STRIP = @STRIP@
VERSION = @VERSION@
XCCFLAGS = @XCCFLAGS@
YACC = @YACC@
abs_builddir = @abs_builddir@
abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
abs_top_srcdir = @abs_top_srcdir@
ac_ct_AR = @ac_ct_AR@
ac_ct_CC = @ac_ct_CC@
ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
am__tar = @am__tar@
am__untar = @am__untar@
bindir = @bindir@
build = @build@
build_alias = @build_alias@
build_cpu = @build_cpu@
build_os = @build_os@
build_vendor = @build_vendor@
builddir = @builddir@
datadir = @datadir@
datarootdir = @datarootdir@
docdir = @docdir@
dvidir = @dvidir@
exec_prefix = @exec_prefix@
extra_incl = @extra_incl@
host = @host@
host_alias = @host_alias@
host_cpu = @host_cpu@
host_os = @host_os@
host_vendor = @host_vendor@
htmldir = @htmldir@
includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
libdir = @libdir@
libexecdir = @libexecdir@
localedir = @localedir@
localstatedir = @localstatedir@
mandir = @mandir@
mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
sysconfdir = @sysconfdir@
target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
AUTOMAKE_OPTIONS = foreign no-dependencies
@BUILD_CONTROL_SOCKET_TRUE@CONTROL_DIR = control
@FEAT_FILE_INSPECT_TRUE@FILE_INSPECT_SERVER = file_server
SUBDIRS = u2boat u2spewfoo $(CONTROL_DIR) $(FILE_INSPECT_SERVER)
all: all-recursive
.SUFFIXES:
$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
@for dep in $?; do \
case '$(am__configure_deps)' in \
*$$dep*) \
( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
&& { if test -f $@; then exit 0; else break; fi; }; \
exit 1;; \
esac; \
done; \
echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign tools/Makefile'; \
$(am__cd) $(top_srcdir) && \
$(AUTOMAKE) --foreign tools/Makefile
.PRECIOUS: Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \
*config.status*) \
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
*) \
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
esac;
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(am__aclocal_m4_deps):
mostlyclean-libtool:
-rm -f *.lo
clean-libtool:
-rm -rf .libs _libs
# This directory's subdirectories are mostly independent; you can cd
# into them and run 'make' without going through this Makefile.
# To change the values of 'make' variables: instead of editing Makefiles,
# (1) if the variable is set in 'config.status', edit 'config.status'
# (which will cause the Makefiles to be regenerated when you run 'make');
# (2) otherwise, pass the desired values on the 'make' command line.
$(am__recursive_targets):
@fail=; \
if $(am__make_keepgoing); then \
failcom='fail=yes'; \
else \
failcom='exit 1'; \
fi; \
dot_seen=no; \
target=`echo $@ | sed s/-recursive//`; \
case "$@" in \
distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
*) list='$(SUBDIRS)' ;; \
esac; \
for subdir in $$list; do \
echo "Making $$target in $$subdir"; \
if test "$$subdir" = "."; then \
dot_seen=yes; \
local_target="$$target-am"; \
else \
local_target="$$target"; \
fi; \
($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|| eval $$failcom; \
done; \
if test "$$dot_seen" = "no"; then \
$(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
fi; test -z "$$fail"
ID: $(am__tagged_files)
$(am__define_uniq_tagged_files); mkid -fID $$unique
tags: tags-recursive
TAGS: tags
tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
set x; \
here=`pwd`; \
if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
include_option=--etags-include; \
empty_fix=.; \
else \
include_option=--include; \
empty_fix=; \
fi; \
list='$(SUBDIRS)'; for subdir in $$list; do \
if test "$$subdir" = .; then :; else \
test ! -f $$subdir/TAGS || \
set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
fi; \
done; \
$(am__define_uniq_tagged_files); \
shift; \
if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
test -n "$$unique" || unique=$$empty_fix; \
if test $$# -gt 0; then \
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
"$$@" $$unique; \
else \
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
$$unique; \
fi; \
fi
ctags: ctags-recursive
CTAGS: ctags
ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
$(am__define_uniq_tagged_files); \
test -z "$(CTAGS_ARGS)$$unique" \
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
$$unique
GTAGS:
here=`$(am__cd) $(top_builddir) && pwd` \
&& $(am__cd) $(top_srcdir) \
&& gtags -i $(GTAGS_ARGS) "$$here"
cscopelist: cscopelist-recursive
cscopelist-am: $(am__tagged_files)
list='$(am__tagged_files)'; \
case "$(srcdir)" in \
[\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
*) sdir=$(subdir)/$(srcdir) ;; \
esac; \
for i in $$list; do \
if test -f "$$i"; then \
echo "$(subdir)/$$i"; \
else \
echo "$$sdir/$$i"; \
fi; \
done >> $(top_builddir)/cscope.files
distclean-tags:
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
distdir: $(DISTFILES)
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
list='$(DISTFILES)'; \
dist_files=`for file in $$list; do echo $$file; done | \
sed -e "s|^$$srcdirstrip/||;t" \
-e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
case $$dist_files in \
*/*) $(MKDIR_P) `echo "$$dist_files" | \
sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
sort -u` ;; \
esac; \
for file in $$dist_files; do \
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
if test -d $$d/$$file; then \
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
if test -d "$(distdir)/$$file"; then \
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
fi; \
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
fi; \
cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
else \
test -f "$(distdir)/$$file" \
|| cp -p $$d/$$file "$(distdir)/$$file" \
|| exit 1; \
fi; \
done
@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
if test "$$subdir" = .; then :; else \
$(am__make_dryrun) \
|| test -d "$(distdir)/$$subdir" \
|| $(MKDIR_P) "$(distdir)/$$subdir" \
|| exit 1; \
dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
$(am__relativize); \
new_distdir=$$reldir; \
dir1=$$subdir; dir2="$(top_distdir)"; \
$(am__relativize); \
new_top_distdir=$$reldir; \
echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
($(am__cd) $$subdir && \
$(MAKE) $(AM_MAKEFLAGS) \
top_distdir="$$new_top_distdir" \
distdir="$$new_distdir" \
am__remove_distdir=: \
am__skip_length_check=: \
am__skip_mode_fix=: \
distdir) \
|| exit 1; \
fi; \
done
check-am: all-am
check: check-recursive
all-am: Makefile
installdirs: installdirs-recursive
installdirs-am:
install: install-recursive
install-exec: install-exec-recursive
install-data: install-data-recursive
uninstall: uninstall-recursive
install-am: all-am
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
installcheck: installcheck-recursive
install-strip:
if test -z '$(STRIP)'; then \
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
install; \
else \
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
"INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
fi
mostlyclean-generic:
clean-generic:
distclean-generic:
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
maintainer-clean-generic:
@echo "This command is intended for maintainers to use"
@echo "it deletes files that may require special tools to rebuild."
clean: clean-recursive
clean-am: clean-generic clean-libtool mostlyclean-am
distclean: distclean-recursive
-rm -f Makefile
distclean-am: clean-am distclean-generic distclean-tags
dvi: dvi-recursive
dvi-am:
html: html-recursive
html-am:
info: info-recursive
info-am:
install-data-am:
install-dvi: install-dvi-recursive
install-dvi-am:
install-exec-am:
install-html: install-html-recursive
install-html-am:
install-info: install-info-recursive
install-info-am:
install-man:
install-pdf: install-pdf-recursive
install-pdf-am:
install-ps: install-ps-recursive
install-ps-am:
installcheck-am:
maintainer-clean: maintainer-clean-recursive
-rm -f Makefile
maintainer-clean-am: distclean-am maintainer-clean-generic
mostlyclean: mostlyclean-recursive
mostlyclean-am: mostlyclean-generic mostlyclean-libtool
pdf: pdf-recursive
pdf-am:
ps: ps-recursive
ps-am:
uninstall-am:
.MAKE: $(am__recursive_targets) install-am install-strip
.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \
check-am clean clean-generic clean-libtool cscopelist-am ctags \
ctags-am distclean distclean-generic distclean-libtool \
distclean-tags distdir dvi dvi-am html html-am info info-am \
install install-am install-data install-data-am install-dvi \
install-dvi-am install-exec install-exec-am install-html \
install-html-am install-info install-info-am install-man \
install-pdf install-pdf-am install-ps install-ps-am \
install-strip installcheck installcheck-am installdirs \
installdirs-am maintainer-clean maintainer-clean-generic \
mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \
ps ps-am tags tags-am uninstall uninstall-am
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:
snort-2.9.6.0/preproc_rules/ 0000755 0000000 0000000 00000000000 12260606571 012673 5 0000000 0000000 snort-2.9.6.0/preproc_rules/sensitive-data.rules 0000644 0000000 0000000 00000002435 11435274307 016614 0000000 0000000 alert tcp $HOME_NET any -> $EXTERNAL_NET [80,20,25,143,110] (msg:"SENSITIVE-DATA Credit Card Numbers"; metadata:service http, service smtp, service ftp-data, service imap, service pop3; sd_pattern:2,credit_card; classtype:sdf; sid:2; gid:138; rev:1;)
alert tcp $HOME_NET any -> $EXTERNAL_NET [80,20,25,143,110] (msg:"SENSITIVE-DATA U.S. Social Security Numbers (with dashes)"; metadata:service http, service smtp, service ftp-data, service imap, service pop3; sd_pattern:2,us_social; classtype:sdf; sid:3; gid:138; rev:1;)
#alert tcp $HOME_NET any -> $EXTERNAL_NET [80,20,25,143,110] (msg:"SENSITIVE-DATA U.S. Social Security Numbers (w/out dashes)"; metadata:service http, service smtp, service ftp-data, service imap, service pop3; sd_pattern:20,us_social_nodashes; classtype:sdf; sid:4; gid:138; rev:1;)
alert tcp $HOME_NET any -> $EXTERNAL_NET [80,20,25,143,110] (msg:"SENSITIVE-DATA Email Addresses"; metadata:service http, service smtp, service ftp-data, service imap, service pop3; sd_pattern:20,email; classtype:sdf; sid:5; gid:138; rev:1;)
alert tcp $HOME_NET any -> $EXTERNAL_NET [80,20,25,143,110] (msg:"SENSITIVE-DATA U.S. Phone Numbers"; metadata:service http, service smtp, service ftp-data, service imap, service pop3; sd_pattern:20,(\d{3}) ?\d{3}-\d{4}; classtype:sdf; sid:6; gid:138; rev:1;)
snort-2.9.6.0/preproc_rules/decoder.rules 0000644 0000000 0000000 00000047571 12243745447 015321 0000000 0000000 alert ( msg:"DECODE_NOT_IPV4_DGRAM"; sid:1; gid:116; rev:1; metadata:rule-type decode; classtype:protocol-command-decode;)
alert ( msg:"DECODE_IPV4_INVALID_HEADER_LEN"; sid:2; gid:116; rev:1; metadata:rule-type decode; classtype:protocol-command-decode; )
alert ( msg:"DECODE_IPV4_DGRAM_LT_IPHDR"; sid:3; gid:116; rev:1; metadata:rule-type decode; classtype:protocol-command-decode; )
alert ( msg:"DECODE_IPV4OPT_BADLEN"; sid:4; gid:116; rev:1; metadata:rule-type decode; classtype:protocol-command-decode; )
alert ( msg:"DECODE_IPV4OPT_TRUNCATED"; sid:5; gid:116; rev:1; metadata:rule-type decode; reference:cve,2005-0048; reference:url,www.microsoft.com/technet/security/bulletin/ms05-019.mspx; classtype:protocol-command-decode;)
alert ( msg:"DECODE_IPV4_DGRAM_GT_CAPLEN"; sid:6; gid:116; rev:1; metadata:rule-type decode;classtype:protocol-command-decode; )
alert ( msg:"DECODE_TCP_DGRAM_LT_TCPHDR"; sid:45; gid:116; rev:1; metadata:rule-type decode;classtype:protocol-command-decode; )
alert ( msg:"DECODE_TCP_INVALID_OFFSET"; sid:46; gid:116; rev:1; metadata:rule-type decode; reference:cve,2004-0816; classtype:bad-unknown; )
alert ( msg:"DECODE_TCP_LARGE_OFFSET"; sid:47; gid:116; rev:1; metadata:rule-type decode; classtype:bad-unknown; )
alert ( msg:"DECODE_TCPOPT_BADLEN"; sid:54; gid:116; rev:1; metadata:rule-type decode; reference:bugtraq,14811; classtype:protocol-command-decode; )
alert ( msg:"DECODE_TCPOPT_TRUNCATED"; sid:55; gid:116; rev:1; metadata:rule-type decode; classtype:protocol-command-decode; )
alert ( msg:"DECODE_TCPOPT_TTCP"; sid:56; gid:116; rev:1; metadata:rule-type decode; classtype:protocol-command-decode; )
alert ( msg:"DECODE_TCPOPT_OBSOLETE"; sid:57; gid:116; rev:1; metadata:rule-type decode; classtype:protocol-command-decode; )
alert ( msg:"DECODE_TCPOPT_EXPERIMENT"; sid:58; gid:116; rev:1; metadata:rule-type decode; classtype:protocol-command-decode; )
alert ( msg:"DECODE_TCPOPT_WSCALE_INVALID"; sid:59; gid:116; rev:1; metadata:rule-type decode; classtype:protocol-command-decode; )
alert ( msg:"DECODE_UDP_DGRAM_LT_UDPHDR"; sid:95; gid:116; rev:1; metadata:rule-type decode; classtype:protocol-command-decode; )
alert ( msg:"DECODE_UDP_DGRAM_INVALID_LENGTH"; sid:96; gid:116; rev:1; metadata:rule-type decode; classtype:protocol-command-decode; )
alert ( msg:"DECODE_UDP_DGRAM_SHORT_PACKET"; sid:97; gid:116; rev:1; metadata:rule-type decode; classtype:protocol-command-decode; )
alert ( msg:"DECODE_UDP_DGRAM_LONG_PACKET"; sid:98; gid:116; rev:1; metadata:rule-type decode; classtype:protocol-command-decode; )
alert ( msg:"DECODE_ICMP_DGRAM_LT_ICMPHDR"; sid:105; gid:116; rev:1; metadata:rule-type decode; classtype:protocol-command-decode; )
alert ( msg:"DECODE_ICMP_DGRAM_LT_TIMESTAMPHDR"; sid:106; gid:116; rev:1; metadata:rule-type decode; classtype:protocol-command-decode; )
alert ( msg:"DECODE_ICMP_DGRAM_LT_ADDRHDR"; sid:107; gid:116; rev:1; metadata:rule-type decode; classtype:protocol-command-decode; )
alert ( msg:"DECODE_IPV4_DGRAM_UNKNOWN"; sid:108; gid:116; rev:1; metadata:rule-type decode; classtype:protocol-command-decode; )
alert ( msg:"DECODE_ARP_TRUNCATED"; sid:109; gid:116; rev:1; metadata:rule-type decode; classtype:bad-unknown; )
alert ( msg:"DECODE_EAPOL_TRUNCATED"; sid:110; gid:116; rev:1; metadata:rule-type decode; classtype:bad-unknown; )
alert ( msg:"DECODE_EAPKEY_TRUNCATED"; sid:111; gid:116; rev:1; metadata:rule-type decode; classtype:bad-unknown; )
alert ( msg:"DECODE_EAP_TRUNCATED"; sid:112; gid:116; rev:1; metadata:rule-type decode; classtype:bad-unknown; )
alert ( msg:"DECODE_BAD_PPPOE"; sid:120; gid:116; rev:1; metadata:rule-type decode; classtype:bad-unknown; )
alert ( msg:"DECODE_BAD_VLAN"; sid:130; gid:116; rev:1; metadata:rule-type decode; classtype:bad-unknown; )
alert ( msg:"DECODE_BAD_VLAN_ETHLLC"; sid:131; gid:116; rev:1; metadata:rule-type decode; classtype:bad-unknown; )
alert ( msg:"DECODE_BAD_VLAN_OTHER"; sid:132; gid:116; rev:1; metadata:rule-type decode; classtype:bad-unknown; )
alert ( msg:"DECODE_BAD_80211_ETHLLC"; sid:133; gid:116; rev:1; metadata:rule-type decode; classtype:bad-unknown; )
alert ( msg:"DECODE_BAD_80211_OTHER"; sid:134; gid:116; rev:1; metadata:rule-type decode;classtype:bad-unknown; )
alert ( msg:"DECODE_BAD_TRH"; sid:140; gid:116; rev:1; metadata:rule-type decode;classtype:bad-unknown; )
alert ( msg:"DECODE_BAD_TR_ETHLLC"; sid:141; gid:116; rev:1; metadata:rule-type decode;classtype:bad-unknown; )
alert ( msg:"DECODE_BAD_TR_MR_LEN"; sid:142; gid:116; rev:1; metadata:rule-type decode;classtype:bad-unknown; )
alert ( msg:"DECODE_BAD_TRHMR"; sid:143; gid:116; rev:1; metadata:rule-type decode;classtype:bad-unknown; )
alert ( msg:"DECODE_BAD_TRAFFIC_LOOPBACK"; sid:150; gid:116; rev:1; metadata:rule-type decode;classtype:bad-unknown; )
alert ( msg:"DECODE_BAD_TRAFFIC_SAME_SRCDST"; sid:151; gid:116; rev:1; metadata:rule-type decode; reference:cve,1999-0016; reference:cve,2005-0688; reference:bugtraq,2666; reference:url,www.microsoft.com/technet/security/bulletin/ms05-019.mspx; classtype:bad-unknown; )
alert ( msg:"DECODE_GRE_DGRAM_LT_GREHDR"; sid:160; gid:116; rev:1; metadata:rule-type decode; classtype:protocol-command-decode; )
alert ( msg:"DECODE_GRE_MULTIPLE_ENCAPSULATION"; sid:161; gid:116; rev:1; metadata:rule-type decode; classtype:protocol-command-decode; )
alert ( msg:"DECODE_GRE_INVALID_VERSION"; sid:162; gid:116; rev:1; metadata:rule-type decode; classtype:protocol-command-decode; )
alert ( msg:"DECODE_GRE_INVALID_HEADER"; sid:163; gid:116; rev:1; metadata:rule-type decode; classtype:protocol-command-decode; )
alert ( msg:"DECODE_GRE_V1_INVALID_HEADER"; sid:164; gid:116; rev:1; metadata:rule-type decode; classtype:protocol-command-decode; )
alert ( msg:"DECODE_GRE_TRANS_DGRAM_LT_TRANSHDR"; sid:165; gid:116; rev:1; metadata:rule-type decode; classtype:protocol-command-decode; )
alert ( msg:"DECODE_ICMP_ORIG_IP_TRUNCATED"; sid:250; gid:116; rev:1; metadata:rule-type decode; classtype:bad-unknown; )
alert ( msg:"DECODE_ICMP_ORIG_IP_VER_MISMATCH"; sid:251; gid:116; rev:1; metadata:rule-type decode; classtype:protocol-command-decode; )
alert ( msg:"DECODE_ICMP_ORIG_DGRAM_LT_ORIG_IP"; sid:252; gid:116; rev:1; metadata:rule-type decode; classtype:protocol-command-decode; )
alert ( msg:"DECODE_ICMP_ORIG_PAYLOAD_LT_64"; sid:253; gid:116; rev:1; metadata:rule-type decode; classtype:protocol-command-decode; )
alert ( msg:"DECODE_ICMP_ORIG_PAYLOAD_GT_576"; sid:254; gid:116; rev:1; metadata:rule-type decode; classtype:protocol-command-decode; )
alert ( msg:"DECODE_ICMP_ORIG_IP_WITH_FRAGOFFSET"; sid:255; gid:116; rev:1; metadata:rule-type decode; classtype:protocol-command-decode; )
alert ( msg:"DECODE_IPV6_MIN_TTL"; sid:270; gid:116; rev:1; metadata:rule-type decode; classtype:protocol-command-decode; )
alert ( msg:"DECODE_IPV6_IS_NOT"; sid:271; gid:116; rev:1; metadata:rule-type decode; classtype:protocol-command-decode; )
alert ( msg:"DECODE_IPV6_TRUNCATED_EXT"; sid:272; gid:116; rev:1; metadata:rule-type decode; classtype:bad-unknown; )
alert ( msg:"DECODE_IPV6_TRUNCATED"; sid:273; gid:116; rev:1; metadata:rule-type decode; classtype:bad-unknown; )
alert ( msg:"DECODE_IPV6_DGRAM_LT_IPHDR"; sid:274; gid:116; rev:1; metadata:rule-type decode; classtype:protocol-command-decode; )
alert ( msg:"DECODE_IPV6_DGRAM_GT_CAPLEN"; sid:275; gid:116; rev:1; metadata:rule-type decode; classtype:protocol-command-decode; )
alert ( msg:"DECODE_IPV6_DST_ZERO"; sid:276; gid:116; rev:1; metadata:rule-type decode; classtype:protocol-command-decode; )
alert ( msg:"DECODE_IPV6_SRC_MULTICAST"; sid:277; gid:116; rev:1; metadata:rule-type decode; classtype:protocol-command-decode; )
alert ( msg:"DECODE_IPV6_DST_RESERVED_MULTICAST"; sid:278; gid:116; rev:1; metadata:rule-type decode; classtype:protocol-command-decode; )
alert ( msg:"DECODE_IPV6_BAD_OPT_TYPE"; sid:279; gid:116; rev:1; metadata:rule-type decode; classtype:protocol-command-decode; )
alert ( msg:"DECODE_IPV6_BAD_MULTICAST_SCOPE"; sid:280; gid:116; rev:1; metadata:rule-type decode; classtype:protocol-command-decode; )
alert ( msg:"DECODE_IPV6_BAD_NEXT_HEADER"; sid:281; gid:116; rev:1; metadata:rule-type decode; classtype:protocol-command-decode; )
alert ( msg:"DECODE_IPV6_ROUTE_AND_HOPBYHOP"; sid:282; gid:116; rev:1; metadata:rule-type decode; classtype:protocol-command-decode; )
alert ( msg:"DECODE_IPV6_TWO_ROUTE_HEADERS"; sid:283; gid:116; rev:1; metadata:rule-type decode; classtype:protocol-command-decode; )
alert ( msg:"DECODE_ICMPV6_TOO_BIG_BAD_MTU"; sid:285; gid:116; rev:1; metadata:rule-type decode; classtype:protocol-command-decode; )
alert ( msg:"DECODE_ICMPV6_UNREACHABLE_NON_RFC_2463_CODE"; sid:286; gid:116; rev:1; metadata:rule-type decode; classtype:protocol-command-decode; )
alert ( msg:"DECODE_ICMPV6_SOLICITATION_BAD_CODE"; sid:287; gid:116; rev:1; metadata:rule-type decode; classtype:protocol-command-decode; )
alert ( msg:"DECODE_ICMPV6_ADVERT_BAD_CODE"; sid:288; gid:116; rev:1; metadata:rule-type decode; classtype:protocol-command-decode; )
alert ( msg:"DECODE_ICMPV6_SOLICITATION_BAD_RESERVED"; sid:289; gid:116; rev:1; metadata:rule-type decode; classtype:protocol-command-decode; )
alert ( msg:"DECODE_ICMPV6_ADVERT_BAD_REACHABLE"; sid:290; gid:116; rev:1; metadata:rule-type decode; classtype:protocol-command-decode; )
alert ( msg:"DECODE_IPV6_TUNNELED_IPV4_TRUNCATED"; sid:291; gid:116; rev:1; metadata:rule-type decode; classtype:attempted-dos; reference:cve,2008-2136; reference:bugtraq,29235; )
alert ( msg:"DECODE_IPV6_DSTOPTS_WITH_ROUTING"; sid:292; gid:116; rev:1; metadata:rule-type decode; classtype:protocol-command-decode; )
alert ( msg:"DECODE_IP_MULTIPLE_ENCAPSULATION"; sid:293; gid:116; rev:1; metadata:rule-type decode; classtype:protocol-command-decode; )
alert ( msg:"DECODE_ESP_HEADER_TRUNC"; sid:294; gid:116; rev:1; metadata:rule-type decode; classtype:protocol-command-decode; )
alert ( msg:"DECODE_IPV6_BAD_OPT_LEN"; sid:295; gid:116; rev:1; metadata:rule-type decode; classtype:protocol-command-decode; )
alert ( msg:"DECODE_IPV6_UNORDERED_EXTENSIONS"; sid:296; gid:116; rev:1; metadata:rule-type decode; classtype:protocol-command-decode; )
alert ( msg:"DECODE_GTP_MULTIPLE_ENCAPSULATION"; sid:297; gid:116; rev:1; metadata:rule-type decode; classtype:protocol-command-decode; )
alert ( msg:"DECODE_GTP_BAD_LEN_STR"; sid:298; gid:116; rev:1; metadata:rule-type decode; classtype:protocol-command-decode; )
alert ( msg:"DECODE_BAD_MPLS"; sid:170; gid:116; rev:1; metadata:rule-type decode; classtype:protocol-command-decode; )
alert ( msg:"DECODE_BAD_MPLS_LABEL0"; sid:171; gid:116; rev:1; metadata:rule-type decode; classtype:protocol-command-decode; )
alert ( msg:"DECODE_BAD_MPLS_LABEL1"; sid:172; gid:116; rev:1; metadata:rule-type decode; classtype:protocol-command-decode; )
alert ( msg:"DECODE_BAD_MPLS_LABEL2"; sid:173; gid:116; rev:1; metadata:rule-type decode; classtype:protocol-command-decode; )
alert ( msg:"DECODE_BAD_MPLS_LABEL3"; sid:174; gid:116; rev:1; metadata:rule-type decode; classtype:protocol-command-decode; )
alert ( msg:"DECODE_MPLS_RESERVEDLABEL"; sid:175; gid:116; rev:1; metadata:rule-type decode; classtype:protocol-command-decode; )
alert ( msg:"DECODE_MPLS_LABEL_STACK"; sid:176; gid:116; rev:1; metadata:rule-type decode; classtype:protocol-command-decode; )
alert ( msg:"DECODE_TCP_XMAS"; sid: 400; gid: 116; rev: 1; metadata: rule-type decode ; classtype:attempted-recon; reference:bugtraq,7700; reference:cve,2003-0393; )
alert ( msg:"DECODE_TCP_NMAP_XMAS"; sid: 401; gid: 116; rev: 1; metadata: rule-type decode ; classtype:attempted-recon; reference:bugtraq,7700; reference:cve,2003-0393; )
alert ( msg:"DECODE_DOS_NAPTHA"; sid: 402; gid: 116; rev: 1; metadata: rule-type decode ; classtype:attempted-dos; reference:bugtraq,2022; reference:cve,2000-1039; reference:nessus,275; reference:url,razor.bindview.com/publish/advisories/adv_NAPTHA.html; reference:url,www.cert.org/advisories/CA-2000-21.html; reference:url,www.microsoft.com/technet/security/bulletin/MS00-091.mspx; )
alert ( msg:"DECODE_SYN_TO_MULTICAST"; sid: 403; gid: 116; rev: 1; metadata: rule-type decode ; classtype:bad-unknown; )
alert ( msg:"DECODE_ZERO_TTL"; sid: 404; gid: 116; rev: 1; metadata: rule-type decode ; classtype:misc-activity; reference:url,support.microsoft.com/kb/q138268; reference:url,tools.ietf.org/html/rfc1122; )
alert ( msg:"DECODE_BAD_FRAGBITS"; sid: 405; gid: 116; rev: 1; metadata: rule-type decode ; classtype:misc-activity; )
alert ( msg:"DECODE_UDP_IPV6_ZERO_CHECKSUM"; sid:406; gid:116; rev:1; metadata:rule-type decode; classtype:protocol-command-decode; )
alert ( msg:"DECODE_IP4_LEN_OFFSET"; sid:407; gid:116; rev:1; metadata:rule-type decode; classtype:misc-activity; )
alert ( msg:"DECODE_IP4_SRC_THIS_NET"; sid:408; gid:116; rev:1; metadata:rule-type decode; classtype:misc-activity; )
alert ( msg:"DECODE_IP4_DST_THIS_NET"; sid:409; gid:116; rev:1; metadata:rule-type decode; classtype:misc-activity; )
alert ( msg:"DECODE_IP4_SRC_MULTICAST"; sid:410; gid:116; rev:1; metadata:rule-type decode; classtype:misc-activity; )
alert ( msg:"DECODE_IP4_SRC_RESERVED"; sid:411; gid:116; rev:1; metadata:rule-type decode; classtype:misc-activity; )
alert ( msg:"DECODE_IP4_DST_RESERVED"; sid:412; gid:116; rev:1; metadata:rule-type decode; classtype:misc-activity; )
alert ( msg:"DECODE_IP4_SRC_BROADCAST"; sid:413; gid:116; rev:1; metadata:rule-type decode; classtype:misc-activity; )
alert ( msg:"DECODE_IP4_DST_BROADCAST"; sid:414; gid:116; rev:1; metadata:rule-type decode; classtype:misc-activity; )
alert ( msg:"DECODE_ICMP4_DST_MULTICAST"; sid:415; gid:116; rev:1; metadata:rule-type decode; classtype:misc-activity; )
alert ( msg:"DECODE_ICMP4_DST_BROADCAST"; sid:416; gid:116; rev:1; metadata:rule-type decode; classtype:misc-activity; )
alert ( msg:"DECODE_ICMP4_TYPE_OTHER"; sid:418; gid:116; rev:1; metadata:rule-type decode; classtype:misc-activity; )
alert ( msg:"DECODE_TCP_BAD_URP"; sid:419; gid:116; rev:1; metadata:rule-type decode; classtype:misc-activity; )
alert ( msg:"DECODE_TCP_SYN_FIN"; sid:420; gid:116; rev:1; metadata:rule-type decode; classtype:misc-activity; )
alert ( msg:"DECODE_TCP_SYN_RST"; sid:421; gid:116; rev:1; metadata:rule-type decode; classtype:misc-activity; )
alert ( msg:"DECODE_TCP_MUST_ACK"; sid:422; gid:116; rev:2; metadata:rule-type decode; classtype:misc-activity; )
alert ( msg:"DECODE_TCP_NO_SYN_ACK_RST"; sid:423; gid:116; rev:2; metadata:rule-type decode; classtype:misc-activity; )
alert ( msg:"DECODE_ETH_HDR_TRUNC"; sid:424; gid:116; rev:1; metadata:rule-type decode; classtype:misc-activity; )
alert ( msg:"DECODE_IP4_HDR_TRUNC"; sid:425; gid:116; rev:1; metadata:rule-type decode; classtype:misc-activity; )
alert ( msg:"DECODE_ICMP4_HDR_TRUNC"; sid:426; gid:116; rev:1; metadata:rule-type decode; classtype:misc-activity; )
alert ( msg:"DECODE_ICMP6_HDR_TRUNC"; sid:427; gid:116; rev:1; metadata:rule-type decode; classtype:misc-activity; )
alert ( msg:"DECODE_IP4_MIN_TTL"; sid:428; gid:116; rev:1; metadata:rule-type decode; classtype:misc-activity; )
alert ( msg:"DECODE_IP6_ZERO_HOP_LIMIT"; sid:429; gid:116; rev:1; metadata:rule-type decode; classtype:misc-activity; )
alert ( msg:"DECODE_IP4_DF_OFFSET"; sid:430; gid:116; rev:1; metadata:rule-type decode; classtype:misc-activity; )
alert ( msg:"DECODE_ICMP6_TYPE_OTHER"; sid:431; gid:116; rev:1; metadata:rule-type decode; classtype:misc-activity; )
alert ( msg:"DECODE_ICMP6_DST_MULTICAST"; sid:432; gid:116; rev:1; metadata:rule-type decode; classtype:misc-activity; )
alert ( msg:"DECODE_TCP_SHAFT_SYNFLOOD"; sid:433; gid:116; rev:1; metadata:rule-type decode; classtype:attempted-dos; reference:cve,2000-0138; )
alert ( msg:"DECODE_ICMP_PING_NMAP"; sid:434; gid:116; rev:1; metadata:rule-type decode; classtype:attempted-recon; )
alert ( msg:"DECODE_ICMP_ICMPENUM"; sid:435; gid:116; rev:1; metadata:rule-type decode; classtype:attempted-recon; )
alert ( msg:"DECODE_ICMP_REDIRECT_HOST"; sid:436; gid:116; rev:1; metadata:rule-type decode; classtype:attempted-recon; )
alert ( msg:"DECODE_ICMP_REDIRECT_NET"; sid:437; gid:116; rev:1; metadata:rule-type decode; classtype:attempted-recon; )
alert ( msg:"DECODE_ICMP_TRACEROUTE_IPOPTS"; sid:438; gid:116; rev:1; metadata:rule-type decode; classtype:attempted-recon; )
alert ( msg:"DECODE_ICMP_SOURCE_QUENCH"; sid:439; gid:116; rev:1; metadata:rule-type decode; classtype:attempted-recon; )
alert ( msg:"DECODE_ICMP_BROADSCAN_SMURF_SCANNER"; sid:440; gid:116; rev:1; metadata:rule-type decode; classtype:attempted-recon; )
alert ( msg:"DECODE_ICMP_DST_UNREACH_ADMIN_PROHIBITED"; sid:441; gid:116; rev:1; metadata:rule-type decode; classtype:attempted-recon; )
alert ( msg:"DECODE_ICMP_DST_UNREACH_DST_HOST_PROHIBITED"; sid:442; gid:116; rev:1; metadata:rule-type decode; classtype:attempted-recon; )
alert ( msg:"DECODE_ICMP_DST_UNREACH_DST_NET_PROHIBITED"; sid:443; gid:116; rev:1; metadata:rule-type decode; classtype:attempted-recon; )
alert ( msg:"DECODE_IP_OPTION_SET"; sid:444; gid:116; rev:1; metadata:rule-type decode; classtype: bad-unknown; )
alert ( msg:"DECODE_UDP_LARGE_PACKET"; sid:445; gid:116; rev:1; metadata:rule-type decode; classtype: bad-unknown; )
alert ( msg:"DECODE_TCP_PORT_ZERO"; sid:446; gid:116; rev:1; metadata:rule-type decode; classtype: misc-activity; )
alert ( msg:"DECODE_UDP_PORT_ZERO"; sid:447; gid:116; rev:1; metadata:rule-type decode; classtype: misc-activity; )
alert ( msg:"DECODE_IP_RESERVED_FRAG_BIT"; sid:448; gid:116; rev:1; metadata:rule-type decode; classtype: misc-activity; )
alert ( msg:"DECODE_IP_UNASSIGNED_PROTO"; sid:449; gid:116; rev:1; metadata:rule-type decode; classtype: non-standard-protocol; )
alert ( msg:"DECODE_IP_BAD_PROTO"; sid:450; gid:116; rev:1; metadata:rule-type decode; classtype: non-standard-protocol; )
alert ( msg:"DECODE_ICMP_PATH_MTU_DOS"; sid:451; gid:116; rev:1; metadata:rule-type decode; reference:bugtraq,13124; reference:cve,2004-1060; classtype:attempted-dos;)
alert ( msg:"DECODE_ICMP_DOS_ATTEMPT"; sid:452; gid:116; rev:1; metadata:rule-type decode; reference:url,www.kernel.org/pub/linux/kernel/v2.6/ChangeLog-2.6.15.3; reference:cve,2006-0454; reference:bugtraq,16532; classtype:denial-of-service;)
alert ( msg:"DECODE_IPV6_ISATAP_SPOOF"; sid:453; gid:116; rev:1; metadata:rule-type decode; reference:cve,2010-0812; reference:url,www.microsoft.com/technet/security/bulletin/MS10-029.mspx; classtype:misc-attack; )
alert ( msg:"DECODE_PGM_NAK_OVERFLOW"; sid:454; gid:116; rev:1; metadata:rule-type decode; reference:url,www.microsoft.com/technet/security/bulletin/ms06-052.mspx; reference:cve,2006-3442; reference:bugtraq,19922; classtype:attempted-admin; )
alert ( msg:"DECODE_IGMP_OPTIONS_DOS"; sid:455; gid:116; rev:1; metadata:rule-type decode; reference:url,www.microsoft.com/technet/security/bulletin/ms06-007.mspx; reference:cve,2006-0021; reference:bugtraq,16645; classtype:attempted-dos; )
alert ( msg:"DECODE_IP6_EXCESS_EXT_HDR"; sid:456; gid:116; rev:1; metadata:rule-type decode; classtype:misc-activity; )
alert ( msg:"DECODE_ICMPV6_UNREACHABLE_NON_RFC_4443_CODE"; sid:457; gid:116; rev:1; metadata:rule-type decode; classtype:protocol-command-decode; )
alert ( msg:"DECODE_IPV6_BAD_FRAG_PKT"; sid:458; gid:116; rev:1; metadata:rule-type decode; classtype:protocol-command-decode; )
alert ( msg:"DECODE_ZERO_LENGTH_FRAG"; sid:459; gid:116; rev:1; metadata:rule-type decode; classtype:protocol-command-decode; )
alert ( msg:"DECODE_ICMPV6_SOLICITATION_BAD_CODE"; sid:460; gid:116; rev:1; metadata:rule-type decode; classtype:protocol-command-decode; )
alert ( msg:"DECODE_IPV6_ROUTE_ZERO"; sid:461; gid:116; rev:1; metadata:rule-type decode; classtype:protocol-command-decode; )
alert ( msg:"DECODE_ERSPAN_HDR_VERSION_MISMATCH_STR"; sid:462; gid:116; rev:1; metadata:rule-type decode; classtype:protocol-command-decode; )
alert ( msg:"DECODE_ERSPAN2_DGRAM_LT_HDR_STR"; sid:463; gid:116; rev:1; metadata:rule-type decode; classtype:protocol-command-decode; )
alert ( msg:"DECODE_ERSPAN3_DGRAM_LT_HDR_STR"; sid:464; gid:116; rev:1; metadata:rule-type decode; classtype:protocol-command-decode; )
alert ( msg:"DECODE_AUTH_HDR_TRUNC"; sid:465; gid:116; rev:1; metadata:rule-type decode; classtype:misc-activity; )
alert ( msg:"DECODE_AUTH_HDR_BAD_LEN"; sid:466; gid:116; rev:1; metadata:rule-type decode; classtype:misc-activity; )
snort-2.9.6.0/preproc_rules/preprocessor.rules 0000644 0000000 0000000 00000123031 12232305217 016405 0000000 0000000 alert ( msg: "TAG_LOG_PKT"; sid: 1; gid: 2; rev: 1; metadata: rule-type preproc ; classtype:not-suspicious; )
alert ( msg: "BO_TRAFFIC_DETECT"; sid: 1; gid: 105; rev: 1; metadata: rule-type preproc, policy balanced-ips drop, policy security-ips drop ; classtype:trojan-activity; reference:cve,1999-0660; )
alert ( msg: "BO_CLIENT_TRAFFIC_DETECT"; sid: 2; gid: 105; rev: 1; metadata: rule-type preproc, policy balanced-ips drop, policy security-ips drop ; classtype:trojan-activity; reference:cve,1999-0660; )
alert ( msg: "BO_SERVER_TRAFFIC_DETECT"; sid: 3; gid: 105; rev: 1; metadata: rule-type preproc, policy balanced-ips drop, policy security-ips drop ; classtype:trojan-activity; reference:cve,1999-0660;)
alert ( msg: "BO_SNORT_BUFFER_ATTACK"; sid: 4; gid: 105; rev: 1; metadata: rule-type preproc, policy balanced-ips drop, policy security-ips drop ; classtype:trojan-activity; reference:cve,2005-3252; )
alert ( msg: "RPC_FRAG_TRAFFIC"; sid: 1; gid: 106; rev: 1; metadata: rule-type preproc, service sunrpc ; classtype:protocol-command-decode; )
alert ( msg: "RPC_MULTIPLE_RECORD"; sid: 2; gid: 106; rev: 1; metadata: rule-type preproc, service sunrpc ; classtype:protocol-command-decode; )
alert ( msg: "RPC_LARGE_FRAGSIZE"; sid: 3; gid: 106; rev: 1; metadata: rule-type preproc, service sunrpc, policy security-ips alert ; classtype:bad-unknown; )
alert ( msg: "RPC_INCOMPLETE_SEGMENT"; sid: 4; gid: 106; rev: 1; metadata: rule-type preproc, service sunrpc, policy security-ips alert ; classtype:bad-unknown; )
alert ( msg: "RPC_ZERO_LENGTH_FRAGMENT"; sid: 5; gid: 106; rev: 1; metadata: rule-type preproc, service sunrpc, policy security-ips alert ; classtype:bad-unknown; )
alert ( msg: "ARPSPOOF_UNICAST_ARP_REQUEST"; sid: 1; gid: 112; rev: 1; metadata: rule-type preproc ; classtype:protocol-command-decode; )
alert ( msg: "ARPSPOOF_ETHERFRAME_ARP_MISMATCH_SRC"; sid: 2; gid: 112; rev: 1; metadata: rule-type preproc ; classtype:bad-unknown; )
alert ( msg: "ARPSPOOF_ETHERFRAME_ARP_MISMATCH_DST"; sid: 3; gid: 112; rev: 1; metadata: rule-type preproc ; classtype:bad-unknown; )
alert ( msg: "ARPSPOOF_ARP_CACHE_OVERWRITE_ATTACK"; sid: 4; gid: 112; rev: 1; metadata: rule-type preproc ; classtype:bad-unknown; )
alert ( msg: "HI_CLIENT_ASCII"; sid: 1; gid: 119; rev: 1; metadata: rule-type preproc, service http ; classtype:not-suspicious; reference:cve,2009-1535; reference:url,www.microsoft.com/technet/security/bulletin/ms09-020.mspx; reference:url,docs.idsresearch.org/http_ids_evasions.pdf; )
alert ( msg: "HI_CLIENT_DOUBLE_DECODE"; sid: 2; gid: 119; rev: 1; metadata: rule-type preproc, service http ; classtype:not-suspicious; reference:cve,2009-1122; reference:url,www.microsoft.com/technet/security/bulletin/ms09-020.mspx; )
alert ( msg: "HI_CLIENT_U_ENCODE"; sid: 3; gid: 119; rev: 1; metadata: rule-type preproc, service http ; classtype:not-suspicious; )
alert ( msg: "HI_CLIENT_BARE_BYTE"; sid: 4; gid: 119; rev: 1; metadata: rule-type preproc, service http ; classtype:not-suspicious; )
alert ( msg: "HI_CLIENT_UTF_8"; sid: 6; gid: 119; rev: 1; metadata: rule-type preproc, service http ; classtype:not-suspicious; reference:cve,2008-2938; reference:cve,2009-1535; reference:url,www.microsoft.com/technet/security/bulletin/ms09-020.mspx; )
alert ( msg: "HI_CLIENT_IIS_UNICODE"; sid: 7; gid: 119; rev: 1; metadata: rule-type preproc, service http ; classtype:unknown; reference:cve,2009-1535; )
alert ( msg: "HI_CLIENT_MULTI_SLASH"; sid: 8; gid: 119; rev: 1; metadata: rule-type preproc, service http ; classtype:not-suspicious; )
alert ( msg: "HI_CLIENT_IIS_BACKSLASH"; sid: 9; gid: 119; rev: 1; metadata: rule-type preproc, service http ; classtype:not-suspicious; )
alert ( msg: "HI_CLIENT_SELF_DIR_TRAV"; sid: 10; gid: 119; rev: 1; metadata: rule-type preproc, service http ; classtype:unknown; )
alert ( msg: "HI_CLIENT_DIR_TRAV"; sid: 11; gid: 119; rev: 1; metadata: rule-type preproc, service http ; classtype:unknown; reference:cve,2001-0333; reference:cve,2002-1744; reference:cve,2008-5515; )
alert ( msg: "HI_CLIENT_APACHE_WS"; sid: 12; gid: 119; rev: 1; metadata: rule-type preproc, service http ; classtype:unknown; )
alert ( msg: "HI_CLIENT_IIS_DELIMITER"; sid: 13; gid: 119; rev: 1; metadata: rule-type preproc, service http ; classtype:unknown; )
alert ( msg: "HI_CLIENT_NON_RFC_CHAR"; sid: 14; gid: 119; rev: 1; metadata: rule-type preproc, service http ; classtype:bad-unknown; )
alert ( msg: "HI_CLIENT_OVERSIZE_DIR"; sid: 15; gid: 119; rev: 1; metadata: rule-type preproc, service http ; classtype:bad-unknown; reference:cve,2007-0774; reference:bugtraq,22791; reference:cve,2010-3281; reference:bugtraq,43338; reference:cve,2011-5007; )
alert ( msg: "HI_CLIENT_LARGE_CHUNK"; sid: 16; gid: 119; rev: 1; metadata: rule-type preproc, service http ; classtype:attempted-admin; )
alert ( msg: "HI_CLIENT_PROXY_USE"; sid: 17; gid: 119; rev: 1; metadata: rule-type preproc, service http ; classtype:protocol-command-decode; )
alert ( msg: "HI_CLIENT_WEBROOT_DIR"; sid: 18; gid: 119; rev: 1; metadata: rule-type preproc, service http ; classtype:unknown; reference:cve,2001-0333; reference:cve,2002-1744; reference:cve,2008-5515; )
alert ( msg: "HI_CLIENT_LONG_HEADER"; sid: 19; gid: 119; rev: 1; metadata: rule-type preproc, service http ; classtype:bad-unknown; reference:cve,2009-4873; )
alert ( msg: "HI_CLIENT_MAX_HEADERS"; sid: 20; gid: 119; rev: 1; metadata: rule-type preproc ; classtype:unknown; )
alert ( msg: "HI_CLIENT_MULTIPLE_CONTLEN"; sid: 21; gid: 119; rev: 1; metadata: rule-type preproc ; classtype:unknown; )
alert ( msg: "HI_CHUNK_SIZE_MISMATCH"; sid: 22; gid: 119; rev: 1; metadata: rule-type preproc ; classtype:unknown; )
alert ( msg: "HI_CLIENT_INVALID_TRUEIP"; sid:23; gid: 119; rev: 1; metadata: rule-type preproc ; classtype:unknown; )
alert ( msg: "HI_CLIENT_MULTIPLE_HOST_HDRS"; sid:24; gid: 119; rev: 1; metadata: rule-type preproc ; classtype:unknown; )
alert ( msg: "HI_CLIENT_LONG_HOSTNAME"; sid:25; gid: 119; rev: 1; metadata: rule-type preproc ; classtype:unknown; )
alert ( msg: "HI_CLIENT_EXCEEDS_SPACES"; sid:26; gid: 119; rev: 1; metadata: rule-type preproc ; classtype:attempted-dos;reference:cve,2004-0942; )
alert ( msg: "HI_CLIENT_CONSECUTIVE_SMALL_CHUNK_SIZES"; sid: 27; gid: 119; rev: 1; metadata: rule-type preproc ; classtype:unknown; )
alert ( msg: "HI_CLIENT_UNBOUNDED POST"; sid: 28; gid: 119; rev: 1; metadata: rule-type preproc ; classtype:unknown; )
alert ( msg: "HI_CLIENT_MULTIPLE_TRUEIP_IN_SESSION"; sid: 29; gid: 119; rev: 1; metadata: rule-type preproc ; classtype:unknown; )
alert ( msg: "HI_CLIENT_BOTH_TRUEIP_XFF_HDRS"; sid: 30; gid: 119; rev: 1; metadata: rule-type preproc ; classtype:unknown; )
alert ( msg: "HI_CLIENT_UNKNOWN_METHOD"; sid: 31; gid: 119; rev: 1; metadata: rule-type preproc ; classtype:unknown; )
alert ( msg: "HI_CLIENT_SIMPLE_REQUEST"; sid: 32; gid: 119; rev: 1; metadata: rule-type preproc ; classtype:unknown; )
alert ( msg: "HI_CLIENT_UNESCAPED_SPACE_URI"; sid: 33; gid: 119; rev: 1; metadata: rule-type preproc ; classtype:unknown; )
alert ( msg: "HI_CLIENT_PIPELINE_MAX "; sid: 34; gid: 119; rev: 1; metadata: rule-type preproc ; classtype:unknown; )
alert ( msg: "HI_ANOM_SERVER_ALERT"; sid: 1; gid: 120; rev: 1; metadata: rule-type preproc, service http ; classtype:unknown; )
alert ( msg: "HI_SERVER_INVALID_STATCODE"; sid: 2; gid: 120; rev: 1; metadata: rule-type preproc ; classtype:unknown; )
alert ( msg: "HI_SERVER_NO_CONTLEN"; sid: 3; gid: 120; rev: 1; metadata: rule-type preproc ; classtype:unknown; )
alert ( msg: "HI_SERVER_UTF_NORM_FAIL"; sid: 4; gid: 120; rev: 1; metadata: rule-type preproc ; classtype:unknown; )
alert ( msg: "HI_SERVER_UTF7"; sid: 5; gid: 120; rev: 1; metadata: rule-type preproc ; classtype:unknown; )
alert ( msg: "HI_SERVER_DECOMPR_FAILED"; sid: 6; gid: 120; rev: 1; metadata: rule-type preproc ; classtype:unknown; )
alert ( msg: "HI_SERVER_CONSECUTIVE_SMALL_CHUNK_SIZES"; sid: 7; gid: 120; rev: 1; metadata: rule-type preproc ; classtype:unknown; )
alert ( msg: "HI_CLISRV_MSG_SIZE_EXCEPTION"; sid: 8; gid: 120; rev: 1; metadata: rule-type preproc ; classtype:unknown; )
alert ( msg: "HI_SERVER_JS_OBFUSCATION_EXCD"; sid: 9; gid: 120; rev: 1; metadata: rule-type preproc ; classtype:unknown; )
alert ( msg: "HI_SERVER_JS_EXCESS_WS"; sid: 10; gid: 120; rev: 1; metadata: rule-type preproc ; classtype:unknown; )
alert ( msg: "HI_SERVER_MIXED_ENCODINGS "; sid: 11; gid: 120; rev: 1; metadata: rule-type preproc ; classtype:unknown; )
alert ( msg: "PSNG_TCP_PORTSCAN"; sid: 1; gid: 122; rev: 1; metadata: rule-type preproc ; classtype:attempted-recon; )
alert ( msg: "PSNG_TCP_DECOY_PORTSCAN"; sid: 2; gid: 122; rev: 1; metadata: rule-type preproc ; classtype:attempted-recon; )
alert ( msg: "PSNG_TCP_PORTSWEEP"; sid: 3; gid: 122; rev: 1; metadata: rule-type preproc ; classtype:attempted-recon; )
alert ( msg: "PSNG_TCP_DISTRIBUTED_PORTSCAN"; sid: 4; gid: 122; rev: 1; metadata: rule-type preproc ; classtype:attempted-recon; )
alert ( msg: "PSNG_TCP_FILTERED_PORTSCAN"; sid: 5; gid: 122; rev: 1; metadata: rule-type preproc ; classtype:attempted-recon; )
alert ( msg: "PSNG_TCP_FILTERED_DECOY_PORTSCAN"; sid: 6; gid: 122; rev: 1; metadata: rule-type preproc ; classtype:attempted-recon; )
alert ( msg: "PSNG_TCP_PORTSWEEP_FILTERED"; sid: 7; gid: 122; rev: 1; metadata: rule-type preproc ; classtype:attempted-recon; )
alert ( msg: "PSNG_TCP_FILTERED_DISTRIBUTED_PORTSCAN"; sid: 8; gid: 122; rev: 1; metadata: rule-type preproc ; classtype:attempted-recon; )
alert ( msg: "PSNG_IP_PORTSCAN"; sid: 9; gid: 122; rev: 1; metadata: rule-type preproc ; classtype:attempted-recon; )
alert ( msg: "PSNG_IP_DECOY_PORTSCAN"; sid: 10; gid: 122; rev: 1; metadata: rule-type preproc ; classtype:attempted-recon; )
alert ( msg: "PSNG_IP_PORTSWEEP"; sid: 11; gid: 122; rev: 1; metadata: rule-type preproc ; classtype:attempted-recon; )
alert ( msg: "PSNG_IP_DISTRIBUTED_PORTSCAN"; sid: 12; gid: 122; rev: 1; metadata: rule-type preproc ; classtype:attempted-recon; )
alert ( msg: "PSNG_IP_FILTERED_PORTSCAN"; sid: 13; gid: 122; rev: 1; metadata: rule-type preproc ; classtype:attempted-recon; )
alert ( msg: "PSNG_IP_FILTERED_DECOY_PORTSCAN"; sid: 14; gid: 122; rev: 1; metadata: rule-type preproc ; classtype:attempted-recon;)
alert ( msg: "PSNG_IP_PORTSWEEP_FILTERED"; sid: 15; gid: 122; rev: 1; metadata: rule-type preproc ; classtype:attempted-recon; )
alert ( msg: "PSNG_IP_FILTERED_DISTRIBUTED_PORTSCAN"; sid: 16; gid: 122; rev: 1; metadata: rule-type preproc ; classtype:attempted-recon; )
alert ( msg: "PSNG_UDP_PORTSCAN"; sid: 17; gid: 122; rev: 1; metadata: rule-type preproc ; classtype:attempted-recon; )
alert ( msg: "PSNG_UDP_DECOY_PORTSCAN"; sid: 18; gid: 122; rev: 1; metadata: rule-type preproc ; classtype:attempted-recon; )
alert ( msg: "PSNG_UDP_PORTSWEEP"; sid: 19; gid: 122; rev: 1; metadata: rule-type preproc ; classtype:attempted-recon; )
alert ( msg: "PSNG_UDP_DISTRIBUTED_PORTSCAN"; sid: 20; gid: 122; rev: 1; metadata: rule-type preproc ; classtype:attempted-recon; )
alert ( msg: "PSNG_UDP_FILTERED_PORTSCAN"; sid: 21; gid: 122; rev: 1; metadata: rule-type preproc ; classtype:attempted-recon; )
alert ( msg: "PSNG_UDP_FILTERED_DECOY_PORTSCAN"; sid: 22; gid: 122; rev: 1; metadata: rule-type preproc ; classtype:attempted-recon; )
alert ( msg: "PSNG_UDP_PORTSWEEP_FILTERED"; sid: 23; gid: 122; rev: 1; metadata: rule-type preproc ; classtype:attempted-recon; )
alert ( msg: "PSNG_UDP_FILTERED_DISTRIBUTED_PORTSCAN"; sid: 24; gid: 122; rev: 1; metadata: rule-type preproc ; classtype:attempted-recon; )
alert ( msg: "PSNG_ICMP_PORTSWEEP"; sid: 25; gid: 122; rev: 1; metadata: rule-type preproc ; classtype:attempted-recon; )
alert ( msg: "PSNG_ICMP_PORTSWEEP_FILTERED"; sid: 26; gid: 122; rev: 1; metadata: rule-type preproc ; classtype:attempted-recon; )
alert ( msg: "PSNG_OPEN_PORT"; sid: 27; gid: 122; rev: 1; metadata: rule-type preproc ; classtype:attempted-recon; )
alert ( msg: "FRAG3_IPOPTIONS"; sid: 1; gid: 123; rev: 1; metadata: rule-type preproc ; classtype:protocol-command-decode; )
alert ( msg: "FRAG3_TEARDROP"; sid: 2; gid: 123; rev: 1; metadata: rule-type preproc ; reference:cve,1999-0015; reference:bugtraq,124; classtype:attempted-dos; )
alert ( msg: "FRAG3_SHORT_FRAG"; sid: 3; gid: 123; rev: 1; metadata: rule-type preproc ; classtype:protocol-command-decode; )
alert ( msg: "FRAG3_ANOMALY_OVERSIZE"; sid: 4; gid: 123; rev: 1; metadata: rule-type preproc ; classtype:attempted-dos; )
alert ( msg: "FRAG3_ANOMALY_ZERO"; sid: 5; gid: 123; rev: 1; metadata: rule-type preproc ; classtype:attempted-dos; )
alert ( msg: "FRAG3_ANOMALY_BADSIZE_SM"; sid: 6; gid: 123; rev: 1; metadata: rule-type preproc ; classtype:protocol-command-decode; )
alert ( msg: "FRAG3_ANOMALY_BADSIZE_LG"; sid: 7; gid: 123; rev: 1; metadata: rule-type preproc ; classtype:protocol-command-decode; )
alert ( msg: "FRAG3_ANOMALY_OVLP"; sid: 8; gid: 123; rev: 1; metadata: rule-type preproc ; classtype:protocol-command-decode; )
#alert ( msg: "FRAG3_IPV6_BSD_ICMP_FRAG"; sid: 9; gid: 123; rev: 1; metadata: rule-type preproc ; classtype:attempted-admin; reference:cve,2007-1365; )
#alert ( msg: "FRAG3_IPV6_BAD_FRAG_PKT"; sid: 10; gid: 123; rev: 1; metadata: rule-type preproc ; classtype:attempted-admin; reference:cve,2007-1365; )
alert ( msg: "FRAG3_MIN_TTL"; sid: 11; gid: 123; rev: 1; metadata: rule-type preproc ; classtype:bad-unknown; )
alert ( msg: "FRAG3_EXCESSIVE_OVERLAP"; sid: 12; gid: 123; rev: 1; metadata: rule-type preproc ; classtype:attempted-dos; )
alert ( msg: "FRAG3_TINY_FAGMENT"; sid: 13; gid: 123; rev: 1; metadata: rule-type preproc ; reference:cve,2005-0209; classtype:attempted-dos; )
alert ( msg: "SMTP_COMMAND_OVERFLOW"; sid: 1; gid: 124; rev: 1; metadata: rule-type preproc, service smtp, policy security-ips drop ; classtype:attempted-admin; reference:cve,2001-0260; reference:cve,2005-0560; reference:url,www.microsoft.com/technet/security/bulletin/ms05-021.mspx; )
alert ( msg: "SMTP_DATA_HDR_OVERFLOW"; sid: 2; gid: 124; rev: 1; metadata: rule-type preproc, service smtp, policy security-ips drop ; classtype:attempted-admin; reference:cve,2002-1337; reference:cve,2010-4344; )
alert ( msg: "SMTP_RESPONSE_OVERFLOW"; sid: 3; gid: 124; rev: 1; metadata: rule-type preproc, service smtp, policy security-ips drop ; classtype:attempted-user; reference:cve,2002-1090; )
alert ( msg: "SMTP_SPECIFIC_CMD_OVERFLOW"; sid: 4; gid: 124; rev: 1; metadata: rule-type preproc, service smtp, policy security-ips drop ; classtype:attempted-admin; reference:cve,2005-0560; reference:url,www.microsoft.com/technet/security/bulletin/ms05-021.mspx; )
alert ( msg: "SMTP_UNKNOWN_CMD"; sid: 5; gid: 124; rev: 1; metadata: rule-type preproc, service smtp ; classtype:protocol-command-decode; )
alert ( msg: "SMTP_ILLEGAL_CMD"; sid: 6; gid: 124; rev: 1; metadata: rule-type preproc, service smtp ; classtype:protocol-command-decode; )
alert ( msg: "SMTP_HEADER_NAME_OVERFLOW"; sid: 7; gid: 124; rev: 1; metadata: rule-type preproc, service smtp, policy security-ips drop ; classtype:attempted-admin; reference:cve,2004-0105; )
alert ( msg: "SMTP_XLINK2STATE_OVERFLOW"; sid: 8; gid: 124; rev: 1; metadata: rule-type preproc, service smtp, policy security-ips drop ; classtype:attempted-admin; reference:cve,2005-0560; reference:url,www.microsoft.com/technet/security/bulletin/ms05-021.mspx; )
alert ( msg: "SMTP_B64_DECODING_FAILED"; sid: 10; gid: 124; rev: 1; metadata: rule-type preproc, service smtp ; classtype:unknown; )
alert ( msg: "SMTP_QP_DECODING_FAILED"; sid: 11; gid: 124; rev: 1; metadata: rule-type preproc, service smtp ; classtype:unknown; )
#alert ( msg: "SMTP_BITENC_DECODING_FAILED"; sid: 12; gid: 124; rev: 1; metadata: rule-type preproc, service smtp ; classtype:unknown; )
alert ( msg: "SMTP_UU_DECODING_FAILED"; sid: 13; gid: 124; rev: 1; metadata: rule-type preproc, service smtp ; classtype:unknown; )
alert ( msg: "SMTP_AUTH_ATTACK"; sid: 14; gid: 124; rev: 1; metadata: rule-type preproc, service smtp ; classtype:unknown; )
alert ( msg: "FTPP_FTP_TELNET_CMD"; sid: 1; gid: 125; rev: 1; metadata: rule-type preproc, service ftp ; classtype:protocol-command-decode; reference:cve,2010-3867; reference:cve,2010-3972; reference:cve,2010-4221; reference:url,www.microsoft.com/technet/security/bulletin/MS11-004.mspx; )
alert ( msg: "FTPP_FTP_INVALID_CMD"; sid: 2; gid: 125; rev: 1; metadata: rule-type preproc, service ftp ; classtype:bad-unknown; reference:cve,2010-4221; )
alert ( msg: "FTPP_FTP_PARAMETER_LENGTH_OVERFLOW"; sid: 3; gid: 125; rev: 1; metadata: rule-type preproc, service ftp, policy security-ips drop ; classtype:attempted-admin; reference:cve,2004-0286; reference:url,www.kb.cert.org/vuls/id/276653; reference:cve,1999-0368; reference:bugtraq,113; reference:bugtraq,2242; reference:cve,2006-5815; reference:bugtraq,20992; )
alert ( msg: "FTPP_FTP_MALFORMED_PARAMETER"; sid: 4; gid: 125; rev: 1; metadata: rule-type preproc, service ftp ; classtype:protocol-command-decode; )
alert ( msg: "FTPP_FTP_PARAMETER_STR_FORMAT"; sid: 5; gid: 125; rev: 1; metadata: rule-type preproc, service ftp, policy security-ips drop ; classtype:attempted-admin; reference:cve,2000-0573; )
alert ( msg: "FTPP_FTP_RESPONSE_LENGTH_OVERFLOW"; sid: 6; gid: 125; rev: 1; metadata: rule-type preproc, service ftp, policy security-ips drop ; classtype:attempted-user; reference:cve,2007-3161; reference:cve,2010-1465; reference:url,www.kb.cert.org/vuls/id/276653; )
alert ( msg: "FTPP_FTP_ENCRYPTED"; sid: 7; gid: 125; rev: 1; metadata: rule-type preproc, service ftp ; classtype:protocol-command-decode; )
alert ( msg: "FTPP_FTP_BOUNCE"; sid: 8; gid: 125; rev: 1; metadata: rule-type preproc, service ftp ; classtype:bad-unknown; reference:cve,1999-0017; reference:url,www.kb.cert.org/vuls/id/276653; )
alert ( msg: "FTPP_FTP_EVASIVE_TELNET_CMD"; sid: 9; gid: 125; rev: 1; metadata: rule-type preproc, service ftp ; classtype:bad-unknown; )
alert ( msg: "FTPP_TELNET_AYT_OVERFLOW"; sid: 1; gid: 126; rev: 1; metadata: rule-type preproc, service telnet, policy security-ips drop ; classtype:attempted-admin; reference:cve,2001-0554; )
alert ( msg: "FTPP_TELNET_ENCRYPTED"; sid: 2; gid: 126; rev: 1; metadata: rule-type preproc, service telnet ; classtype:protocol-command-decode;)
alert ( msg: "FTPP_TELNET_SUBNEG_BEGIN_NO_END"; sid: 3; gid: 126; rev: 1; metadata: rule-type preproc, service telnet ; classtype:protocol-command-decode; )
alert ( msg: "SSH_EVENT_RESPOVERFLOW"; sid: 1; gid: 128; rev: 1; metadata: rule-type preproc, service ssh, policy security-ips drop ; reference:cve,2002-0639; reference:cve,2002-0640; classtype:attempted-admin;)
alert ( msg: "SSH_EVENT_CRC32"; sid: 2; gid: 128; rev: 1; metadata: rule-type preproc, service ssh, policy security-ips drop ; reference:cve,2002-1024; reference:cve,2002-1547; reference:cve,2006-2971; reference:cve,2007-1051; reference:cve,2007-4654; classtype:attempted-admin;)
alert ( msg: "SSH_EVENT_SECURECRT"; sid: 3; gid: 128; rev: 1; metadata: rule-type preproc, service ssh, policy security-ips drop ; reference:cve,2001-1466; reference:cve,2002-1059; classtype:attempted-admin;)
alert ( msg: "SSH_EVENT_PROTOMISMATCH"; sid: 4; gid: 128; rev: 1; metadata: rule-type preproc, service ssh ; classtype:non-standard-protocol;)
alert ( msg: "SSH_EVENT_WRONGDIR"; sid: 5; gid: 128; rev: 1; metadata: rule-type preproc, service ssh ; classtype:non-standard-protocol;)
alert ( msg: "SSH_EVENT_PAYLOAD_SIZE"; sid: 6; gid: 128; rev: 1; metadata: rule-type preproc, service ssh ; classtype:bad-unknown;)
alert ( msg: "SSH_EVENT_VERSION"; sid: 7; gid: 128; rev: 1; metadata: rule-type preproc, service ssh ; classtype:non-standard-protocol;)
alert ( msg: "STREAM5_SYN_ON_EST"; sid: 1; gid: 129; rev: 1; metadata: rule-type preproc ; classtype:bad-unknown; )
alert ( msg: "STREAM5_DATA_ON_SYN"; sid: 2; gid: 129; rev: 1; metadata: rule-type preproc ; reference: cve,2009-1157; reference: bugtraq, 34429; classtype:protocol-command-decode; )
alert ( msg: "STREAM5_DATA_ON_CLOSED"; sid: 3; gid: 129; rev: 1; metadata: rule-type preproc ; classtype:protocol-command-decode; )
alert ( msg: "STREAM5_BAD_TIMESTAMP"; sid: 4; gid: 129; rev: 1; metadata: rule-type preproc ; classtype:protocol-command-decode; reference:cve,2009-1925; )
alert ( msg: "STREAM5_BAD_SEGMENT"; sid: 5; gid: 129; rev: 1; metadata: rule-type preproc ; classtype:bad-unknown; )
alert ( msg: "STREAM5_WINDOW_TOO_LARGE"; sid: 6; gid: 129; rev: 1; metadata: rule-type preproc ; classtype:bad-unknown; )
alert ( msg: "STREAM5_EXCESSIVE_TCP_OVERLAPS"; sid: 7; gid: 129; rev: 1; metadata: rule-type preproc ; classtype:bad-unknown; )
alert ( msg: "STREAM5_DATA_AFTER_RESET"; sid: 8; gid: 129; rev: 1; metadata: rule-type preproc ; classtype:protocol-command-decode; )
alert ( msg: "STREAM5_SESSION_HIJACKED_CLIENT"; sid: 9; gid: 129; rev: 1; metadata: rule-type preproc ; classtype:attempted-user; )
alert ( msg: "STREAM5_SESSION_HIJACKED_SERVER"; sid: 10; gid: 129; rev: 1; metadata: rule-type preproc ; classtype:attempted-user; )
alert ( msg: "STREAM5_DATA_WITHOUT_FLAGS"; sid: 11; gid: 129; rev: 1; metadata: rule-type preproc ; classtype:protocol-command-decode; )
alert ( msg: "STREAM5_SMALL_SEGMENT"; sid: 12; gid: 129; rev: 1; metadata: rule-type preproc ; classtype:bad-unknown; )
alert ( msg: "STREAM5_4WAY_HANDSHAKE"; sid: 13; gid: 129; rev: 1; metadata: rule-type preproc ; classtype:bad-unknown; )
alert ( msg: "STREAM5_NO_TIMESTAMP"; sid: 14; gid: 129; rev: 1; metadata: rule-type preproc ; classtype:bad-unknown; )
alert ( msg: "STREAM5_BAD_RST"; sid: 15; gid: 129; rev: 1; metadata: rule-type preproc ; classtype:bad-unknown; )
alert ( msg: "STREAM5_BAD_FIN"; sid: 16; gid: 129; rev: 1; metadata: rule-type preproc ; classtype:bad-unknown; )
alert ( msg: "STREAM5_BAD_ACK"; sid: 17; gid: 129; rev: 1; metadata: rule-type preproc ; classtype:bad-unknown; )
alert ( msg: "STREAM5_DATA_AFTER_RST_RCVD"; sid: 18; gid: 129; rev: 1; metadata: rule-type preproc ; classtype:bad-unknown; )
alert ( msg: "STREAM5_WINDOW_SLAM"; sid: 19; gid: 129; rev: 1; metadata: rule-type preproc ; classtype:bad-unknown; reference:cve,2013-0075; reference:url,technet.microsoft.com/en-us/security/bulletin/ms13-018; )
alert ( msg: "STREAM5_NO_3WHS"; sid: 20; gid: 129; rev: 1; metadata: rule-type preproc ; classtype:bad-unknown; )
alert ( msg: "DNS_EVENT_OBSOLETE_TYPES"; sid: 1; gid: 131; rev: 1; metadata: rule-type preproc, service dns ; classtype:protocol-command-decode; )
alert ( msg: "DNS_EVENT_EXPERIMENTAL_TYPES"; sid: 2; gid: 131; rev: 1; metadata: rule-type preproc, service dns ; classtype:protocol-command-decode; )
alert ( msg: "DNS_EVENT_RDATA_OVERFLOW"; sid: 3; gid: 131; rev: 1; metadata: rule-type preproc, service dns, policy security-ips drop ; classtype:attempted-admin; reference:cve,2006-3441; reference:url,www.microsoft.com/technet/security/bulletin/ms06-041.mspx; )
alert ( msg: "DCE2_EVENT__MEMCAP"; sid: 1; gid: 133; rev: 1; metadata: rule-type preproc ; classtype: attempted-dos; )
alert ( msg: "DCE2_EVENT__SMB_BAD_NBSS_TYPE"; sid: 2; gid: 133; rev: 1; metadata: rule-type preproc, service netbios-ssn ; classtype: bad-unknown; reference:url,msdn.microsoft.com/en-us/library/cc201989.aspx; )
alert ( msg: "DCE2_EVENT__SMB_BAD_TYPE"; sid: 3; gid: 133; rev: 1; metadata: rule-type preproc, service netbios-ssn ; classtype: bad-unknown; reference:url,msdn.microsoft.com/en-us/library/cc201989.aspx; )
alert ( msg: "DCE2_EVENT__SMB_BAD_ID"; sid: 4; gid: 133; rev: 1; metadata: rule-type preproc, service netbios-ssn ; classtype: bad-unknown; reference:url,msdn.microsoft.com/en-us/library/cc201989.aspx; )
alert ( msg: "DCE2_EVENT__SMB_BAD_WCT"; sid: 5; gid: 133; rev: 1; metadata: rule-type preproc, service netbios-ssn ; classtype: bad-unknown; reference:url,msdn.microsoft.com/en-us/library/cc201989.aspx; )
alert ( msg: "DCE2_EVENT__SMB_BAD_BCC"; sid: 6; gid: 133; rev: 1; metadata: rule-type preproc, service netbios-ssn ; classtype: bad-unknown; reference:url,msdn.microsoft.com/en-us/library/cc201989.aspx; )
alert ( msg: "DCE2_EVENT__SMB_BAD_FORMAT"; sid: 7; gid: 133; rev: 1; metadata: rule-type preproc, service netbios-ssn ; classtype: bad-unknown; reference:url,msdn.microsoft.com/en-us/library/cc201989.aspx; )
alert ( msg: "DCE2_EVENT__SMB_BAD_OFF"; sid: 8; gid: 133; rev: 1; metadata: rule-type preproc, service netbios-ssn ; classtype: bad-unknown; reference:url,msdn.microsoft.com/en-us/library/cc201989.aspx; )
alert ( msg: "DCE2_EVENT__SMB_TDCNT_ZERO"; sid: 9; gid: 133; rev: 1; metadata: rule-type preproc, service netbios-ssn ; classtype: bad-unknown; reference:url,msdn.microsoft.com/en-us/library/cc201989.aspx; )
alert ( msg: "DCE2_EVENT__SMB_NB_LT_SMBHDR"; sid: 10; gid: 133; rev: 1; metadata: rule-type preproc, service netbios-ssn ; classtype: bad-unknown; reference:url,msdn.microsoft.com/en-us/library/cc201989.aspx; )
alert ( msg: "DCE2_EVENT__SMB_NB_LT_COM"; sid: 11; gid: 133; rev: 1; metadata: rule-type preproc, service netbios-ssn ; classtype: bad-unknown; reference:url,msdn.microsoft.com/en-us/library/cc201989.aspx; )
alert ( msg: "DCE2_EVENT__SMB_NB_LT_BCC"; sid: 12; gid: 133; rev: 1; metadata: rule-type preproc, service netbios-ssn ; classtype: bad-unknown; reference:url,msdn.microsoft.com/en-us/library/cc201989.aspx; )
alert ( msg: "DCE2_EVENT__SMB_NB_LT_DSIZE"; sid: 13; gid: 133; rev: 1; metadata: rule-type preproc, service netbios-ssn ; classtype: bad-unknown; reference:url,msdn.microsoft.com/en-us/library/cc201989.aspx; )
alert ( msg: "DCE2_EVENT__SMB_TDCNT_LT_DSIZE"; sid: 14; gid: 133; rev: 1; metadata: rule-type preproc, service netbios-ssn ; classtype: bad-unknown; reference:url,msdn.microsoft.com/en-us/library/cc201989.aspx; )
alert ( msg: "DCE2_EVENT__SMB_DSENT_GT_TDCNT"; sid: 15; gid: 133; rev: 1; metadata: rule-type preproc, service netbios-ssn ; classtype: bad-unknown; reference:url,msdn.microsoft.com/en-us/library/cc201989.aspx; )
alert ( msg: "DCE2_EVENT__SMB_BCC_LT_DSIZE"; sid: 16; gid: 133; rev: 1; metadata: rule-type preproc, service netbios-ssn ; classtype: bad-unknown; reference:url,msdn.microsoft.com/en-us/library/cc201989.aspx; )
alert ( msg: "DCE2_EVENT__SMB_INVALID_DSIZE"; sid: 17; gid: 133; rev: 1; metadata: rule-type preproc, service netbios-ssn ; classtype: bad-unknown; reference:url,msdn.microsoft.com/en-us/library/cc201989.aspx; )
alert ( msg: "DCE2_EVENT__SMB_EXCESSIVE_TREE_CONNECTS"; sid: 18; gid: 133; rev: 1; metadata: rule-type preproc, service netbios-ssn ; classtype: bad-unknown; reference:url,msdn.microsoft.com/en-us/library/cc201989.aspx; )
alert ( msg: "DCE2_EVENT__SMB_EXCESSIVE_READS"; sid: 19; gid: 133; rev: 1; metadata: rule-type preproc, service netbios-ssn ; classtype: bad-unknown; reference:url,msdn.microsoft.com/en-us/library/cc201989.aspx; )
alert ( msg: "DCE2_EVENT__SMB_EXCESSIVE_CHAINING"; sid: 20; gid: 133; rev: 1; metadata: rule-type preproc, service netbios-ssn ; classtype: bad-unknown; reference:url,msdn.microsoft.com/en-us/library/cc201989.aspx; )
alert ( msg: "DCE2_EVENT__SMB_MULT_CHAIN_SS"; sid: 21; gid: 133; rev: 1; metadata: rule-type preproc, service netbios-ssn ; classtype: bad-unknown; reference:url,msdn.microsoft.com/en-us/library/cc201989.aspx; )
alert ( msg: "DCE2_EVENT__SMB_MULT_CHAIN_TC"; sid: 22; gid: 133; rev: 1; metadata: rule-type preproc, service netbios-ssn ; classtype: bad-unknown; reference:url,msdn.microsoft.com/en-us/library/cc201989.aspx; )
alert ( msg: "DCE2_EVENT__SMB_CHAIN_SS_LOGOFF"; sid: 23; gid: 133; rev: 1; metadata: rule-type preproc, service netbios-ssn ; classtype: bad-unknown; reference:url,msdn.microsoft.com/en-us/library/cc201989.aspx; )
alert ( msg: "DCE2_EVENT__SMB_CHAIN_TC_TDIS"; sid: 24; gid: 133; rev: 1; metadata: rule-type preproc, service netbios-ssn ; classtype: bad-unknown; reference:url,msdn.microsoft.com/en-us/library/cc201989.aspx; )
alert ( msg: "DCE2_EVENT__SMB_CHAIN_OPEN_CLOSE"; sid: 25; gid: 133; rev: 1; metadata: rule-type preproc, service netbios-ssn ; classtype: bad-unknown; reference:url,msdn.microsoft.com/en-us/library/cc201989.aspx; )
alert ( msg: "DCE2_EVENT__SMB_INVALID_SHARE"; sid: 26; gid: 133; rev: 1; metadata: rule-type preproc, service netbios-ssn ; classtype: bad-unknown; reference:url,msdn.microsoft.com/en-us/library/cc201989.aspx; )
alert ( msg: "DCE2_EVENT__CO_BAD_MAJ_VERSION"; sid: 27; gid: 133; rev: 1; metadata: rule-type preproc, service dcerpc, service netbios-ssn ; classtype: bad-unknown; reference:url,msdn.microsoft.com/en-us/library/cc201989.aspx; )
alert ( msg: "DCE2_EVENT__CO_BAD_MIN_VERSION"; sid: 28; gid: 133; rev: 1; metadata: rule-type preproc, service dcerpc, service netbios-ssn ; classtype: bad-unknown; reference:url,msdn.microsoft.com/en-us/library/cc201989.aspx; )
alert ( msg: "DCE2_EVENT__CO_BAD_PDU_TYPE"; sid: 29; gid: 133; rev: 1; metadata: rule-type preproc, service dcerpc, service netbios-ssn ; classtype: bad-unknown; reference:url,msdn.microsoft.com/en-us/library/cc201989.aspx; )
alert ( msg: "DCE2_EVENT__CO_FLEN_LT_HDR"; sid: 30; gid: 133; rev: 1; metadata: rule-type preproc, service dcerpc, service netbios-ssn ; classtype: bad-unknown; reference:url,msdn.microsoft.com/en-us/library/cc201989.aspx; )
alert ( msg: "DCE2_EVENT__CO_FLEN_LT_SIZE"; sid: 31; gid: 133; rev: 1; metadata: rule-type preproc, service dcerpc, service netbios-ssn ; classtype: bad-unknown; reference:url,msdn.microsoft.com/en-us/library/cc201989.aspx; )
alert ( msg: "DCE2_EVENT__CO_ZERO_CTX_ITEMS"; sid: 32; gid: 133; rev: 1; metadata: rule-type preproc, service dcerpc, service netbios-ssn ; classtype: bad-unknown; reference:url,msdn.microsoft.com/en-us/library/cc201989.aspx; )
alert ( msg: "DCE2_EVENT__CO_ZERO_TSYNS"; sid: 33; gid: 133; rev: 1; metadata: rule-type preproc, service dcerpc, service netbios-ssn ; classtype: bad-unknown; reference:url,msdn.microsoft.com/en-us/library/cc201989.aspx; )
alert ( msg: "DCE2_EVENT__CO_FRAG_LT_MAX_XMIT_FRAG"; sid: 34; gid: 133; rev: 1; metadata: rule-type preproc, service dcerpc, service netbios-ssn ; classtype: bad-unknown; reference:url,msdn.microsoft.com/en-us/library/cc201989.aspx; )
alert ( msg: "DCE2_EVENT__CO_FRAG_GT_MAX_XMIT_FRAG"; sid: 35; gid: 133; rev: 1; metadata: rule-type preproc, service dcerpc, service netbios-ssn ; classtype: bad-unknown; reference:url,msdn.microsoft.com/en-us/library/cc201989.aspx; )
alert ( msg: "DCE2_EVENT__CO_ALTER_CHANGE_BYTE_ORDER"; sid: 36; gid: 133; rev: 1; metadata: rule-type preproc, service dcerpc, service netbios-ssn ; classtype: bad-unknown; reference:url,msdn.microsoft.com/en-us/library/cc201989.aspx; )
alert ( msg: "DCE2_EVENT__CO_FRAG_DIFF_CALL_ID"; sid: 37; gid: 133; rev: 1; metadata: rule-type preproc, service dcerpc, service netbios-ssn ; classtype: bad-unknown; reference:url,msdn.microsoft.com/en-us/library/cc201989.aspx; )
alert ( msg: "DCE2_EVENT__CO_FRAG_DIFF_OPNUM"; sid: 38; gid: 133; rev: 1; metadata: rule-type preproc, service dcerpc, service netbios-ssn ; classtype: bad-unknown; reference:url,msdn.microsoft.com/en-us/library/cc201989.aspx; )
alert ( msg: "DCE2_EVENT__CO_FRAG_DIFF_CTX_ID"; sid: 39; gid: 133; rev: 1; metadata: rule-type preproc, service dcerpc, service netbios-ssn ; classtype: bad-unknown; reference:url,msdn.microsoft.com/en-us/library/cc201989.aspx; )
alert ( msg: "DCE2_EVENT__CL_BAD_MAJ_VERSION"; sid: 40; gid: 133; rev: 1; metadata: rule-type preproc, service dcerpc ; classtype: bad-unknown; reference:url,msdn.microsoft.com/en-us/library/cc201989.aspx; )
alert ( msg: "DCE2_EVENT__CL_BAD_PDU_TYPE"; sid: 41; gid: 133; rev: 1; metadata: rule-type preproc, service dcerpc ; classtype: bad-unknown; reference:url,msdn.microsoft.com/en-us/library/cc201989.aspx; )
alert ( msg: "DCE2_EVENT__CL_DATA_LT_HDR"; sid: 42; gid: 133; rev: 1; metadata: rule-type preproc, service dcerpc ; classtype: bad-unknown; reference:url,msdn.microsoft.com/en-us/library/cc201989.aspx; )
alert ( msg: "DCE2_EVENT__CL_BAD_SEQ_NUM"; sid: 43; gid: 133; rev: 1; metadata: rule-type preproc, service dcerpc ; classtype: bad-unknown; reference:url,msdn.microsoft.com/en-us/library/cc201989.aspx; )
alert ( msg: "DCE2_EVENT__SMB_DCNT_ZERO"; sid: 48; gid: 133; rev: 1; metadata: rule-type preproc, service netbios-ssn ; classtype: bad-unknown; reference:url,msdn.microsoft.com/en-us/library/cc201989.aspx; )
alert ( msg: "DCE2_EVENT__SMB_DCNT_MISMATCH"; sid: 49; gid: 133; rev: 1; metadata: rule-type preproc, service netbios-ssn ; classtype: bad-unknown; reference:url,msdn.microsoft.com/en-us/library/cc201989.aspx; )
alert ( msg: "DCE2_EVENT__SMB_MAX_REQS_EXCEEDED"; sid: 50; gid: 133; rev: 1; metadata: rule-type preproc, service netbios-ssn ; classtype: bad-unknown; reference:url,msdn.microsoft.com/en-us/library/cc201989.aspx; )
alert ( msg: "DCE2_EVENT__SMB_REQS_SAME_MID"; sid: 51; gid: 133; rev: 1; metadata: rule-type preproc, service netbios-ssn ; classtype: bad-unknown; reference:url,msdn.microsoft.com/en-us/library/cc201989.aspx; )
alert ( msg: "DCE2_EVENT__SMB_DEPR_DIALECT_NEGOTIATED"; sid: 52; gid: 133; rev: 1; metadata: rule-type preproc, service netbios-ssn ; classtype: bad-unknown; reference:url,msdn.microsoft.com/en-us/library/cc201989.aspx; )
alert ( msg: "DCE2_EVENT__SMB_DEPR_COMMAND_USED"; sid: 53; gid: 133; rev: 1; metadata: rule-type preproc, service netbios-ssn ; classtype: bad-unknown; reference:url,msdn.microsoft.com/en-us/library/cc201989.aspx; )
alert ( msg: "DCE2_EVENT__SMB_UNUSUAL_COMMAND_USED"; sid: 54; gid: 133; rev: 1; metadata: rule-type preproc, service netbios-ssn ; classtype: bad-unknown; reference:url,msdn.microsoft.com/en-us/library/cc201989.aspx; )
alert ( msg: "DCE2_EVENT__SMB_INVALID_SETUP_COUNT"; sid: 55; gid: 133; rev: 1; metadata: rule-type preproc, service netbios-ssn ; classtype: bad-unknown; reference:url,msdn.microsoft.com/en-us/library/cc201989.aspx; )
alert ( msg: "DCE2_EVENT__SMB_MULTIPLE_NEGOTIATIONS"; sid: 56; gid: 133; rev: 1; metadata: rule-type preproc, service netbios-ssn ; classtype: bad-unknown; reference:url,msdn.microsoft.com/en-us/library/cc201989.aspx; )
alert ( msg: "DCE2_EVENT__SMB_EVASIVE_FILE_ATTRS"; sid: 57; gid: 133; rev: 1; metadata: rule-type preproc, service netbios-ssn ; classtype: bad-unknown; reference:url,msdn.microsoft.com/en-us/library/cc201989.aspx; )
alert ( msg: "PPM_EVENT_RULE_TREE_DISABLED"; sid: 1; gid: 134; rev: 1; metadata: rule-type preproc ; classtype: not-suspicious; )
alert ( msg: "PPM_EVENT_RULE_TREE_ENABLED"; sid: 2; gid: 134; rev: 1; metadata: rule-type preproc ; classtype: not-suspicious; )
alert ( msg: "PPM_EVENT_PACKET_ABORTED"; sid: 3; gid: 134; rev: 1; metadata: rule-type preproc ; classtype: not-suspicious; )
alert ( msg: "INTERNAL_EVENT_SYN_RECEIVED"; sid: 1; gid: 135; rev: 1; metadata: rule-type preproc ; classtype:tcp-connection; )
alert ( msg: "INTERNAL_EVENT_SESSION_ADD"; sid: 2; gid: 135; rev: 1; metadata: rule-type preproc ; classtype:tcp-connection; )
alert ( msg: "INTERNAL_EVENT_SESSION_DEL"; sid: 3; gid: 135; rev: 1; metadata: rule-type preproc ; classtype:tcp-connection; )
alert ( msg: "REPUTATION_EVENT_BLACKLIST"; sid: 1; gid: 136; rev: 1; metadata: rule-type preproc ; classtype:bad-unknown; )
alert ( msg: "REPUTATION_EVENT_WHITELIST"; sid: 2; gid: 136; rev: 1; metadata: rule-type preproc ; classtype:bad-unknown; )
alert ( msg: "SSL_INVALID_CLIENT_HELLO"; sid: 1; gid: 137; rev: 2; metadata: rule-type preproc ; classtype:bad-unknown; reference:url,technet.microsoft.com/en-us/security/bulletin/ms04-011; reference:cve,2004-0120; reference:bugtraq,10115; )
alert ( msg: "SSL_INVALID_SERVER_HELLO"; sid: 2; gid: 137; rev: 2; metadata: rule-type preproc ; classtype:bad-unknown; )
alert ( msg: "SDF_COMBO_ALERT"; sid: 1; gid: 139; rev: 1; metadata: rule-type preproc ; classtype:sdf; )
alert ( msg: "SIP_EVENT_MAX_SESSIONS"; sid: 1; gid: 140; rev: 1; metadata: rule-type preproc ; classtype:bad-unknown; )
alert ( msg: "SIP_EVENT_EMPTY_REQUEST_URI"; sid: 2; gid: 140; rev: 1; metadata: rule-type preproc ; classtype:bad-unknown; reference:cve,2007-1306; )
alert ( msg: "SIP_EVENT_BAD_URI"; sid: 3; gid: 140; rev: 1; metadata: rule-type preproc ; classtype:bad-unknown; )
alert ( msg: "SIP_EVENT_EMPTY_CALL_ID"; sid: 4; gid: 140; rev: 1; metadata: rule-type preproc ; classtype:bad-unknown; )
alert ( msg: "SIP_EVENT_BAD_CALL_ID"; sid: 5; gid: 140; rev: 1; metadata: rule-type preproc ; classtype:bad-unknown; )
alert ( msg: "SIP_EVENT_BAD_CSEQ_NUM"; sid: 6; gid: 140; rev: 1; metadata: rule-type preproc ; classtype:bad-unknown; )
alert ( msg: "SIP_EVENT_BAD_CSEQ_NAME"; sid: 7; gid: 140; rev: 1; metadata: rule-type preproc ; classtype:bad-unknown; reference:cve,2006-3524; )
alert ( msg: "SIP_EVENT_EMPTY_FROM"; sid: 8; gid: 140; rev: 1; metadata: rule-type preproc ; classtype:bad-unknown; )
alert ( msg: "SIP_EVENT_BAD_FROM"; sid: 9; gid: 140; rev: 1; metadata: rule-type preproc ; classtype:bad-unknown; )
alert ( msg: "SIP_EVENT_EMPTY_TO"; sid: 10; gid: 140; rev: 1; metadata: rule-type preproc ; classtype:bad-unknown; )
alert ( msg: "SIP_EVENT_BAD_TO"; sid: 11; gid: 140; rev: 1; metadata: rule-type preproc ; classtype:bad-unknown; )
alert ( msg: "SIP_EVENT_EMPTY_VIA"; sid: 12; gid: 140; rev: 1; metadata: rule-type preproc ; classtype:bad-unknown; reference:bugtraq,25446; )
alert ( msg: "SIP_EVENT_BAD_VIA"; sid: 13; gid: 140; rev: 1; metadata: rule-type preproc ; classtype:bad-unknown; )
alert ( msg: "SIP_EVENT_EMPTY_CONTACT"; sid: 14; gid: 140; rev: 1; metadata: rule-type preproc ; classtype:bad-unknown; )
alert ( msg: "SIP_EVENT_BAD_CONTACT"; sid: 15; gid: 140; rev: 1; metadata: rule-type preproc ; classtype:bad-unknown; )
alert ( msg: "SIP_EVENT_BAD_CONTENT_LEN"; sid: 16; gid: 140; rev: 1; metadata: rule-type preproc ; classtype:bad-unknown; )
alert ( msg: "SIP_EVENT_MULTI_MSGS"; sid: 17; gid: 140; rev: 1; metadata: rule-type preproc ; classtype:bad-unknown; )
alert ( msg: "SIP_EVENT_MISMATCH_CONTENT_LEN"; sid: 18; gid: 140; rev: 1; metadata: rule-type preproc ; classtype:bad-unknown; )
alert ( msg: "SIP_EVENT_INVALID_CSEQ_NAME"; sid: 19; gid: 140; rev: 1; metadata: rule-type preproc ; classtype:bad-unknown; reference:cve,2006-3524; )
alert ( msg: "SIP_EVENT_AUTH_INVITE_REPLAY_ATTACK"; sid: 20; gid: 140; rev: 1; metadata: rule-type preproc ; classtype:bad-unknown; )
alert ( msg: "SIP_EVENT_AUTH_INVITE_DIFF_SESSION"; sid: 21; gid: 140; rev: 1; metadata: rule-type preproc ; classtype:bad-unknown; )
alert ( msg: "SIP_EVENT_BAD_STATUS_CODE"; sid: 22; gid: 140; rev: 1; metadata: rule-type preproc ; classtype:bad-unknown; )
alert ( msg: "SIP_EVENT_EMPTY_CONTENT_TYPE"; sid: 23; gid: 140; rev: 1; metadata: rule-type preproc ; classtype:bad-unknown; reference:bugtraq,25300; )
alert ( msg: "SIP_EVENT_INVALID_VERSION"; sid: 24; gid: 140; rev: 1; metadata: rule-type preproc ; classtype:bad-unknown; )
alert ( msg: "SIP_EVENT_MISMATCH_METHOD"; sid: 25; gid: 140; rev: 1; metadata: rule-type preproc ; classtype:bad-unknown; )
alert ( msg: "SIP_EVENT_UNKOWN_METHOD"; sid: 26; gid: 140; rev: 1; metadata: rule-type preproc ; classtype:bad-unknown; )
alert ( msg: "SIP_EVENT_MAX_DIALOGS_IN_A_SESSION"; sid: 27; gid: 140; rev: 1; metadata: rule-type preproc ; classtype:bad-unknown; )
alert ( msg: "IMAP_UNKNOWN_CMD"; sid: 1; gid: 141; rev: 1; metadata: rule-type preproc, service pop ; classtype:protocol-command-decode; )
alert ( msg: "IMAP_UNKNOWN_RESP"; sid: 2; gid: 141; rev: 1; metadata: rule-type preproc, service pop ; classtype:protocol-command-decode; )
alert ( msg: "IMAP_MEMCAP_EXCEEDED"; sid: 3; gid: 141; rev: 1; metadata: rule-type preproc, service pop ; classtype:unknown; )
alert ( msg: "IMAP_B64_DECODING_FAILED"; sid: 4; gid: 141; rev: 1; metadata: rule-type preproc, service pop ; classtype:unknown; )
alert ( msg: "IMAP_QP_DECODING_FAILED"; sid: 5; gid: 141; rev: 1; metadata: rule-type preproc, service pop ; classtype:unknown; )
#alert ( msg: "IMAP_BITENC_DECODING_FAILED"; sid: 6; gid: 141; rev: 1; metadata: rule-type preproc, service pop ; classtype:unknown; )
alert ( msg: "IMAP_UU_DECODING_FAILED"; sid: 7; gid: 141; rev: 1; metadata: rule-type preproc, service pop ; classtype:unknown; )
alert ( msg: "POP_UNKNOWN_CMD"; sid: 1; gid: 142; rev: 1; metadata: rule-type preproc, service pop ; classtype:protocol-command-decode; )
alert ( msg: "POP_UNKNOWN_RESP"; sid: 2; gid: 142; rev: 1; metadata: rule-type preproc, service pop ; classtype:protocol-command-decode; )
alert ( msg: "POP_MEMCAP_EXCEEDED"; sid: 3; gid: 142; rev: 1; metadata: rule-type preproc, service pop ; classtype:unknown; )
alert ( msg: "POP_B64_DECODING_FAILED"; sid: 4; gid: 142; rev: 1; metadata: rule-type preproc, service pop ; classtype:unknown; )
alert ( msg: "POP_QP_DECODING_FAILED"; sid: 5; gid: 142; rev: 1; metadata: rule-type preproc, service pop ; classtype:unknown; )
#alert ( msg: "POP_BITENC_DECODING_FAILED"; sid: 6; gid: 142; rev: 1; metadata: rule-type preproc, service pop ; classtype:unknown; )
alert ( msg: "POP_UU_DECODING_FAILED"; sid: 7; gid: 142; rev: 1; metadata: rule-type preproc, service pop ; classtype:unknown; )
alert ( msg: "GTP_EVENT_BAD_MSG_LEN"; sid: 1; gid: 143; rev: 1; metadata: rule-type preproc; classtype:bad-unknown; )
alert ( msg: "GTP_EVENT_BAD_IE_LEN"; sid: 2; gid: 143; rev: 1; metadata: rule-type preproc; classtype:bad-unknown; )
alert ( msg: "GTP_EVENT_OUT_OF_ORDER_IE"; sid: 3; gid: 143; rev: 1; metadata: rule-type preproc; classtype:bad-unknown; )
alert ( msg: "MODBUS_BAD_LENGTH"; sid:1; gid: 144; rev: 1; metadata: rule-type preproc; classtype:protocol-command-decode; )
alert ( msg: "MODBUS_BAD_PROTO_ID"; sid:2; gid: 144; rev: 1; metadata: rule-type preproc; classtype:protocol-command-decode; )
alert ( msg: "MODBUS_RESERVED_FUNCTION"; sid:3; gid: 144; rev: 1; metadata: rule-type preproc; classtype:protocol-command-decode; )
alert ( msg: "DNP3_BAD_CRC"; sid:1; gid:145; rev: 1; metadata: rule-type preproc; classtype:protocol-command-decode; )
alert ( msg: "DNP3_DROPPED_FRAME"; sid:2; gid:145; rev: 1; metadata: rule-type preproc; classtype:protocol-command-decode; )
alert ( msg: "DNP3_DROPPED_SEGMENT"; sid:3; gid:145; rev: 1; metadata: rule-type preproc; classtype:protocol-command-decode; )
alert ( msg: "DNP3_REASSEMBLY_BUFFER_CLEARED"; sid:4; gid:145; rev: 1; metadata: rule-type preproc; classtype:protocol-command-decode; )
alert ( msg: "DNP3_RESERVED_ADDRESS"; sid:5; gid:145; rev: 1; metadata: rule-type preproc; classtype:protocol-command-decode; )
alert ( msg: "DNP3_RESERVED_FUNCTION"; sid:6; gid:145; rev: 1; metadata: rule-type preproc; classtype:protocol-command-decode; )
snort-2.9.6.0/preproc_rules/Makefile.am 0000644 0000000 0000000 00000000155 11326435735 014654 0000000 0000000 AUTOMAKE_OPTIONS=foreign no-dependencies
EXTRA_DIST = preprocessor.rules decoder.rules sensitive-data.rules
snort-2.9.6.0/preproc_rules/Makefile.in 0000644 0000000 0000000 00000030024 12260606517 014657 0000000 0000000 # Makefile.in generated by automake 1.13.4 from Makefile.am.
# @configure_input@
# Copyright (C) 1994-2013 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.
@SET_MAKE@
VPATH = @srcdir@
am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
am__make_running_with_option = \
case $${target_option-} in \
?) ;; \
*) echo "am__make_running_with_option: internal error: invalid" \
"target option '$${target_option-}' specified" >&2; \
exit 1;; \
esac; \
has_opt=no; \
sane_makeflags=$$MAKEFLAGS; \
if $(am__is_gnu_make); then \
sane_makeflags=$$MFLAGS; \
else \
case $$MAKEFLAGS in \
*\\[\ \ ]*) \
bs=\\; \
sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
| sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
esac; \
fi; \
skip_next=no; \
strip_trailopt () \
{ \
flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
}; \
for flg in $$sane_makeflags; do \
test $$skip_next = yes && { skip_next=no; continue; }; \
case $$flg in \
*=*|--*) continue;; \
-*I) strip_trailopt 'I'; skip_next=yes;; \
-*I?*) strip_trailopt 'I';; \
-*O) strip_trailopt 'O'; skip_next=yes;; \
-*O?*) strip_trailopt 'O';; \
-*l) strip_trailopt 'l'; skip_next=yes;; \
-*l?*) strip_trailopt 'l';; \
-[dEDm]) skip_next=yes;; \
-[JT]) skip_next=yes;; \
esac; \
case $$flg in \
*$$target_option*) has_opt=yes; break;; \
esac; \
done; \
test $$has_opt = yes
am__make_dryrun = (target_option=n; $(am__make_running_with_option))
am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
pkgdatadir = $(datadir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
pkglibexecdir = $(libexecdir)/@PACKAGE@
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
install_sh_DATA = $(install_sh) -c -m 644
install_sh_PROGRAM = $(install_sh) -c
install_sh_SCRIPT = $(install_sh) -c
INSTALL_HEADER = $(INSTALL_DATA)
transform = $(program_transform_name)
NORMAL_INSTALL = :
PRE_INSTALL = :
POST_INSTALL = :
NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
subdir = preproc_rules
DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/configure.in
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
mkinstalldirs = $(install_sh) -d
CONFIG_HEADER = $(top_builddir)/config.h
CONFIG_CLEAN_FILES =
CONFIG_CLEAN_VPATH_FILES =
AM_V_P = $(am__v_P_@AM_V@)
am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
am__v_P_0 = false
am__v_P_1 = :
AM_V_GEN = $(am__v_GEN_@AM_V@)
am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
am__v_GEN_0 = @echo " GEN " $@;
am__v_GEN_1 =
AM_V_at = $(am__v_at_@AM_V@)
am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
am__v_at_0 = @
am__v_at_1 =
depcomp =
am__depfiles_maybe =
SOURCES =
DIST_SOURCES =
am__can_run_installinfo = \
case $$AM_UPDATE_INFO_DIR in \
n|no|NO) false;; \
*) (install-info --version) >/dev/null 2>&1;; \
esac
am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
ACLOCAL = @ACLOCAL@
AMTAR = @AMTAR@
AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
AR = @AR@
AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
CC = @CC@
CCDEPMODE = @CCDEPMODE@
CCONFIGFLAGS = @CCONFIGFLAGS@
CFLAGS = @CFLAGS@
CONFIGFLAGS = @CONFIGFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
DLLTOOL = @DLLTOOL@
DSYMUTIL = @DSYMUTIL@
DUMPBIN = @DUMPBIN@
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
FGREP = @FGREP@
GREP = @GREP@
ICONFIGFLAGS = @ICONFIGFLAGS@
INCLUDES = @INCLUDES@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
LD = @LD@
LDFLAGS = @LDFLAGS@
LEX = @LEX@
LIBOBJS = @LIBOBJS@
LIBS = @LIBS@
LIBTOOL = @LIBTOOL@
LIPO = @LIPO@
LN_S = @LN_S@
LTLIBOBJS = @LTLIBOBJS@
MAINT = @MAINT@
MAKEINFO = @MAKEINFO@
MANIFEST_TOOL = @MANIFEST_TOOL@
MKDIR_P = @MKDIR_P@
NM = @NM@
NMEDIT = @NMEDIT@
OBJDUMP = @OBJDUMP@
OBJEXT = @OBJEXT@
OTOOL = @OTOOL@
OTOOL64 = @OTOOL64@
PACKAGE = @PACKAGE@
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
PACKAGE_NAME = @PACKAGE_NAME@
PACKAGE_STRING = @PACKAGE_STRING@
PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_URL = @PACKAGE_URL@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
PKG_CONFIG = @PKG_CONFIG@
PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
RANLIB = @RANLIB@
RAZORBACK_CFLAGS = @RAZORBACK_CFLAGS@
RAZORBACK_LIBS = @RAZORBACK_LIBS@
SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SIGNAL_SNORT_DUMP_STATS = @SIGNAL_SNORT_DUMP_STATS@
SIGNAL_SNORT_READ_ATTR_TBL = @SIGNAL_SNORT_READ_ATTR_TBL@
SIGNAL_SNORT_RELOAD = @SIGNAL_SNORT_RELOAD@
SIGNAL_SNORT_ROTATE_STATS = @SIGNAL_SNORT_ROTATE_STATS@
STRIP = @STRIP@
VERSION = @VERSION@
XCCFLAGS = @XCCFLAGS@
YACC = @YACC@
abs_builddir = @abs_builddir@
abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
abs_top_srcdir = @abs_top_srcdir@
ac_ct_AR = @ac_ct_AR@
ac_ct_CC = @ac_ct_CC@
ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
am__tar = @am__tar@
am__untar = @am__untar@
bindir = @bindir@
build = @build@
build_alias = @build_alias@
build_cpu = @build_cpu@
build_os = @build_os@
build_vendor = @build_vendor@
builddir = @builddir@
datadir = @datadir@
datarootdir = @datarootdir@
docdir = @docdir@
dvidir = @dvidir@
exec_prefix = @exec_prefix@
extra_incl = @extra_incl@
host = @host@
host_alias = @host_alias@
host_cpu = @host_cpu@
host_os = @host_os@
host_vendor = @host_vendor@
htmldir = @htmldir@
includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
libdir = @libdir@
libexecdir = @libexecdir@
localedir = @localedir@
localstatedir = @localstatedir@
mandir = @mandir@
mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
sysconfdir = @sysconfdir@
target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
AUTOMAKE_OPTIONS = foreign no-dependencies
EXTRA_DIST = preprocessor.rules decoder.rules sensitive-data.rules
all: all-am
.SUFFIXES:
$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
@for dep in $?; do \
case '$(am__configure_deps)' in \
*$$dep*) \
( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
&& { if test -f $@; then exit 0; else break; fi; }; \
exit 1;; \
esac; \
done; \
echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign preproc_rules/Makefile'; \
$(am__cd) $(top_srcdir) && \
$(AUTOMAKE) --foreign preproc_rules/Makefile
.PRECIOUS: Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \
*config.status*) \
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
*) \
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
esac;
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(am__aclocal_m4_deps):
mostlyclean-libtool:
-rm -f *.lo
clean-libtool:
-rm -rf .libs _libs
tags TAGS:
ctags CTAGS:
cscope cscopelist:
distdir: $(DISTFILES)
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
list='$(DISTFILES)'; \
dist_files=`for file in $$list; do echo $$file; done | \
sed -e "s|^$$srcdirstrip/||;t" \
-e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
case $$dist_files in \
*/*) $(MKDIR_P) `echo "$$dist_files" | \
sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
sort -u` ;; \
esac; \
for file in $$dist_files; do \
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
if test -d $$d/$$file; then \
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
if test -d "$(distdir)/$$file"; then \
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
fi; \
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
fi; \
cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
else \
test -f "$(distdir)/$$file" \
|| cp -p $$d/$$file "$(distdir)/$$file" \
|| exit 1; \
fi; \
done
check-am: all-am
check: check-am
all-am: Makefile
installdirs:
install: install-am
install-exec: install-exec-am
install-data: install-data-am
uninstall: uninstall-am
install-am: all-am
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
installcheck: installcheck-am
install-strip:
if test -z '$(STRIP)'; then \
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
install; \
else \
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
"INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
fi
mostlyclean-generic:
clean-generic:
distclean-generic:
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
maintainer-clean-generic:
@echo "This command is intended for maintainers to use"
@echo "it deletes files that may require special tools to rebuild."
clean: clean-am
clean-am: clean-generic clean-libtool mostlyclean-am
distclean: distclean-am
-rm -f Makefile
distclean-am: clean-am distclean-generic
dvi: dvi-am
dvi-am:
html: html-am
html-am:
info: info-am
info-am:
install-data-am:
install-dvi: install-dvi-am
install-dvi-am:
install-exec-am:
install-html: install-html-am
install-html-am:
install-info: install-info-am
install-info-am:
install-man:
install-pdf: install-pdf-am
install-pdf-am:
install-ps: install-ps-am
install-ps-am:
installcheck-am:
maintainer-clean: maintainer-clean-am
-rm -f Makefile
maintainer-clean-am: distclean-am maintainer-clean-generic
mostlyclean: mostlyclean-am
mostlyclean-am: mostlyclean-generic mostlyclean-libtool
pdf: pdf-am
pdf-am:
ps: ps-am
ps-am:
uninstall-am:
.MAKE: install-am install-strip
.PHONY: all all-am check check-am clean clean-generic clean-libtool \
cscopelist-am ctags-am distclean distclean-generic \
distclean-libtool distdir dvi dvi-am html html-am info info-am \
install install-am install-data install-data-am install-dvi \
install-dvi-am install-exec install-exec-am install-html \
install-html-am install-info install-info-am install-man \
install-pdf install-pdf-am install-ps install-ps-am \
install-strip installcheck installcheck-am installdirs \
maintainer-clean maintainer-clean-generic mostlyclean \
mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
tags-am uninstall uninstall-am
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:
snort-2.9.6.0/m4/ 0000755 0000000 0000000 00000000000 12260606570 010326 5 0000000 0000000 snort-2.9.6.0/m4/libprelude.m4 0000644 0000000 0000000 00000016652 10234500325 012637 0000000 0000000 dnl Autoconf macros for libprelude
dnl $id$
# Modified for LIBPRELUDE -- Yoann Vandoorselaere
# Modified for LIBGNUTLS -- nmav
# Configure paths for LIBGCRYPT
# Shamelessly stolen from the one of XDELTA by Owen Taylor
# Werner Koch 99-12-09
dnl AM_PATH_LIBPRELUDE([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND ]]])
dnl Test for libprelude, and define LIBPRELUDE_PREFIX, LIBPRELUDE_CFLAGS, LIBPRELUDE_PTHREAD_CFLAGS,
dnl LIBPRELUDE_LDFLAGS, and LIBPRELUDE_LIBS
dnl
AC_DEFUN([AM_PATH_LIBPRELUDE],
[dnl
dnl Get the cflags and libraries from the libprelude-config script
dnl
AC_ARG_WITH(libprelude-prefix,
[ --with-libprelude-prefix=PFX Prefix where libprelude is installed (optional)],
libprelude_config_prefix="$withval", libprelude_config_prefix="")
if test x$libprelude_config_prefix != x ; then
if test x${LIBPRELUDE_CONFIG+set} != xset ; then
LIBPRELUDE_CONFIG=$libprelude_config_prefix/bin/libprelude-config
fi
fi
AC_PATH_PROG(LIBPRELUDE_CONFIG, libprelude-config, no)
min_libprelude_version=ifelse([$1], ,0.1.0,$1)
AC_MSG_CHECKING(for libprelude - version >= $min_libprelude_version)
no_libprelude=""
if test "$LIBPRELUDE_CONFIG" = "no" ; then
no_libprelude=yes
else
LIBPRELUDE_CFLAGS=`$LIBPRELUDE_CONFIG $libprelude_config_args --cflags`
LIBPRELUDE_PTHREAD_CFLAGS=`$LIBPRELUDE_CONFIG $libprelude_config_args --pthread-cflags`
LIBPRELUDE_LDFLAGS=`$LIBPRELUDE_CONFIG $libprelude_config_args --ldflags`
LIBPRELUDE_LIBS=`$LIBPRELUDE_CONFIG $libprelude_config_args --libs`
LIBPRELUDE_PREFIX=`$LIBPRELUDE_CONFIG $libprelude_config_args --prefix`
LIBPRELUDE_CONFIG_PREFIX=`$LIBPRELUDE_CONFIG $libprelude_config_args --config-prefix`
libprelude_config_version=`$LIBPRELUDE_CONFIG $libprelude_config_args --version`
ac_save_CFLAGS="$CFLAGS"
ac_save_LDFLAGS="$LDFLAGS"
ac_save_LIBS="$LIBS"
CFLAGS="$CFLAGS $LIBPRELUDE_CFLAGS"
LDFLAGS="$LDFLAGS $LIBPRELUDE_LDFLAGS"
LIBS="$LIBS $LIBPRELUDE_LIBS"
dnl
dnl Now check if the installed libprelude is sufficiently new. Also sanity
dnl checks the results of libprelude-config to some extent
dnl
rm -f conf.libpreludetest
AC_TRY_RUN([
#include
#include
#include
#include
int
main ()
{
system ("touch conf.libpreludetest");
if( strcmp( prelude_check_version(NULL), "$libprelude_config_version" ) )
{
printf("\n*** 'libprelude-config --version' returned %s, but LIBPRELUDE (%s)\n",
"$libprelude_config_version", prelude_check_version(NULL) );
printf("*** was found! If libprelude-config was correct, then it is best\n");
printf("*** to remove the old version of LIBPRELUDE. You may also be able to fix the error\n");
printf("*** by modifying your LD_LIBRARY_PATH enviroment variable, or by editing\n");
printf("*** /etc/ld.so.conf. Make sure you have run ldconfig if that is\n");
printf("*** required on your system.\n");
printf("*** If libprelude-config was wrong, set the environment variable LIBPRELUDE_CONFIG\n");
printf("*** to point to the correct copy of libprelude-config, and remove the file config.cache\n");
printf("*** before re-running configure\n");
}
else if ( strcmp(prelude_check_version(NULL), LIBPRELUDE_VERSION ) )
{
printf("\n*** LIBPRELUDE header file (version %s) does not match\n", LIBPRELUDE_VERSION);
printf("*** library (version %s)\n", prelude_check_version(NULL) );
}
else
{
if ( prelude_check_version( "$min_libprelude_version" ) )
{
return 0;
}
else
{
printf("no\n*** An old version of LIBPRELUDE (%s) was found.\n",
prelude_check_version(NULL) );
printf("*** You need a version of LIBPRELUDE newer than %s. The latest version of\n",
"$min_libprelude_version" );
printf("*** LIBPRELUDE is always available from http://www.prelude-ids.org/download/releases.\n");
printf("*** \n");
printf("*** If you have already installed a sufficiently new version, this error\n");
printf("*** probably means that the wrong copy of the libprelude-config shell script is\n");
printf("*** being found. The easiest way to fix this is to remove the old version\n");
printf("*** of LIBPRELUDE, but you can also set the LIBPRELUDE_CONFIG environment to point to the\n");
printf("*** correct copy of libprelude-config. (In this case, you will have to\n");
printf("*** modify your LD_LIBRARY_PATH enviroment variable, or edit /etc/ld.so.conf\n");
printf("*** so that the correct libraries are found at run-time))\n");
}
}
return 1;
}
],, no_libprelude=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"])
CFLAGS="$ac_save_CFLAGS"
LIBS="$ac_save_LIBS"
LDFLAGS="$ac_save_LDFLAGS"
fi
if test "x$no_libprelude" = x ; then
AC_MSG_RESULT(yes)
ifelse([$2], , :, [$2])
else
if test -f conf.libpreludetest ; then
:
else
AC_MSG_RESULT(no)
fi
if test "$LIBPRELUDE_CONFIG" = "no" ; then
echo "*** The libprelude-config script installed by LIBPRELUDE could not be found"
echo "*** If LIBPRELUDE was installed in PREFIX, make sure PREFIX/bin is in"
echo "*** your path, or set the LIBPRELUDE_CONFIG environment variable to the"
echo "*** full path to libprelude-config."
else
if test -f conf.libpreludetest ; then
:
else
echo "*** Could not run libprelude test program, checking why..."
CFLAGS="$CFLAGS $LIBPRELUDE_CFLAGS"
LDFLAGS="$LDFLAGS $LIBPRELUDE_LDFLAGS"
LIBS="$LIBS $LIBPRELUDE_LIBS"
AC_TRY_LINK([
#include
#include
#include
#include
], [ return !!prelude_check_version(NULL); ],
[ echo "*** The test program compiled, but did not run. This usually means"
echo "*** that the run-time linker is not finding LIBPRELUDE or finding the wrong"
echo "*** version of LIBPRELUDE. If it is not finding LIBPRELUDE, you'll need to set your"
echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point"
echo "*** to the installed location Also, make sure you have run ldconfig if that"
echo "*** is required on your system"
echo "***"
echo "*** If you have an old version installed, it is best to remove it, although"
echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH"
echo "***" ],
[ echo "*** The test program failed to compile or link. See the file config.log for the"
echo "*** exact error that occured. This usually means LIBPRELUDE was incorrectly installed"
echo "*** or that you have moved LIBPRELUDE since it was installed. In the latter case, you"
echo "*** may want to edit the libprelude-config script: $LIBPRELUDE_CONFIG" ])
CFLAGS="$ac_save_CFLAGS"
LDFLAGS="$ac_save_LDFLAGS"
LIBS="$ac_save_LIBS"
fi
fi
LIBPRELUDE_CFLAGS=""
LIBPRELUDE_LDFLAGS=""
LIBPRELUDE_LIBS=""
ifelse([$3], , :, [$3])
fi
rm -f conf.libpreludetest
AC_SUBST(LIBPRELUDE_CFLAGS)
AC_SUBST(LIBPRELUDE_PTHREAD_CFLAGS)
AC_SUBST(LIBPRELUDE_LDFLAGS)
AC_SUBST(LIBPRELUDE_LIBS)
AC_SUBST(LIBPRELUDE_PREFIX)
AC_SUBST(LIBPRELUDE_CONFIG_PREFIX)
])
dnl *-*wedit:notab*-* Please keep this as the last line.
snort-2.9.6.0/m4/Makefile.am 0000644 0000000 0000000 00000000133 10234500325 012265 0000000 0000000 ## $Id$
AUTOMAKE_OPTIONS=foreign no-dependencies
EXTRA_DIST = Makefile.am \
libprelude.m4
snort-2.9.6.0/m4/Makefile.in 0000644 0000000 0000000 00000027732 12260606517 012327 0000000 0000000 # Makefile.in generated by automake 1.13.4 from Makefile.am.
# @configure_input@
# Copyright (C) 1994-2013 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.
@SET_MAKE@
VPATH = @srcdir@
am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
am__make_running_with_option = \
case $${target_option-} in \
?) ;; \
*) echo "am__make_running_with_option: internal error: invalid" \
"target option '$${target_option-}' specified" >&2; \
exit 1;; \
esac; \
has_opt=no; \
sane_makeflags=$$MAKEFLAGS; \
if $(am__is_gnu_make); then \
sane_makeflags=$$MFLAGS; \
else \
case $$MAKEFLAGS in \
*\\[\ \ ]*) \
bs=\\; \
sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
| sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
esac; \
fi; \
skip_next=no; \
strip_trailopt () \
{ \
flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
}; \
for flg in $$sane_makeflags; do \
test $$skip_next = yes && { skip_next=no; continue; }; \
case $$flg in \
*=*|--*) continue;; \
-*I) strip_trailopt 'I'; skip_next=yes;; \
-*I?*) strip_trailopt 'I';; \
-*O) strip_trailopt 'O'; skip_next=yes;; \
-*O?*) strip_trailopt 'O';; \
-*l) strip_trailopt 'l'; skip_next=yes;; \
-*l?*) strip_trailopt 'l';; \
-[dEDm]) skip_next=yes;; \
-[JT]) skip_next=yes;; \
esac; \
case $$flg in \
*$$target_option*) has_opt=yes; break;; \
esac; \
done; \
test $$has_opt = yes
am__make_dryrun = (target_option=n; $(am__make_running_with_option))
am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
pkgdatadir = $(datadir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
pkglibexecdir = $(libexecdir)/@PACKAGE@
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
install_sh_DATA = $(install_sh) -c -m 644
install_sh_PROGRAM = $(install_sh) -c
install_sh_SCRIPT = $(install_sh) -c
INSTALL_HEADER = $(INSTALL_DATA)
transform = $(program_transform_name)
NORMAL_INSTALL = :
PRE_INSTALL = :
POST_INSTALL = :
NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
subdir = m4
DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/configure.in
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
mkinstalldirs = $(install_sh) -d
CONFIG_HEADER = $(top_builddir)/config.h
CONFIG_CLEAN_FILES =
CONFIG_CLEAN_VPATH_FILES =
AM_V_P = $(am__v_P_@AM_V@)
am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
am__v_P_0 = false
am__v_P_1 = :
AM_V_GEN = $(am__v_GEN_@AM_V@)
am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
am__v_GEN_0 = @echo " GEN " $@;
am__v_GEN_1 =
AM_V_at = $(am__v_at_@AM_V@)
am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
am__v_at_0 = @
am__v_at_1 =
depcomp =
am__depfiles_maybe =
SOURCES =
DIST_SOURCES =
am__can_run_installinfo = \
case $$AM_UPDATE_INFO_DIR in \
n|no|NO) false;; \
*) (install-info --version) >/dev/null 2>&1;; \
esac
am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
ACLOCAL = @ACLOCAL@
AMTAR = @AMTAR@
AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
AR = @AR@
AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
CC = @CC@
CCDEPMODE = @CCDEPMODE@
CCONFIGFLAGS = @CCONFIGFLAGS@
CFLAGS = @CFLAGS@
CONFIGFLAGS = @CONFIGFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
DLLTOOL = @DLLTOOL@
DSYMUTIL = @DSYMUTIL@
DUMPBIN = @DUMPBIN@
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
FGREP = @FGREP@
GREP = @GREP@
ICONFIGFLAGS = @ICONFIGFLAGS@
INCLUDES = @INCLUDES@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
LD = @LD@
LDFLAGS = @LDFLAGS@
LEX = @LEX@
LIBOBJS = @LIBOBJS@
LIBS = @LIBS@
LIBTOOL = @LIBTOOL@
LIPO = @LIPO@
LN_S = @LN_S@
LTLIBOBJS = @LTLIBOBJS@
MAINT = @MAINT@
MAKEINFO = @MAKEINFO@
MANIFEST_TOOL = @MANIFEST_TOOL@
MKDIR_P = @MKDIR_P@
NM = @NM@
NMEDIT = @NMEDIT@
OBJDUMP = @OBJDUMP@
OBJEXT = @OBJEXT@
OTOOL = @OTOOL@
OTOOL64 = @OTOOL64@
PACKAGE = @PACKAGE@
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
PACKAGE_NAME = @PACKAGE_NAME@
PACKAGE_STRING = @PACKAGE_STRING@
PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_URL = @PACKAGE_URL@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
PKG_CONFIG = @PKG_CONFIG@
PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
RANLIB = @RANLIB@
RAZORBACK_CFLAGS = @RAZORBACK_CFLAGS@
RAZORBACK_LIBS = @RAZORBACK_LIBS@
SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SIGNAL_SNORT_DUMP_STATS = @SIGNAL_SNORT_DUMP_STATS@
SIGNAL_SNORT_READ_ATTR_TBL = @SIGNAL_SNORT_READ_ATTR_TBL@
SIGNAL_SNORT_RELOAD = @SIGNAL_SNORT_RELOAD@
SIGNAL_SNORT_ROTATE_STATS = @SIGNAL_SNORT_ROTATE_STATS@
STRIP = @STRIP@
VERSION = @VERSION@
XCCFLAGS = @XCCFLAGS@
YACC = @YACC@
abs_builddir = @abs_builddir@
abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
abs_top_srcdir = @abs_top_srcdir@
ac_ct_AR = @ac_ct_AR@
ac_ct_CC = @ac_ct_CC@
ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
am__tar = @am__tar@
am__untar = @am__untar@
bindir = @bindir@
build = @build@
build_alias = @build_alias@
build_cpu = @build_cpu@
build_os = @build_os@
build_vendor = @build_vendor@
builddir = @builddir@
datadir = @datadir@
datarootdir = @datarootdir@
docdir = @docdir@
dvidir = @dvidir@
exec_prefix = @exec_prefix@
extra_incl = @extra_incl@
host = @host@
host_alias = @host_alias@
host_cpu = @host_cpu@
host_os = @host_os@
host_vendor = @host_vendor@
htmldir = @htmldir@
includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
libdir = @libdir@
libexecdir = @libexecdir@
localedir = @localedir@
localstatedir = @localstatedir@
mandir = @mandir@
mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
sysconfdir = @sysconfdir@
target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
AUTOMAKE_OPTIONS = foreign no-dependencies
EXTRA_DIST = Makefile.am \
libprelude.m4
all: all-am
.SUFFIXES:
$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
@for dep in $?; do \
case '$(am__configure_deps)' in \
*$$dep*) \
( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
&& { if test -f $@; then exit 0; else break; fi; }; \
exit 1;; \
esac; \
done; \
echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign m4/Makefile'; \
$(am__cd) $(top_srcdir) && \
$(AUTOMAKE) --foreign m4/Makefile
.PRECIOUS: Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \
*config.status*) \
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
*) \
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
esac;
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(am__aclocal_m4_deps):
mostlyclean-libtool:
-rm -f *.lo
clean-libtool:
-rm -rf .libs _libs
tags TAGS:
ctags CTAGS:
cscope cscopelist:
distdir: $(DISTFILES)
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
list='$(DISTFILES)'; \
dist_files=`for file in $$list; do echo $$file; done | \
sed -e "s|^$$srcdirstrip/||;t" \
-e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
case $$dist_files in \
*/*) $(MKDIR_P) `echo "$$dist_files" | \
sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
sort -u` ;; \
esac; \
for file in $$dist_files; do \
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
if test -d $$d/$$file; then \
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
if test -d "$(distdir)/$$file"; then \
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
fi; \
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
fi; \
cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
else \
test -f "$(distdir)/$$file" \
|| cp -p $$d/$$file "$(distdir)/$$file" \
|| exit 1; \
fi; \
done
check-am: all-am
check: check-am
all-am: Makefile
installdirs:
install: install-am
install-exec: install-exec-am
install-data: install-data-am
uninstall: uninstall-am
install-am: all-am
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
installcheck: installcheck-am
install-strip:
if test -z '$(STRIP)'; then \
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
install; \
else \
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
"INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
fi
mostlyclean-generic:
clean-generic:
distclean-generic:
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
maintainer-clean-generic:
@echo "This command is intended for maintainers to use"
@echo "it deletes files that may require special tools to rebuild."
clean: clean-am
clean-am: clean-generic clean-libtool mostlyclean-am
distclean: distclean-am
-rm -f Makefile
distclean-am: clean-am distclean-generic
dvi: dvi-am
dvi-am:
html: html-am
html-am:
info: info-am
info-am:
install-data-am:
install-dvi: install-dvi-am
install-dvi-am:
install-exec-am:
install-html: install-html-am
install-html-am:
install-info: install-info-am
install-info-am:
install-man:
install-pdf: install-pdf-am
install-pdf-am:
install-ps: install-ps-am
install-ps-am:
installcheck-am:
maintainer-clean: maintainer-clean-am
-rm -f Makefile
maintainer-clean-am: distclean-am maintainer-clean-generic
mostlyclean: mostlyclean-am
mostlyclean-am: mostlyclean-generic mostlyclean-libtool
pdf: pdf-am
pdf-am:
ps: ps-am
ps-am:
uninstall-am:
.MAKE: install-am install-strip
.PHONY: all all-am check check-am clean clean-generic clean-libtool \
cscopelist-am ctags-am distclean distclean-generic \
distclean-libtool distdir dvi dvi-am html html-am info info-am \
install install-am install-data install-data-am install-dvi \
install-dvi-am install-exec install-exec-am install-html \
install-html-am install-info install-info-am install-man \
install-pdf install-pdf-am install-ps install-ps-am \
install-strip installcheck installcheck-am installdirs \
maintainer-clean maintainer-clean-generic mostlyclean \
mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
tags-am uninstall uninstall-am
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:
snort-2.9.6.0/rpm/ 0000755 0000000 0000000 00000000000 12260606571 010605 5 0000000 0000000 snort-2.9.6.0/rpm/snort.spec 0000644 0000000 0000000 00000060563 12260606571 012560 0000000 0000000 # $Id$
# Snort.org's SPEC file for Snort
################################################################
# rpmbuild Package Options
# ========================
#
# See pg 399 of _Red_Hat_RPM_Guide_ for rpmbuild --with and --without options.
################################################################
# Other useful bits
%define SnortRulesDir %{_sysconfdir}/snort/rules
%define noShell /bin/false
# Handle the options noted above.
%define vendor Snort.org
%define for_distro RPMs
%define release 1
%define realname snort
# Look for a directory to see if we're building under cAos
# Exit status is usually 0 if the dir exists, 1 if not, so
# we reverse that with the '!'
%define caos %([ ! -d /usr/lib/rpm/caos ]; echo $?)
%if %{caos}
# We are building for cAos (www.caosity.org) and the autobuilder doesn't
# have command line options so we have to fake the options for whatever
# packages we actually want here, in addition to tweaking the package
# info.
%define vendor cAos Linux
%define for_distro RPMs for cAos Linux
%define release 1.caos
%endif
Name: %{realname}
Version: 2.9.6.0
Epoch: 1
Release: %{release}
Summary: An open source Network Intrusion Detection System (NIDS)
Group: Applications/Internet
License: GPL
Url: http://www.snort.org/
Source0: http://www.snort.org/snort-downloads/2.9.6/%{realname}-%{version}.tar.gz
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
Packager: Official Snort.org %{for_distro}
Vendor: %{vendor}
BuildRequires: autoconf, automake, pcre-devel, libpcap-devel
#Conflicts: %{conflicts}
%description
Snort is an open source network intrusion detection system, capable of
performing real-time traffic analysis and packet logging on IP networks.
It can perform protocol analysis, content searching/matching and can be
used to detect a variety of attacks and probes, such as buffer overflows,
stealth port scans, CGI attacks, SMB probes, OS fingerprinting attempts,
and much more.
Snort has three primary uses. It can be used as a straight packet sniffer
like tcpdump(1), a packet logger (useful for network traffic debugging,
etc), or as a full blown network intrusion detection system.
You MUST edit /etc/snort/snort.conf to configure snort before it will work!
There are 5 different packages available. All of them require the base
snort rpm (this one). Additionally, you may need to chose a different
binary to install if you want database support.
If you install a different binary package %{_sbindir}/snort should end up
being a symlink to a binary in one of the following configurations:
plain Snort (this package, required)
Please see the documentation in %{_docdir}/%{realname}-%{version} for more
information on snort features and configuration.
%prep
%setup -q -n %{realname}-%{version}
# When building from a Snort.org CVS snapshot tarball, you have to run
# autojunk before you can build.
if [ \( ! -s configure \) -a \( -x autojunk.sh \) ]; then
./autojunk.sh
fi
# Make sure it worked, or die with a useful error message.
if [ ! -s configure ]; then
echo "Can't find ./configure. ./autojunk.sh not present or not executable?"
exit 2
fi
%build
BuildSnort() {
%__mkdir "$1"
cd "$1"
%__ln_s ../configure ./configure
if [ "$1" = "plain" ] ; then
./configure $SNORT_BASE_CONFIG
fi
%__make
%__mv src/snort ../%{name}-"$1"
cd ..
}
CFLAGS="$RPM_OPT_FLAGS"
export AM_CFLAGS="-g -O2"
SNORT_BASE_CONFIG="--prefix=%{_prefix} \
--bindir=%{_sbindir} \
--sysconfdir=%{_sysconfdir}/snort \
--with-libpcap-includes=%{_includedir} \
--enable-targetbased \
--enable-control-socket"
# Always build snort-plain
BuildSnort plain
%install
# Remove leftover CVS files in the tarball, if any...
find . -type 'd' -name "CVS" -print | xargs %{__rm} -rf
InstallSnort() {
if [ "$1" = "plain" ]; then
%__rm -rf $RPM_BUILD_ROOT
%__mkdir_p -m 0755 $RPM_BUILD_ROOT%{_sbindir}
%__mkdir_p -m 0755 $RPM_BUILD_ROOT%{_bindir}
%__mkdir_p -m 0755 $RPM_BUILD_ROOT%{SnortRulesDir}
%__mkdir_p -m 0755 $RPM_BUILD_ROOT%{_sysconfdir}/snort
%__mkdir_p -m 0755 $RPM_BUILD_ROOT%{_sysconfdir}/sysconfig
%__mkdir_p -m 0755 $RPM_BUILD_ROOT%{_sysconfdir}/logrotate.d
%__mkdir_p -m 0755 $RPM_BUILD_ROOT%{_var}/log/snort
%__mkdir_p -m 0755 $RPM_BUILD_ROOT%{_initrddir}
%__mkdir_p -m 0755 $RPM_BUILD_ROOT%{_mandir}/man8
%__mkdir_p -m 0755 $RPM_BUILD_ROOT%{_docdir}/%{realname}-%{version}
%__install -p -m 0755 %{name}-plain $RPM_BUILD_ROOT%{_sbindir}/%{name}-plain
%__install -p -m 0755 plain/tools/control/snort_control $RPM_BUILD_ROOT%{_bindir}/snort_control
%__install -p -m 0755 plain/tools/u2spewfoo/u2spewfoo $RPM_BUILD_ROOT%{_bindir}/u2spewfoo
%__install -p -m 0755 plain/tools/u2boat/u2boat $RPM_BUILD_ROOT%{_bindir}/u2boat
%__mkdir_p -m 0755 $RPM_BUILD_ROOT%{_libdir}/%{realname}-%{version}_dynamicengine
%__mkdir_p -m 0755 $RPM_BUILD_ROOT%{_libdir}/%{realname}-%{version}_dynamicpreprocessor
%__install -p -m 0755 plain/src/dynamic-plugins/sf_engine/.libs/libsf_engine.so.0 $RPM_BUILD_ROOT%{_libdir}/%{realname}-%{version}_dynamicengine
%__ln_s -f %{_libdir}/%{realname}-%{version}_dynamicengine/libsf_engine.so.0 $RPM_BUILD_ROOT%{_libdir}/%{realname}-%{version}_dynamicengine/libsf_engine.so
%__install -p -m 0755 plain/src/dynamic-preprocessors/build/%{_prefix}/lib/snort_dynamicpreprocessor/*.so* $RPM_BUILD_ROOT%{_libdir}/%{realname}-%{version}_dynamicpreprocessor
for file in $RPM_BUILD_ROOT%{_libdir}/%{realname}-%{version}_dynamicpreprocessor/*.so; do
preprocessor=`basename $file`
%__ln_s -f %{_libdir}/%{realname}-%{version}_dynamicpreprocessor/$preprocessor.0 $file
done
%__install -p -m 0644 snort.8 $RPM_BUILD_ROOT%{_mandir}/man8
%__gzip $RPM_BUILD_ROOT%{_mandir}/man8/snort.8
%__install -p -m 0755 rpm/snortd $RPM_BUILD_ROOT%{_initrddir}
%__install -p -m 0644 rpm/snort.sysconfig $RPM_BUILD_ROOT/%{_sysconfdir}/sysconfig/%{realname}
%__install -p -m 0644 rpm/snort.logrotate $RPM_BUILD_ROOT/%{_sysconfdir}/logrotate.d/snort
%__install -p -m 0644 etc/reference.config etc/classification.config \
etc/unicode.map etc/gen-msg.map \
etc/threshold.conf etc/snort.conf \
$RPM_BUILD_ROOT/%{_sysconfdir}/snort
find doc -maxdepth 1 -type f -not -name 'Makefile*' -exec %__install -p -m 0644 {} $RPM_BUILD_ROOT%{_docdir}/%{realname}-%{version} \;
%__rm -f $RPM_BUILD_ROOT%{_docdir}/%{realname}-%{version}/Makefile.*
fi
}
# Fix the RULE_PATH
%__sed -e 's;var RULE_PATH ../rules;var RULE_PATH %{SnortRulesDir};' \
< etc/snort.conf > etc/snort.conf.new
%__rm -f etc/snort.conf
%__mv etc/snort.conf.new etc/snort.conf
# Fix dynamic-preproc paths
%__sed -e 's;dynamicpreprocessor directory \/usr\/local/lib\/snort_dynamicpreprocessor;dynamicpreprocessor directory %{_libdir}\/%{realname}-%{version}_dynamicpreprocessor;' < etc/snort.conf > etc/snort.conf.new
%__rm -f etc/snort.conf
%__mv etc/snort.conf.new etc/snort.conf
# Fix dynamic-engine paths
%__sed -e 's;dynamicengine \/usr\/local/lib\/snort_dynamicengine;dynamicengine %{_libdir}\/%{realname}-%{version}_dynamicengine;' < etc/snort.conf > etc/snort.conf.new
%__rm -f etc/snort.conf
%__mv etc/snort.conf.new etc/snort.conf
# Always install snort-plain
InstallSnort plain
%clean
%__rm -rf $RPM_BUILD_ROOT
%pre
# Don't do all this stuff if we are upgrading
if [ $1 = 1 ] ; then
/usr/sbin/groupadd snort 2> /dev/null || true
/usr/sbin/useradd -M -d %{_var}/log/snort -s %{noShell} -c "Snort" -g snort snort 2>/dev/null || true
fi
%post
# Make a symlink if there is no link for snort-plain
if [ -L %{_sbindir}/snort ] || [ ! -e %{_sbindir}/snort ] ; then \
%__rm -f %{_sbindir}/snort; %__ln_s %{_sbindir}/%{name}-plain %{_sbindir}/snort; fi
# We should restart it to activate the new binary if it was upgraded
%{_initrddir}/snortd condrestart 1>/dev/null 2>/dev/null
# Don't do all this stuff if we are upgrading
if [ $1 = 1 ] ; then
%__chown -R snort.snort %{_var}/log/snort
/sbin/chkconfig --add snortd
fi
%preun
if [ $1 = 0 ] ; then
# We get errors about not running, but we don't care
%{_initrddir}/snortd stop 2>/dev/null 1>/dev/null
/sbin/chkconfig --del snortd
fi
%postun
# Try and restart, but don't bail if it fails
if [ $1 -ge 1 ] ; then
%{_initrddir}/snortd condrestart 1>/dev/null 2>/dev/null || :
fi
# Only do this if we are actually removing snort
if [ $1 = 0 ] ; then
if [ -L %{_sbindir}/snort ]; then
%__rm -f %{_sbindir}/snort
fi
/usr/sbin/userdel snort 2>/dev/null
fi
%files
%defattr(-,root,root)
%attr(0755,root,root) %{_sbindir}/%{name}-plain
%attr(0755,root,root) %{_bindir}/snort_control
%attr(0755,root,root) %{_bindir}/u2spewfoo
%attr(0755,root,root) %{_bindir}/u2boat
%attr(0644,root,root) %{_mandir}/man8/snort.8.*
%attr(0755,root,root) %dir %{SnortRulesDir}
%attr(0644,root,root) %config(noreplace) %{_sysconfdir}/snort/classification.config
%attr(0644,root,root) %config(noreplace) %{_sysconfdir}/snort/reference.config
%attr(0644,root,root) %config(noreplace) %{_sysconfdir}/snort/threshold.conf
%attr(0644,root,root) %config(noreplace) %{_sysconfdir}/snort/*.map
%attr(0644,root,root) %config(noreplace) %{_sysconfdir}/logrotate.d/snort
%attr(0644,root,root) %config(noreplace) %{_sysconfdir}/snort/snort.conf
%attr(0644,root,root) %config(noreplace) %{_sysconfdir}/sysconfig/snort
%attr(0755,root,root) %config(noreplace) %{_initrddir}/snortd
%attr(0755,snort,snort) %dir %{_var}/log/snort
%attr(0755,root,root) %dir %{_sysconfdir}/snort
%attr(0644,root,root) %{_docdir}/%{realname}-%{version}/*
%attr(0755,root,root) %dir %{_libdir}/%{realname}-%{version}_dynamicengine
%attr(0755,root,root) %{_libdir}/%{realname}-%{version}_dynamicengine/libsf_engine.*
%attr(0755,root,root) %dir %{_libdir}/%{realname}-%{version}_dynamicpreprocessor
%attr(0755,root,root) %{_libdir}/%{realname}-%{version}_dynamicpreprocessor/libsf_*_preproc.*
%dir %{_docdir}/%{realname}-%{version}
%docdir %{_docdir}/%{realname}-%{version}
################################################################
# Thanks to the following for contributions to the Snort.org SPEC file:
# Henri Gomez
# Chris Green
# Karsten Hopp
# Tim Powers
# William Stearns
# Hugo van der Kooij
# Wim Vandersmissen
# Dave Wreski
# JP Vossen
# Daniel Wittenberg
# Jeremy Hewlett
# Vlatko Kosturjak
%changelog
* Wed May 09 2012 Todd Wease 2.9.3
- Removed --enable-decoder-preprocessor-rules since this is now the default
- behavior and not configurable.
* Fri Apr 27 2012 Russ Combs 2.9.3
- Removed schemas related foo.
* Wed Mar 30 2012 Steve Sturges 2.9.3
- Removed --with flexresp, --with inline, database output specific builds.
* Wed Apr 02 2008 Steve Sturges 2.8.3
- Added --enable-targetbased --enable-decoder-preprocessor-rules by default.
* Wed Apr 02 2008 Steve Sturges 2.8.1
- Added ssl
* Fri Aug 03 2007 Russ Combs 2.8.0
- Removed README.build_rpms from description
- Removed 2nd "doc/" component from doc install path
- Changed doc/ file attributes to mode 0644
- Moved schemas/ from doc to data dir
- Added installation of schemas/create_*
- Removed redundant '/'s from mkdir path specs
- Eliminated find warning by moving -maxdepth ahead of -type
- Fixed "warning: File listed twice: ..." for libsf so files
* Wed Feb 28 2007 Steve Sturges 2.7.0
- Removed smp flags to make command
* Wed Jan 17 2007 Steve Sturges 2.7.0
- Updated version to 2.7.0
* Tue Nov 07 2006 Steve Sturges 2.6.0
- Updated version to 2.6.1
* Thu Aug 31 2006 Steve Sturges 2.6.0
- Added dynamic DNS preprocessor
* Wed May 24 2006 Steve Sturges 2.6.0
- Updated to version 2.6.0
* Fri Apr 14 2006 Justin Heath 2.6.0RC1
- Added conf fix for dynamic engine paths
- Added conf fix for dynamic preprocessors paths
- Added dynamic attributes in file list
- Added epoch to Requires for postgres, oracle and unixodbc
- Removed rule/signature references as these are not distributed with this tarball
* Thu Apr 13 2006 Steve Sturges 2.6.0RC1
- Updated to 2.6.0RC1
- Added targets for dynamic engine
- Added targets for dynamic preprocessors
* Sun Dec 11 2005 Vlatko Kosturjak 2.6.0RC1
- Added unixODBC support
* Sun Oct 16 2005 Marc Norton 2.4.3
- Fixed buffer overflow in bo preprocessor
- Added alert for potential buffer overflow attack against snort
- Added noalert and drop options for all bo preprocessor events
* Fri Jul 22 2005 Martin Roesch 2.4.0
- Modified to reflect rules not being distributed with Snort distros
* Tue May 03 2005 Daniel Wittenberg 2.4.0RC1
- Removed more Fedora-specific options
- Renamed spec from snort.org.spec to snort.spec
- Removed CHANGES.rpms file since we have a changelog here no sense
- in maintaining two of them
- Replaced a ton of program names with macros to make more portable
- Removed all references to rpms@snort.org since it just gets used
- for spam so the address is being nuked
- Updates to inline support for 2.4.0 Release and fedora changes
- Replaced initDir with system-provided _initdir macro for more portability
- Added Epoch back in so that way upgrades will work correctly. It will be
- removed at some point breaking upgrades for that version
* Tue Mar 29 2005 Jeremy Hewlett
- Added Inline capability to RPMs. Thanks Matt Brannigan
- for helping with the RPM foo.
* Fri Mar 25 2005 Jeremy Hewlett
- Add schemas to rpm distro
- Add sharedscripts to logrotate
- Remove installing unnecessary contrib remnants
* Sun Mar 13 2005 Daniel Wittenberg
- Updates to conform to new Fedora Packageing guidelines
* Wed Dec 1 2004 Jeff Ball
- Added initDir and noShell for more building compatibility.
* Thu Nov 17 2004 Brian Caswell 2.3.0RC1
- handle the moving of RPM and the axing of contrib
* Sat Jun 03 2004 JP Vossen
- Bugfix for 'snortd condrestart' redirect to /dev/null in %postun
* Wed May 12 2004 JP Vossen
- Added code for cAos autobuilder
- Added buildrequires and requires for libpcap
* Thu May 06 2004 Daniel Wittenberg
- Added JP's stats option to the standard rc script
* Sat Mar 06 2004 JP Vossen
- Added gen-msg.map and sid-msg.map to /etc/snort
* Sat Feb 07 2004 Daniel Wittenberg
- Applied postun/snortd patches from Nick Urbanik
- Added threshold.conf, unicode.map and generators to /etc/snort thanks
- to notes from Nick Urbanik
* Sat Dec 20 2003 Daniel Wittenberg 2.1.0-2
- Added condrestart option to rc script from patch by
- Nick Urbanik
- Fixed condrestart bug for installs
- Fixed gzip bug that happens on some builds
* Tue Dec 10 2003 JP Vossen
- Removed flexresp from plain rpm package description
- Added a line about pcre to the package description
- Trivial tweaks to package description
* Sat Nov 29 2003 Daniel Wittenberg 2.1.0-1
- Applied some updates from rh0212ms@arcor.de
- Applied some updates from Torsten Schuetze
- Applied some updates from Nick Urbanik
- Fixed ALERTMODE rc script error reported by DFarino@Stamps.com
- Fixed CONF rc script error reported by ??
- Gzip signature files to save some space
- Added BuildRequires pcre-devel and Requires pcre
- Re-did %post sections so the links are added and removed
- correctly when you add/remove various packages
* Fri Nov 07 2003 Daniel WIttenberg
- Updated snort.logrotate
* Thu Nov 06 2003 Daniel Wittenberg 2.0.4
- Minor updates for 2.0.4
* Tue Nov 04 2003 Daniel Wittenberg 2.0.3
- Updated for 2.0.3
- Removed 2.0.2 patch
- Remove flexresp2 as it caused too many build problems and doesn't work
- cleanly with 2.0.3 anyway
- Minor documentation updated for 2.0.3
* Mon Oct 20 2003 Daniel Wittenberg 2.0.2-6
- New release version
- Changed /etc/rc.d/init.d to /etc/init.d for more compatibility
* Fri Oct 17 2003 Daniel Wittenberg
- Changed as many hard-coded references to programs and paths to use
- standard defined macros
* Fri Oct 10 2003 Daniel Wittenberg
- Include SnortRulesDir in %%files section
- Added classification.config and reference.config in %%files section
- Minor cleanup of the for_fedora macro
* Sat Oct 04 2003 Dainel Wittenberg
- Nuked post-install message as it caused too many problems
- Changed default ruledir to /etc/snort/rules
- Fixed problem with non-snort-plain symlinks getting created
* Fri Oct 03 2003 Dainel Wittenberg
- Somehow the snort.logrotate cvs file got copied into the build tree
- and the wrong file got pushed out
- snort.logrotate wasn't included in the %%files section, so added
- it as a config(noreplace) file
* Thu Oct 02 2003 Dainel Wittenberg 2.0.2-5
- Added --with fedora for building Fedora RPM's
- Removed references to old snort config patch
- Added noreplace option to /etc/rc.d/init.d/snortd just in case
- Gzip the man page to save (a small tiny) amount of space and make it
- more "standard"
- Added version number to changelog entries to denote when packages were
- released
* Wed Oct 01 2003 Dainel Wittenberg
- Fixed permission problem with /etc/snort being 644
- Added noreplace option to /etc/sysconfig/snort
* Fri Sep 26 2003 Daniel Wittenberg
- Fixed incorrect Version string in cvs version of the spec
- Added snort logrotate file
- Removed |more from output as it confuses some package managers
* Fri Sep 23 2003 Daniel Wittenberg 2.0.2-4
- Released 2.0.2-3 and then 2.0.2-4
* Sat Sep 20 2003 Daniel Wittenberg
- Added --with flexresp2 build option
* Fri Sep 19 2003 Daniel Wittenberg 2.0.2-2
- Gave into JP and changed version back to stable :)
* Fri Sep 19 2003 Daniel Wittenberg
- Fixed problems in snortd with "ALL" interfaces working correctly
- Removed history from individual files as they will get too big
- and unreadable quickly
* Thu Sep 18 2003 Daniel Wittenberg 2.0.2-1
- Updated for 2.0.2 and release 2.0.2-1
* Tue Aug 26 2003 JP Vossen
- Added code to run autojunk.sh for CVS tarball builds
* Mon Aug 25 2003 JP Vossen
- Added missing comments to changelog
* Sun Aug 20 2003 Daniel Wittenberg
- Moved snortd and snortd.sysconfig to contrib/rpm
- Changed contrib install to a cp -a so the build stops complaining
* Mon Aug 11 2003 JP Vossen
- Removed the commented patch clutter and a TO DO note
- Fussed with white space
* Sun Aug 10 2003 Daniel Wittenberg
- Fixed a couple minor install complaints
- userdel/groupdel added back into %%postun
- useradd/groupadd added to %%pre
* Sat Aug 9 2003 JP Vossen
- Doubled all percent signs in this changelog due to crazy RH9 RPM bug.
- http://www.fedora.us/pipermail/fedora-devel/2003-June/001561.html
- http://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=88620
- Turn off rpm debug due to RH9 RPM issue
- http://www.cs.helsinki.fi/linux/linux-kernel/2003-15/0763.html
- Removed unnecessary SourceX: since they will be in the tarball
* Thu Aug 7 2003 JP Vossen
- Changed perms from 755 to 644 for %%{_mandir}/man8/snort.8*
* Sun Aug 3 2003 JP Vossen
- Removed the conf patch (again) as we moved the funcationality
- Added sed to buildrequires and sed it to fix RULE_PATH
- Removed Dan's SPEC code that made a default sysconfig/snort file.
* Sun Aug 3 2003 JP Vossen
- Trivial changes and additions to documentation and references
- Added --with flexresp option
- Changed libnet buildrequires per Chris
- Added docs and contrib back in, and moved sig docs out of doc.
- Moved CSV and signature 'fixes' into %%install where they should have
- been. Also fixed them.
- Added Dan's new snortd and snort.sysconfig
- Commented out alternate method of creating /etc/sysconfig/snort
- Created %%{OracleHome}
- Added BuildRequires: findutils
- Uncommented the patch and added the patch file
* Fri Jul 26 2003 Daniel Wittenberg
- commented out the patch for now since it doesn't exist
- if doing a new install echo "INTERFACE=eth0" > /etc/sysconfig/snort
- changed --with-libpcap-includes=/usr/include/pcap to /usr/include since
- that is where the libpcap-snort rpm Chris sent puts things
- added missing " at the end of the SNORT_BASE_CONFIG
- minor change to the ./configure for plain so it actually works
- during an rpm -e of snort do a rm -f to make it a little more quiet in
- case of problems
- massive re-write of multi-package build system
- initial support for compiling with Oracle
* Sun Jul 20 2003 JP Vossen
- Took over maintenance of Snort.org RPM releases just before v2.0.1
- Various cleanup of SPEC file and changes to support building from tarball
- Removed some old packages (like SNMP and Bloat), per Chris
- First attempt at using --with option for multi-package build system
- Added a patch to snort.conf for $RULE_PATH and default output plugins
* Wed Sep 25 2002 Chris Green
- updated to 1.9.0
* Tue Nov 6 2001 Chris Green
- merged in Hugo's changes
- updated to 1.8.3
- fixing symlinks on upgrades
* Tue Nov 6 2001 Hugo van der Kooij
- added libpcap to the list as configure couldn't find it on RedHat 7.2
- added several packages to the build requirements
* Fri Nov 2 2001 Chris Green
- updated to 1.8.2-RELEASE
- adding SQL defines
- created tons of packages so that all popular snort configs are accounted for
* Sat Aug 18 2001 Chris Green
- 1.8.1-RELEASE
- cleaned up enough to release to general public
* Tue May 8 2001 Chris Green
- moved to 1.8cvs
- changed rules files
- removed initial configuration
* Mon Nov 27 2000 Chris Green
- removed strip
- upgrade to cvs version
- moved /var/snort/dev/null creation to install time
* Tue Nov 21 2000 Chris Green
- changed to %%{SnortPrefix}
- upgrade to patch2
* Mon Jul 31 2000 Wim Vandersmissen
- Integrated the -t (chroot) option and build a /home/snort chroot jail
- Installs a statically linked/stripped snort
- Updated /etc/rc.d/init.d/snortd to work with the chroot option
* Tue Jul 25 2000 Wim Vandersmissen
- Added some checks to find out if we're upgrading or removing the package
* Sat Jul 22 2000 Wim Vandersmissen
- Updated to version 1.6.3
- Fixed the user/group stuff (moved to %%post)
- Added userdel/groupdel to %%postun
- Automagically adds the right IP, nameservers to /etc/snort/rules.base
* Sat Jul 08 2000 Dave Wreski
- Updated to version 1.6.2
- Removed references to xntpd
- Fixed minor problems with snortd init script
* Fri Jul 07 2000 Dave Wreski
- Updated to version 1.6.1
- Added user/group snort
* Sat Jun 10 2000 Dave Wreski
- Added snort init.d script (snortd)
- Added Dave Dittrich's snort rules header file (ruiles.base)
- Added Dave Dittrich's wget rules fetch script (check-snort)
- Fixed permissions on /var/log/snort
- Created /var/log/snort/archive for archival of snort logs
- Added post/preun to add/remove snortd to/from rc?.d directories
- Defined configuration files as %%config
* Tue Mar 28 2000 William Stearns
- Quick update to 1.6.
- Sanity checks before doing rm-rf in install and clean
* Fri Dec 10 1999 Henri Gomez
- 1.5-0 Initial RPM release
snort-2.9.6.0/rpm/snort.sysconfig 0000644 0000000 0000000 00000006515 10236462261 013624 0000000 0000000 # /etc/sysconfig/snort
# $Id$
# All of these options with the exception of -c, which tells Snort where
# the configuration file is, may be specified in that configuration file as
# well as the command line. Both the command line and config file options
# are listed here for reference.
#### General Configuration
# What interface should snort listen on? [Pick only 1 of the next 3!]
# This is -i {interface} on the command line
# This is the snort.conf config interface: {interface} directive
INTERFACE=eth0
#
# The following two options are not directly supported on the command line
# or in the conf file and assume the same Snort configuration for all
# instances
#
# To listen on all interfaces use this:
#INTERFACE=ALL
#
# To listen only on given interfaces use this:
#INTERFACE="eth1 eth2 eth3 eth4 eth5"
# Where is Snort's configuration file?
# -c {/path/to/snort.conf}
CONF=/etc/snort/snort.conf
# What user and group should Snort drop to after starting? This user and
# group should have very few privileges.
# -u {user} -g {group}
# config set_uid: user
# config set_gid: group
USER=snort
GROUP=snort
# Should Snort change the order in which the rules are applied to packets.
# Instead of being applied in the standard Alert->Pass->Log order, this will
# apply them in Pass->Alert->Log order.
# -o
# config order: {actions in order}
# e.g. config order: log alert pass activation dynamic suspicious redalert
PASS_FIRST=0
#### Logging & Alerting
# NOTE: NO_PACKET_LOG and BINARY_LOG, ALERTMODE, etc. are mutually
# exclusive. Use either NO_PACKET_LOG or any/all of the other logging
# options. But the more logging options use you, the slower Snort will run.
# Where should Snort log?
# -l {/path/to/logdir}
# config logdir: {/path/to/logdir}
LOGDIR=/var/log/snort
# How should Snort alert? Valid alert modes include fast, full, none, and
# unsock. Fast writes alerts to the default "alert" file in a single-line,
# syslog style alert message. Full writes the alert to the "alert" file
# with the full decoded header as well as the alert message. None turns off
# alerting. Unsock is an experimental mode that sends the alert information
# out over a UNIX socket to another process that attaches to that socket.
# -A {alert-mode}
# output alert_{type}: {options}
ALERTMODE=fast
# Should Snort dump the application layer data when displaying packets in
# verbose or packet logging mode.
# -d
# config dump_payload
DUMP_APP=1
# Should Snort keep binary (AKA pcap, AKA tcpdump) logs also? This is
# recommended as it provides very useful information for investigations.
# -b
# output log_tcpdump: {log name}
BINARY_LOG=1
# Should Snort turn off packet logging? The program still generates
# alerts normally.
# -N
# config nolog
NO_PACKET_LOG=0
# Print out the receiving interface name in alerts.
# -I
# config alert_with_interface_name
PRINT_INTERFACE=0
# When dumping the stats, what log file should we look in
SYSLOG=/var/log/messages
# When dumping the stats, how long to wait to make sure that syslog can
# flush data to disk
SECS=5
# To add a BPF filter to the command line uncomment the following variable
# syntax corresponds to tcpdump(8)
#BPF="not host 192.168.1.1"
# To use an external BPF filter file uncomment the following variable
# syntax corresponds to tcpdump(8)
# -F {/path/to/bpf_file}
# config bpf_file: /path/to/bpf_file
#BPFFILE=/etc/snort/bpf_file
snort-2.9.6.0/rpm/snort.logrotate 0000644 0000000 0000000 00000000416 10236462260 013611 0000000 0000000 # /etc/logrotate.d/snort
# $Id$
/var/log/snort/alert /var/log/snort/*log /var/log/snort/*/alert /var/log/snort/*/*log {
daily
rotate 7
missingok
compress
sharedscripts
postrotate
/etc/init.d/snortd restart 1>/dev/null || true
endscript
}
snort-2.9.6.0/rpm/snortd 0000644 0000000 0000000 00000012413 10236462261 011757 0000000 0000000 #!/bin/sh
# $Id$
#
# snortd Start/Stop the snort IDS daemon.
#
# chkconfig: 2345 40 60
# description: snort is a lightweight network intrusion detection tool that \
# currently detects more than 1100 host and network \
# vulnerabilities, portscans, backdoors, and more.
#
# Source function library.
. /etc/rc.d/init.d/functions
# Source the local configuration file
. /etc/sysconfig/snort
# Convert the /etc/sysconfig/snort settings to something snort can
# use on the startup line.
if [ "$ALERTMODE"X = "X" ]; then
ALERTMODE=""
else
ALERTMODE="-A $ALERTMODE"
fi
if [ "$USER"X = "X" ]; then
USER="snort"
fi
if [ "$GROUP"X = "X" ]; then
GROUP="snort"
fi
if [ "$BINARY_LOG"X = "1X" ]; then
BINARY_LOG="-b"
else
BINARY_LOG=""
fi
if [ "$CONF"X = "X" ]; then
CONF="-c /etc/snort/snort.conf"
else
CONF="-c $CONF"
fi
if [ "$INTERFACE"X = "X" ]; then
INTERFACE="-i eth0"
else
INTERFACE="-i $INTERFACE"
fi
if [ "$DUMP_APP"X = "1X" ]; then
DUMP_APP="-d"
else
DUMP_APP=""
fi
if [ "$NO_PACKET_LOG"X = "1X" ]; then
NO_PACKET_LOG="-N"
else
NO_PACKET_LOG=""
fi
if [ "$PRINT_INTERFACE"X = "1X" ]; then
PRINT_INTERFACE="-I"
else
PRINT_INTERFACE=""
fi
if [ "$PASS_FIRST"X = "1X" ]; then
PASS_FIRST="-o"
else
PASS_FIRST=""
fi
if [ "$LOGDIR"X = "X" ]; then
LOGDIR=/var/log/snort
fi
# These are used by the 'stats' option
if [ "$SYSLOG"X = "X" ]; then
SYSLOG=/var/log/messages
fi
if [ "$SECS"X = "X" ]; then
SECS=5
fi
if [ ! "$BPFFILE"X = "X" ]; then
BPFFILE="-F $BPFFILE"
fi
######################################
# Now to the real heart of the matter:
# See how we were called.
case "$1" in
start)
echo -n "Starting snort: "
cd $LOGDIR
if [ "$INTERFACE" = "-i ALL" ]; then
for i in `cat /proc/net/dev|grep eth|awk -F ":" '{ print $1; }'`
do
mkdir -p "$LOGDIR/$i"
chown -R $USER:$GROUP $LOGDIR
daemon /usr/sbin/snort $ALERTMODE $BINARY_LOG $NO_PACKET_LOG $DUMP_APP -D $PRINT_INTERFACE -i $i -u $USER -g $GROUP $CONF -l $LOGDIR/$i $PASS_FIRST $BPFFILE $BPF
done
else
# check if more than one interface is given
if [ `echo $INTERFACE|wc -w` -gt 2 ]; then
for i in `echo $INTERFACE | sed s/"-i "//`
do
mkdir -p "$LOGDIR/$i"
chown -R $USER:$GROUP $LOGDIR
daemon /usr/sbin/snort $ALERTMODE $BINARY_LOG $NO_PACKET_LOG $DUMP_APP -D $PRINT_INTERFACE -i $i -u $USER -g $GROUP $CONF -l $LOGDIR/$i $PASS_FIRST $BPFFILE $BPF
done
else
# Run with a single interface (default)
daemon /usr/sbin/snort $ALERTMODE $BINARY_LOG $NO_PACKET_LOG $DUMP_APP -D $PRINT_INTERFACE $INTERFACE -u $USER -g $GROUP $CONF -l $LOGDIR $PASS_FIRST $BPFFILE $BPF
fi
fi
touch /var/lock/subsys/snort
echo
;;
stop)
echo -n "Stopping snort: "
killproc snort
rm -f /var/lock/subsys/snort
echo
;;
reload)
echo "Sorry, not implemented yet"
;;
restart)
$0 stop
$0 start
;;
condrestart)
[ -e /var/lock/subsys/snort ] && $0 restart
;;
status)
status snort
;;
stats)
TC=125 # Trailing context to grep
SNORTNAME='snort' # Process name to look for
if [ ! -x "/sbin/pidof" ]; then
echo "/sbin/pidof not present, sorry, I cannot go on like this!"
exit 1
fi
#Grab Snort's PID
PID=`pidof -o $$ -o $PPID -o %PPID -x ${SNORTNAME}`
if [ ! -n "$PID" ]; then # if we got no PID then:
echo "No PID found: ${SNORTNAME} must not running."
exit 2
fi
echo ""
echo "*******"
echo "WARNING: This feature is EXPERIMENTAL - please report errors!"
echo "*******"
echo ""
echo "You can also run: $0 stats [long | opt]"
echo ""
echo "Dumping ${SNORTNAME}'s ($PID) statistics"
echo "please wait..."
# Get the date and tell Snort to dump stats as close together in
# time as possible--not 100%, but it seems to work.
startdate=`date '+%b %e %H:%M:%S'`
# This causes the stats to be dumped to syslog
kill -USR1 $PID
# Sleep for $SECS secs to give syslog a chance to catch up
# May need to be adjusted for slow/busy systems
sleep $SECS
if [ "$2" = "long" ]; then # Long format
egrep -B 3 -A $TC "^$startdate .* snort.*: ={79}" $SYSLOG | \
grep snort.*:
elif [ "$2" = "opt" ]; then # OPTimize format
# Just show stuff useful for optimizing Snort
egrep -B 3 -A $TC "^$startdate .* snort.*: ={79}" $SYSLOG | \
egrep "snort.*: Snort analyzed |snort.*: dropping|emory .aults:"
else # Default format
egrep -B 3 -A $TC "^$startdate .* snort.*: ={79}" $SYSLOG | \
grep snort.*: | cut -d: -f4-
fi
;;
*)
echo "Usage: $0 {start|stop|reload|restart|condrestart|status|stats (long|opt)}"
exit 2
esac
exit 0
snort-2.9.6.0/rpm/RPM-TODO 0000644 0000000 0000000 00000000253 10236462260 011645 0000000 0000000 ################################################################
# Future releases
- get to work better with the CVS current snapshot tarball?
- build chroot RPM package
snort-2.9.6.0/rpm/README.rpms 0000644 0000000 0000000 00000007005 12046023337 012362 0000000 0000000 $Id$
README.rpms
By JP Vossen & Dan Wittenberg
Last Updated: 2005-05-05
"Official" Snort.org RPM Documentation
======================================
Official Snort.org RPMs are back and better than ever. However, we've
made some changes that you need to be aware of, and we've documented some
other things of interest.
Thanks to JP Vossen (http://www.jpsdomain.org/security/snort.html) who was
originally guilted into taking over RPM upkeep , and to Daniel
Wittenberg (http://www.starken.com/) who graciously volunteered to help
and to provide a build host. The RPMs are now being co-maintained by them.
Improvements
------------
We've made a lot of changes under the covers to improve the flexibility
and maintainability of the RPMs going forward. See the next section for
details about that.
The most interesting and significant is the new ability to build RPMs
directly from the source code tarball! That means you can download either
a release tarball or one of the nightly CVS snapshot tarballs and build
RPMs *almost* effortlessly. See README.build_rpms [0] for the details and
the caveat about the "current" snapshot.
Changes from the previous Snort RPMs
------------------------------------
Use this command to view the most current change log before you install
the latest package:
rpm -q --changelog -p snort-x.x.x-x.i386.rpm | less
Beginning around Snort 2.3.0 the RPM files moved out of the contrib
directory, which went away.
Beginning with Snort 2.0.2, the official RPMs include the following
changes:
* snortd has been significantly revised to better conform with the
/etc/sysconfig scheme. See /etc/sysconfig/snort and /etc/init.d/snortd for
details.
* The doc, contrib and signatures directories are included in your doc
directory (e.g. /usr/share/doc/snort-x.x.x).
* The signatures directory is gzipped to save space beginning with Snort
2.1.0.
* The signatures directory is moved out from doc to the root of the Snort
documentation directory to make it more visible.
* Rules have been moved to /etc/snort/rules for readability and more
compatibility with rule-updating software like oinkmaster.
* The RPM SPEC file has been significantly revised and documented. It has
also been added to the source tarball (contrib/rpm), facilitating building
your own RPM directly from the tarball. See README.build_rpms [0] and the
SPEC [2] file for details.
* The binary packages built by the SPEC file have been simplified, and
rpmbuild '--with' options have been added to facilitate easy
do-it-yourself builds. See README.build_rpms [0] and the SPEC [2] file for
details.
* Neither version of flexresp is included in the official binary RPMs. You
may build it in yourself if needed.
* We've added a lot of new documentation about RPMs, like this document
you're reading.
Supported Distributions
=======================
The rpmbuild -ta method and new SPEC file have been tested and are known
to work on Red Hat 7.3, 8.0, 9, RHEL-3 (Taroon), Fedora Core [1-3]. Some basic build
tests have been done on SuSE 8.1 and 8.2 (which use rpm version 3).
They should also work on any distribution that supports RPM and have rpm v4
or better.
References
==========
[0] The latest Snort README.build_rpms
http://cvs.snort.org/viewcvs.cgi/snort/rpm/README.build_rpms
[1] The official Snort.org RPM SPEC file:
http://cvs.snort.org/viewcvs.cgi/snort/rpm/snort.spec
The latest Snort README.rpms
http://cvs.snort.org/viewcvs.cgi/snort/rpm/README.rpms
snort-2.9.6.0/rpm/README.build_rpms 0000644 0000000 0000000 00000023306 12046023337 013543 0000000 0000000 $Id$
README.build_rpms
By JP Vossen & Dan Wittenberg
Last Updated: 2005-05-03
How to build your own Snort RPMs--Introduction
==============================================
RPM is the accepted package manager for a large number of Linux
distributions. It is designed to allow easy and repeatable builds and
binary installations for software. This is especially important for a
package like Snort, where security and consistency are critical. Since you
should never install a compiler on a hardened machine, and especially
never on a security device like a firewall or IDS, a binary installer like
RPM makes it very easy to install and update software.
However, many people are not comfortable unless they download and compile
the software themselves. This document will show you how to download the
Snort source code, compile it and build your own RPM very easily.
RPM requires a SPEC file to provide details on how to compile and build
the source code into an RPM package. The most difficult and time consuming
part of building an RPM is writing a correct SPEC file. We've already done
that for you (and it is heavily commented as well). The snort.spec
file can build the following packages, with or without flexible response
(see README.flexresp for more details):
plain Snort (this package, required)
mysql Snort with mysql (optional)
postgresql Snort with postgresql (optional)
oracle Snort with oracle (optional, not official)
inline Snort with inline support (optional)
Prerequisites
=============
In order to build RPMs you must install the 'rpm-build' package. You will
also need the following if you plan to build packages other than plain:
Package Dependency
--------------------- ----------------
All rpm-build (rpm version 4 and above),
pcre-devel
Snort with MySQL MYSQL-devel, pcre-devel
Snort with PostgreSQL postgresql-devel, pcre-devel
Snort with Oracle Oracle libs in /opt/oracle, pcre-devel
Snort inline iptables-devel, libnet
If you plan to build flexresp, you also need libnet. Depending on which
libnet RPM you install, you may get statically linked binaries. If you
have statically linked libraries you only need the static library on the
build machine, NOT the machine on which the final compiled binary runs.
Given the fact that Snort sensors are security devices and having dynamic
libnet capabilities may be undesirable, static linking is a Good Thing.
The strongly recommended libnet to use is custom 1.0.2a Packetfactory RPM
Chris Green built a while ago that may be found here [0]. This is the only
Snort.org supported libnet and it allows snort to statically compile
libnet as noted above.
Building from a Tarball
=======================
If you have a recent version of RPM which supports the -tx options, you
can build directly from the official Snort.org tarball distribution. RPM
versions 4 and above are known to work. Some versions of rpm 3 have been
known to work, specifically those with SuSE 8.1 and SuSE 8.2
Version 4:
rpmbuild {package options} -ta {path/to/snort-n.n.n.tar.gz}
Version 3:
rpm {package options} -ta {path/to/snort-n.n.n.tar.gz}
(We will assume version 4 elsewhere in the documentation)
rpmbuild Package Options
========================
--with flexresp
Add flexresp capability to whatever package(s) you are
building.
--with inline
Add inline capability to whatever package(s) you are
building. This will create its own inline package.
--with mysql
Builds a binary/package with support for MySQL.
--with postgresql
Builds a binary/package with support for PostgreSQL.
--with oracle
Builds a binary/package with support for Oracle.
See below for some examples.
Rebuilding from the Source RPM (SRPM)
=====================================
You can also download the source RPM and rebuild from that. Simply get the
SRPM from Snort.org and rebuild:
rpmbuild --rebuild /path/to/snort-x.x.x-x.src.rpm
rpmbuild examples
=================
$ rpmbuild --with mysql --with postgresql -ta snort-2.0.4.tar.gz
--OR--
$ rpmbuild --with mysql --with postgresql --rebuild snort-2.0.4-1.src.rpm
$ ls -1 /usr/src/redhat/RPMS/i386/snort-*
/usr/src/redhat/RPMS/i386/snort-2.0.4-1.i386.rpm
/usr/src/redhat/RPMS/i386/snort-mysql-2.0.4-1.i386.rpm
/usr/src/redhat/RPMS/i386/snort-postgresql-2.0.4-1.i386.rpm
The "Official" Snort.org RPM build
==================================
We build the official Snort.org RPMs with the generate-all-rpms script in
the rpm directory.
In theory, anyone can build RPMs that are identical to the official
Snort.org RPMS. However, only the official RPMs will be signed by the
Snort.org GPG key [1].
PLEASE verify your RPMs with this key before installing them.
Distribution Specific Builds
============================
The SPEC file contains code to build RPMS for specific Linux
distributions, currently cAos (www.caosity.org). Since the
cAos buildsystem is completely automated, no rpmbuild command line options
are allowed, so the SPEC file looks for the '/usr/lib/rpm/caos' directory
to see if it's running under cAos. This is not ideal as it will build all
packages under any cAos machine--not just the autobuilder. But it's the
best I can do right now. Anyone have any better ideas?
Verifying an RPM's PGP/GPG Key
==============================
Download and add the Snort key to RPM:
wget http://www.snort.org/public-key.html
rpm --import public-key.html
Verify the signature:
rpm --checksig /path/to/snort-x.x.x-x.i386.rpm
rpm -v --checksig /path/to/snort-x.x.x-x.i386.rpm
-- OR --
rpm -K /path/to/snort-x.x.x-x.i386.rpm
rpm -vK /path/to/snort-x.x.x-x.i386.rpm
If you see something like the following, it's good. NOTE, you MUST see
"gpg OK" for the signature to exist and be valid! Any random RPM may be
created without a signature, so make sure your official RPM has one.
/path/to/snort-x.x.x-xsnort.i386.rpm: (sha1) dsa sha1 md5 gpg OK
The -v (for verbose) options give you a little more detail. Again, make
sure the signature lines present and OK.
If you see a "NOT OK" message, something did not verify. Any items that
were correct will be listed in lower case (e.g. sha1 md5) while any failed
items are in upper case (e.g. GPG). There may also be an error message,
such as "MISSING KEYS."
Examining the SPEC file
=======================
We have tried to make the Snort.org SPEC file as "user friendly" as
possible. In particular, it has lots of comments. So it may be useful to
look it over, or you may just want to build the old fashioned way. In any
case, there are three easy ways to get it.
Get it from Snort's CVS (see reference section for URL).
Get it from the tarball:
tar -xvzf /path/to/snort-x.x.x.tar.gz
Get it from the SRPM
Get the SRPM from Snort.org
Extract the SRPM: rpm2cpio /path/to/snort-x.x.x-x.src.rpm | cpio -i
-- OR --
Install the SRPM: rpm -i /path/to/snort-x.x.x-x.src.rpm
Building from Snort.org CVS Snapshots [2]
=========================================
Building from the CVS snapshot tarballs should work but requires some
manual intervention.
1. Cd to /tmp or someplace safe: cd /tmp
2. Untar the source: tar -xvzf /path/to/snort-current.tar.gz
3. Rename the resulting snort directory: mv snort snort-current
4. Edit snort-current/rpm/snort.spec and change the line
%define release {whatever}
to
%define release 1
and
Version: stable (or 2.1.x or whatever)
to
Version: current
5. Rename the original tarball: mv snort-current.tar.gz snort-current-orig.tar.gz
6. Obtain the snort rules you wish to include in the RPM (see [3]). Untar
the file then move the rules and doc/sigantures directories into place in
the working directory. E.g. mv /tmp/rules /tmp/snort-current and
mv /tmp/doc/signatures /tmp/snort-current/doc.
7. Re-tar the file: tar -cvzf snort-current.tar.gz snort-current
8. Build as usual: rpmbuild -ta snort-current.tar.gz
If you don't know how to do all of that, you probably want the regular
compiled binary packages or the snort-stable snapshot.
Building from Snort.org Anonymous CVS [4]
==========================================
Building from Snort.org Anonymous CVS is very similar to building from
snapshot tarballs, except without the tarballs.
If you don't know how to do all of that, you probably want the regular
compiled binary packages or the snort-stable snapshot.
References
==========
[0] Chris Green's Snort Libnet:
http://www.starken.com/snort/index.html#libnet
[1] Snort.org PGP/GPG key
http://www.snort.org/public-key.txt
[2] Snort.org CVS Snapshots
http://www.snort.org/pub-bin/snapshots.cgi
[3] Snort Rules
http://www.snort.org/rules/
[4] Got Source?
http://www.snort.org/got_source/source.html
The latest Snort README.rpms
http://cvs.snort.org/viewcvs.cgi/snort/rpm/README.rpms
The latest Snort README.build_rpms (this document)
http://cvs.snort.org/viewcvs.cgi/snort/rpm/README.build_rpms
The official Snort.org RPM SPEC file:
http://cvs.snort.org/viewcvs.cgi/snort/rpm/snort.spec
The RPM Homepage
http://www.rpm.org/
The RPM FAQ
http://www.rpm.org/RPM-HOWTO/
Book: Red Hat Linux RPM Guide
Esp. pgs: 236, 399, 400
By Eric Foster-Johnson, ISBN: 0-7645-4965-0, 549 pages
http://www.wiley.com/WileyCDA/WileyTitle/productCd-0764549650.html
http://www.bookpool.com/.x/zsz8obm990/sm/0764549650/
Book: Maximum RPM (Older, but mostly still valid)
On-Line, free: http://www.rpm.org/max-rpm/
http://www.bookpool.com/.x/zsz8obm990/sm/0672311054/
Note on "rpmbuild -ta {tarfile}"
http://sourceforge.net/mailarchive/forum.php?thread_id=1840467&forum_id=2311
Linux RPM Repository and Browse Tool
http://rufus.w3.org/linux/RPM/
snort-2.9.6.0/rpm/generate-all-rpms 0000644 0000000 0000000 00000002023 10277202365 013763 0000000 0000000 #!/bin/bash
# $Id$
# Generate the "official" Snort.org RPMs.
# The following will build 3 binary and 1 source RPM as follows:
# snort-x.x.x-x.i386.rpm
# snort-mysql-x.x.x-x.i386.rpm
# snort-postgresql-x.x.x-x.i386.rpm
# snort-x.x.x-x.src.rpm
#
# mysql and postgresql are probably mutually exclusive when building for
# your own use, and flexresp is optional. We therefor encourage you to
# build your own RPMs as you see fit. See README.build_rpms.
# If you wish to build with Oracle support, you need to use --with-oracle
# for the build syntax, and have your client libraries installed in
# /opt/oracle
rpmbuild -bb --target i386 --with mysql --with postgresql snort.spec
rpmbuild -bs --target i386 snort.spec
# If you wish to build with Inline support, you need to use the
# --with inline build syntax. You will need iptables-devel (for libipq)
# and libnet installed.
# The following will build the above binary packages with Inline support:
#rpmbuild -bb --target i386 --with inline --with mysql --with postgresql snort.spec
snort-2.9.6.0/rpm/Makefile.am 0000644 0000000 0000000 00000000306 10236462260 012554 0000000 0000000 ## $Id$
AUTOMAKE_OPTIONS=foreign no-dependencies
EXTRA_DIST = Makefile.am \
generate-all-rpms \
README.build_rpms \
README.rpms \
RPM-TODO \
snortd \
snort.logrotate \
snort.spec \
snort.sysconfig
snort-2.9.6.0/rpm/Makefile.in 0000644 0000000 0000000 00000030110 12260606517 012565 0000000 0000000 # Makefile.in generated by automake 1.13.4 from Makefile.am.
# @configure_input@
# Copyright (C) 1994-2013 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.
@SET_MAKE@
VPATH = @srcdir@
am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
am__make_running_with_option = \
case $${target_option-} in \
?) ;; \
*) echo "am__make_running_with_option: internal error: invalid" \
"target option '$${target_option-}' specified" >&2; \
exit 1;; \
esac; \
has_opt=no; \
sane_makeflags=$$MAKEFLAGS; \
if $(am__is_gnu_make); then \
sane_makeflags=$$MFLAGS; \
else \
case $$MAKEFLAGS in \
*\\[\ \ ]*) \
bs=\\; \
sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
| sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
esac; \
fi; \
skip_next=no; \
strip_trailopt () \
{ \
flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
}; \
for flg in $$sane_makeflags; do \
test $$skip_next = yes && { skip_next=no; continue; }; \
case $$flg in \
*=*|--*) continue;; \
-*I) strip_trailopt 'I'; skip_next=yes;; \
-*I?*) strip_trailopt 'I';; \
-*O) strip_trailopt 'O'; skip_next=yes;; \
-*O?*) strip_trailopt 'O';; \
-*l) strip_trailopt 'l'; skip_next=yes;; \
-*l?*) strip_trailopt 'l';; \
-[dEDm]) skip_next=yes;; \
-[JT]) skip_next=yes;; \
esac; \
case $$flg in \
*$$target_option*) has_opt=yes; break;; \
esac; \
done; \
test $$has_opt = yes
am__make_dryrun = (target_option=n; $(am__make_running_with_option))
am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
pkgdatadir = $(datadir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
pkglibexecdir = $(libexecdir)/@PACKAGE@
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
install_sh_DATA = $(install_sh) -c -m 644
install_sh_PROGRAM = $(install_sh) -c
install_sh_SCRIPT = $(install_sh) -c
INSTALL_HEADER = $(INSTALL_DATA)
transform = $(program_transform_name)
NORMAL_INSTALL = :
PRE_INSTALL = :
POST_INSTALL = :
NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
subdir = rpm
DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/configure.in
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
mkinstalldirs = $(install_sh) -d
CONFIG_HEADER = $(top_builddir)/config.h
CONFIG_CLEAN_FILES =
CONFIG_CLEAN_VPATH_FILES =
AM_V_P = $(am__v_P_@AM_V@)
am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
am__v_P_0 = false
am__v_P_1 = :
AM_V_GEN = $(am__v_GEN_@AM_V@)
am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
am__v_GEN_0 = @echo " GEN " $@;
am__v_GEN_1 =
AM_V_at = $(am__v_at_@AM_V@)
am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
am__v_at_0 = @
am__v_at_1 =
depcomp =
am__depfiles_maybe =
SOURCES =
DIST_SOURCES =
am__can_run_installinfo = \
case $$AM_UPDATE_INFO_DIR in \
n|no|NO) false;; \
*) (install-info --version) >/dev/null 2>&1;; \
esac
am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
ACLOCAL = @ACLOCAL@
AMTAR = @AMTAR@
AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
AR = @AR@
AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
CC = @CC@
CCDEPMODE = @CCDEPMODE@
CCONFIGFLAGS = @CCONFIGFLAGS@
CFLAGS = @CFLAGS@
CONFIGFLAGS = @CONFIGFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
DLLTOOL = @DLLTOOL@
DSYMUTIL = @DSYMUTIL@
DUMPBIN = @DUMPBIN@
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
FGREP = @FGREP@
GREP = @GREP@
ICONFIGFLAGS = @ICONFIGFLAGS@
INCLUDES = @INCLUDES@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
LD = @LD@
LDFLAGS = @LDFLAGS@
LEX = @LEX@
LIBOBJS = @LIBOBJS@
LIBS = @LIBS@
LIBTOOL = @LIBTOOL@
LIPO = @LIPO@
LN_S = @LN_S@
LTLIBOBJS = @LTLIBOBJS@
MAINT = @MAINT@
MAKEINFO = @MAKEINFO@
MANIFEST_TOOL = @MANIFEST_TOOL@
MKDIR_P = @MKDIR_P@
NM = @NM@
NMEDIT = @NMEDIT@
OBJDUMP = @OBJDUMP@
OBJEXT = @OBJEXT@
OTOOL = @OTOOL@
OTOOL64 = @OTOOL64@
PACKAGE = @PACKAGE@
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
PACKAGE_NAME = @PACKAGE_NAME@
PACKAGE_STRING = @PACKAGE_STRING@
PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_URL = @PACKAGE_URL@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
PKG_CONFIG = @PKG_CONFIG@
PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
RANLIB = @RANLIB@
RAZORBACK_CFLAGS = @RAZORBACK_CFLAGS@
RAZORBACK_LIBS = @RAZORBACK_LIBS@
SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SIGNAL_SNORT_DUMP_STATS = @SIGNAL_SNORT_DUMP_STATS@
SIGNAL_SNORT_READ_ATTR_TBL = @SIGNAL_SNORT_READ_ATTR_TBL@
SIGNAL_SNORT_RELOAD = @SIGNAL_SNORT_RELOAD@
SIGNAL_SNORT_ROTATE_STATS = @SIGNAL_SNORT_ROTATE_STATS@
STRIP = @STRIP@
VERSION = @VERSION@
XCCFLAGS = @XCCFLAGS@
YACC = @YACC@
abs_builddir = @abs_builddir@
abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
abs_top_srcdir = @abs_top_srcdir@
ac_ct_AR = @ac_ct_AR@
ac_ct_CC = @ac_ct_CC@
ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
am__tar = @am__tar@
am__untar = @am__untar@
bindir = @bindir@
build = @build@
build_alias = @build_alias@
build_cpu = @build_cpu@
build_os = @build_os@
build_vendor = @build_vendor@
builddir = @builddir@
datadir = @datadir@
datarootdir = @datarootdir@
docdir = @docdir@
dvidir = @dvidir@
exec_prefix = @exec_prefix@
extra_incl = @extra_incl@
host = @host@
host_alias = @host_alias@
host_cpu = @host_cpu@
host_os = @host_os@
host_vendor = @host_vendor@
htmldir = @htmldir@
includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
libdir = @libdir@
libexecdir = @libexecdir@
localedir = @localedir@
localstatedir = @localstatedir@
mandir = @mandir@
mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
sysconfdir = @sysconfdir@
target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
AUTOMAKE_OPTIONS = foreign no-dependencies
EXTRA_DIST = Makefile.am \
generate-all-rpms \
README.build_rpms \
README.rpms \
RPM-TODO \
snortd \
snort.logrotate \
snort.spec \
snort.sysconfig
all: all-am
.SUFFIXES:
$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
@for dep in $?; do \
case '$(am__configure_deps)' in \
*$$dep*) \
( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
&& { if test -f $@; then exit 0; else break; fi; }; \
exit 1;; \
esac; \
done; \
echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign rpm/Makefile'; \
$(am__cd) $(top_srcdir) && \
$(AUTOMAKE) --foreign rpm/Makefile
.PRECIOUS: Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \
*config.status*) \
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
*) \
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
esac;
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(am__aclocal_m4_deps):
mostlyclean-libtool:
-rm -f *.lo
clean-libtool:
-rm -rf .libs _libs
tags TAGS:
ctags CTAGS:
cscope cscopelist:
distdir: $(DISTFILES)
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
list='$(DISTFILES)'; \
dist_files=`for file in $$list; do echo $$file; done | \
sed -e "s|^$$srcdirstrip/||;t" \
-e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
case $$dist_files in \
*/*) $(MKDIR_P) `echo "$$dist_files" | \
sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
sort -u` ;; \
esac; \
for file in $$dist_files; do \
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
if test -d $$d/$$file; then \
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
if test -d "$(distdir)/$$file"; then \
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
fi; \
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
fi; \
cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
else \
test -f "$(distdir)/$$file" \
|| cp -p $$d/$$file "$(distdir)/$$file" \
|| exit 1; \
fi; \
done
check-am: all-am
check: check-am
all-am: Makefile
installdirs:
install: install-am
install-exec: install-exec-am
install-data: install-data-am
uninstall: uninstall-am
install-am: all-am
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
installcheck: installcheck-am
install-strip:
if test -z '$(STRIP)'; then \
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
install; \
else \
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
"INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
fi
mostlyclean-generic:
clean-generic:
distclean-generic:
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
maintainer-clean-generic:
@echo "This command is intended for maintainers to use"
@echo "it deletes files that may require special tools to rebuild."
clean: clean-am
clean-am: clean-generic clean-libtool mostlyclean-am
distclean: distclean-am
-rm -f Makefile
distclean-am: clean-am distclean-generic
dvi: dvi-am
dvi-am:
html: html-am
html-am:
info: info-am
info-am:
install-data-am:
install-dvi: install-dvi-am
install-dvi-am:
install-exec-am:
install-html: install-html-am
install-html-am:
install-info: install-info-am
install-info-am:
install-man:
install-pdf: install-pdf-am
install-pdf-am:
install-ps: install-ps-am
install-ps-am:
installcheck-am:
maintainer-clean: maintainer-clean-am
-rm -f Makefile
maintainer-clean-am: distclean-am maintainer-clean-generic
mostlyclean: mostlyclean-am
mostlyclean-am: mostlyclean-generic mostlyclean-libtool
pdf: pdf-am
pdf-am:
ps: ps-am
ps-am:
uninstall-am:
.MAKE: install-am install-strip
.PHONY: all all-am check check-am clean clean-generic clean-libtool \
cscopelist-am ctags-am distclean distclean-generic \
distclean-libtool distdir dvi dvi-am html html-am info info-am \
install install-am install-data install-data-am install-dvi \
install-dvi-am install-exec install-exec-am install-html \
install-html-am install-info install-info-am install-man \
install-pdf install-pdf-am install-ps install-ps-am \
install-strip installcheck installcheck-am installdirs \
maintainer-clean maintainer-clean-generic mostlyclean \
mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
tags-am uninstall uninstall-am
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:
snort-2.9.6.0/templates/ 0000755 0000000 0000000 00000000000 12260606570 012004 5 0000000 0000000 snort-2.9.6.0/templates/spp_template.h 0000644 0000000 0000000 00000000537 10013174367 014575 0000000 0000000 /* $Id$ */
/* Snort Preprocessor Plugin Header File Template */
/* This file gets included in plugbase.h when it is integrated into the rest
* of the program.
*/
#ifndef __SPP_TEMPLATE_H__
#define __SPP_TEMPLATE_H__
/*
* list of function prototypes to export for this preprocessor
*/
void SetupTemplate();
#endif /* __SPP_TEMPLATE_H__ */
snort-2.9.6.0/templates/sp_template.h 0000644 0000000 0000000 00000000525 10013174367 014412 0000000 0000000 /* $Id$ */
/* Snort Detection Plugin Header File Template */
/*
* This file gets included in plugbase.h when it is integrated into the rest
* of the program.
*
* Export any functions or data structs you feel necessary.
*/
#ifndef __SP_TEMPLATE_H__
#define __SP_TEMPLATE_H__
void SetupTemplate();
#endif /* __SP_TEMPLATE_H__ */
snort-2.9.6.0/templates/spp_template.c 0000644 0000000 0000000 00000012760 10013174367 014571 0000000 0000000 /* $Id$ */
/* Snort Preprocessor Plugin Source File Template */
/* spp_template
*
* Purpose:
*
* Preprocessors perform some function *once* for *each* packet. This is
* different from detection plugins, which are accessed depending on the
* standard rules. When adding a plugin to the system, be sure to
* add the "Setup" function to the InitPreprocessors() function call in
* plugbase.c!
*
* Arguments:
*
* This is the list of arguements that the plugin can take at the
* "preprocessor" line in the rules file
*
* Effect:
*
* What the preprocessor does. Check out some of the default ones
* (e.g. spp_frag2) for a good example of this description.
*
* Comments:
*
* Any comments?
*
*/
#include
#include
#include
#include
/*
* If you're going to issue any alerts from this preproc you
* should include generators.h and event_wrapper.h
*/
#include "generators.h"
#include "event_wrapper.h"
#include "util.h"
#include "plugbase.h"
#include "parser.h"
/*
* put in other inculdes as necessary
*/
/*
* your preprocessor header file goes here if necessary, don't forget
* to include the header file in plugbase.h too!
*/
#include "spp_template.h"
/*
* define any needed data structs for things like configuration
*/
typedef struct _TemplateData
{
/* Your struct members here */
} TemplateData;
/*
* If you need to instantiate the preprocessor's
* data structure, do it here
*/
TemplateData SomeData;
/*
* function prototypes go here
*/
static void TemplateInit(u_char *);
static void ParseTemplateArgs(char *);
static void PreprocFunction(Packet *);
static void PreprocCleanExitFunction(int, void *);
static void PreprocRestartFunction(int, void *);
/*
* Function: SetupTemplate()
*
* Purpose: Registers the preprocessor keyword and initialization
* function into the preprocessor list. This is the function that
* gets called from InitPreprocessors() in plugbase.c.
*
* Arguments: None.
*
* Returns: void function
*
*/
void SetupTemplate()
{
/*
* link the preprocessor keyword to the init function in
* the preproc list
*/
RegisterPreprocessor("keyword", TemplateInit);
DebugMessage(DEBUG_PLUGIN,"Preprocessor: Template is setup...\n");
}
/*
* Function: TemplateInit(u_char *)
*
* Purpose: Calls the argument parsing function, performs final setup on data
* structs, links the preproc function into the function list.
*
* Arguments: args => ptr to argument string
*
* Returns: void function
*
*/
static void TemplateInit(u_char *args)
{
DebugMessage(DEBUG_PLUGIN,"Preprocessor: Template Initialized\n");
/*
* parse the argument list from the rules file
*/
ParseTemplateArgs(args);
/*
* perform any other initialization functions that are required here
*/
/*
* Set the preprocessor function into the function list
*/
AddFuncToPreprocList(PreprocFunction);
AddFuncToCleanExitList(PreprocCleanExitFunction, NULL);
AddFuncToRestartList(PreprocRestartFunction, NULL);
}
/*
* Function: ParseTemplateArgs(char *)
*
* Purpose: Process the preprocessor arguements from the rules file and
* initialize the preprocessor's data struct. This function doesn't
* have to exist if it makes sense to parse the args in the init
* function.
*
* Arguments: args => argument list
*
* Returns: void function
*
*/
static void ParseTemplateArgs(char *args)
{
/* your parsing function goes here, check out the other spp files
for examples */
}
/*
* Function: PreprocFunction(Packet *)
*
* Purpose: Perform the preprocessor's intended function. This can be
* simple (statistics collection) or complex (IP defragmentation)
* as you like. Try not to destroy the performance of the whole
* system by trying to do too much....
*
* Arguments: p => pointer to the current packet data struct
*
* Returns: void function
*
*/
static void PreprocFunction(Packet *p)
{
/* your preproc function goes here.... */
/*
* if you need to issue an alert from your preprocessor, check out
* event_wrapper.h, there are some useful helper functions there
*/
}
/*
* Function: PreprocCleanExitFunction(int, void *)
*
* Purpose: This function gets called when Snort is exiting, if there's
* any cleanup that needs to be performed (e.g. closing files)
* it should be done here.
*
* Arguments: signal => the code of the signal that was issued to Snort
* data => any arguments or data structs linked to this
* functioin when it was registered, may be
* needed to properly exit
*
* Returns: void function
*/
static void PreprocCleanExitFunction(int signal, void *data)
{
/* clean exit code goes here */
}
/*
* Function: PreprocRestartFunction(int, void *)
*
* Purpose: This function gets called when Snort is restarting on a SIGHUP,
* if there's any initialization or cleanup that needs to happen
* it should be done here.
*
* Arguments: signal => the code of the signal that was issued to Snort
* data => any arguments or data structs linked to this
* functioin when it was registered, may be
* needed to properly exit
*
* Returns: void function
*/
static void PreprocRestartFunction(int signal, void *foo)
{
/* restart code goes here */
}
snort-2.9.6.0/templates/sp_template.c 0000644 0000000 0000000 00000014312 10013174367 014404 0000000 0000000 /* $Id$ */
/* Snort Detection Plugin Source File Template */
/* sp_template
*
* Purpose:
*
* Detection engine plugins test an aspect of the current packet and report
* their findings. The function may be called many times per packet with
* different arguments. These functions are acccessed from the rules file
* as standard rule options. When adding a plugin to the system, be sure to
* add the "Setup" function to the InitPlugins() function call in
* plugbase.c!
*
* Arguments:
*
* This is the type of arguements that the detection plugin can take when
* referenced as a rule option
*
* Effect:
*
* What the plugin does.
*
* Comments:
*
* Any comments?
*
*/
#include
#include
#include
#include "rules.h"
#include "decode.h"
#include "plugbase.h"
#include "parser.h"
#include "debug.h"
#include "util.h"
#include "plugin_enum.h"
/*
* don't forget to include the name of this file in plugbase.c!
*/
/*
* setup any data structs here
*/
typedef struct _TemplateData
{
/*
* your detection option data
* structure info goes here
*/
} TemplateData;
/* function prototypes go here */
static void TemplateInit(char *, OptTreeNode *, int);
static void TemplateRuleParseFunction(char *, OptTreeNode *, TemplateData *);
static int TemplateDetectorFunction(Packet *, struct _OptTreeNode *,
OptFpList *);
/*
*
* Function: SetupTemplate()
*
* Purpose: Generic detection engine plugin template. Registers the
* configuration function and links it to a rule keyword. This is
* the function that gets called from InitPlugins in plugbase.c.
*
* Arguments: None.
*
* Returns: void function
*
*/
void SetupTemplate()
{
/* map the keyword to an initialization/processing function */
RegisterPlugin("keyword", TemplateInit);
DebugMessage(DEBUG_PLUGIN,"Plugin: TemplateName Setup\n");
}
/*
*
* Function: TemplateInit(char *, OptTreeNode *)
*
* Purpose: Generic rule configuration function. Handles parsing the rule
* information and attaching the associated detection function to
* the OTN.
*
* Arguments: data => rule arguments/data
* otn => pointer to the current rule option list node
*
* Returns: void function
*
*/
static void TemplateInit(char *data, OptTreeNode *otn, int protocol)
{
TemplateData *template_data;
OptFpList *ofl;
/*
* allocate the data structure and attach
* it to the rule's data struct list
*/
template_data = (TemplateData *) SnortAlloc(sizeof(TemplateData));
/*
* If this is a transport layer protocol plugin, be sure to
* check that the protocol that is passed in matches the
* transport layer protocol that you're using for this rule!
*/
/*
* any other initialization of this plugin should be performed here
*/
/*
* this is where the keyword arguments are processed and
* placed into the rule option's data structure
*/
TemplateRuleParseFunction(data, otn, template_data);
/*
* finally, attach the option's detection function
* to the rule's detect function pointer list
*
* AddOptFuncToList returns a pointer to the node in
* the function pointer list where the detector function
* is linked into the detection engine, we will grab the
* pointer to this node so that we can assign the
* config data for this rule option to the functional
* node's context pointer
*/
ofl = AddOptFuncToList(TemplateDetectorFunction, otn);
/*
* this is where we set the functional node's context pointer
* so that the plugin can find the data to test the network
* traffic against
*/
ofl->context = (void *) template_data;
}
/*
*
* Function: TemplateRuleParseFunction(char *, OptTreeNode *)
*
* Purpose: This is the function that is used to process the option keyword's
* arguments and attach them to the rule's data structures.
*
* Arguments: data => argument data
* otn => pointer to the current rule's OTN
* td => pointer to the configuration storage struct
*
* Returns: void function
*
*/
static void TemplateRuleParseFunction(
char *data,
OptTreeNode *otn,
TemplateData *td)
{
/*
* manipulate the option arguments here
*/
/*
* see the code in src/detection_plugins for examples of parsing Snort
* rule options
*/
/*
* set the final option arguments here
*/
}
/*
*
* Function: TemplateDetectorFunction(char *, OptTreeNode *, OptFpList *)
*
* Purpose: Use this function to perform the particular detection routine
* that this rule keyword is supposed to encompass.
*
* Arguments: data => argument data
* otn => pointer to the current rule's OTN
* fp_list => pointer to the function pointer list current node
*
* Returns: If the detection test fails, this function *must* return a zero!
* On success, it calls the next function in the detection list
*
*/
static int TemplateDetectorFunction(
Packet *p,
struct _OptTreeNode *otn,
OptFpList *fp_list)
{
TemplateData *td; /* ptr to the detection option's data */
/*
* Try to make this function as quick as possible, the faster the
* detection plugins are, the less packet loss the program will
* experience! Avoid doing things like declaring variables or
* anything other than just doing the test and moving on...
*/
/*
* get the current option's context data
*/
td = (TemplateData *) fp_list->context;
/*
* your detection function tests go here
*/
if (the_test_is_successful)
{
/* call the next function in the function list recursively */
/* THIS CALL *MUST* BE IN THE PLUGIN, OTHERWISE YOU WILL BREAK
SNORT'S DETECTION ENGINE!!! */
return fp_list->next->OptTestFunc(p, otn, fp_list->next);
}
#ifdef DEBUG
else
{
/*
* you can put debug comments here or not
*/
DebugMessage(DEBUG_PLUGIN,"No match\n");
}
#endif
/*
* if the test isn't successful, this function *must* return 0
*/
return 0;
}
snort-2.9.6.0/templates/Makefile.am 0000644 0000000 0000000 00000000173 07744774522 013777 0000000 0000000 ## $Id$
AUTOMAKE_OPTIONS=foreign no-dependencies
EXTRA_DIST = sp_template.c spp_template.c sp_template.h spp_template.h
snort-2.9.6.0/templates/Makefile.in 0000644 0000000 0000000 00000030014 12260606526 013770 0000000 0000000 # Makefile.in generated by automake 1.13.4 from Makefile.am.
# @configure_input@
# Copyright (C) 1994-2013 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.
@SET_MAKE@
VPATH = @srcdir@
am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
am__make_running_with_option = \
case $${target_option-} in \
?) ;; \
*) echo "am__make_running_with_option: internal error: invalid" \
"target option '$${target_option-}' specified" >&2; \
exit 1;; \
esac; \
has_opt=no; \
sane_makeflags=$$MAKEFLAGS; \
if $(am__is_gnu_make); then \
sane_makeflags=$$MFLAGS; \
else \
case $$MAKEFLAGS in \
*\\[\ \ ]*) \
bs=\\; \
sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
| sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
esac; \
fi; \
skip_next=no; \
strip_trailopt () \
{ \
flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
}; \
for flg in $$sane_makeflags; do \
test $$skip_next = yes && { skip_next=no; continue; }; \
case $$flg in \
*=*|--*) continue;; \
-*I) strip_trailopt 'I'; skip_next=yes;; \
-*I?*) strip_trailopt 'I';; \
-*O) strip_trailopt 'O'; skip_next=yes;; \
-*O?*) strip_trailopt 'O';; \
-*l) strip_trailopt 'l'; skip_next=yes;; \
-*l?*) strip_trailopt 'l';; \
-[dEDm]) skip_next=yes;; \
-[JT]) skip_next=yes;; \
esac; \
case $$flg in \
*$$target_option*) has_opt=yes; break;; \
esac; \
done; \
test $$has_opt = yes
am__make_dryrun = (target_option=n; $(am__make_running_with_option))
am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
pkgdatadir = $(datadir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
pkglibexecdir = $(libexecdir)/@PACKAGE@
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
install_sh_DATA = $(install_sh) -c -m 644
install_sh_PROGRAM = $(install_sh) -c
install_sh_SCRIPT = $(install_sh) -c
INSTALL_HEADER = $(INSTALL_DATA)
transform = $(program_transform_name)
NORMAL_INSTALL = :
PRE_INSTALL = :
POST_INSTALL = :
NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
subdir = templates
DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/configure.in
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
mkinstalldirs = $(install_sh) -d
CONFIG_HEADER = $(top_builddir)/config.h
CONFIG_CLEAN_FILES =
CONFIG_CLEAN_VPATH_FILES =
AM_V_P = $(am__v_P_@AM_V@)
am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
am__v_P_0 = false
am__v_P_1 = :
AM_V_GEN = $(am__v_GEN_@AM_V@)
am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
am__v_GEN_0 = @echo " GEN " $@;
am__v_GEN_1 =
AM_V_at = $(am__v_at_@AM_V@)
am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
am__v_at_0 = @
am__v_at_1 =
depcomp =
am__depfiles_maybe =
SOURCES =
DIST_SOURCES =
am__can_run_installinfo = \
case $$AM_UPDATE_INFO_DIR in \
n|no|NO) false;; \
*) (install-info --version) >/dev/null 2>&1;; \
esac
am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
ACLOCAL = @ACLOCAL@
AMTAR = @AMTAR@
AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
AR = @AR@
AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
CC = @CC@
CCDEPMODE = @CCDEPMODE@
CCONFIGFLAGS = @CCONFIGFLAGS@
CFLAGS = @CFLAGS@
CONFIGFLAGS = @CONFIGFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
DLLTOOL = @DLLTOOL@
DSYMUTIL = @DSYMUTIL@
DUMPBIN = @DUMPBIN@
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
FGREP = @FGREP@
GREP = @GREP@
ICONFIGFLAGS = @ICONFIGFLAGS@
INCLUDES = @INCLUDES@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
LD = @LD@
LDFLAGS = @LDFLAGS@
LEX = @LEX@
LIBOBJS = @LIBOBJS@
LIBS = @LIBS@
LIBTOOL = @LIBTOOL@
LIPO = @LIPO@
LN_S = @LN_S@
LTLIBOBJS = @LTLIBOBJS@
MAINT = @MAINT@
MAKEINFO = @MAKEINFO@
MANIFEST_TOOL = @MANIFEST_TOOL@
MKDIR_P = @MKDIR_P@
NM = @NM@
NMEDIT = @NMEDIT@
OBJDUMP = @OBJDUMP@
OBJEXT = @OBJEXT@
OTOOL = @OTOOL@
OTOOL64 = @OTOOL64@
PACKAGE = @PACKAGE@
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
PACKAGE_NAME = @PACKAGE_NAME@
PACKAGE_STRING = @PACKAGE_STRING@
PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_URL = @PACKAGE_URL@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
PKG_CONFIG = @PKG_CONFIG@
PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
RANLIB = @RANLIB@
RAZORBACK_CFLAGS = @RAZORBACK_CFLAGS@
RAZORBACK_LIBS = @RAZORBACK_LIBS@
SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SIGNAL_SNORT_DUMP_STATS = @SIGNAL_SNORT_DUMP_STATS@
SIGNAL_SNORT_READ_ATTR_TBL = @SIGNAL_SNORT_READ_ATTR_TBL@
SIGNAL_SNORT_RELOAD = @SIGNAL_SNORT_RELOAD@
SIGNAL_SNORT_ROTATE_STATS = @SIGNAL_SNORT_ROTATE_STATS@
STRIP = @STRIP@
VERSION = @VERSION@
XCCFLAGS = @XCCFLAGS@
YACC = @YACC@
abs_builddir = @abs_builddir@
abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
abs_top_srcdir = @abs_top_srcdir@
ac_ct_AR = @ac_ct_AR@
ac_ct_CC = @ac_ct_CC@
ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
am__tar = @am__tar@
am__untar = @am__untar@
bindir = @bindir@
build = @build@
build_alias = @build_alias@
build_cpu = @build_cpu@
build_os = @build_os@
build_vendor = @build_vendor@
builddir = @builddir@
datadir = @datadir@
datarootdir = @datarootdir@
docdir = @docdir@
dvidir = @dvidir@
exec_prefix = @exec_prefix@
extra_incl = @extra_incl@
host = @host@
host_alias = @host_alias@
host_cpu = @host_cpu@
host_os = @host_os@
host_vendor = @host_vendor@
htmldir = @htmldir@
includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
libdir = @libdir@
libexecdir = @libexecdir@
localedir = @localedir@
localstatedir = @localstatedir@
mandir = @mandir@
mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
sysconfdir = @sysconfdir@
target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
AUTOMAKE_OPTIONS = foreign no-dependencies
EXTRA_DIST = sp_template.c spp_template.c sp_template.h spp_template.h
all: all-am
.SUFFIXES:
$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
@for dep in $?; do \
case '$(am__configure_deps)' in \
*$$dep*) \
( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
&& { if test -f $@; then exit 0; else break; fi; }; \
exit 1;; \
esac; \
done; \
echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign templates/Makefile'; \
$(am__cd) $(top_srcdir) && \
$(AUTOMAKE) --foreign templates/Makefile
.PRECIOUS: Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \
*config.status*) \
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
*) \
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
esac;
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(am__aclocal_m4_deps):
mostlyclean-libtool:
-rm -f *.lo
clean-libtool:
-rm -rf .libs _libs
tags TAGS:
ctags CTAGS:
cscope cscopelist:
distdir: $(DISTFILES)
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
list='$(DISTFILES)'; \
dist_files=`for file in $$list; do echo $$file; done | \
sed -e "s|^$$srcdirstrip/||;t" \
-e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
case $$dist_files in \
*/*) $(MKDIR_P) `echo "$$dist_files" | \
sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
sort -u` ;; \
esac; \
for file in $$dist_files; do \
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
if test -d $$d/$$file; then \
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
if test -d "$(distdir)/$$file"; then \
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
fi; \
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
fi; \
cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
else \
test -f "$(distdir)/$$file" \
|| cp -p $$d/$$file "$(distdir)/$$file" \
|| exit 1; \
fi; \
done
check-am: all-am
check: check-am
all-am: Makefile
installdirs:
install: install-am
install-exec: install-exec-am
install-data: install-data-am
uninstall: uninstall-am
install-am: all-am
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
installcheck: installcheck-am
install-strip:
if test -z '$(STRIP)'; then \
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
install; \
else \
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
"INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
fi
mostlyclean-generic:
clean-generic:
distclean-generic:
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
maintainer-clean-generic:
@echo "This command is intended for maintainers to use"
@echo "it deletes files that may require special tools to rebuild."
clean: clean-am
clean-am: clean-generic clean-libtool mostlyclean-am
distclean: distclean-am
-rm -f Makefile
distclean-am: clean-am distclean-generic
dvi: dvi-am
dvi-am:
html: html-am
html-am:
info: info-am
info-am:
install-data-am:
install-dvi: install-dvi-am
install-dvi-am:
install-exec-am:
install-html: install-html-am
install-html-am:
install-info: install-info-am
install-info-am:
install-man:
install-pdf: install-pdf-am
install-pdf-am:
install-ps: install-ps-am
install-ps-am:
installcheck-am:
maintainer-clean: maintainer-clean-am
-rm -f Makefile
maintainer-clean-am: distclean-am maintainer-clean-generic
mostlyclean: mostlyclean-am
mostlyclean-am: mostlyclean-generic mostlyclean-libtool
pdf: pdf-am
pdf-am:
ps: ps-am
ps-am:
uninstall-am:
.MAKE: install-am install-strip
.PHONY: all all-am check check-am clean clean-generic clean-libtool \
cscopelist-am ctags-am distclean distclean-generic \
distclean-libtool distdir dvi dvi-am html html-am info info-am \
install install-am install-data install-data-am install-dvi \
install-dvi-am install-exec install-exec-am install-html \
install-html-am install-info install-info-am install-man \
install-pdf install-pdf-am install-ps install-ps-am \
install-strip installcheck installcheck-am installdirs \
maintainer-clean maintainer-clean-generic mostlyclean \
mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
tags-am uninstall uninstall-am
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:
snort-2.9.6.0/etc/ 0000755 0000000 0000000 00000000000 12260606571 010562 5 0000000 0000000 snort-2.9.6.0/etc/snort.conf 0000644 0000000 0000000 00000066300 12260606571 012523 0000000 0000000 #--------------------------------------------------
# VRT Rule Packages Snort.conf
#
# For more information visit us at:
# http://www.snort.org Snort Website
# http://vrt-blog.snort.org/ Sourcefire VRT Blog
#
# Mailing list Contact: snort-sigs@lists.sourceforge.net
# False Positive reports: fp@sourcefire.com
# Snort bugs: bugs@snort.org
#
# Compatible with Snort Versions:
# VERSIONS : 2.9.6.0
#
# Snort build options:
# OPTIONS : --enable-gre --enable-mpls --enable-targetbased --enable-ppm --enable-perfprofiling --enable-zlib --enable-active-response --enable-normalizer --enable-reload --enable-react --enable-flexresp3
#
# Additional information:
# This configuration file enables active response, to run snort in
# test mode -T you are required to supply an interface -i
# or test mode will fail to fully validate the configuration and
# exit with a FATAL error
#--------------------------------------------------
###################################################
# This file contains a sample snort configuration.
# You should take the following steps to create your own custom configuration:
#
# 1) Set the network variables.
# 2) Configure the decoder
# 3) Configure the base detection engine
# 4) Configure dynamic loaded libraries
# 5) Configure preprocessors
# 6) Configure output plugins
# 7) Customize your rule set
# 8) Customize preprocessor and decoder rule set
# 9) Customize shared object rule set
###################################################
###################################################
# Step #1: Set the network variables. For more information, see README.variables
###################################################
# Setup the network addresses you are protecting
ipvar HOME_NET any
# Set up the external network addresses. Leave as "any" in most situations
ipvar EXTERNAL_NET any
# List of DNS servers on your network
ipvar DNS_SERVERS $HOME_NET
# List of SMTP servers on your network
ipvar SMTP_SERVERS $HOME_NET
# List of web servers on your network
ipvar HTTP_SERVERS $HOME_NET
# List of sql servers on your network
ipvar SQL_SERVERS $HOME_NET
# List of telnet servers on your network
ipvar TELNET_SERVERS $HOME_NET
# List of ssh servers on your network
ipvar SSH_SERVERS $HOME_NET
# List of ftp servers on your network
ipvar FTP_SERVERS $HOME_NET
# List of sip servers on your network
ipvar SIP_SERVERS $HOME_NET
# List of ports you run web servers on
portvar HTTP_PORTS [36,80,81,82,83,84,85,86,87,88,89,90,311,383,555,591,593,631,801,808,818,901,972,1158,1220,1414,1533,1741,1830,2231,2301,2381,2809,3029,3037,3057,3128,3443,3702,4000,4343,4848,5117,5250,6080,6173,6988,7000,7001,7144,7145,7510,7770,7777,7779,8000,8008,8014,8028,8080,8081,8082,8085,8088,8090,8118,8123,8180,8181,8222,8243,8280,8300,8500,8509,8800,8888,8899,9000,9060,9080,9090,9091,9111,9443,9999,10000,11371,12601,15489,29991,33300,34412,34443,34444,41080,44449,50000,50002,51423,53331,55252,55555,56712]
# List of ports you want to look for SHELLCODE on.
portvar SHELLCODE_PORTS !80
# List of ports you might see oracle attacks on
portvar ORACLE_PORTS 1024:
# List of ports you want to look for SSH connections on:
portvar SSH_PORTS 22
# List of ports you run ftp servers on
portvar FTP_PORTS [21,2100,3535]
# List of ports you run SIP servers on
portvar SIP_PORTS [5060,5061,5600]
# List of file data ports for file inspection
portvar FILE_DATA_PORTS [$HTTP_PORTS,110,143]
# List of GTP ports for GTP preprocessor
portvar GTP_PORTS [2123,2152,3386]
# other variables, these should not be modified
ipvar AIM_SERVERS [64.12.24.0/23,64.12.28.0/23,64.12.161.0/24,64.12.163.0/24,64.12.200.0/24,205.188.3.0/24,205.188.5.0/24,205.188.7.0/24,205.188.9.0/24,205.188.153.0/24,205.188.179.0/24,205.188.248.0/24]
# Path to your rules files (this can be a relative path)
# Note for Windows users: You are advised to make this an absolute path,
# such as: c:\snort\rules
var RULE_PATH ../rules
var SO_RULE_PATH ../so_rules
var PREPROC_RULE_PATH ../preproc_rules
# If you are using reputation preprocessor set these
# Currently there is a bug with relative paths, they are relative to where snort is
# not relative to snort.conf like the above variables
# This is completely inconsistent with how other vars work, BUG 89986
# Set the absolute path appropriately
var WHITE_LIST_PATH ../rules
var BLACK_LIST_PATH ../rules
###################################################
# Step #2: Configure the decoder. For more information, see README.decode
###################################################
# Stop generic decode events:
config disable_decode_alerts
# Stop Alerts on experimental TCP options
config disable_tcpopt_experimental_alerts
# Stop Alerts on obsolete TCP options
config disable_tcpopt_obsolete_alerts
# Stop Alerts on T/TCP alerts
config disable_tcpopt_ttcp_alerts
# Stop Alerts on all other TCPOption type events:
config disable_tcpopt_alerts
# Stop Alerts on invalid ip options
config disable_ipopt_alerts
# Alert if value in length field (IP, TCP, UDP) is greater th elength of the packet
# config enable_decode_oversized_alerts
# Same as above, but drop packet if in Inline mode (requires enable_decode_oversized_alerts)
# config enable_decode_oversized_drops
# Configure IP / TCP checksum mode
config checksum_mode: all
# Configure maximum number of flowbit references. For more information, see README.flowbits
# config flowbits_size: 64
# Configure ports to ignore
# config ignore_ports: tcp 21 6667:6671 1356
# config ignore_ports: udp 1:17 53
# Configure active response for non inline operation. For more information, see REAMDE.active
# config response: eth0 attempts 2
# Configure DAQ related options for inline operation. For more information, see README.daq
#
# config daq:
# config daq_dir:
# config daq_mode:
# config daq_var:
#
# ::= pcap | afpacket | dump | nfq | ipq | ipfw
# ::= read-file | passive | inline
# ::= arbitrary = ::= path as to where to look for DAQ module so's
# Configure specific UID and GID to run snort as after dropping privs. For more information see snort -h command line options
#
# config set_gid:
# config set_uid:
# Configure default snaplen. Snort defaults to MTU of in use interface. For more information see README
#
# config snaplen:
#
# Configure default bpf_file to use for filtering what traffic reaches snort. For more information see snort -h command line options (-F)
#
# config bpf_file:
#
# Configure default log directory for snort to log to. For more information see snort -h command line options (-l)
#
# config logdir:
###################################################
# Step #3: Configure the base detection engine. For more information, see README.decode
###################################################
# Configure PCRE match limitations
config pcre_match_limit: 3500
config pcre_match_limit_recursion: 1500
# Configure the detection engine See the Snort Manual, Configuring Snort - Includes - Config
config detection: search-method ac-split search-optimize max-pattern-len 20
# Configure the event queue. For more information, see README.event_queue
config event_queue: max_queue 8 log 5 order_events content_length
###################################################
## Configure GTP if it is to be used.
## For more information, see README.GTP
####################################################
# config enable_gtp
###################################################
# Per packet and rule latency enforcement
# For more information see README.ppm
###################################################
# Per Packet latency configuration
#config ppm: max-pkt-time 250, \
# fastpath-expensive-packets, \
# pkt-log
# Per Rule latency configuration
#config ppm: max-rule-time 200, \
# threshold 3, \
# suspend-expensive-rules, \
# suspend-timeout 20, \
# rule-log alert
###################################################
# Configure Perf Profiling for debugging
# For more information see README.PerfProfiling
###################################################
#config profile_rules: print all, sort avg_ticks
#config profile_preprocs: print all, sort avg_ticks
###################################################
# Configure protocol aware flushing
# For more information see README.stream5
###################################################
config paf_max: 16000
###################################################
# Step #4: Configure dynamic loaded libraries.
# For more information, see Snort Manual, Configuring Snort - Dynamic Modules
###################################################
# path to dynamic preprocessor libraries
dynamicpreprocessor directory /usr/local/lib/snort_dynamicpreprocessor/
# path to base preprocessor engine
dynamicengine /usr/local/lib/snort_dynamicengine/libsf_engine.so
# path to dynamic rules libraries
dynamicdetection directory /usr/local/lib/snort_dynamicrules
###################################################
# Step #5: Configure preprocessors
# For more information, see the Snort Manual, Configuring Snort - Preprocessors
###################################################
# GTP Control Channle Preprocessor. For more information, see README.GTP
# preprocessor gtp: ports { 2123 3386 2152 }
# Inline packet normalization. For more information, see README.normalize
# Does nothing in IDS mode
preprocessor normalize_ip4
preprocessor normalize_tcp: ips ecn stream
preprocessor normalize_icmp4
preprocessor normalize_ip6
preprocessor normalize_icmp6
# Target-based IP defragmentation. For more inforation, see README.frag3
preprocessor frag3_global: max_frags 65536
preprocessor frag3_engine: policy windows detect_anomalies overlap_limit 10 min_fragment_length 100 timeout 180
# Target-Based stateful inspection/stream reassembly. For more inforation, see README.stream5
preprocessor stream5_global: track_tcp yes, \
track_udp yes, \
track_icmp no, \
max_tcp 262144, \
max_udp 131072, \
max_active_responses 2, \
min_response_seconds 5
preprocessor stream5_tcp: policy windows, detect_anomalies, require_3whs 180, \
overlap_limit 10, small_segments 3 bytes 150, timeout 180, \
ports client 21 22 23 25 42 53 70 79 109 110 111 113 119 135 136 137 139 143 \
161 445 513 514 587 593 691 1433 1521 1741 2100 3306 6070 6665 6666 6667 6668 6669 \
7000 8181 32770 32771 32772 32773 32774 32775 32776 32777 32778 32779, \
ports both 36 80 81 82 83 84 85 86 87 88 89 90 110 311 383 443 465 563 555 591 593 631 636 801 808 818 901 972 989 992 993 994 995 1158 1220 1414 1533 1741 1830 2231 2301 2381 2809 3029 3037 3057 3128 3443 3702 4000 4343 4848 5117 5250 6080 6173 6988 7907 7000 7001 7144 7145 7510 7802 7770 7777 7779 \
7801 7900 7901 7902 7903 7904 7905 7906 7908 7909 7910 7911 7912 7913 7914 7915 7916 \
7917 7918 7919 7920 8000 8008 8014 8028 8080 8081 8082 8085 8088 8090 8118 8123 8180 8181 8222 8243 8280 8300 8500 8509 8800 8888 8899 9000 9060 9080 9090 9091 9111 9443 9999 10000 11371 12601 15489 29991 33300 34412 34443 34444 41080 44449 50000 50002 51423 53331 55252 55555 56712
preprocessor stream5_udp: timeout 180
# performance statistics. For more information, see the Snort Manual, Configuring Snort - Preprocessors - Performance Monitor
# preprocessor perfmonitor: time 300 file /var/snort/snort.stats pktcnt 10000
# HTTP normalization and anomaly detection. For more information, see README.http_inspect
preprocessor http_inspect: global iis_unicode_map unicode.map 1252 compress_depth 65535 decompress_depth 65535
preprocessor http_inspect_server: server default \
http_methods { GET POST PUT SEARCH MKCOL COPY MOVE LOCK UNLOCK NOTIFY POLL BCOPY BDELETE BMOVE LINK UNLINK OPTIONS HEAD DELETE TRACE TRACK CONNECT SOURCE SUBSCRIBE UNSUBSCRIBE PROPFIND PROPPATCH BPROPFIND BPROPPATCH RPC_CONNECT PROXY_SUCCESS BITS_POST CCM_POST SMS_POST RPC_IN_DATA RPC_OUT_DATA RPC_ECHO_DATA } \
chunk_length 500000 \
server_flow_depth 0 \
client_flow_depth 0 \
post_depth 65495 \
oversize_dir_length 500 \
max_header_length 750 \
max_headers 100 \
max_spaces 200 \
small_chunk_length { 10 5 } \
ports { 36 80 81 82 83 84 85 86 87 88 89 90 311 383 555 591 593 631 801 808 818 901 972 1158 1220 1414 1741 1830 2231 2301 2381 2809 3029 3037 3057 3128 3443 3702 4000 4343 4848 5117 5250 6080 6173 6988 7000 7001 7144 7145 7510 7770 7777 7779 8000 8008 8014 8028 8080 8081 8082 8085 8088 8090 8118 8123 8180 8181 8222 8243 8280 8300 8500 8509 8800 8888 8899 9000 9060 9080 9090 9091 9111 9443 9999 10000 11371 12601 15489 29991 33300 34412 34443 34444 41080 44449 50000 50002 51423 53331 55252 55555 56712 } \
non_rfc_char { 0x00 0x01 0x02 0x03 0x04 0x05 0x06 0x07 } \
enable_cookie \
extended_response_inspection \
inspect_gzip \
normalize_utf \
unlimited_decompress \
normalize_javascript \
apache_whitespace no \
ascii no \
bare_byte no \
directory no \
double_decode no \
iis_backslash no \
iis_delimiter no \
iis_unicode no \
multi_slash no \
utf_8 no \
u_encode yes \
webroot no
# ONC-RPC normalization and anomaly detection. For more information, see the Snort Manual, Configuring Snort - Preprocessors - RPC Decode
preprocessor rpc_decode: 111 32770 32771 32772 32773 32774 32775 32776 32777 32778 32779 no_alert_multiple_requests no_alert_large_fragments no_alert_incomplete
# Back Orifice detection.
preprocessor bo
# FTP / Telnet normalization and anomaly detection. For more information, see README.ftptelnet
preprocessor ftp_telnet: global inspection_type stateful encrypted_traffic no check_encrypted
preprocessor ftp_telnet_protocol: telnet \
ayt_attack_thresh 20 \
normalize ports { 23 } \
detect_anomalies
preprocessor ftp_telnet_protocol: ftp server default \
def_max_param_len 100 \
ports { 21 2100 3535 } \
telnet_cmds yes \
ignore_telnet_erase_cmds yes \
ftp_cmds { ABOR ACCT ADAT ALLO APPE AUTH CCC CDUP } \
ftp_cmds { CEL CLNT CMD CONF CWD DELE ENC EPRT } \
ftp_cmds { EPSV ESTA ESTP FEAT HELP LANG LIST LPRT } \
ftp_cmds { LPSV MACB MAIL MDTM MIC MKD MLSD MLST } \
ftp_cmds { MODE NLST NOOP OPTS PASS PASV PBSZ PORT } \
ftp_cmds { PROT PWD QUIT REIN REST RETR RMD RNFR } \
ftp_cmds { RNTO SDUP SITE SIZE SMNT STAT STOR STOU } \
ftp_cmds { STRU SYST TEST TYPE USER XCUP XCRC XCWD } \
ftp_cmds { XMAS XMD5 XMKD XPWD XRCP XRMD XRSQ XSEM } \
ftp_cmds { XSEN XSHA1 XSHA256 } \
alt_max_param_len 0 { ABOR CCC CDUP ESTA FEAT LPSV NOOP PASV PWD QUIT REIN STOU SYST XCUP XPWD } \
alt_max_param_len 200 { ALLO APPE CMD HELP NLST RETR RNFR STOR STOU XMKD } \
alt_max_param_len 256 { CWD RNTO } \
alt_max_param_len 400 { PORT } \
alt_max_param_len 512 { SIZE } \
chk_str_fmt { ACCT ADAT ALLO APPE AUTH CEL CLNT CMD } \
chk_str_fmt { CONF CWD DELE ENC EPRT EPSV ESTP HELP } \
chk_str_fmt { LANG LIST LPRT MACB MAIL MDTM MIC MKD } \
chk_str_fmt { MLSD MLST MODE NLST OPTS PASS PBSZ PORT } \
chk_str_fmt { PROT REST RETR RMD RNFR RNTO SDUP SITE } \
chk_str_fmt { SIZE SMNT STAT STOR STRU TEST TYPE USER } \
chk_str_fmt { XCRC XCWD XMAS XMD5 XMKD XRCP XRMD XRSQ } \
chk_str_fmt { XSEM XSEN XSHA1 XSHA256 } \
cmd_validity ALLO < int [ char R int ] > \
cmd_validity EPSV < [ { char 12 | char A char L char L } ] > \
cmd_validity MACB < string > \
cmd_validity MDTM < [ date nnnnnnnnnnnnnn[.n[n[n]]] ] string > \
cmd_validity MODE < char ASBCZ > \
cmd_validity PORT < host_port > \
cmd_validity PROT < char CSEP > \
cmd_validity STRU < char FRPO [ string ] > \
cmd_validity TYPE < { char AE [ char NTC ] | char I | char L [ number ] } >
preprocessor ftp_telnet_protocol: ftp client default \
max_resp_len 256 \
bounce yes \
ignore_telnet_erase_cmds yes \
telnet_cmds yes
# SMTP normalization and anomaly detection. For more information, see README.SMTP
preprocessor smtp: ports { 25 465 587 691 } \
inspection_type stateful \
b64_decode_depth 0 \
qp_decode_depth 0 \
bitenc_decode_depth 0 \
uu_decode_depth 0 \
log_mailfrom \
log_rcptto \
log_filename \
log_email_hdrs \
normalize cmds \
normalize_cmds { ATRN AUTH BDAT CHUNKING DATA DEBUG EHLO EMAL ESAM ESND ESOM ETRN EVFY } \
normalize_cmds { EXPN HELO HELP IDENT MAIL NOOP ONEX QUEU QUIT RCPT RSET SAML SEND SOML } \
normalize_cmds { STARTTLS TICK TIME TURN TURNME VERB VRFY X-ADAT X-DRCP X-ERCP X-EXCH50 } \
normalize_cmds { X-EXPS X-LINK2STATE XADR XAUTH XCIR XEXCH50 XGEN XLICENSE XQUE XSTA XTRN XUSR } \
max_command_line_len 512 \
max_header_line_len 1000 \
max_response_line_len 512 \
alt_max_command_line_len 260 { MAIL } \
alt_max_command_line_len 300 { RCPT } \
alt_max_command_line_len 500 { HELP HELO ETRN EHLO } \
alt_max_command_line_len 255 { EXPN VRFY ATRN SIZE BDAT DEBUG EMAL ESAM ESND ESOM EVFY IDENT NOOP RSET } \
alt_max_command_line_len 246 { SEND SAML SOML AUTH TURN ETRN DATA RSET QUIT ONEX QUEU STARTTLS TICK TIME TURNME VERB X-EXPS X-LINK2STATE XADR XAUTH XCIR XEXCH50 XGEN XLICENSE XQUE XSTA XTRN XUSR } \
valid_cmds { ATRN AUTH BDAT CHUNKING DATA DEBUG EHLO EMAL ESAM ESND ESOM ETRN EVFY } \
valid_cmds { EXPN HELO HELP IDENT MAIL NOOP ONEX QUEU QUIT RCPT RSET SAML SEND SOML } \
valid_cmds { STARTTLS TICK TIME TURN TURNME VERB VRFY X-ADAT X-DRCP X-ERCP X-EXCH50 } \
valid_cmds { X-EXPS X-LINK2STATE XADR XAUTH XCIR XEXCH50 XGEN XLICENSE XQUE XSTA XTRN XUSR } \
xlink2state { enabled }
# Portscan detection. For more information, see README.sfportscan
# preprocessor sfportscan: proto { all } memcap { 10000000 } sense_level { low }
# ARP spoof detection. For more information, see the Snort Manual - Configuring Snort - Preprocessors - ARP Spoof Preprocessor
# preprocessor arpspoof
# preprocessor arpspoof_detect_host: 192.168.40.1 f0:0f:00:f0:0f:00
# SSH anomaly detection. For more information, see README.ssh
preprocessor ssh: server_ports { 22 } \
autodetect \
max_client_bytes 19600 \
max_encrypted_packets 20 \
max_server_version_len 100 \
enable_respoverflow enable_ssh1crc32 \
enable_srvoverflow enable_protomismatch
# SMB / DCE-RPC normalization and anomaly detection. For more information, see README.dcerpc2
preprocessor dcerpc2: memcap 102400, events [co ]
preprocessor dcerpc2_server: default, policy WinXP, \
detect [smb [139,445], tcp 135, udp 135, rpc-over-http-server 593], \
autodetect [tcp 1025:, udp 1025:, rpc-over-http-server 1025:], \
smb_max_chain 3, smb_invalid_shares ["C$", "D$", "ADMIN$"]
# DNS anomaly detection. For more information, see README.dns
preprocessor dns: ports { 53 } enable_rdata_overflow
# SSL anomaly detection and traffic bypass. For more information, see README.ssl
preprocessor ssl: ports { 443 465 563 636 989 992 993 994 995 7801 7802 7900 7901 7902 7903 7904 7905 7906 7907 7908 7909 7910 7911 7912 7913 7914 7915 7916 7917 7918 7919 7920 }, trustservers, noinspect_encrypted
# SDF sensitive data preprocessor. For more information see README.sensitive_data
preprocessor sensitive_data: alert_threshold 25
# SIP Session Initiation Protocol preprocessor. For more information see README.sip
preprocessor sip: max_sessions 40000, \
ports { 5060 5061 5600 }, \
methods { invite \
cancel \
ack \
bye \
register \
options \
refer \
subscribe \
update \
join \
info \
message \
notify \
benotify \
do \
qauth \
sprack \
publish \
service \
unsubscribe \
prack }, \
max_uri_len 512, \
max_call_id_len 80, \
max_requestName_len 20, \
max_from_len 256, \
max_to_len 256, \
max_via_len 1024, \
max_contact_len 512, \
max_content_len 2048
# IMAP preprocessor. For more information see README.imap
preprocessor imap: \
ports { 143 } \
b64_decode_depth 0 \
qp_decode_depth 0 \
bitenc_decode_depth 0 \
uu_decode_depth 0
# POP preprocessor. For more information see README.pop
preprocessor pop: \
ports { 110 } \
b64_decode_depth 0 \
qp_decode_depth 0 \
bitenc_decode_depth 0 \
uu_decode_depth 0
# Modbus preprocessor. For more information see README.modbus
preprocessor modbus: ports { 502 }
# DNP3 preprocessor. For more information see README.dnp3
preprocessor dnp3: ports { 20000 } \
memcap 262144 \
check_crc
# Reputation preprocessor. For more information see README.reputation
preprocessor reputation: \
memcap 500, \
priority whitelist, \
nested_ip inner, \
whitelist $WHITE_LIST_PATH/white_list.rules, \
blacklist $BLACK_LIST_PATH/black_list.rules
###################################################
# Step #6: Configure output plugins
# For more information, see Snort Manual, Configuring Snort - Output Modules
###################################################
# unified2
# Recommended for most installs
# output unified2: filename merged.log, limit 128, nostamp, mpls_event_types, vlan_event_types
# Additional configuration for specific types of installs
# output alert_unified2: filename snort.alert, limit 128, nostamp
# output log_unified2: filename snort.log, limit 128, nostamp
# syslog
# output alert_syslog: LOG_AUTH LOG_ALERT
# pcap
# output log_tcpdump: tcpdump.log
# metadata reference data. do not modify these lines
include classification.config
include reference.config
###################################################
# Step #7: Customize your rule set
# For more information, see Snort Manual, Writing Snort Rules
#
# NOTE: All categories are enabled in this conf file
###################################################
# site specific rules
include $RULE_PATH/local.rules
include $RULE_PATH/app-detect.rules
include $RULE_PATH/attack-responses.rules
include $RULE_PATH/backdoor.rules
include $RULE_PATH/bad-traffic.rules
include $RULE_PATH/blacklist.rules
include $RULE_PATH/botnet-cnc.rules
include $RULE_PATH/browser-chrome.rules
include $RULE_PATH/browser-firefox.rules
include $RULE_PATH/browser-ie.rules
include $RULE_PATH/browser-other.rules
include $RULE_PATH/browser-plugins.rules
include $RULE_PATH/browser-webkit.rules
include $RULE_PATH/chat.rules
include $RULE_PATH/content-replace.rules
include $RULE_PATH/ddos.rules
include $RULE_PATH/dns.rules
include $RULE_PATH/dos.rules
include $RULE_PATH/experimental.rules
include $RULE_PATH/exploit-kit.rules
include $RULE_PATH/exploit.rules
include $RULE_PATH/file-executable.rules
include $RULE_PATH/file-flash.rules
include $RULE_PATH/file-identify.rules
include $RULE_PATH/file-image.rules
include $RULE_PATH/file-java.rules
include $RULE_PATH/file-multimedia.rules
include $RULE_PATH/file-office.rules
include $RULE_PATH/file-other.rules
include $RULE_PATH/file-pdf.rules
include $RULE_PATH/finger.rules
include $RULE_PATH/ftp.rules
include $RULE_PATH/icmp-info.rules
include $RULE_PATH/icmp.rules
include $RULE_PATH/imap.rules
include $RULE_PATH/indicator-compromise.rules
include $RULE_PATH/indicator-obfuscation.rules
include $RULE_PATH/indicator-scan.rules
include $RULE_PATH/indicator-shellcode.rules
include $RULE_PATH/info.rules
include $RULE_PATH/malware-backdoor.rules
include $RULE_PATH/malware-cnc.rules
include $RULE_PATH/malware-other.rules
include $RULE_PATH/malware-tools.rules
include $RULE_PATH/misc.rules
include $RULE_PATH/multimedia.rules
include $RULE_PATH/mysql.rules
include $RULE_PATH/netbios.rules
include $RULE_PATH/nntp.rules
include $RULE_PATH/oracle.rules
include $RULE_PATH/os-linux.rules
include $RULE_PATH/os-mobile.rules
include $RULE_PATH/os-other.rules
include $RULE_PATH/os-solaris.rules
include $RULE_PATH/os-windows.rules
include $RULE_PATH/other-ids.rules
include $RULE_PATH/p2p.rules
include $RULE_PATH/phishing-spam.rules
include $RULE_PATH/policy-multimedia.rules
include $RULE_PATH/policy-other.rules
include $RULE_PATH/policy.rules
include $RULE_PATH/policy-social.rules
include $RULE_PATH/policy-spam.rules
include $RULE_PATH/pop2.rules
include $RULE_PATH/pop3.rules
include $RULE_PATH/protocol-dns.rules
include $RULE_PATH/protocol-finger.rules
include $RULE_PATH/protocol-ftp.rules
include $RULE_PATH/protocol-icmp.rules
include $RULE_PATH/protocol-imap.rules
include $RULE_PATH/protocol-nntp.rules
include $RULE_PATH/protocol-pop.rules
include $RULE_PATH/protocol-rpc.rules
include $RULE_PATH/protocol-scada.rules
include $RULE_PATH/protocol-services.rules
include $RULE_PATH/protocol-snmp.rules
include $RULE_PATH/protocol-telnet.rules
include $RULE_PATH/protocol-tftp.rules
include $RULE_PATH/protocol-voip.rules
include $RULE_PATH/pua-adware.rules
include $RULE_PATH/pua-other.rules
include $RULE_PATH/pua-p2p.rules
include $RULE_PATH/pua-toolbars.rules
include $RULE_PATH/rpc.rules
include $RULE_PATH/rservices.rules
include $RULE_PATH/scada.rules
include $RULE_PATH/scan.rules
include $RULE_PATH/server-apache.rules
include $RULE_PATH/server-iis.rules
include $RULE_PATH/server-mail.rules
include $RULE_PATH/server-mssql.rules
include $RULE_PATH/server-mysql.rules
include $RULE_PATH/server-oracle.rules
include $RULE_PATH/server-other.rules
include $RULE_PATH/server-samba.rules
include $RULE_PATH/server-webapp.rules
include $RULE_PATH/shellcode.rules
include $RULE_PATH/smtp.rules
include $RULE_PATH/snmp.rules
include $RULE_PATH/specific-threats.rules
include $RULE_PATH/spyware-put.rules
include $RULE_PATH/sql.rules
include $RULE_PATH/telnet.rules
include $RULE_PATH/tftp.rules
include $RULE_PATH/virus.rules
include $RULE_PATH/voip.rules
include $RULE_PATH/web-activex.rules
include $RULE_PATH/web-attacks.rules
include $RULE_PATH/web-cgi.rules
include $RULE_PATH/web-client.rules
include $RULE_PATH/web-coldfusion.rules
include $RULE_PATH/web-frontpage.rules
include $RULE_PATH/web-iis.rules
include $RULE_PATH/web-misc.rules
include $RULE_PATH/web-php.rules
include $RULE_PATH/x11.rules
###################################################
# Step #8: Customize your preprocessor and decoder alerts
# For more information, see README.decoder_preproc_rules
###################################################
# decoder and preprocessor event rules
# include $PREPROC_RULE_PATH/preprocessor.rules
# include $PREPROC_RULE_PATH/decoder.rules
# include $PREPROC_RULE_PATH/sensitive-data.rules
###################################################
# Step #9: Customize your Shared Object Snort Rules
# For more information, see http://vrt-blog.snort.org/2009/01/using-vrt-certified-shared-object-rules.html
###################################################
# dynamic library rules
# include $SO_RULE_PATH/bad-traffic.rules
# include $SO_RULE_PATH/chat.rules
# include $SO_RULE_PATH/dos.rules
# include $SO_RULE_PATH/exploit.rules
# include $SO_RULE_PATH/icmp.rules
# include $SO_RULE_PATH/imap.rules
# include $SO_RULE_PATH/misc.rules
# include $SO_RULE_PATH/multimedia.rules
# include $SO_RULE_PATH/netbios.rules
# include $SO_RULE_PATH/nntp.rules
# include $SO_RULE_PATH/p2p.rules
# include $SO_RULE_PATH/smtp.rules
# include $SO_RULE_PATH/snmp.rules
# include $SO_RULE_PATH/specific-threats.rules
# include $SO_RULE_PATH/web-activex.rules
# include $SO_RULE_PATH/web-client.rules
# include $SO_RULE_PATH/web-iis.rules
# include $SO_RULE_PATH/web-misc.rules
# Event thresholding or suppression commands. See threshold.conf
include threshold.conf
snort-2.9.6.0/etc/file_magic.conf 0000644 0000000 0000000 00000050636 12260355636 013445 0000000 0000000 file type:XLW; id:1; category: Office Documents; msg:"Excel spreadsheet subheader (MS Office)"; rev:1; content:| 09 08 10 00 00 06 05 00 |; offset:512;
file type:POSIX_TAR; id:2; category:Archive; msg:"POSIX Tape Archive file"; rev:1; content:| 75 73 74 61 72 00 20 20 |; offset:257;
file type:OLD_TAR; id:3; category:Archive; msg:"Pre-POSIX Tape Archive file"; rev:1; content:| 75 73 74 61 72 20 |; offset:257;
file type:MOV; id:4; category:Multimedia; msg:"QuickTime movie file"; rev:1; content:| 66 72 65 65 |; offset:4;
file type:MOV; id:5; category: Multimedia; msg:"QuickTime movie file"; rev:1; content:| 6D 6F 6F 76 |; offset:4;
file type:MOV; id:6;category: Multimedia; msg:"QuickTime movie file"; rev:1; content:| 6D 64 61 74 |; offset:4;
file type:MOV; id:7; category: Multimedia; msg:"QuickTime movie file"; rev:1; content:| 70 6E 6F 74 |; offset:4;
file type:MOV; id:8; category: Multimedia; msg:"QuickTime movie file"; rev:1; content:| 66 74 79 70 71 74 |; offset:4;
file type:LHA; id:9; category:Archive;msg:"File compressed with lha utility/algorithm (lha, lzh)"; rev:1; content:| 2D 6C 68 |; offset:2;
file type:ISO; id:10; category:System files; msg:"Disc Image file based on ISO-9660 standard (iso)c"; rev:1; content:| 43 44 30 30 31 |; offset:32769;
file type:ISO; id:11; category:System files; msg:"Disc Image file based on ISO-9660 standard (iso)c"; rev:1; content:| 43 44 30 30 31 |; offset:34817;
file type:ISO; id:12; category:System files; msg:"Disc Image file based on ISO-9660 standard (iso)c"; rev:1; content:| 43 44 30 30 31 |; offset:36865;
file type:S3M; id:13; category:Multimedia; msg:"S3M audio module format"; rev:1; content:| 53 43 52 4d |; offset:44;
file type:FLIC; id:14; category:Multimedia; msg:"FLIC Animation file"; rev:2; content:|11 AF|; offset:4; content:|40 01|; offset:8; content:|c8 00|; offset:10; content:|00 00|; offset:20; content:|00 00 00 00 00 00 00 00|; offset:42;
file type:FLIC; id:15; category:Multimedia; msg:"FLIC Animation file"; rev:2; content:|12 AF|; offset:4; content:|40 01|; offset:8; content:|c8 00|; offset:10; content:|00 00|; offset:20; content:|00 00 00 00 00 00 00 00|; offset:42;
file type:MSEXE; id:21; category:Executables; msg:"Windows/DOS executable file "; rev:1; content:| 4D 5A|; offset:0;
file type:PDF; id:22; category:PDF files; msg:"PDF file "; rev:1; content:| 25 50 44 46|; offset:0;
file type:RTF; id:23; category: Office Documents; msg:"Rich text format word processing file "; rev:1; content:| 7B 5C 72 74 66 31|; offset:0;
file type:RIFF; id:24; category:Multimedia; msg:"Resource Interchange File Format "; rev:1; content:| 52 49 46 46|; offset:0;
file type:MSCHM;id:25; category:Office Documents; msg:"Microsoft Compiled HTML Help File "; rev:1; content:| 49 54 53 46|; offset:0;
file type:MSCAB; id:26; category:Archive; msg:"Microsoft Windows CAB "; rev:1; content:| 4D 53 43 46|; offset:0;
file type:MSOLE2; id:27; category:Office Documents; msg:"Microsoft Office applications OLE Document "; rev:1; content:| D0 CF 11 E0 A1 B1 1A E1|; offset:0;
file type:MSSZDD; id:28; category:Archive; msg:"SZDD file format"; rev:1; content:| 53 5A 44 44 88 F0 27 33 |; offset:0;
file type:ZIP; id:29; category:Archive; msg:"PKZIP archive file"; rev:1; content:| 50 4B 03 04 |; offset:0;
file type:RAR; id:30; category:Archive; msg:"WinRAR compressed archive file"; rev:1; content:| 52 61 72 21 1A 07 00 |; offset:0;
file type:7Z; id:31; category:Archive; msg:"7-Zip compressed file"; rev:1; content:| 37 7A BC AF 27 1C |; offset:0;
file type:BZ; id:32; category:Archive; msg:"bzip2 compressed archive"; rev:1; content:| 42 5A 68 |; offset:0;
file type:GZ; id:33; category:Archive; msg:"GZ"; rev:1; content:| 1F 8B 08 |; offset:0;
file type:ARJ; id:34; category:Archive; msg:"Compressed archive file"; rev:1; content:| 60 EA 00 00 |; offset:0;
file type:ISHIELD_MSI; id:35; category:Executables; msg:"Install Shield v5.x or 6.x compressed file"; rev:1; content:| 49 53 63 28 |; offset:0;
file type:BINHEX; id:36; category:Executables; msg:"Macintosh BinHex 4 Compressed Archive"; rev:1; content:| 28 54 68 69 73 20 66 69 6C 65 20 6D 75 73 74 20 62 65 20 63 6F 6E 76 65 72 74 65 64 20 77 69 74 68 20 42 69 6E 48 65 78 20 |; offset:0;
file type:MAIL; id:37; category:Office Documents; msg:"E-mail files for Netscape, Eudora, Outlook Express and QuickMail."; rev:1; content:| 46 72 6F 6D 20 20 20 |; offset:0;
file type:MAIL; id:38; category:Office Documents; msg:"E-mail files for Netscape, Eudora, Outlook Express and QuickMail."; rev:1; content:| 46 72 6F 6D 20 3F 3F 3F |; offset:0;
file type:MAIL; id:39; category:Office Documents; msg:"E-mail files for Netscape, Eudora, Outlook Express and QuickMail."; rev:1; content:| 46 72 6F 6D 3A 20 |; offset:0;
file type:MAIL; id:40; category:Office Documents; msg:"E-mail files for Netscape, Eudora, Outlook Express and QuickMail."; rev:1; content:| 52 65 74 75 72 6E 2D 50 61 74 68 3A 20 |; offset:0;
file type:MAIL; id:41; category:Office Documents; msg:"E-mail files for Netscape, Eudora, Outlook Express and QuickMail."; rev:1; content:| 58 2D |; offset:0;
file type:TNEF; id:42; category:Office Documents; msg:"Transport Neutral Encapsulation Format, an E-mail attachment format "; rev:1; content:| 78 9F 3E 22 |; offset:0;
file type:BINARY_DATA; id:43; category:Executables; msg:"Universal Binary/Java Bytecode"; rev:1; content:| CA FE BA BE|; offset:0;
file type:UUencoded; id:44; category:Encoded; msg:"UUencoded file"; rev:1; content:| 62 65 67 69 6E |; offset:0;
file type:SCRENC; id:45; category:Encoded; msg:"Script encoder file"; rev:1; content:| 23 40 7E 5E |; offset:0;
file type:ELF; id:46; category:Executables; msg:"Executable and Linking Format executable file (Linux/Unix)"; rev:1; content:| 7F 45 4C 46|; offset:0;
file type:MACHO; id:47; category:Executables; msg:"Mach object file format "; rev:1; content:| CE FA ED FE |; offset:0;
file type:MACHO; id:48; category:Executables; msg:"Mach object file format "; rev:1; content:| CF FA ED FE |; offset:0;
file type:MACHO; id:49; category:Executables; msg:"Mach object file format "; rev:1; content:| FE ED FA CE |; offset:0;
file type:MACHO; id:50; category:Executables; msg:"Mach object file format "; rev:1; content:| FE ED FA CF |; offset:0;
file type:SIS; id:51; category:Archive; msg:"Software Installation Script, an archive for Symbian OS"; rev:1; content:| 19 04 00 10 |; offset:0;
file type:SWF; id:52; category:Multimedia; msg:"Flash file "; rev:1; content:| 43 57 53 |; offset:0;
file type:SWF; id:53; category:Multimedia; msg:"Flash file "; rev:1; content:| 46 57 53 |; offset:0;
file type:SWF; id:54; category:Multimedia; msg:"Flash file "; rev:1; content:| 58 46 49 52|; offset:0;
file type:CPIO_ODC; id:55; category:Archive; msg:"Archive created with the cpio utility- standard ASCII format"; rev:1; content:| 30 37 30 37 30 37 |; offset:0;
file type:CPIO_NEWC; id:56; category:Archive; msg:"Archive created with the cpio utility- new ASCII (aka SVR4) format"; rev:1; content:| 30 37 30 37 30 31 |; offset:0;
file type:CPIO_CRC; id:57; category:Archive; msg:"Archive created with the cpio utility- CRC format"; rev:1; content:| 30 37 30 37 30 32 |; offset:0;
file type:MPEG; id:58; category:Multimedia; msg:"MPEG video file"; rev:1; content:| 00 00 01 B3|; offset:0;
file type:MPEG; id:59; category:Multimedia; msg:"MPEG video file"; rev:1; content:| 00 00 01 BA|; offset:0;
file type:EPS; id:60; category:PDF files; msg:"Adobe encapsulated PostScript file"; rev:1; content:| 25 21 50 53 2D 41 64 6F 62 65 2D |; offset:0;
file type:RMF; id:61; category:Multimedia; msg:"RealNetworks RealMedia streaming media file"; rev:1; content:| 2E 52 4D 46 |; offset:0;
file type:GIF; id:62; category:Graphics; msg:"GIF"; rev:1; content:| 47 49 46 38 37 61 |; offset:0;
file type:GIF; id:63; category:Graphics; msg:"GIF"; rev:1; content:| 47 49 46 38 39 61 |; offset:0;
file type:MP3; id:64; category:Multimedia; msg:"MPEG-1 Audio Layer 3 (MP3) audio file"; rev:1; content:| 49 44 33 |; offset:0;
file type:MP3; id:65; category:Multimedia; msg:"MPEG-1 Audio Layer 3 (MP3) audio file"; rev:1; content:| FF FB 90 |; offset:0;
file type:OGG; id:66; category:Multimedia; msg:"Ogg Vorbis Codec compressed Multimedia file"; rev:1; content:| 4F 67 67 53 |; offset:0;
file type:RIFX; id:67; category:Multimedia; msg:"RIFX audio format"; rev:1; content:| 52 49 46 58 |; offset:0;
file type:SYMANTEC; id:68; category:System files; msg:"Symantec files"; rev:1; content:| 58 2D 53 79 6D 61 6E 74 65 63 2D |; offset:0;
file type:PNG; id:69; category:Graphics; msg:"Portable Network Graphics file"; rev:1; content:| 89 50 4E 47 0D 0A 1A 0A |; offset:0;
file type:JPEG; id:70; category:Graphics; msg:"JPEG/JFIF graphics file"; rev:1; content:| FF D8 FF E0 |; offset:0; content:| 4A 46 49 46 00 |; offset:6;
#file type:SIP_LOG; id:71; category:System files; msg:"SIP log file"; rev:1; content:| 53 49 50 2D 48 49 54 20 28 53 49 50 2F 48 |; offset:0;
file type:JARPACK; id:72; category:Executables; msg:"Jar pack file"; rev:1; content:| CA FE D0 0D |; offset:0;
file type:JAR; id:73; category:Archive; msg:"Java archive file"; rev:3; content:| 50 4B 03 04 |; offset:0; content:| 4D 45 54 41 2D 49 4E 46 2F |; offset: 30;
file type:FLV; id:74; category:Multimedia; msg:"Flash video file"; rev:1; content:| 46 4C 56 01 |; offset:0;
file type:WAV; id:75; category:Multimedia; msg:"Waveform Audio File Format"; rev:1; content:| 52 49 46 58 |; offset:0;
file type:WAV; id:76; category:Multimedia; msg:"Waveform Audio File Format"; rev:1; content:| 62 65 61 74 |; offset:0;
file type:WAV; id:77; category:Multimedia; msg:"Waveform Audio File Format"; rev:1; content:| 4D 58 43 33 |; offset:0;
file type:FFMPEG; id:78; category:Multimedia; msg:"ffmpeg Multimedia framework"; rev:1; content:| 34 58 4D 56 |; offset:0;
file type:DMG; id:79; category:System files; msg:"Apple Disk Image"; rev:1; content:| 45 52 02 00 |; offset:0;
file type:DMG; id:80; category:System files; msg:"Apple Disk Image"; rev:1; content:| 32 49 4D 47 |; offset:0;
file type:IVR; id:81; category:Multimedia; msg:"RealPlayer video file"; rev:1; content:| 2E 52 45 43 |; offset:0;
file type:IVR; id:82; category:Multimedia; msg:"RealPlayer video file"; rev:1; content:| 2E 52 31 4D |; offset:0;
file type:RA; id:83; category:Multimedia; msg:"RealAudio file"; rev:1; content:| 2E 52 4D 46 00 00 00 12 00 |; offset:0;
file type:RA; id:84; category:Multimedia; msg:"RealAudio file"; rev:1; content:| 2E 72 61 FD 00 |; offset:0;
file type:VMDK; id:85; category:System files; msg:"Virtual Machine Disk"; rev:1; content:| 43 4F 57 44 |; offset:0;
file type:VMDK; id:86; category:System files; msg:"Virtual Machine Disk"; rev:1; content:|4B 44 4D |; offset:0;
file type:VMDK; id:87; category:System files; msg:"Virtual Machine Disk"; rev:1; content:| 23 20 44 69 73 6B 20 44 65 73 63 72 69 70 74 6F |; offset:0;
file type:VMDK; id:88; category:System files; msg:"Virtual Machine Disk"; rev:1; content:| 2E 03 00 00 01 |; offset:0;
file type:FLAC; id:89; category:Multimedia; msg:"Free Lossless Audio Codec file"; rev:1; content:| 66 4C 61 43 00 00 00 22 |; offset:0;
file type:S3M; id:90; category:Multimedia; msg:"S3M audio module format"; rev:1; content:| 53 43 52 4d |; offset:0;
file type:ASF; id:91; category:Multimedia; msg:"Microsoft Windows Media Audio/Video File "; rev:1; content:| 30 26 B2 75 8E 66 CF 11 A6 D9 00 AA 00 62 CE 6C |; offset:0;
#file type:CRYSTAL; id:92; category:Office Documents; msg:"Crystal Reports"; rev:1; content:| D0 CF 11 E0 A1 B1 1A E1 00 |; offset:0;
file type:MSWORD_MAC5; id:93; category:Office Documents; msg:"Microsoft Word for Mac 5"; rev:1; content:| FE 37 00 23|; offset:0;
file type:SYLKc; id:94; category:System files; msg:"Microsoft symbolic Link"; rev:1; content:| 49 44 3B 50 |; offset:0;
file type:WP; id:95; category:Office Documents; msg:"WordPerfect text and graphics file"; rev:1; content:| FF 57 50 43|; offset:0;
file type:WP; id:96; category:Office Documents; msg:"WordPerfect text and graphics file"; rev:1; content:| 81 CD AB|; offset:0;
file type:TIFF; id:97; category:Graphics; msg:"Tagged Image File Format file"; rev:1; content:| 49 49 2A 00|; offset:0;
file type:TIFF; id:98; category:Graphics; msg:"Tagged Image File Format file"; rev:1; content:| 49 20 49|; offset:0;
file type:TIFF; id:99; category:Graphics; msg:"Tagged Image File Format file"; rev:1; content:| 4D 4D 00 2A|; offset:0;
file type:TIFF; id:100; category:Graphics; msg:"Tagged Image File Format file"; rev:1; content:| 4D 4D 00 2B|; offset:0;
file type:MWL; id:101; category:Office Documents; msg:"Metastock technical analysis program for traders"; rev:1; content:| 5b 4d 65 74 61 53 74 6f 63 6b |; offset:0;
file type:MDB; id:102; category:Office Documents; msg:"Microsoft Access file"; rev:1; content:| 00 01 00 00 53 74 61 6E 64 61 72 64 20 4A 65 74 20 44 42 |; offset:0;
file type:ACCDB; id:103; category:Office Documents; msg:"Microsoft Access 2007 file"; rev:1; content:| 00 01 00 00 53 74 61 6E 64 61 72 64 20 41 43 45 20 44 42|; offset:0;
file type:MNY; id:104; category:Office Documents; msg:"Microsoft Money file"; rev:1; content:| 00 01 00 00 4D 53 49 53 41 4D 20 44 61 74 61 62 61 73 65|; offset:0;
file type:REC; id:105; category:Multimedia; msg:"RealNetworks Realplayer REC"; rev:1; content:| 2e 72 65 63 00 |; offset:0;
file type:R1M; id:106; category:Multimedia; msg:"RealNetworks Realplayer R1M"; rev:1; content:| 2e 72 31 6d |; offset:0;
file type:WAB; id:107; category:Office Documents; msg:"Outlook address file"; rev:1; content:| 9C CB CB 8D 13 75 D2 11 91 58 00 C0 4F 79 56 A4 |; offset:0;
file type:WAB; id:108; category:Office Documents; msg:"Outlook address file"; rev:1; content:| 81 32 84 C1 85 05 D0 11 B2 90 00 AA 00 3C F6 76 |; offset:0;
file type:M3U; id:109; category:Multimedia; msg:"Multimedia playlists"; rev:1; content:| 23 45 58 54 4d 33 55 |; offset:0;
file type:MKV; id:110; category:Multimedia; msg:"Matroska stream file"; rev:1; content:| 1A 45 DF A3 93 42 82 88 6D 61 74 72 6F 73 6B 61|; offset:0;
file type:IMG_PICT; id:111; category:Graphics; msg:"ChromaGraph Graphics Card Bitmap Graphic file"; rev:1; content:| 50 49 43 54 00 08 |; offset:0;
file type:AMF; id:112; category:Multimedia; msg:"Advanced Module Format for digital music"; rev:1; content:| 41 4d 46 |; offset:0;
file type:WEBM; id:113; category:Multimedia; msg:"WebM audio-video format"; rev:1; content:| 1A 45 DF A3|; offset:0;
file type:MAYA; id:114; category:Graphics; msg:"Autodesk Maya"; rev:1; content:| 2f 2f 4d 61 79 61 |; offset:0;
file type:MIDI; id:115; category:Multimedia; msg:"Musical Instrument Digital Interface (MIDI) sound file"; rev:1; content:| 4D 54 68 64 |; offset:0;
file type:PLS; id:116; category:Multimedia; msg:"multimedia playlists"; rev:1; content:| 5b 70 6c 61 79 6c 69 73 74 5d |; offset:0;
file type:SMIL; id:117; category:Multimedia; msg:"Synchronized Multimedia Integration Language"; rev:1; content:| 3c 73 6d 69 6c 3e |; offset:0;
file type:SAMI; id:119; category:Multimedia; msg:"Synchronized Accessible Media Interchange"; rev:1; content:| 3c 53 41 4d 49 |; offset:0;
file type:NEW_OFFICE; id:120; category:Office Documents; msg:"Microsoft Office Open XML Format (OOXML) Document (DOCX, PPTX, XLSX)"; rev:1; content:|50 4B 03 04 14 00 06 00|; offset:0;
#From others
file type:DWG; id:130; category:Graphics; msg:"Autodesk AutoCAD file (dwg) "; rev:1; content:| 41 43 31 30 |; offset:0;
file type:ISO; id:131; category:System files; msg:"Disc Image file based on ISO-9660 standard (iso)c"; rev:1; content:| 00 00 01 BA |; offset:0;
file type:MDI; id:132; category:Office Documents; msg:"Microsoft Document Imaging file (mdi)"; rev:1; content:| 45 50 |; offset:0;
file type:PGD; id:133; category:System files; msg:"PGP disk image(PGD)"; rev:1; content:| 50 47 50 64 4D 41 49 4E |; offset:0;
file type:PSD; id:134; category:Graphics; msg:"Photoshop image file (PSD)"; rev:1; content:|38 42 50 53 |; offset:0;
file type:9XHIVE; id:135; category:System files; msg:"Windows 9x registry hive (REG)"; rev:1; content:| 43 52 45 47 |; offset:0;
file type:REG; id:136; category:System files; msg:"Windows NT Registry and Registry Undo files (REG)"; rev:1; content:| 52 45 47 45 44 49 54 |; offset:0;
file type:WMF; id:137; category:Graphics; msg:"Windows graphics metafile "; rev:1; content:| 01 00 09 00 00 03 |; offset:0;
file type:WRI; id:138; category:Office Documents; msg:"Windows Write document file (wri) "; rev:1; content:| BE 00 00 00 AB 00 00 00 00 00 00 00 00|; offset:0;
file type:RPM; id:139; category:Executables; msg:"RedHat Package Manager file"; rev:1; content:| ED AB EE DB |; offset:0;
file type:ONE; id:140; category:Office Documents; msg:"Microsoft OneNote note"; rev:1; content:| E4 52 5C 7B 8C D8 A7 4D AE B1 53 78 D0 29 96 D3 |; offset:0;
file type:MP4; id:141; category:Multimedia; msg:"MPEG-4 video files"; rev:1; content:| 00 00 00 18 66 74 79 70 33 67 70 35 |; offset:0;
file type:MP4; id:142; category:Multimedia; msg:"MPEG-4 video files"; rev:1; content:| 00 00 00 14 66 74 79 70 69 73 6F 6D |; offset:0;
file type:PCAP; id:143; category:System files; msg:"Packet capture file"; rev:1; content:| D4 C3 B2 A1 |; offset:0;
file type:PCAP; id:144; category:System files; msg:"Packet capture file"; rev:1; content:|34 CD B2 A1 |; offset:0;
file type:PCAP; id:145; category:System files; msg:"Packet capture file"; rev:1; content:|A1 B2 C3 D4 |; offset:0;
file type:PCAP; id:146; category:System files; msg:"Packet capture file"; rev:1; content:|A1 B2 CD 34 |; offset:0;
file type:PCAP; id:147; category:System files; msg:"Packet capture file"; rev:1; content:|52 54 53 53 |; offset:0;
file type:BMP; id:148; category:Graphics; msg:"Bitmap image file"; rev:1; content:|42 4D |; offset:0;
file type:ICO; id:149; category:Graphics; msg:"Windows icon file"; rev:1; content:| 00 00 01 00 |; offset:0;
file type:TORRENT; id:150; category:Executables; msg:"BitTorrent File"; rev:1; content:| 64 38 3A 61 6E 6E 6F 75 6E 63 65 |; offset:0;
file type:AMR; id:151; category:Multimedia; msg:"Adaptive Multi-Rate Codec File"; rev:1; content:| 23 21 41 4D 52|; offset:0;
file type:SIT; id:152; category:Archive; msg:"StuffIt compressed archive"; rev:1; content:| 53 49 54 21 00|; offset:0;
file type:PST; id:153; category:Office Documents; msg:"Microsoft Outlook Personal Folder File"; rev:1; content:| 21 42 44 4E |; offset:0;
file type:HLP; id:154; category:Office Documents; msg:"Windows Help file"; rev:1; content:| 4C 4E 02 00 |; offset:0;
file type:HLP; id:155; category:Office Documents; msg:"Windows Help file"; rev:1; content:| 3F 5F 03 00 |; offset:0;
file type:AUTORUN; id:156; category:Executables; msg:"Windows Help file"; rev:1; content:| 5B 61 75 74 6F 72 75 6E 5D 0D 0A |; offset:0;
file type:JPEG; id:157; category:Graphics; msg:"JPEG/JFIF graphics file"; rev:1; content:| FF D8 FF E1 |; offset:0; content:| 45 78 69 66 00 |; offset:6;
file type:ARJ; id:158; category:Archive; msg:"Compressed archive file"; rev:1; content:| 60 EA |; offset:0;
file type:MP3; id:159; category:Multimedia; msg:"MPEG-1 Audio Layer 3 (MP3) audio file"; rev:1; content:| FF FA |; offset:0;
file type:SIT; id:160; category:Archive; msg:"StuffIt compressed archive"; rev:1; content:| 53 74 75 66 66 49 74 20|; offset:0;
file type:NTHIVE; id:161; category:System files; msg:"Windows NT registry hive (REG)"; rev:1; content:| 72 65 67 66 |; offset:0;
file type:WMF; id:162; category:Graphics; msg:"Windows graphics metafile "; rev:1; content:| D7 CD C6 9A |; offset:0;
file type:SIS; id:163; category:Archive; msg:"Software Installation Script, an archive for Symbian OS"; rev:1; content:| 7A 1A 20 10 |; offset:0;
file type:WRI; id:164; category:Office Documents; msg:"Windows Write document file (wri) "; rev:1; content:| 31 BE|; offset:0;
file type:WRI; id:165; category:Office Documents; msg:"Windows Write document file (wri) "; rev:1; content:| 32 BE|; offset:0;
file type:WAV; id:166; category:Multimedia; msg:"Waveform Audio File Format"; rev:1; content:| 52 49 46 46 |; offset:0; content:| 57 41 56 45 66 6D 74 20 |; offset:8;
file type:MP4; id:167; category:Multimedia; msg:"MPEG-4 video files"; rev:1; content:| 66 74 79 70 6D 70 34 32 |; offset:4;
file type:MP4; id:168; category:Multimedia; msg:"MPEG-4 video files"; rev:1; content:| 66 74 79 70 33 67 70 35 |; offset:4;
file type:MP4; id:169; category:Multimedia; msg:"MPEG-4 video files"; rev:1; content:| 66 74 79 70 4D 53 4E 56 |; offset:4;
file type:DICM; id:170; category:Multimedia; msg:"Digital Imaging and Communications in Medicine"; rev:1; content:| 44 49 43 4D |; offset:128;
file type:ZIP_ENC; id:171; category:Archive; msg:"PKZIP encrypted archive file"; rev:1; content:| 50 4B 03 04 |; offset:0; content:| 01 |; offset:6;
snort-2.9.6.0/etc/attribute_table.dtd 0000644 0000000 0000000 00000002401 10662351337 014347 0000000 0000000
snort-2.9.6.0/etc/threshold.conf 0000644 0000000 0000000 00000004774 12260606507 013360 0000000 0000000 # Configure Thresholding and Suppression
# ======================================
#
# The threshold command is deprecated. Use detection_filter for thresholds
# within a rule and event_filter for standalone threshold configurations.
# Please see README.filters for more information on filters.
#
# Thresholding:
#
# This feature is used to reduce the number of logged alerts for noisy rules.
# This can be tuned to significantly reduce false alarms, and it can also be
# used to write a newer breed of rules. Thresholding commands limit the number
# of times a particular event is logged during a specified time interval.
#
# There are 3 types of event_filters:
#
# 1) Limit
# Alert on the 1st M events during the time interval, then ignore
# events for the rest of the time interval.
#
# 2) Threshold
# Alert every M times we see this event during the time interval.
#
# 3) Both
# Alert once per time interval after seeing M occurrences of the
# event, then ignore any additional events during the time interval.
#
# Threshold commands are formatted as:
#
# event_filter gen_id gen-id, sig_id sig-id, \
# type limit|threshold|both, track by_src|by_dst, \
# count n , seconds m
#
# Limit to logging 1 event per 60 seconds:
#
# event_filter gen_id 1, sig_id 1851, type limit, \
# track by_src, count 1, seconds 60
#
# Global Threshold - Limit to logging 1 event per 60 seconds per IP triggering
# each rule (rules are gen_id 1):
#
# event_filter gen_id 1, sig_id 0, type limit, track by_src, count 1, seconds 60
#
# Global Threshold - Limit to logging 1 event per 60 seconds per IP triggering
# any alert for any event generator:
#
# event_filter gen_id 0, sig_id 0, type limit, track by_src, count 1, seconds 60
#
# Suppression:
#
# Suppression commands are standalone commands that reference generators and
# sids and IP addresses via a CIDR block (or IP list). This allows a rule to be
# completely suppressed, or suppressed when the causitive traffic is going to
# or comming from a specific IP or group of IP addresses.
#
# Suppress this event completely:
#
# suppress gen_id 1, sig_id 1852
#
# Suppress this event from this IP:
#
# suppress gen_id 1, sig_id 1852, track by_src, ip 10.1.1.54
#
# Suppress this event to this CIDR block:
#
# suppress gen_id 1, sig_id 1852, track by_dst, ip 10.1.1.0/24
#
# Global event filter to limit events from a unique src to 1 in 60 seconds
# Disabled by default turn on if you want this functionality
#
# event_filter gen_id 0, sig_id 0, type limit, track by_src, count 1, seconds 60
snort-2.9.6.0/etc/unicode.map 0000644 0000000 0000000 00000471536 11607417605 012651 0000000 0000000 # Windows Version: 6.01.7601
# OEM codepage: 437
# ACP codepage: 1252
# INSTALLED CODEPAGES
10081 (MAC - Turkish)
1254 (ANSI - Turkish)
00dd:59 00fd:79 0100:41 0101:61 0102:41 0103:61 0104:41 0105:61 0106:43 0107:63 0108:43 0109:63 010a:43 010b:63 010c:43 010d:63 010e:44 010f:64 0110:44 0111:64 0112:45 0113:65 0114:45 0115:65 0116:45 0117:65 0118:45 0119:65 011a:45 011b:65 011c:47 011d:67 0120:47 0121:67 0122:47 0123:67 0124:48 0125:68 0126:48 0127:68 0128:49 0129:69 012a:49 012b:69 012c:49 012d:69 012e:49 012f:69 0134:4a 0135:6a 0136:4b 0137:6b 0139:4c 013a:6c 013b:4c 013c:6c 013d:4c 013e:6c 0141:4c 0142:6c 0143:4e 0144:6e 0145:4e 0146:6e 0147:4e 0148:6e 014c:4f 014d:6f 014e:4f 014f:6f 0150:4f 0151:6f 0154:52 0155:72 0156:52 0157:72 0158:52 0159:72 015a:53 015b:73 015c:53 015d:73 0162:54 0163:74 0164:54 0165:74 0166:54 0167:74 0168:55 0169:75 016a:55 016b:75 016c:55 016d:75 016e:55 016f:75 0170:55 0171:75 0172:55 0173:75 0174:57 0175:77 0176:59 0177:79 0179:5a 017b:5a 017c:7a 017d:5a 017e:7a 0180:62 0189:44 0197:49 019a:6c 019f:4f 01a0:4f 01a1:6f 01ab:74 01ae:54 01af:55 01b0:75 01b6:7a 01c0:7c 01c3:21 01cd:41 01ce:61 01cf:49 01d0:69 01d1:4f 01d2:6f 01d3:55 01d4:75 01d5:55 01d6:75 01d7:55 01d8:75 01d9:55 01da:75 01db:55 01dc:75 01de:41 01df:61 01e4:47 01e5:67 01e6:47 01e7:67 01e8:4b 01e9:6b 01ea:4f 01eb:6f 01ec:4f 01ed:6f 01f0:6a 0261:67 02b9:27 02ba:22 02bc:27 02c4:5e 02c7:5e 02c8:27 02cb:60 02cd:5f 02d8:5e 02d9:27 0300:60 0302:5e 0331:5f 0332:5f 04bb:68 0589:3a 066a:25 2000:20 2001:20 2002:20 2003:20 2004:20 2005:20 2006:20 2010:2d 2011:2d 2032:27 2035:60 203c:21 2044:2f 2074:34 2075:35 2076:36 2077:37 2078:38 2081:30 2084:34 2085:35 2086:36 2087:37 2088:38 2089:39 2102:43 2107:45 210a:67 210b:48 210c:48 210d:48 210e:68 2110:49 2111:49 2112:4c 2113:6c 2115:4e 2118:50 2119:50 211a:51 211b:52 211c:52 211d:52 2124:5a 2128:5a 212a:4b 212c:42 212d:43 212e:65 212f:65 2130:45 2131:46 2133:4d 2134:6f 2191:5e 2193:76 2194:2d 2195:7c 21a8:7c 2212:2d 2215:2f 2216:5c 2217:2a 221f:4c 2223:7c 2236:3a 223c:7e 2303:5e 2329:3c 232a:3e 2502:2d 250c:2d 2514:4c 2518:2d 251c:2b 2524:2b 252c:54 2534:2b 253c:2b 2550:3d 2554:2d 255a:4c 255d:2d 2566:54 256c:2b 2580:2d 2584:2d 2588:2d 2591:2d 2592:2d 2593:2d 25ac:2d 25b2:5e 25ba:3e 25c4:3c 25cb:30 25d9:30 263a:4f 263b:4f 263c:30 2640:2b 2642:3e 266a:64 266b:64 2758:7c 3000:20 3008:3c 3009:3e 301a:5b 301b:3d 301d:22 301e:22 ff01:21 ff02:22 ff03:23 ff04:24 ff05:25 ff06:26 ff07:27 ff08:28 ff09:29 ff0a:2a ff0b:2b ff0c:2c ff0d:2d ff0e:2e ff0f:2f ff10:30 ff11:31 ff12:32 ff13:33 ff14:34 ff15:35 ff16:36 ff17:37 ff18:38 ff19:39 ff1a:3a ff1b:3b ff1c:3c ff1d:3d ff1e:3e ff20:40 ff21:41 ff22:42 ff23:43 ff24:44 ff25:45 ff26:46 ff27:47 ff28:48 ff29:49 ff2a:4a ff2b:4b ff2c:4c ff2d:4d ff2e:4e ff2f:4f ff30:50 ff31:51 ff32:52 ff33:53 ff34:54 ff35:55 ff36:56 ff37:57 ff38:58 ff39:59 ff3a:5a ff3b:5b ff3c:5c ff3d:5d ff3e:5e ff3f:5f ff40:60 ff41:61 ff42:62 ff43:63 ff44:64 ff45:65 ff46:66 ff47:67 ff48:68 ff49:69 ff4a:6a ff4b:6b ff4c:6c ff4d:6d ff4e:6e ff4f:6f ff50:70 ff51:71 ff52:72 ff53:73 ff54:74 ff55:75 ff56:76 ff57:77 ff58:78 ff59:79 ff5a:7a ff5b:7b ff5c:7c ff5d:7d ff5e:7e
857 (OEM - Turkish)
00dd:59 00fd:79 0100:41 0101:61 0102:41 0103:61 0104:41 0105:61 0106:43 0107:63 0108:43 0109:63 010a:43 010b:63 010c:43 010d:63 010e:44 010f:64 0110:44 0111:64 0112:45 0113:65 0114:45 0115:65 0116:45 0117:65 0118:45 0119:65 011a:45 011b:65 011c:47 011d:67 0120:47 0121:67 0122:47 0123:67 0124:48 0125:68 0126:48 0127:68 0128:49 0129:69 012a:49 012b:69 012c:49 012d:69 012e:49 012f:69 0134:4a 0135:6a 0136:4b 0137:6b 0139:4c 013a:6c 013b:4c 013c:6c 013d:4c 013e:6c 0141:4c 0142:6c 0143:4e 0144:6e 0145:4e 0146:6e 0147:4e 0148:6e 014c:4f 014d:6f 014e:4f 014f:6f 0150:4f 0151:6f 0152:4f 0153:6f 0154:52 0155:72 0156:52 0157:72 0158:52 0159:72 015a:53 015b:73 015c:53 015d:73 0160:53 0161:73 0162:54 0163:74 0164:54 0165:74 0166:54 0167:74 0168:55 0169:75 016a:55 016b:75 016c:55 016d:75 016e:55 016f:75 0170:55 0171:75 0172:55 0173:75 0174:57 0175:77 0176:59 0177:79 0178:59 0179:5a 017b:5a 017c:7a 017d:5a 017e:7a 0180:62 0189:44 0191:46 0192:66 0197:49 019a:6c 019f:4f 01a0:4f 01a1:6f 01ab:74 01ae:54 01af:55 01b0:75 01b6:7a 01c0:7c 01c3:21 01cd:41 01ce:61 01cf:49 01d0:69 01d1:4f 01d2:6f 01d3:55 01d4:75 01d5:55 01d6:75 01d7:55 01d8:75 01d9:55 01da:75 01db:55 01dc:75 01de:41 01df:61 01e4:47 01e5:67 01e6:47 01e7:67 01e8:4b 01e9:6b 01ea:4f 01eb:6f 01ec:4f 01ed:6f 01f0:6a 0261:67 02b9:27 02ba:22 02bb:27 02bc:27 02c4:5e 02c6:5e 02c7:5e 02c8:27 02c9:16 02cb:60 02cd:5f 02d8:5e 02dc:7e 0300:60 0302:5e 0303:7e 0306:5e 030c:5e 030e:22 0331:5f 0332:5f 037e:3b 04bb:68 0589:3a 066a:25 2000:20 2001:20 2002:20 2003:20 2004:20 2005:20 2006:20 2010:2d 2011:2d 2013:2d 2014:2d 2018:27 2019:27 201a:27 201c:22 201d:22 201e:22 2022:07 2024:07 2026:07 2030:25 2032:27 2033:22 2035:22 2039:3c 203a:3e 203c:13 2044:2f 2070:30 2074:34 2075:35 2076:36 2077:37 2078:38 2080:30 2081:31 2082:32 2083:33 2084:34 2085:35 2086:36 2087:37 2088:38 2089:39 20a4:4c 2102:43 2107:45 210a:67 210b:48 210c:48 210d:48 210e:68 2110:49 2111:49 2112:4c 2113:6c 2115:4e 2118:50 2119:50 211a:51 211b:52 211c:52 211d:52 2122:74 2124:5a 2128:5a 212a:4b 212b:41 212c:42 212d:43 212e:65 212f:65 2130:45 2131:46 2133:4d 2134:6f 2190:1b 2191:18 2192:1a 2193:19 2194:1d 2195:12 21a8:17 2205:4f 2212:2d 2215:2f 2216:5c 2217:2a 2219:07 221f:1c 2223:7c 2236:3a 223c:7e 22c5:07 2302:7f 2303:5e 2329:3c 232a:3e 25ac:16 25b2:1e 25ba:10 25bc:1f 25c4:11 25cb:09 25d8:08 25d9:0a 263a:01 263b:02 263c:0f 2640:0c 2642:0b 2660:06 2663:05 2665:03 2666:04 266a:0d 266b:0e 2758:7c 275b:27 275c:27 275d:22 275e:22 3000:20 3008:3c 3009:3e 301a:5b 301b:7d 301d:22 301e:22 301f:22 30fb:07 30fc:5f ff01:21 ff02:22 ff03:23 ff04:24 ff05:25 ff06:26 ff07:27 ff08:28 ff09:29 ff0a:2a ff0b:2b ff0c:2c ff0d:2d ff0e:2e ff0f:2f ff10:30 ff11:31 ff12:32 ff13:33 ff14:34 ff15:35 ff16:36 ff17:37 ff18:38 ff19:39 ff1a:3a ff1b:3b ff1c:3c ff1d:3d ff1e:3e ff20:40 ff21:41 ff22:42 ff23:43 ff24:44 ff25:45 ff26:46 ff27:47 ff28:48 ff29:49 ff2a:4a ff2b:4b ff2c:4c ff2d:4d ff2e:4e ff2f:4f ff30:50 ff31:51 ff32:52 ff33:53 ff34:54 ff35:55 ff36:56 ff37:57 ff38:58 ff39:59 ff3a:5a ff3b:5b ff3c:5c ff3d:5d ff3e:5e ff3f:5f ff40:60 ff41:61 ff42:62 ff43:63 ff44:64 ff45:65 ff46:66 ff47:67 ff48:68 ff49:69 ff4a:6a ff4b:6b ff4c:6c ff4d:6d ff4e:6e ff4f:6f ff50:70 ff51:71 ff52:72 ff53:73 ff54:74 ff55:75 ff56:76 ff57:77 ff58:78 ff59:79 ff5a:7a ff5b:7b ff5c:7c ff5d:7d ff5e:7e
20905 (IBM EBCDIC - Turkish)
0004:37 0005:2d 0006:2e 0007:2f 0008:16 0009:05 000a:25 0014:3c 0015:3d 0016:32 0017:26 001a:3f 001b:27 0020:40 0021:4f 0025:6c 0026:50 0027:7d 0028:4d 0029:5d 002a:5c 002b:4e 002c:6b 002d:60 002e:4b 002f:61 003a:7a 003b:5e 003c:4c 003d:7e 003e:6e 003f:6f 005b:68 005e:5f 005f:6d 007b:48 007f:07 0080:20 0081:21 0082:22 0083:23 0084:24 0085:15 0086:06 0087:17 0088:28 0089:29 008a:2a 008b:2b 008c:2c 008d:09 008e:0a 008f:1b 0090:30 0091:31 0092:1a 0093:33 0094:34 0095:35 0096:36 0097:08 0098:38 0099:39 009a:3a 009b:3b 009c:04 009d:14 009e:3e 00a0:41 00c0:64 00c1:65 00c2:62 00c4:63 00c7:4a 00c8:74 00c9:71 00ca:72 00cb:73 00cc:78 00cd:75 00ce:76 00cf:77 00d1:69 00d6:7b 00dc:7f 00df:59 00e0:44 00e1:45 00e2:42 00e4:43 00e8:54 00e9:51 00ea:52 00eb:53 00ec:58 00ed:55 00ee:56 00ef:57 00f1:49 010a:67 010b:47 011e:5a 0130:5b 0131:79 015e:7c 015f:6a ff01:4f ff05:6c ff06:50 ff07:7d ff08:4d ff09:5d ff0a:5c ff0b:4e ff0c:6b ff0d:60 ff0e:4b ff0f:61 ff1a:7a ff1b:5e ff1c:4c ff1d:7e ff1e:6e ff3b:68 ff3e:5f ff3f:6d ff5b:48
28593 (ISO 8859-3 Latin 3)
00a1:21 00a2:63 00a5:59 00a6:7c 00a9:43 00aa:61 00ab:3c 00ae:52 00b9:31 00ba:6f 00bb:3e 00c3:41 00c5:41 00c6:41 00d0:44 00d5:4f 00d8:4f 00dd:59 00e3:61 00e5:61 00e6:61 00f5:6f 00f8:6f 00fd:79 00ff:79 0100:41 0101:61 0102:41 0103:61 0104:41 0105:61 0106:43 0107:63 010c:43 010d:63 010e:44 010f:64 0110:44 0111:64 0112:45 0113:65 0114:45 0115:65 0116:45 0117:65 0118:45 0119:65 011a:45 011b:65 0122:47 0123:67 0128:49 0129:69 012a:49 012b:69 012c:49 012d:69 012e:49 012f:69 0136:4b 0137:6b 0139:4c 013a:6c 013b:4c 013c:6c 013d:4c 013e:6c 0141:4c 0142:6c 0143:4e 0144:6e 0145:4e 0146:6e 0147:4e 0148:6e 014c:4f 014d:6f 014e:4f 014f:6f 0150:4f 0151:6f 0152:4f 0153:6f 0154:52 0155:72 0156:52 0157:72 0158:52 0159:72 015a:53 015b:73 0160:53 0161:73 0162:54 0163:74 0164:54 0165:74 0166:54 0167:74 0168:55 0169:75 016a:55 016b:75 016e:55 016f:75 0170:55 0171:75 0172:55 0173:75 0174:57 0175:77 0176:59 0177:79 0178:59 0179:5a 017d:5a 017e:7a 0180:62 0189:44 0191:46 0192:66 0197:49 019a:6c 019f:4f 01a0:4f 01a1:6f 01ab:74 01ae:54 01af:55 01b0:75 01b6:7a 01cd:41 01ce:61 01cf:49 01d0:69 01d1:4f 01d2:6f 01d3:55 01d4:75 01d5:55 01d6:75 01d7:55 01d8:75 01d9:55 01da:75 01db:55 01dc:75 01de:41 01df:61 01e4:47 01e5:67 01e6:47 01e7:67 01e8:4b 01e9:6b 01ea:4f 01eb:6f 01ec:4f 01ed:6f 01f0:6a 0261:67 02b9:27 02ba:22 02bc:27 02c4:5e 02c6:5e 02c8:27 02cb:60 02cd:5f 02dc:7e 0300:60 0302:5e 0303:7e 030e:22 0331:5f 0332:5f 2000:20 2001:20 2002:20 2003:20 2004:20 2005:20 2006:20 2010:2d 2011:2d 2013:2d 2014:2d 2018:27 2019:27 201a:2c 201c:22 201d:22 201e:22 2022:2e 2026:2e 2032:27 2035:60 2039:3c 203a:3e 2122:54 ff01:21 ff02:22 ff03:23 ff04:24 ff05:25 ff06:26 ff07:27 ff08:28 ff09:29 ff0a:2a ff0b:2b ff0c:2c ff0d:2d ff0e:2e ff0f:2f ff10:30 ff11:31 ff12:32 ff13:33 ff14:34 ff15:35 ff16:36 ff17:37 ff18:38 ff19:39 ff1a:3a ff1b:3b ff1c:3c ff1d:3d ff1e:3e ff20:40 ff21:41 ff22:42 ff23:43 ff24:44 ff25:45 ff26:46 ff27:47 ff28:48 ff29:49 ff2a:4a ff2b:4b ff2c:4c ff2d:4d ff2e:4e ff2f:4f ff30:50 ff31:51 ff32:52 ff33:53 ff34:54 ff35:55 ff36:56 ff37:57 ff38:58 ff39:59 ff3a:5a ff3b:5b ff3c:5c ff3d:5d ff3e:5e ff3f:5f ff40:60 ff41:61 ff42:62 ff43:63 ff44:64 ff45:65 ff46:66 ff47:67 ff48:68 ff49:69 ff4a:6a ff4b:6b ff4c:6c ff4d:6d ff4e:6e ff4f:6f ff50:70 ff51:71 ff52:72 ff53:73 ff54:74 ff55:75 ff56:76 ff57:77 ff58:78 ff59:79 ff5a:7a ff5b:7b ff5c:7c ff5d:7d ff5e:7e
1026 (IBM EBCDIC - Turkish (Latin-5))
0004:37 0005:2d 0006:2e 0007:2f 0008:16 0009:05 000a:25 0014:3c 0015:3d 0016:32 0017:26 001a:3f 001b:27 0020:40 0021:4f 0025:6c 0026:50 0027:7d 0028:4d 0029:5d 002a:5c 002b:4e 002c:6b 002d:60 002e:4b 002f:61 003a:7a 003b:5e 003c:4c 003d:7e 003e:6e 003f:6f 005b:68 005e:5f 005f:6d 007b:48 007f:07 0080:20 0081:21 0082:22 0083:23 0084:24 0085:15 0086:06 0087:17 0088:28 0089:29 008a:2a 008b:2b 008c:2c 008d:09 008e:0a 008f:1b 0090:30 0091:31 0092:1a 0093:33 0094:34 0095:35 0096:36 0097:08 0098:38 0099:39 009a:3a 009b:3b 009c:04 009d:14 009e:3e 00a0:41 00c0:64 00c1:65 00c2:62 00c3:66 00c4:63 00c5:67 00c7:4a 00c8:74 00c9:71 00ca:72 00cb:73 00cc:78 00cd:75 00ce:76 00cf:77 00d1:69 00d6:7b 00dc:7f 00df:59 00e0:44 00e1:45 00e2:42 00e3:46 00e4:43 00e5:47 00e8:54 00e9:51 00ea:52 00eb:53 00ec:58 00ed:55 00ee:56 00ef:57 00f1:49 00f8:70 011e:5a 0130:5b 0131:79 015e:7c 015f:6a ff01:4f ff05:6c ff06:50 ff07:7d ff08:4d ff09:5d ff0a:5c ff0b:4e ff0c:6b ff0d:60 ff0e:4b ff0f:61 ff1a:7a ff1b:5e ff1c:4c ff1d:7e ff1e:6e ff3b:68 ff3e:5f ff3f:6d ff5b:48
10003 (MAC - Korean)
00a6:7c 00ae:52 00c0:41 00c1:41 00c2:41 00c3:41 00c4:41 00c5:41 00c7:43 00c8:45 00c9:45 00ca:45 00cb:45 00cc:49 00cd:49 00ce:49 00cf:49 00d1:4e 00d2:4f 00d3:4f 00d4:4f 00d5:4f 00d6:4f 00d9:55 00da:55 00db:55 00dc:55 00dd:59 00e0:61 00e1:61 00e2:61 00e3:61 00e4:61 00e5:61 00e7:63 00e8:65 00e9:65 00ea:65 00eb:65 00ec:69 00ed:69 00ee:69 00ef:69 00f1:6e 00f2:6f 00f3:6f 00f4:6f 00f5:6f 00f6:6f 00f9:75 00fa:75 00fb:75 00fc:75 00fd:79 00ff:79 20a9:5c
949 (ANSI/OEM - Korean)
00a6:7c 00c0:41 00c1:41 00c2:41 00c3:41 00c4:41 00c5:41 00c7:43 00c8:45 00c9:45 00ca:45 00cb:45 00cc:49 00cd:49 00ce:49 00cf:49 00d1:4e 00d2:4f 00d3:4f 00d4:4f 00d5:4f 00d6:4f 00d9:55 00da:55 00db:55 00dc:55 00dd:59 00e0:61 00e1:61 00e2:61 00e3:61 00e4:61 00e5:61 00e7:63 00e8:65 00e9:65 00ea:65 00eb:65 00ec:69 00ed:69 00ee:69 00ef:69 00f1:6e 00f2:6f 00f3:6f 00f4:6f 00f5:6f 00f6:6f 00f9:75 00fa:75 00fb:75 00fc:75 00fd:79 00ff:79 20a9:5c
1361 (Korean - Johab)
20a9:5c
20833 (IBM EBCDIC - Korean Extended)
0004:37 0005:2d 0006:2e 0007:2f 0008:16 0009:05 000a:25 0014:3c 0015:3d 0016:32 0017:26 001a:3f 001b:27 0020:40 0021:5a 0022:7f 0023:7b 0024:5b 0025:6c 0026:50 0027:7d 0028:4d 0029:5d 002a:5c 002b:4e 002c:6b 002d:60 002e:4b 002f:61 003a:7a 003b:5e 003c:4c 003d:7e 003e:6e 003f:6f 0040:7c 005b:70 005f:6d 0060:79 007c:4f 007f:07 0080:20 0081:21 0082:22 0083:23 0084:24 0085:15 0086:06 0087:17 0088:28 0089:29 008a:2a 008b:2b 008c:2c 008d:09 008e:0a 008f:1b 0090:30 0091:31 0092:1a 0093:33 0094:34 0095:35 0096:36 0097:08 0098:38 0099:39 009a:3a 009b:3b 009c:04 009d:14 009e:3e 00a2:4a 00a6:6a 00ac:5f ff01:5a ff02:7f ff03:7b ff04:5b ff05:6c ff06:50 ff07:7d ff08:4d ff09:5d ff0a:5c ff0b:4e ff0c:6b ff0d:60 ff0e:4b ff0f:61 ff1a:7a ff1b:5e ff1c:4c ff1d:7e ff1e:6e ff20:7c ff3b:70 ff3f:6d ff40:79 ff5c:4f ffa0:42 ffa1:43 ffa2:44 ffa3:45 ffa4:46 ffa5:47 ffa6:48 ffa7:49 ffa8:52 ffa9:53 ffaa:54 ffab:55 ffac:56 ffad:57 ffae:58 ffaf:59 ffb0:62 ffb1:63 ffb2:64 ffb3:65 ffb4:66 ffb5:67 ffb6:68 ffb7:69 ffb8:72 ffb9:73 ffba:74 ffbb:75 ffbc:76 ffbd:77 ffbe:78
00a6:7c 00c0:41 00c1:41 00c2:41 00c3:41 00c4:41 00c5:41 00c7:43 00c8:45 00c9:45 00ca:45 00cb:45 00cc:49 00cd:49 00ce:49 00cf:49 00d1:4e 00d2:4f 00d3:4f 00d4:4f 00d5:4f 00d6:4f 00d9:55 00da:55 00db:55 00dc:55 00dd:59 00e0:61 00e1:61 00e2:61 00e3:61 00e4:61 00e5:61 00e7:63 00e8:65 00e9:65 00ea:65 00eb:65 00ec:69 00ed:69 00ee:69 00ef:69 00f1:6e 00f2:6f 00f3:6f 00f4:6f 00f5:6f 00f6:6f 00f9:75 00fa:75 00fb:75 00fc:75 00fd:79 00ff:79 20a9:5c
50225 (ISO-2022 Korean)
51949 (EUC-Korean)
00a6:7c 00c0:41 00c1:41 00c2:41 00c3:41 00c4:41 00c5:41 00c7:43 00c8:45 00c9:45 00ca:45 00cb:45 00cc:49 00cd:49 00ce:49 00cf:49 00d1:4e 00d2:4f 00d3:4f 00d4:4f 00d5:4f 00d6:4f 00d9:55 00da:55 00db:55 00dc:55 00dd:59 00e0:61 00e1:61 00e2:61 00e3:61 00e4:61 00e5:61 00e7:63 00e8:65 00e9:65 00ea:65 00eb:65 00ec:69 00ed:69 00ee:69 00ef:69 00f1:6e 00f2:6f 00f3:6f 00f4:6f 00f5:6f 00f6:6f 00f9:75 00fa:75 00fb:75 00fc:75 00fd:79 00ff:79 20a9:5c
500 (IBM EBCDIC - International)
0004:37 0005:2d 0006:2e 0007:2f 0008:16 0009:05 000a:25 0014:3c 0015:3d 0016:32 0017:26 001a:3f 001b:27 0020:40 0021:4f 0022:7f 0023:7b 0024:5b 0025:6c 0026:50 0027:7d 0028:4d 0029:5d 002a:5c 002b:4e 002c:6b 002d:60 002e:4b 002f:61 003a:7a 003b:5e 003c:4c 003d:7e 003e:6e 003f:6f 0040:7c 005b:4a 005d:5a 005e:5f 005f:6d 0060:79 007f:07 0080:20 0081:21 0082:22 0083:23 0084:24 0085:15 0086:06 0087:17 0088:28 0089:29 008a:2a 008b:2b 008c:2c 008d:09 008e:0a 008f:1b 0090:30 0091:31 0092:1a 0093:33 0094:34 0095:35 0096:36 0097:08 0098:38 0099:39 009a:3a 009b:3b 009c:04 009d:14 009e:3e 00a0:41 00a6:6a 00c0:64 00c1:65 00c2:62 00c3:66 00c4:63 00c5:67 00c7:68 00c8:74 00c9:71 00ca:72 00cb:73 00cc:78 00cd:75 00ce:76 00cf:77 00d1:69 00df:59 00e0:44 00e1:45 00e2:42 00e3:46 00e4:43 00e5:47 00e7:48 00e8:54 00e9:51 00ea:52 00eb:53 00ec:58 00ed:55 00ee:56 00ef:57 00f1:49 00f8:70 ff01:4f ff02:7f ff03:7b ff04:5b ff05:6c ff06:50 ff07:7d ff08:4d ff09:5d ff0a:5c ff0b:4e ff0c:6b ff0d:60 ff0e:4b ff0f:61 ff1a:7a ff1b:5e ff1c:4c ff1d:7e ff1e:6e ff20:7c ff3b:4a ff3d:5a ff3e:5f ff3f:6d ff40:79
10004 (MAC - Arabic)
1256 (ANSI - Arabic)
00c0:41 00c2:41 00c7:43 00c8:45 00c9:45 00ca:45 00cb:45 00ce:49 00cf:49 00d4:4f 00d9:55 00db:55 00dc:55 0191:46 0660:30 0661:31 0662:32 0663:33 0664:34 0665:35 0666:36 0667:37 0668:38 0669:39 ff01:21 ff02:22 ff03:23 ff04:24 ff05:25 ff06:26 ff07:27 ff08:28 ff09:29 ff0a:2a ff0b:2b ff0c:2c ff0d:2d ff0e:2e ff0f:2f ff10:30 ff11:31 ff12:32 ff13:33 ff14:34 ff15:35 ff16:36 ff17:37 ff18:38 ff19:39 ff1a:3a ff1b:3b ff1c:3c ff1d:3d ff1e:3e ff20:40 ff21:41 ff22:42 ff23:43 ff24:44 ff25:45 ff26:46 ff27:47 ff28:48 ff29:49 ff2a:4a ff2b:4b ff2c:4c ff2d:4d ff2e:4e ff2f:4f ff30:50 ff31:51 ff32:52 ff33:53 ff34:54 ff35:55 ff36:56 ff37:57 ff38:58 ff39:59 ff3a:5a ff3b:5b ff3c:5c ff3d:5d ff3e:5e ff3f:5f ff40:60 ff41:61 ff42:62 ff43:63 ff44:64 ff45:65 ff46:66 ff47:67 ff48:68 ff49:69 ff4a:6a ff4b:6b ff4c:6c ff4d:6d ff4e:6e ff4f:6f ff50:70 ff51:71 ff52:72 ff53:73 ff54:74 ff55:75 ff56:76 ff57:77 ff58:78 ff59:79 ff5a:7a ff5b:7b ff5c:7c ff5d:7d ff5e:7e
720 (Arabic - Transparent ASMO)
ff01:21 ff02:22 ff03:23 ff04:24 ff05:25 ff06:26 ff07:27 ff08:28 ff09:29 ff0a:2a ff0b:2b ff0c:2c ff0d:2d ff0e:2e ff0f:2f ff10:30 ff11:31 ff12:32 ff13:33 ff14:34 ff15:35 ff16:36 ff17:37 ff18:38 ff19:39 ff1a:3a ff1b:3b ff1c:3c ff1d:3d ff1e:3e ff20:40 ff21:41 ff22:42 ff23:43 ff24:44 ff25:45 ff26:46 ff27:47 ff28:48 ff29:49 ff2a:4a ff2b:4b ff2c:4c ff2d:4d ff2e:4e ff2f:4f ff30:50 ff31:51 ff32:52 ff33:53 ff34:54 ff35:55 ff36:56 ff37:57 ff38:58 ff39:59 ff3a:5a ff3b:5b ff3c:5c ff3d:5d ff3e:5e ff3f:5f ff40:60 ff41:61 ff42:62 ff43:63 ff44:64 ff45:65 ff46:66 ff47:67 ff48:68 ff49:69 ff4a:6a ff4b:6b ff4c:6c ff4d:6d ff4e:6e ff4f:6f ff50:70 ff51:71 ff52:72 ff53:73 ff54:74 ff55:75 ff56:76 ff57:77 ff58:78 ff59:79 ff5a:7a ff5b:7b ff5c:7c ff5d:7d ff5e:7e
708 (Arabic - ASMO)
864 (OEM - Arabic)
00a7:15 00b6:14 066a:25 203c:13 2190:1b 2191:18 2192:1a 2193:19 2194:1d 2195:12 21a8:17 221f:1c 2302:7f 2550:05 2551:06 2554:0d 2557:0c 255a:0e 255d:0f 2560:0a 2563:08 2566:09 2569:0b 256c:07 25ac:16 25b2:1e 25ba:10 25bc:1f 25c4:11 263a:01 263c:04 266a:02 266b:03
20420 (IBM EBCDIC - Arabic)
0004:37 0005:2d 0006:2e 0007:2f 0008:16 0009:05 000a:25 0014:3c 0015:3d 0016:32 0017:26 001a:3f 001b:27 0020:40 0021:5a 0022:7f 0023:7b 0024:5b 0025:6c 0026:50 0027:7d 0028:4d 0029:5d 002a:5c 002b:4e 002c:6b 002d:60 002e:4b 002f:61 003a:7a 003b:5e 003c:4c 003d:7e 003e:6e 003f:6f 0040:7c 005f:6d 007c:4f 007f:07 0080:20 0081:21 0082:22 0083:23 0084:24 0085:15 0086:06 0087:17 0088:28 0089:29 008a:2a 008b:2b 008c:2c 008d:09 008e:0a 008f:1b 0090:30 0091:31 0092:1a 0093:33 0094:34 0095:35 0096:36 0097:08 0098:38 0099:39 009a:3a 009b:3b 009c:04 009d:14 009e:3e 00a0:41 00a2:4a 00a6:6a 00ac:5f 060c:79 0621:46 0622:47 0623:49 0624:52 0626:55 0627:56 0628:58 0629:62 062a:63 062b:65 062c:67 062d:69 062e:71 062f:73 0630:74 0631:75 0632:76 0633:77 0640:44 0651:42 066a:6c 066c:4b 066d:5c f8f6:77 f8fc:45 fe7c:42 fe7d:43 fe80:46 fe81:47 fe82:48 fe83:49 fe84:51 fe85:52 fe86:52 fe8b:55 fe8c:55 fe8d:56 fe8e:57 fe8f:58 fe90:58 fe91:59 fe92:59 fe93:62 fe94:62 fe95:63 fe96:63 fe97:64 fe98:64 fe99:65 fe9a:65 fe9b:66 fe9c:66 fe9d:67 fe9e:67 fe9f:68 fea0:68 fea1:69 fea2:69 fea3:70 fea4:70 fea5:71 fea6:71 fea7:72 fea8:72 fea9:73 feaa:73 feab:74 feac:74 fead:75 feae:75 feaf:76 feb0:76 feb3:78 feb4:78 ff01:5a ff02:7f ff03:7b ff04:5b ff05:6c ff06:50 ff07:7d ff08:4d ff09:5d ff0a:5c ff0b:4e ff0c:6b ff0d:60 ff0e:4b ff0f:61 ff1a:7a ff1b:5e ff1c:4c ff1d:7e ff1e:6e ff20:7c ff3f:6d ff5c:4f
28596 (ISO 8859-6 Arabic)
00a1:21 00a2:63 00a5:59 00a6:7c 00a9:43 00aa:61 00ab:3c 00ae:52 00b2:32 00b3:33 00b7:2e 00b8:2c 00b9:31 00ba:6f 00bb:3e 00c0:41 00c1:41 00c2:41 00c3:41 00c4:41 00c5:41 00c6:41 00c7:43 00c8:45 00c9:45 00ca:45 00cb:45 00cc:49 00cd:49 00ce:49 00cf:49 00d0:44 00d1:4e 00d2:4f 00d3:4f 00d4:4f 00d5:4f 00d6:4f 00d8:4f 00d9:55 00da:55 00db:55 00dc:55 00dd:59 00e0:61 00e1:61 00e2:61 00e3:61 00e4:61 00e5:61 00e6:61 00e7:63 00e8:65 00e9:65 00ea:65 00eb:65 00ec:69 00ed:69 00ee:69 00ef:69 00f1:6e 00f2:6f 00f3:6f 00f4:6f 00f5:6f 00f6:6f 00f8:6f 00f9:75 00fa:75 00fb:75 00fc:75 00fd:79 00ff:79 0100:41 0101:61 0102:41 0103:61 0104:41 0105:61 0106:43 0107:63 0108:43 0109:63 010a:43 010b:63 010c:43 010d:63 010e:44 010f:64 0110:44 0111:64 0112:45 0113:65 0114:45 0115:65 0116:45 0117:65 0118:45 0119:65 011a:45 011b:65 011c:47 011d:67 011e:47 011f:67 0120:47 0121:67 0122:47 0123:67 0124:48 0125:68 0126:48 0127:68 0128:49 0129:69 012a:49 012b:69 012c:49 012d:69 012e:49 012f:69 0130:49 0131:69 0134:4a 0135:6a 0136:4b 0137:6b 0139:4c 013a:6c 013b:4c 013c:6c 013d:4c 013e:6c 0141:4c 0142:6c 0143:4e 0144:6e 0145:4e 0146:6e 0147:4e 0148:6e 014c:4f 014d:6f 014e:4f 014f:6f 0150:4f 0151:6f 0152:4f 0153:6f 0154:52 0155:72 0156:52 0157:72 0158:52 0159:72 015a:53 015b:73 015c:53 015d:73 015e:53 015f:73 0160:53 0161:73 0162:54 0163:74 0164:54 0165:74 0166:54 0167:74 0168:55 0169:75 016a:55 016b:75 016c:55 016d:75 016e:55 016f:75 0170:55 0171:75 0172:55 0173:75 0174:57 0175:77 0176:59 0177:79 0178:59 0179:5a 017b:5a 017c:7a 017d:5a 017e:7a 0180:62 0189:44 0191:46 0192:66 0197:49 019a:6c 019f:4f 01a0:4f 01a1:6f 01ab:74 01ae:54 01af:55 01b0:75 01b6:7a 01cd:41 01ce:61 01cf:49 01d0:69 01d1:4f 01d2:6f 01d3:55 01d4:75 01d5:55 01d6:75 01d7:55 01d8:75 01d9:55 01da:75 01db:55 01dc:75 01de:41 01df:61 01e4:47 01e5:67 01e6:47 01e7:67 01e8:4b 01e9:6b 01ea:4f 01eb:6f 01ec:4f 01ed:6f 01f0:6a 0261:67 02b9:27 02ba:22 02bc:27 02c4:5e 02c6:5e 02c8:27 02cb:60 02cd:5f 02dc:7e 0300:60 0302:5e 0303:7e 030e:22 0331:5f 0332:5f 2000:20 2001:20 2002:20 2003:20 2004:20 2005:20 2006:20 2010:2d 2011:2d 2013:2d 2014:2d 2018:27 2019:27 201a:2c 201c:22 201d:22 201e:22 2022:2e 2026:2e 2032:27 2035:60 2039:3c 203a:3e 2122:54 ff01:21 ff02:22 ff03:23 ff04:24 ff05:25 ff06:26 ff07:27 ff08:28 ff09:29 ff0a:2a ff0b:2b ff0c:2c ff0d:2d ff0e:2e ff0f:2f ff10:30 ff11:31 ff12:32 ff13:33 ff14:34 ff15:35 ff16:36 ff17:37 ff18:38 ff19:39 ff1a:3a ff1b:3b ff1c:3c ff1d:3d ff1e:3e ff20:40 ff21:41 ff22:42 ff23:43 ff24:44 ff25:45 ff26:46 ff27:47 ff28:48 ff29:49 ff2a:4a ff2b:4b ff2c:4c ff2d:4d ff2e:4e ff2f:4f ff30:50 ff31:51 ff32:52 ff33:53 ff34:54 ff35:55 ff36:56 ff37:57 ff38:58 ff39:59 ff3a:5a ff3b:5b ff3c:5c ff3d:5d ff3e:5e ff3f:5f ff40:60 ff41:61 ff42:62 ff43:63 ff44:64 ff45:65 ff46:66 ff47:67 ff48:68 ff49:69 ff4a:6a ff4b:6b ff4c:6c ff4d:6d ff4e:6e ff4f:6f ff50:70 ff51:71 ff52:72 ff53:73 ff54:74 ff55:75 ff56:76 ff57:77 ff58:78 ff59:79 ff5a:7a ff5b:7b ff5c:7c ff5d:7d ff5e:7e
10008 (MAC - Simplified Chinese GB 2312)
936 (ANSI/OEM - Simplified Chinese GBK)
00a6:7c 00aa:61 00ad:2d 00b2:32 00b3:33 00b9:31 00ba:6f 00d0:44 00dd:59 00de:54 00e2:61 00f0:65 00fd:79 00fe:74
52936 (HZ-GB2312 Simplified Chinese)
54936 (GB18030 Simplified Chinese)
20936 (Simplified Chinese GB2312)
50227 (ISO-2022 Simplified Chinese)
10029 (MAC - Latin II)
775 (OEM - Baltic)
00a1:21 00a5:59 00aa:61 00ba:6f 00c0:41 00c3:41 00c8:45 00ca:45 00cc:49 00cf:49 00d1:4e 00d2:4f 00d9:55 00db:55 00e0:61 00e3:61 00e8:63 00ea:65 00ec:69 00ef:69 00f1:6e 00f2:6f 00f9:75 00fb:75 00ff:79 0108:43 0109:63 010a:43 010b:63 0114:45 0115:65 011c:47 011d:67 011e:47 011f:67 0120:47 0121:67 0124:48 0125:68 0126:48 0127:68 0128:49 0129:69 012c:49 012d:69 0130:49 0131:69 0134:4a 0135:6a 014e:4f 014f:6f 0152:4f 0153:6f 015c:53 015d:73 0166:54 0167:74 0168:55 0169:75 016c:55 016d:75 0174:57 0175:77 0176:59 0177:79 0178:59 0180:62 0191:46 0192:66 0197:49 019a:6c 019f:4f 01a0:4f 01a1:6f 01ab:74 01ae:54 01af:55 01b0:75 01b6:7a 01c0:7c 01c3:21 01cd:41 01ce:61 01cf:49 01d0:69 01d1:4f 01d2:6f 01d3:55 01d4:75 01d5:55 01d6:75 01d7:55 01d8:75 01d9:55 01da:75 01db:55 01dc:75 01de:41 01df:61 01e4:47 01e5:67 01e6:47 01e7:67 01e8:4b 01e9:6b 01ea:4f 01eb:6f 01ec:4f 01ed:6f 01f0:6a 0261:67 02b9:27 02ba:22 02bb:27 02bc:27 02c4:5e 02c6:5e 02c8:27 02cb:60 02cd:5f 02dc:7e 0300:60 0302:5e 0303:7e 030e:22 0331:5f 0332:5f 037e:3b 03bc:75 04bb:68 0589:3a 066a:25 2000:20 2001:20 2002:20 2003:20 2004:20 2005:20 2006:20 2010:2d 2011:2d 2013:2d 2014:2d 2018:27 201a:27 2022:07 2024:07 2026:07 2030:25 2032:27 2033:22 2035:22 2039:3c 203a:3e 203c:13 2044:2f 2070:30 2074:34 2075:35 2076:36 2077:37 2078:38 2080:30 2081:31 2082:32 2083:33 2084:34 2085:35 2086:36 2087:37 2088:38 2089:39 20a4:4c 2102:43 2107:45 210a:67 210b:48 210c:48 210d:48 210e:68 2110:49 2111:49 2112:4c 2113:6c 2115:4e 2118:50 2119:50 211a:51 211b:52 211c:52 211d:52 2122:74 2124:5a 2128:5a 212a:4b 212b:41 212c:42 212d:43 212e:65 212f:65 2130:45 2131:46 2133:4d 2134:6f 2190:1b 2191:18 2192:1a 2193:19 2194:1d 2195:12 21a8:17 2205:4f 2212:2d 2213:2d 2215:2f 2216:5c 2217:2a 221f:1c 2223:7c 2236:3a 223c:7e 22c5:07 2302:7f 2303:5e 2329:3c 232a:3e 25ac:16 25b2:1e 25ba:10 25bc:1f 25c4:11 25cb:09 25d8:08 25d9:0a 263a:01 263b:02 263c:0f 2640:0c 2642:0b 2660:06 2663:05 2665:03 2666:04 266a:0d 266b:0e 2758:7c 275b:27 275c:27 275d:22 275e:22 3000:20 3008:3c 3009:3e 301a:5b 301b:5d 301d:22 301e:22 301f:22 30fb:07 30fc:5f ff01:21 ff02:22 ff03:23 ff04:24 ff05:25 ff06:26 ff07:27 ff08:28 ff09:29 ff0a:2a ff0b:2b ff0c:2c ff0d:2d ff0e:2e ff0f:2f ff10:30 ff11:31 ff12:32 ff13:33 ff14:34 ff15:35 ff16:36 ff17:37 ff18:38 ff19:39 ff1a:3a ff1b:3b ff1c:3c ff1d:3d ff1e:3e ff20:40 ff21:41 ff22:42 ff23:43 ff24:44 ff25:45 ff26:46 ff27:47 ff28:48 ff29:49 ff2a:4a ff2b:4b ff2c:4c ff2d:4d ff2e:4e ff2f:4f ff30:50 ff31:51 ff32:52 ff33:53 ff34:54 ff35:55 ff36:56 ff37:57 ff38:58 ff39:59 ff3a:5a ff3b:5b ff3c:5c ff3d:5d ff3e:5e ff3f:5f ff40:60 ff41:61 ff42:62 ff43:63 ff44:64 ff45:65 ff46:66 ff47:67 ff48:68 ff49:69 ff4a:6a ff4b:6b ff4c:6c ff4d:6d ff4e:6e ff4f:6f ff50:70 ff51:71 ff52:72 ff53:73 ff54:74 ff55:75 ff56:76 ff57:77 ff58:78 ff59:79 ff5a:7a ff5b:7b ff5c:7c ff5d:7d ff5e:7e
1257 (ANSI - Baltic)
ff01:21 ff02:22 ff03:23 ff04:24 ff05:25 ff06:26 ff07:27 ff08:28 ff09:29 ff0a:2a ff0b:2b ff0c:2c ff0d:2d ff0e:2e ff0f:2f ff10:30 ff11:31 ff12:32 ff13:33 ff14:34 ff15:35 ff16:36 ff17:37 ff18:38 ff19:39 ff1a:3a ff1b:3b ff1c:3c ff1d:3d ff1e:3e ff20:40 ff21:41 ff22:42 ff23:43 ff24:44 ff25:45 ff26:46 ff27:47 ff28:48 ff29:49 ff2a:4a ff2b:4b ff2c:4c ff2d:4d ff2e:4e ff2f:4f ff30:50 ff31:51 ff32:52 ff33:53 ff34:54 ff35:55 ff36:56 ff37:57 ff38:58 ff39:59 ff3a:5a ff3b:5b ff3c:5c ff3d:5d ff3e:5e ff3f:5f ff40:60 ff41:61 ff42:62 ff43:63 ff44:64 ff45:65 ff46:66 ff47:67 ff48:68 ff49:69 ff4a:6a ff4b:6b ff4c:6c ff4d:6d ff4e:6e ff4f:6f ff50:70 ff51:71 ff52:72 ff53:73 ff54:74 ff55:75 ff56:76 ff57:77 ff58:78 ff59:79 ff5a:7a ff5b:7b ff5c:7c ff5d:7d ff5e:7e
28594 (ISO 8859-4 Baltic)
00a1:21 00a2:63 00a5:59 00a6:7c 00a9:43 00aa:61 00ab:3c 00ae:52 00b2:32 00b3:33 00b7:2e 00b9:31 00ba:6f 00bb:3e 00c0:41 00c7:43 00c8:45 00ca:45 00cc:49 00cf:49 00d0:44 00d1:4e 00d2:4f 00d3:4f 00d9:55 00dd:59 00e0:61 00e7:63 00e8:65 00ea:65 00ec:69 00ef:69 00f1:6e 00f2:6f 00f3:6f 00f9:75 00fd:79 00ff:79 0102:41 0103:61 0106:43 0107:63 0108:43 0109:63 010a:43 010b:63 010e:44 010f:64 0114:45 0115:65 011a:45 011b:65 011c:47 011d:67 011e:47 011f:67 0120:47 0121:67 0124:48 0125:68 0126:48 0127:68 012c:49 012d:69 0130:49 0131:69 0134:4a 0135:6a 0139:4c 013a:6c 013d:4c 013e:6c 0141:4c 0142:6c 0143:4e 0144:6e 0147:4e 0148:6e 014e:4f 014f:6f 0150:4f 0151:6f 0152:4f 0153:6f 0154:52 0155:72 0158:52 0159:72 015a:53 015b:73 015c:53 015d:73 015e:53 015f:73 0162:54 0163:74 0164:54 0165:74 016c:55 016d:75 016e:55 016f:75 0170:55 0171:75 0174:57 0175:77 0176:59 0177:79 0178:59 0179:5a 017b:5a 017c:7a 0180:62 0189:44 0191:46 0192:66 0197:49 019a:6c 019f:4f 01a0:4f 01a1:6f 01ab:74 01ae:54 01af:55 01b0:75 01b6:7a 01cd:41 01ce:61 01cf:49 01d0:69 01d1:4f 01d2:6f 01d3:55 01d4:75 01d5:55 01d6:75 01d7:55 01d8:75 01d9:55 01da:75 01db:55 01dc:75 01de:41 01df:61 01e4:47 01e5:67 01e6:47 01e7:67 01e8:4b 01e9:6b 01ea:4f 01eb:6f 01ec:4f 01ed:6f 01f0:6a 0261:67 02b9:27 02ba:22 02bc:27 02c4:5e 02c6:5e 02c8:27 02cb:60 02cd:5f 02dc:7e 0300:60 0302:5e 0303:7e 030e:22 0331:5f 0332:5f 2000:20 2001:20 2002:20 2003:20 2004:20 2005:20 2006:20 2010:2d 2011:2d 2013:2d 2014:2d 2018:27 2019:27 201a:2c 201c:22 201d:22 201e:22 2022:2e 2026:2e 2032:27 2035:60 2039:3c 203a:3e 2122:54 ff01:21 ff02:22 ff03:23 ff04:24 ff05:25 ff06:26 ff07:27 ff08:28 ff09:29 ff0a:2a ff0b:2b ff0c:2c ff0d:2d ff0e:2e ff0f:2f ff10:30 ff11:31 ff12:32 ff13:33 ff14:34 ff15:35 ff16:36 ff17:37 ff18:38 ff19:39 ff1a:3a ff1b:3b ff1c:3c ff1d:3d ff1e:3e ff20:40 ff21:41 ff22:42 ff23:43 ff24:44 ff25:45 ff26:46 ff27:47 ff28:48 ff29:49 ff2a:4a ff2b:4b ff2c:4c ff2d:4d ff2e:4e ff2f:4f ff30:50 ff31:51 ff32:52 ff33:53 ff34:54 ff35:55 ff36:56 ff37:57 ff38:58 ff39:59 ff3a:5a ff3b:5b ff3c:5c ff3d:5d ff3e:5e ff3f:5f ff40:60 ff41:61 ff42:62 ff43:63 ff44:64 ff45:65 ff46:66 ff47:67 ff48:68 ff49:69 ff4a:6a ff4b:6b ff4c:6c ff4d:6d ff4e:6e ff4f:6f ff50:70 ff51:71 ff52:72 ff53:73 ff54:74 ff55:75 ff56:76 ff57:77 ff58:78 ff59:79 ff5a:7a ff5b:7b ff5c:7c ff5d:7d ff5e:7e
28603 (ISO 8859-13 Latin 7)
00aa:61 00ba:6f 00c0:41 00c1:41 00c2:41 00c3:41 00c7:43 00c8:45 00ca:45 00cb:45 00cc:49 00cd:49 00ce:49 00cf:49 00d1:4e 00d2:4f 00d4:4f 00d9:55 00da:55 00db:55 00dd:59 00e0:61 00e1:61 00e2:61 00e3:61 00e7:63 00e8:65 00ea:65 00eb:65 00ec:69 00ed:69 00ee:69 00ef:69 00f1:6e 00f2:6f 00f4:6f 00f9:75 00fa:75 00fb:75 00fd:79 00ff:79 0102:41 0103:61 0108:43 0109:63 010a:43 010b:63 010e:44 010f:64 0114:45 0115:65 011a:45 011b:65 011c:47 011d:67 011e:47 011f:67 0120:47 0121:67 0124:48 0125:68 0128:49 0129:69 012c:49 012d:69 0130:49 0134:4a 0135:6a 0139:4c 013a:6c 013d:4c 013e:6c 0147:4e 0148:6e 014e:4f 014f:6f 0150:4f 0151:6f 0154:52 0155:72 0158:52 0159:72 015c:53 015d:73 015e:53 015f:73 0162:54 0163:74 0164:54 0165:74 0168:55 0169:75 016c:55 016d:75 016e:55 016f:75 0170:55 0171:75 0174:57 0175:77 0176:59 0177:79 0178:59 017f:73 01a0:4f 01a1:6f 01af:55 01b0:75 01cd:41 01ce:61 01cf:49 01d0:69 01d1:4f 01d2:6f 01d3:55 01d4:75 01e0:41 01e1:61 01e6:47 01e7:67 01e8:4b 01e9:6b 01ea:4f 01eb:6f 01ec:4f 01ed:6f 01f0:6a 01f4:47 01f5:67 01f8:4e 01f9:6e 0200:41 0201:61 0202:41 0203:61 0204:45 0205:65 0206:45 0207:65 0208:49 0209:69 020a:49 020b:69 020c:4f 020d:6f 020e:4f 020f:6f 0210:52 0211:72 0212:52 0213:72 0214:55 0215:75 0216:55 0217:75 0218:53 0219:73 021a:54 021b:74 021e:48 021f:68 0226:41 0227:61 0228:45 0229:65 022e:4f 022f:6f 0230:4f 0231:6f 0232:59 0233:79 02b0:68 02b2:6a 02b3:72 02b7:77 02b8:79 02e1:6c 02e2:73 02e3:78 037e:3b 1e00:41 1e01:61 1e02:42 1e03:62 1e04:42 1e05:62 1e06:42 1e07:62 1e08:43 1e09:63 1e0a:44 1e0b:64 1e0c:44 1e0d:64 1e0e:44 1e0f:64 1e10:44 1e11:64 1e12:44 1e13:64 1e18:45 1e19:65 1e1a:45 1e1b:65 1e1c:45 1e1d:65 1e1e:46 1e1f:66 1e20:47 1e21:67 1e22:48 1e23:68 1e24:48 1e25:68 1e26:48 1e27:68 1e28:48 1e29:68 1e2a:48 1e2b:68 1e2c:49 1e2d:69 1e2e:49 1e2f:69 1e30:4b 1e31:6b 1e32:4b 1e33:6b 1e34:4b 1e35:6b 1e36:4c 1e37:6c 1e38:4c 1e39:6c 1e3a:4c 1e3b:6c 1e3c:4c 1e3d:6c 1e3e:4d 1e3f:6d 1e40:4d 1e41:6d 1e42:4d 1e43:6d 1e44:4e 1e45:6e 1e46:4e 1e47:6e 1e48:4e 1e49:6e 1e4a:4e 1e4b:6e 1e54:50 1e55:70 1e56:50 1e57:70 1e58:52 1e59:72 1e5a:52 1e5b:72 1e5c:52 1e5d:72 1e5e:52 1e5f:72 1e60:53 1e61:73 1e62:53 1e63:73 1e68:53 1e69:73 1e6a:54 1e6b:74 1e6c:54 1e6d:74 1e6e:54 1e6f:74 1e70:54 1e71:74 1e72:55 1e73:75 1e74:55 1e76:55 1e77:75 1e78:55 1e79:75 1e7c:56 1e7d:76 1e7e:56 1e7f:76 1e80:57 1e81:77 1e82:57 1e83:77 1e84:57 1e85:77 1e86:57 1e87:77 1e88:57 1e89:77 1e8a:58 1e8b:78 1e8c:58 1e8d:78 1e8e:59 1e8f:79 1e90:5a 1e91:7a 1e92:5a 1e93:7a 1e94:5a 1e95:7a 1e96:68 1e97:74 1e98:77 1e99:79 1e9b:73 1ea0:41 1ea1:61 1ea2:41 1ea3:61 1ea4:41 1ea5:61 1ea6:41 1ea7:61 1ea8:41 1ea9:61 1eaa:41 1eab:61 1eac:41 1ead:61 1eae:41 1eaf:61 1eb0:41 1eb1:61 1eb2:41 1eb3:61 1eb4:41 1eb5:61 1eb6:41 1eb7:61 1eb8:45 1eb9:65 1eba:45 1ebb:65 1ebc:45 1ebd:65 1ebe:45 1ebf:65 1ec0:45 1ec1:65 1ec2:45 1ec3:65 1ec4:45 1ec5:65 1ec6:45 1ec7:65 1ec8:49 1ec9:69 1eca:49 1ecb:69 1ecc:4f 1ecd:6f 1ece:4f 1ecf:6f 1ed0:4f 1ed1:6f 1ed2:4f 1ed3:6f 1ed4:4f 1ed5:6f 1ed6:4f 1ed7:6f 1ed8:4f 1ed9:6f 1eda:4f 1edb:6f 1edc:4f 1edd:6f 1ede:4f 1edf:6f 1ee0:4f 1ee1:6f 1ee2:4f 1ee3:6f 1ee4:55 1ee5:75 1ee6:55 1ee7:75 1ee8:55 1ee9:75 1eea:55 1eeb:75 1eec:55 1eed:75 1eee:55 1eef:75 1ef0:55 1ef1:75 1ef2:59 1ef3:79 1ef4:59 1ef5:79 1ef6:59 1ef7:79 1ef8:59 1ef9:79 1fef:60 2000:20 2001:20 2002:20 2003:20 2004:20 2005:20 2006:20 2007:20 2008:20 2009:20 200a:20 2024:2e 202f:20 205f:20 2070:30 2071:69 2074:34 2075:35 2076:36 2077:37 2078:38 2079:39 207a:2b 207c:3d 207d:28 207e:29 207f:6e 2080:30 2081:31 2082:32 2083:33 2084:34 2085:35 2086:36 2087:37 2088:38 2089:39 208a:2b 208c:3d 208d:28 208e:29 2102:43 210a:67 210b:48 210c:48 210d:48 210e:68 2110:49 2111:49 2112:4c 2113:6c 2115:4e 2119:50 211a:51 211b:52 211c:52 211d:52 2124:5a 2128:5a 212a:4b 212c:42 212d:43 212f:65 2130:45 2131:46 2133:4d 2134:6f 2139:69 2145:44 2146:64 2147:65 2148:69 2149:6a 2160:49 2164:56 2169:58 216c:4c 216d:43 216e:44 216f:4d 2170:69 2174:76 2179:78 217c:6c 217d:63 217e:64 217f:6d 2260:3d 226e:3c 226f:3e 2460:31 2461:32 2462:33 2463:34 2464:35 2465:36 2466:37 2467:38 2468:39 24b6:41 24b7:42 24b8:43 24b9:44 24ba:45 24bb:46 24bc:47 24bd:48 24be:49 24bf:4a 24c0:4b 24c1:4c 24c2:4d 24c3:4e 24c4:4f 24c5:50 24c6:51 24c7:52 24c8:53 24c9:54 24ca:55 24cb:56 24cc:57 24cd:58 24ce:59 24cf:5a 24d0:61 24d1:62 24d2:63 24d3:64 24d4:65 24d5:66 24d6:67 24d7:68 24d8:69 24d9:6a 24da:6b 24db:6c 24dc:6d 24dd:6e 24de:6f 24df:70 24e0:71 24e1:72 24e2:73 24e3:74 24e4:75 24e5:76 24e6:77 24e7:78 24e8:79 24e9:7a 24ea:30 3000:20 fb29:2b fe33:5f fe34:5f fe35:28 fe36:29 fe37:7b fe38:7d fe4d:5f fe4e:5f fe4f:5f fe50:2c fe52:2e fe54:3b fe55:3a fe57:21 fe59:28 fe5a:29 fe5b:7b fe5c:7d fe5f:23 fe60:26 fe61:2a fe62:2b fe63:2d fe64:3c fe65:3e fe66:3d fe68:5c fe69:24 fe6a:25 fe6b:40 ff01:21 ff02:22 ff03:23 ff04:24 ff05:25 ff06:26 ff07:27 ff08:28 ff09:29 ff0a:2a ff0b:2b ff0c:2c ff0d:2d ff0e:2e ff0f:2f ff10:30 ff11:31 ff12:32 ff13:33 ff14:34 ff15:35 ff16:36 ff17:37 ff18:38 ff19:39 ff1a:3a ff1b:3b ff1c:3c ff1d:3d ff1e:3e ff20:40 ff21:41 ff22:42 ff23:43 ff24:44 ff25:45 ff26:46 ff27:47 ff28:48 ff29:49 ff2a:4a ff2b:4b ff2c:4c ff2d:4d ff2e:4e ff2f:4f ff30:50 ff31:51 ff32:52 ff33:53 ff34:54 ff35:55 ff36:56 ff37:57 ff38:58 ff39:59 ff3a:5a ff3b:5b ff3c:5c ff3d:5d ff3e:5e ff3f:5f ff40:60 ff41:61 ff42:62 ff43:63 ff44:64 ff45:65 ff46:66 ff47:67 ff48:68 ff49:69 ff4a:6a ff4b:6b ff4c:6c ff4d:6d ff4e:6e ff4f:6f ff50:70 ff51:71 ff52:72 ff53:73 ff54:74 ff55:75 ff56:76 ff57:77 ff58:78 ff59:79 ff5a:7a ff5b:7b ff5c:7c ff5d:7d ff5e:7e
10001 (MAC - Japanese)
00a1:21 00a6:7c 00aa:61 00ad:2d 00ae:52 00b2:32 00b3:33 00b9:31 00ba:6f 00c0:41 00c1:41 00c2:41 00c3:41 00c4:41 00c5:41 00c6:41 00c7:43 00c8:45 00c9:45 00ca:45 00cb:45 00cc:49 00cd:49 00ce:49 00cf:49 00d0:44 00d1:4e 00d2:4f 00d3:4f 00d4:4f 00d5:4f 00d6:4f 00d8:4f 00d9:55 00da:55 00db:55 00dc:55 00dd:59 00de:54 00df:73 00e0:61 00e1:61 00e2:61 00e3:61 00e4:61 00e5:61 00e6:61 00e7:63 00e8:65 00e9:65 00ea:65 00eb:65 00ec:69 00ed:69 00ee:69 00ef:69 00f0:64 00f1:6e 00f2:6f 00f3:6f 00f4:6f 00f5:6f 00f6:6f 00f8:6f 00f9:75 00fa:75 00fb:75 00fc:75
932 (ANSI/OEM - Japanese Shift-JIS)
00a1:21 00a5:5c 00a6:7c 00a9:63 00aa:61 00ad:2d 00ae:52 00b2:32 00b3:33 00b9:31 00ba:6f 00c0:41 00c1:41 00c2:41 00c3:41 00c4:41 00c5:41 00c6:41 00c7:43 00c8:45 00c9:45 00ca:45 00cb:45 00cc:49 00cd:49 00ce:49 00cf:49 00d0:44 00d1:4e 00d2:4f 00d3:4f 00d4:4f 00d5:4f 00d6:4f 00d8:4f 00d9:55 00da:55 00db:55 00dc:55 00dd:59 00de:54 00df:73 00e0:61 00e1:61 00e2:61 00e3:61 00e4:61 00e5:61 00e6:61 00e7:63 00e8:65 00e9:65 00ea:65 00eb:65 00ec:69 00ed:69 00ee:69 00ef:69 00f0:64 00f1:6e 00f2:6f 00f3:6f 00f4:6f 00f5:6f 00f6:6f 00f8:6f 00f9:75 00fa:75 00fb:75 00fc:75 00fd:79 00fe:74 00ff:79
20290 (IBM EBCDIC - Japanese Katakana Extended)
0004:37 0005:2d 0006:2e 0007:2f 0008:16 0009:05 000a:25 0014:3c 0015:3d 0016:32 0017:26 001a:3f 001b:27 0020:40 0021:5a 0022:7f 0023:7b 0025:6c 0026:50 0027:7d 0028:4d 0029:5d 002a:5c 002b:4e 002c:6b 002d:60 002e:4b 002f:61 003a:7a 003b:5e 003c:4c 003d:7e 003e:6e 003f:6f 0040:7c 005b:70 005f:6d 0060:79 0061:62 0062:63 0063:64 0064:65 0065:66 0066:67 0067:68 0068:69 0069:71 006a:72 006b:73 006c:74 006d:75 006e:76 006f:77 0070:78 007c:4f 007f:07 0080:20 0081:21 0082:22 0083:23 0084:24 0085:15 0086:06 0087:17 0088:28 0089:29 008a:2a 008b:2b 008c:2c 008d:09 008e:0a 008f:1b 0090:30 0091:31 0092:1a 0093:33 0094:34 0095:35 0096:36 0097:08 0098:38 0099:39 009a:3a 009b:3b 009c:04 009d:14 009e:3e 00a3:4a 00a5:5b 00ac:5f ff01:5a ff02:7f ff03:7b ff05:6c ff06:50 ff07:7d ff08:4d ff09:5d ff0a:5c ff0b:4e ff0c:6b ff0d:60 ff0e:4b ff0f:61 ff1a:7a ff1b:5e ff1c:4c ff1d:7e ff1e:6e ff20:7c ff3b:70 ff3f:6d ff40:79 ff41:62 ff42:63 ff43:64 ff44:65 ff45:66 ff46:67 ff47:68 ff48:69 ff49:71 ff4a:72 ff4b:73 ff4c:74 ff4d:75 ff4e:76 ff4f:77 ff50:78 ff5c:4f ff61:41 ff62:42 ff63:43 ff64:44 ff65:45 ff66:46 ff67:47 ff68:48 ff69:49 ff6a:51 ff6b:52 ff6c:53 ff6d:54 ff6e:55 ff6f:56 ff70:58
20932 (JIS X 0208-1990 & 0212-1990)
50220 (ISO-2022 Japanese with no halfwidth Katakana)
50221 (ISO-2022 Japanese with halfwidth Katakana)
50222 (ISO-2022 Japanese JIS X 0201-1989)
21027 (Ext Alpha Lowercase)
0020:40 0021:5a 0022:7f 0023:7b 0024:5b 0025:6c 0026:50 0027:7d 0028:4d 0029:5d 002a:5c 002b:4e 002c:6b 002d:60 002e:4b 002f:61 003a:7a 003b:5e 003c:4c 003d:7e 003e:6e 003f:6f 0040:7c 005f:6d 0060:79 007c:4f 00a2:4a 00ac:5f f8c4:20 f8c5:21 f8c6:22 f8c7:23 f8c8:24 f8c9:25 f8ca:26 f8cb:27 f8cc:28 f8cd:29 f8ce:2a f8cf:2b f8d0:2c f8d1:2d f8d2:2e f8d3:2f f8d4:30 f8d5:31 f8d6:32 f8d7:33 f8d8:34 f8d9:35 f8da:36 f8db:37 f8dc:38 f8dd:39 f8de:3a f8df:3b f8e0:3c f8e1:3d f8e2:3f f8e3:68 f8e4:7e ff61:42 ff62:43 ff63:44 ff64:45 ff65:46 ff66:47 ff67:48 ff68:49 ff69:51 ff6a:52 ff6b:53 ff6c:54 ff6d:55 ff6e:56 ff6f:57 ff70:58 ff71:59 ff72:62 ff73:63 ff74:64 ff75:65 ff76:66 ff77:67 ff78:68 ff79:69 ff7a:70 ff7b:71 ff7c:72 ff7d:73 ff7e:74 ff7f:75 ff80:76 ff81:77 ff82:78
10007 (MAC - Cyrillic)
1251 (ANSI - Cyrillic)
00c0:41 00c1:41 00c2:41 00c3:41 00c4:41 00c5:41 00c7:43 00c8:45 00c9:45 00ca:45 00cb:45 00cc:49 00cd:49 00ce:49 00cf:49 00d1:4e 00d2:4f 00d3:4f 00d4:4f 00d5:4f 00d6:4f 00d8:4f 00d9:55 00da:55 00db:55 00dc:55 00dd:59 00e0:61 00e1:61 00e2:61 00e3:61 00e4:61 00e5:61 00e7:63 00e8:65 00e9:65 00ea:65 00eb:65 00ec:69 00ed:69 00ee:69 00ef:69 00f1:6e 00f2:6f 00f3:6f 00f4:6f 00f5:6f 00f6:6f 00f8:6f 00f9:75 00fa:75 00fb:75 00fc:75 00fd:79 00ff:79 0100:41 0101:61 0102:41 0103:61 0104:41 0105:61 0106:43 0107:63 0108:43 0109:63 010a:43 010b:63 010c:43 010d:63 010e:44 010f:64 0110:44 0111:64 0112:45 0113:65 0114:45 0115:65 0116:45 0117:65 0118:45 0119:65 011a:45 011b:65 011c:47 011d:67 011e:47 011f:67 0120:47 0121:67 0122:47 0123:67 0124:48 0125:68 0126:48 0127:68 0128:49 0129:69 012a:49 012b:69 012c:49 012d:69 012e:49 012f:69 0130:49 0134:4a 0135:6a 0136:4b 0137:6b 0139:4c 013a:6c 013b:4c 013c:6c 013d:4c 013e:6c 0141:4c 0142:6c 0143:4e 0144:6e 0145:4e 0146:6e 0147:4e 0148:6e 014c:4f 014d:6f 014e:4f 014f:6f 0150:4f 0151:6f 0154:52 0155:72 0156:52 0157:72 0158:52 0159:72 015a:53 015b:73 015c:53 015d:73 015e:53 015f:73 0160:53 0161:73 0162:54 0163:74 0164:54 0165:74 0166:54 0167:74 0168:55 0169:75 016a:55 016b:75 016c:55 016d:75 016e:55 016f:75 0170:55 0171:75 0172:55 0173:75 0174:57 0175:77 0176:59 0177:79 0178:59 0179:5a 017b:5a 017c:7a 017d:5a 017e:7a 0180:62 0197:49 019a:6c 019f:4f 01a0:4f 01a1:6f 01ab:74 01ae:54 01af:55 01b0:75 01cd:41 01ce:61 01cf:49 01d0:69 01d1:4f 01d2:6f 01d3:55 01d4:75 01d5:55 01d6:75 01d7:55 01d8:75 01d9:55 01da:75 01db:55 01dc:75 01de:41 01df:61 01e4:47 01e5:67 01e6:47 01e7:67 01e8:4b 01e9:6b 01ea:4f 01eb:6f 01ec:4f 01ed:6f 01f0:6a 203c:21 2190:3c 2191:5e 2192:3e 2193:76 2194:2d 221a:76 221f:4c 2500:2d 250c:2d 2514:4c 2518:2d 251c:2b 2524:2b 252c:54 2534:2b 253c:2b 2550:3d 2552:2d 2558:4c 2559:4c 255a:4c 255b:2d 255c:2d 255d:2d 2564:54 2565:54 2566:54 256a:2b 256b:2b 256c:2b 2580:2d 2584:2d 2588:2d 2591:2d 2592:2d 2593:2d 25ac:2d 25b2:5e 25ba:3e 25c4:3c 25cb:30 25d9:30 263a:4f 263b:4f 263c:30 2640:2b 2642:3e 266a:64 266b:64 ff01:21 ff02:22 ff03:23 ff04:24 ff05:25 ff06:26 ff07:27 ff08:28 ff09:29 ff0a:2a ff0b:2b ff0c:2c ff0d:2d ff0e:2e ff0f:2f ff10:30 ff11:31 ff12:32 ff13:33 ff14:34 ff15:35 ff16:36 ff17:37 ff18:38 ff19:39 ff1a:3a ff1b:3b ff1c:3c ff1d:3d ff1e:3e ff20:40 ff21:41 ff22:42 ff23:43 ff24:44 ff25:45 ff26:46 ff27:47 ff28:48 ff29:49 ff2a:4a ff2b:4b ff2c:4c ff2d:4d ff2e:4e ff2f:4f ff30:50 ff31:51 ff32:52 ff33:53 ff34:54 ff35:55 ff36:56 ff37:57 ff38:58 ff39:59 ff3a:5a ff3b:5b ff3c:5c ff3d:5d ff3e:5e ff3f:5f ff40:60 ff41:61 ff42:62 ff43:63 ff44:64 ff45:65 ff46:66 ff47:67 ff48:68 ff49:69 ff4a:6a ff4b:6b ff4c:6c ff4d:6d ff4e:6e ff4f:6f ff50:70 ff51:71 ff52:72 ff53:73 ff54:74 ff55:75 ff56:76 ff57:77 ff58:78 ff59:79 ff5a:7a ff5b:7b ff5c:7c ff5d:7d ff5e:7e
866 (OEM - Russian)
00a7:15 00a9:63 00ab:3c 00ad:2d 00ae:52 00b1:2b 00b6:14 00bb:3e 00c0:41 00c1:41 00c2:41 00c3:41 00c4:41 00c5:41 00c7:43 00c8:45 00c9:45 00ca:45 00cb:45 00cc:49 00cd:49 00ce:49 00cf:49 00d1:4e 00d2:4f 00d3:4f 00d4:4f 00d5:4f 00d6:4f 00d8:4f 00d9:55 00da:55 00db:55 00dc:55 00dd:59 00e0:61 00e1:61 00e2:61 00e3:61 00e4:61 00e5:61 00e7:63 00e8:65 00e9:65 00ea:65 00eb:65 00ec:69 00ed:69 00ee:69 00ef:69 00f1:6e 00f2:6f 00f3:6f 00f4:6f 00f5:6f 00f6:6f 00f8:6f 00f9:75 00fa:75 00fb:75 00fc:75 00fd:79 00ff:79 0100:41 0101:61 0102:41 0103:61 0104:41 0105:61 0106:43 0107:63 0108:43 0109:63 010a:43 010b:63 010c:43 010d:63 010e:44 010f:64 0110:44 0111:64 0112:45 0113:65 0114:45 0115:65 0116:45 0117:65 0118:45 0119:65 011a:45 011b:65 011c:47 011d:67 011e:47 011f:67 0120:47 0121:67 0122:47 0123:67 0124:48 0125:68 0126:48 0127:68 0128:49 0129:69 012a:49 012b:69 012c:49 012d:69 012e:49 012f:69 0130:49 0134:4a 0135:6a 0136:4b 0137:6b 0139:4c 013a:6c 013b:4c 013c:6c 013d:4c 013e:6c 0141:4c 0142:6c 0143:4e 0144:6e 0145:4e 0146:6e 0147:4e 0148:6e 014c:4f 014d:6f 014e:4f 014f:6f 0150:4f 0151:6f 0154:52 0155:72 0156:52 0157:72 0158:52 0159:72 015a:53 015b:73 015c:53 015d:73 015e:53 015f:73 0160:53 0161:73 0162:54 0163:74 0164:54 0165:74 0166:54 0167:74 0168:55 0169:75 016a:55 016b:75 016c:55 016d:75 016e:55 016f:75 0170:55 0171:75 0172:55 0173:75 0174:57 0175:77 0176:59 0177:79 0178:59 0179:5a 017b:5a 017c:7a 017d:5a 017e:7a 0180:62 0197:49 019a:6c 019f:4f 01a0:4f 01a1:6f 01ab:74 01ae:54 01af:55 01b0:75 01cd:41 01ce:61 01cf:49 01d0:69 01d1:4f 01d2:6f 01d3:55 01d4:75 01d5:55 01d6:75 01d7:55 01d8:75 01d9:55 01da:75 01db:55 01dc:75 01de:41 01df:61 01e4:47 01e5:67 01e6:47 01e7:67 01e8:4b 01e9:6b 01ea:4f 01eb:6f 01ec:4f 01ed:6f 01f0:6a 2013:2d 2014:2d 2018:27 2019:27 201a:27 201c:22 201d:22 201e:22 2022:07 2026:3a 2030:25 2039:3c 203a:3e 203c:13 2122:54 2190:1b 2191:18 2192:1a 2193:19 2194:1d 2195:12 21a8:17 221f:1c 2302:7f 25ac:16 25b2:1e 25ba:10 25bc:1f 25c4:11 25cb:09 25d8:08 25d9:0a 263a:01 263b:02 263c:0f 2640:0c 2642:0b 2660:06 2663:05 2665:03 2666:04 266a:0d 266b:0e ff01:21 ff02:22 ff03:23 ff04:24 ff05:25 ff06:26 ff07:27 ff08:28 ff09:29 ff0a:2a ff0b:2b ff0c:2c ff0d:2d ff0e:2e ff0f:2f ff10:30 ff11:31 ff12:32 ff13:33 ff14:34 ff15:35 ff16:36 ff17:37 ff18:38 ff19:39 ff1a:3a ff1b:3b ff1c:3c ff1d:3d ff1e:3e ff20:40 ff21:41 ff22:42 ff23:43 ff24:44 ff25:45 ff26:46 ff27:47 ff28:48 ff29:49 ff2a:4a ff2b:4b ff2c:4c ff2d:4d ff2e:4e ff2f:4f ff30:50 ff31:51 ff32:52 ff33:53 ff34:54 ff35:55 ff36:56 ff37:57 ff38:58 ff39:59 ff3a:5a ff3b:5b ff3c:5c ff3d:5d ff3e:5e ff3f:5f ff40:60 ff41:61 ff42:62 ff43:63 ff44:64 ff45:65 ff46:66 ff47:67 ff48:68 ff49:69 ff4a:6a ff4b:6b ff4c:6c ff4d:6d ff4e:6e ff4f:6f ff50:70 ff51:71 ff52:72 ff53:73 ff54:74 ff55:75 ff56:76 ff57:77 ff58:78 ff59:79 ff5a:7a ff5b:7b ff5c:7c ff5d:7d ff5e:7e
855 (OEM - Cyrillic)
00a9:63 00ac:2d 00ae:52 00b0:6f 00b1:2b 00b5:75 00b6:14 00b7:07 00c0:41 00c1:41 00c2:41 00c3:41 00c4:41 00c5:41 00c7:43 00c8:45 00c9:45 00ca:45 00cb:45 00cc:49 00cd:49 00ce:49 00cf:49 00d1:4e 00d2:4f 00d3:4f 00d4:4f 00d5:4f 00d6:4f 00d8:4f 00d9:55 00da:55 00db:55 00dc:55 00dd:59 00e0:61 00e1:61 00e2:61 00e3:61 00e4:61 00e5:61 00e7:63 00e8:65 00e9:65 00ea:65 00eb:65 00ec:69 00ed:69 00ee:69 00ef:69 00f1:6e 00f2:6f 00f3:6f 00f4:6f 00f5:6f 00f6:6f 00f8:6f 00f9:75 00fa:75 00fb:75 00fc:75 00ff:79 0100:41 0101:61 0102:41 0103:61 0104:41 0105:61 0106:43 0107:63 0108:43 0109:63 010a:43 010b:63 010c:43 010d:63 010e:44 010f:64 0110:44 0111:64 0112:45 0113:65 0114:45 0115:65 0116:45 0117:65 0118:45 0119:65 011a:45 011b:65 011c:47 011d:67 011e:47 011f:67 0120:47 0121:67 0122:47 0123:67 0124:48 0125:68 0126:48 0127:68 0128:49 0129:69 012a:49 012b:69 012c:49 012d:69 012e:49 012f:69 0130:49 0134:4a 0135:6a 0136:4b 0137:6b 0139:4c 013a:6c 013b:4c 013c:6c 013d:4c 013e:6c 0141:4c 0142:6c 0143:4e 0144:6e 0145:4e 0146:6e 0147:4e 0148:6e 014c:4f 014d:6f 014e:4f 014f:6f 0150:4f 0151:6f 0154:52 0155:72 0156:52 0157:72 0158:52 0159:72 015a:53 015b:73 015c:53 015d:73 015e:53 015f:73 0160:53 0161:73 0162:54 0163:74 0164:54 0165:74 0166:54 0167:74 0168:55 0169:75 016a:55 016b:75 016c:55 016d:75 016e:55 016f:75 0170:55 0171:75 0172:55 0173:75 0174:57 0175:77 0176:59 0177:79 0178:59 0179:5a 017b:5a 017c:7a 017d:5a 017e:7a 0180:62 0197:49 019a:6c 019f:4f 01a0:4f 01a1:6f 01ab:74 01ae:54 01af:55 01b0:75 01cd:41 01ce:61 01cf:49 01d0:69 01d1:4f 01d2:6f 01d3:55 01d4:75 01d5:55 01d6:75 01d7:55 01d8:75 01d9:55 01da:75 01db:55 01dc:75 01de:41 01df:61 01e4:47 01e5:67 01e6:47 01e7:67 01e8:4b 01e9:6b 01ea:4f 01eb:6f 01ec:4f 01ed:6f 01f0:6a 2013:2d 2014:2d 2018:27 2019:27 201a:27 201c:22 201d:22 201e:22 2020:2b 2021:2b 2022:07 2026:3a 2030:25 2039:3c 203a:3e 203c:13 2122:54 2190:1b 2191:18 2192:1a 2193:19 2194:1d 2195:12 21a8:17 2219:07 221a:76 221f:1c 2302:7f 25ac:16 25b2:1e 25ba:10 25bc:1f 25c4:11 25cb:09 25d8:08 25d9:0a 263a:01 263b:02 263c:0f 2640:0c 2642:0b 2660:7f 2663:7f 2665:7f 2666:7f 266a:64 266b:64
20880 (IBM EBCDIC - Cyrillic (Russian))
0004:37 0005:2d 0006:2e 0007:2f 0008:16 0009:05 000a:25 0014:3c 0015:3d 0016:32 0017:26 001a:3f 001b:27 0020:40 0021:4f 0022:7f 0023:7b 0024:5b 0025:6c 0026:50 0027:7d 0028:4d 0029:5d 002a:5c 002b:4e 002c:6b 002d:60 002e:4b 002f:61 003a:7a 003b:5e 003c:4c 003d:7e 003e:6e 003f:6f 0040:7c 005b:4a 005d:5a 005e:5f 005f:6d 0060:79 007c:6a 007f:07 0080:20 0081:21 0082:22 0083:23 0084:24 0085:15 0086:06 0087:17 0088:28 0089:29 008a:2a 008b:2b 008c:2c 008d:09 008e:0a 008f:1b 0090:30 0091:31 0092:1a 0093:33 0094:34 0095:35 0096:36 0097:08 0098:38 0099:39 009a:3a 009b:3b 009c:04 009d:14 009e:3e 00a0:41 00ad:73 0401:63 0402:59 0403:62 0404:64 0405:65 0406:66 0407:67 0408:68 0409:69 040a:70 040b:71 040c:72 040e:74 040f:75 042a:57 0430:77 0431:78 044e:76 0451:44 0452:42 0453:43 0454:45 0455:46 0456:47 0457:48 0458:49 0459:51 045a:52 045b:53 045c:54 045e:55 045f:56 2116:58 ff01:4f ff02:7f ff03:7b ff04:5b ff05:6c ff06:50 ff07:7d ff08:4d ff09:5d ff0a:5c ff0b:4e ff0c:6b ff0d:60 ff0e:4b ff0f:61 ff1a:7a ff1b:5e ff1c:4c ff1d:7e ff1e:6e ff20:7c ff3b:4a ff3d:5a ff3e:5f ff3f:6d ff40:79 ff5c:6a
28595 (ISO 8859-5 Cyrillic)
00a1:21 00a2:63 00a4:24 00a5:59 00a6:7c 00a9:43 00aa:61 00ab:3c 00ae:52 00b2:32 00b3:33 00b7:2e 00b8:2c 00b9:31 00ba:6f 00bb:3e 00c0:41 00c1:41 00c2:41 00c3:41 00c4:41 00c5:41 00c6:41 00c7:43 00c8:45 00c9:45 00ca:45 00cb:45 00cc:49 00cd:49 00ce:49 00cf:49 00d0:44 00d1:4e 00d2:4f 00d3:4f 00d4:4f 00d5:4f 00d6:4f 00d8:4f 00d9:55 00da:55 00db:55 00dc:55 00dd:59 00e0:61 00e1:61 00e2:61 00e3:61 00e4:61 00e5:61 00e6:61 00e7:63 00e8:65 00e9:65 00ea:65 00eb:65 00ec:69 00ed:69 00ee:69 00ef:69 00f1:6e 00f2:6f 00f3:6f 00f4:6f 00f5:6f 00f6:6f 00f8:6f 00f9:75 00fa:75 00fb:75 00fc:75 00fd:79 00ff:79 0100:41 0101:61 0102:41 0103:61 0104:41 0105:61 0106:43 0107:63 0108:43 0109:63 010a:43 010b:63 010c:43 010d:63 010e:44 010f:64 0110:44 0111:64 0112:45 0113:65 0114:45 0115:65 0116:45 0117:65 0118:45 0119:65 011a:45 011b:65 011c:47 011d:67 011e:47 011f:67 0120:47 0121:67 0122:47 0123:67 0124:48 0125:68 0126:48 0127:68 0128:49 0129:69 012a:49 012b:69 012c:49 012d:69 012e:49 012f:69 0130:49 0131:69 0134:4a 0135:6a 0136:4b 0137:6b 0139:4c 013a:6c 013b:4c 013c:6c 013d:4c 013e:6c 0141:4c 0142:6c 0143:4e 0144:6e 0145:4e 0146:6e 0147:4e 0148:6e 014c:4f 014d:6f 014e:4f 014f:6f 0150:4f 0151:6f 0152:4f 0153:6f 0154:52 0155:72 0156:52 0157:72 0158:52 0159:72 015a:53 015b:73 015c:53 015d:73 015e:53 015f:73 0160:53 0161:73 0162:54 0163:74 0164:54 0165:74 0166:54 0167:74 0168:55 0169:75 016a:55 016b:75 016c:55 016d:75 016e:55 016f:75 0170:55 0171:75 0172:55 0173:75 0174:57 0175:77 0176:59 0177:79 0178:59 0179:5a 017b:5a 017c:7a 017d:5a 017e:7a 0180:62 0189:44 0191:46 0192:66 0197:49 019a:6c 019f:4f 01a0:4f 01a1:6f 01ab:74 01ae:54 01af:55 01b0:75 01b6:7a 01cd:41 01ce:61 01cf:49 01d0:69 01d1:4f 01d2:6f 01d3:55 01d4:75 01d5:55 01d6:75 01d7:55 01d8:75 01d9:55 01da:75 01db:55 01dc:75 01de:41 01df:61 01e4:47 01e5:67 01e6:47 01e7:67 01e8:4b 01e9:6b 01ea:4f 01eb:6f 01ec:4f 01ed:6f 01f0:6a 0261:67 02b9:27 02ba:22 02bc:27 02c4:5e 02c6:5e 02c8:27 02cb:60 02cd:5f 02dc:7e 0300:60 0302:5e 0303:7e 030e:22 0331:5f 0332:5f 2000:20 2001:20 2002:20 2003:20 2004:20 2005:20 2006:20 2010:2d 2011:2d 2013:2d 2014:2d 2018:27 2019:27 201a:2c 201c:22 201d:22 201e:22 2022:2e 2026:2e 2032:27 2035:60 2039:3c 203a:3e 2122:54 ff01:21 ff02:22 ff03:23 ff04:24 ff05:25 ff06:26 ff07:27 ff08:28 ff09:29 ff0a:2a ff0b:2b ff0c:2c ff0d:2d ff0e:2e ff0f:2f ff10:30 ff11:31 ff12:32 ff13:33 ff14:34 ff15:35 ff16:36 ff17:37 ff18:38 ff19:39 ff1a:3a ff1b:3b ff1c:3c ff1d:3d ff1e:3e ff20:40 ff21:41 ff22:42 ff23:43 ff24:44 ff25:45 ff26:46 ff27:47 ff28:48 ff29:49 ff2a:4a ff2b:4b ff2c:4c ff2d:4d ff2e:4e ff2f:4f ff30:50 ff31:51 ff32:52 ff33:53 ff34:54 ff35:55 ff36:56 ff37:57 ff38:58 ff39:59 ff3a:5a ff3b:5b ff3c:5c ff3d:5d ff3e:5e ff3f:5f ff40:60 ff41:61 ff42:62 ff43:63 ff44:64 ff45:65 ff46:66 ff47:67 ff48:68 ff49:69 ff4a:6a ff4b:6b ff4c:6c ff4d:6d ff4e:6e ff4f:6f ff50:70 ff51:71 ff52:72 ff53:73 ff54:74 ff55:75 ff56:76 ff57:77 ff58:78 ff59:79 ff5a:7a ff5b:7b ff5c:7c ff5d:7d ff5e:7e
20866 (Russian - KOI8)
00a7:15 00ab:3c 00ad:2d 00ae:52 00b1:2b 00b6:14 00bb:3e 00c0:41 00c1:41 00c2:41 00c3:41 00c4:41 00c5:41 00c7:43 00c8:45 00c9:45 00ca:45 00cb:45 00cc:49 00cd:49 00ce:49 00cf:49 00d1:4e 00d2:4f 00d3:4f 00d4:4f 00d5:4f 00d6:4f 00d8:4f 00d9:55 00da:55 00db:55 00dc:55 00dd:59 00e0:61 00e1:61 00e2:61 00e3:61 00e4:61 00e5:61 00e7:63 00e8:65 00e9:65 00ea:65 00eb:65 00ec:69 00ed:69 00ee:69 00ef:69 00f1:6e 00f2:6f 00f3:6f 00f4:6f 00f5:6f 00f6:6f 00f8:6f 00f9:75 00fa:75 00fb:75 00fc:75 00fd:79 00ff:79 0100:41 0101:61 0102:41 0103:61 0104:41 0105:61 0106:43 0107:63 0108:43 0109:63 010a:43 010b:63 010c:43 010d:63 010e:44 010f:64 0110:44 0111:64 0112:45 0113:65 0114:45 0115:65 0116:45 0117:65 0118:45 0119:65 011a:45 011b:65 011c:47 011d:67 011e:47 011f:67 0120:47 0121:67 0122:47 0123:67 0124:48 0125:68 0126:48 0127:68 0128:49 0129:69 012a:49 012b:69 012c:49 012d:69 012e:49 012f:69 0130:49 0134:4a 0135:6a 0136:4b 0137:6b 0139:4c 013a:6c 013b:4c 013c:6c 013d:4c 013e:6c 0141:4c 0142:6c 0143:4e 0144:6e 0145:4e 0146:6e 0147:4e 0148:6e 014c:4f 014d:6f 014e:4f 014f:6f 0150:4f 0151:6f 0154:52 0155:72 0156:52 0157:72 0158:52 0159:72 015a:53 015b:73 015c:53 015d:73 015e:53 015f:73 0160:53 0161:73 0162:54 0163:74 0164:54 0165:74 0166:54 0167:74 0168:55 0169:75 016a:55 016b:75 016c:55 016d:75 016e:55 016f:75 0170:55 0171:75 0172:55 0173:75 0174:57 0175:77 0176:59 0177:79 0178:59 0179:5a 017b:5a 017c:7a 017d:5a 017e:7a 0180:62 0197:49 019a:6c 019f:4f 01a0:4f 01a1:6f 01ab:74 01ae:54 01af:55 01b0:75 01cd:41 01ce:61 01cf:49 01d0:69 01d1:4f 01d2:6f 01d3:55 01d4:75 01d5:55 01d6:75 01d7:55 01d8:75 01d9:55 01da:75 01db:55 01dc:75 01de:41 01df:61 01e4:47 01e5:67 01e6:47 01e7:67 01e8:4b 01e9:6b 01ea:4f 01eb:6f 01ec:4f 01ed:6f 01f0:6a 2013:2d 2014:2d 2018:27 2019:27 201a:27 201c:22 201d:22 201e:22 2022:07 2026:3a 2030:25 2039:3c 203a:3e 203c:13 2122:54 2190:1b 2191:18 2192:1a 2193:19 2194:1d 2195:12 21a8:17 221f:1c 2302:7f 25ac:16 25b2:1e 25ba:10 25bc:1f 25c4:11 25cb:09 25d8:08 25d9:0a 263a:01 263b:02 263c:0f 2640:0c 2642:0b 2660:06 2663:05 2665:03 2666:04 266a:0d 266b:0e
21866 (Ukrainian - KOI8-U)
00a7:15 00ab:3c 00ad:2d 00ae:52 00b1:2b 00b6:14 00bb:3e 00c0:41 00c1:41 00c2:41 00c3:41 00c4:41 00c5:41 00c7:43 00c8:45 00c9:45 00ca:45 00cb:45 00cc:49 00cd:49 00ce:49 00cf:49 00d1:4e 00d2:4f 00d3:4f 00d4:4f 00d5:4f 00d6:4f 00d8:4f 00d9:55 00da:55 00db:55 00dc:55 00dd:59 00e0:61 00e1:61 00e2:61 00e3:61 00e4:61 00e5:61 00e7:63 00e8:65 00e9:65 00ea:65 00eb:65 00ec:69 00ed:69 00ee:69 00ef:69 00f1:6e 00f2:6f 00f3:6f 00f4:6f 00f5:6f 00f6:6f 00f8:6f 00f9:75 00fa:75 00fb:75 00fc:75 00fd:79 00ff:79 0100:41 0101:61 0102:41 0103:61 0104:41 0105:61 0106:43 0107:63 0108:43 0109:63 010a:43 010b:63 010c:43 010d:63 010e:44 010f:64 0110:44 0111:64 0112:45 0113:65 0114:45 0115:65 0116:45 0117:65 0118:45 0119:65 011a:45 011b:65 011c:47 011d:67 011e:47 011f:67 0120:47 0121:67 0122:47 0123:67 0124:48 0125:68 0126:48 0127:68 0128:49 0129:69 012a:49 012b:69 012c:49 012d:69 012e:49 012f:69 0130:49 0134:4a 0135:6a 0136:4b 0137:6b 0139:4c 013a:6c 013b:4c 013c:6c 013d:4c 013e:6c 0141:4c 0142:6c 0143:4e 0144:6e 0145:4e 0146:6e 0147:4e 0148:6e 014c:4f 014d:6f 014e:4f 014f:6f 0150:4f 0151:6f 0154:52 0155:72 0156:52 0157:72 0158:52 0159:72 015a:53 015b:73 015c:53 015d:73 015e:53 015f:73 0160:53 0161:73 0162:54 0163:74 0164:54 0165:74 0166:54 0167:74 0168:55 0169:75 016a:55 016b:75 016c:55 016d:75 016e:55 016f:75 0170:55 0171:75 0172:55 0173:75 0174:57 0175:77 0176:59 0177:79 0178:59 0179:5a 017b:5a 017c:7a 017d:5a 017e:7a 0180:62 0197:49 019a:6c 019f:4f 01a0:4f 01a1:6f 01ab:74 01ae:54 01af:55 01b0:75 01cd:41 01ce:61 01cf:49 01d0:69 01d1:4f 01d2:6f 01d3:55 01d4:75 01d5:55 01d6:75 01d7:55 01d8:75 01d9:55 01da:75 01db:55 01dc:75 01de:41 01df:61 01e4:47 01e5:67 01e6:47 01e7:67 01e8:4b 01e9:6b 01ea:4f 01eb:6f 01ec:4f 01ed:6f 01f0:6a 2013:2d 2014:2d 2018:27 2019:27 201a:27 201c:22 201d:22 201e:22 2022:07 2026:3a 2030:25 2039:3c 203a:3e 203c:13 2122:54 2190:1b 2191:18 2192:1a 2193:19 2194:1d 2195:12 21a8:17 221f:1c 2302:7f 25ac:16 25b2:1e 25ba:10 25bc:1f 25c4:11 25cb:09 25d8:08 25d9:0a 263a:01 263b:02 263c:0f 2640:0c 2642:0b 2660:06 2663:05 2665:03 2666:04 266a:0d 266b:0e
21025 (IBM EBCDIC - Cyrillic (Serbian, Bulgarian))
0004:37 0005:2d 0006:2e 0007:2f 0008:16 0009:05 000a:25 0014:3c 0015:3d 0016:32 0017:26 001a:3f 001b:27 0020:40 0021:4f 0022:7f 0023:7b 0024:5b 0025:6c 0026:50 0027:7d 0028:4d 0029:5d 002a:5c 002b:4e 002c:6b 002d:60 002e:4b 002f:61 003a:7a 003b:5e 003c:4c 003d:7e 003e:6e 003f:6f 0040:7c 005b:4a 005d:5a 005e:5f 005f:6d 0060:79 007c:6a 007f:07 0080:20 0081:21 0082:22 0083:23 0084:24 0085:15 0086:06 0087:17 0088:28 0089:29 008a:2a 008b:2b 008c:2c 008d:09 008e:0a 008f:1b 0090:30 0091:31 0092:1a 0093:33 0094:34 0095:35 0096:36 0097:08 0098:38 0099:39 009a:3a 009b:3b 009c:04 009d:14 009e:3e 00a0:41 00ad:73 0401:63 0402:59 0403:62 0404:64 0405:65 0406:66 0407:67 0408:68 0409:69 040a:70 040b:71 040c:72 040e:74 040f:75 042a:57 0430:77 0431:78 044e:76 0451:44 0452:42 0453:43 0454:45 0455:46 0456:47 0457:48 0458:49 0459:51 045a:52 045b:53 045c:54 045e:55 045f:56 2116:58 ff01:4f ff02:7f ff03:7b ff04:5b ff05:6c ff06:50 ff07:7d ff08:4d ff09:5d ff0a:5c ff0b:4e ff0c:6b ff0d:60 ff0e:4b ff0f:61 ff1a:7a ff1b:5e ff1c:4c ff1d:7e ff1e:6e ff20:7c ff3b:4a ff3d:5a ff3e:5f ff3f:6d ff40:79 ff5c:6a
57002 (ISCII - Devanagari)
57003 (ISCII - Bengali)
57004 (ISCII - Tamil)
57005 (ISCII - Telugu)
57006 (ISCII - Assamese)
57007 (ISCII - Oriya)
57008 (ISCII - Kannada)
57009 (ISCII - Malayalam)
57011 (ISCII - Punjabi (Gurmukhi))
57010 (ISCII - Gujarati)
10010 (MAC - Romania)
10017 (MAC - Ukraine)
10082 (MAC - Croatia)
1250 (ANSI - Central Europe)
00a1:21 00a2:63 00a3:4c 00a5:59 00aa:61 00b2:32 00b3:33 00b9:31 00ba:6f 00bc:31 00bd:31 00be:33 00c0:41 00c3:41 00c5:41 00c6:41 00c8:45 00ca:45 00cc:49 00cf:49 00d1:4e 00d2:4f 00d5:4f 00d8:4f 00d9:55 00db:55 00e0:61 00e3:61 00e5:61 00e6:61 00e8:65 00ea:65 00ec:69 00ef:69 00f1:6e 00f2:6f 00f5:6f 00f8:6f 00f9:75 00fb:75 00ff:79 0100:41 0101:61 0108:43 0109:63 010a:43 010b:63 0112:45 0113:65 0114:45 0115:65 0116:45 0117:65 011c:47 011d:67 011e:47 011f:67 0120:47 0121:67 0122:47 0123:67 0124:48 0125:68 0126:48 0127:68 0128:49 0129:69 012a:49 012b:69 012c:49 012d:69 012e:49 012f:69 0130:49 0131:69 0134:4a 0135:6a 0136:4b 0137:6b 013b:4c 013c:6c 0145:4e 0146:6e 014c:4f 014d:6f 014e:4f 014f:6f 0152:4f 0153:6f 0156:52 0157:72 015c:53 015d:73 0166:54 0167:74 0168:55 0169:75 016a:55 016b:75 016c:55 016d:75 0172:55 0173:75 0174:57 0175:77 0176:59 0177:79 0178:59 0180:62 0191:46 0192:66 0197:49 019a:6c 019f:4f 01a0:4f 01a1:6f 01ab:74 01ae:54 01af:55 01b0:75 01b6:7a 01c0:7c 01c3:21 01cd:41 01ce:61 01cf:49 01d0:69 01d1:4f 01d2:6f 01d3:55 01d4:75 01d5:55 01d6:75 01d7:55 01d8:75 01d9:55 01da:75 01db:55 01dc:75 01de:41 01df:61 01e4:47 01e5:67 01e6:47 01e7:67 01e8:4b 01e9:6b 01ea:4f 01eb:6f 01ec:4f 01ed:6f 01f0:6a 0261:67 02b9:27 02ba:22 02bc:27 02c4:5e 02c6:5e 02c8:27 02cb:60 02cd:5f 02dc:7e 0300:60 0302:5e 0303:7e 030e:22 0331:5f 0332:5f 037e:3b 04bb:68 0589:3a 066a:25 2000:20 2001:20 2002:20 2003:20 2004:20 2005:20 2006:20 2010:2d 2011:2d 2032:27 2035:60 203c:21 2044:2f 2074:34 2075:35 2076:36 2077:37 2078:38 2080:30 2081:31 2082:32 2083:33 2084:34 2085:35 2086:36 2087:37 2088:38 2089:39 2102:43 2107:45 210a:67 210b:48 210c:48 210d:48 210e:68 2110:49 2111:49 2112:4c 2113:6c 2115:4e 2118:50 2119:50 211a:51 211b:52 211c:52 211d:52 2124:5a 2128:5a 212a:4b 212c:42 212d:43 212e:65 212f:65 2130:45 2131:46 2133:4d 2134:6f 2191:5e 2194:2d 2195:7c 21a8:7c 2212:2d 2215:2f 2216:5c 2217:2a 221f:4c 2223:7c 2236:3a 223c:7e 2303:5e 2329:3c 232a:3e 2502:2d 250c:2d 2514:4c 2518:2d 251c:2b 2524:2b 252c:54 2534:2b 253c:2b 2550:3d 2554:2d 255a:4c 255d:2d 2566:54 256c:2b 2580:2d 2584:2d 2588:2d 2591:2d 2592:2d 2593:2d 25ac:2d 25b2:5e 25ba:3e 25c4:3c 25cb:30 25d9:30 263c:30 2640:2b 2642:3e 266a:64 266b:64 2758:7c 3000:20 3008:3c 3009:3e 301a:5b 301b:5d ff01:21 ff02:22 ff03:23 ff04:24 ff05:25 ff06:26 ff07:27 ff08:28 ff09:29 ff0a:2a ff0b:2b ff0c:2c ff0d:2d ff0e:2e ff0f:2f ff10:30 ff11:31 ff12:32 ff13:33 ff14:34 ff15:35 ff16:36 ff17:37 ff18:38 ff19:39 ff1a:3a ff1b:3b ff1c:3c ff1d:3d ff1e:3e ff20:40 ff21:41 ff22:42 ff23:43 ff24:44 ff25:45 ff26:46 ff27:47 ff28:48 ff29:49 ff2a:4a ff2b:4b ff2c:4c ff2d:4d ff2e:4e ff2f:4f ff30:50 ff31:51 ff32:52 ff33:53 ff34:54 ff35:55 ff36:56 ff37:57 ff38:58 ff39:59 ff3a:5a ff3b:5b ff3c:5c ff3d:5d ff3e:5e ff3f:5f ff40:60 ff41:61 ff42:62 ff43:63 ff44:64 ff45:65 ff46:66 ff47:67 ff48:68 ff49:69 ff4a:6a ff4b:6b ff4c:6c ff4d:6d ff4e:6e ff4f:6f ff50:70 ff51:71 ff52:72 ff53:73 ff54:74 ff55:75 ff56:76 ff57:77 ff58:78 ff59:79 ff5a:7a ff5b:7b ff5c:7c ff5d:7d ff5e:7e
852 (OEM - Latin II)
00a1:21 00a2:63 00a3:4c 00a5:59 00a6:7c 00a9:63 00aa:61 00ae:52 00b1:2b 00b2:32 00b3:33 00b5:75 00b6:14 00b7:07 00b9:31 00ba:6f 00bc:31 00bd:31 00be:33 00c0:41 00c3:41 00c5:41 00c6:41 00c8:45 00ca:45 00cc:49 00cf:49 00d1:4e 00d2:4f 00d5:4f 00d8:4f 00d9:55 00db:55 00e0:61 00e3:61 00e5:61 00e6:61 00e8:63 00ea:65 00ec:69 00ef:69 00f1:6e 00f2:6f 00f5:6f 00f8:6f 00f9:75 00fb:75 00ff:79 0100:41 0101:61 0108:43 0109:63 010a:43 010b:63 0112:45 0113:65 0114:45 0115:65 0116:45 0117:65 011c:47 011d:67 011e:47 011f:67 0120:47 0121:67 0122:47 0123:67 0124:48 0125:68 0126:48 0127:68 0128:49 0129:69 012a:49 012b:69 012c:49 012d:69 012e:49 012f:69 0130:49 0131:69 0134:4a 0135:6a 0136:4b 0137:6b 013b:4c 013c:6c 0145:4e 0146:6e 014c:4f 014d:6f 014e:4f 014f:6f 0152:4f 0153:6f 0156:52 0157:72 015c:53 015d:73 0166:54 0167:74 0168:55 0169:75 016a:55 016b:75 016c:55 016d:75 0172:55 0173:75 0174:57 0175:77 0176:59 0177:79 0178:59 0180:62 0191:46 0192:66 0197:49 019a:6c 019f:4f 01a0:4f 01a1:6f 01ab:74 01ae:54 01af:55 01b0:75 01b6:7a 01c0:7c 01c3:21 01cd:41 01ce:61 01cf:49 01d0:69 01d1:4f 01d2:6f 01d3:55 01d4:75 01d5:55 01d6:75 01d7:55 01d8:75 01d9:55 01da:75 01db:55 01dc:75 01de:41 01df:61 01e4:47 01e5:67 01e6:47 01e7:67 01e8:4b 01e9:6b 01ea:4f 01eb:6f 01ec:4f 01ed:6f 01f0:6a 0261:67 02b9:27 02ba:22 02bb:27 02bc:27 02c4:5e 02c6:5e 02c8:27 02cb:60 02cd:5f 02dc:7e 0300:60 0302:5e 0303:7e 030e:22 0331:5f 0332:5f 037e:3b 03bc:75 04bb:68 0589:3a 066a:25 2000:20 2001:20 2002:20 2003:20 2004:20 2005:20 2006:20 2010:2d 2011:2d 2013:2d 2014:2d 2018:27 2019:27 201a:27 201c:22 201d:22 201e:22 2022:07 2024:07 2026:07 2030:25 2032:27 2033:22 2035:22 2039:3c 203a:3e 203c:13 2044:2f 2070:30 2074:34 2075:35 2076:36 2077:37 2078:38 2080:30 2081:31 2082:32 2083:33 2084:34 2085:35 2086:36 2087:37 2088:38 2089:39 20a4:4c 2102:43 2107:45 210a:67 210b:48 210c:48 210d:48 210e:68 2110:49 2111:49 2112:4c 2113:6c 2115:4e 2118:50 2119:50 211a:51 211b:52 211c:52 211d:52 2122:74 2124:5a 2128:5a 212a:4b 212b:41 212c:42 212d:43 212e:65 212f:65 2130:45 2131:46 2133:4d 2134:6f 2190:1b 2191:18 2192:1a 2193:19 2194:1d 2195:12 21a8:17 2205:4f 2212:2d 2213:2d 2215:2f 2216:5c 2217:2a 2219:07 221f:1c 2223:7c 2236:3a 223c:7e 22c5:07 2302:7f 2303:5e 2329:3c 232a:3e 25ac:16 25b2:1e 25ba:10 25bc:1f 25c4:11 25cb:09 25d8:08 25d9:0a 263a:01 263b:02 263c:0f 2640:0c 2642:0b 2660:06 2663:05 2665:03 2666:04 266a:0d 266b:0e 2758:7c 275b:27 275c:27 275d:22 275e:22 3000:20 3008:3c 3009:3e 301a:5b 301b:5d 301d:22 301e:22 301f:22 30fb:07 30fc:5f ff01:21 ff02:22 ff03:23 ff04:24 ff05:25 ff06:26 ff07:27 ff08:28 ff09:29 ff0a:2a ff0b:2b ff0c:2c ff0d:2d ff0e:2e ff0f:2f ff10:30 ff11:31 ff12:32 ff13:33 ff14:34 ff15:35 ff16:36 ff17:37 ff18:38 ff19:39 ff1a:3a ff1b:3b ff1c:3c ff1d:3d ff1e:3e ff20:40 ff21:41 ff22:42 ff23:43 ff24:44 ff25:45 ff26:46 ff27:47 ff28:48 ff29:49 ff2a:4a ff2b:4b ff2c:4c ff2d:4d ff2e:4e ff2f:4f ff30:50 ff31:51 ff32:52 ff33:53 ff34:54 ff35:55 ff36:56 ff37:57 ff38:58 ff39:59 ff3a:5a ff3b:5b ff3c:5c ff3d:5d ff3e:5e ff3f:5f ff40:60 ff41:61 ff42:62 ff43:63 ff44:64 ff45:65 ff46:66 ff47:67 ff48:68 ff49:69 ff4a:6a ff4b:6b ff4c:6c ff4d:6d ff4e:6e ff4f:6f ff50:70 ff51:71 ff52:72 ff53:73 ff54:74 ff55:75 ff56:76 ff57:77 ff58:78 ff59:79 ff5a:7a ff5b:7b ff5c:7c ff5d:7d ff5e:7e
28592 (ISO 8859-2 Central Europe)
00a1:21 00a2:63 00a5:59 00a6:7c 00a9:43 00aa:61 00ab:3c 00ae:52 00b2:32 00b3:33 00b7:2e 00b9:31 00ba:6f 00bb:3e 00c0:41 00c3:41 00c5:41 00c6:41 00c8:45 00ca:45 00cc:49 00cf:49 00d0:44 00d1:4e 00d2:4f 00d5:4f 00d8:4f 00d9:55 00db:55 00e0:61 00e3:61 00e5:61 00e6:61 00e8:65 00ea:65 00ec:69 00ef:69 00f1:6e 00f2:6f 00f5:6f 00f8:6f 00f9:75 00fb:75 00ff:79 0100:41 0101:61 0108:43 0109:63 010a:43 010b:63 0112:45 0113:65 0114:45 0115:65 0116:45 0117:65 011c:47 011d:67 011e:47 011f:67 0120:47 0121:67 0122:47 0123:67 0124:48 0125:68 0126:48 0127:68 0128:49 0129:69 012a:49 012b:69 012c:49 012d:69 012e:49 012f:69 0130:49 0131:69 0134:4a 0135:6a 0136:4b 0137:6b 013b:4c 013c:6c 0145:4e 0146:6e 014c:4f 014d:6f 014e:4f 014f:6f 0152:4f 0153:6f 0156:52 0157:72 015c:53 015d:73 0166:54 0167:74 0168:55 0169:75 016a:55 016b:75 016c:55 016d:75 0172:55 0173:75 0174:57 0175:77 0176:59 0177:79 0178:59 0180:62 0189:44 0191:46 0192:66 0197:49 019a:6c 019f:4f 01a0:4f 01a1:6f 01ab:74 01ae:54 01af:55 01b0:75 01b6:7a 01cd:41 01ce:61 01cf:49 01d0:69 01d1:4f 01d2:6f 01d3:55 01d4:75 01d5:55 01d6:75 01d7:55 01d8:75 01d9:55 01da:75 01db:55 01dc:75 01de:41 01df:61 01e4:47 01e5:67 01e6:47 01e7:67 01e8:4b 01e9:6b 01ea:4f 01eb:6f 01ec:4f 01ed:6f 01f0:6a 0261:67 02b9:27 02ba:22 02bc:27 02c4:5e 02c6:5e 02c8:27 02cb:60 02cd:5f 02dc:7e 0300:60 0302:5e 0303:7e 030e:22 0331:5f 0332:5f 2000:20 2001:20 2002:20 2003:20 2004:20 2005:20 2006:20 2010:2d 2011:2d 2013:2d 2014:2d 2018:27 2019:27 201a:2c 201c:22 201d:22 201e:22 2022:2e 2026:2e 2032:27 2035:60 2039:3c 203a:3e 2122:54 ff01:21 ff02:22 ff03:23 ff04:24 ff05:25 ff06:26 ff07:27 ff08:28 ff09:29 ff0a:2a ff0b:2b ff0c:2c ff0d:2d ff0e:2e ff0f:2f ff10:30 ff11:31 ff12:32 ff13:33 ff14:34 ff15:35 ff16:36 ff17:37 ff18:38 ff19:39 ff1a:3a ff1b:3b ff1c:3c ff1d:3d ff1e:3e ff20:40 ff21:41 ff22:42 ff23:43 ff24:44 ff25:45 ff26:46 ff27:47 ff28:48 ff29:49 ff2a:4a ff2b:4b ff2c:4c ff2d:4d ff2e:4e ff2f:4f ff30:50 ff31:51 ff32:52 ff33:53 ff34:54 ff35:55 ff36:56 ff37:57 ff38:58 ff39:59 ff3a:5a ff3b:5b ff3c:5c ff3d:5d ff3e:5e ff3f:5f ff40:60 ff41:61 ff42:62 ff43:63 ff44:64 ff45:65 ff46:66 ff47:67 ff48:68 ff49:69 ff4a:6a ff4b:6b ff4c:6c ff4d:6d ff4e:6e ff4f:6f ff50:70 ff51:71 ff52:72 ff53:73 ff54:74 ff55:75 ff56:76 ff57:77 ff58:78 ff59:79 ff5a:7a ff5b:7b ff5c:7c ff5d:7d ff5e:7e
10000 (MAC - Roman)
437 (OEM - United States)
00a4:0f 00a7:15 00a8:22 00a9:63 00ad:2d 00ae:72 00af:5f 00b3:33 00b4:27 00b6:14 00b8:2c 00b9:31 00be:5f 00c0:41 00c1:41 00c2:41 00c3:41 00c8:45 00ca:45 00cb:45 00cc:49 00cd:49 00ce:49 00cf:49 00d0:44 00d2:4f 00d3:4f 00d4:4f 00d5:4f 00d7:78 00d8:4f 00d9:55 00da:55 00db:55 00dd:59 00de:5f 00e3:61 00f0:64 00f5:6f 00f8:6f 00fd:79 00fe:5f 0100:41 0101:61 0102:41 0103:61 0104:41 0105:61 0106:43 0107:63 0108:43 0109:63 010a:43 010b:63 010c:43 010d:63 010e:44 010f:64 0110:44 0111:64 0112:45 0113:65 0114:45 0115:65 0116:45 0117:65 0118:45 0119:65 011a:45 011b:65 011c:47 011d:67 011e:47 011f:67 0120:47 0121:67 0122:47 0123:67 0124:48 0125:68 0126:48 0127:68 0128:49 0129:69 012a:49 012b:69 012c:49 012d:69 012e:49 012f:69 0130:49 0131:69 0134:4a 0135:6a 0136:4b 0137:6b 0139:4c 013a:6c 013b:4c 013c:6c 013d:4c 013e:6c 0141:4c 0142:6c 0143:4e 0144:6e 0145:4e 0146:6e 0147:4e 0148:6e 014c:4f 014d:6f 014e:4f 014f:6f 0150:4f 0151:6f 0152:4f 0153:6f 0154:52 0155:72 0156:52 0157:72 0158:52 0159:72 015a:53 015b:73 015c:53 015d:73 015e:53 015f:73 0160:53 0161:73 0162:54 0163:74 0164:54 0165:74 0166:54 0167:74 0168:55 0169:75 016a:55 016b:75 016c:55 016d:75 016e:55 016f:75 0170:55 0171:75 0172:55 0173:75 0174:57 0175:77 0176:59 0177:79 0178:59 0179:5a 017b:5a 017c:7a 017d:5a 017e:7a 0180:62 0189:44 0197:49 019a:6c 019f:4f 01a0:4f 01a1:6f 01ab:74 01ae:54 01af:55 01b0:75 01b6:7a 01c0:7c 01c3:21 01cd:41 01ce:61 01cf:49 01d0:69 01d1:4f 01d2:6f 01d3:55 01d4:75 01d5:55 01d6:75 01d7:55 01d8:75 01d9:55 01da:75 01db:55 01dc:75 01de:41 01df:61 01e4:47 01e5:67 01e6:47 01e7:67 01e8:4b 01e9:6b 01ea:4f 01eb:6f 01ec:4f 01ed:6f 01f0:6a 0261:67 02b9:27 02ba:22 02bc:27 02c4:5e 02c6:5e 02c8:27 02ca:27 02cb:60 02cd:5f 02dc:7e 0300:60 0301:27 0302:5e 0303:7e 0308:22 030e:22 0327:2c 0331:5f 0332:5f 037e:3b 04bb:68 0589:3a 066a:25 2000:20 2001:20 2002:20 2003:20 2004:20 2005:20 2006:20 2010:2d 2011:2d 2013:2d 2014:2d 2017:5f 2018:60 2019:27 201a:2c 201c:22 201d:22 201e:2c 2020:2b 2022:07 2026:2e 2030:25 2032:27 2035:60 2039:3c 203a:3e 203c:13 2044:2f 2074:34 2075:35 2076:36 2077:37 2078:38 2080:30 2081:31 2082:32 2083:33 2084:34 2085:35 2086:36 2087:37 2088:38 2089:39 20dd:09 2102:43 2107:45 210a:67 210b:48 210c:48 210d:48 210e:68 2110:49 2111:49 2112:4c 2113:6c 2115:4e 2118:50 2119:50 211a:51 211b:52 211c:52 211d:52 2122:54 2124:5a 2128:5a 212a:4b 212c:42 212d:43 212e:65 212f:65 2130:45 2131:46 2133:4d 2134:6f 2190:1b 2191:18 2192:1a 2193:19 2194:1d 2195:12 21a8:17 2212:2d 2215:2f 2216:5c 2217:2a 221f:1c 2223:7c 2236:3a 223c:7e 2302:7f 2303:5e 2329:3c 232a:3e 25ac:16 25b2:1e 25ba:10 25bc:1f 25c4:11 25cb:09 25d8:08 25d9:0a 263a:01 263b:02 263c:0f 2640:0c 2642:0b 2660:06 2663:05 2665:03 2666:04 266a:0d 266b:0e 2758:7c 3000:20 3007:09 3008:3c 3009:3e 301a:5b 301b:5d ff01:21 ff02:22 ff03:23 ff04:24 ff05:25 ff06:26 ff07:27 ff08:28 ff09:29 ff0a:2a ff0b:2b ff0c:2c ff0d:2d ff0e:2e ff0f:2f ff10:30 ff11:31 ff12:32 ff13:33 ff14:34 ff15:35 ff16:36 ff17:37 ff18:38 ff19:39 ff1a:3a ff1b:3b ff1c:3c ff1d:3d ff1e:3e ff20:40 ff21:41 ff22:42 ff23:43 ff24:44 ff25:45 ff26:46 ff27:47 ff28:48 ff29:49 ff2a:4a ff2b:4b ff2c:4c ff2d:4d ff2e:4e ff2f:4f ff30:50 ff31:51 ff32:52 ff33:53 ff34:54 ff35:55 ff36:56 ff37:57 ff38:58 ff39:59 ff3a:5a ff3b:5b ff3c:5c ff3d:5d ff3e:5e ff3f:5f ff40:60 ff41:61 ff42:62 ff43:63 ff44:64 ff45:65 ff46:66 ff47:67 ff48:68 ff49:69 ff4a:6a ff4b:6b ff4c:6c ff4d:6d ff4e:6e ff4f:6f ff50:70 ff51:71 ff52:72 ff53:73 ff54:74 ff55:75 ff56:76 ff57:77 ff58:78 ff59:79 ff5a:7a ff5b:7b ff5c:7c ff5d:7d ff5e:7e
850 (OEM - Multilingual Latin I)
0100:41 0101:61 0102:41 0103:61 0104:41 0105:61 0106:43 0107:63 0108:43 0109:63 010a:43 010b:63 010c:43 010d:63 010e:44 010f:64 0110:44 0111:64 0112:45 0113:65 0114:45 0115:65 0116:45 0117:65 0118:45 0119:65 011a:45 011b:65 011c:47 011d:67 011e:47 011f:67 0120:47 0121:67 0122:47 0123:67 0124:48 0125:68 0126:48 0127:68 0128:49 0129:69 012a:49 012b:69 012c:49 012d:69 012e:49 012f:69 0130:49 0134:4a 0135:6a 0136:4b 0137:6b 0139:4c 013a:6c 013b:4c 013c:6c 013d:4c 013e:6c 0141:4c 0142:6c 0143:4e 0144:6e 0145:4e 0146:6e 0147:4e 0148:6e 014c:4f 014d:6f 014e:4f 014f:6f 0150:4f 0151:6f 0152:4f 0153:6f 0154:52 0155:72 0156:52 0157:72 0158:52 0159:72 015a:53 015b:73 015c:53 015d:73 015e:53 015f:73 0160:53 0161:73 0162:54 0163:74 0164:54 0165:74 0166:54 0167:74 0168:55 0169:75 016a:55 016b:75 016c:55 016d:75 016e:55 016f:75 0170:55 0171:75 0172:55 0173:75 0174:57 0175:77 0176:59 0177:79 0178:59 0179:5a 017b:5a 017c:7a 017d:5a 017e:7a 0180:62 0189:44 0197:49 019a:6c 019f:4f 01a0:4f 01a1:6f 01a9:53 01ab:74 01ae:54 01af:55 01b0:75 01b6:5a 01c3:21 01cd:41 01ce:61 01cf:49 01d0:69 01d1:4f 01d2:6f 01d3:55 01d4:75 01d5:55 01d6:75 01d7:55 01d8:75 01d9:55 01da:75 01db:55 01dc:75 01de:41 01df:61 01e4:47 01e5:67 01e6:47 01e7:67 01e8:4b 01e9:6b 01ea:4f 01eb:6f 01ec:4f 01ed:6f 01f0:6a 0261:67 02ba:22 02bc:27 02c4:5e 02c6:5e 02c8:27 02cb:27 02cd:5f 02dc:7e 0300:27 0302:5e 0303:7e 030e:22 0331:5f 0332:5f 037e:3b 0393:47 03a3:53 03a6:46 03a9:4f 03b1:61 03b4:64 03b5:65 03c0:70 03c3:73 03c4:74 03c6:66 04bb:68 0589:3a 066a:25 2000:20 2001:20 2002:20 2003:20 2004:20 2005:20 2006:20 2010:2d 2011:2d 2013:2d 2014:2d 2018:27 2019:27 201a:27 201c:22 201d:22 201e:22 2022:07 2024:07 2026:2e 2030:25 2039:3c 203a:3e 203c:13 2044:2f 2070:30 2074:34 2075:35 2076:36 2077:37 2078:39 207f:6e 2080:30 2084:34 2085:35 2086:36 2087:37 2088:38 2089:39 20a7:50 20dd:4f 2102:43 2107:45 210a:67 210b:48 210c:48 210d:48 210e:68 2110:49 2111:49 2112:4c 2113:6c 2115:4e 2118:50 2119:50 211a:51 211b:52 211c:52 211d:52 2122:54 2124:5a 2126:4f 2128:5a 212a:4b 212c:42 212d:43 212e:65 212f:65 2130:45 2131:46 2133:4d 2134:6f 2190:1b 2191:18 2192:1a 2193:19 2194:1d 2195:12 21a8:17 2211:53 2212:2d 2215:2f 2216:2f 2217:2a 2219:07 221a:56 221e:38 221f:1c 2229:6e 2236:3a 223c:7e 2248:7e 2261:3d 2264:3d 2265:3d 2302:7f 2303:5e 2320:28 2321:29 2329:3c 232a:3e 25ac:16 25b2:1e 25ba:10 25bc:1f 25c4:11 25cb:09 25d8:08 25d9:0a 263a:01 263b:02 263c:0f 2640:0c 2642:0b 2660:06 2663:05 2665:03 2666:04 266a:0d 266b:0e 2713:56 3000:20 3007:4f 3008:3c 3009:3e 301a:5b 301b:5d ff01:21 ff02:22 ff03:23 ff04:24 ff05:25 ff06:26 ff07:27 ff08:28 ff09:29 ff0a:2a ff0b:2b ff0c:2c ff0d:2d ff0e:2e ff0f:2f ff10:30 ff11:31 ff12:32 ff13:33 ff14:34 ff15:35 ff16:36 ff17:37 ff18:38 ff19:39 ff1a:3a ff1b:3b ff1c:3c ff1d:3d ff1e:3e ff20:40 ff21:41 ff22:42 ff23:43 ff24:44 ff25:45 ff26:46 ff27:47 ff28:48 ff29:49 ff2a:4a ff2b:4b ff2c:4c ff2d:4d ff2e:4e ff2f:4f ff30:50 ff31:51 ff32:52 ff33:53 ff34:54 ff35:55 ff36:56 ff37:57 ff38:58 ff39:59 ff3a:5a ff3b:5b ff3c:5c ff3d:5d ff3e:5e ff3f:5f ff40:60 ff41:61 ff42:62 ff43:63 ff44:64 ff45:65 ff46:66 ff47:67 ff48:68 ff49:69 ff4a:6a ff4b:6b ff4c:6c ff4d:6d ff4e:6e ff4f:6f ff50:70 ff51:71 ff52:72 ff53:73 ff54:74 ff55:75 ff56:76 ff57:77 ff58:78 ff59:79 ff5a:7a ff5b:7b ff5c:7c ff5d:7d ff5e:7e
858 (OEM - Multilingual Latin I + Euro)
0100:41 0101:61 0102:41 0103:61 0104:41 0105:61 0106:43 0107:63 0108:43 0109:63 010a:43 010b:63 010c:43 010d:63 010e:44 010f:64 0110:44 0111:64 0112:45 0113:65 0114:45 0115:65 0116:45 0117:65 0118:45 0119:65 011a:45 011b:65 011c:47 011d:67 011e:47 011f:67 0120:47 0121:67 0122:47 0123:67 0124:48 0125:68 0126:48 0127:68 0128:49 0129:69 012a:49 012b:69 012c:49 012d:69 012e:49 012f:69 0130:49 0131:69 0134:4a 0135:6a 0136:4b 0137:6b 0139:4c 013a:6c 013b:4c 013c:6c 013d:4c 013e:6c 0141:4c 0142:6c 0143:4e 0144:6e 0145:4e 0146:6e 0147:4e 0148:6e 014c:4f 014d:6f 014e:4f 014f:6f 0150:4f 0151:6f 0152:4f 0153:6f 0154:52 0155:72 0156:52 0157:72 0158:52 0159:72 015a:53 015b:73 015c:53 015d:73 015e:53 015f:73 0160:53 0161:73 0162:54 0163:74 0164:54 0165:74 0166:54 0167:74 0168:55 0169:75 016a:55 016b:75 016c:55 016d:75 016e:55 016f:75 0170:55 0171:75 0172:55 0173:75 0174:57 0175:77 0176:59 0177:79 0178:59 0179:5a 017b:5a 017c:7a 017d:5a 017e:7a 0180:62 0189:44 0197:49 019a:6c 019f:4f 01a0:4f 01a1:6f 01a9:53 01ab:74 01ae:54 01af:55 01b0:75 01b6:5a 01c3:21 01cd:41 01ce:61 01cf:49 01d0:69 01d1:4f 01d2:6f 01d3:55 01d4:75 01d5:55 01d6:75 01d7:55 01d8:75 01d9:55 01da:75 01db:55 01dc:75 01de:41 01df:61 01e4:47 01e5:67 01e6:47 01e7:67 01e8:4b 01e9:6b 01ea:4f 01eb:6f 01ec:4f 01ed:6f 01f0:6a 0261:67 02ba:22 02bc:27 02c4:5e 02c6:5e 02c8:27 02cb:27 02cd:5f 02dc:7e 0300:27 0302:5e 0303:7e 030e:22 0331:5f 0332:5f 037e:3b 0393:47 03a3:53 03a6:46 03a9:4f 03b1:61 03b4:64 03b5:65 03c0:70 03c3:73 03c4:74 03c6:66 04bb:68 0589:3a 066a:25 2000:20 2001:20 2002:20 2003:20 2004:20 2005:20 2006:20 2010:2d 2011:2d 2013:2d 2014:2d 2018:27 2019:27 201a:27 201c:22 201d:22 201e:22 2022:07 2024:07 2026:2e 2030:25 2039:3c 203a:3e 203c:13 2044:2f 2070:30 2074:34 2075:35 2076:36 2077:37 2078:39 207f:6e 2080:30 2084:34 2085:35 2086:36 2087:37 2088:38 2089:39 20a7:50 20dd:4f 2102:43 2107:45 210a:67 210b:48 210c:48 210d:48 210e:68 2110:49 2111:49 2112:4c 2113:6c 2115:4e 2118:50 2119:50 211a:51 211b:52 211c:52 211d:52 2122:54 2124:5a 2126:4f 2128:5a 212a:4b 212c:42 212d:43 212e:65 212f:65 2130:45 2131:46 2133:4d 2134:6f 2190:1b 2191:18 2192:1a 2193:19 2194:1d 2195:12 21a8:17 2211:53 2212:2d 2215:2f 2216:2f 2217:2a 2219:07 221a:56 221e:38 221f:1c 2229:6e 2236:3a 223c:7e 2248:7e 2261:3d 2264:3d 2265:3d 2302:7f 2303:5e 2320:28 2321:29 2329:3c 232a:3e 25ac:16 25b2:1e 25ba:10 25bc:1f 25c4:11 25cb:09 25d8:08 25d9:0a 263a:01 263b:02 263c:0f 2640:0c 2642:0b 2660:06 2663:05 2665:03 2666:04 266a:0d 266b:0e 2713:56 3000:20 3007:4f 3008:3c 3009:3e 301a:5b 301b:5d ff01:21 ff02:22 ff03:23 ff04:24 ff05:25 ff06:26 ff07:27 ff08:28 ff09:29 ff0a:2a ff0b:2b ff0c:2c ff0d:2d ff0e:2e ff0f:2f ff10:30 ff11:31 ff12:32 ff13:33 ff14:34 ff15:35 ff16:36 ff17:37 ff18:38 ff19:39 ff1a:3a ff1b:3b ff1c:3c ff1d:3d ff1e:3e ff20:40 ff21:41 ff22:42 ff23:43 ff24:44 ff25:45 ff26:46 ff27:47 ff28:48 ff29:49 ff2a:4a ff2b:4b ff2c:4c ff2d:4d ff2e:4e ff2f:4f ff30:50 ff31:51 ff32:52 ff33:53 ff34:54 ff35:55 ff36:56 ff37:57 ff38:58 ff39:59 ff3a:5a ff3b:5b ff3c:5c ff3d:5d ff3e:5e ff3f:5f ff40:60 ff41:61 ff42:62 ff43:63 ff44:64 ff45:65 ff46:66 ff47:67 ff48:68 ff49:69 ff4a:6a ff4b:6b ff4c:6c ff4d:6d ff4e:6e ff4f:6f ff50:70 ff51:71 ff52:72 ff53:73 ff54:74 ff55:75 ff56:76 ff57:77 ff58:78 ff59:79 ff5a:7a ff5b:7b ff5c:7c ff5d:7d ff5e:7e
1252 (ANSI - Latin I)
0100:41 0101:61 0102:41 0103:61 0104:41 0105:61 0106:43 0107:63 0108:43 0109:63 010a:43 010b:63 010c:43 010d:63 010e:44 010f:64 0111:64 0112:45 0113:65 0114:45 0115:65 0116:45 0117:65 0118:45 0119:65 011a:45 011b:65 011c:47 011d:67 011e:47 011f:67 0120:47 0121:67 0122:47 0123:67 0124:48 0125:68 0126:48 0127:68 0128:49 0129:69 012a:49 012b:69 012c:49 012d:69 012e:49 012f:69 0130:49 0131:69 0134:4a 0135:6a 0136:4b 0137:6b 0139:4c 013a:6c 013b:4c 013c:6c 013d:4c 013e:6c 0141:4c 0142:6c 0143:4e 0144:6e 0145:4e 0146:6e 0147:4e 0148:6e 014c:4f 014d:6f 014e:4f 014f:6f 0150:4f 0151:6f 0154:52 0155:72 0156:52 0157:72 0158:52 0159:72 015a:53 015b:73 015c:53 015d:73 015e:53 015f:73 0162:54 0163:74 0164:54 0165:74 0166:54 0167:74 0168:55 0169:75 016a:55 016b:75 016c:55 016d:75 016e:55 016f:75 0170:55 0171:75 0172:55 0173:75 0174:57 0175:77 0176:59 0177:79 0179:5a 017b:5a 017c:7a 0180:62 0197:49 019a:6c 019f:4f 01a0:4f 01a1:6f 01ab:74 01ae:54 01af:55 01b0:75 01b6:7a 01c0:7c 01c3:21 01cd:41 01ce:61 01cf:49 01d0:69 01d1:4f 01d2:6f 01d3:55 01d4:75 01d5:55 01d6:75 01d7:55 01d8:75 01d9:55 01da:75 01db:55 01dc:75 01de:41 01df:61 01e4:47 01e5:67 01e6:47 01e7:67 01e8:4b 01e9:6b 01ea:4f 01eb:6f 01ec:4f 01ed:6f 01f0:6a 0261:67 02b9:27 02ba:22 02bc:27 02c4:5e 02c8:27 02cb:60 02cd:5f 0300:60 0302:5e 0303:7e 030e:22 0331:5f 0332:5f 037e:3b 0393:47 0398:54 03a3:53 03a6:46 03a9:4f 03b1:61 03b4:64 03b5:65 03c0:70 03c3:73 03c4:74 03c6:66 04bb:68 0589:3a 066a:25 2000:20 2001:20 2002:20 2003:20 2004:20 2005:20 2006:20 2010:2d 2011:2d 2017:3d 2032:27 2035:60 2044:2f 2074:34 2075:35 2076:36 2077:37 2078:38 207f:6e 2080:30 2081:31 2082:32 2083:33 2084:34 2085:35 2086:36 2087:37 2088:38 2089:39 20a7:50 2102:43 2107:45 210a:67 210b:48 210c:48 210d:48 210e:68 2110:49 2111:49 2112:4c 2113:6c 2115:4e 2118:50 2119:50 211a:51 211b:52 211c:52 211d:52 2124:5a 2128:5a 212a:4b 212c:42 212d:43 212e:65 212f:65 2130:45 2131:46 2133:4d 2134:6f 2212:2d 2215:2f 2216:5c 2217:2a 221a:76 221e:38 2223:7c 2229:6e 2236:3a 223c:7e 2261:3d 2264:3d 2265:3d 2303:5e 2320:28 2321:29 2329:3c 232a:3e 2500:2d 250c:2b 2510:2b 2514:2b 2518:2b 251c:2b 252c:2d 2534:2d 253c:2b 2550:2d 2552:2b 2553:2b 2554:2b 2555:2b 2556:2b 2557:2b 2558:2b 2559:2b 255a:2b 255b:2b 255c:2b 255d:2b 2564:2d 2565:2d 2566:2d 2567:2d 2568:2d 2569:2d 256a:2b 256b:2b 256c:2b 2584:5f 2758:7c 3000:20 3008:3c 3009:3e 301a:5b 301b:5d ff01:21 ff02:22 ff03:23 ff04:24 ff05:25 ff06:26 ff07:27 ff08:28 ff09:29 ff0a:2a ff0b:2b ff0c:2c ff0d:2d ff0e:2e ff0f:2f ff10:30 ff11:31 ff12:32 ff13:33 ff14:34 ff15:35 ff16:36 ff17:37 ff18:38 ff19:39 ff1a:3a ff1b:3b ff1c:3c ff1d:3d ff1e:3e ff20:40 ff21:41 ff22:42 ff23:43 ff24:44 ff25:45 ff26:46 ff27:47 ff28:48 ff29:49 ff2a:4a ff2b:4b ff2c:4c ff2d:4d ff2e:4e ff2f:4f ff30:50 ff31:51 ff32:52 ff33:53 ff34:54 ff35:55 ff36:56 ff37:57 ff38:58 ff39:59 ff3a:5a ff3b:5b ff3c:5c ff3d:5d ff3e:5e ff3f:5f ff40:60 ff41:61 ff42:62 ff43:63 ff44:64 ff45:65 ff46:66 ff47:67 ff48:68 ff49:69 ff4a:6a ff4b:6b ff4c:6c ff4d:6d ff4e:6e ff4f:6f ff50:70 ff51:71 ff52:72 ff53:73 ff54:74 ff55:75 ff56:76 ff57:77 ff58:78 ff59:79 ff5a:7a ff5b:7b ff5c:7c ff5d:7d ff5e:7e
37 (IBM EBCDIC - U.S./Canada)
0004:37 0005:2d 0006:2e 0007:2f 0008:16 0009:05 000a:25 0014:3c 0015:3d 0016:32 0017:26 001a:3f 001b:27 0020:40 0021:5a 0022:7f 0023:7b 0024:5b 0025:6c 0026:50 0027:7d 0028:4d 0029:5d 002a:5c 002b:4e 002c:6b 002d:60 002e:4b 002f:61 003a:7a 003b:5e 003c:4c 003d:7e 003e:6e 003f:6f 0040:7c 005f:6d 0060:79 007c:4f 007f:07 0080:20 0081:21 0082:22 0083:23 0084:24 0085:15 0086:06 0087:17 0088:28 0089:29 008a:2a 008b:2b 008c:2c 008d:09 008e:0a 008f:1b 0090:30 0091:31 0092:1a 0093:33 0094:34 0095:35 0096:36 0097:08 0098:38 0099:39 009a:3a 009b:3b 009c:04 009d:14 009e:3e 00a0:41 00a2:4a 00a6:6a 00ac:5f 00c0:64 00c1:65 00c2:62 00c3:66 00c4:63 00c5:67 00c7:68 00c8:74 00c9:71 00ca:72 00cb:73 00cc:78 00cd:75 00ce:76 00cf:77 00d1:69 00df:59 00e0:44 00e1:45 00e2:42 00e3:46 00e4:43 00e5:47 00e7:48 00e8:54 00e9:51 00ea:52 00eb:53 00ec:58 00ed:55 00ee:56 00ef:57 00f1:49 00f8:70 ff01:5a ff02:7f ff03:7b ff04:5b ff05:6c ff06:50 ff07:7d ff08:4d ff09:5d ff0a:5c ff0b:4e ff0c:6b ff0d:60 ff0e:4b ff0f:61 ff1a:7a ff1b:5e ff1c:4c ff1d:7e ff1e:6e ff20:7c ff3f:6d ff40:79 ff5c:4f
20285 (IBM EBCDIC - United Kingdom)
0004:37 0005:2d 0006:2e 0007:2f 0008:16 0009:05 000a:25 0014:3c 0015:3d 0016:32 0017:26 001a:3f 001b:27 0020:40 0021:5a 0022:7f 0023:7b 0024:4a 0025:6c 0026:50 0027:7d 0028:4d 0029:5d 002a:5c 002b:4e 002c:6b 002d:60 002e:4b 002f:61 003a:7a 003b:5e 003c:4c 003d:7e 003e:6e 003f:6f 0040:7c 005f:6d 0060:79 007c:4f 007f:07 0080:20 0081:21 0082:22 0083:23 0084:24 0085:15 0086:06 0087:17 0088:28 0089:29 008a:2a 008b:2b 008c:2c 008d:09 008e:0a 008f:1b 0090:30 0091:31 0092:1a 0093:33 0094:34 0095:35 0096:36 0097:08 0098:38 0099:39 009a:3a 009b:3b 009c:04 009d:14 009e:3e 00a0:41 00a3:5b 00a6:6a 00ac:5f 00c0:64 00c1:65 00c2:62 00c3:66 00c4:63 00c5:67 00c7:68 00c8:74 00c9:71 00ca:72 00cb:73 00cc:78 00cd:75 00ce:76 00cf:77 00d1:69 00df:59 00e0:44 00e1:45 00e2:42 00e3:46 00e4:43 00e5:47 00e7:48 00e8:54 00e9:51 00ea:52 00eb:53 00ec:58 00ed:55 00ee:56 00ef:57 00f1:49 00f8:70 ff01:5a ff02:7f ff03:7b ff04:4a ff05:6c ff06:50 ff07:7d ff08:4d ff09:5d ff0a:5c ff0b:4e ff0c:6b ff0d:60 ff0e:4b ff0f:61 ff1a:7a ff1b:5e ff1c:4c ff1d:7e ff1e:6e ff20:7c ff3f:6d ff40:79 ff5c:4f
28591 (ISO 8859-1 Latin I)
0100:41 0101:61 0102:41 0103:61 0104:41 0105:61 0106:43 0107:63 0108:43 0109:63 010a:43 010b:63 010c:43 010d:63 010e:44 010f:64 0110:44 0111:64 0112:45 0113:65 0114:45 0115:65 0116:45 0117:65 0118:45 0119:65 011a:45 011b:65 011c:47 011d:67 011e:47 011f:67 0120:47 0121:67 0122:47 0123:67 0124:48 0125:68 0126:48 0127:68 0128:49 0129:69 012a:49 012b:69 012c:49 012d:69 012e:49 012f:69 0130:49 0131:69 0134:4a 0135:6a 0136:4b 0137:6b 0139:4c 013a:6c 013b:4c 013c:6c 013d:4c 013e:6c 0141:4c 0142:6c 0143:4e 0144:6e 0145:4e 0146:6e 0147:4e 0148:6e 014c:4f 014d:6f 014e:4f 014f:6f 0150:4f 0151:6f 0152:4f 0153:6f 0154:52 0155:72 0156:52 0157:72 0158:52 0159:72 015a:53 015b:73 015c:53 015d:73 015e:53 015f:73 0160:53 0161:73 0162:54 0163:74 0164:54 0165:74 0166:54 0167:74 0168:55 0169:75 016a:55 016b:75 016c:55 016d:75 016e:55 016f:75 0170:55 0171:75 0172:55 0173:75 0174:57 0175:77 0176:59 0177:79 0178:59 0179:5a 017b:5a 017c:7a 017d:5a 017e:7a 0180:62 0189:44 0191:46 0192:66 0197:49 019a:6c 019f:4f 01a0:4f 01a1:6f 01ab:74 01ae:54 01af:55 01b0:75 01b6:7a 01cd:41 01ce:61 01cf:49 01d0:69 01d1:4f 01d2:6f 01d3:55 01d4:75 01d5:55 01d6:75 01d7:55 01d8:75 01d9:55 01da:75 01db:55 01dc:75 01de:41 01df:61 01e4:47 01e5:67 01e6:47 01e7:67 01e8:4b 01e9:6b 01ea:4f 01eb:6f 01ec:4f 01ed:6f 01f0:6a 0261:67 02b9:27 02ba:22 02bc:27 02c4:5e 02c6:5e 02c8:27 02cb:60 02cd:5f 02dc:7e 0300:60 0302:5e 0303:7e 030e:22 0331:5f 0332:5f 2000:20 2001:20 2002:20 2003:20 2004:20 2005:20 2006:20 2010:2d 2011:2d 2013:2d 2014:2d 2018:27 2019:27 201a:2c 201c:22 201d:22 201e:22 2022:2e 2026:2e 2032:27 2035:60 2039:3c 203a:3e 2122:54 ff01:21 ff02:22 ff03:23 ff04:24 ff05:25 ff06:26 ff07:27 ff08:28 ff09:29 ff0a:2a ff0b:2b ff0c:2c ff0d:2d ff0e:2e ff0f:2f ff10:30 ff11:31 ff12:32 ff13:33 ff14:34 ff15:35 ff16:36 ff17:37 ff18:38 ff19:39 ff1a:3a ff1b:3b ff1c:3c ff1d:3d ff1e:3e ff20:40 ff21:41 ff22:42 ff23:43 ff24:44 ff25:45 ff26:46 ff27:47 ff28:48 ff29:49 ff2a:4a ff2b:4b ff2c:4c ff2d:4d ff2e:4e ff2f:4f ff30:50 ff31:51 ff32:52 ff33:53 ff34:54 ff35:55 ff36:56 ff37:57 ff38:58 ff39:59 ff3a:5a ff3b:5b ff3c:5c ff3d:5d ff3e:5e ff3f:5f ff40:60 ff41:61 ff42:62 ff43:63 ff44:64 ff45:65 ff46:66 ff47:67 ff48:68 ff49:69 ff4a:6a ff4b:6b ff4c:6c ff4d:6d ff4e:6e ff4f:6f ff50:70 ff51:71 ff52:72 ff53:73 ff54:74 ff55:75 ff56:76 ff57:77 ff58:78 ff59:79 ff5a:7a ff5b:7b ff5c:7c ff5d:7d ff5e:7e
20127 (US-ASCII)
00a0:20 00a1:21 00a2:63 00a4:24 00a5:59 00a6:7c 00a9:43 00aa:61 00ab:3c 00ad:2d 00ae:52 00b2:32 00b3:33 00b7:2e 00b8:2c 00b9:31 00ba:6f 00bb:3e 00c0:41 00c1:41 00c2:41 00c3:41 00c4:41 00c5:41 00c6:41 00c7:43 00c8:45 00c9:45 00ca:45 00cb:45 00cc:49 00cd:49 00ce:49 00cf:49 00d0:44 00d1:4e 00d2:4f 00d3:4f 00d4:4f 00d5:4f 00d6:4f 00d8:4f 00d9:55 00da:55 00db:55 00dc:55 00dd:59 00e0:61 00e1:61 00e2:61 00e3:61 00e4:61 00e5:61 00e6:61 00e7:63 00e8:65 00e9:65 00ea:65 00eb:65 00ec:69 00ed:69 00ee:69 00ef:69 00f1:6e 00f2:6f 00f3:6f 00f4:6f 00f5:6f 00f6:6f 00f8:6f 00f9:75 00fa:75 00fb:75 00fc:75 00fd:79 00ff:79 0100:41 0101:61 0102:41 0103:61 0104:41 0105:61 0106:43 0107:63 0108:43 0109:63 010a:43 010b:63 010c:43 010d:63 010e:44 010f:64 0110:44 0111:64 0112:45 0113:65 0114:45 0115:65 0116:45 0117:65 0118:45 0119:65 011a:45 011b:65 011c:47 011d:67 011e:47 011f:67 0120:47 0121:67 0122:47 0123:67 0124:48 0125:68 0126:48 0127:68 0128:49 0129:69 012a:49 012b:69 012c:49 012d:69 012e:49 012f:69 0130:49 0131:69 0134:4a 0135:6a 0136:4b 0137:6b 0139:4c 013a:6c 013b:4c 013c:6c 013d:4c 013e:6c 0141:4c 0142:6c 0143:4e 0144:6e 0145:4e 0146:6e 0147:4e 0148:6e 014c:4f 014d:6f 014e:4f 014f:6f 0150:4f 0151:6f 0152:4f 0153:6f 0154:52 0155:72 0156:52 0157:72 0158:52 0159:72 015a:53 015b:73 015c:53 015d:73 015e:53 015f:73 0160:53 0161:73 0162:54 0163:74 0164:54 0165:74 0166:54 0167:74 0168:55 0169:75 016a:55 016b:75 016c:55 016d:75 016e:55 016f:75 0170:55 0171:75 0172:55 0173:75 0174:57 0175:77 0176:59 0177:79 0178:59 0179:5a 017b:5a 017c:7a 017d:5a 017e:7a 0180:62 0189:44 0191:46 0192:66 0197:49 019a:6c 019f:4f 01a0:4f 01a1:6f 01ab:74 01ae:54 01af:55 01b0:75 01b6:7a 01cd:41 01ce:61 01cf:49 01d0:69 01d1:4f 01d2:6f 01d3:55 01d4:75 01d5:55 01d6:75 01d7:55 01d8:75 01d9:55 01da:75 01db:55 01dc:75 01de:41 01df:61 01e4:47 01e5:67 01e6:47 01e7:67 01e8:4b 01e9:6b 01ea:4f 01eb:6f 01ec:4f 01ed:6f 01f0:6a 0261:67 02b9:27 02ba:22 02bc:27 02c4:5e 02c6:5e 02c8:27 02cb:60 02cd:5f 02dc:7e 0300:60 0302:5e 0303:7e 030e:22 0331:5f 0332:5f 2000:20 2001:20 2002:20 2003:20 2004:20 2005:20 2006:20 2010:2d 2011:2d 2013:2d 2014:2d 2018:27 2019:27 201a:2c 201c:22 201d:22 201e:22 2022:2e 2026:2e 2032:27 2035:60 2039:3c 203a:3e 2122:54 ff01:21 ff02:22 ff03:23 ff04:24 ff05:25 ff06:26 ff07:27 ff08:28 ff09:29 ff0a:2a ff0b:2b ff0c:2c ff0d:2d ff0e:2e ff0f:2f ff10:30 ff11:31 ff12:32 ff13:33 ff14:34 ff15:35 ff16:36 ff17:37 ff18:38 ff19:39 ff1a:3a ff1b:3b ff1c:3c ff1d:3d ff1e:3e ff20:40 ff21:41 ff22:42 ff23:43 ff24:44 ff25:45 ff26:46 ff27:47 ff28:48 ff29:49 ff2a:4a ff2b:4b ff2c:4c ff2d:4d ff2e:4e ff2f:4f ff30:50 ff31:51 ff32:52 ff33:53 ff34:54 ff35:55 ff36:56 ff37:57 ff38:58 ff39:59 ff3a:5a ff3b:5b ff3c:5c ff3d:5d ff3e:5e ff3f:5f ff40:60 ff41:61 ff42:62 ff43:63 ff44:64 ff45:65 ff46:66 ff47:67 ff48:68 ff49:69 ff4a:6a ff4b:6b ff4c:6c ff4d:6d ff4e:6e ff4f:6f ff50:70 ff51:71 ff52:72 ff53:73 ff54:74 ff55:75 ff56:76 ff57:77 ff58:78 ff59:79 ff5a:7a ff5b:7b ff5c:7c ff5d:7d ff5e:7e
20269 (ISO 6937 Non-Spacing Accent)
f8f6:7f
20105 (IA5 IRV International Alphabet No.5)
00a0:20 00a1:21 00a2:63 00a4:24 00a5:59 00a6:7c 00a9:43 00aa:61 00ab:3c 00ad:2d 00ae:52 00b2:32 00b3:33 00b7:2e 00b8:2c 00b9:31 00ba:6f 00bb:3e 00c0:41 00c1:41 00c2:41 00c3:41 00c4:41 00c5:41 00c6:41 00c7:43 00c8:45 00c9:45 00ca:45 00cb:45 00cc:49 00cd:49 00ce:49 00cf:49 00d0:44 00d1:4e 00d2:4f 00d3:4f 00d4:4f 00d5:4f 00d6:4f 00d8:4f 00d9:55 00da:55 00db:55 00dc:55 00dd:59 00e0:61 00e1:61 00e2:61 00e3:61 00e4:61 00e5:61 00e6:61 00e7:63 00e8:65 00e9:65 00ea:65 00eb:65 00ec:69 00ed:69 00ee:69 00ef:69 00f1:6e 00f2:6f 00f3:6f 00f4:6f 00f5:6f 00f6:6f 00f8:6f 00f9:75 00fa:75 00fb:75 00fc:75 00fd:79 00ff:79 0100:41 0101:61 0102:41 0103:61 0104:41 0105:61 0106:43 0107:63 0108:43 0109:63 010a:43 010b:63 010c:43 010d:63 010e:44 010f:64 0110:44 0111:64 0112:45 0113:65 0114:45 0115:65 0116:45 0117:65 0118:45 0119:65 011a:45 011b:65 011c:47 011d:67 011e:47 011f:67 0120:47 0121:67 0122:47 0123:67 0124:48 0125:68 0126:48 0127:68 0128:49 0129:69 012a:49 012b:69 012c:49 012d:69 012e:49 012f:69 0130:49 0131:69 0134:4a 0135:6a 0136:4b 0137:6b 0139:4c 013a:6c 013b:4c 013c:6c 013d:4c 013e:6c 0141:4c 0142:6c 0143:4e 0144:6e 0145:4e 0146:6e 0147:4e 0148:6e 014c:4f 014d:6f 014e:4f 014f:6f 0150:4f 0151:6f 0152:4f 0153:6f 0154:52 0155:72 0156:52 0157:72 0158:52 0159:72 015a:53 015b:73 015c:53 015d:73 015e:53 015f:73 0160:53 0161:73 0162:54 0163:74 0164:54 0165:74 0166:54 0167:74 0168:55 0169:75 016a:55 016b:75 016c:55 016d:75 016e:55 016f:75 0170:55 0171:75 0172:55 0173:75 0174:57 0175:77 0176:59 0177:79 0178:59 0179:5a 017b:5a 017c:7a 017d:5a 017e:7a 0180:62 0189:44 0191:46 0192:66 0197:49 019a:6c 019f:4f 01a0:4f 01a1:6f 01ab:74 01ae:54 01af:55 01b0:75 01b6:7a 01cd:41 01ce:61 01cf:49 01d0:69 01d1:4f 01d2:6f 01d3:55 01d4:75 01d5:55 01d6:75 01d7:55 01d8:75 01d9:55 01da:75 01db:55 01dc:75 01de:41 01df:61 01e4:47 01e5:67 01e6:47 01e7:67 01e8:4b 01e9:6b 01ea:4f 01eb:6f 01ec:4f 01ed:6f 01f0:6a 0261:67 02b9:27 02ba:22 02bc:27 02c4:5e 02c6:5e 02c8:27 02cb:60 02cd:5f 02dc:7e 0300:60 0302:5e 0303:7e 030e:22 0331:5f 0332:5f 2000:20 2001:20 2002:20 2003:20 2004:20 2005:20 2006:20 2010:2d 2011:2d 2013:2d 2014:2d 2018:27 2019:27 201a:2c 201c:22 201d:22 201e:22 2022:2e 2026:2e 2032:27 2035:60 2039:3c 203a:3e 203e:7e 2122:54 2207:7f ff01:21 ff02:22 ff03:23 ff04:24 ff05:25 ff06:26 ff07:27 ff08:28 ff09:29 ff0a:2a ff0b:2b ff0c:2c ff0d:2d ff0e:2e ff0f:2f ff10:30 ff11:31 ff12:32 ff13:33 ff14:34 ff15:35 ff16:36 ff17:37 ff18:38 ff19:39 ff1a:3a ff1b:3b ff1c:3c ff1d:3d ff1e:3e ff20:40 ff21:41 ff22:42 ff23:43 ff24:44 ff25:45 ff26:46 ff27:47 ff28:48 ff29:49 ff2a:4a ff2b:4b ff2c:4c ff2d:4d ff2e:4e ff2f:4f ff30:50 ff31:51 ff32:52 ff33:53 ff34:54 ff35:55 ff36:56 ff37:57 ff38:58 ff39:59 ff3a:5a ff3b:5b ff3c:5c ff3d:5d ff3e:5e ff3f:5f ff40:60 ff41:61 ff42:62 ff43:63 ff44:64 ff45:65 ff46:66 ff47:67 ff48:68 ff49:69 ff4a:6a ff4b:6b ff4c:6c ff4d:6d ff4e:6e ff4f:6f ff50:70 ff51:71 ff52:72 ff53:73 ff54:74 ff55:75 ff56:76 ff57:77 ff58:78 ff59:79 ff5a:7a ff5b:7b ff5c:7c ff5d:7d ff5e:7e
20106 (IA5 German)
00a0:20 00a1:21 00a2:63 00a4:24 00a5:59 00a7:40 00a9:43 00aa:61 00ab:3c 00ad:2d 00ae:52 00b2:32 00b3:33 00b7:2e 00b8:2c 00b9:31 00ba:6f 00bb:3e 00c0:41 00c1:41 00c2:41 00c3:41 00c4:5b 00c5:41 00c6:41 00c7:43 00c8:45 00c9:45 00ca:45 00cb:45 00cc:49 00cd:49 00ce:49 00cf:49 00d0:44 00d1:4e 00d2:4f 00d3:4f 00d4:4f 00d5:4f 00d6:5c 00d8:4f 00d9:55 00da:55 00db:55 00dc:5d 00dd:59 00df:7e 00e0:61 00e1:61 00e2:61 00e3:61 00e4:7b 00e5:61 00e6:61 00e7:63 00e8:65 00e9:65 00ea:65 00eb:65 00ec:69 00ed:69 00ee:69 00ef:69 00f1:6e 00f2:6f 00f3:6f 00f4:6f 00f5:6f 00f6:7c 00f8:6f 00f9:75 00fa:75 00fb:75 00fc:7d 00fd:79 00ff:79 0100:41 0101:61 0102:41 0103:61 0104:41 0105:61 0106:43 0107:63 0108:43 0109:63 010a:43 010b:63 010c:43 010d:63 010e:44 010f:64 0110:44 0111:64 0112:45 0113:65 0114:45 0115:65 0116:45 0117:65 0118:45 0119:65 011a:45 011b:65 011c:47 011d:67 011e:47 011f:67 0120:47 0121:67 0122:47 0123:67 0124:48 0125:68 0126:48 0127:68 0128:49 0129:69 012a:49 012b:69 012c:49 012d:69 012e:49 012f:69 0130:49 0131:69 0134:4a 0135:6a 0136:4b 0137:6b 0139:4c 013a:6c 013b:4c 013c:6c 013d:4c 013e:6c 0141:4c 0142:6c 0143:4e 0144:6e 0145:4e 0146:6e 0147:4e 0148:6e 014c:4f 014d:6f 014e:4f 014f:6f 0150:4f 0151:6f 0152:4f 0153:6f 0154:52 0155:72 0156:52 0157:72 0158:52 0159:72 015a:53 015b:73 015c:53 015d:73 015e:53 015f:73 0160:53 0161:73 0162:54 0163:74 0164:54 0165:74 0166:54 0167:74 0168:55 0169:75 016a:55 016b:75 016c:55 016d:75 016e:55 016f:75 0170:55 0171:75 0172:55 0173:75 0174:57 0175:77 0176:59 0177:79 0178:59 0179:5a 017b:5a 017c:7a 017d:5a 017e:7a 0180:62 0189:44 0191:46 0192:66 0197:49 019a:6c 019f:4f 01a0:4f 01a1:6f 01ab:74 01ae:54 01af:55 01b0:75 01b6:7a 01cd:41 01ce:61 01cf:49 01d0:69 01d1:4f 01d2:6f 01d3:55 01d4:75 01d5:55 01d6:75 01d7:55 01d8:75 01d9:55 01da:75 01db:55 01dc:75 01de:41 01df:61 01e4:47 01e5:67 01e6:47 01e7:67 01e8:4b 01e9:6b 01ea:4f 01eb:6f 01ec:4f 01ed:6f 01f0:6a 0261:67 02b9:27 02ba:22 02bc:27 02c4:5e 02c6:5e 02c8:27 02cb:60 02cd:5f 02dc:7e 0300:60 0302:5e 0303:7e 030e:22 0331:5f 0332:5f 2000:20 2001:20 2002:20 2003:20 2004:20 2005:20 2006:20 2010:2d 2011:2d 2013:2d 2014:2d 2018:27 2019:27 201a:2c 201c:22 201d:22 201e:22 2022:2e 2026:2e 2032:27 2035:60 2039:3c 203a:3e 2122:54 ff01:21 ff02:22 ff03:23 ff04:24 ff05:25 ff06:26 ff07:27 ff08:28 ff09:29 ff0a:2a ff0b:2b ff0c:2c ff0d:2d ff0e:2e ff0f:2f ff10:30 ff11:31 ff12:32 ff13:33 ff14:34 ff15:35 ff16:36 ff17:37 ff18:38 ff19:39 ff1a:3a ff1b:3b ff1c:3c ff1d:3d ff1e:3e ff21:41 ff22:42 ff23:43 ff24:44 ff25:45 ff26:46 ff27:47 ff28:48 ff29:49 ff2a:4a ff2b:4b ff2c:4c ff2d:4d ff2e:4e ff2f:4f ff30:50 ff31:51 ff32:52 ff33:53 ff34:54 ff35:55 ff36:56 ff37:57 ff38:58 ff39:59 ff3a:5a ff3e:5e ff3f:5f ff40:60 ff41:61 ff42:62 ff43:63 ff44:64 ff45:65 ff46:66 ff47:67 ff48:68 ff49:69 ff4a:6a ff4b:6b ff4c:6c ff4d:6d ff4e:6e ff4f:6f ff50:70 ff51:71 ff52:72 ff53:73 ff54:74 ff55:75 ff56:76 ff57:77 ff58:78 ff59:79 ff5a:7a ff5e:7e
20107 (IA5 Swedish)
00a0:20 00a1:21 00a2:63 00a4:24 00a5:59 00a9:43 00aa:61 00ab:3c 00ad:2d 00ae:52 00b2:32 00b3:33 00b7:2e 00b8:2c 00b9:31 00ba:6f 00bb:3e 00c0:41 00c1:41 00c2:41 00c3:41 00c4:5b 00c5:5d 00c6:41 00c7:43 00c8:45 00c9:40 00ca:45 00cb:45 00cc:49 00cd:49 00ce:49 00cf:49 00d0:44 00d1:4e 00d2:4f 00d3:4f 00d4:4f 00d5:4f 00d6:5c 00d8:4f 00d9:55 00da:55 00db:55 00dc:5e 00dd:59 00e0:61 00e1:61 00e2:61 00e3:61 00e4:7b 00e5:7d 00e6:61 00e7:63 00e8:65 00e9:60 00ea:65 00eb:65 00ec:69 00ed:69 00ee:69 00ef:69 00f1:6e 00f2:6f 00f3:6f 00f4:6f 00f5:6f 00f6:7c 00f8:6f 00f9:75 00fa:75 00fb:75 00fc:7e 00fd:79 00ff:79 0100:41 0101:61 0102:41 0103:61 0104:41 0105:61 0106:43 0107:63 0108:43 0109:63 010a:43 010b:63 010c:43 010d:63 010e:44 010f:64 0110:44 0111:64 0112:45 0113:65 0114:45 0115:65 0116:45 0117:65 0118:45 0119:65 011a:45 011b:65 011c:47 011d:67 011e:47 011f:67 0120:47 0121:67 0122:47 0123:67 0124:48 0125:68 0126:48 0127:68 0128:49 0129:69 012a:49 012b:69 012c:49 012d:69 012e:49 012f:69 0130:49 0131:69 0134:4a 0135:6a 0136:4b 0137:6b 0139:4c 013a:6c 013b:4c 013c:6c 013d:4c 013e:6c 0141:4c 0142:6c 0143:4e 0144:6e 0145:4e 0146:6e 0147:4e 0148:6e 014c:4f 014d:6f 014e:4f 014f:6f 0150:4f 0151:6f 0152:4f 0153:6f 0154:52 0155:72 0156:52 0157:72 0158:52 0159:72 015a:53 015b:73 015c:53 015d:73 015e:53 015f:73 0160:53 0161:73 0162:54 0163:74 0164:54 0165:74 0166:54 0167:74 0168:55 0169:75 016a:55 016b:75 016c:55 016d:75 016e:55 016f:75 0170:55 0171:75 0172:55 0173:75 0174:57 0175:77 0176:59 0177:79 0178:59 0179:5a 017b:5a 017c:7a 017d:5a 017e:7a 0180:62 0189:44 0191:46 0192:66 0197:49 019a:6c 019f:4f 01a0:4f 01a1:6f 01ab:74 01ae:54 01af:55 01b0:75 01b6:7a 01cd:41 01ce:61 01cf:49 01d0:69 01d1:4f 01d2:6f 01d3:55 01d4:75 01d5:55 01d6:75 01d7:55 01d8:75 01d9:55 01da:75 01db:55 01dc:75 01de:41 01df:61 01e4:47 01e5:67 01e6:47 01e7:67 01e8:4b 01e9:6b 01ea:4f 01eb:6f 01ec:4f 01ed:6f 01f0:6a 0261:67 02b9:27 02ba:22 02bc:27 02c8:27 02cd:5f 02dc:7e 0303:7e 030e:22 0331:5f 0332:5f 2000:20 2001:20 2002:20 2003:20 2004:20 2005:20 2006:20 2010:2d 2011:2d 2013:2d 2014:2d 2018:27 2019:27 201a:2c 201c:22 201d:22 201e:22 2022:2e 2026:2e 2032:27 2039:3c 203a:3e 2122:54 ff01:21 ff02:22 ff03:23 ff04:24 ff05:25 ff06:26 ff07:27 ff08:28 ff09:29 ff0a:2a ff0b:2b ff0c:2c ff0d:2d ff0e:2e ff0f:2f ff10:30 ff11:31 ff12:32 ff13:33 ff14:34 ff15:35 ff16:36 ff17:37 ff18:38 ff19:39 ff1a:3a ff1b:3b ff1c:3c ff1d:3d ff1e:3e ff21:41 ff22:42 ff23:43 ff24:44 ff25:45 ff26:46 ff27:47 ff28:48 ff29:49 ff2a:4a ff2b:4b ff2c:4c ff2d:4d ff2e:4e ff2f:4f ff30:50 ff31:51 ff32:52 ff33:53 ff34:54 ff35:55 ff36:56 ff37:57 ff38:58 ff39:59 ff3a:5a ff3f:5f ff41:61 ff42:62 ff43:63 ff44:64 ff45:65 ff46:66 ff47:67 ff48:68 ff49:69 ff4a:6a ff4b:6b ff4c:6c ff4d:6d ff4e:6e ff4f:6f ff50:70 ff51:71 ff52:72 ff53:73 ff54:74 ff55:75 ff56:76 ff57:77 ff58:78 ff59:79 ff5a:7a ff5e:7e
20108 (IA5 Norwegian)
007c:7e 00a0:20 00a1:21 00a2:63 00a4:24 00a5:59 00a6:7e 00a7:23 00a9:43 00aa:61 00ab:3c 00ad:2d 00ae:52 00b2:32 00b3:33 00b7:2e 00b8:2c 00b9:31 00ba:6f 00bb:3e 00c0:41 00c1:41 00c2:41 00c3:41 00c4:41 00c5:5d 00c6:5b 00c7:43 00c8:45 00c9:45 00ca:45 00cb:45 00cc:49 00cd:49 00ce:49 00cf:49 00d0:44 00d1:4e 00d2:4f 00d3:4f 00d4:4f 00d5:4f 00d6:4f 00d8:5c 00d9:55 00da:55 00db:55 00dc:55 00dd:59 00e0:61 00e1:61 00e2:61 00e3:61 00e4:61 00e5:7d 00e6:7b 00e7:63 00e8:65 00e9:65 00ea:65 00eb:65 00ec:69 00ed:69 00ee:69 00ef:69 00f1:6e 00f2:6f 00f3:6f 00f4:6f 00f5:6f 00f6:6f 00f8:7c 00f9:75 00fa:75 00fb:75 00fc:75 00fd:79 00ff:79 0100:41 0101:61 0102:41 0103:61 0104:41 0105:61 0106:43 0107:63 0108:43 0109:63 010a:43 010b:63 010c:43 010d:63 010e:44 010f:64 0110:44 0111:64 0112:45 0113:65 0114:45 0115:65 0116:45 0117:65 0118:45 0119:65 011a:45 011b:65 011c:47 011d:67 011e:47 011f:67 0120:47 0121:67 0122:47 0123:67 0124:48 0125:68 0126:48 0127:68 0128:49 0129:69 012a:49 012b:69 012c:49 012d:69 012e:49 012f:69 0130:49 0131:69 0134:4a 0135:6a 0136:4b 0137:6b 0139:4c 013a:6c 013b:4c 013c:6c 013d:4c 013e:6c 0141:4c 0142:6c 0143:4e 0144:6e 0145:4e 0146:6e 0147:4e 0148:6e 014c:4f 014d:6f 014e:4f 014f:6f 0150:4f 0151:6f 0152:4f 0153:6f 0154:52 0155:72 0156:52 0157:72 0158:52 0159:72 015a:53 015b:73 015c:53 015d:73 015e:53 015f:73 0160:53 0161:73 0162:54 0163:74 0164:54 0165:74 0166:54 0167:74 0168:55 0169:75 016a:55 016b:75 016c:55 016d:75 016e:55 016f:75 0170:55 0171:75 0172:55 0173:75 0174:57 0175:77 0176:59 0177:79 0178:59 0179:5a 017b:5a 017c:7a 017d:5a 017e:7a 0180:62 0189:44 0191:46 0192:66 0197:49 019a:6c 019f:4f 01a0:4f 01a1:6f 01ab:74 01ae:54 01af:55 01b0:75 01b6:7a 01cd:41 01ce:61 01cf:49 01d0:69 01d1:4f 01d2:6f 01d3:55 01d4:75 01d5:55 01d6:75 01d7:55 01d8:75 01d9:55 01da:75 01db:55 01dc:75 01de:41 01df:61 01e4:47 01e5:67 01e6:47 01e7:67 01e8:4b 01e9:6b 01ea:4f 01eb:6f 01ec:4f 01ed:6f 01f0:6a 0261:67 02b9:27 02ba:22 02bc:27 02c4:5e 02c6:5e 02c8:27 02cb:60 02cd:5f 0300:60 0302:5e 030e:22 0331:5f 0332:5f 2000:20 2001:20 2002:20 2003:20 2004:20 2005:20 2006:20 2010:2d 2011:2d 2013:2d 2014:2d 2018:27 2019:27 201a:2c 201c:22 201d:22 201e:22 2022:2e 2026:2e 2032:27 2035:60 2039:3c 203a:3e 2122:54 ff01:21 ff02:22 ff04:24 ff05:25 ff06:26 ff07:27 ff08:28 ff09:29 ff0a:2a ff0b:2b ff0c:2c ff0d:2d ff0e:2e ff0f:2f ff10:30 ff11:31 ff12:32 ff13:33 ff14:34 ff15:35 ff16:36 ff17:37 ff18:38 ff19:39 ff1a:3a ff1b:3b ff1c:3c ff1d:3d ff1e:3e ff20:40 ff21:41 ff22:42 ff23:43 ff24:44 ff25:45 ff26:46 ff27:47 ff28:48 ff29:49 ff2a:4a ff2b:4b ff2c:4c ff2d:4d ff2e:4e ff2f:4f ff30:50 ff31:51 ff32:52 ff33:53 ff34:54 ff35:55 ff36:56 ff37:57 ff38:58 ff39:59 ff3a:5a ff3e:5e ff3f:5f ff40:60 ff41:61 ff42:62 ff43:63 ff44:64 ff45:65 ff46:66 ff47:67 ff48:68 ff49:69 ff4a:6a ff4b:6b ff4c:6c ff4d:6d ff4e:6e ff4f:6f ff50:70 ff51:71 ff52:72 ff53:73 ff54:74 ff55:75 ff56:76 ff57:77 ff58:78 ff59:79 ff5a:7a
865 (OEM - Nordic)
00a2:63 00a5:59 00a7:15 00a8:22 00a9:63 00ad:5f 00ae:72 00af:16 00b3:33 00b4:2f 00b6:14 00b8:2c 00b9:31 00bb:3e 00be:33 00c0:41 00c1:41 00c2:41 00c3:41 00c8:45 00ca:45 00cb:45 00cc:49 00cd:49 00ce:49 00cf:49 00d0:44 00d2:4f 00d3:4f 00d4:4f 00d5:4f 00d7:58 00d9:55 00da:55 00db:55 00dd:59 00de:54 00e3:61 00f0:64 00f5:6f 00fd:79 00fe:74 0100:41 0101:61 0102:41 0103:61 0104:41 0105:61 0106:43 0107:63 0108:43 0109:63 010a:43 010b:63 010c:43 010d:63 010e:44 010f:64 0110:44 0111:64 0112:45 0113:65 0114:45 0115:65 0116:45 0117:65 0118:45 0119:65 011a:45 011b:65 011c:47 011d:67 011e:47 011f:67 0120:47 0121:67 0122:47 0123:67 0124:48 0125:68 0126:48 0127:68 0128:49 0129:69 012a:49 012b:69 012c:49 012d:69 012e:49 012f:69 0130:49 0131:69 0134:4a 0135:6a 0136:4b 0137:6b 0139:4c 013a:6c 013b:4c 013c:6c 013d:4c 013e:6c 0141:4c 0142:6c 0143:4e 0144:6e 0145:4e 0146:6e 0147:4e 0148:6e 014c:4f 014d:6f 014e:4f 014f:6f 0150:4f 0151:6f 0152:4f 0153:6f 0154:52 0155:72 0156:52 0157:72 0158:52 0159:72 015a:53 015b:73 015c:53 015d:73 015e:53 015f:73 0160:53 0161:73 0162:54 0163:74 0164:54 0165:74 0166:54 0167:74 0168:55 0169:75 016a:55 016b:75 016c:55 016d:75 016e:55 016f:75 0170:55 0171:75 0172:55 0173:75 0174:57 0175:77 0176:59 0177:79 0178:59 0179:5a 017b:5a 017c:7a 017d:5a 017e:7a 0180:62 0189:44 0197:49 019a:6c 019f:4f 01a0:4f 01a1:6f 01ab:74 01ae:54 01af:55 01b0:75 01b6:7a 01c3:21 01cd:41 01ce:61 01cf:49 01d0:69 01d1:4f 01d2:6f 01d3:55 01d4:75 01d5:55 01d6:75 01d7:55 01d8:75 01d9:55 01da:75 01db:55 01dc:75 01de:41 01df:61 01e4:47 01e5:67 01e6:47 01e7:67 01e8:4b 01e9:6b 01ea:4f 01eb:6f 01ec:4f 01ed:6f 01f0:6a 0261:67 02b9:27 02ba:22 02bc:27 02c4:5e 02c6:5e 02c8:27 02c9:16 02ca:2f 02cb:60 02cd:5f 02dc:7e 0300:60 0301:2f 0302:5e 0303:7e 0304:16 0305:16 0308:22 030e:22 0327:2c 0331:5f 0332:5f 037e:3b 04bb:68 0589:3a 066a:25 2000:20 2001:20 2002:20 2003:20 2004:20 2005:20 2006:20 2010:2d 2011:2d 2013:2d 2014:2d 2017:5f 2018:27 2019:27 201a:27 201c:22 201d:22 201e:22 2022:07 2024:07 2026:07 2030:25 2032:27 2035:27 2039:3c 203a:3e 203c:13 2044:2f 2070:30 2074:34 2075:35 2076:36 2077:37 2078:38 2080:30 2081:31 2083:33 2084:34 2085:35 2086:36 2087:37 2088:38 2089:39 20dd:4f 2102:43 2107:45 210a:67 210b:48 210c:48 210d:48 210e:68 2110:49 2111:49 2112:4c 2113:6c 2115:4e 2118:70 2119:50 211a:51 211b:52 211c:52 211d:52 2122:74 2124:5a 2128:5a 212a:4b 212c:42 212d:43 212e:65 212f:65 2130:45 2131:46 2133:4d 2134:6f 2190:1b 2191:18 2192:1a 2193:19 2194:1d 2195:12 21a8:17 2205:4f 2212:5f 2215:2f 2216:5c 2217:2a 221f:1c 2223:7c 2236:3a 223c:7e 226b:3c 22c5:07 2302:7f 2303:5e 2329:3c 232a:3e 25ac:16 25b2:1e 25ba:10 25bc:1f 25c4:11 25cb:09 25d8:08 25d9:0a 263a:01 263b:02 263c:0f 2640:0c 2642:0b 2660:06 2663:05 2665:03 2666:04 266a:0d 266b:0e 3000:20 3007:4f 3008:3c 3009:3e 300b:3e 301a:5b 301b:5d 30fb:07
863 (OEM - Canadian French)
00a1:21 00a5:59 00a9:63 00aa:61 00ad:16 00ae:72 00b9:33 00ba:6f 00c1:41 00c3:41 00c4:41 00c5:41 00c6:41 00cc:49 00cd:49 00d0:44 00d1:4e 00d2:4f 00d3:4f 00d5:4f 00d6:4f 00d7:58 00d8:4f 00da:55 00dd:59 00de:54 00e1:61 00e3:61 00e4:61 00e5:61 00e6:61 00ec:69 00ed:69 00f0:64 00f1:6e 00f2:6f 00f5:6f 00f6:6f 00f8:6f 00fd:79 00fe:74 00ff:79 0100:41 0101:61 0102:41 0103:61 0104:41 0105:61 0106:43 0107:63 0108:43 0109:63 010a:43 010b:63 010c:43 010d:63 010e:44 010f:64 0110:44 0111:64 0112:45 0113:65 0114:45 0115:65 0116:45 0117:65 0118:45 0119:65 011a:45 011b:65 011c:47 011d:67 011e:47 011f:67 0120:47 0121:67 0122:47 0123:67 0124:48 0125:68 0126:48 0127:68 0128:49 0129:69 012a:49 012b:69 012c:49 012d:69 012e:49 012f:69 0130:49 0131:69 0134:4a 0135:6a 0136:4b 0137:6b 0139:4c 013a:6c 013b:4c 013c:6c 013d:4c 013e:6c 0141:4c 0142:6c 0143:4e 0144:6e 0145:4e 0146:6e 0147:4e 0148:6e 014c:4f 014d:6f 014e:4f 014f:6f 0150:4f 0151:6f 0152:4f 0153:6f 0154:52 0155:72 0156:52 0157:72 0158:52 0159:72 015a:53 015b:73 015c:53 015d:73 015e:53 015f:73 0160:53 0161:73 0162:54 0163:74 0164:54 0165:74 0166:54 0167:74 0168:55 0169:75 016a:55 016b:75 016c:55 016d:75 016e:55 016f:75 0170:55 0171:75 0172:55 0173:75 0174:57 0175:77 0176:59 0177:79 0178:59 0179:5a 017b:5a 017c:7a 017d:5a 017e:7a 0180:62 0189:44 0197:49 019a:6c 019f:4f 01a0:4f 01a1:6f 01ab:74 01ae:54 01af:55 01b0:75 01b6:7a 01c3:21 01cd:41 01ce:61 01cf:49 01d0:69 01d1:4f 01d2:6f 01d3:55 01d4:75 01d5:55 01d6:75 01d7:55 01d8:75 01d9:55 01da:75 01db:55 01dc:75 01de:41 01df:61 01e4:47 01e5:67 01e6:47 01e7:67 01e8:4b 01e9:6b 01ea:4f 01eb:6f 01ec:4f 01ed:6f 01f0:6a 0261:67 02b9:22 02ba:27 02bc:27 02c4:5e 02c6:5e 02c8:27 02c9:16 02cb:60 02cd:5f 02dc:7e 0300:60 0302:5e 0303:7e 0304:16 0305:16 0331:5f 0332:5f 037e:3b 04bb:68 0589:3a 066a:25 2000:20 2001:20 2002:20 2003:20 2004:20 2005:20 2006:20 2010:2d 2011:2d 2013:2d 2014:2d 2018:27 2019:27 201a:27 201c:22 201d:22 201e:22 2022:07 2024:07 2026:07 2030:25 2032:27 2035:27 2039:3c 203a:3e 203c:13 2044:2f 2070:30 2074:34 2075:35 2076:36 2077:37 2078:38 2080:30 2081:31 2084:34 2085:35 2086:36 2087:37 2088:38 2089:39 20a7:50 20dd:4f 2102:43 2107:45 210a:67 210b:48 210c:48 210d:48 210e:68 2110:49 2111:49 2112:4c 2113:6c 2115:4e 2118:70 2119:50 211a:51 211b:52 211c:52 211d:52 2122:74 2124:5a 2128:5a 212a:4b 212b:41 212c:42 212d:43 212e:65 212f:65 2130:45 2131:46 2133:4d 2134:6f 2190:1b 2191:18 2192:1a 2193:19 2194:1d 2195:12 21a8:17 2205:4f 2212:5f 2215:2f 2216:5c 2217:2a 221f:1c 2223:7c 2236:3a 223c:7e 22c5:07 2302:7f 2303:5e 2329:3c 232a:3e 25ac:16 25b2:1e 25ba:10 25bc:1f 25c4:11 25cb:09 25d8:08 25d9:0a 263a:01 263b:02 263c:0f 2640:0c 2642:0b 2660:06 2663:05 2665:03 2666:04 266a:0d 266b:0e 3000:20 3007:4f 3008:3c 3009:3e 301a:5b 301b:5d 30fb:07
861 (OEM - Icelandic)
00a2:63 00a4:0f 00a5:59 00a7:15 00a8:22 00a9:63 00aa:61 00ad:5f 00ae:72 00af:16 00b3:33 00b4:2f 00b6:14 00b8:2c 00b9:31 00ba:6f 00be:33 00c0:41 00c2:41 00c3:41 00c8:45 00ca:45 00cb:45 00cc:49 00ce:49 00cf:49 00d1:4e 00d2:4f 00d4:4f 00d5:4f 00d7:58 00d9:55 00db:55 00e3:61 00ec:69 00ee:69 00ef:69 00f1:6e 00f2:6f 00f5:6f 00f9:75 00ff:79 0100:41 0101:61 0102:41 0103:61 0104:41 0105:61 0106:43 0107:63 0108:43 0109:63 010a:43 010b:63 010c:43 010d:63 010e:44 010f:64 0111:64 0112:45 0113:65 0114:45 0115:65 0116:45 0117:65 0118:45 0119:65 011a:45 011b:65 011c:47 011d:67 011e:47 011f:67 0120:47 0121:67 0122:47 0123:67 0124:48 0125:68 0126:48 0127:68 0128:49 0129:69 012a:49 012b:69 012c:49 012d:69 012e:49 012f:69 0130:49 0131:69 0134:4a 0135:6a 0136:4b 0137:6b 0139:4c 013a:6c 013b:4c 013c:6c 013d:4c 013e:6c 0141:4c 0142:6c 0143:4e 0144:6e 0145:4e 0146:6e 0147:4e 0148:6e 014c:4f 014d:6f 014e:4f 014f:6f 0150:4f 0151:6f 0152:4f 0153:6f 0154:52 0155:72 0156:52 0157:72 0158:52 0159:72 015a:53 015b:73 015c:53 015d:73 015e:53 015f:73 0160:53 0161:73 0162:54 0163:74 0164:54 0165:74 0166:54 0167:74 0168:55 0169:75 016a:55 016b:75 016c:55 016d:75 016e:55 016f:75 0170:55 0171:75 0172:55 0173:75 0174:57 0175:77 0176:59 0177:79 0178:59 0179:5a 017b:5a 017c:7a 017d:5a 017e:7a 0180:62 0197:49 019a:6c 019f:4f 01a0:4f 01a1:6f 01ab:74 01ae:54 01af:55 01b0:75 01b6:7a 01c3:21 01cd:41 01ce:61 01cf:49 01d0:69 01d1:4f 01d2:6f 01d3:55 01d4:75 01d5:55 01d6:75 01d7:55 01d8:75 01d9:55 01da:75 01db:55 01dc:75 01de:41 01df:61 01e4:47 01e5:67 01e6:47 01e7:67 01e8:4b 01e9:6b 01ea:4f 01eb:6f 01ec:4f 01ed:6f 01f0:6a 0261:67 0278:66 02b9:27 02ba:22 02bc:27 02c4:5e 02c6:5e 02c8:27 02c9:16 02ca:2f 02cb:60 02cd:5f 02dc:7e 0300:60 0301:2f 0302:5e 0303:7e 0304:16 0305:16 0308:22 030e:22 0327:2c 0331:5f 0332:5f 037e:3b 04bb:68 0589:3a 066a:25 2000:20 2001:20 2002:20 2003:20 2004:20 2005:20 2006:20 2010:2d 2011:2d 2013:2d 2014:2d 2017:5f 2018:27 2019:27 201a:27 201c:22 201d:22 201e:22 2022:07 2024:07 2026:07 2030:25 2032:27 2035:27 2039:3c 203a:3e 203c:13 2044:2f 2070:30 2074:34 2075:35 2076:36 2077:37 2078:38 2080:30 2081:31 2083:33 2084:34 2085:35 2086:36 2087:37 2088:38 2089:39 20dd:4f 2102:43 2107:45 210a:67 210b:48 210c:48 210d:48 210e:68 2110:49 2111:49 2112:4c 2113:6c 2115:4e 2118:70 2119:50 211a:51 211b:52 211c:52 211d:52 2122:74 2124:5a 2128:5a 212a:4b 212c:42 212d:43 212e:65 212f:65 2130:45 2131:46 2133:4d 2134:6f 2190:1b 2191:18 2192:1a 2193:19 2194:1d 2195:12 21a8:17 2205:4f 2212:5f 2215:2f 2216:5c 2217:2a 221f:1c 2223:7c 2236:3a 223c:7e 22c5:07 2302:7f 2303:5e 2329:3c 232a:3e 25ac:16 25b2:1e 25ba:10 25bc:1f 25c4:11 25cb:09 25d8:08 25d9:0a 263a:01 263b:02 263c:0f 2640:0c 2642:0b 2660:06 2663:05 2665:03 2666:04 266a:0d 266b:0e 3000:20 3007:4f 3008:3c 3009:3e 301a:5b 301b:5d 30fb:07
860 (OEM - Portuguese)
00a4:0f 00a5:59 00a7:15 00a8:22 00a9:63 00ad:5f 00ae:72 00af:16 00b3:33 00b4:2f 00b6:14 00b8:2c 00b9:31 00be:33 00c4:41 00c5:41 00c6:41 00cb:45 00ce:49 00cf:49 00d0:44 00d6:4f 00d7:58 00d8:4f 00db:55 00dd:59 00de:54 00e4:61 00e5:61 00e6:61 00eb:65 00ee:69 00ef:69 00f0:64 00f6:6f 00f8:6f 00fb:75 00fd:79 00fe:74 00ff:79 0100:41 0101:61 0102:41 0103:61 0104:41 0105:61 0106:43 0107:63 0108:43 0109:63 010a:43 010b:63 010c:43 010d:63 010e:44 010f:64 0110:44 0111:64 0112:45 0113:65 0114:45 0115:65 0116:45 0117:65 0118:45 0119:65 011a:45 011b:65 011c:47 011d:67 011e:47 011f:67 0120:47 0121:67 0122:47 0123:67 0124:48 0125:68 0126:48 0127:68 0128:49 0129:69 012a:49 012b:69 012c:49 012d:69 012e:49 012f:69 0130:49 0131:69 0134:4a 0135:6a 0136:4b 0137:6b 0139:4c 013a:6c 013b:4c 013c:6c 013d:4c 013e:6c 0141:4c 0142:6c 0143:4e 0144:6e 0145:4e 0146:6e 0147:4e 0148:6e 014c:4f 014d:6f 014e:4f 014f:6f 0150:4f 0151:6f 0152:4f 0153:6f 0154:52 0155:72 0156:52 0157:72 0158:52 0159:72 015a:53 015b:73 015c:53 015d:73 015e:53 015f:73 0160:5c 0161:7c 0162:54 0163:74 0164:54 0165:74 0166:54 0167:74 0168:55 0169:75 016a:55 016b:75 016c:55 016d:75 016e:55 016f:75 0170:55 0171:75 0172:55 0173:75 0174:57 0175:77 0176:59 0177:79 0178:59 0179:5a 017b:5a 017c:7a 017d:5a 017e:7a 0180:62 0189:44 0191:46 0192:66 0197:49 019a:6c 019f:4f 01a0:4f 01a1:6f 01ab:74 01ae:54 01af:55 01b0:75 01b6:7a 01c0:7c 01c3:21 01cd:41 01ce:61 01cf:49 01d0:69 01d1:4f 01d2:6f 01d3:55 01d4:75 01d5:55 01d6:75 01d7:55 01d8:75 01d9:55 01da:75 01db:55 01dc:75 01de:41 01df:61 01e4:47 01e5:67 01e6:47 01e7:67 01e8:4b 01e9:6b 01ea:4f 01eb:6f 01ec:4f 01ed:6f 01f0:6a 0261:67 0278:66 02b9:27 02ba:22 02bc:27 02c4:5e 02c6:5e 02c8:27 02c9:16 02ca:2f 02cb:60 02cd:5f 02dc:7e 0300:60 0301:2f 0302:5e 0303:7e 0304:16 0305:16 0308:22 030e:22 0327:2c 0331:5f 0332:5f 037e:3b 04bb:68 0589:3a 066a:25 2000:20 2001:20 2002:20 2003:20 2004:20 2005:20 2006:20 2010:5f 2011:5f 2013:5f 2014:5f 2017:5f 2018:27 2019:27 201a:2c 201c:22 201d:22 201e:22 2022:07 2024:07 2026:2e 2030:25 2032:27 2035:60 2039:3c 203a:3e 203c:13 2044:2f 2070:30 2074:34 2075:35 2076:36 2077:37 2078:38 2080:30 2081:31 2083:33 2084:34 2085:35 2086:36 2087:37 2088:38 2089:39 20dd:4f 2102:43 2107:45 210a:67 210b:48 210c:48 210d:48 210e:68 2110:49 2111:49 2112:4c 2113:6c 2115:4e 2118:70 2119:50 211a:51 211b:52 211c:52 211d:52 2122:74 2124:5a 2128:5a 212a:4b 212b:41 212c:42 212d:43 212e:65 212f:65 2130:45 2131:46 2133:4d 2134:6f 2190:1b 2191:18 2192:1a 2193:19 2194:1d 2195:12 21a8:17 2205:4f 2212:5f 2215:2f 2216:5c 2217:2a 221f:1c 2223:7c 2236:3a 223c:7e 22c5:07 2302:7f 2303:5e 2329:3c 232a:3e 25ac:16 25b2:1e 25ba:10 25bc:1f 25c4:11 25cb:09 25d8:08 25d9:0a 263a:01 263b:02 263c:0f 2640:0c 2642:0b 2660:06 2663:05 2665:03 2666:04 266a:0d 266b:0e 3000:20 3007:4f 3008:3c 3009:3e 301a:5b 301b:5d 30fb:07
10079 (MAC - Icelandic)
1047 (IBM EBCDIC - Latin-1/Open System)
0004:37 0005:2d 0006:2e 0007:2f 0008:16 0009:05 000a:15 0014:3c 0015:3d 0016:32 0017:26 001a:3f 001b:27 0020:40 0021:5a 0022:7f 0023:7b 0024:5b 0025:6c 0026:50 0027:7d 0028:4d 0029:5d 002a:5c 002b:4e 002c:6b 002d:60 002e:4b 002f:61 003a:7a 003b:5e 003c:4c 003d:7e 003e:6e 003f:6f 0040:7c 005e:5f 005f:6d 0060:79 007c:4f 007f:07 0080:20 0081:21 0082:22 0083:23 0084:24 0085:25 0086:06 0087:17 0088:28 0089:29 008a:2a 008b:2b 008c:2c 008d:09 008e:0a 008f:1b 0090:30 0091:31 0092:1a 0093:33 0094:34 0095:35 0096:36 0097:08 0098:38 0099:39 009a:3a 009b:3b 009c:04 009d:14 009e:3e 00a0:41 00a2:4a 00a6:6a 00c0:64 00c1:65 00c2:62 00c3:66 00c4:63 00c5:67 00c7:68 00c8:74 00c9:71 00ca:72 00cb:73 00cc:78 00cd:75 00ce:76 00cf:77 00d1:69 00df:59 00e0:44 00e1:45 00e2:42 00e3:46 00e4:43 00e5:47 00e7:48 00e8:54 00e9:51 00ea:52 00eb:53 00ec:58 00ed:55 00ee:56 00ef:57 00f1:49 00f8:70 ff01:5a ff02:7f ff03:7b ff04:5b ff05:6c ff06:50 ff07:7d ff08:4d ff09:5d ff0a:5c ff0b:4e ff0c:6b ff0d:60 ff0e:4b ff0f:61 ff1a:7a ff1b:5e ff1c:4c ff1d:7e ff1e:6e ff20:7c ff3e:5f ff3f:6d ff40:79 ff5c:4f
1140 (IBM EBCDIC - U.S./Canada (37 + Euro))
0004:37 0005:2d 0006:2e 0007:2f 0008:16 0009:05 000a:25 0014:3c 0015:3d 0016:32 0017:26 001a:3f 001b:27 0020:40 0021:5a 0022:7f 0023:7b 0024:5b 0025:6c 0026:50 0027:7d 0028:4d 0029:5d 002a:5c 002b:4e 002c:6b 002d:60 002e:4b 002f:61 003a:7a 003b:5e 003c:4c 003d:7e 003e:6e 003f:6f 0040:7c 005f:6d 0060:79 007c:4f 007f:07 0080:20 0081:21 0082:22 0083:23 0084:24 0085:15 0086:06 0087:17 0088:28 0089:29 008a:2a 008b:2b 008c:2c 008d:09 008e:0a 008f:1b 0090:30 0091:31 0092:1a 0093:33 0094:34 0095:35 0096:36 0097:08 0098:38 0099:39 009a:3a 009b:3b 009c:04 009d:14 009e:3e 00a0:41 00a2:4a 00a6:6a 00ac:5f 00c0:64 00c1:65 00c2:62 00c3:66 00c4:63 00c5:67 00c7:68 00c8:74 00c9:71 00ca:72 00cb:73 00cc:78 00cd:75 00ce:76 00cf:77 00d1:69 00df:59 00e0:44 00e1:45 00e2:42 00e3:46 00e4:43 00e5:47 00e7:48 00e8:54 00e9:51 00ea:52 00eb:53 00ec:58 00ed:55 00ee:56 00ef:57 00f1:49 00f8:70 ff01:5a ff02:7f ff03:7b ff04:5b ff05:6c ff06:50 ff07:7d ff08:4d ff09:5d ff0a:5c ff0b:4e ff0c:6b ff0d:60 ff0e:4b ff0f:61 ff1a:7a ff1b:5e ff1c:4c ff1d:7e ff1e:6e ff20:7c ff3f:6d ff40:79 ff5c:4f
1141 (IBM EBCDIC - Germany (20273 + Euro))
0004:37 0005:2d 0006:2e 0007:2f 0008:16 0009:05 000a:25 0014:3c 0015:3d 0016:32 0017:26 001a:3f 001b:27 0020:40 0021:4f 0022:7f 0023:7b 0024:5b 0025:6c 0026:50 0027:7d 0028:4d 0029:5d 002a:5c 002b:4e 002c:6b 002d:60 002e:4b 002f:61 003a:7a 003b:5e 003c:4c 003d:7e 003e:6e 003f:6f 005b:63 005e:5f 005f:6d 0060:79 007b:43 007e:59 007f:07 0080:20 0081:21 0082:22 0083:23 0084:24 0085:15 0086:06 0087:17 0088:28 0089:29 008a:2a 008b:2b 008c:2c 008d:09 008e:0a 008f:1b 0090:30 0091:31 0092:1a 0093:33 0094:34 0095:35 0096:36 0097:08 0098:38 0099:39 009a:3a 009b:3b 009c:04 009d:14 009e:3e 00a0:41 00a7:7c 00c0:64 00c1:65 00c2:62 00c3:66 00c4:4a 00c5:67 00c7:68 00c8:74 00c9:71 00ca:72 00cb:73 00cc:78 00cd:75 00ce:76 00cf:77 00d1:69 00dc:5a 00e0:44 00e1:45 00e2:42 00e3:46 00e5:47 00e7:48 00e8:54 00e9:51 00ea:52 00eb:53 00ec:58 00ed:55 00ee:56 00ef:57 00f1:49 00f6:6a 00f8:70 ff01:4f ff02:7f ff03:7b ff04:5b ff05:6c ff06:50 ff07:7d ff08:4d ff09:5d ff0a:5c ff0b:4e ff0c:6b ff0d:60 ff0e:4b ff0f:61 ff1a:7a ff1b:5e ff1c:4c ff1d:7e ff1e:6e ff3b:63 ff3e:5f ff3f:6d ff40:79 ff5b:43 ff5e:59
1142 (IBM EBCDIC - Denmark/Norway (20277 + Euro))
0004:37 0005:2d 0006:2e 0007:2f 0008:16 0009:05 000a:25 0014:3c 0015:3d 0016:32 0017:26 001a:3f 001b:27 0020:40 0021:4f 0022:7f 0023:4a 0024:67 0025:6c 0026:50 0027:7d 0028:4d 0029:5d 002a:5c 002b:4e 002c:6b 002d:60 002e:4b 002f:61 003a:7a 003b:5e 003c:4c 003d:7e 003e:6e 003f:6f 005e:5f 005f:6d 0060:79 007d:47 007f:07 0080:20 0081:21 0082:22 0083:23 0084:24 0085:15 0086:06 0087:17 0088:28 0089:29 008a:2a 008b:2b 008c:2c 008d:09 008e:0a 008f:1b 0090:30 0091:31 0092:1a 0093:33 0094:34 0095:35 0096:36 0097:08 0098:38 0099:39 009a:3a 009b:3b 009c:04 009d:14 009e:3e 00a0:41 00a6:70 00c0:64 00c1:65 00c2:62 00c3:66 00c4:63 00c5:5b 00c6:7b 00c7:68 00c8:74 00c9:71 00ca:72 00cb:73 00cc:78 00cd:75 00ce:76 00cf:77 00d1:69 00d8:7c 00df:59 00e0:44 00e1:45 00e2:42 00e3:46 00e4:43 00e7:48 00e8:54 00e9:51 00ea:52 00eb:53 00ec:58 00ed:55 00ee:56 00ef:57 00f1:49 00f8:6a 20ac:5a ff01:4f ff02:7f ff03:4a ff04:67 ff05:6c ff06:50 ff07:7d ff08:4d ff09:5d ff0a:5c ff0b:4e ff0c:6b ff0d:60 ff0e:4b ff0f:61 ff1a:7a ff1b:5e ff1c:4c ff1d:7e ff1e:6e ff3e:5f ff3f:6d ff40:79 ff5d:47
1143 (IBM EBCDIC - Finland/Sweden (20278 + Euro))
0004:37 0005:2d 0006:2e 0007:2f 0008:16 0009:05 000a:25 0014:3c 0015:3d 0016:32 0017:26 001a:3f 001b:27 0020:40 0021:4f 0022:7f 0023:63 0024:67 0025:6c 0026:50 0027:7d 0028:4d 0029:5d 002a:5c 002b:4e 002c:6b 002d:60 002e:4b 002f:61 003a:7a 003b:5e 003c:4c 003d:7e 003e:6e 003f:6f 005c:71 005e:5f 005f:6d 0060:51 007b:43 007d:47 007f:07 0080:20 0081:21 0082:22 0083:23 0084:24 0085:15 0086:06 0087:17 0088:28 0089:29 008a:2a 008b:2b 008c:2c 008d:09 008e:0a 008f:1b 0090:30 0091:31 0092:1a 0093:33 0094:34 0095:35 0096:36 0097:08 0098:38 0099:39 009a:3a 009b:3b 009c:04 009d:14 009e:3e 00a0:41 00a7:4a 00c0:64 00c1:65 00c2:62 00c3:66 00c4:7b 00c5:5b 00c7:68 00c8:74 00ca:72 00cb:73 00cc:78 00cd:75 00ce:76 00cf:77 00d1:69 00d6:7c 00df:59 00e0:44 00e1:45 00e2:42 00e3:46 00e7:48 00e8:54 00e9:79 00ea:52 00eb:53 00ec:58 00ed:55 00ee:56 00ef:57 00f1:49 00f6:6a 00f8:70 20ac:5a ff01:4f ff02:7f ff03:63 ff04:67 ff05:6c ff06:50 ff07:7d ff08:4d ff09:5d ff0a:5c ff0b:4e ff0c:6b ff0d:60 ff0e:4b ff0f:61 ff1a:7a ff1b:5e ff1c:4c ff1d:7e ff1e:6e ff3c:71 ff3e:5f ff3f:6d ff40:51 ff5b:43 ff5d:47
1144 (IBM EBCDIC - Italy (20280 + Euro))
0004:37 0005:2d 0006:2e 0007:2f 0008:16 0009:05 000a:25 0014:3c 0015:3d 0016:32 0017:26 001a:3f 001b:27 0020:40 0021:4f 0022:7f 0024:5b 0025:6c 0026:50 0027:7d 0028:4d 0029:5d 002a:5c 002b:4e 002c:6b 002d:60 002e:4b 002f:61 003a:7a 003b:5e 003c:4c 003d:7e 003e:6e 003f:6f 005c:48 005d:51 005e:5f 005f:6d 007b:44 007d:54 007e:58 007f:07 0080:20 0081:21 0082:22 0083:23 0084:24 0085:15 0086:06 0087:17 0088:28 0089:29 008a:2a 008b:2b 008c:2c 008d:09 008e:0a 008f:1b 0090:30 0091:31 0092:1a 0093:33 0094:34 0095:35 0096:36 0097:08 0098:38 0099:39 009a:3a 009b:3b 009c:04 009d:14 009e:3e 00a0:41 00a3:7b 00a7:7c 00b0:4a 00c0:64 00c1:65 00c2:62 00c3:66 00c4:63 00c5:67 00c7:68 00c8:74 00c9:71 00ca:72 00cb:73 00cc:78 00cd:75 00ce:76 00cf:77 00d1:69 00df:59 00e1:45 00e2:42 00e3:46 00e4:43 00e5:47 00e9:5a 00ea:52 00eb:53 00ed:55 00ee:56 00ef:57 00f1:49 00f2:6a 00f8:70 00f9:79 ff01:4f ff02:7f ff04:5b ff05:6c ff06:50 ff07:7d ff08:4d ff09:5d ff0a:5c ff0b:4e ff0c:6b ff0d:60 ff0e:4b ff0f:61 ff1a:7a ff1b:5e ff1c:4c ff1d:7e ff1e:6e ff3c:48 ff3d:51 ff3e:5f ff3f:6d ff5b:44 ff5d:54 ff5e:58
1145 (IBM EBCDIC - Latin America/Spain (20284 + Euro))
0004:37 0005:2d 0006:2e 0007:2f 0008:16 0009:05 000a:25 0014:3c 0015:3d 0016:32 0017:26 001a:3f 001b:27 0020:40 0022:7f 0023:69 0024:5b 0025:6c 0026:50 0027:7d 0028:4d 0029:5d 002a:5c 002b:4e 002c:6b 002d:60 002e:4b 002f:61 003a:7a 003b:5e 003c:4c 003d:7e 003e:6e 003f:6f 0040:7c 005b:4a 005d:5a 005f:6d 0060:79 007c:4f 007f:07 0080:20 0081:21 0082:22 0083:23 0084:24 0085:15 0086:06 0087:17 0088:28 0089:29 008a:2a 008b:2b 008c:2c 008d:09 008e:0a 008f:1b 0090:30 0091:31 0092:1a 0093:33 0094:34 0095:35 0096:36 0097:08 0098:38 0099:39 009a:3a 009b:3b 009c:04 009d:14 009e:3e 00a0:41 00a6:49 00ac:5f 00c0:64 00c1:65 00c2:62 00c3:66 00c4:63 00c5:67 00c7:68 00c8:74 00c9:71 00ca:72 00cb:73 00cc:78 00cd:75 00ce:76 00cf:77 00d1:7b 00df:59 00e0:44 00e1:45 00e2:42 00e3:46 00e4:43 00e5:47 00e7:48 00e8:54 00e9:51 00ea:52 00eb:53 00ec:58 00ed:55 00ee:56 00ef:57 00f1:6a 00f8:70 ff02:7f ff03:69 ff04:5b ff05:6c ff06:50 ff07:7d ff08:4d ff09:5d ff0a:5c ff0b:4e ff0c:6b ff0d:60 ff0e:4b ff0f:61 ff1a:7a ff1b:5e ff1c:4c ff1d:7e ff1e:6e ff20:7c ff3b:4a ff3d:5a ff3f:6d ff40:79 ff5c:4f
1146 (IBM EBCDIC - United Kingdom (20285 + Euro))
0004:37 0005:2d 0006:2e 0007:2f 0008:16 0009:05 000a:25 0014:3c 0015:3d 0016:32 0017:26 001a:3f 001b:27 0020:40 0021:5a 0022:7f 0023:7b 0024:4a 0025:6c 0026:50 0027:7d 0028:4d 0029:5d 002a:5c 002b:4e 002c:6b 002d:60 002e:4b 002f:61 003a:7a 003b:5e 003c:4c 003d:7e 003e:6e 003f:6f 0040:7c 005f:6d 0060:79 007c:4f 007f:07 0080:20 0081:21 0082:22 0083:23 0084:24 0085:15 0086:06 0087:17 0088:28 0089:29 008a:2a 008b:2b 008c:2c 008d:09 008e:0a 008f:1b 0090:30 0091:31 0092:1a 0093:33 0094:34 0095:35 0096:36 0097:08 0098:38 0099:39 009a:3a 009b:3b 009c:04 009d:14 009e:3e 00a0:41 00a3:5b 00a6:6a 00ac:5f 00c0:64 00c1:65 00c2:62 00c3:66 00c4:63 00c5:67 00c7:68 00c8:74 00c9:71 00ca:72 00cb:73 00cc:78 00cd:75 00ce:76 00cf:77 00d1:69 00df:59 00e0:44 00e1:45 00e2:42 00e3:46 00e4:43 00e5:47 00e7:48 00e8:54 00e9:51 00ea:52 00eb:53 00ec:58 00ed:55 00ee:56 00ef:57 00f1:49 00f8:70 ff01:5a ff02:7f ff03:7b ff04:4a ff05:6c ff06:50 ff07:7d ff08:4d ff09:5d ff0a:5c ff0b:4e ff0c:6b ff0d:60 ff0e:4b ff0f:61 ff1a:7a ff1b:5e ff1c:4c ff1d:7e ff1e:6e ff20:7c ff3f:6d ff40:79 ff5c:4f
0004:37 0005:2d 0006:2e 0007:2f 0008:16 0009:05 000a:25 0014:3c 0015:3d 0016:32 0017:26 001a:3f 001b:27 0020:40 0021:4f 0022:7f 0024:5b 0025:6c 0026:50 0027:7d 0028:4d 0029:5d 002a:5c 002b:4e 002c:6b 002d:60 002e:4b 002f:61 003a:7a 003b:5e 003c:4c 003d:7e 003e:6e 003f:6f 0040:44 005c:48 005e:5f 005f:6d 007b:51 007d:54 007f:07 0080:20 0081:21 0082:22 0083:23 0084:24 0085:15 0086:06 0087:17 0088:28 0089:29 008a:2a 008b:2b 008c:2c 008d:09 008e:0a 008f:1b 0090:30 0091:31 0092:1a 0093:33 0094:34 0095:35 0096:36 0097:08 0098:38 0099:39 009a:3a 009b:3b 009c:04 009d:14 009e:3e 00a0:41 00a3:7b 00a7:5a 00b0:4a 00b5:79 00c0:64 00c1:65 00c2:62 00c3:66 00c4:63 00c5:67 00c7:68 00c8:74 00c9:71 00ca:72 00cb:73 00cc:78 00cd:75 00ce:76 00cf:77 00d1:69 00df:59 00e0:7c 00e1:45 00e2:42 00e3:46 00e4:43 00e5:47 00ea:52 00eb:53 00ec:58 00ed:55 00ee:56 00ef:57 00f1:49 00f8:70 00f9:6a ff01:4f ff02:7f ff04:5b ff05:6c ff06:50 ff07:7d ff08:4d ff09:5d ff0a:5c ff0b:4e ff0c:6b ff0d:60 ff0e:4b ff0f:61 ff1a:7a ff1b:5e ff1c:4c ff1d:7e ff1e:6e ff20:44 ff3c:48 ff3e:5f ff3f:6d ff5b:51 ff5d:54
1148 (IBM EBCDIC - International (500 + Euro))
0004:37 0005:2d 0006:2e 0007:2f 0008:16 0009:05 000a:25 0014:3c 0015:3d 0016:32 0017:26 001a:3f 001b:27 0020:40 0021:4f 0022:7f 0023:7b 0024:5b 0025:6c 0026:50 0027:7d 0028:4d 0029:5d 002a:5c 002b:4e 002c:6b 002d:60 002e:4b 002f:61 003a:7a 003b:5e 003c:4c 003d:7e 003e:6e 003f:6f 0040:7c 005b:4a 005d:5a 005e:5f 005f:6d 0060:79 007f:07 0080:20 0081:21 0082:22 0083:23 0084:24 0085:15 0086:06 0087:17 0088:28 0089:29 008a:2a 008b:2b 008c:2c 008d:09 008e:0a 008f:1b 0090:30 0091:31 0092:1a 0093:33 0094:34 0095:35 0096:36 0097:08 0098:38 0099:39 009a:3a 009b:3b 009c:04 009d:14 009e:3e 00a0:41 00a6:6a 00c0:64 00c1:65 00c2:62 00c3:66 00c4:63 00c5:67 00c7:68 00c8:74 00c9:71 00ca:72 00cb:73 00cc:78 00cd:75 00ce:76 00cf:77 00d1:69 00df:59 00e0:44 00e1:45 00e2:42 00e3:46 00e4:43 00e5:47 00e7:48 00e8:54 00e9:51 00ea:52 00eb:53 00ec:58 00ed:55 00ee:56 00ef:57 00f1:49 00f8:70 ff01:4f ff02:7f ff03:7b ff04:5b ff05:6c ff06:50 ff07:7d ff08:4d ff09:5d ff0a:5c ff0b:4e ff0c:6b ff0d:60 ff0e:4b ff0f:61 ff1a:7a ff1b:5e ff1c:4c ff1d:7e ff1e:6e ff20:7c ff3b:4a ff3d:5a ff3e:5f ff3f:6d ff40:79
1149 (IBM EBCDIC - Icelandic (20871 + Euro))
0004:37 0005:2d 0006:2e 0007:2f 0008:16 0009:05 000a:25 0014:3c 0015:3d 0016:32 0017:26 001a:3f 001b:27 0020:40 0021:4f 0022:7f 0023:7b 0024:5b 0025:6c 0026:50 0027:7d 0028:4d 0029:5d 002a:5c 002b:4e 002c:6b 002d:60 002e:4b 002f:61 003a:7a 003b:5e 003c:4c 003d:7e 003e:6e 003f:6f 005f:6d 007f:07 0080:20 0081:21 0082:22 0083:23 0084:24 0085:15 0086:06 0087:17 0088:28 0089:29 008a:2a 008b:2b 008c:2c 008d:09 008e:0a 008f:1b 0090:30 0091:31 0092:1a 0093:33 0094:34 0095:35 0096:36 0097:08 0098:38 0099:39 009a:3a 009b:3b 009c:04 009d:14 009e:3e 00a0:41 00a6:6a 00c0:64 00c1:65 00c2:62 00c3:66 00c4:63 00c5:67 00c6:5a 00c7:68 00c8:74 00c9:71 00ca:72 00cb:73 00cc:78 00cd:75 00ce:76 00cf:77 00d0:7c 00d1:69 00d6:5f 00de:4a 00df:59 00e0:44 00e1:45 00e2:42 00e3:46 00e4:43 00e5:47 00e7:48 00e8:54 00e9:51 00ea:52 00eb:53 00ec:58 00ed:55 00ee:56 00ef:57 00f0:79 00f1:49 00f8:70 ff01:4f ff02:7f ff03:7b ff04:5b ff05:6c ff06:50 ff07:7d ff08:4d ff09:5d ff0a:5c ff0b:4e ff0c:6b ff0d:60 ff0e:4b ff0f:61 ff1a:7a ff1b:5e ff1c:4c ff1d:7e ff1e:6e ff3f:6d
20277 (IBM EBCDIC - Denmark/Norway)
0004:37 0005:2d 0006:2e 0007:2f 0008:16 0009:05 000a:25 0014:3c 0015:3d 0016:32 0017:26 001a:3f 001b:27 0020:40 0021:4f 0022:7f 0023:4a 0024:67 0025:6c 0026:50 0027:7d 0028:4d 0029:5d 002a:5c 002b:4e 002c:6b 002d:60 002e:4b 002f:61 003a:7a 003b:5e 003c:4c 003d:7e 003e:6e 003f:6f 005e:5f 005f:6d 0060:79 007d:47 007f:07 0080:20 0081:21 0082:22 0083:23 0084:24 0085:15 0086:06 0087:17 0088:28 0089:29 008a:2a 008b:2b 008c:2c 008d:09 008e:0a 008f:1b 0090:30 0091:31 0092:1a 0093:33 0094:34 0095:35 0096:36 0097:08 0098:38 0099:39 009a:3a 009b:3b 009c:04 009d:14 009e:3e 00a0:41 00a4:5a 00a6:70 00c0:64 00c1:65 00c2:62 00c3:66 00c4:63 00c5:5b 00c6:7b 00c7:68 00c8:74 00c9:71 00ca:72 00cb:73 00cc:78 00cd:75 00ce:76 00cf:77 00d1:69 00d8:7c 00df:59 00e0:44 00e1:45 00e2:42 00e3:46 00e4:43 00e7:48 00e8:54 00e9:51 00ea:52 00eb:53 00ec:58 00ed:55 00ee:56 00ef:57 00f1:49 00f8:6a ff01:4f ff02:7f ff03:4a ff04:67 ff05:6c ff06:50 ff07:7d ff08:4d ff09:5d ff0a:5c ff0b:4e ff0c:6b ff0d:60 ff0e:4b ff0f:61 ff1a:7a ff1b:5e ff1c:4c ff1d:7e ff1e:6e ff3e:5f ff3f:6d ff40:79 ff5d:47
20278 (IBM EBCDIC - Finland/Sweden)
0004:37 0005:2d 0006:2e 0007:2f 0008:16 0009:05 000a:25 0014:3c 0015:3d 0016:32 0017:26 001a:3f 001b:27 0020:40 0021:4f 0022:7f 0023:63 0024:67 0025:6c 0026:50 0027:7d 0028:4d 0029:5d 002a:5c 002b:4e 002c:6b 002d:60 002e:4b 002f:61 003a:7a 003b:5e 003c:4c 003d:7e 003e:6e 003f:6f 005c:71 005e:5f 005f:6d 0060:51 007b:43 007d:47 007f:07 0080:20 0081:21 0082:22 0083:23 0084:24 0085:15 0086:06 0087:17 0088:28 0089:29 008a:2a 008b:2b 008c:2c 008d:09 008e:0a 008f:1b 0090:30 0091:31 0092:1a 0093:33 0094:34 0095:35 0096:36 0097:08 0098:38 0099:39 009a:3a 009b:3b 009c:04 009d:14 009e:3e 00a0:41 00a4:5a 00a7:4a 00c0:64 00c1:65 00c2:62 00c3:66 00c4:7b 00c5:5b 00c7:68 00c8:74 00ca:72 00cb:73 00cc:78 00cd:75 00ce:76 00cf:77 00d1:69 00d6:7c 00df:59 00e0:44 00e1:45 00e2:42 00e3:46 00e7:48 00e8:54 00e9:79 00ea:52 00eb:53 00ec:58 00ed:55 00ee:56 00ef:57 00f1:49 00f6:6a 00f8:70 ff01:4f ff02:7f ff03:63 ff04:67 ff05:6c ff06:50 ff07:7d ff08:4d ff09:5d ff0a:5c ff0b:4e ff0c:6b ff0d:60 ff0e:4b ff0f:61 ff1a:7a ff1b:5e ff1c:4c ff1d:7e ff1e:6e ff3c:71 ff3e:5f ff3f:6d ff40:51 ff5b:43 ff5d:47
20280 (IBM EBCDIC - Italy)
0004:37 0005:2d 0006:2e 0007:2f 0008:16 0009:05 000a:25 0014:3c 0015:3d 0016:32 0017:26 001a:3f 001b:27 0020:40 0021:4f 0022:7f 0024:5b 0025:6c 0026:50 0027:7d 0028:4d 0029:5d 002a:5c 002b:4e 002c:6b 002d:60 002e:4b 002f:61 003a:7a 003b:5e 003c:4c 003d:7e 003e:6e 003f:6f 005c:48 005d:51 005e:5f 005f:6d 007b:44 007d:54 007e:58 007f:07 0080:20 0081:21 0082:22 0083:23 0084:24 0085:15 0086:06 0087:17 0088:28 0089:29 008a:2a 008b:2b 008c:2c 008d:09 008e:0a 008f:1b 0090:30 0091:31 0092:1a 0093:33 0094:34 0095:35 0096:36 0097:08 0098:38 0099:39 009a:3a 009b:3b 009c:04 009d:14 009e:3e 00a0:41 00a3:7b 00a7:7c 00b0:4a 00c0:64 00c1:65 00c2:62 00c3:66 00c4:63 00c5:67 00c7:68 00c8:74 00c9:71 00ca:72 00cb:73 00cc:78 00cd:75 00ce:76 00cf:77 00d1:69 00df:59 00e1:45 00e2:42 00e3:46 00e4:43 00e5:47 00e9:5a 00ea:52 00eb:53 00ed:55 00ee:56 00ef:57 00f1:49 00f2:6a 00f8:70 00f9:79 ff01:4f ff02:7f ff04:5b ff05:6c ff06:50 ff07:7d ff08:4d ff09:5d ff0a:5c ff0b:4e ff0c:6b ff0d:60 ff0e:4b ff0f:61 ff1a:7a ff1b:5e ff1c:4c ff1d:7e ff1e:6e ff3c:48 ff3d:51 ff3e:5f ff3f:6d ff5b:44 ff5d:54 ff5e:58
20284 (IBM EBCDIC - Latin America/Spain)
0004:37 0005:2d 0006:2e 0007:2f 0008:16 0009:05 000a:25 0014:3c 0015:3d 0016:32 0017:26 001a:3f 001b:27 0020:40 0022:7f 0023:69 0024:5b 0025:6c 0026:50 0027:7d 0028:4d 0029:5d 002a:5c 002b:4e 002c:6b 002d:60 002e:4b 002f:61 003a:7a 003b:5e 003c:4c 003d:7e 003e:6e 003f:6f 0040:7c 005b:4a 005d:5a 005f:6d 0060:79 007c:4f 007f:07 0080:20 0081:21 0082:22 0083:23 0084:24 0085:15 0086:06 0087:17 0088:28 0089:29 008a:2a 008b:2b 008c:2c 008d:09 008e:0a 008f:1b 0090:30 0091:31 0092:1a 0093:33 0094:34 0095:35 0096:36 0097:08 0098:38 0099:39 009a:3a 009b:3b 009c:04 009d:14 009e:3e 00a0:41 00a6:49 00ac:5f 00c0:64 00c1:65 00c2:62 00c3:66 00c4:63 00c5:67 00c7:68 00c8:74 00c9:71 00ca:72 00cb:73 00cc:78 00cd:75 00ce:76 00cf:77 00d1:7b 00df:59 00e0:44 00e1:45 00e2:42 00e3:46 00e4:43 00e5:47 00e7:48 00e8:54 00e9:51 00ea:52 00eb:53 00ec:58 00ed:55 00ee:56 00ef:57 00f1:6a 00f8:70 ff02:7f ff03:69 ff04:5b ff05:6c ff06:50 ff07:7d ff08:4d ff09:5d ff0a:5c ff0b:4e ff0c:6b ff0d:60 ff0e:4b ff0f:61 ff1a:7a ff1b:5e ff1c:4c ff1d:7e ff1e:6e ff20:7c ff3b:4a ff3d:5a ff3f:6d ff40:79 ff5c:4f
20297 (IBM EBCDIC - France)
0004:37 0005:2d 0006:2e 0007:2f 0008:16 0009:05 000a:25 0014:3c 0015:3d 0016:32 0017:26 001a:3f 001b:27 0020:40 0021:4f 0022:7f 0024:5b 0025:6c 0026:50 0027:7d 0028:4d 0029:5d 002a:5c 002b:4e 002c:6b 002d:60 002e:4b 002f:61 003a:7a 003b:5e 003c:4c 003d:7e 003e:6e 003f:6f 0040:44 005c:48 005e:5f 005f:6d 007b:51 007d:54 007f:07 0080:20 0081:21 0082:22 0083:23 0084:24 0085:15 0086:06 0087:17 0088:28 0089:29 008a:2a 008b:2b 008c:2c 008d:09 008e:0a 008f:1b 0090:30 0091:31 0092:1a 0093:33 0094:34 0095:35 0096:36 0097:08 0098:38 0099:39 009a:3a 009b:3b 009c:04 009d:14 009e:3e 00a0:41 00a3:7b 00a7:5a 00b0:4a 00b5:79 00c0:64 00c1:65 00c2:62 00c3:66 00c4:63 00c5:67 00c7:68 00c8:74 00c9:71 00ca:72 00cb:73 00cc:78 00cd:75 00ce:76 00cf:77 00d1:69 00df:59 00e0:7c 00e1:45 00e2:42 00e3:46 00e4:43 00e5:47 00ea:52 00eb:53 00ec:58 00ed:55 00ee:56 00ef:57 00f1:49 00f8:70 00f9:6a ff01:4f ff02:7f ff04:5b ff05:6c ff06:50 ff07:7d ff08:4d ff09:5d ff0a:5c ff0b:4e ff0c:6b ff0d:60 ff0e:4b ff0f:61 ff1a:7a ff1b:5e ff1c:4c ff1d:7e ff1e:6e ff20:44 ff3c:48 ff3e:5f ff3f:6d ff5b:51 ff5d:54
20871 (IBM EBCDIC - Icelandic)
0004:37 0005:2d 0006:2e 0007:2f 0008:16 0009:05 000a:25 0014:3c 0015:3d 0016:32 0017:26 001a:3f 001b:27 0020:40 0021:4f 0022:7f 0023:7b 0024:5b 0025:6c 0026:50 0027:7d 0028:4d 0029:5d 002a:5c 002b:4e 002c:6b 002d:60 002e:4b 002f:61 003a:7a 003b:5e 003c:4c 003d:7e 003e:6e 003f:6f 005f:6d 007f:07 0080:20 0081:21 0082:22 0083:23 0084:24 0085:15 0086:06 0087:17 0088:28 0089:29 008a:2a 008b:2b 008c:2c 008d:09 008e:0a 008f:1b 0090:30 0091:31 0092:1a 0093:33 0094:34 0095:35 0096:36 0097:08 0098:38 0099:39 009a:3a 009b:3b 009c:04 009d:14 009e:3e 00a0:41 00a6:6a 00c0:64 00c1:65 00c2:62 00c3:66 00c4:63 00c5:67 00c6:5a 00c7:68 00c8:74 00c9:71 00ca:72 00cb:73 00cc:78 00cd:75 00ce:76 00cf:77 00d0:7c 00d1:69 00d6:5f 00de:4a 00df:59 00e0:44 00e1:45 00e2:42 00e3:46 00e4:43 00e5:47 00e7:48 00e8:54 00e9:51 00ea:52 00eb:53 00ec:58 00ed:55 00ee:56 00ef:57 00f0:79 00f1:49 00f8:70 ff01:4f ff02:7f ff03:7b ff04:5b ff05:6c ff06:50 ff07:7d ff08:4d ff09:5d ff0a:5c ff0b:4e ff0c:6b ff0d:60 ff0e:4b ff0f:61 ff1a:7a ff1b:5e ff1c:4c ff1d:7e ff1e:6e ff3f:6d
20924 (IBM EBCDIC - Latin-1/Open System (1047 + Euro))
0004:37 0005:2d 0006:2e 0007:2f 0008:16 0009:05 000a:15 0014:3c 0015:3d 0016:32 0017:26 001a:3f 001b:27 0020:40 0021:5a 0022:7f 0023:7b 0024:5b 0025:6c 0026:50 0027:7d 0028:4d 0029:5d 002a:5c 002b:4e 002c:6b 002d:60 002e:4b 002f:61 003a:7a 003b:5e 003c:4c 003d:7e 003e:6e 003f:6f 0040:7c 005e:5f 005f:6d 0060:79 007c:4f 007f:07 0080:20 0081:21 0082:22 0083:23 0084:24 0085:25 0086:06 0087:17 0088:28 0089:29 008a:2a 008b:2b 008c:2c 008d:09 008e:0a 008f:1b 0090:30 0091:31 0092:1a 0093:33 0094:34 0095:35 0096:36 0097:08 0098:38 0099:39 009a:3a 009b:3b 009c:04 009d:14 009e:3e 00a0:41 00c0:64 00c1:65 00c2:62 00c3:66 00c4:63 00c5:67 00c7:68 00c8:74 00c9:71 00ca:72 00cb:73 00cc:78 00cd:75 00ce:76 00cf:77 00d1:69 00dd:4a 00df:59 00e0:44 00e1:45 00e2:42 00e3:46 00e4:43 00e5:47 00e7:48 00e8:54 00e9:51 00ea:52 00eb:53 00ec:58 00ed:55 00ee:56 00ef:57 00f1:49 00f8:70 0160:6a ff01:5a ff02:7f ff03:7b ff04:5b ff05:6c ff06:50 ff07:7d ff08:4d ff09:5d ff0a:5c ff0b:4e ff0c:6b ff0d:60 ff0e:4b ff0f:61 ff1a:7a ff1b:5e ff1c:4c ff1d:7e ff1e:6e ff20:7c ff3e:5f ff3f:6d ff40:79 ff5c:4f
28599 (ISO 8859-9 Latin 5)
00d0:44 00dd:59 00fd:79 0100:41 0101:61 0102:41 0103:61 0104:41 0105:61 0106:43 0107:63 0108:43 0109:63 010a:43 010b:63 010c:43 010d:63 010e:44 010f:64 0110:44 0111:64 0112:45 0113:65 0114:45 0115:65 0116:45 0117:65 0118:45 0119:65 011a:45 011b:65 011c:47 011d:67 0120:47 0121:67 0122:47 0123:67 0124:48 0125:68 0126:48 0127:68 0128:49 0129:69 012a:49 012b:69 012c:49 012d:69 012e:49 012f:69 0134:4a 0135:6a 0136:4b 0137:6b 0139:4c 013a:6c 013b:4c 013c:6c 013d:4c 013e:6c 0141:4c 0142:6c 0143:4e 0144:6e 0145:4e 0146:6e 0147:4e 0148:6e 014c:4f 014d:6f 014e:4f 014f:6f 0150:4f 0151:6f 0152:4f 0153:6f 0154:52 0155:72 0156:52 0157:72 0158:52 0159:72 015a:53 015b:73 015c:53 015d:73 0160:53 0161:73 0162:54 0163:74 0164:54 0165:74 0166:54 0167:74 0168:55 0169:75 016a:55 016b:75 016c:55 016d:75 016e:55 016f:75 0170:55 0171:75 0172:55 0173:75 0174:57 0175:77 0176:59 0177:79 0178:59 0179:5a 017b:5a 017c:7a 017d:5a 017e:7a 0180:62 0189:44 0191:46 0192:66 0197:49 019a:6c 019f:4f 01a0:4f 01a1:6f 01ab:74 01ae:54 01af:55 01b0:75 01b6:7a 01cd:41 01ce:61 01cf:49 01d0:69 01d1:4f 01d2:6f 01d3:55 01d4:75 01d5:55 01d6:75 01d7:55 01d8:75 01d9:55 01da:75 01db:55 01dc:75 01de:41 01df:61 01e4:47 01e5:67 01e6:47 01e7:67 01e8:4b 01e9:6b 01ea:4f 01eb:6f 01ec:4f 01ed:6f 01f0:6a 0261:67 02b9:27 02ba:22 02bc:27 02c4:5e 02c6:5e 02c8:27 02cb:60 02cd:5f 02dc:7e 0300:60 0302:5e 0303:7e 030e:22 0331:5f 0332:5f 2000:20 2001:20 2002:20 2003:20 2004:20 2005:20 2006:20 2010:2d 2011:2d 2013:2d 2014:2d 2018:27 2019:27 201a:2c 201c:22 201d:22 201e:22 2022:2e 2026:2e 2032:27 2035:60 2039:3c 203a:3e 2122:54 ff01:21 ff02:22 ff03:23 ff04:24 ff05:25 ff06:26 ff07:27 ff08:28 ff09:29 ff0a:2a ff0b:2b ff0c:2c ff0d:2d ff0e:2e ff0f:2f ff10:30 ff11:31 ff12:32 ff13:33 ff14:34 ff15:35 ff16:36 ff17:37 ff18:38 ff19:39 ff1a:3a ff1b:3b ff1c:3c ff1d:3d ff1e:3e ff20:40 ff21:41 ff22:42 ff23:43 ff24:44 ff25:45 ff26:46 ff27:47 ff28:48 ff29:49 ff2a:4a ff2b:4b ff2c:4c ff2d:4d ff2e:4e ff2f:4f ff30:50 ff31:51 ff32:52 ff33:53 ff34:54 ff35:55 ff36:56 ff37:57 ff38:58 ff39:59 ff3a:5a ff3b:5b ff3c:5c ff3d:5d ff3e:5e ff3f:5f ff40:60 ff41:61 ff42:62 ff43:63 ff44:64 ff45:65 ff46:66 ff47:67 ff48:68 ff49:69 ff4a:6a ff4b:6b ff4c:6c ff4d:6d ff4e:6e ff4f:6f ff50:70 ff51:71 ff52:72 ff53:73 ff54:74 ff55:75 ff56:76 ff57:77 ff58:78 ff59:79 ff5a:7a ff5b:7b ff5c:7c ff5d:7d ff5e:7e
28605 (ISO 8859-15 Latin 9)
00a6:7c 0100:41 0101:61 0102:41 0103:61 0104:41 0105:61 0106:43 0107:63 0108:43 0109:63 010a:43 010b:63 010c:43 010d:63 010e:44 010f:64 0112:45 0113:65 0114:45 0115:65 0116:45 0117:65 0118:45 0119:65 011a:45 011b:65 011c:47 011d:67 011e:47 011f:67 0120:47 0121:67 0122:47 0123:67 0124:48 0125:68 0126:48 0127:68 0128:49 0129:69 012a:49 012b:69 012c:49 012d:69 012e:49 012f:69 0130:49 0131:69 0134:4a 0135:6a 0136:4b 0137:6b 0138:6b 0139:4c 013a:6c 013b:4c 013c:6c 013d:4c 013e:6c 0141:4c 0142:6c 0143:4e 0144:6e 0145:4e 0146:6e 0147:4e 0148:6e 014a:4e 014b:6e 014c:4f 014d:6f 014e:4f 014f:6f 0150:4f 0151:6f 0154:52 0155:72 0156:52 0157:72 0158:52 0159:72 015a:53 015b:73 015c:53 015d:73 015e:53 015f:73 0162:54 0163:74 0164:54 0165:74 0166:54 0167:74 0168:54 0169:74 016a:55 016b:75 016c:55 016d:75 016e:55 016f:75 0170:55 0171:75 0172:55 0173:75 0174:57 0175:77 0176:59 0177:79 0179:5a 017b:5a 017c:7a 0180:62 0189:44 0191:46 0192:66 0197:49 019a:6c 019f:4f 01a0:4f 01a1:6f 01ab:74 01ae:54 01af:55 01b0:75 01b6:7a 01cd:41 01ce:61 01cf:49 01d0:69 01d1:4f 01d2:6f 01d3:55 01d4:75 01d5:55 01d6:75 01d7:55 01d8:75 01d9:55 01da:75 01db:55 01dc:75 01de:41 01df:61 01e4:47 01e5:67 01e6:47 01e7:67 01e8:4b 01e9:6b 01ea:4f 01eb:6f 01ec:4f 01ed:6f 01f0:6a 0261:67 02b9:27 02ba:22 02bc:27 02c4:5e 02c6:5e 02c8:27 02cb:60 02cd:5f 02dc:7e 0300:60 0302:5e 0303:7e 030e:22 0331:5f 0332:5f 2000:20 2001:20 2002:20 2003:20 2004:20 2005:20 2006:20 2010:2d 2011:2d 2013:2d 2014:2d 2018:27 2019:27 201a:2c 201c:22 201d:22 201e:22 2022:2e 2026:2e 2032:27 2035:60 2039:3c 203a:3e 2122:54 ff01:21 ff02:22 ff03:23 ff04:24 ff05:25 ff06:26 ff07:27 ff08:28 ff09:29 ff0a:2a ff0b:2b ff0c:2c ff0d:2d ff0e:2e ff0f:2f ff10:30 ff11:31 ff12:32 ff13:33 ff14:34 ff15:35 ff16:36 ff17:37 ff18:38 ff19:39 ff1a:3a ff1b:3b ff1c:3c ff1d:3d ff1e:3e ff20:40 ff21:41 ff22:42 ff23:43 ff24:44 ff25:45 ff26:46 ff27:47 ff28:48 ff29:49 ff2a:4a ff2b:4b ff2c:4c ff2d:4d ff2e:4e ff2f:4f ff30:50 ff31:51 ff32:52 ff33:53 ff34:54 ff35:55 ff36:56 ff37:57 ff38:58 ff39:59 ff3a:5a ff3b:5b ff3c:5c ff3d:5d ff3e:5e ff3f:5f ff40:60 ff41:61 ff42:62 ff43:63 ff44:64 ff45:65 ff46:66 ff47:67 ff48:68 ff49:69 ff4a:6a ff4b:6b ff4c:6c ff4d:6d ff4e:6e ff4f:6f ff50:70 ff51:71 ff52:72 ff53:73 ff54:74 ff55:75 ff56:76 ff57:77 ff58:78 ff59:79 ff5a:7a ff5b:7b ff5c:7c ff5d:7d ff5e:7e
870 (IBM EBCDIC - Multilingual/ROECE (Latin-2))
0004:37 0005:2d 0006:2e 0007:2f 0008:16 0009:05 000a:25 0014:3c 0015:3d 0016:32 0017:26 001a:3f 001b:27 0020:40 0021:4f 0022:7f 0023:7b 0024:5b 0025:6c 0026:50 0027:7d 0028:4d 0029:5d 002a:5c 002b:4e 002c:6b 002d:60 002e:4b 002f:61 003a:7a 003b:5e 003c:4c 003d:7e 003e:6e 003f:6f 0040:7c 005b:4a 005d:5a 005e:5f 005f:6d 0060:79 007c:6a 007f:07 0080:20 0081:21 0082:22 0083:23 0084:24 0085:15 0086:06 0087:17 0088:28 0089:29 008a:2a 008b:2b 008c:2c 008d:09 008e:0a 008f:1b 0090:30 0091:31 0092:1a 0093:33 0094:34 0095:35 0096:36 0097:08 0098:38 0099:39 009a:3a 009b:3b 009c:04 009d:14 009e:3e 00a0:41 00c1:65 00c2:62 00c4:63 00c7:68 00c9:71 00cb:73 00cd:75 00ce:76 00df:59 00e1:45 00e2:42 00e4:43 00e7:48 00e9:51 00eb:53 00ed:55 00ee:56 0102:66 0103:46 0106:69 0107:49 010c:67 010d:47 0118:72 0119:52 0139:78 013a:58 013d:77 013e:57 0163:44 016e:74 016f:54 02c7:70 02dd:64 ff01:4f ff02:7f ff03:7b ff04:5b ff05:6c ff06:50 ff07:7d ff08:4d ff09:5d ff0a:5c ff0b:4e ff0c:6b ff0d:60 ff0e:4b ff0f:61 ff1a:7a ff1b:5e ff1c:4c ff1d:7e ff1e:6e ff20:7c ff3b:4a ff3d:5a ff3e:5f ff3f:6d ff40:79 ff5c:6a
10021 (MAC - Thai)
874 (ANSI/OEM - Thai)
00a7:15 00b6:14 203c:13 2190:1b 2191:18 2192:1a 2193:19 2194:1d 2195:12 21a8:17 221f:1c 2302:7f 25ac:16 25b2:1e 25ba:10 25bc:1f 25c4:11 25cb:09 25d8:08 25d9:0a 263a:01 263b:02 263c:0f 2640:0c 2642:0b 2660:06 2663:05 2665:03 2666:04 266a:0d 266b:0e ff01:21 ff02:22 ff03:23 ff04:24 ff05:25 ff06:26 ff07:27 ff08:28 ff09:29 ff0a:2a ff0b:2b ff0c:2c ff0d:2d ff0e:2e ff0f:2f ff10:30 ff11:31 ff12:32 ff13:33 ff14:34 ff15:35 ff16:36 ff17:37 ff18:38 ff19:39 ff1a:3a ff1b:3b ff1c:3c ff1d:3d ff1e:3e ff20:40 ff21:41 ff22:42 ff23:43 ff24:44 ff25:45 ff26:46 ff27:47 ff28:48 ff29:49 ff2a:4a ff2b:4b ff2c:4c ff2d:4d ff2e:4e ff2f:4f ff30:50 ff31:51 ff32:52 ff33:53 ff34:54 ff35:55 ff36:56 ff37:57 ff38:58 ff39:59 ff3a:5a ff3b:5b ff3c:5c ff3d:5d ff3e:5e ff3f:5f ff40:60 ff41:61 ff42:62 ff43:63 ff44:64 ff45:65 ff46:66 ff47:67 ff48:68 ff49:69 ff4a:6a ff4b:6b ff4c:6c ff4d:6d ff4e:6e ff4f:6f ff50:70 ff51:71 ff52:72 ff53:73 ff54:74 ff55:75 ff56:76 ff57:77 ff58:78 ff59:79 ff5a:7a ff5b:7b ff5c:7c ff5d:7d ff5e:7e
20838 (IBM EBCDIC - Thai)
0004:37 0005:2d 0006:2e 0007:2f 0008:16 0009:05 000a:25 0014:3c 0015:3d 0016:32 0017:26 001a:3f 001b:27 0020:40 0021:5a 0022:7f 0023:7b 0024:5b 0025:6c 0026:50 0027:7d 0028:4d 0029:5d 002a:5c 002b:4e 002c:6b 002d:60 002e:4b 002f:61 003a:7a 003b:5e 003c:4c 003d:7e 003e:6e 003f:6f 0040:7c 005b:49 005d:59 005e:69 005f:6d 0060:79 007c:4f 007f:07 0080:20 0081:21 0082:22 0083:23 0084:24 0085:15 0086:06 0087:17 0088:28 0089:29 008a:2a 008b:2b 008c:2c 008d:09 008e:0a 008f:1b 0090:30 0091:31 0092:1a 0093:33 0094:34 0095:35 0096:36 0097:08 0098:38 0099:39 009a:3a 009b:3b 009c:04 009d:14 009e:3e 00a0:41 00a2:4a 00a6:6a 00ac:5f 0e01:42 0e02:43 0e03:44 0e04:45 0e05:46 0e06:47 0e07:48 0e08:52 0e09:53 0e0a:54 0e0b:55 0e0c:56 0e0d:57 0e0e:58 0e0f:62 0e10:63 0e11:64 0e12:65 0e13:66 0e14:67 0e15:68 0e16:72 0e17:73 0e18:74 0e19:75 0e1a:76 0e1b:77 0e1c:78 0e3f:70 0e4e:71 ff01:5a ff02:7f ff03:7b ff04:5b ff05:6c ff06:50 ff07:7d ff08:4d ff09:5d ff0a:5c ff0b:4e ff0c:6b ff0d:60 ff0e:4b ff0f:61 ff1a:7a ff1b:5e ff1c:4c ff1d:7e ff1e:6e ff20:7c ff3b:49 ff3d:59 ff3e:69 ff3f:6d ff40:79 ff5c:4f
10005 (MAC - Hebrew)
1255 (ANSI - Hebrew)
0191:46 ff01:21 ff02:22 ff03:23 ff04:24 ff05:25 ff06:26 ff07:27 ff08:28 ff09:29 ff0a:2a ff0b:2b ff0c:2c ff0d:2d ff0e:2e ff0f:2f ff10:30 ff11:31 ff12:32 ff13:33 ff14:34 ff15:35 ff16:36 ff17:37 ff18:38 ff19:39 ff1a:3a ff1b:3b ff1c:3c ff1d:3d ff1e:3e ff20:40 ff21:41 ff22:42 ff23:43 ff24:44 ff25:45 ff26:46 ff27:47 ff28:48 ff29:49 ff2a:4a ff2b:4b ff2c:4c ff2d:4d ff2e:4e ff2f:4f ff30:50 ff31:51 ff32:52 ff33:53 ff34:54 ff35:55 ff36:56 ff37:57 ff38:58 ff39:59 ff3a:5a ff3b:5b ff3c:5c ff3d:5d ff3e:5e ff3f:5f ff40:60 ff41:61 ff42:62 ff43:63 ff44:64 ff45:65 ff46:66 ff47:67 ff48:68 ff49:69 ff4a:6a ff4b:6b ff4c:6c ff4d:6d ff4e:6e ff4f:6f ff50:70 ff51:71 ff52:72 ff53:73 ff54:74 ff55:75 ff56:76 ff57:77 ff58:78 ff59:79 ff5a:7a ff5b:7b ff5c:7c ff5d:7d ff5e:7e
862 (OEM - Hebrew)
00a4:0f 00a7:15 00a8:22 00a9:63 00ad:2d 00ae:72 00af:5f 00b3:33 00b4:27 00b6:14 00b8:2c 00b9:31 00be:5f 00c0:41 00c1:41 00c2:41 00c3:41 00c8:45 00ca:45 00cb:45 00cc:49 00cd:49 00ce:49 00cf:49 00d0:44 00d2:4f 00d3:4f 00d4:4f 00d5:4f 00d7:78 00d8:4f 00d9:55 00da:55 00db:55 00dd:59 00de:5f 00e3:61 00f0:64 00f5:6f 00f8:6f 00fd:79 00fe:5f 0100:41 0101:61 0102:41 0103:61 0104:41 0105:61 0106:43 0107:63 0108:43 0109:63 010a:43 010b:63 010c:43 010d:63 010e:44 010f:64 0110:44 0111:64 0112:45 0113:65 0114:45 0115:65 0116:45 0117:65 0118:45 0119:65 011a:45 011b:65 011c:47 011d:67 011e:47 011f:67 0120:47 0121:67 0122:47 0123:67 0124:48 0125:68 0126:48 0127:68 0128:49 0129:69 012a:49 012b:69 012c:49 012d:69 012e:49 012f:69 0130:49 0131:69 0134:4a 0135:6a 0136:4b 0137:6b 0139:4c 013a:6c 013b:4c 013c:6c 013d:4c 013e:6c 0141:4c 0142:6c 0143:4e 0144:6e 0145:4e 0146:6e 0147:4e 0148:6e 014c:4f 014d:6f 014e:4f 014f:6f 0150:4f 0151:6f 0152:4f 0153:6f 0154:52 0155:72 0156:52 0157:72 0158:52 0159:72 015a:53 015b:73 015c:53 015d:73 015e:53 015f:73 0160:53 0161:73 0162:54 0163:74 0164:54 0165:74 0166:54 0167:74 0168:55 0169:75 016a:55 016b:75 016c:55 016d:75 016e:55 016f:75 0170:55 0171:75 0172:55 0173:75 0174:57 0175:77 0176:59 0177:79 0178:59 0179:5a 017b:5a 017c:7a 017d:5a 017e:7a 0180:62 0189:44 0197:49 019a:6c 019f:4f 01a0:4f 01a1:6f 01ab:74 01ae:54 01af:55 01b0:75 01b6:7a 01c0:7c 01c3:21 01cd:41 01ce:61 01cf:49 01d0:69 01d1:4f 01d2:6f 01d3:55 01d4:75 01d5:55 01d6:75 01d7:55 01d8:75 01d9:55 01da:75 01db:55 01dc:75 01de:41 01df:61 01e4:47 01e5:67 01e6:47 01e7:67 01e8:4b 01e9:6b 01ea:4f 01eb:6f 01ec:4f 01ed:6f 01f0:6a 0261:67 02b9:27 02ba:22 02bc:27 02c4:5e 02c6:5e 02c8:27 02ca:27 02cb:60 02cd:5f 02dc:7e 0300:60 0301:27 0302:5e 0303:7e 0308:22 030e:22 0327:2c 0331:5f 0332:5f 037e:3b 04bb:68 0589:3a 066a:25 2000:20 2001:20 2002:20 2003:20 2004:20 2005:20 2006:20 2010:2d 2011:2d 2013:2d 2014:2d 2017:5f 2018:60 2019:27 201a:2c 201c:22 201d:22 201e:2c 2020:2b 2022:07 2026:2e 2030:25 2032:27 2035:60 2039:3c 203a:3e 203c:13 2044:2f 2074:34 2075:35 2076:36 2077:37 2078:38 2080:30 2081:31 2082:32 2083:33 2084:34 2085:35 2086:36 2087:37 2088:38 2089:39 20dd:09 2102:43 2107:45 210a:67 210b:48 210c:48 210d:48 210e:68 2110:49 2111:49 2112:4c 2113:6c 2115:4e 2118:50 2119:50 211a:51 211b:52 211c:52 211d:52 2122:54 2124:5a 2128:5a 212a:4b 212c:42 212d:43 212e:65 212f:65 2130:45 2131:46 2133:4d 2134:6f 2190:1b 2191:18 2192:1a 2193:19 2194:1d 2195:12 21a8:17 2212:2d 2215:2f 2216:5c 2217:2a 221f:1c 2223:7c 2236:3a 223c:7e 2302:7f 2303:5e 2329:3c 232a:3e 25ac:16 25b2:1e 25ba:10 25bc:1f 25c4:11 25cb:09 25d8:08 25d9:0a 263a:01 263b:02 263c:0f 2640:0c 2642:0b 2660:06 2663:05 2665:03 2666:04 266a:0d 266b:0e 2758:7c 3000:20 3007:09 3008:3c 3009:3e 301a:5b 301b:5d ff01:21 ff02:22 ff03:23 ff04:24 ff05:25 ff06:26 ff07:27 ff08:28 ff09:29 ff0a:2a ff0b:2b ff0c:2c ff0d:2d ff0e:2e ff0f:2f ff10:30 ff11:31 ff12:32 ff13:33 ff14:34 ff15:35 ff16:36 ff17:37 ff18:38 ff19:39 ff1a:3a ff1b:3b ff1c:3c ff1d:3d ff1e:3e ff20:40 ff21:41 ff22:42 ff23:43 ff24:44 ff25:45 ff26:46 ff27:47 ff28:48 ff29:49 ff2a:4a ff2b:4b ff2c:4c ff2d:4d ff2e:4e ff2f:4f ff30:50 ff31:51 ff32:52 ff33:53 ff34:54 ff35:55 ff36:56 ff37:57 ff38:58 ff39:59 ff3a:5a ff3b:5b ff3c:5c ff3d:5d ff3e:5e ff3f:5f ff40:60 ff41:61 ff42:62 ff43:63 ff44:64 ff45:65 ff46:66 ff47:67 ff48:68 ff49:69 ff4a:6a ff4b:6b ff4c:6c ff4d:6d ff4e:6e ff4f:6f ff50:70 ff51:71 ff52:72 ff53:73 ff54:74 ff55:75 ff56:76 ff57:77 ff58:78 ff59:79 ff5a:7a ff5b:7b ff5c:7c ff5d:7d ff5e:7e
28598 (ISO 8859-8 Hebrew: Visual Ordering)
00a1:21 00aa:61 00ba:6f 00c0:41 00c1:41 00c2:41 00c3:41 00c4:41 00c5:41 00c6:41 00c7:43 00c8:45 00c9:45 00ca:45 00cb:45 00cc:49 00cd:49 00ce:49 00cf:49 00d0:44 00d1:4e 00d2:4f 00d3:4f 00d4:4f 00d5:4f 00d6:4f 00d8:4f 00d9:55 00da:55 00db:55 00dc:55 00dd:59 00e0:61 00e1:61 00e2:61 00e3:61 00e4:61 00e5:61 00e6:61 00e7:63 00e8:65 00e9:65 00ea:65 00eb:65 00ec:69 00ed:69 00ee:69 00ef:69 00f1:6e 00f2:6f 00f3:6f 00f4:6f 00f5:6f 00f6:6f 00f8:6f 00f9:75 00fa:75 00fb:75 00fc:75 00fd:79 00ff:79 0100:41 0101:61 0102:41 0103:61 0104:41 0105:61 0106:43 0107:63 0108:43 0109:63 010a:43 010b:63 010c:43 010d:63 010e:44 010f:64 0110:44 0111:64 0112:45 0113:65 0114:45 0115:65 0116:45 0117:65 0118:45 0119:65 011a:45 011b:65 011c:47 011d:67 011e:47 011f:67 0120:47 0121:67 0122:47 0123:67 0124:48 0125:68 0126:48 0127:68 0128:49 0129:69 012a:49 012b:69 012c:49 012d:69 012e:49 012f:69 0130:49 0131:69 0134:4a 0135:6a 0136:4b 0137:6b 0139:4c 013a:6c 013b:4c 013c:6c 013d:4c 013e:6c 0141:4c 0142:6c 0143:4e 0144:6e 0145:4e 0146:6e 0147:4e 0148:6e 014c:4f 014d:6f 014e:4f 014f:6f 0150:4f 0151:6f 0152:4f 0153:6f 0154:52 0155:72 0156:52 0157:72 0158:52 0159:72 015a:53 015b:73 015c:53 015d:73 015e:53 015f:73 0160:53 0161:73 0162:54 0163:74 0164:54 0165:74 0166:54 0167:74 0168:55 0169:75 016a:55 016b:75 016c:55 016d:75 016e:55 016f:75 0170:55 0171:75 0172:55 0173:75 0174:57 0175:77 0176:59 0177:79 0178:59 0179:5a 017b:5a 017c:7a 017d:5a 017e:7a 0180:62 0189:44 0191:46 0192:66 0197:49 019a:6c 019f:4f 01a0:4f 01a1:6f 01ab:74 01ae:54 01af:55 01b0:75 01b6:7a 01cd:41 01ce:61 01cf:49 01d0:69 01d1:4f 01d2:6f 01d3:55 01d4:75 01d5:55 01d6:75 01d7:55 01d8:75 01d9:55 01da:75 01db:55 01dc:75 01de:41 01df:61 01e4:47 01e5:67 01e6:47 01e7:67 01e8:4b 01e9:6b 01ea:4f 01eb:6f 01ec:4f 01ed:6f 01f0:6a 0261:67 02b9:27 02ba:22 02bc:27 02c4:5e 02c6:5e 02c8:27 02cb:60 02cd:5f 02dc:7e 0300:60 0302:5e 0303:7e 030e:22 0331:5f 0332:5f 2000:20 2001:20 2002:20 2003:20 2004:20 2005:20 2006:20 2010:2d 2011:2d 2013:2d 2014:2d 2018:27 2019:27 201a:2c 201c:22 201d:22 201e:22 2022:2e 2026:2e 2032:27 2035:60 2039:3c 203a:3e 2122:54 ff01:21 ff02:22 ff03:23 ff04:24 ff05:25 ff06:26 ff07:27 ff08:28 ff09:29 ff0a:2a ff0b:2b ff0c:2c ff0d:2d ff0e:2e ff0f:2f ff10:30 ff11:31 ff12:32 ff13:33 ff14:34 ff15:35 ff16:36 ff17:37 ff18:38 ff19:39 ff1a:3a ff1b:3b ff1c:3c ff1d:3d ff1e:3e ff20:40 ff21:41 ff22:42 ff23:43 ff24:44 ff25:45 ff26:46 ff27:47 ff28:48 ff29:49 ff2a:4a ff2b:4b ff2c:4c ff2d:4d ff2e:4e ff2f:4f ff30:50 ff31:51 ff32:52 ff33:53 ff34:54 ff35:55 ff36:56 ff37:57 ff38:58 ff39:59 ff3a:5a ff3b:5b ff3c:5c ff3d:5d ff3e:5e ff3f:5f ff40:60 ff41:61 ff42:62 ff43:63 ff44:64 ff45:65 ff46:66 ff47:67 ff48:68 ff49:69 ff4a:6a ff4b:6b ff4c:6c ff4d:6d ff4e:6e ff4f:6f ff50:70 ff51:71 ff52:72 ff53:73 ff54:74 ff55:75 ff56:76 ff57:77 ff58:78 ff59:79 ff5a:7a ff5b:7b ff5c:7c ff5d:7d ff5e:7e
38598 (ISO 8859-8 Hebrew: Logical Ordering)
00a1:21 00aa:61 00ba:6f 00c0:41 00c1:41 00c2:41 00c3:41 00c4:41 00c5:41 00c6:41 00c7:43 00c8:45 00c9:45 00ca:45 00cb:45 00cc:49 00cd:49 00ce:49 00cf:49 00d0:44 00d1:4e 00d2:4f 00d3:4f 00d4:4f 00d5:4f 00d6:4f 00d8:4f 00d9:55 00da:55 00db:55 00dc:55 00dd:59 00e0:61 00e1:61 00e2:61 00e3:61 00e4:61 00e5:61 00e6:61 00e7:63 00e8:65 00e9:65 00ea:65 00eb:65 00ec:69 00ed:69 00ee:69 00ef:69 00f1:6e 00f2:6f 00f3:6f 00f4:6f 00f5:6f 00f6:6f 00f8:6f 00f9:75 00fa:75 00fb:75 00fc:75 00fd:79 00ff:79 0100:41 0101:61 0102:41 0103:61 0104:41 0105:61 0106:43 0107:63 0108:43 0109:63 010a:43 010b:63 010c:43 010d:63 010e:44 010f:64 0110:44 0111:64 0112:45 0113:65 0114:45 0115:65 0116:45 0117:65 0118:45 0119:65 011a:45 011b:65 011c:47 011d:67 011e:47 011f:67 0120:47 0121:67 0122:47 0123:67 0124:48 0125:68 0126:48 0127:68 0128:49 0129:69 012a:49 012b:69 012c:49 012d:69 012e:49 012f:69 0130:49 0131:69 0134:4a 0135:6a 0136:4b 0137:6b 0139:4c 013a:6c 013b:4c 013c:6c 013d:4c 013e:6c 0141:4c 0142:6c 0143:4e 0144:6e 0145:4e 0146:6e 0147:4e 0148:6e 014c:4f 014d:6f 014e:4f 014f:6f 0150:4f 0151:6f 0152:4f 0153:6f 0154:52 0155:72 0156:52 0157:72 0158:52 0159:72 015a:53 015b:73 015c:53 015d:73 015e:53 015f:73 0160:53 0161:73 0162:54 0163:74 0164:54 0165:74 0166:54 0167:74 0168:55 0169:75 016a:55 016b:75 016c:55 016d:75 016e:55 016f:75 0170:55 0171:75 0172:55 0173:75 0174:57 0175:77 0176:59 0177:79 0178:59 0179:5a 017b:5a 017c:7a 017d:5a 017e:7a 0180:62 0189:44 0191:46 0192:66 0197:49 019a:6c 019f:4f 01a0:4f 01a1:6f 01ab:74 01ae:54 01af:55 01b0:75 01b6:7a 01cd:41 01ce:61 01cf:49 01d0:69 01d1:4f 01d2:6f 01d3:55 01d4:75 01d5:55 01d6:75 01d7:55 01d8:75 01d9:55 01da:75 01db:55 01dc:75 01de:41 01df:61 01e4:47 01e5:67 01e6:47 01e7:67 01e8:4b 01e9:6b 01ea:4f 01eb:6f 01ec:4f 01ed:6f 01f0:6a 0261:67 02b9:27 02ba:22 02bc:27 02c4:5e 02c6:5e 02c8:27 02cb:60 02cd:5f 02dc:7e 0300:60 0302:5e 0303:7e 030e:22 0331:5f 0332:5f 2000:20 2001:20 2002:20 2003:20 2004:20 2005:20 2006:20 2010:2d 2011:2d 2013:2d 2014:2d 2018:27 2019:27 201a:2c 201c:22 201d:22 201e:22 2022:2e 2026:2e 2032:27 2035:60 2039:3c 203a:3e 2122:54 ff01:21 ff02:22 ff03:23 ff04:24 ff05:25 ff06:26 ff07:27 ff08:28 ff09:29 ff0a:2a ff0b:2b ff0c:2c ff0d:2d ff0e:2e ff0f:2f ff10:30 ff11:31 ff12:32 ff13:33 ff14:34 ff15:35 ff16:36 ff17:37 ff18:38 ff19:39 ff1a:3a ff1b:3b ff1c:3c ff1d:3d ff1e:3e ff20:40 ff21:41 ff22:42 ff23:43 ff24:44 ff25:45 ff26:46 ff27:47 ff28:48 ff29:49 ff2a:4a ff2b:4b ff2c:4c ff2d:4d ff2e:4e ff2f:4f ff30:50 ff31:51 ff32:52 ff33:53 ff34:54 ff35:55 ff36:56 ff37:57 ff38:58 ff39:59 ff3a:5a ff3b:5b ff3c:5c ff3d:5d ff3e:5e ff3f:5f ff40:60 ff41:61 ff42:62 ff43:63 ff44:64 ff45:65 ff46:66 ff47:67 ff48:68 ff49:69 ff4a:6a ff4b:6b ff4c:6c ff4d:6d ff4e:6e ff4f:6f ff50:70 ff51:71 ff52:72 ff53:73 ff54:74 ff55:75 ff56:76 ff57:77 ff58:78 ff59:79 ff5a:7a ff5b:7b ff5c:7c ff5d:7d ff5e:7e
20424 (IBM EBCDIC - Hebrew)
0004:37 0005:2d 0006:2e 0007:2f 0008:16 0009:05 000a:25 0014:3c 0015:3d 0016:32 0017:26 001a:3f 001b:27 0020:40 0021:5a 0022:7f 0023:7b 0024:5b 0025:6c 0026:50 0027:7d 0028:4d 0029:5d 002a:5c 002b:4e 002c:6b 002d:60 002e:4b 002f:61 003a:7a 003b:5e 003c:4c 003d:7e 003e:6e 003f:6f 0040:7c 005f:6d 0060:79 007c:4f 007f:07 0080:20 0081:21 0082:22 0083:23 0084:24 0085:15 0086:06 0087:17 0088:28 0089:29 008a:2a 008b:2b 008c:2c 008d:09 008e:0a 008f:1b 0090:30 0091:31 0092:1a 0093:33 0094:34 0095:35 0096:36 0097:08 0098:38 0099:39 009a:3a 009b:3b 009c:04 009d:14 009e:3e 00a0:74 00a2:4a 00a6:6a 00ac:5f 05d0:41 05d1:42 05d2:43 05d3:44 05d4:45 05d5:46 05d6:47 05d7:48 05d8:49 05d9:51 05da:52 05db:53 05dc:54 05dd:55 05de:56 05df:57 05e0:58 05e1:59 05e2:62 05e3:63 05e4:64 05e5:65 05e6:66 05e7:67 05e8:68 05e9:69 05ea:71 2017:78 ff01:5a ff02:7f ff03:7b ff04:5b ff05:6c ff06:50 ff07:7d ff08:4d ff09:5d ff0a:5c ff0b:4e ff0c:6b ff0d:60 ff0e:4b ff0f:61 ff1a:7a ff1b:5e ff1c:4c ff1d:7e ff1e:6e ff20:7c ff3f:6d ff40:79 ff5c:4f
10006 (MAC - Greek I)
1253 (ANSI - Greek)
00b4:2f 00c0:41 00c1:41 00c2:41 00c3:41 00c4:41 00c5:41 00c7:43 00c8:45 00c9:45 00ca:45 00cb:45 00cc:49 00cd:49 00ce:49 00cf:49 00d1:4e 00d2:4f 00d3:4f 00d4:4f 00d5:4f 00d6:4f 00d8:4f 00d9:55 00da:55 00db:55 00dc:55 00dd:59 00e0:61 00e1:61 00e2:61 00e3:61 00e4:61 00e5:61 00e7:63 00e8:65 00e9:65 00ea:65 00eb:65 00ec:69 00ed:69 00ee:69 00ef:69 00f1:6e 00f2:6f 00f3:6f 00f4:6f 00f5:6f 00f6:6f 00f8:6f 00f9:75 00fa:75 00fb:75 00fc:75 00fd:79 00ff:79 0100:41 0101:61 0102:41 0103:61 0104:41 0105:61 0106:43 0107:63 0108:43 0109:63 010a:43 010b:63 010c:43 010d:63 010e:44 010f:64 0110:44 0111:64 0112:45 0113:65 0114:45 0115:65 0116:45 0117:65 0118:45 0119:65 011a:45 011b:65 011c:47 011d:67 011e:47 011f:67 0120:47 0121:67 0122:47 0123:67 0124:48 0125:68 0126:48 0127:68 0128:49 0129:69 012a:49 012b:69 012c:49 012d:69 012e:49 012f:69 0130:49 0134:4a 0135:6a 0136:4b 0137:6b 0139:4c 013a:6c 013b:4c 013c:6c 013d:4c 013e:6c 0141:4c 0142:6c 0143:4e 0144:6e 0145:4e 0146:6e 0147:4e 0148:6e 014c:4f 014d:6f 014e:4f 014f:6f 0150:4f 0151:6f 0154:52 0155:72 0156:52 0157:72 0158:52 0159:72 015a:53 015b:73 015c:53 015d:73 015e:53 015f:73 0160:53 0161:73 0162:54 0163:74 0164:54 0165:74 0166:54 0167:74 0168:55 0169:75 016a:55 016b:75 016c:55 016d:75 016e:55 016f:75 0170:55 0171:75 0172:55 0173:75 0174:57 0175:77 0176:59 0177:79 0178:59 0179:5a 017b:5a 017c:7a 017d:5a 017e:7a 0180:62 0197:49 019a:6c 019f:4f 01a0:4f 01a1:6f 01ab:74 01ae:54 01af:55 01b0:75 01cd:41 01ce:61 01cf:49 01d0:69 01d1:4f 01d2:6f 01d3:55 01d4:75 01d5:55 01d6:75 01d7:55 01d8:75 01d9:55 01da:75 01db:55 01dc:75 01de:41 01df:61 01e4:47 01e5:67 01e6:47 01e7:67 01e8:4b 01e9:6b 01ea:4f 01eb:6f 01ec:4f 01ed:6f 01f0:6a 037e:3b 203c:21 2190:3c 2191:5e 2192:3e 2193:76 2194:2d 221f:4c 2500:2d 250c:2d 2514:4c 2518:2d 251c:2b 2524:2b 252c:54 2534:2b 253c:2b 2550:3d 2554:2d 255a:4c 255d:2d 2566:54 256c:2b 2580:2d 2584:2d 2588:2d 2591:2d 2592:2d 2593:2d 25ac:2d 25b2:5e 25ba:3e 25c4:3c 25cb:30 25d9:30 263a:4f 263b:4f 263c:30 2640:2b 2642:3e 266a:64 266b:64 ff01:21 ff02:22 ff03:23 ff04:24 ff05:25 ff06:26 ff07:27 ff08:28 ff09:29 ff0a:2a ff0b:2b ff0c:2c ff0d:2d ff0e:2e ff0f:2f ff10:30 ff11:31 ff12:32 ff13:33 ff14:34 ff15:35 ff16:36 ff17:37 ff18:38 ff19:39 ff1a:3a ff1b:3b ff1c:3c ff1d:3d ff1e:3e ff20:40 ff21:41 ff22:42 ff23:43 ff24:44 ff25:45 ff26:46 ff27:47 ff28:48 ff29:49 ff2a:4a ff2b:4b ff2c:4c ff2d:4d ff2e:4e ff2f:4f ff30:50 ff31:51 ff32:52 ff33:53 ff34:54 ff35:55 ff36:56 ff37:57 ff38:58 ff39:59 ff3a:5a ff3b:5b ff3c:5c ff3d:5d ff3e:5e ff3f:5f ff40:60 ff41:61 ff42:62 ff43:63 ff44:64 ff45:65 ff46:66 ff47:67 ff48:68 ff49:69 ff4a:6a ff4b:6b ff4c:6c ff4d:6d ff4e:6e ff4f:6f ff50:70 ff51:71 ff52:72 ff53:73 ff54:74 ff55:75 ff56:76 ff57:77 ff58:78 ff59:79 ff5a:7a ff5b:7b ff5c:7c ff5d:7d ff5e:7e
737 (OEM - Greek 437G)
00a7:15 00b6:14 037e:3b 2022:07 203c:13 2190:1b 2191:18 2192:1a 2193:19 2194:1d 2195:12 21a8:17 221f:1c 2302:7f 25ac:16 25b2:1e 25ba:10 25bc:1f 25c4:11 25cb:09 25d8:08 25d9:0a 263a:01 263b:02 263c:0f 2640:0c 2642:0b 2660:06 2663:05 2665:03 2666:04 266a:0d 266b:0e ff01:21 ff02:22 ff03:23 ff04:24 ff05:25 ff06:26 ff07:27 ff08:28 ff09:29 ff0a:2a ff0b:2b ff0c:2c ff0d:2d ff0e:2e ff0f:2f ff10:30 ff11:31 ff12:32 ff13:33 ff14:34 ff15:35 ff16:36 ff17:37 ff18:38 ff19:39 ff1a:3a ff1b:3b ff1c:3c ff1d:3d ff1e:3e ff20:40 ff21:41 ff22:42 ff23:43 ff24:44 ff25:45 ff26:46 ff27:47 ff28:48 ff29:49 ff2a:4a ff2b:4b ff2c:4c ff2d:4d ff2e:4e ff2f:4f ff30:50 ff31:51 ff32:52 ff33:53 ff34:54 ff35:55 ff36:56 ff37:57 ff38:58 ff39:59 ff3a:5a ff3b:5b ff3c:5c ff3d:5d ff3e:5e ff3f:5f ff40:60 ff41:61 ff42:62 ff43:63 ff44:64 ff45:65 ff46:66 ff47:67 ff48:68 ff49:69 ff4a:6a ff4b:6b ff4c:6c ff4d:6d ff4e:6e ff4f:6f ff50:70 ff51:71 ff52:72 ff53:73 ff54:74 ff55:75 ff56:76 ff57:77 ff58:78 ff59:79 ff5a:7a ff5b:7b ff5c:7c ff5d:7d ff5e:7e
869 (OEM - Modern Greek)
00a4:6f 00a5:59 00ae:52 00b6:14 00c0:41 00c1:41 00c2:41 00c3:41 00c4:41 00c5:41 00c7:43 00c8:45 00c9:45 00ca:45 00cb:45 00cc:49 00cd:49 00ce:49 00cf:49 00d1:4e 00d2:4f 00d3:4f 00d4:4f 00d5:4f 00d6:4f 00d8:4f 00d9:55 00da:55 00db:55 00dc:55 00dd:59 00e0:61 00e1:61 00e2:61 00e3:61 00e4:61 00e5:61 00e7:63 00e8:65 00e9:65 00ea:65 00eb:65 00ec:69 00ed:69 00ee:69 00ef:69 00f1:6e 00f2:6f 00f3:6f 00f4:6f 00f5:6f 00f6:6f 00f8:6f 00f9:75 00fa:75 00fb:75 00fc:75 00fd:79 00ff:79 0100:41 0101:61 0102:41 0103:61 0104:41 0105:61 0106:43 0107:63 0108:43 0109:63 010a:43 010b:63 010c:43 010d:63 010e:44 010f:64 0110:44 0111:64 0112:45 0113:65 0114:45 0115:65 0116:45 0117:65 0118:45 0119:65 011a:45 011b:65 011c:47 011d:67 011e:47 011f:67 0120:47 0121:67 0122:47 0123:67 0124:48 0125:68 0126:48 0127:68 0128:49 0129:69 012a:49 012b:69 012c:49 012d:69 012e:49 012f:69 0130:49 0134:4a 0135:6a 0136:4b 0137:6b 0139:4c 013a:6c 013b:4c 013c:6c 013d:4c 013e:6c 0141:4c 0142:6c 0143:4e 0144:6e 0145:4e 0146:6e 0147:4e 0148:6e 014c:4f 014d:6f 014e:4f 014f:6f 0150:4f 0151:6f 0154:52 0155:72 0156:52 0157:72 0158:52 0159:72 015a:53 015b:73 015c:53 015d:73 015e:53 015f:73 0160:53 0161:73 0162:54 0163:74 0164:54 0165:74 0166:54 0167:74 0168:55 0169:75 016a:55 016b:75 016c:55 016d:75 016e:55 016f:75 0170:55 0171:75 0172:55 0173:75 0174:57 0175:77 0176:59 0177:79 0178:59 0179:5a 017b:5a 017c:7a 017d:5a 017e:7a 0180:62 0191:46 0192:66 0197:49 019a:6c 019f:4f 01a0:4f 01a1:6f 01ab:74 01ae:54 01af:55 01b0:75 01cd:41 01ce:61 01cf:49 01d0:69 01d1:4f 01d2:6f 01d3:55 01d4:75 01d5:55 01d6:75 01d7:55 01d8:75 01d9:55 01da:75 01db:55 01dc:75 01de:41 01df:61 01e4:47 01e5:67 01e6:47 01e7:67 01e8:4b 01e9:6b 01ea:4f 01eb:6f 01ec:4f 01ed:6f 01f0:6a 037e:3b 2013:16 2014:16 201c:22 201d:22 201e:22 2020:2b 2021:2b 2022:07 2026:3a 2030:25 2039:3c 203a:3e 203c:13 2122:54 2190:1b 2191:18 2192:1a 2193:19 2194:1d 2195:12 21a8:17 221f:1c 2302:7f 25ac:16 25b2:1e 25ba:10 25bc:1f 25c4:11 25cb:09 25d8:08 25d9:0a 263a:01 263b:02 263c:0f 2640:0c 2642:0b 2660:06 2663:05 2665:03 2666:04 266a:0d 266b:0e
20273 (IBM EBCDIC - Germany)
0004:37 0005:2d 0006:2e 0007:2f 0008:16 0009:05 000a:25 0014:3c 0015:3d 0016:32 0017:26 001a:3f 001b:27 0020:40 0021:4f 0022:7f 0023:7b 0024:5b 0025:6c 0026:50 0027:7d 0028:4d 0029:5d 002a:5c 002b:4e 002c:6b 002d:60 002e:4b 002f:61 003a:7a 003b:5e 003c:4c 003d:7e 003e:6e 003f:6f 005b:63 005e:5f 005f:6d 0060:79 007b:43 007e:59 007f:07 0080:20 0081:21 0082:22 0083:23 0084:24 0085:15 0086:06 0087:17 0088:28 0089:29 008a:2a 008b:2b 008c:2c 008d:09 008e:0a 008f:1b 0090:30 0091:31 0092:1a 0093:33 0094:34 0095:35 0096:36 0097:08 0098:38 0099:39 009a:3a 009b:3b 009c:04 009d:14 009e:3e 00a0:41 00a7:7c 00c0:64 00c1:65 00c2:62 00c3:66 00c4:4a 00c5:67 00c7:68 00c8:74 00c9:71 00ca:72 00cb:73 00cc:78 00cd:75 00ce:76 00cf:77 00d1:69 00dc:5a 00e0:44 00e1:45 00e2:42 00e3:46 00e5:47 00e7:48 00e8:54 00e9:51 00ea:52 00eb:53 00ec:58 00ed:55 00ee:56 00ef:57 00f1:49 00f6:6a 00f8:70 ff01:4f ff02:7f ff03:7b ff04:5b ff05:6c ff06:50 ff07:7d ff08:4d ff09:5d ff0a:5c ff0b:4e ff0c:6b ff0d:60 ff0e:4b ff0f:61 ff1a:7a ff1b:5e ff1c:4c ff1d:7e ff1e:6e ff3b:63 ff3e:5f ff3f:6d ff40:79 ff5b:43 ff5e:59
28597 (ISO 8859-7 Greek)
00a1:21 00a2:63 00a4:24 00a5:59 00aa:61 00ae:52 00b8:2c 00b9:31 00ba:6f 00c0:41 00c1:41 00c2:41 00c3:41 00c4:41 00c5:41 00c6:41 00c7:43 00c8:45 00c9:45 00ca:45 00cb:45 00cc:49 00cd:49 00ce:49 00cf:49 00d0:44 00d1:4e 00d2:4f 00d3:4f 00d4:4f 00d5:4f 00d6:4f 00d8:4f 00d9:55 00da:55 00db:55 00dc:55 00dd:59 00e0:61 00e1:61 00e2:61 00e3:61 00e4:61 00e5:61 00e6:61 00e7:63 00e8:65 00e9:65 00ea:65 00eb:65 00ec:69 00ed:69 00ee:69 00ef:69 00f1:6e 00f2:6f 00f3:6f 00f4:6f 00f5:6f 00f6:6f 00f8:6f 00f9:75 00fa:75 00fb:75 00fc:75 00fd:79 00ff:79 0100:41 0101:61 0102:41 0103:61 0104:41 0105:61 0106:43 0107:63 0108:43 0109:63 010a:43 010b:63 010c:43 010d:63 010e:44 010f:64 0110:44 0111:64 0112:45 0113:65 0114:45 0115:65 0116:45 0117:65 0118:45 0119:65 011a:45 011b:65 011c:47 011d:67 011e:47 011f:67 0120:47 0121:67 0122:47 0123:67 0124:48 0125:68 0126:48 0127:68 0128:49 0129:69 012a:49 012b:69 012c:49 012d:69 012e:49 012f:69 0130:49 0131:69 0134:4a 0135:6a 0136:4b 0137:6b 0139:4c 013a:6c 013b:4c 013c:6c 013d:4c 013e:6c 0141:4c 0142:6c 0143:4e 0144:6e 0145:4e 0146:6e 0147:4e 0148:6e 014c:4f 014d:6f 014e:4f 014f:6f 0150:4f 0151:6f 0152:4f 0153:6f 0154:52 0155:72 0156:52 0157:72 0158:52 0159:72 015a:53 015b:73 015c:53 015d:73 015e:53 015f:73 0160:53 0161:73 0162:54 0163:74 0164:54 0165:74 0166:54 0167:74 0168:55 0169:75 016a:55 016b:75 016c:55 016d:75 016e:55 016f:75 0170:55 0171:75 0172:55 0173:75 0174:57 0175:77 0176:59 0177:79 0178:59 0179:5a 017b:5a 017c:7a 017d:5a 017e:7a 0180:62 0189:44 0191:46 0192:66 0197:49 019a:6c 019f:4f 01a0:4f 01a1:6f 01ab:74 01ae:54 01af:55 01b0:75 01b6:7a 01cd:41 01ce:61 01cf:49 01d0:69 01d1:4f 01d2:6f 01d3:55 01d4:75 01d5:55 01d6:75 01d7:55 01d8:75 01d9:55 01da:75 01db:55 01dc:75 01de:41 01df:61 01e4:47 01e5:67 01e6:47 01e7:67 01e8:4b 01e9:6b 01ea:4f 01eb:6f 01ec:4f 01ed:6f 01f0:6a 0261:67 02b9:27 02ba:22 02c4:5e 02c6:5e 02c8:27 02cb:60 02cd:5f 02dc:7e 0300:60 0302:5e 0303:7e 030e:22 0331:5f 0332:5f 2000:20 2001:20 2002:20 2003:20 2004:20 2005:20 2006:20 2010:2d 2011:2d 2013:2d 2014:2d 2018:27 2019:27 201a:2c 201c:22 201d:22 201e:22 2022:2e 2026:2e 2032:27 2035:60 2039:3c 203a:3e 2122:54 ff01:21 ff02:22 ff03:23 ff04:24 ff05:25 ff06:26 ff07:27 ff08:28 ff09:29 ff0a:2a ff0b:2b ff0c:2c ff0d:2d ff0e:2e ff0f:2f ff10:30 ff11:31 ff12:32 ff13:33 ff14:34 ff15:35 ff16:36 ff17:37 ff18:38 ff19:39 ff1a:3a ff1b:3b ff1c:3c ff1d:3d ff1e:3e ff20:40 ff21:41 ff22:42 ff23:43 ff24:44 ff25:45 ff26:46 ff27:47 ff28:48 ff29:49 ff2a:4a ff2b:4b ff2c:4c ff2d:4d ff2e:4e ff2f:4f ff30:50 ff31:51 ff32:52 ff33:53 ff34:54 ff35:55 ff36:56 ff37:57 ff38:58 ff39:59 ff3a:5a ff3b:5b ff3c:5c ff3d:5d ff3e:5e ff3f:5f ff40:60 ff41:61 ff42:62 ff43:63 ff44:64 ff45:65 ff46:66 ff47:67 ff48:68 ff49:69 ff4a:6a ff4b:6b ff4c:6c ff4d:6d ff4e:6e ff4f:6f ff50:70 ff51:71 ff52:72 ff53:73 ff54:74 ff55:75 ff56:76 ff57:77 ff58:78 ff59:79 ff5a:7a ff5b:7b ff5c:7c ff5d:7d ff5e:7e
20423 (IBM EBCDIC - Greek)
0004:37 0005:2d 0006:2e 0007:2f 0008:16 0009:05 000a:25 0014:3c 0015:3d 0016:32 0017:26 001a:3f 001b:27 0020:40 0021:4f 0022:7f 0024:5b 0025:6c 0026:50 0027:7d 0028:4d 0029:5d 002a:5c 002b:4e 002c:6b 002d:60 002e:4b 002f:61 003a:7a 003b:5e 003c:4c 003d:7e 003e:6e 003f:6f 005b:4a 005d:5a 005e:5f 005f:6d 0060:79 007c:6a 007f:07 0080:20 0081:21 0082:22 0083:23 0084:24 0085:15 0086:06 0087:17 0088:28 0089:29 008a:2a 008b:2b 008c:2c 008d:09 008e:0a 008f:1b 0090:30 0091:31 0092:1a 0093:33 0094:34 0095:35 0096:36 0097:08 0098:38 0099:39 009a:3a 009b:3b 009c:04 009d:14 009e:3e 00a0:74 00a3:7b 00a7:7c 0386:71 0388:72 0389:73 038a:75 038c:76 038e:77 038f:78 0391:41 0392:42 0393:43 0394:44 0395:45 0396:46 0397:47 0398:48 0399:49 039a:51 039b:52 039c:53 039d:54 039e:55 039f:56 03a0:57 03a1:58 03a3:59 03a4:62 03a5:63 03a6:64 03a7:65 03a8:66 03a9:67 ff01:4f ff02:7f ff04:5b ff05:6c ff06:50 ff07:7d ff08:4d ff09:5d ff0a:5c ff0b:4e ff0c:6b ff0d:60 ff0e:4b ff0f:61 ff1a:7a ff1b:5e ff1c:4c ff1d:7e ff1e:6e ff3b:4a ff3d:5a ff3e:5f ff3f:6d ff40:79 ff5c:6a
875 (IBM EBCDIC - Modern Greek)
0004:37 0005:2d 0006:2e 0007:2f 0008:16 0009:05 000a:25 0014:3c 0015:3d 0016:32 0017:26 001a:3f 001b:27 0020:40 0021:4f 0022:7f 0023:7b 0024:5b 0025:6c 0026:50 0027:7d 0028:4d 0029:5d 002a:5c 002b:4e 002c:6b 002d:60 002e:4b 002f:61 003a:7a 003b:5e 003c:4c 003d:7e 003e:6e 003f:6f 0040:7c 005b:4a 005d:5a 005e:5f 005f:6d 0060:79 007c:6a 007f:07 0080:20 0081:21 0082:22 0083:23 0084:24 0085:15 0086:06 0087:17 0088:28 0089:29 008a:2a 008b:2b 008c:2c 008d:09 008e:0a 008f:1b 0090:30 0091:31 0092:1a 0093:33 0094:34 0095:35 0096:36 0097:08 0098:38 0099:39 009a:3a 009b:3b 009c:04 009d:14 009e:3e 00a0:74 00a8:70 0386:71 0388:72 0389:73 038a:75 038c:76 038e:77 038f:78 0391:41 0392:42 0393:43 0394:44 0395:45 0396:46 0397:47 0398:48 0399:49 039a:51 039b:52 039c:53 039d:54 039e:55 039f:56 03a0:57 03a1:58 03a3:59 03a4:62 03a5:63 03a6:64 03a7:65 03a8:66 03a9:67 03aa:68 03ab:69 ff01:4f ff02:7f ff03:7b ff04:5b ff05:6c ff06:50 ff07:7d ff08:4d ff09:5d ff0a:5c ff0b:4e ff0c:6b ff0d:60 ff0e:4b ff0f:61 ff1a:7a ff1b:5e ff1c:4c ff1d:7e ff1e:6e ff20:7c ff3b:4a ff3d:5a ff3e:5f ff3f:6d ff40:79 ff5c:6a
1258 (ANSI/OEM - Viet Nam)
ff01:21 ff02:22 ff03:23 ff04:24 ff05:25 ff06:26 ff07:27 ff08:28 ff09:29 ff0a:2a ff0b:2b ff0c:2c ff0d:2d ff0e:2e ff0f:2f ff10:30 ff11:31 ff12:32 ff13:33 ff14:34 ff15:35 ff16:36 ff17:37 ff18:38 ff19:39 ff1a:3a ff1b:3b ff1c:3c ff1d:3d ff1e:3e ff20:40 ff21:41 ff22:42 ff23:43 ff24:44 ff25:45 ff26:46 ff27:47 ff28:48 ff29:49 ff2a:4a ff2b:4b ff2c:4c ff2d:4d ff2e:4e ff2f:4f ff30:50 ff31:51 ff32:52 ff33:53 ff34:54 ff35:55 ff36:56 ff37:57 ff38:58 ff39:59 ff3a:5a ff3b:5b ff3c:5c ff3d:5d ff3e:5e ff3f:5f ff40:60 ff41:61 ff42:62 ff43:63 ff44:64 ff45:65 ff46:66 ff47:67 ff48:68 ff49:69 ff4a:6a ff4b:6b ff4c:6c ff4d:6d ff4e:6e ff4f:6f ff50:70 ff51:71 ff52:72 ff53:73 ff54:74 ff55:75 ff56:76 ff57:77 ff58:78 ff59:79 ff5a:7a ff5b:7b ff5c:7c ff5d:7d ff5e:7e
10002 (MAC - Traditional Chinese Big5)
00a1:21 00a6:7c 00aa:61 00ad:2d 00ae:52 00b2:32 00b3:33 00b9:31 00ba:6f 00c0:41 00c1:41 00c2:41 00c3:41 00c4:41 00c5:41 00c6:41 00c7:43 00c8:45 00c9:45 00ca:45 00cb:45 00cc:49 00cd:49 00ce:49 00cf:49 00d0:44 00d1:4e 00d2:4f 00d3:4f 00d4:4f 00d5:4f 00d6:4f 00d8:4f 00d9:55 00da:55 00db:55 00dc:55 00dd:59 00de:54 00df:73 00e0:61 00e1:61 00e2:61 00e3:61 00e4:61 00e5:61 00e6:61 00e7:63 00e8:65 00e9:65 00ea:65 00eb:65 00ec:69 00ed:69 00ee:69 00ef:69 00f0:65 00f1:6e 00f2:6f 00f3:6f 00f4:6f 00f5:6f 00f6:6f 00f8:6f 00f9:75 00fa:75 00fb:75 00fc:75 00fd:79 00fe:74 00ff:79
950 (ANSI/OEM - Traditional Chinese Big5)
00a1:21 00a6:7c 00a9:63 00aa:61 00ad:2d 00ae:52 00b2:32 00b3:33 00b9:31 00ba:6f 00c0:41 00c1:41 00c2:41 00c3:41 00c4:41 00c5:41 00c6:41 00c7:43 00c8:45 00c9:45 00ca:45 00cb:45 00cc:49 00cd:49 00ce:49 00cf:49 00d0:44 00d1:4e 00d2:4f 00d3:4f 00d4:4f 00d5:4f 00d6:4f 00d8:4f 00d9:55 00da:55 00db:55 00dc:55 00dd:59 00de:54 00df:73 00e0:61 00e1:61 00e2:61 00e3:61 00e4:61 00e5:61 00e6:61 00e7:63 00e8:65 00e9:65 00ea:65 00eb:65 00ec:69 00ed:69 00ee:69 00ef:69 00f0:65 00f1:6e 00f2:6f 00f3:6f 00f4:6f 00f5:6f 00f6:6f 00f8:6f 00f9:75 00fa:75 00fb:75 00fc:75 00fd:79 00fe:74 00ff:79
20000 (CNS - Taiwan)
20001 (TCA - Taiwan)
20002 (Eten - Taiwan)
20003 (IBM5550 - Taiwan)
20004 (TeleText - Taiwan)
20005 (Wang - Taiwan)
20261 (T.61)
f8dd:5c f8de:5e f8df:60 f8e0:7b f8fc:7d f8fd:7e f8fe:7f
50229 (ISO-2022 Traditional Chinese)
65000 (UTF-7)
65001 (UTF-8)
snort-2.9.6.0/etc/reference.config 0000644 0000000 0000000 00000001257 12260606510 013625 0000000 0000000 # $Id$
# The following defines URLs for the references found in the rules
#
# config reference: system URL
config reference: bugtraq http://www.securityfocus.com/bid/
config reference: cve http://cve.mitre.org/cgi-bin/cvename.cgi?name=
config reference: arachNIDS http://www.whitehats.com/info/IDS
config reference: osvdb http://osvdb.org/show/osvdb/
# Note, this one needs a suffix as well.... lets add that in a bit.
config reference: McAfee http://vil.nai.com/vil/content/v_
config reference: nessus http://cgi.nessus.org/plugins/dump.php3?id=
config reference: url http://
config reference: msb http://technet.microsoft.com/en-us/security/bulletin/
snort-2.9.6.0/etc/gen-msg.map 0000644 0000000 0000000 00000074672 12232305204 012542 0000000 0000000 # $Id$
# GENERATORS -> msg map
# Format: generatorid || alertid || MSG
1 || 1 || snort general alert
2 || 1 || tag: Tagged Packet
3 || 1 || snort dynamic alert
100 || 1 || spp_portscan: Portscan Detected
100 || 2 || spp_portscan: Portscan Status
100 || 3 || spp_portscan: Portscan Ended
101 || 1 || spp_minfrag: minfrag alert
102 || 1 || http_decode: Unicode Attack
102 || 2 || http_decode: CGI NULL Byte Attack
102 || 3 || http_decode: large method attempted
102 || 4 || http_decode: missing uri
102 || 5 || http_decode: double encoding detected
102 || 6 || http_decode: illegal hex values detected
102 || 7 || http_decode: overlong character detected
103 || 1 || spp_defrag: Fragmentation Overflow Detected
103 || 2 || spp_defrag: Stale Fragments Discarded
104 || 1 || spp_anomsensor: SPADE Anomaly Threshold Exceeded
104 || 2 || spp_anomsensor: SPADE Anomaly Threshold Adjusted
105 || 1 || spp_bo: Back Orifice Traffic Detected
105 || 2 || spp_bo: Back Orifice Client Traffic Detected
105 || 3 || spp_bo: Back Orifice Server Traffic Detected
105 || 4 || spp_bo: Back Orifice Snort Buffer Attack
106 || 1 || spp_rpc_decode: Fragmented RPC Records
106 || 2 || spp_rpc_decode: Multiple Records in one packet
106 || 3 || spp_rpc_decode: Large RPC Record Fragment
106 || 4 || spp_rpc_decode: Incomplete RPC segment
106 || 5 || spp_rpc_decode: Zero-length RPC Fragment
110 || 1 || spp_unidecode: CGI NULL Attack
110 || 2 || spp_unidecode: Directory Traversal
110 || 3 || spp_unidecode: Unknown Mapping
110 || 4 || spp_unidecode: Invalid Mapping
111 || 1 || spp_stream4: Stealth Activity Detected
111 || 2 || spp_stream4: Evasive Reset Packet
111 || 3 || spp_stream4: Retransmission
111 || 4 || spp_stream4: Window Violation
111 || 5 || spp_stream4: Data on SYN Packet
111 || 6 || spp_stream4: Full XMAS Stealth Scan
111 || 7 || spp_stream4: SAPU Stealth Scan
111 || 8 || spp_stream4: FIN Stealth Scan
111 || 9 || spp_stream4: NULL Stealth Scan
111 || 10 || spp_stream4: NMAP XMAS Stealth Scan
111 || 11 || spp_stream4: VECNA Stealth Scan
111 || 12 || spp_stream4: NMAP Fingerprint Stateful Detection
111 || 13 || spp_stream4: SYN FIN Stealth Scan
111 || 14 || spp_stream4: TCP forward overlap detected
111 || 15 || spp_stream4: TTL Evasion attempt
111 || 16 || spp_stream4: Evasive retransmitted data attempt
111 || 17 || spp_stream4: Evasive retransmitted data with the data split attempt
111 || 18 || spp_stream4: Multiple acked
111 || 19 || spp_stream4: Shifting to Emergency Session Mode
111 || 20 || spp_stream4: Shifting to Suspend Mode
111 || 21 || spp_stream4: TCP Timestamp option has value of zero
111 || 22 || spp_stream4: Too many overlapping TCP packets
111 || 23 || spp_stream4: Packet in established TCP stream missing ACK
111 || 24 || spp_stream4: Evasive FIN Packet
111 || 25 || spp_stream4: SYN on established
112 || 1 || spp_arpspoof: Directed ARP Request
112 || 2 || spp_arpspoof: Etherframe ARP Mismatch SRC
112 || 3 || spp_arpspoof: Etherframe ARP Mismatch DST
112 || 4 || spp_arpspoof: ARP Cache Overwrite Attack
113 || 1 || spp_frag2: Oversized Frag
113 || 2 || spp_frag2: Teardrop/Fragmentation Overlap Attack
113 || 3 || spp_frag2: TTL evasion detected
113 || 4 || spp_frag2: overlap detected
113 || 5 || spp_frag2: Duplicate first fragments
113 || 6 || spp_frag2: memcap exceeded
113 || 7 || spp_frag2: Out of order fragments
113 || 8 || spp_frag2: IP Options on Fragmented Packet
113 || 9 || spp_frag2: Shifting to Emegency Session Mode
113 || 10 || spp_frag2: Shifting to Suspend Mode
114 || 1 || spp_fnord: Possible Mutated GENERIC NOP Sled detected
114 || 2 || spp_fnord: Possible Mutated IA32 NOP Sled detected
114 || 3 || spp_fnord: Possible Mutated HPPA NOP Sled detected
114 || 4 || spp_fnord: Possible Mutated SPARC NOP Sled detected
115 || 1 || spp_asn1: Indefinite ASN.1 length encoding
115 || 2 || spp_asn1: Invalid ASN.1 length encoding
115 || 3 || spp_asn1: ASN.1 oversized item, possible overflow
115 || 4 || spp_asn1: ASN.1 spec violation, possible overflow
115 || 5 || spp_asn1: ASN.1 Attack: Datum length > packet length
116 || 1 || snort_decoder: WARNING: Not IPv4 datagram
116 || 2 || snort_decoder: WARNING: hlen < IP_HEADER_LEN
116 || 3 || snort_decoder: WARNING: IP dgm len < IP Hdr len
116 || 4 || snort_decoder: WARNING: Bad IPv4 Options
116 || 5 || snort_decoder: WARNING: Truncated IPv4 Options
116 || 6 || snort_decoder: WARNING: IP dgm len > captured len
116 || 45 || snort_decoder: WARNING: TCP packet len is smaller than 20 bytes
116 || 46 || snort_decoder: WARNING: TCP Data Offset is less than 5
116 || 47 || snort_decoder: WARNING: TCP Data Offset is longer than payload
116 || 54 || snort_decoder: WARNING: Tcp Options found with bad lengths
116 || 55 || snort_decoder: WARNING: Truncated Tcp Options
116 || 56 || snort_decoder: WARNING: T/TCP Detected
116 || 57 || snort_decoder: WARNING: Obsolete TCP options
116 || 58 || snort_decoder: WARNING: Experimental TCP options
116 || 59 || snort_decoder: WARNING: TCP Window Scale Option Scale Invalid (> 14)
116 || 95 || snort_decoder: WARNING: Truncated UDP Header
116 || 96 || snort_decoder: WARNING: Invalid UDP header, length field < 8
116 || 97 || snort_decoder: WARNING: Short UDP packet, length field > payload length
116 || 98 || snort_decoder: WARNING: Long UDP packet, length field < payload length
116 || 105 || snort_decoder: WARNING: ICMP Header Truncated
116 || 106 || snort_decoder: WARNING: ICMP Timestamp Header Truncated
116 || 107 || snort_decoder: WARNING: ICMP Address Header Truncated
116 || 108 || snort_decoder: WARNING: Unknown Datagram decoding problem
116 || 109 || snort_decoder: WARNING: Truncated ARP Packet
116 || 110 || snort_decoder: WARNING: Truncated EAP Header
116 || 111 || snort_decoder: WARNING: EAP Key Truncated
116 || 112 || snort_decoder: WARNING: EAP Header Truncated
116 || 120 || snort_decoder: WARNING: Bad PPPOE frame detected
116 || 130 || snort_decoder: WARNING: Bad VLAN Frame
116 || 131 || snort_decoder: WARNING: Bad LLC header
116 || 132 || snort_decoder: WARNING: Bad Extra LLC Info
116 || 133 || snort_decoder: WARNING: Bad 802.11 LLC header
116 || 134 || snort_decoder: WARNING: Bad 802.11 Extra LLC Info
116 || 140 || snort_decoder: WARNING: Bad Token Ring Header
116 || 141 || snort_decoder: WARNING: Bad Token Ring ETHLLC Header
116 || 142 || snort_decoder: WARNING: Bad Token Ring MRLEN Header
116 || 143 || snort_decoder: WARNING: Bad Token Ring MR Header
116 || 150 || snort_decoder: WARNING: Bad Traffic Loopback IP
116 || 151 || snort_decoder: WARNING: Bad Traffic Same Src/Dst IP
116 || 160 || snort_decoder: WARNING: GRE header length > payload length
116 || 161 || snort_decoder: WARNING: Multiple encapsulations in packet
116 || 162 || snort_decoder: WARNING: Invalid GRE version
116 || 163 || snort_decoder: WARNING: Invalid GRE v.0 header
116 || 164 || snort_decoder: WARNING: Invalid GRE v.1 PPTP header
116 || 165 || snort_decoder: WARNING: GRE Trans header length > payload length
116 || 170 || snort_decoder: WARNING: Bad MPLS Frame
116 || 171 || snort_decoder: WARNING: MPLS Label 0 Appears in Nonbottom Header
116 || 172 || snort_decoder: WARNING: MPLS Label 1 Appears in Bottom Header
116 || 173 || snort_decoder: WARNING: MPLS Label 2 Appears in Nonbottom Header
116 || 174 || snort_decoder: WARNING: Bad use of label 3
116 || 175 || snort_decoder: WARNING: MPLS Label 4, 5,.. or 15 Appears in Header
116 || 176 || snort_decoder: WARNING: Too Many MPLS headers
116 || 250 || snort_decoder: WARNING: ICMP Original IP Header Truncated
116 || 251 || snort_decoder: WARNING: ICMP Original IP Header Not IPv4
116 || 252 || snort_decoder: WARNING: ICMP Original Datagram Length < Original IP Header Length
116 || 253 || snort_decoder: WARNING: ICMP Original IP Payload < 64 bits
116 || 254 || snort_decoder: WARNING: ICMP Original IP Payload > 576 bytes
116 || 255 || snort_decoder: WARNING: ICMP Original IP Fragmented and Offset Not 0
116 || 270 || snort_decoder: WARNING: IPV6 packet exceeded TTL limit
116 || 271 || snort_decoder: WARNING: IPv6 header claims to not be IPv6
116 || 272 || snort_decoder: WARNING: IPV6 truncated extension header
116 || 273 || snort_decoder: WARNING: IPV6 truncated header
116 || 274 || snort_decoder: WARNING: IPV6 dgm len < IPV6 Hdr len
116 || 275 || snort_decoder: WARNING: IPV6 dgm len > captured len
116 || 276 || snort_decoder: WARNING: IPv6 packet with destination address ::0
116 || 277 || snort_decoder: WARNING: IPv6 packet with multicast source address
116 || 278 || snort_decoder: WARNING: IPv6 packet with reserved multicast destination address
116 || 279 || snort_decoder: WARNING: IPv6 header includes an undefined option type
116 || 280 || snort_decoder: WARNING: IPv6 address includes an unassigned multicast scope value
116 || 281 || snort_decoder: WARNING: IPv6 header includes an invalid value for the "next header" field
116 || 282 || snort_decoder: WARNING: IPv6 header includes a routing extension header followed by a hop-by-hop header
116 || 283 || snort_decoder: WARNING: IPv6 header includes two routing extension headers
116 || 285 || snort_decoder: WARNING: ICMPv6 packet of type 2 (message too big) with MTU field < 1280
116 || 286 || snort_decoder: WARNING: ICMPv6 packet of type 1 (destination unreachable) with non-RFC 2463 code
116 || 287 || snort_decoder: WARNING: ICMPv6 router solicitation packet with a code not equal to 0
116 || 288 || snort_decoder: WARNING: ICMPv6 router advertisement packet with a code not equal to 0
116 || 289 || snort_decoder: WARNING: ICMPv6 router solicitation packet with the reserved field not equal to 0
116 || 290 || snort_decoder: WARNING: ICMPv6 router advertisement packet with the reachable time field set > 1 hour
116 || 291 || snort_decoder: WARNING: IPV6 tunneled over IPv4, IPv6 header truncated, possible Linux Kernel attack
116 || 292 || snort_decoder: WARNING: IPv6 header has destination options followed by a routing header
116 || 293 || snort_decoder: WARNING: Two or more IP (v4 and/or v6) encapsulation layers present
116 || 294 || snort_decoder: WARNING: truncated Encapsulated Security Payload (ESP) header
116 || 295 || snort_decoder: WARNING: IPv6 header includes an option which is too big for the containing header.
116 || 296 || snort_decoder: WARNING: IPv6 packet includes out-of-order extension headers
116 || 297 || snort_decoder: WARNING: Two or more GTP encapsulation layers are present
116 || 298 || snort_decoder: WARNING: GTP header length is invalid
116 || 400 || snort_decoder: WARNING: XMAS Attack Detected
116 || 401 || snort_decoder: WARNING: Nmap XMAS Attack Detected
116 || 402 || snort_decoder: WARNING: DOS NAPTHA Vulnerability Detected
116 || 403 || snort_decoder: WARNING: Bad Traffic SYN to multicast address
116 || 404 || snort_decoder: WARNING: IPV4 packet with zero TTL
116 || 405 || snort_decoder: WARNING: IPV4 packet with bad frag bits (Both MF and DF set)
116 || 406 || snort_decoder: WARNING: Invalid IPv6 UDP packet, checksum zero
116 || 407 || snort_decoder: WARNING: IPV4 packet frag offset + length exceed maximum
116 || 408 || snort_decoder: WARNING: IPV4 packet from 'current net' source address
116 || 409 || snort_decoder: WARNING: IPV4 packet to 'current net' dest address
116 || 410 || snort_decoder: WARNING: IPV4 packet from multicast source address
116 || 411 || snort_decoder: WARNING: IPV4 packet from reserved source address
116 || 412 || snort_decoder: WARNING: IPV4 packet to reserved dest address
116 || 413 || snort_decoder: WARNING: IPV4 packet from broadcast source address
116 || 414 || snort_decoder: WARNING: IPV4 packet to broadcast dest address
116 || 415 || snort_decoder: WARNING: ICMP4 packet to multicast dest address
116 || 416 || snort_decoder: WARNING: ICMP4 packet to broadcast dest address
116 || 417 || snort_decoder: WARNING: ICMP4 source quence
116 || 418 || snort_decoder: WARNING: ICMP4 type other
116 || 419 || snort_decoder: WARNING: TCP urgent pointer exceeds payload length or no payload
116 || 420 || snort_decoder: WARNING: TCP SYN with FIN
116 || 421 || snort_decoder: WARNING: TCP SYN with RST
116 || 422 || snort_decoder: WARNING: TCP PDU missing ack for established session
116 || 423 || snort_decoder: WARNING: TCP has no SYN, ACK, or RST
116 || 424 || snort_decoder: WARNING: truncated eth header
116 || 425 || snort_decoder: WARNING: truncated IP4 header
116 || 426 || snort_decoder: WARNING: truncated ICMP4 header
116 || 427 || snort_decoder: WARNING: truncated ICMP6 header
116 || 428 || snort_decoder: WARNING: IPV4 packet below TTL limit
116 || 429 || snort_decoder: WARNING: IPV6 packet has zero hop limit
116 || 430 || snort_decoder: WARNING: IPV4 packet both DF and offset set
116 || 431 || snort_decoder: WARNING: ICMP6 type not decoded
116 || 432 || snort_decoder: WARNING: ICMP6 packet to multicast address
116 || 433 || snort_decoder: WARNING: DDOS shaft synflood
116 || 434 || snort_decoder: WARNING: ICMP PING NMAP
116 || 435 || snort_decoder: WARNING: ICMP icmpenum v1.1.1
116 || 436 || snort_decoder: WARNING: ICMP redirect host
116 || 437 || snort_decoder: WARNING: ICMP redirect net
116 || 438 || snort_decoder: WARNING: ICMP traceroute ipopts
116 || 439 || snort_decoder: WARNING: ICMP Source Quench
116 || 440 || snort_decoder: WARNING: Broadscan Smurf Scanner
116 || 441 || snort_decoder: WARNING: ICMP Destination Unreachable Communication Administratively Prohibited
116 || 442 || snort_decoder: WARNING: ICMP Destination Unreachable Communication with Destination Host is Administratively Prohibited
116 || 443 || snort_decoder: WARNING: ICMP Destination Unreachable Communication with Destination Network is Administratively Prohibited
116 || 444 || snort_decoder: WARNING: MISC IP option set
116 || 445 || snort_decoder: WARNING: MISC Large UDP Packet
116 || 446 || snort_decoder: WARNING: BAD-TRAFFIC TCP port 0 traffic
116 || 447 || snort_decoder: WARNING: BAD-TRAFFIC UDP port 0 traffic
116 || 448 || snort_decoder: WARNING: BAD-TRAFFIC IP reserved bit set
116 || 449 || snort_decoder: WARNING: BAD-TRAFFIC Unassigned/Reserved IP protocol
116 || 450 || snort_decoder: WARNING: BAD-TRAFFIC Bad IP protocol
116 || 451 || snort_decoder: WARNING: ICMP PATH MTU denial of service attempt
116 || 452 || snort_decoder: WARNING: BAD-TRAFFIC linux ICMP header dos attempt
116 || 453 || snort_decoder: WARNING: IPV6 ISATAP spoof
116 || 454 || snort_decoder: WARNING: PGM NAK overflow
116 || 455 || snort_decoder: WARNING: IGMP options dos
116 || 456 || snort_decoder: WARNING: too many IPV6 extension headers
116 || 457 || snort_decoder: WARNING: ICMPv6 packet of type 1 (destination unreachable) with non-RFC 4443 code
116 || 458 || snort_decoder: WARNING: bogus fragmentation packet. Possible BSD attack
116 || 459 || snort_decoder: WARNING: zero length fragment
116 || 460 || snort_decoder: WARNING: ICMPv6 node info query/response packet with a code greater than 2
116 || 461 || snort_decoder: WARNING: Deprecated IPv6 Type 0 Routing Header
116 || 462 || snort_decoder: WARNING: ERSpan Header version mismatch
116 || 463 || snort_decoder: WARNING: captured < ERSpan Type2 Header Length
116 || 464 || snort_decoder: WARNING: captured < ERSpan Type3 Header Length
117 || 1 || spp_portscan2: Portscan detected
118 || 1 || spp_conversation: Bad IP protocol
119 || 1 || http_inspect: ASCII ENCODING
119 || 2 || http_inspect: DOUBLE DECODING ATTACK
119 || 3 || http_inspect: U ENCODING
119 || 4 || http_inspect: BARE BYTE UNICODE ENCODING
119 || 5 || http_inspect: BASE36 ENCODING
119 || 6 || http_inspect: UTF-8 ENCODING
119 || 7 || http_inspect: IIS UNICODE CODEPOINT ENCODING
119 || 8 || http_inspect: MULTI_SLASH ENCODING
119 || 9 || http_inspect: IIS BACKSLASH EVASION
119 || 10 || http_inspect: SELF DIRECTORY TRAVERSAL
119 || 11 || http_inspect: DIRECTORY TRAVERSAL
119 || 12 || http_inspect: APACHE WHITESPACE (TAB)
119 || 13 || http_inspect: NON-RFC HTTP DELIMITER
119 || 14 || http_inspect: NON-RFC DEFINED CHAR
119 || 15 || http_inspect: OVERSIZE REQUEST-URI DIRECTORY
119 || 16 || http_inspect: OVERSIZE CHUNK ENCODING
119 || 17 || http_inspect: UNAUTHORIZED PROXY USE DETECTED
119 || 18 || http_inspect: WEBROOT DIRECTORY TRAVERSAL
119 || 19 || http_inspect: LONG HEADER
119 || 20 || http_inspect: MAX HEADERS
119 || 21 || http_inspect: MULTIPLE CONTENT LENGTH HEADER FIELDS
119 || 22 || http_inspect: CHUNK SIZE MISMATCH DETECTED
119 || 23 || http_inspect: INVALID IP IN TRUE-CLIENT-IP/XFF HEADER
119 || 24 || http_inspect: MULTIPLE HOST HEADERS DETECTED
119 || 25 || http_inspect: HOSTNAME EXCEEDS 255 CHARACTERS
119 || 26 || http_inspect: HEADER PARSING SPACE SATURATION
119 || 27 || http_inspect: CHUNKED ENCODING - EXCESSIVE CONSECUTIVE SMALL CHUNKS
119 || 28 || http_inspect: POST W/O CONTENT-LENGTH OR CHUNKS
119 || 29 || http_inspect: MULTIPLE TRUE IPS IN A SESSION
119 || 30 || http_inspect: BOTH TRUE_CLIENT_IP AND XFF HDRS PRESENT
119 || 31 || http_inspect: UNKNOWN METHOD
119 || 32 || http_inspect: SIMPLE REQUEST
119 || 33 || http_inspect: UNESCAPED SPACE IN HTTP URI
119 || 34 || http_inspect: TOO MANY PIPELINED REQUESTS
120 || 1 || http_inspect: ANOMALOUS HTTP SERVER ON UNDEFINED HTTP PORT
120 || 2 || http_inspect: INVALID STATUS CODE IN HTTP RESPONSE
120 || 3 || http_inspect: NO CONTENT-LENGTH OR TRANSFER-ENCODING IN HTTP RESPONSE
120 || 4 || http_inspect: HTTP RESPONSE HAS UTF CHARSET WHICH FAILED TO NORMALIZE
120 || 5 || http_inspect: HTTP RESPONSE HAS UTF-7 CHARSET
120 || 6 || http_inspect: HTTP RESPONSE GZIP DECOMPRESSION FAILED
120 || 7 || http_inspect: CHUNKED ENCODING - EXCESSIVE CONSECUTIVE SMALL CHUNKS
120 || 8 || http_inspect: MESSAGE WITH INVALID CONTENT-LENGTH OR CHUNK SIZE
120 || 9 || http_inspect: JAVASCRIPT OBFUSCATION LEVELS EXCEEDS 1
120 || 10 || http_inspect: JAVASCRIPT WHITESPACES EXCEEDS MAX ALLOWED
120 || 11 || http_inspect: MULTIPLE ENCODINGS WITHIN JAVASCRIPT OBFUSCATED DATA
121 || 1 || flow-portscan: Fixed Scale Scanner Limit Exceeded
121 || 2 || flow-portscan: Sliding Scale Scanner Limit Exceeded
121 || 3 || flow-portscan: Fixed Scale Talker Limit Exceeded
121 || 4 || flow-portscan: Sliding Scale Talker Limit Exceeded
122 || 1 || portscan: TCP Portscan
122 || 2 || portscan: TCP Decoy Portscan
122 || 3 || portscan: TCP Portsweep
122 || 4 || portscan: TCP Distributed Portscan
122 || 5 || portscan: TCP Filtered Portscan
122 || 6 || portscan: TCP Filtered Decoy Portscan
122 || 7 || portscan: TCP Filtered Portsweep
122 || 8 || portscan: TCP Filtered Distributed Portscan
122 || 9 || portscan: IP Protocol Scan
122 || 10 || portscan: IP Decoy Protocol Scan
122 || 11 || portscan: IP Protocol Sweep
122 || 12 || portscan: IP Distributed Protocol Scan
122 || 13 || portscan: IP Filtered Protocol Scan
122 || 14 || portscan: IP Filtered Decoy Protocol Scan
122 || 15 || portscan: IP Filtered Protocol Sweep
122 || 16 || portscan: IP Filtered Distributed Protocol Scan
122 || 17 || portscan: UDP Portscan
122 || 18 || portscan: UDP Decoy Portscan
122 || 19 || portscan: UDP Portsweep
122 || 20 || portscan: UDP Distributed Portscan
122 || 21 || portscan: UDP Filtered Portscan
122 || 22 || portscan: UDP Filtered Decoy Portscan
122 || 23 || portscan: UDP Filtered Portsweep
122 || 24 || portscan: UDP Filtered Distributed Portscan
122 || 25 || portscan: ICMP Sweep
122 || 26 || portscan: ICMP Filtered Sweep
122 || 27 || portscan: Open Port
123 || 1 || frag3: IP Options on fragmented packet
123 || 2 || frag3: Teardrop attack
123 || 3 || frag3: Short fragment, possible DoS attempt
123 || 4 || frag3: Fragment packet ends after defragmented packet
123 || 5 || frag3: Zero-byte fragment
123 || 6 || frag3: Bad fragment size, packet size is negative
123 || 7 || frag3: Bad fragment size, packet size is greater than 65536
123 || 8 || frag3: Fragmentation overlap
123 || 9 || frag3: IPv6 BSD mbufs remote kernel buffer overflow
123 || 10 || frag3: Bogus fragmentation packet. Possible BSD attack
123 || 11 || frag3: TTL value less than configured minimum, not using for reassembly
123 || 12 || frag3: Number of overlapping fragments exceed configured limit
123 || 13 || frag3: Fragments smaller than configured min_fragment_length
124 || 1 || smtp: Attempted command buffer overflow
124 || 2 || smtp: Attempted data header buffer overflow
124 || 3 || smtp: Attempted response buffer overflow
124 || 4 || smtp: Attempted specific command buffer overflow
124 || 5 || smtp: Unknown command
124 || 6 || smtp: Illegal command
124 || 7 || smtp: Attempted header name buffer overflow
124 || 8 || smtp: Attempted X-Link2State command buffer overflow
124 || 9 || smtp: No memory available for decoding. Max Mime Mem exceeded.
124 || 10 || smtp: Base64 Decoding failed
124 || 11 || smtp: Quoted-Printable Decoding failed
124 || 12 || smtp: Non-Encoded MIME attachment Extraction failed
124 || 13 || smtp: Unix-to-Unix Decoding failed
124 || 14 || smtp: Cyrus SASL authentication attack
125 || 1 || ftp_pp: Telnet command on FTP command channel
125 || 2 || ftp_pp: Invalid FTP command
125 || 3 || ftp_pp: FTP parameter length overflow
125 || 4 || ftp_pp: FTP malformed parameter
125 || 5 || ftp_pp: Possible string format attempt in FTP command/parameter
125 || 6 || ftp_pp: FTP response length overflow
125 || 7 || ftp_pp: FTP command channel encrypted
125 || 8 || ftp_pp: FTP bounce attack
125 || 9 || ftp_pp: Evasive Telnet command on FTP command channel
126 || 1 || telnet_pp: Telnet consecutive AYT overflow
126 || 2 || telnet_pp: Telnet data encrypted
126 || 3 || telnet_pp: Subnegotiation Begin without matching Subnegotiation End
128 || 1 || ssh: Gobbles exploit
128 || 2 || ssh: SSH1 CRC32 exploit
128 || 3 || ssh: Server version string overflow
128 || 4 || ssh: Protocol mismatch
128 || 5 || ssh: Bad message direction
128 || 6 || ssh: Payload size incorrect for the given payload
128 || 7 || ssh: Failed to detect SSH version string
129 || 1 || stream5: SYN on established session
129 || 2 || stream5: Data on SYN packet
129 || 3 || stream5: Data sent on stream not accepting data
129 || 4 || stream5: TCP Timestamp is outside of PAWS window
129 || 5 || stream5: Bad segment, overlap adjusted size less than/equal 0
129 || 6 || stream5: Window size (after scaling) larger than policy allows
129 || 7 || stream5: Limit on number of overlapping TCP packets reached
129 || 8 || stream5: Data sent on stream after TCP Reset
129 || 9 || stream5: TCP Client possibly hijacked, different Ethernet Address
129 || 10 || stream5: TCP Server possibly hijacked, different Ethernet Address
129 || 11 || stream5: TCP Data with no TCP Flags set
129 || 12 || stream5: TCP Small Segment Threshold Exceeded
129 || 13 || stream5: TCP 4-way handshake detected
129 || 14 || stream5: TCP Timestamp is missing
129 || 15 || stream5: Reset outside window
129 || 16 || stream5: FIN number is greater than prior FIN
129 || 17 || stream5: ACK number is greater than prior FIN
129 || 18 || stream5: Data sent on stream after TCP Reset received
129 || 19 || stream5: TCP window closed before receiving data
129 || 20 || stream5: TCP session without 3-way handshake
130 || 1 || dcerpc: Maximum memory usage reached
131 || 1 || dns: Obsolete DNS RData Type
131 || 2 || dns: Experimental DNS RData Type
131 || 3 || dns: Client RData TXT Overflow
133 || 1 || dcerpc2: Memory cap exceeded
133 || 2 || dcerpc2: SMB - Bad NetBIOS Session Service session type
133 || 3 || dcerpc2: SMB - Bad SMB message type
133 || 4 || dcerpc2: SMB - Bad SMB Id (not "\xffSMB" for SMB1 or not "\xfeSMB" for SMB2)
133 || 5 || dcerpc2: SMB - Bad word count or structure size for command
133 || 6 || dcerpc2: SMB - Bad byte count for command
133 || 7 || dcerpc2: SMB - Bad format type for command
133 || 8 || dcerpc2: SMB - Bad AndX or data offset in command
133 || 9 || dcerpc2: SMB - Zero total data count in command
133 || 10 || dcerpc2: SMB - NetBIOS data length less than SMB header length
133 || 11 || dcerpc2: SMB - Remaining NetBIOS data length less than command length
133 || 12 || dcerpc2: SMB - Remaining NetBIOS data length less than command byte count
133 || 13 || dcerpc2: SMB - Remaining NetBIOS data length less than command data size
133 || 14 || dcerpc2: SMB - Remaining total data count less than this command data size
133 || 15 || dcerpc2: SMB - Total data sent greater than command total data expected
133 || 16 || dcerpc2: SMB - Byte count less than command data size
133 || 17 || dcerpc2: SMB - Invalid command data size for byte count
133 || 18 || dcerpc2: SMB - Excessive Tree Connect requests with pending Tree Connect responses
133 || 19 || dcerpc2: SMB - Excessive Read requests with pending Read responses
133 || 20 || dcerpc2: SMB - Excessive command chaining
133 || 21 || dcerpc2: SMB - Multiple chained login requests
133 || 22 || dcerpc2: SMB - Multiple chained tree connect requests
133 || 23 || dcerpc2: SMB - Chained/Compounded login followed by logoff
133 || 24 || dcerpc2: SMB - Chained/Compounded tree connect followed by tree disconnect
133 || 25 || dcerpc2: SMB - Chained/Compounded open pipe followed by close pipe
133 || 26 || dcerpc2: SMB - Invalid share access
133 || 27 || dcerpc2: Connection-oriented DCE/RPC - Invalid major version
133 || 28 || dcerpc2: Connection-oriented DCE/RPC - Invalid minor version
133 || 29 || dcerpc2: Connection-oriented DCE/RPC - Invalid pdu type
133 || 30 || dcerpc2: Connection-oriented DCE/RPC - Fragment length less than header size
133 || 31 || dcerpc2: Connection-oriented DCE/RPC - Remaining fragment length less than size needed
133 || 32 || dcerpc2: Connection-oriented DCE/RPC - No context items specified
133 || 33 || dcerpc2: Connection-oriented DCE/RPC - No transfer syntaxes specified
133 || 34 || dcerpc2: Connection-oriented DCE/RPC - Fragment length on non-last fragment less than maximum negotiated fragment transmit size for client
133 || 35 || dcerpc2: Connection-oriented DCE/RPC - Fragment length greater than maximum negotiated fragment transmit size
133 || 36 || dcerpc2: Connection-oriented DCE/RPC - Alter Context byte order different from Bind
133 || 37 || dcerpc2: Connection-oriented DCE/RPC - Call id of non first/last fragment different from call id established for fragmented request
133 || 38 || dcerpc2: Connection-oriented DCE/RPC - Opnum of non first/last fragment different from opnum established for fragmented request
133 || 39 || dcerpc2: Connection-oriented DCE/RPC - Context id of non first/last fragment different from context id established for fragmented request
133 || 40 || dcerpc2: Connectionless DCE/RPC - Invalid major version
133 || 41 || dcerpc2: Connectionless DCE/RPC - Invalid pdu type
133 || 42 || dcerpc2: Connectionless DCE/RPC - Data length less than header size
133 || 43 || dcerpc2: Connectionless DCE/RPC - Bad sequence number
#133 || 44 || dcerpc2: SMB - Invalid SMB version 1 seen
#133 || 45 || dcerpc2: SMB - Invalid SMB version 2 seen
#133 || 46 || dcerpc2: SMB - Invalid user, tree connect, file binding
#133 || 47 || dcerpc2: SMB - Excessive command compounding
133 || 48 || dcerpc2: SMB - Zero data count
133 || 49 || dcerpc2: SMB - Data count mismatch
133 || 50 || dcerpc2: SMB - Maximum number of outstanding requests exceeded
133 || 51 || dcerpc2: SMB - Outstanding requests with the same MID
133 || 52 || dcerpc2: SMB - Deprecated dialect negotiated
133 || 53 || dcerpc2: SMB - Deprecated command used
133 || 54 || dcerpc2: SMB - Unusual command used
133 || 55 || dcerpc2: SMB - Invalid setup count
133 || 56 || dcerpc2: SMB - Client attempted multiple dialect negotiations on session
133 || 57 || dcerpc2: SMB - Client attempted to create or set a file's attributes to readonly/hidden/system
134 || 1 || ppm: rule tree disabled
134 || 2 || ppm: rule tree enabled
134 || 3 || ppm: packet aborted
135 || 1 || internal: syn received
135 || 2 || internal: session established
135 || 3 || internal: session cleared
136 || 1 || reputation: Packet is blacklisted
136 || 2 || reputation: Packet is whitelisted
137 || 1 || ssp_ssl: Invalid Client HELLO after Server HELLO Detected
137 || 2 || ssp_ssl: Invalid Server HELLO without Client HELLO Detected
138 || 2 || sensitive_data: sensitive data - Credit card numbers
138 || 3 || sensitive_data: sensitive data - U.S. social security numbers with dashes
138 || 4 || sensitive_data: sensitive data - U.S. social security numbers without dashes
138 || 5 || sensitive_data: sensitive data - eMail addresses
138 || 6 || sensitive_data: sensitive data - U.S. phone numbers
139 || 1 || sensitive_data: sensitive data global threshold exceeded
140 || 1 || sip: Maximum sessions reached
140 || 2 || sip: Empty request URI
140 || 3 || sip: URI is too long
140 || 4 || sip: Empty call-Id
140 || 5 || sip: Call-Id is too long
140 || 6 || sip: CSeq number is too large or negative
140 || 7 || sip: Request name in CSeq is too long
140 || 8 || sip: Empty From header
140 || 9 || sip: From header is too long
140 || 10 || sip: Empty To header
140 || 11 || sip: To header is too long
140 || 12 || sip: Empty Via header
140 || 13 || sip: Via header is too long
140 || 14 || sip: Empty Contact
140 || 15 || sip: Contact is too long
140 || 16 || sip: Content length is too large or negative
140 || 17 || sip: Multiple SIP messages in a packet
140 || 18 || sip: Content length mismatch
140 || 19 || sip: Request name is invalid
140 || 20 || sip: Invite replay attack
140 || 21 || sip: Illegal session information modification
140 || 22 || sip: Response status code is not a 3 digit number
140 || 23 || sip: Empty Content type
140 || 24 || sip: SIP version other than 2.0, 1.0, and 1.1 are invalid
140 || 25 || sip: Mismatch in Method of request and the CSEQ header
140 || 26 || sip: The method is unknown
140 || 27 || sip: Maximum dialogs in a session reached
141 || 1 || imap: Unknown IMAP4 command
141 || 2 || imap: Unknown IMAP4 response
141 || 3 || imap: No memory available for decoding. Memcap exceeded.
141 || 4 || imap: Base64 Decoding failed
141 || 5 || imap: Quoted-Printable Decoding failed
141 || 6 || imap: Non-Encoded MIME attachment Extraction failed
141 || 7 || imap: Unix-to-Unix Decoding failed
142 || 1 || pop: Unknown POP3 command
142 || 2 || pop: Unknown POP3 response
142 || 3 || pop: No memory available for decoding. Memcap exceeded.
142 || 4 || pop: Base64 Decoding failed
142 || 5 || pop: Quoted-Printable Decoding failed
142 || 6 || pop: Non-Encoded MIME attachment Extraction failed
142 || 7 || pop: Unix-to-Unix Decoding failed
143 || 1 || gtp: Message length is invalid
143 || 2 || gtp: Information element length is invalid
143 || 3 || gtp: Information elements are out of order
144 || 1 || modbus: Length in Modbus MBAP header does not match the length needed for the given Modbus function.
144 || 2 || modbus: Modbus protocol ID is non-zero.
144 || 3 || modbus: Reserved Modbus function code in use.
145 || 1 || dnp3: DNP3 Link-Layer Frame contains bad CRC.
145 || 2 || dnp3: DNP3 Link-Layer Frame was dropped.
145 || 3 || dnp3: DNP3 Transport-Layer Segment was dropped during reassembly.
145 || 4 || dnp3: DNP3 Reassembly Buffer was cleared without reassembling a complete message.
145 || 5 || dnp3: DNP3 Link-Layer Frame uses a reserved address.
145 || 6 || dnp3: DNP3 Application-Layer Fragment uses a reserved function code.
snort-2.9.6.0/etc/classification.config 0000644 0000000 0000000 00000007321 12260606507 014666 0000000 0000000 # $Id$
# The following includes information for prioritizing rules
#
# Each classification includes a shortname, a description, and a default
# priority for that classification.
#
# This allows alerts to be classified and prioritized. You can specify
# what priority each classification has. Any rule can override the default
# priority for that rule.
#
# Here are a few example rules:
#
# alert TCP any any -> any 80 (msg: "EXPLOIT ntpdx overflow";
# dsize: > 128; classtype:attempted-admin; priority:10;
#
# alert TCP any any -> any 25 (msg:"SMTP expn root"; flags:A+; \
# content:"expn root"; nocase; classtype:attempted-recon;)
#
# The first rule will set its type to "attempted-admin" and override
# the default priority for that type to 10.
#
# The second rule set its type to "attempted-recon" and set its
# priority to the default for that type.
#
#
# config classification:shortname,short description,priority
#
config classification: not-suspicious,Not Suspicious Traffic,3
config classification: unknown,Unknown Traffic,3
config classification: bad-unknown,Potentially Bad Traffic, 2
config classification: attempted-recon,Attempted Information Leak,2
config classification: successful-recon-limited,Information Leak,2
config classification: successful-recon-largescale,Large Scale Information Leak,2
config classification: attempted-dos,Attempted Denial of Service,2
config classification: successful-dos,Denial of Service,2
config classification: attempted-user,Attempted User Privilege Gain,1
config classification: unsuccessful-user,Unsuccessful User Privilege Gain,1
config classification: successful-user,Successful User Privilege Gain,1
config classification: attempted-admin,Attempted Administrator Privilege Gain,1
config classification: successful-admin,Successful Administrator Privilege Gain,1
# NEW CLASSIFICATIONS
config classification: rpc-portmap-decode,Decode of an RPC Query,2
config classification: shellcode-detect,Executable Code was Detected,1
config classification: string-detect,A Suspicious String was Detected,3
config classification: suspicious-filename-detect,A Suspicious Filename was Detected,2
config classification: suspicious-login,An Attempted Login Using a Suspicious Username was Detected,2
config classification: system-call-detect,A System Call was Detected,2
config classification: tcp-connection,A TCP Connection was Detected,4
config classification: trojan-activity,A Network Trojan was Detected, 1
config classification: unusual-client-port-connection,A Client was Using an Unusual Port,2
config classification: network-scan,Detection of a Network Scan,3
config classification: denial-of-service,Detection of a Denial of Service Attack,2
config classification: non-standard-protocol,Detection of a Non-Standard Protocol or Event,2
config classification: protocol-command-decode,Generic Protocol Command Decode,3
config classification: web-application-activity,Access to a Potentially Vulnerable Web Application,2
config classification: web-application-attack,Web Application Attack,1
config classification: misc-activity,Misc activity,3
config classification: misc-attack,Misc Attack,2
config classification: icmp-event,Generic ICMP event,3
config classification: inappropriate-content,Inappropriate Content was Detected,1
config classification: policy-violation,Potential Corporate Privacy Violation,1
config classification: default-login-attempt,Attempt to Login By a Default Username and Password,2
config classification: sdf,Sensitive Data was Transmitted Across the Network,2
config classification: file-format,Known malicious file or file based exploit,1
config classification: malware-cnc,Known malware command and control traffic,1
config classification: client-side-exploit,Known client side exploit attempt,1
snort-2.9.6.0/etc/Makefile.am 0000644 0000000 0000000 00000000276 12260355636 012546 0000000 0000000 ## $Id$
AUTOMAKE_OPTIONS=foreign no-dependencies
EXTRA_DIST = snort.conf classification.config gen-msg.map \
reference.config unicode.map threshold.conf attribute_table.dtd file_magic.conf
snort-2.9.6.0/etc/Makefile.in 0000644 0000000 0000000 00000030100 12260606517 012541 0000000 0000000 # Makefile.in generated by automake 1.13.4 from Makefile.am.
# @configure_input@
# Copyright (C) 1994-2013 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.
@SET_MAKE@
VPATH = @srcdir@
am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
am__make_running_with_option = \
case $${target_option-} in \
?) ;; \
*) echo "am__make_running_with_option: internal error: invalid" \
"target option '$${target_option-}' specified" >&2; \
exit 1;; \
esac; \
has_opt=no; \
sane_makeflags=$$MAKEFLAGS; \
if $(am__is_gnu_make); then \
sane_makeflags=$$MFLAGS; \
else \
case $$MAKEFLAGS in \
*\\[\ \ ]*) \
bs=\\; \
sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
| sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
esac; \
fi; \
skip_next=no; \
strip_trailopt () \
{ \
flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
}; \
for flg in $$sane_makeflags; do \
test $$skip_next = yes && { skip_next=no; continue; }; \
case $$flg in \
*=*|--*) continue;; \
-*I) strip_trailopt 'I'; skip_next=yes;; \
-*I?*) strip_trailopt 'I';; \
-*O) strip_trailopt 'O'; skip_next=yes;; \
-*O?*) strip_trailopt 'O';; \
-*l) strip_trailopt 'l'; skip_next=yes;; \
-*l?*) strip_trailopt 'l';; \
-[dEDm]) skip_next=yes;; \
-[JT]) skip_next=yes;; \
esac; \
case $$flg in \
*$$target_option*) has_opt=yes; break;; \
esac; \
done; \
test $$has_opt = yes
am__make_dryrun = (target_option=n; $(am__make_running_with_option))
am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
pkgdatadir = $(datadir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
pkglibexecdir = $(libexecdir)/@PACKAGE@
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
install_sh_DATA = $(install_sh) -c -m 644
install_sh_PROGRAM = $(install_sh) -c
install_sh_SCRIPT = $(install_sh) -c
INSTALL_HEADER = $(INSTALL_DATA)
transform = $(program_transform_name)
NORMAL_INSTALL = :
PRE_INSTALL = :
POST_INSTALL = :
NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
subdir = etc
DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/configure.in
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
mkinstalldirs = $(install_sh) -d
CONFIG_HEADER = $(top_builddir)/config.h
CONFIG_CLEAN_FILES =
CONFIG_CLEAN_VPATH_FILES =
AM_V_P = $(am__v_P_@AM_V@)
am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
am__v_P_0 = false
am__v_P_1 = :
AM_V_GEN = $(am__v_GEN_@AM_V@)
am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
am__v_GEN_0 = @echo " GEN " $@;
am__v_GEN_1 =
AM_V_at = $(am__v_at_@AM_V@)
am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
am__v_at_0 = @
am__v_at_1 =
depcomp =
am__depfiles_maybe =
SOURCES =
DIST_SOURCES =
am__can_run_installinfo = \
case $$AM_UPDATE_INFO_DIR in \
n|no|NO) false;; \
*) (install-info --version) >/dev/null 2>&1;; \
esac
am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
ACLOCAL = @ACLOCAL@
AMTAR = @AMTAR@
AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
AR = @AR@
AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
CC = @CC@
CCDEPMODE = @CCDEPMODE@
CCONFIGFLAGS = @CCONFIGFLAGS@
CFLAGS = @CFLAGS@
CONFIGFLAGS = @CONFIGFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
DLLTOOL = @DLLTOOL@
DSYMUTIL = @DSYMUTIL@
DUMPBIN = @DUMPBIN@
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
FGREP = @FGREP@
GREP = @GREP@
ICONFIGFLAGS = @ICONFIGFLAGS@
INCLUDES = @INCLUDES@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
LD = @LD@
LDFLAGS = @LDFLAGS@
LEX = @LEX@
LIBOBJS = @LIBOBJS@
LIBS = @LIBS@
LIBTOOL = @LIBTOOL@
LIPO = @LIPO@
LN_S = @LN_S@
LTLIBOBJS = @LTLIBOBJS@
MAINT = @MAINT@
MAKEINFO = @MAKEINFO@
MANIFEST_TOOL = @MANIFEST_TOOL@
MKDIR_P = @MKDIR_P@
NM = @NM@
NMEDIT = @NMEDIT@
OBJDUMP = @OBJDUMP@
OBJEXT = @OBJEXT@
OTOOL = @OTOOL@
OTOOL64 = @OTOOL64@
PACKAGE = @PACKAGE@
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
PACKAGE_NAME = @PACKAGE_NAME@
PACKAGE_STRING = @PACKAGE_STRING@
PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_URL = @PACKAGE_URL@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
PKG_CONFIG = @PKG_CONFIG@
PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
RANLIB = @RANLIB@
RAZORBACK_CFLAGS = @RAZORBACK_CFLAGS@
RAZORBACK_LIBS = @RAZORBACK_LIBS@
SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SIGNAL_SNORT_DUMP_STATS = @SIGNAL_SNORT_DUMP_STATS@
SIGNAL_SNORT_READ_ATTR_TBL = @SIGNAL_SNORT_READ_ATTR_TBL@
SIGNAL_SNORT_RELOAD = @SIGNAL_SNORT_RELOAD@
SIGNAL_SNORT_ROTATE_STATS = @SIGNAL_SNORT_ROTATE_STATS@
STRIP = @STRIP@
VERSION = @VERSION@
XCCFLAGS = @XCCFLAGS@
YACC = @YACC@
abs_builddir = @abs_builddir@
abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
abs_top_srcdir = @abs_top_srcdir@
ac_ct_AR = @ac_ct_AR@
ac_ct_CC = @ac_ct_CC@
ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
am__tar = @am__tar@
am__untar = @am__untar@
bindir = @bindir@
build = @build@
build_alias = @build_alias@
build_cpu = @build_cpu@
build_os = @build_os@
build_vendor = @build_vendor@
builddir = @builddir@
datadir = @datadir@
datarootdir = @datarootdir@
docdir = @docdir@
dvidir = @dvidir@
exec_prefix = @exec_prefix@
extra_incl = @extra_incl@
host = @host@
host_alias = @host_alias@
host_cpu = @host_cpu@
host_os = @host_os@
host_vendor = @host_vendor@
htmldir = @htmldir@
includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
libdir = @libdir@
libexecdir = @libexecdir@
localedir = @localedir@
localstatedir = @localstatedir@
mandir = @mandir@
mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
sysconfdir = @sysconfdir@
target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
AUTOMAKE_OPTIONS = foreign no-dependencies
EXTRA_DIST = snort.conf classification.config gen-msg.map \
reference.config unicode.map threshold.conf attribute_table.dtd file_magic.conf
all: all-am
.SUFFIXES:
$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
@for dep in $?; do \
case '$(am__configure_deps)' in \
*$$dep*) \
( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
&& { if test -f $@; then exit 0; else break; fi; }; \
exit 1;; \
esac; \
done; \
echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign etc/Makefile'; \
$(am__cd) $(top_srcdir) && \
$(AUTOMAKE) --foreign etc/Makefile
.PRECIOUS: Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \
*config.status*) \
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
*) \
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
esac;
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(am__aclocal_m4_deps):
mostlyclean-libtool:
-rm -f *.lo
clean-libtool:
-rm -rf .libs _libs
tags TAGS:
ctags CTAGS:
cscope cscopelist:
distdir: $(DISTFILES)
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
list='$(DISTFILES)'; \
dist_files=`for file in $$list; do echo $$file; done | \
sed -e "s|^$$srcdirstrip/||;t" \
-e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
case $$dist_files in \
*/*) $(MKDIR_P) `echo "$$dist_files" | \
sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
sort -u` ;; \
esac; \
for file in $$dist_files; do \
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
if test -d $$d/$$file; then \
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
if test -d "$(distdir)/$$file"; then \
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
fi; \
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
fi; \
cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
else \
test -f "$(distdir)/$$file" \
|| cp -p $$d/$$file "$(distdir)/$$file" \
|| exit 1; \
fi; \
done
check-am: all-am
check: check-am
all-am: Makefile
installdirs:
install: install-am
install-exec: install-exec-am
install-data: install-data-am
uninstall: uninstall-am
install-am: all-am
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
installcheck: installcheck-am
install-strip:
if test -z '$(STRIP)'; then \
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
install; \
else \
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
"INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
fi
mostlyclean-generic:
clean-generic:
distclean-generic:
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
maintainer-clean-generic:
@echo "This command is intended for maintainers to use"
@echo "it deletes files that may require special tools to rebuild."
clean: clean-am
clean-am: clean-generic clean-libtool mostlyclean-am
distclean: distclean-am
-rm -f Makefile
distclean-am: clean-am distclean-generic
dvi: dvi-am
dvi-am:
html: html-am
html-am:
info: info-am
info-am:
install-data-am:
install-dvi: install-dvi-am
install-dvi-am:
install-exec-am:
install-html: install-html-am
install-html-am:
install-info: install-info-am
install-info-am:
install-man:
install-pdf: install-pdf-am
install-pdf-am:
install-ps: install-ps-am
install-ps-am:
installcheck-am:
maintainer-clean: maintainer-clean-am
-rm -f Makefile
maintainer-clean-am: distclean-am maintainer-clean-generic
mostlyclean: mostlyclean-am
mostlyclean-am: mostlyclean-generic mostlyclean-libtool
pdf: pdf-am
pdf-am:
ps: ps-am
ps-am:
uninstall-am:
.MAKE: install-am install-strip
.PHONY: all all-am check check-am clean clean-generic clean-libtool \
cscopelist-am ctags-am distclean distclean-generic \
distclean-libtool distdir dvi dvi-am html html-am info info-am \
install install-am install-data install-data-am install-dvi \
install-dvi-am install-exec install-exec-am install-html \
install-html-am install-info install-info-am install-man \
install-pdf install-pdf-am install-ps install-ps-am \
install-strip installcheck installcheck-am installdirs \
maintainer-clean maintainer-clean-generic mostlyclean \
mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
tags-am uninstall uninstall-am
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:
snort-2.9.6.0/doc/ 0000755 0000000 0000000 00000000000 12260606571 010554 5 0000000 0000000 snort-2.9.6.0/doc/snort_manual.tex 0000644 0000000 0000000 00002402143 12260606571 013726 0000000 0000000 % $Id$
%
% BUILDING HTML VERSION:
% latex2html -info 0 -local_icons -show_section_numbers -link +2 -split +2 -noaddress snort_manual.tex
%
% BUILDING PDF VERSION:
% pdflatex snort_manual.tex
\documentclass[english]{report}
%\usepackage[T1]{fontenc}
\usepackage[latin1]{inputenc}
\usepackage{geometry}
\usepackage{longtable}
\geometry{verbose,letterpaper,tmargin=1in,bmargin=.5in,lmargin=1in,rmargin=1in}
\usepackage{url}
%\IfFileExists{url.sty}{\usepackage{url}}
% {\newcommand{\url}{\texttt}}
\usepackage{html}
% \makeatletter
\newcounter{slistnum}
\newcounter{subslistnum}
\newcounter{subsublistnum}
\newenvironment{slist}
{ \begin{list}{ {\bf \arabic{slistnum}.} }{\usecounter{slistnum} } }
{ \end{list} }
\newenvironment{subslist}
{ \begin{list} { {\bf \arabic{slistnum}-\Alph{subslistnum}. } }
{\usecounter{subslistnum} } }
{ \end{list} }
\newenvironment{subsubslist} {
\begin{list}{
{\bf \arabic{slistnum}-\arabic{subslistnum}-\arabic{subsublistnum}. }
}{
\usecounter{subsubslistnum}
}
}{
\end{list}
}
%\begin{latexonly}
\newsavebox{\savepar}
\newenvironment{note}{
\samepage
\vspace{10pt}{\textsf{
{\hspace{7pt}\Huge{$\triangle$\hspace{-12.5pt}{\Large{$^!$}}}}\hspace{5pt}
{\Large{NOTE}}
}
}
\begin{center}
\par\vspace{-17pt}
\begin{lrbox}{\savepar}
\begin{minipage}[r]{6in}
}
{
\end{minipage}
\end{lrbox}
\fbox{
\usebox{
\savepar
}
}
\par\vskip10pt
\end{center}
}
%\end{latexonly}
\begin{htmlonly}
\newenvironment{note}{
\begin{rawhtml}
Note:
\end{rawhtml}
}{
\begin{rawhtml}
|
\end{rawhtml}
}
\end{htmlonly}
\usepackage{babel}
% \makeatother
\addtolength{\parindent}{-5mm}
\addtolength{\parskip}{2mm}
%\renewcommand\floatpagefraction{.9}
%\renewcommand\topfraction{.9}
%\renewcommand\bottomfraction{.9}
%\renewcommand\textfraction{.1}
%\setcounter{totalnumber}{50}
%\setcounter{topnumber}{50}
%\setcounter{bottomnumber}{50}
\begin{document}
\title{SNORT\textsuperscript{\textregistered} Users Manual\\2.9.6}
\author{The Snort Project}
\maketitle
\newpage
Copyright \copyright 1998-2003 Martin Roesch
Copyright \copyright 2001-2003 Chris Green
Copyright \copyright 2003-2013 Sourcefire, Inc.
Copyright \copyright 2014 Cisco and/or its affiliates. All rights reserved.
\tableofcontents{}
\chapter{Snort Overview}
This manual is based on \emph{Writing Snort Rules} by Martin Roesch and further
work from Chris Green $<$cmg@snort.org$>$. It was then maintained by Brian
Caswell $<$bmc@snort.org$>$ and now is maintained by the Snort Team. If you
have a better way to say something or find that something in the documentation
is outdated, drop us a line and we will update it. If you would like to submit
patches for this document, you can find the latest version of the documentation
in \LaTeX\ format in the most recent source tarball under
\verb!/doc/snort_manual.tex!. Small documentation updates are the easiest way
to help out the Snort Project.
\section{Getting Started}
Snort really isn't very hard to use, but there are a lot of command line
options to play with, and it's not always obvious which ones go together well.
This file aims to make using Snort easier for new users.
Before we proceed, there are a few basic concepts you should understand about
Snort. Snort can be configured to run in three modes:
\begin{itemize}
\item {\em Sniffer mode,} which simply reads the packets off of the network and
displays them for you in a continuous stream on the console (screen).
\item {\em Packet Logger mode,} which logs the packets to disk.
\item {\em Network Intrusion Detection System (NIDS) mode,} which performs
detection and analysis on network traffic. This is the most complex and
configurable mode.
\end{itemize}
\section{Sniffer Mode}
First, let's start with the basics. If you just want to print out the TCP/IP
packet headers to the screen (i.e. sniffer mode), try this:
\begin{verbatim}
./snort -v
\end{verbatim}
This command will run Snort and just show the IP and TCP/UDP/ICMP headers,
nothing else. If you want to see the application data in transit, try the
following:
\begin{verbatim}
./snort -vd
\end{verbatim}
This instructs Snort to display the packet data as well as the headers. If you
want an even more descriptive display, showing the data link layer headers, do
this:
\begin{verbatim}
./snort -vde
\end{verbatim}
As an aside, notice that the command line switches can be listed separately or
in a combined form. The last command could also be typed out as:
\begin{verbatim}
./snort -d -v -e
\end{verbatim}
to produce the same result.
\section{Packet Logger Mode}
OK, all of these commands are pretty cool, but if you want to record the
packets to the disk, you need to specify a logging directory and Snort will
automatically know to go into packet logger mode:
\begin{verbatim}
./snort -dev -l ./log
\end{verbatim}
Of course, this assumes you have a directory named \verb!log! in the current
directory. If you don't, Snort will exit with an error message. When Snort runs
in this mode, it collects every packet it sees and places it in a directory
hierarchy based upon the IP address of one of the hosts in the datagram.
If you just specify a plain -l switch, you may notice that Snort sometimes uses
the address of the remote computer as the directory in which it places packets
and sometimes it uses the local host address. In order to log relative to the
home network, you need to tell Snort which network is the home network:
\begin{verbatim}
./snort -dev -l ./log -h 192.168.1.0/24
\end{verbatim}
This rule tells Snort that you want to print out the data link and TCP/IP
headers as well as application data into the directory \verb!./log!, and you
want to log the packets relative to the 192.168.1.0 class C network. All
incoming packets will be recorded into subdirectories of the log directory,
with the directory names being based on the address of the remote
(non-192.168.1) host.
\begin{note}
Note that if both the source and destination hosts are on the home network,
they are logged to a directory with a name based on the higher of the two port
numbers or, in the case of a tie, the source address.
\end{note}
If you're on a high speed network or you want to log the packets into a more
compact form for later analysis, you should consider logging in binary mode.
Binary mode logs the packets in tcpdump format to a single binary file in the
logging directory:
\begin{verbatim}
./snort -l ./log -b
\end{verbatim}
Note the command line changes here. We don't need to specify a home network any
longer because binary mode logs everything into a single file, which eliminates
the need to tell it how to format the output directory structure. Additionally,
you don't need to run in verbose mode or specify the -d or -e switches because
in binary mode the entire packet is logged, not just sections of it. All you
really need to do to place Snort into logger mode is to specify a logging
directory at the command line using the -l switch---the -b binary logging
switch merely provides a modifier that tells Snort to log the packets in
something other than the default output format of plain ASCII text.
Once the packets have been logged to the binary file, you can read the packets
back out of the file with any sniffer that supports the tcpdump binary format
(such as tcpdump or Ethereal). Snort can also read the packets back by using
the -r switch, which puts it into playback mode. Packets from any tcpdump
formatted file can be processed through Snort in any of its run modes. For
example, if you wanted to run a binary log file through Snort in sniffer mode
to dump the packets to the screen, you can try something like this:
\begin{verbatim}
./snort -dv -r packet.log
\end{verbatim}
You can manipulate the data in the file in a number of ways through Snort's
packet logging and intrusion detection modes, as well as with the BPF interface
that's available from the command line. For example, if you only wanted to see
the ICMP packets from the log file, simply specify a BPF filter at the command
line and Snort will only see the ICMP packets in the file:
\begin{verbatim}
./snort -dvr packet.log icmp
\end{verbatim}
For more info on how to use the BPF interface, read the Snort and tcpdump man
pages.
\section{Network Intrusion Detection System Mode}
To enable Network Intrusion Detection System (NIDS) mode so that you don't
record every single packet sent down the wire, try this:
\begin{verbatim}
./snort -dev -l ./log -h 192.168.1.0/24 -c snort.conf
\end{verbatim}
where \texttt{snort.conf} is the name of your snort configuration file. This will
apply the rules configured in the \verb!snort.conf! file to each packet to decide
if an action based upon the rule type in the file should be taken. If you don't
specify an output directory for the program, it will default to
\verb!/var/log/snort!.
One thing to note about the last command line is that if Snort is going to be
used in a long term way as an IDS, the -v switch should be left off the command
line for the sake of speed. The screen is a slow place to write data to, and
packets can be dropped while writing to the display.
It's also not necessary to record the data link headers for most applications,
so you can usually omit the -e switch, too.
\begin{verbatim}
./snort -d -h 192.168.1.0/24 -l ./log -c snort.conf
\end{verbatim}
This will configure Snort to run in its most basic NIDS form, logging packets
that trigger rules specified in the \texttt{snort.conf} in plain ASCII to disk
using a hierarchical directory structure (just like packet logger mode).
\subsection{NIDS Mode Output Options}
There are a number of ways to configure the output of Snort in NIDS mode. The
default logging and alerting mechanisms are to log in decoded ASCII format and
use full alerts. The full alert mechanism prints out the alert message in
addition to the full packet headers. There are several other alert output modes
available at the command line, as well as two logging facilities.
Alert modes are somewhat more complex. There are seven alert modes available at
the command line: full, fast, socket, syslog, console, cmg, and none. Six of
these modes are accessed with the -A command line switch. These options are:
\begin{center}
\begin{tabular}{| l | p{5.4in} |}
\hline
{\bf Option} & {\bf Description}\\
\hline
\hline
{\tt -A fast} &
Fast alert mode. Writes the alert in a simple format with a timestamp, alert
message, source and destination IPs/ports.\\
\hline
{\tt -A full} &
Full alert mode. This is the default alert mode and will be used automatically
if you do not specify a mode.\\
\hline
{\tt -A unsock} &
Sends alerts to a UNIX socket that another program can listen on.\\
\hline
{\tt -A none} &
Turns off alerting.\\
\hline
{\tt -A console} &
Sends ``fast-style'' alerts to the console (screen).\\
\hline
{\tt -A cmg} &
Generates ``cmg style'' alerts.\\
\hline
\end{tabular}
\end{center}
Packets can be logged to their default decoded ASCII format or to a binary log
file via the -b command line switch. To disable packet logging altogether, use
the -N command line switch.
For output modes available through the configuration file, see Section
\ref{output config}.
\begin{note}
Command line logging options override any output options specified in the
configuration file. This allows debugging of configuration issues quickly via
the command line.
\end{note}
To send alerts to syslog, use the -s switch. The default facilities for the
syslog alerting mechanism are LOG\_AUTHPRIV and LOG\_ALERT. If you want to
configure other facilities for syslog output, use the output plugin directives
in snort.conf. See Section \ref{alert syslog label} for more details on
configuring syslog output.
For example, use the following command line to log to default (decoded ASCII)
facility and send alerts to syslog:
\begin{verbatim}
./snort -c snort.conf -l ./log -h 192.168.1.0/24 -s
\end{verbatim}
As another example, use the following command line to log to the default
facility in /var/log/snort and send alerts to a fast alert file:
\begin{verbatim}
./snort -c snort.conf -A fast -h 192.168.1.0/24
\end{verbatim}
\subsection{Understanding Standard Alert Output}
When Snort generates an alert message, it will usually look like the following:
\begin{verbatim}
[**] [116:56:1] (snort_decoder): T/TCP Detected [**]
\end{verbatim}
The first number is the Generator ID, this tells the user what component of
Snort generated this alert. For a list of GIDs, please read etc/generators in
the Snort source. In this case, we know that this event came from the
``decode'' (116) component of Snort.
The second number is the Snort ID (sometimes referred to as Signature ID).
For a list of preprocessor SIDs, please see etc/gen-msg.map. Rule-based SIDs
are written directly into the rules with the \emph{sid} option. In this case,
\emph{56} represents a T/TCP event.
The third number is the revision ID. This number is primarily used when
writing signatures, as each rendition of the rule should increment this number
with the \emph{rev} option.
\subsection{High Performance Configuration}
If you want Snort to go \emph{fast} (like keep up with a 1000 Mbps connection),
you need to use unified2 logging and a unified2 log reader such as
\emph{barnyard2}. This allows Snort to log alerts in a binary form as fast as
possible while another program performs the slow actions, such as writing to a
database.
If you want a text file that's easily parsed, but still somewhat fast, try
using binary logging with the ``fast'' output mechanism.
This will log packets in tcpdump format and produce minimal alerts. For
example:
\begin{verbatim}
./snort -b -A fast -c snort.conf
\end{verbatim}
\subsection{Changing Alert Order}
The default way in which Snort applies its rules to packets may not be
appropriate for all installations. The Pass rules are applied first, then the
Drop rules, then the Alert rules and finally, Log rules are applied.
\begin{note}
Sometimes an errant pass rule could cause alerts to not show up, in
which case you can change the default ordering to allow Alert rules
to be applied before Pass rules. For more information, please refer
to the \texttt{--alert-before-pass} option.
\end{note}
Several command line options are available to change the order in
which rule actions are taken.
\begin{itemize}
\item \texttt{--alert-before-pass} option forces alert rules to take
affect in favor of a pass rule.
\item \texttt{--treat-drop-as-alert} causes drop and reject rules and
any associated alerts to be logged as alerts, rather then the normal
action. This allows use of an inline policy with passive/IDS mode.
The sdrop rules are not loaded.
\item \texttt{--process-all-events} option causes Snort to process
every event associated with a packet, while taking the actions based
on the rules ordering. Without this option (default case), only the
events for the first action based on rules ordering are processed.
\end{itemize}
\begin{note}
Pass rules are special cases here, in that the event processing is terminated
when a pass rule is encountered, regardless of the use of
\texttt{--process-all-events}.
\end{note}
\section{Packet Acquisition}
Snort 2.9 introduces the DAQ, or Data Acquisition library, for packet I/O. The
DAQ replaces direct calls to libpcap functions with an abstraction layer that
facilitates operation on a variety of hardware and software interfaces without
requiring changes to Snort. It is possible to select the DAQ type and mode
when invoking Snort to perform pcap readback or inline operation, etc.
\begin{note}
Some network cards have features named "Large Receive Offload" (lro) and "Generic
Receive Offload" (gro). With these features enabled, the network card performs
packet reassembly before they're processed by the kernel.
By default, Snort will truncate packets larger than the default snaplen of 1518
bytes. In addition, LRO and GRO may cause issues with Stream5 target-based
reassembly. We recommend that you turn off LRO and GRO. On linux systems, you can run:
\begin{verbatim}
$ ethtool -K eth1 gro off
$ ethtool -K eth1 lro off
\end{verbatim}
\end{note}
\subsection{Configuration}
Assuming that you did not disable static modules or change the default DAQ
type, you can run Snort just as you always did for file readback or sniffing an
interface. However, you can select and configure the DAQ when Snort is invoked
as follows:
\begin{verbatim}
./snort \
[--daq ] \
[--daq-mode ] \
[--daq-dir ] \
[--daq-var ]
config daq:
config daq_dir:
config daq_var:
config daq_mode:
::= pcap | afpacket | dump | nfq | ipq | ipfw
::= read-file | passive | inline
::= arbitrary = passed to DAQ
::= path where to look for DAQ module so's
\end{verbatim}
The DAQ type, mode, variable, and directory may be specified either via the
command line or in the conf file. You may include as many variables and
directories as needed by repeating the arg / config. DAQ type may be specified
at most once in the conf and once on the command line; if configured in both
places, the command line overrides the conf.
If the mode is not set explicitly, -Q will force it to inline, and if that
hasn't been set, -r will force it to read-file, and if that hasn't been set,
the mode defaults to passive. Also, -Q and --daq-mode inline are allowed,
since there is no conflict, but -Q and any other DAQ mode will cause a fatal
error at start-up.
Note that if Snort finds multiple versions of a given library, the most recent
version is selected. This applies to static and dynamic versions of the same
library.
\begin{verbatim}
./snort --daq-list[=]
./snort --daq-dir= --daq-list
\end{verbatim}
The above commands search the specified directories for DAQ modules and print
type, version, and attributes of each. This feature is not available in the
conf. Snort stops processing after parsing --daq-list so if you want to add
one or more directories add --daq-dir options before --daq-list on the command
line. (Since the directory is optional to --daq-list, you must use an =
without spaces for this option.)
\subsection{pcap}
pcap is the default DAQ. if snort is run w/o any DAQ arguments, it will
operate as it always did using this module. These are equivalent:
\begin{verbatim}
./snort -i
./snort -r
./snort --daq pcap --daq-mode passive -i
./snort --daq pcap --daq-mode read-file -r
\end{verbatim}
You can specify the buffer size pcap uses with:
\begin{verbatim}
./snort --daq pcap --daq-var buffer_size=<#bytes>
\end{verbatim}
Note that the pcap DAQ does not count filtered packets.
\subsection{AFPACKET}
afpacket functions similar to the memory mapped pcap DAQ but no external
library is required:
\begin{verbatim}
./snort --daq afpacket -i
[--daq-var buffer_size_mb=<#MB>]
[--daq-var debug]
\end{verbatim}
If you want to run afpacket in inline mode, you must set device to one or more
interface pairs, where each member of a pair is separated by a single colon and
each pair is separated by a double colon like this:
\begin{verbatim}
eth0:eth1
\end{verbatim}
or this:
\begin{verbatim}
eth0:eth1::eth2:eth3
\end{verbatim}
By default, the afpacket DAQ allocates 128MB for packet memory. You can change
this with:
\begin{verbatim}
--daq-var buffer_size_mb=<#MB>
\end{verbatim}
Note that the total allocated is actually higher, here's why. Assuming the
default packet memory with a snaplen of 1518, the numbers break down like this:
\begin{slist}
\item
The frame size is 1518 (snaplen) + the size of the AFPacket header (66
bytes) = 1584 bytes.
\item
The number of frames is 128 MB / 1518 = 84733.
\item
The smallest block size that can fit at least one frame is 4 KB = 4096 bytes
@ 2 frames per block.
\item
As a result, we need 84733 / 2 = 42366 blocks.
\item
Actual memory allocated is 42366 * 4 KB = 165.5 MB.
\end{slist}
\subsection{NFQ}
NFQ is the new and improved way to process iptables packets:
\begin{verbatim}
./snort --daq nfq \
[--daq-var device=] \
[--daq-var proto=] \
[--daq-var queue=] \
[--daq-var queue_len=]
::= ip | eth0, etc; default is IP injection
::= ip4 | ip6 | ip*; default is ip4
::= 0..65535; default is 0
::= 0..65535; default is 0
\end{verbatim}
Notes on iptables can be found in the DAQ distro README.
\subsection{IPQ}
IPQ is the old way to process iptables packets. It replaces the inline version
available in pre-2.9 versions built with this:
\begin{verbatim}
./configure --enable-inline / -DGIDS
\end{verbatim}
Start the IPQ DAQ as follows:
\begin{verbatim}
./snort --daq ipq \
[--daq-var device=] \
[--daq-var proto=] \
::= ip | eth0, etc; default is IP injection
::= ip4 | ip6; default is ip4
\end{verbatim}
\subsection{IPFW}
IPFW is available for BSD systems. It replaces the inline version available in
pre-2.9 versions built with this:
\begin{verbatim}
./configure --enable-ipfw / -DGIDS -DIPFW
\end{verbatim}
This command line argument is no longer supported:
\begin{verbatim}
./snort -J
\end{verbatim}
Instead, start Snort like this:
\begin{verbatim}
./snort --daq ipfw [--daq-var port=]
::= 1..65535; default is 8000
\end{verbatim}
* IPFW only supports ip4 traffic.
\subsection{Dump}
The dump DAQ allows you to test the various inline mode features available in
2.9 Snort like injection and normalization.
\begin{verbatim}
./snort -i --daq dump
./snort -r --daq dump
\end{verbatim}
By default a file named inline-out.pcap will be created containing all packets
that passed through or were generated by snort. You can optionally specify a
different name.
\begin{verbatim}
./snort --daq dump --daq-var file=
\end{verbatim}
dump uses the pcap daq for packet acquisition. It therefore does not count
filtered packets.
Note that the dump DAQ inline mode is not an actual inline mode. Furthermore,
you will probably want to have the pcap DAQ acquire in another mode like this:
\begin{verbatim}
./snort -r -Q --daq dump --daq-var load-mode=read-file
./snort -i -Q --daq dump --daq-var load-mode=passive
\end{verbatim}
\subsection{Statistics Changes}
The Packet Wire Totals and Action Stats sections of Snort's output include
additional fields:
\begin{itemize}
\item \texttt{Filtered}
count of packets filtered out and not handed to Snort for analysis.
\item \texttt{Injected}
packets Snort generated and sent, e.g. TCP resets.
\item \texttt{Allow}
packets Snort analyzed and did not take action on.
\item \texttt{Block}
packets Snort did not forward, e.g. due to a block rule.
\item \texttt{Replace}
packets Snort modified.
\item \texttt{Whitelist}
packets that caused Snort to allow a flow to pass w/o inspection by any
analysis program.
\item \texttt{Blacklist}
packets that caused Snort to block a flow from passing.
\item \texttt{Ignore}
packets that caused Snort to allow a flow to pass w/o inspection by this
instance of Snort.
\end{itemize}
The action stats show "blocked" packets instead of "dropped" packets to avoid
confusion between dropped packets (those Snort didn't actually see) and blocked
packets (those Snort did not allow to pass).
\section{Reading pcap files}
Instead of having Snort listen on an interface, you can give it a packet
capture to read. Snort will read and analyze the packets as if they came off
the wire. This can be useful for testing and debugging Snort.
\subsection{Command line arguments}
Any of the below can be specified multiple times on the command line
(\texttt{-r} included) and in addition to other Snort command line options.
Note, however, that specifying \texttt{--pcap-reset} and \texttt{--pcap-show}
multiple times has the same effect as specifying them once.
\begin{center}
\begin{tabular}{| l | p{4.5in} |}
\hline
\textbf{Option} & \textbf{Description}\\
\hline
\hline
\texttt{-r } &
Read a single pcap. \\
\hline
\texttt{--pcap-single=} &
Same as -r. Added for completeness. \\
\hline
\texttt{--pcap-file=} &
File that contains a list of pcap files to read. Can specify path to each
pcap or directory to recurse to get pcaps. \\
\hline
\texttt{--pcap-list=""} &
A space separated list of pcaps to read. \\
\hline
\texttt{--pcap-dir=} &
A directory to recurse to look for pcaps. Sorted in ASCII order. \\
\hline
\texttt{--pcap-filter=} &
Shell style filter to apply when getting pcaps from file or directory. This
filter will apply to any \texttt{--pcap-file} or \texttt{--pcap-dir} arguments
following. Use \texttt{--pcap-no-filter} to delete filter for following
\texttt{--pcap-file} or \texttt{--pcap-dir} arguments or specify
\texttt{--pcap-filter} again to forget previous filter and to apply to
following \texttt{--pcap-file} or \texttt{--pcap-dir} arguments. \\
\hline
\texttt{--pcap-no-filter} &
Reset to use no filter when getting pcaps from file or directory. \\
\hline
\texttt{--pcap-reset} &
If reading multiple pcaps, reset snort to post-configuration state before
reading next pcap. The default, i.e. without this option, is not to reset
state. \\
\hline
\texttt{--pcap-show} &
Print a line saying what pcap is currently being read. \\
\hline
\end{tabular}
\end{center}
\subsection{Examples}
\subsubsection{Read a single pcap}
\begin{verbatim}
$ snort -r foo.pcap
$ snort --pcap-single=foo.pcap
\end{verbatim}
\subsubsection{Read pcaps from a file}
\begin{verbatim}
$ cat foo.txt
foo1.pcap
foo2.pcap
/home/foo/pcaps
\end{verbatim}
\begin{verbatim}
$ snort --pcap-file=foo.txt
\end{verbatim}
This will read foo1.pcap, foo2.pcap and all files under /home/foo/pcaps. Note
that Snort will not try to determine whether the files under that directory are
really pcap files or not.
\subsubsection{Read pcaps from a command line list}
\begin{verbatim}
$ snort --pcap-list="foo1.pcap foo2.pcap foo3.pcap"
\end{verbatim}
This will read foo1.pcap, foo2.pcap and foo3.pcap.
\subsubsection{Read pcaps under a directory}
\begin{verbatim}
$ snort --pcap-dir="/home/foo/pcaps"
\end{verbatim}
This will include all of the files under /home/foo/pcaps.
\subsubsection{Using filters}
\begin{verbatim}
$ cat foo.txt
foo1.pcap
foo2.pcap
/home/foo/pcaps
\end{verbatim}
\begin{verbatim}
$ snort --pcap-filter="*.pcap" --pcap-file=foo.txt
$ snort --pcap-filter="*.pcap" --pcap-dir=/home/foo/pcaps
\end{verbatim}
The above will only include files that match the shell pattern "*.pcap", in
other words, any file ending in ".pcap".
\begin{verbatim}
$ snort --pcap-filter="*.pcap --pcap-file=foo.txt \
> --pcap-filter="*.cap" --pcap-dir=/home/foo/pcaps
\end{verbatim}
In the above, the first filter "*.pcap" will only be applied to the pcaps in
the file "foo.txt" (and any directories that are recursed in that file). The
addition of the second filter "*.cap" will cause the first filter to be
forgotten and then applied to the directory /home/foo/pcaps, so only files
ending in ".cap" will be included from that directory.
\begin{verbatim}
$ snort --pcap-filter="*.pcap --pcap-file=foo.txt \
> --pcap-no-filter --pcap-dir=/home/foo/pcaps
\end{verbatim}
In this example, the first filter will be applied to foo.txt, then no filter
will be applied to the files found under /home/foo/pcaps, so all files found
under /home/foo/pcaps will be included.
\begin{verbatim}
$ snort --pcap-filter="*.pcap --pcap-file=foo.txt \
> --pcap-no-filter --pcap-dir=/home/foo/pcaps \
> --pcap-filter="*.cap" --pcap-dir=/home/foo/pcaps2
\end{verbatim}
In this example, the first filter will be applied to foo.txt, then no filter
will be applied to the files found under /home/foo/pcaps, so all files found
under /home/foo/pcaps will be included, then the filter "*.cap" will be applied
to files found under /home/foo/pcaps2.
\subsubsection{Resetting state}
\begin{verbatim}
$ snort --pcap-dir=/home/foo/pcaps --pcap-reset
\end{verbatim}
The above example will read all of the files under /home/foo/pcaps, but after
each pcap is read, Snort will be reset to a post-configuration state, meaning
all buffers will be flushed, statistics reset, etc. For each pcap, it will be
like Snort is seeing traffic for the first time.
\subsubsection{Printing the pcap}
\begin{verbatim}
$ snort --pcap-dir=/home/foo/pcaps --pcap-show
\end{verbatim}
The above example will read all of the files under /home/foo/pcaps and will
print a line indicating which pcap is currently being read.
\section{Basic Output}
Snort does a lot of work and outputs some useful statistics when it is done.
Many of these are self-explanatory. The others are summarized below. This
does not include all possible output data, just the basics.
\subsection{Timing Statistics}
This section provides basic timing statistics. It includes total seconds and
packets as well as packet processing rates. The rates are based on whole
seconds, minutes, etc. and only shown when non-zero.
Example:
\begin{verbatim}
===============================================================================
Run time for packet processing was 175.856509 seconds
Snort processed 3716022 packets.
Snort ran for 0 days 0 hours 2 minutes 55 seconds
Pkts/min: 1858011
Pkts/sec: 21234
===============================================================================
\end{verbatim}
\subsection{Packet I/O Totals}
This section shows basic packet acquisition and injection peg counts obtained
from the DAQ. If you are reading pcaps, the totals are for all pcaps combined,
unless you use --pcap-reset, in which case it is shown per pcap.
\begin{itemize}
\item Outstanding indicates how many packets are buffered awaiting processing.
The way this is counted varies per DAQ so the DAQ documentation should be
consulted for more info.
\item Filtered packets are not shown for pcap DAQs.
\item Injected packets are the result of active response which can be
configured for inline or passive modes.
\end{itemize}
Example:
\begin{verbatim}
===============================================================================
Packet I/O Totals:
Received: 3716022
Analyzed: 3716022 (100.000%)
Dropped: 0 ( 0.000%)
Filtered: 0 ( 0.000%)
Outstanding: 0 ( 0.000%)
Injected: 0
===============================================================================
\end{verbatim}
\subsection{Protocol Statistics}
Traffic for all the protocols decoded by Snort is summarized in the breakdown
section. This traffic includes internal "pseudo-packets" if preprocessors such
as frag3 and stream5 are enabled so the total may be greater than the number of
analyzed packets in the packet I/O section.
\begin{itemize}
\item Disc counts are discards due to basic encoding integrity flaws that
prevents Snort from decoding the packet.
\item Other includes packets that contained an encapsulation that Snort doesn't
decode.
\item S5 G 1/2 is the number of client/server sessions stream5 flushed due to
cache limit, session timeout, session reset.
\end{itemize}
Example:
\begin{verbatim}
===============================================================================
Breakdown by protocol (includes rebuilt packets):
Eth: 3722347 (100.000%)
VLAN: 0 ( 0.000%)
IP4: 1782394 ( 47.884%)
Frag: 3839 ( 0.103%)
ICMP: 38860 ( 1.044%)
UDP: 137162 ( 3.685%)
TCP: 1619621 ( 43.511%)
IP6: 1781159 ( 47.850%)
IP6 Ext: 1787327 ( 48.016%)
IP6 Opts: 6168 ( 0.166%)
Frag6: 3839 ( 0.103%)
ICMP6: 1650 ( 0.044%)
UDP6: 140446 ( 3.773%)
TCP6: 1619633 ( 43.511%)
Teredo: 18 ( 0.000%)
ICMP-IP: 0 ( 0.000%)
EAPOL: 0 ( 0.000%)
IP4/IP4: 0 ( 0.000%)
IP4/IP6: 0 ( 0.000%)
IP6/IP4: 0 ( 0.000%)
IP6/IP6: 0 ( 0.000%)
GRE: 202 ( 0.005%)
GRE Eth: 0 ( 0.000%)
GRE VLAN: 0 ( 0.000%)
GRE IP4: 0 ( 0.000%)
GRE IP6: 0 ( 0.000%)
GRE IP6 Ext: 0 ( 0.000%)
GRE PPTP: 202 ( 0.005%)
GRE ARP: 0 ( 0.000%)
GRE IPX: 0 ( 0.000%)
GRE Loop: 0 ( 0.000%)
MPLS: 0 ( 0.000%)
ARP: 104840 ( 2.817%)
IPX: 60 ( 0.002%)
Eth Loop: 0 ( 0.000%)
Eth Disc: 0 ( 0.000%)
IP4 Disc: 0 ( 0.000%)
IP6 Disc: 0 ( 0.000%)
TCP Disc: 0 ( 0.000%)
UDP Disc: 1385 ( 0.037%)
ICMP Disc: 0 ( 0.000%)
All Discard: 1385 ( 0.037%)
Other: 57876 ( 1.555%)
Bad Chk Sum: 32135 ( 0.863%)
Bad TTL: 0 ( 0.000%)
S5 G 1: 1494 ( 0.040%)
S5 G 2: 1654 ( 0.044%)
Total: 3722347
===============================================================================
\end{verbatim}
\subsection{Snort Memory Statistics}
On systems with mallinfo (3), you will see additional statistics. Check the man
page of mallinfo for details
Example:
\begin{verbatim}
===============================================================================
Memory usage summary:
Total non-mmapped bytes (arena): 415481856
Bytes in mapped regions (hblkhd): 409612288
Total allocated space (uordblks): 92130384
Total free space (fordblks): 323351472
Topmost releasable block (keepcost): 3200
===============================================================================
\end{verbatim}
\subsection{Actions, Limits, and Verdicts}
Action and verdict counts show what Snort did with the packets it analyzed.
This information is only output in IDS mode (when snort is run with the
\texttt{-c } option).
\begin{itemize}
\item Alerts is the number of activate, alert, and block actions processed as
determined by the rule actions. Here block includes block, drop, and reject
actions.
\end{itemize}
Limits arise due to real world constraints on processing time and available
memory. These indicate potential actions that did not happen:
\begin{itemize}
\item Match Limit counts rule matches were not processed due to the
\texttt{config detection: max\_queue\_events} setting. The default is 5.
\item Queue Limit counts events couldn't be stored in the event queue
due to the \texttt{config event\_queue: max\_queue} setting. The default is 8.
\item Log Limit counts events were not alerted due to the
\texttt{config event\_queue: log} setting. The default is 3.
\item Event Limit counts events not alerted due to
\texttt{event\_filter} limits.
\item Alert Limit counts events were not alerted because they already
were triggered on the session.
\end{itemize}
Verdicts are rendered by Snort on each packet:
\begin{itemize}
\item Allow = packets Snort analyzed and did not take action on.
\item Block = packets Snort did not forward, e.g. due to a block rule. "Block"
is used instead of "Drop" to avoid confusion between dropped packets (those
Snort didn't actually see) and blocked packets (those Snort did not allow to
pass).
\item Replace = packets Snort modified, for example, due to normalization or
replace rules. This can only happen in inline mode with a compatible DAQ.
\item Whitelist = packets that caused Snort to allow a flow to pass w/o
inspection by any analysis program. Like blacklist, this is done by the DAQ or
by Snort on subsequent packets.
\item Blacklist = packets that caused Snort to block a flow from passing. This
is the case when a block TCP rule fires. If the DAQ supports this in hardware,
no further packets will be seen by Snort for that session. If not, snort will
block each packet and this count will be higher.
\item Ignore = packets that caused Snort to allow a flow to pass w/o inspection
by this instance of Snort. Like blacklist, this is done by the DAQ or by Snort
on subsequent packets.
\item Int Blklst = packets that are GTP, Teredo, 6in4 or 4in6 encapsulated that are
being blocked. These packets could get the Blacklist verdict if \texttt{config
tunnel\_verdicts} was set for the given protocol. Note that these counts are
output only if non-zero. Also, this count is incremented on the first packet
in the flow that alerts. The alerting packet and all following packets on the
flow will be counted under Block.
\item Int Whtlst = packets that are GTP, Teredo, 6in4 or 4in6 encapsulated that are
being allowed. These packets could get the Whitelist verdict if \texttt{config
tunnel\_verdicts} was set for the given protocol. Note that these counts are
output only if non-zero. Also, this count is incremented for all packets on
the flow starting with the alerting packet.
\end{itemize}
Example:
\begin{verbatim}
===============================================================================
Action Stats:
Alerts: 0 ( 0.000%)
Logged: 0 ( 0.000%)
Passed: 0 ( 0.000%)
Limits:
Match: 0
Queue: 0
Log: 0
Event: 0
Alert: 0
Verdicts:
Allow: 3716022 (100.000%)
Block: 0 ( 0.000%)
Replace: 0 ( 0.000%)
Whitelist: 0 ( 0.000%)
Blacklist: 0 ( 0.000%)
Ignore: 0 ( 0.000%)
===============================================================================
\end{verbatim}
\section{Tunneling Protocol Support}
Snort supports decoding of many tunneling protocols, including GRE, PPTP over GRE,
MPLS, IP in IP, and ERSPAN, all of which are enabled by default.
To disable support for any GRE related encapsulation, PPTP over GRE, IPv4/IPv6 over
GRE, and ERSPAN, an extra configuration option is necessary:
\begin{verbatim}
$ ./configure --disable-gre
\end{verbatim}
To disable support for MPLS, an separate extra configuration option is necessary:
\begin{verbatim}
$ ./configure --disable-mpls
\end{verbatim}
\subsection{Multiple Encapsulations}
Snort will not decode more than one encapsulation. Scenarios such as
\begin{verbatim}
Eth IPv4 GRE IPv4 GRE IPv4 TCP Payload
\end{verbatim}
or
\begin{verbatim}
Eth IPv4 IPv6 IPv4 TCP Payload
\end{verbatim}
will not be handled and will generate a decoder alert.
\subsection{Logging}
Currently, only the encapsulated part of the packet is logged, e.g.
\begin{verbatim}
Eth IP1 GRE IP2 TCP Payload
\end{verbatim}
gets logged as
\begin{verbatim}
Eth IP2 TCP Payload
\end{verbatim}
and
\begin{verbatim}
Eth IP1 IP2 TCP Payload
\end{verbatim}
gets logged as
\begin{verbatim}
Eth IP2 TCP Payload
\end{verbatim}
\begin{note}
Decoding of PPTP, which utilizes GRE and PPP, is not currently supported on
architectures that require word alignment such as SPARC.
\end{note}
\section{Miscellaneous}
\subsection{Running Snort as a Daemon}
If you want to run Snort as a daemon, you can the add -D switch to any
combination described in the previous sections. Please notice that if you want
to be able to restart Snort by sending a SIGHUP signal to the daemon, you {\em
must} specify the full path to the Snort binary when you start it, for example:
\begin{verbatim}
/usr/local/bin/snort -d -h 192.168.1.0/24 \
-l /var/log/snortlogs -c /usr/local/etc/snort.conf -s -D
\end{verbatim}
Relative paths are not supported due to security concerns.
\subsubsection{Snort PID File}
When Snort is run as a daemon , the daemon creates a PID file in the log
directory. In Snort 2.6, the \texttt{--pid-path} command line switch causes
Snort to write the PID file in the directory specified.
Additionally, the \texttt{--create-pidfile} switch can be used to force
creation of a PID file even when not running in daemon mode.
The PID file will be locked so that other snort processes cannot start. Use
the \texttt{--nolock-pidfile} switch to not lock the PID file.
If you do not wish to include the name of the interface in the PID file, use
the \texttt{--no-interface-pidfile} switch.
\subsection{Running in Rule Stub Creation Mode}
If you need to dump the shared object rules stub to a directory, you must use the --dump-dynamic-rules command line option. These rule stub files are used in conjunction with the shared object rules. The path can be relative or absolute.
\begin{verbatim}
/usr/local/bin/snort -c /usr/local/etc/snort.conf \
--dump-dynamic-rules=/tmp
\end{verbatim}
This path can also be configured in the snort.conf using the config option dump-dynamic-rules-path as follows:
\begin{verbatim}
config dump-dynamic-rules-path: /tmp/sorules
\end{verbatim}
The path configured by command line has precedence over the one configured using dump-dynamic-rules-path.
\begin{verbatim}
/usr/local/bin/snort -c /usr/local/etc/snort.conf \
--dump-dynamic-rules
snort.conf:
config dump-dynamic-rules-path: /tmp/sorules
\end{verbatim}
In the above mentioned scenario the dump path is set to /tmp/sorules.
\subsection{Obfuscating IP Address Printouts}
If you need to post packet logs to public mailing lists, you might want to use
the -O switch. This switch obfuscates your IP addresses in packet printouts.
This is handy if you don't want people on the mailing list to know the IP
addresses involved. You can also combine the -O switch with the -h switch to
only obfuscate the IP addresses of hosts on the home network. This is useful
if you don't care who sees the address of the attacking host. For example, you
could use the following command to read the packets from a log file and dump
them to the screen, obfuscating only the addresses from the 192.168.1.0/24
class C network:
\begin{verbatim}
./snort -d -v -r snort.log -O -h 192.168.1.0/24
\end{verbatim}
\subsection{Specifying Multiple-Instance Identifiers}
In Snort v2.4, the \texttt{-G} command line option was added that specifies an
instance identifier for the event logs. This option can be used when running
multiple instances of snort, either on different CPUs, or on the same CPU but a
different interface. Each Snort instance will use the value specified to
generate unique event IDs. Users can specify either a decimal value
(\texttt{-G 1}) or hex value preceded by 0x (\texttt{-G 0x11}). This is also
supported via a long option \texttt{--logid}.
\subsection{Snort Modes}
Snort can operate in three different modes namely tap (passive), inline, and inline-test.
Snort policies can be configured in these three modes too.
\subsubsection{Explanation of Modes}
\begin{itemize}
\item \texttt{Inline}
When Snort is in Inline mode, it acts as an IPS allowing drop rules to trigger. Snort can be
configured to run in inline mode using the command line argument -Q and snort config option
\texttt{policy\_mode} as follows:
\begin{verbatim}
snort -Q
config policy_mode:inline
\end{verbatim}
\item \texttt{Passive}
When Snort is in Passive mode, it acts as a IDS. Drop rules are not loaded (without --treat-drop-as-alert).
Snort can be configured to passive mode using the snort config option \texttt{policy\_mode} as follows:
\begin{verbatim}
config policy_mode:tap
\end{verbatim}
\item \texttt{Inline-Test}
Inline-Test mode simulates the inline mode of snort, allowing evaluation of inline behavior without affecting
traffic. The drop rules will be loaded and will be triggered as a Wdrop (Would Drop) alert. Snort can be
configured to run in inline-test mode using the command line option (--enable-inline-test) or using the
snort config option \texttt{policy\_mode} as follows:
\begin{verbatim}
snort --enable-inline-test
config policy_mode:inline_test
\end{verbatim}
\begin{note}
Please note --enable-inline-test cannot be used in conjunction with -Q.
\end{note}
\end{itemize}
\texttt{Behavior of different modes with rule options}
\begin{tabular}{|l|c|c|p{6cm}|}
\hline
Rule Option & Inline Mode & Passive Mode & Inline-Test Mode\\
\hline
\hline
\texttt{reject} & Drop + Response & Alert + Response & Wdrop + Response\\
\hline
\texttt{react} & Blocks and send notice & Blocks and send notice & Blocks and send notice\\
\hline
\texttt{normalize} & Normalizes packet & Doesn't normalize & Doesn't normalize\\
\hline
\texttt{replace} & replace content & Doesn't replace & Doesn't replace\\
\hline
\texttt{respond} & close session & close session & close session\\
\hline
\end{tabular}
\texttt{Behavior of different modes with rules actions}
\begin{tabular}{|l|c|c|c|}
\hline
Adapter Mode & Snort args & config policy\_mode & Drop Rule Handling\\
\hline
\hline
Passive & \texttt{ --treat-drop-as-alert} & tap & Alert\\
\hline
Passive & \texttt{ no args} & tap & Not Loaded\\
\hline
Passive & \texttt{ --treat-drop-as-alert} & inline\_test & Alert\\
\hline
Passive & \texttt{ no args} & inline\_test & Would Drop\\
\hline
Passive & \texttt{ --treat-drop-as-alert} & inline & Alert\\
\hline
Passive & \texttt{no args} & inline & Not loaded + warning\\
\hline
Inline Test & \texttt{ --enable-inline-test --treat-drop-as-alert} & tap & Alert\\
\hline
Inline Test & \texttt{ --enable-inline-test} & tap & Would Drop\\
\hline
Inline Test & \texttt{ --enable-inline-test --treat-drop-as-alert} & inline\_test & Alert\\
\hline
Inline Test & \texttt{ --enable-inline-test} & inline\_test & Would Drop\\
\hline
Inline Test & \texttt{ --enable-inline-test --treat-drop-as-alert} & inline & Alert\\
\hline
Inline Test & \texttt{ --enable-inline-test} & inline & Would Drop\\
\hline
Inline & \texttt{ -Q --treat-drop-as-alert} & tap & Alert\\
\hline
Inline & \texttt{ -Q} & tap & Alert\\
\hline
Inline & \texttt{ -Q --treat-drop-as-alert} & inline\_test & Alert\\
\hline
Inline & \texttt{ -Q} & inline\_test & Would Drop\\
\hline
Inline & \texttt{ -Q --treat-drop-as-alert} & inline & Alert\\
\hline
Inline & \texttt{ -Q} & inline & Drop\\
\hline
\end{tabular}
\section{Control socket}
\label{control_socket}
Snort can be configured to provide a Unix socket that can be used to issue commands
to the running process. You must build snort with the
\texttt{--enable-control-socket} option. The control socket
functionality is supported on Linux only.\\
Snort can be configured to use control socket using the command line argument \texttt{--cs-dir }
and snort config option \texttt{cs\_dir} as follows:
\begin{verbatim}
snort --cs-dir
config cs_dir:
\end{verbatim}
\texttt{} specifies the directory for snort to create the socket. If relative path is used,
the path is relative to pid path specified. If there is no pid path specified, it is relative to
current working directory.
A command \texttt{snort\_control} is made and installed along with snort in the same
bin directory when configured with the \texttt{--enable-control-socket} option.
\section{Configure signal value}
\label{configure_signal}
On some systems, signal used by snort might be used by other functions. To avoid conflicts,
users can change the default signal value through \texttt{./configure} options for non-Windows system.
These signals can be changed:
\begin{itemize}
\item \texttt{SIGNAL\_SNORT\_RELOAD}
\item \texttt{SIGNAL\_SNORT\_DUMP\_STATS}
\item \texttt{SIGNAL\_SNORT\_ROTATE\_STATS}
\item \texttt{SIGNAL\_SNORT\_READ\_ATTR\_TBL}
\end{itemize}
Syntax:
\begin{verbatim}
./configure SIGNAL_SNORT_RELOAD= SIGNAL_SNORT_DUMP_STATS=\
SIGNAL_SNORT_READ_ATTR_TBL= SIGNAL_SNORT_ROTATE_STATS=
\end{verbatim}
You can set those signals to user defined values or known signal names in the system.
The following example changes the rotate stats signal to 31 and reload attribute table to
signal SIGUSR2 :
\begin{verbatim}
./configure SIGNAL_SNORT_ROTATE_STATS=31 SIGNAL_SNORT_READ_ATTR_TBL=SIGUSR2
\end{verbatim}
If the same signal is assigned more than once a warning will be logged
during snort initialization. If a signal handler cannot be installed a warning
will be logged and that has to be fixed, otherwise the functionality will be lost.
\texttt{Signals used in snort}
\begin{tabular}{|l|l|l|}
\hline
Signal name & Default value & Action \\
\hline
\hline
SIGTERM & SIGTERM & exit \\
\hline
SIGINT & SIGINT & exit \\
\hline
SIGQUIT & SIGQUIT & exit \\
\hline
SIGPIPE & SIGPIPE & ignore \\
\hline
SIGNAL\_SNORT\_RELOAD & SIGHUP & reload snort \\
\hline
SIGNAL\_SNORT\_DUMP\_STATS & SIGUSR1 & dump stats \\
\hline
SIGNAL\_SNORT\_ROTATE\_STATS & SIGUSR2 & rotate stats \\
\hline
SIGNAL\_SNORT\_READ\_ATTR\_TBL & SIGURG & reload attribute table \\
\hline
SIGNAL\_SNORT\_CHILD\_READY & SIGCHLD & internal use in daemon mode \\
\hline
\end{tabular}
\section{More Information}
Chapter \ref{Configuring Snort} contains much information about many
configuration options available in the configuration file. The Snort manual
page and the output of \texttt{snort -?} or \texttt{snort --help} contain
information that can help you get Snort running in several different modes.
\begin{note}
In many shells, a backslash (\textbackslash{}) is needed to escape the ?, so
you may have to type \texttt{snort -\textbackslash{}?} instead of \texttt{snort
-?} for a list of Snort command line options.
\end{note}
The Snort web page (\url{http://www.snort.org}) and the Snort Users mailing
list:
\url{http://marc.theaimsgroup.com/?l=snort-users}
at \verb?snort-users@lists.sourceforge.net? provide informative announcements
as well as a venue for community discussion and support. There's a lot to
Snort, so sit back with a beverage of your choosing and read the documentation
and mailing list archives.
\chapter{Configuring Snort}
\label{Configuring Snort}
\section{Includes}
The {\tt include} keyword allows other snort config files to be included within the
snort.conf indicated on the Snort command line. It works much like an \#include
from the C programming language, reading the contents of the named file and
adding the contents in the place where the include statement appears in the
file.
\subsection{Format}
\begin{verbatim}
include
\end{verbatim}
\begin{note}
Note that there is no semicolon at the end of this line.
\end{note}
Included files will substitute any predefined variable values into their own
variable references. See Section \ref{variables} for more information on
defining and using variables in Snort config files.
\subsection{Variables}
\label{variables}
Three types of variables may be defined in Snort:
\begin{itemize}
\item var
\item portvar
\item ipvar
\end{itemize}
These are simple substitution variables set with the {\tt var}, {\tt ipvar}, or
{\tt portvar} keywords as follows:
\begin{verbatim}
var RULES_PATH rules/
portvar MY_PORTS [22,80,1024:1050]
ipvar MY_NET [192.168.1.0/24,10.1.1.0/24]
alert tcp any any -> $MY_NET $MY_PORTS (flags:S; msg:"SYN packet";)
include $RULE_PATH/example.rule
\end{verbatim}
\subsubsection{IP Variables and IP Lists}
IPs may be specified individually, in a list, as a CIDR block, or any
combination of the three. IP variables should be specified using 'ipvar'
instead of 'var'. Using 'var' for an IP variable is still allowed for backward
compatibility, but it will be deprecated in a future release.
IPs, IP lists, and CIDR blocks may be negated with '!'. Negation is handled
differently compared with Snort versions 2.7.x and earlier. Previously, each
element in a list was logically OR'ed together. IP lists now OR non-negated
elements and AND the result with the OR'ed negated elements.
The following example list will match the IP 1.1.1.1 and IP from 2.2.2.0 to
2.2.2.255, with the exception of IPs 2.2.2.2 and 2.2.2.3.
\begin{verbatim}
[1.1.1.1,2.2.2.0/24,![2.2.2.2,2.2.2.3]]
\end{verbatim}
The order of the elements in the list does not matter. The element 'any' can
be used to match all IPs, although '!any' is not allowed. Also, negated IP
ranges that are more general than non-negated IP ranges are not allowed.
See below for some valid examples if IP variables and IP lists.
\begin{verbatim}
ipvar EXAMPLE [1.1.1.1,2.2.2.0/24,![2.2.2.2,2.2.2.3]]
alert tcp $EXAMPLE any -> any any (msg:"Example"; sid:1;)
alert tcp [1.0.0.0/8,!1.1.1.0/24] any -> any any (msg:"Example";sid:2;)
\end{verbatim}
The following examples demonstrate some invalid uses of IP variables and IP
lists.
Use of !any:
\begin{verbatim}
ipvar EXAMPLE any
alert tcp !$EXAMPLE any -> any any (msg:"Example";sid:3;)
\end{verbatim}
Different use of !any:
\begin{verbatim}
ipvar EXAMPLE !any
alert tcp $EXAMPLE any -> any any (msg:"Example";sid:3;)
\end{verbatim}
Logical contradictions:
\begin{verbatim}
ipvar EXAMPLE [1.1.1.1,!1.1.1.1]
\end{verbatim}
Nonsensical negations:
\begin{verbatim}
ipvar EXAMPLE [1.1.1.0/24,!1.1.0.0/16]
\end{verbatim}
\subsubsection{Port Variables and Port Lists}
Portlists supports the declaration and lookup of ports and the representation
of lists and ranges of ports. Variables, ranges, or lists may all be negated
with '!'. Also, 'any' will specify any ports, but '!any' is not allowed.
Valid port ranges are from 0 to 65535.
Lists of ports must be enclosed in brackets and port ranges may be specified
with a ':', such as in:
\begin{verbatim}
[10:50,888:900]
\end{verbatim}
Port variables should be specified using 'portvar'. The use of 'var' to
declare a port variable will be deprecated in a future release. For backwards
compatibility, a 'var' can still be used to declare a port variable, provided
the variable name either ends with '\_PORT' or begins with 'PORT\_'.
The following examples demonstrate several valid usages of both port variables
and port lists.
\begin{verbatim}
portvar EXAMPLE1 80
var EXAMPLE2_PORT [80:90]
var PORT_EXAMPLE2 [1]
portvar EXAMPLE3 any
portvar EXAMPLE4 [!70:90]
portvar EXAMPLE5 [80,91:95,100:200]
alert tcp any $EXAMPLE1 -> any $EXAMPLE2_PORT (msg:"Example"; sid:1;)
alert tcp any $PORT_EXAMPLE2 -> any any (msg:"Example"; sid:2;)
alert tcp any 90 -> any [100:1000,9999:20000] (msg:"Example"; sid:3;)
\end{verbatim}
Several invalid examples of port variables and port lists are demonstrated
below:
Use of !any:
\begin{verbatim}
portvar EXAMPLE5 !any
var EXAMPLE5 !any
\end{verbatim}
Logical contradictions:
\begin{verbatim}
portvar EXAMPLE6 [80,!80]
\end{verbatim}
Ports out of range:
\begin{verbatim}
portvar EXAMPLE7 [65536]
\end{verbatim}
Incorrect declaration and use of a port variable:
\begin{verbatim}
var EXAMPLE8 80
alert tcp any $EXAMPLE8 -> any any (msg:"Example"; sid:4;)
\end{verbatim}
Port variable used as an IP:
\begin{verbatim}
alert tcp $EXAMPLE1 any -> any any (msg:"Example"; sid:5;)
\end{verbatim}
\subsubsection{Variable Modifiers}
Rule variable names can be modified in several ways. You can define
meta-variables using the \$ operator. These can be used with the variable
modifier operators {\tt ?} and {\tt -}, as described in the following table:
\begin{center}
\begin{tabular}{| l | p{4.5in} |}
\hline
\textbf{Variable Syntax} & \textbf{Description}\\
\hline
\hline
\texttt{var} &
Defines a meta-variable.\\
\hline
\texttt{\$(var) or \$var} &
Replaces with the contents of variable \texttt{var}.\\
\hline
\texttt{\$(var:-default)} &
Replaces the contents of the variable \texttt{var} with ``default'' if
\texttt{var} is undefined.\\
\hline
\texttt{\$(var:?message)} &
Replaces with the contents of variable \texttt{var} or prints out the error
message and exits.\\
\hline
\end{tabular}
\end{center}
Here is an example of advanced variable usage in action:
\begin{verbatim}
ipvar MY_NET 192.168.1.0/24
log tcp any any -> $(MY_NET:?MY_NET is undefined!) 23
\end{verbatim}
\subsubsection{Limitations}
When embedding variables, types can not be mixed. For instance, port variables
can be defined in terms of other port variables, but old-style variables (with
the 'var' keyword) can not be embedded inside a 'portvar'.
Valid embedded variable:
\begin{verbatim}
portvar pvar1 80
portvar pvar2 [$pvar1,90]
\end{verbatim}
Invalid embedded variable:
\begin{verbatim}
var pvar1 80
portvar pvar2 [$pvar1,90]
\end{verbatim}
Likewise, variables can not be redefined if they were previously defined as a
different type. They should be renamed instead:
Invalid redefinition:
\begin{verbatim}
var pvar 80
portvar pvar 90
\end{verbatim}
\subsection{Config}
\label{Config}
Many configuration and command line options of Snort can be specified in the
configuration file.
\subsubsection{Format}
\begin{verbatim}
config [: ]
\end{verbatim}
\newpage
\begin{center}
\begin{longtable}[t]{| p{2.5in} | p{3.5in} |}
\hline
{\bf Config Directive} & {\bf Description}\\
\hline
% KEEP THESE IN ALPHABETICAL ORDER
\hline
\texttt{config alert\_with\_interface\_name} & Appends interface name to alert
(\texttt{snort -I}). \\
\hline
\texttt{config alertfile: } & Sets the alerts output file. \\
\hline
\texttt{config asn1: } & Specifies the maximum number of nodes to track when
doing ASN1 decoding. See Section \ref{asn1} for more information and
examples.\\
\hline
\texttt{config autogenerate\_preprocessor\newline \_decoder\_rules} & If Snort was
configured to enable decoder and preprocessor rules, this option will cause
Snort to revert back to its original behavior of alerting if the decoder or
preprocessor generates an event. \\
\hline
\texttt{config bpf\_file: } & Specifies BPF filters (\texttt{snort
-F}). \\
\hline
\texttt{config checksum\_drop: } & Types of packets to drop if invalid
checksums. Values: \texttt{none}, \texttt{noip}, \texttt{notcp},
\texttt{noicmp}, \texttt{noudp}, \texttt{ip}, \texttt{tcp}, \texttt{udp},
\texttt{icmp} or \texttt{all} (only applicable in inline mode and for packets
checked per \texttt{checksum\_mode} config option). \\
\hline
\texttt{config checksum\_mode: } & Types of packets to calculate checksums.
Values: \texttt{none}, \texttt{noip}, \texttt{notcp}, \texttt{noicmp},
\texttt{noudp}, \texttt{ip}, \texttt{tcp}, \texttt{udp}, \texttt{icmp} or
\texttt{all}. \\
\hline
\texttt{config chroot: } & Chroots to specified dir (\texttt{snort
-t}). \\
\hline
\texttt{config classification: } & See Table
\ref{Snort Default Classifications} for a list of classifications.\\
\hline
\texttt{config cs\_dir: } & configure snort to provide a Unix socket in the path
that can be used to issue commands to the running process. See Section
\ref{control_socket} for more details.\\
\hline
\texttt{config daemon} & Forks as a daemon (\texttt{snort -D}). \\
\hline
\texttt{config decode\_data\_link} & Decodes Layer2 headers (\texttt{snort
-e}). \\
\hline
\texttt{config default\_rule\_state: } & Global configuration directive
to enable or disable the loading of rules into the detection engine. Default
(with or without directive) is enabled. Specify \texttt{disabled} to disable
loading rules. \\
\hline
\texttt{config daq: } & Selects the type of DAQ to instantiate. The
DAQ with the highest version of the given type is selected if there are
multiple of the same type (this includes any built-in DAQs).\\
\hline
\texttt{config daq\_mode: } & Select the DAQ mode: passive, inline, or
read-file. Not all DAQs support modes. See the DAQ distro README for
possible DAQ modes or list DAQ capabilities for a brief summary. \\
\hline
\texttt{config daq\_var: } & Set a DAQ specific variable. Snort
just passes this information down to the DAQ. See the DAQ distro README for
possible DAQ variables. \\
\hline
\texttt{config daq\_dir: } & Tell Snort where to look for available
dynamic DAQ modules. This can be repeated. The selected DAQ will be the
one with the latest version. \\
\hline \texttt{config daq\_list: []} & Tell Snort to dump basic DAQ
capabilities and exit. You can optionally specify a directory to include any
dynamic DAQs from that directory. You can also precede this option with extra
DAQ directory options to look in multiple directories. \\
\hline
\texttt{config decode\_esp: [enable | disable]} & Enable or disable the decoding of
Encapsulated Security Protocol (ESP). This is disabled by default.
Some networks use ESP for authentication without encryption, allowing their
content to be inspected. Encrypted ESP may cause some false positives if this
option is enabled.\\
\hline
\texttt{config detection: [search-method ]} & Select type of fast pattern
matcher algorithm to use.
\begin{itemize}
\item \texttt{search-method }
\begin{itemize}
\item Queued match search methods - Matches are queued until the fast pattern
matcher is finished with the payload, then evaluated. This was found to generally
increase performance through fewer cache misses (evaluating each rule would
generally blow away the fast pattern matcher
state in the cache).
\begin{itemize}
\item \texttt{ac} and \texttt{ac-q} - Aho-Corasick Full (high memory, best performance).
\item \texttt{ac-bnfa} and \texttt{ac-bnfa-q} - Aho-Corasick Binary NFA (low memory, high performance)
\item \texttt{lowmem} and \texttt{lowmem-q} - Low Memory Keyword Trie (low memory, moderate performance)
\item \texttt{ac-split} - Aho-Corasick Full with ANY-ANY port group evaluated separately (low memory, high performance). Note this is shorthand for \texttt{search-method ac, split-any-any}
\item \texttt{intel-cpm} - Intel CPM library (must have compiled Snort with location of libraries to enable this)
\end{itemize}
\end{itemize}
\begin{itemize}
\item No queue search methods - The "nq" option specifies that matches should not
be queued and evaluated as they are found.
\begin{itemize}
\item \texttt{ac-nq} - Aho-Corasick Full (high memory, best performance).
\item \texttt{ac-bnfa-nq} - Aho-Corasick Binary NFA (low memory, high performance).
This is the default search method if none is specified.
\item \texttt{lowmem-nq} - Low Memory Keyword Trie (low memory, moderate performance)
\end{itemize}
\end{itemize}
\begin{itemize}
\item Other search methods (the above are considered superior to these)
\begin{itemize}
\item \texttt{ac-std} - Aho-Corasick Standard (high memory, high performance)
\item \texttt{acs} - Aho-Corasick Sparse (high memory, moderate performance)
\item \texttt{ac-banded} - Aho-Corasick Banded (high memory, moderate performance)
\item \texttt{ac-sparsebands} - Aho-Corasick Sparse-Banded (high memory, moderate performance)
\end{itemize}
\end{itemize}
\end{itemize} \\
\hline
\texttt{config detection: [split-any-any] [search-optimize] [max-pattern-len ]} & Other options
that affect fast pattern matching.
\begin{itemize}
\item \texttt{split-any-any}
\begin{itemize}
\item A memory/performance tradeoff. By default, ANY-ANY port rules are added to
every non ANY-ANY port group so that only one port group rule evaluation needs to
be done per packet. Not putting the ANY-ANY port rule group into every other
port group can significantly reduce the memory footprint of the fast pattern
matchers if there are many ANY-ANY port rules. But doing so may require two
port group evaluations per packet - one for the specific port group and one for
the ANY-ANY port group, thus potentially reducing performance. This option is
generic and can be used with any \texttt{search-method} but was specifically
intended for use with the \texttt{ac} \texttt{search-method} where the memory
footprint is significantly reduced though overall fast pattern performance is
better than \texttt{ac-bnfa}. Of note is that the lower memory footprint can
also increase performance through fewer cache misses. Default is not to split
the ANY-ANY port group.
\end{itemize}
\item \texttt{search-optimize}
\begin{itemize}
\item Optimizes fast pattern memory when used with \texttt{search-method}
\texttt{ac} or \texttt{ac-split} by dynamically determining the size of a
state based on the total number of states. When used with \texttt{ac-bnfa}, some
fail-state resolution will be attempted, potentially increasing performance.
Default is not to optimize.
\end{itemize}
\item \texttt{max-pattern-len }
\begin{itemize}
\item This is a memory optimization that specifies the maximum length of a pattern
that will be put in the fast pattern matcher. Patterns longer than this length
will be truncated to this length before inserting into the pattern matcher. Useful
when there are very long contents being used and truncating the pattern won't diminish
the uniqueness of the patterns. Note that this may cause more false positive rule
evaluations, i.e. rules that will be evaluated because a fast pattern was matched,
but eventually fail, however CPU cache can play a part in performance so a smaller memory
footprint of the fast pattern matcher can potentially increase performance. Default
is to not set a maximum pattern length.
\end{itemize}
\end{itemize} \\
\hline
\texttt{config detection: [no\_stream\_inserts] [max\_queue\_events ] [enable-single-rule-group] [bleedover-port-limit]} & Other detection engine options.
\begin{itemize}
\item \texttt{no\_stream\_inserts}
\begin{itemize}
\item Specifies that stream inserted packets should not be evaluated against the detection engine.
This is a potential performance improvement with the idea that the stream rebuilt packet will
contain the payload in the inserted one so the stream inserted packet doesn't need to be
evaluated. Default is to inspect stream inserts.
\end{itemize}
\item \texttt{max\_queue\_events }
\begin{itemize}
\item Specifies the maximum number of matching fast-pattern states to queue per packet.
Default is 5 events.
\end{itemize}
\item \texttt{enable-single-rule-group}
\begin{itemize}
\item Put all rules into one port group. Not recommended. Default is not to
do this.
\end{itemize}
\item \texttt{bleedover-port-limit}
\begin{itemize}
\item The maximum number of source or destination ports designated in a rule
before the rule is considered an ANY-ANY port group rule. Default is 1024.
\end{itemize}
\end{itemize} \\
\hline
\texttt{config detection: [debug] [debug-print-nocontent-rule-tests] [debug-print-rule-group-build-details] [debug-print-rule-groups-uncompiled] [debug-print-rule-groups-compiled] [debug-print-fast-pattern] [bleedover-warnings-enabled]} & Options for detection engine debugging.
\begin{itemize}
\item \texttt{debug}
\begin{itemize}
\item Prints fast pattern information for a particular port group.
\end{itemize}
\item \texttt{debug-print-nocontent-rule-tests}
\begin{itemize}
\item Prints port group information during packet evaluation.
\end{itemize}
\item \texttt{debug-print-rule-group-build-details}
\begin{itemize}
\item Prints port group information during port group compilation.
\end{itemize}
\item \texttt{debug-print-rule-groups-uncompiled}
\begin{itemize}
\item Prints uncompiled port group information.
\end{itemize}
\item \texttt{debug-print-rule-groups-compiled}
\begin{itemize}
\item Prints compiled port group information.
\end{itemize}
\item \texttt{debug-print-fast-pattern}
\begin{itemize}
\item For each rule with fast pattern content, prints information about the content
being used for the fast pattern matcher.
\end{itemize}
\item \texttt{bleedover-warnings-enabled}
\begin{itemize}
\item Prints a warning if the number of source or destination ports used in a
rule exceed the \texttt{bleedover-port-limit} forcing the rule to be moved into
the ANY-ANY port group.
\end{itemize}
\end{itemize} \\
\hline
\texttt{config disable\_decode\_alerts} & Turns off the alerts generated by the
decode phase of Snort. \\
\hline
\texttt{config disable\_inline\_init\_failopen} & Disables failopen thread that
allows inline traffic to pass while Snort is starting up. Only useful if Snort
was configured with --enable-inline-init-failopen. (\texttt{snort
--disable-inline-init-failopen}) \\
\hline
\texttt{config disable\_ipopt\_alerts} & Disables IP option length validation
alerts. \\
\hline
\texttt{config disable\_tcpopt\_alerts} & Disables option length validation
alerts. \\
\hline
\texttt{config\newline disable\_tcpopt\_experimental\_alerts} & Turns off
alerts generated by experimental TCP options. \\
\hline
\texttt{config disable\_tcpopt\_obsolete\_alerts} & Turns off alerts
generated by obsolete TCP options. \\
\hline
\texttt{config disable\_tcpopt\_ttcp\_alerts} & Turns off alerts generated by
T/TCP options. \\
\hline
\texttt{config disable\_ttcp\_alerts} & Turns off alerts generated by T/TCP
options. \\
\hline
\texttt{config dump\_chars\_only} & Turns on character dumps (\texttt{snort
-C}). \\
\hline
\texttt{config dump\_payload} & Dumps application layer (\texttt{snort -d}). \\
\hline
\texttt{config dump\_payload\_verbose} & Dumps raw packet starting at link
layer (\texttt{snort -X}). \\
\hline
\texttt{config enable\_decode\_drops} & Enables the dropping of bad packets
identified by decoder (only applicable in inline mode).\\
\hline
\texttt{config enable\_decode\_oversized\_alerts} & Enable alerting
on packets that have headers containing length fields for which the value is
greater than the length of the packet. \\
\hline
\texttt{config enable\_decode\_oversized\_drops} & Enable dropping
packets that have headers containing length fields for which the value is
greater than the length of the packet.
\texttt{enable\_decode\_oversized\_alerts} must also be enabled for this to be
effective (only applicable in inline mode). \\
\hline
\texttt{config enable\_deep\_teredo\_inspection} & Snort's packet decoder only
decodes Teredo (IPv6 over UDP over IPv4) traffic on UDP port 3544. This option
makes Snort decode Teredo traffic on all UDP ports. \\
\hline
\texttt{config enable\_ipopt\_drops} & Enables the dropping of bad packets with
bad/truncated IP options (only applicable in inline mode).\\
\hline
\texttt{config enable\_mpls\_multicast} & Enables support for MPLS multicast.
This option is needed when the network allows MPLS multicast traffic. When this
option is off and MPLS multicast traffic is detected, Snort will generate an
alert. By default, it is off.\\
\hline
\texttt{config enable\_mpls\_overlapping\_ip} & Enables support for overlapping
IP addresses in an MPLS network. In a normal situation, where there are no
overlapping IP addresses, this configuration option should not be turned on.
However, there could be situations where two private networks share the same IP
space and different MPLS labels are used to differentiate traffic from the two
VPNs. In such a situation, this configuration option should be turned on. By
default, it is off. \\
\hline
\texttt{config enable\_tcpopt\_drops} & Enables the dropping of bad packets
with bad/truncated TCP option (only applicable in inline mode).\\
\hline
\texttt{config\newline enable\_tcpopt\_experimental\_drops} & Enables the
dropping of bad packets with experimental TCP option. (only applicable in
inline mode).\\
\hline
\texttt{config enable\_tcpopt\_obsolete\_drops} & Enables the
dropping of bad packets with obsolete TCP option. (only applicable in inline
mode).\\
\hline
\texttt{config enable\_tcpopt\_ttcp\_drops} & Enables the dropping of bad packets with
T/TCP option. (only applicable in inline mode).\\
\hline
\texttt{config enable\_ttcp\_drops} & Enables the dropping of bad packets with T/TCP
option. (only applicable in inline mode).\\
\hline
\texttt{config event\_filter: memcap } & Set global memcap in bytes for
thresholding. Default is 1048576 bytes (1 megabyte). \\
\hline
\texttt{config event\_queue: [max\_queue ] [log ] [order\_events
]} & Specifies conditions about Snort's event queue. You can use the
following options:
\begin{itemize}
\item \texttt{max\_queue $<$integer$>$} (max events supported)
\item \texttt{log $<$integer$>$} (number of events to log)
\item \texttt{order\_events [priority$|$content\_length]} (how to order events within the queue)
\end{itemize}
See Section \ref{eventqueue} for more information and examples.\\
\hline
\texttt{config flowbits\_size: } & Specifies the maximum number of
flowbit tags that can be used within a rule set. The default is 1024 bits
and maximum is 2048. \\
\hline
\texttt{config ignore\_ports: } & Specifies ports to ignore
(useful for ignoring noisy NFS traffic). Specify the protocol (TCP, UDP, IP, or
ICMP), followed by a list of ports. Port ranges are supported.\\
\hline
\texttt{config interface: } & Sets the network interface (\texttt{snort
-i}). \\
\hline
\texttt{config ipv6\_frag: [bsd\_icmp\_frag\_alert on|off] [,
bad\_ipv6\_frag\_alert on|off] [, frag\_timeout ] [, max\_frag\_sessions
]} & The following options can be used:
\begin{itemize}
\item \texttt{bsd\_icmp\_frag\_alert on|off} (Specify whether or not to alert.
Default is on)
\item \texttt{bad\_ipv6\_frag\_alert on|off} (Specify whether or not to alert.
Default is on)
\item \texttt{frag\_timeout $<$integer$>$} (Specify amount of time in seconds
to timeout first frag in hash table)
\item \texttt{max\_frag\_sessions $<$integer$>$} (Specify the number of
fragments to track in the hash table)
\end{itemize} \\
\hline
\texttt{config logdir: } & Sets the logdir (\texttt{snort -l}).
\\
\hline
\texttt{config log\_ipv6\_extra\_data} & Set Snort to log IPv6 source and destination
addresses as unified2 extra data events. \\
\hline
\texttt{config max\_attribute\_hosts: } & Sets a limit on the maximum
number of hosts to read from the attribute table. Minimum value is 32 and the
maximum is 524288 (512k). The default is 10000. If the number of hosts in the
attribute table exceeds this value, an error is logged and the remainder of the
hosts are ignored. This option is only supported with a Host Attribute Table
(see section \ref{targetbased}). \\
\hline
\texttt{config max\_attribute\_services\_per\_host: } & Sets a per host
limit on the maximum number of services to read from the attribute table.
Minimum value is 1 and the maximum is 65535. The default is 100. For a given
host, if the number of services in the attribute table exceeds this value, an
error is logged and the remainder of the services for that host are ignored.
This option is only supported with a Host Attribute Table (see section
\ref{targetbased}). \\
\hline
\texttt{config max\_mpls\_labelchain\_len: } & Sets a Snort-wide
limit on the number of MPLS headers a packet can have. Its default value is -1,
which means that there is no limit on label chain length.\\
\hline
\texttt{config min\_ttl: } & Sets a Snort-wide minimum ttl to ignore all
traffic. \\
\hline
\texttt{config mpls\_payload\_type: ipv4|ipv6|ethernet} & Sets a Snort-wide
MPLS payload type. In addition to ipv4, ipv6 and ethernet are also valid
options. The default MPLS payload type is ipv4\\
\hline
\texttt{config no\_promisc} & Disables promiscuous mode (\texttt{snort -p}). \\
\hline
\texttt{config nolog} & Disables logging. Note: Alerts will still occur.
(\texttt{snort -N}). \\
\hline
\texttt{config nopcre} & Disables pcre pattern matching. \\
\hline
\texttt{config obfuscate} & Obfuscates IP Addresses (\texttt{snort -O}). \\
\hline
\texttt{config order: } & Changes the order that rules
are evaluated, e.g.: pass alert log activation. \\
\hline
\texttt{config pcre\_match\_limit: $<$integer$>$} & Restricts the amount of
backtracking a given PCRE option. For example, it will limit the number of
nested repeats within a pattern. A value of -1 allows for unlimited PCRE, up
to the PCRE library compiled limit (around 10 million). A value of 0 results
in no PCRE evaluation. The snort default value is 1500. \\
\hline
\texttt{config pcre\_match\_limit\_recursion: $<$integer$>$} & Restricts the
amount of stack used by a given PCRE option. A value of -1 allows for
unlimited PCRE, up to the PCRE library compiled limit (around 10 million). A
value of 0 results in no PCRE evaluation. The snort default value is 1500.
This option is only useful if the value is less than the
\texttt{pcre\_match\_limit} \\
\hline
\texttt{config pkt\_count: } & Exits after N packets (\texttt{snort -n}). \\
\hline
\texttt{config policy\_version: $<$base-version-string$>$ [$<$binding-version-string$>$]} &
Supply versioning information to configuration files. Base version should be
a string in all configuration files including included ones. In addition,
binding version must be in any file configured with \texttt{config binding}.
This option is used to avoid race conditions when modifying and loading a
configuration within a short time span - before Snort has had a chance to
load a previous configuration. \\
\hline
\texttt{config profile\_preprocs} & Print statistics on preprocessor
performance. See Section \ref{preproc profiling} for more details. \\
\hline
\texttt{config profile\_rules} & Print statistics on rule performance. See
Section \ref{rule profiling} for more details. \\
\hline
\texttt{config quiet}& Disables banner and status reports (\texttt{snort -q}).
NOTE: The command line switch \texttt{-q} takes effect immediately after
processing the command line parameters, whereas using \texttt{config quiet}
in snort.conf takes effect when the configuration line in snort.conf is parsed.
That may occur after other configuration settings that result in output to
console or syslog.
\\
\hline
\texttt{config reference: [} & Adds a new reference system to Snort, e.g.:
myref http://myurl.com/?id=\\
\hline
\texttt{config reference\_net } & For IP obfuscation, the obfuscated net
will be used if the packet contains an IP address in the reference net. Also
used to determine how to set up the logging directory structure for the
\texttt{session} post detection rule option and ASCII output plugin - an
attempt is made to name the log directories after the IP address that is not in
the reference net. \\
\hline \texttt{config response: [attempts ] [, device ]} & Set the
number of strafing attempts per injected response and/or the device, such as
eth0, from which to send responses. These options may appear in any order but
must be comma separated. The are intended for passive mode. \\
\hline
\texttt{config set\_gid: } & Changes GID to specified GID (\texttt{snort
-g}). \\
\hline
\texttt{config set\_uid: } & Sets UID to $<$id$>$ (\texttt{snort -u}). \\
\hline
\texttt{config show\_year} & Shows year in timestamps (\texttt{snort -y}). \\
\hline
\texttt{config snaplen: } & Set the snaplength of packet, same effect as
\texttt{-P $<$snaplen$>$} or \texttt{--snaplen $<$snaplen$>$} options.\\
\hline
\texttt{config so\_rule\_memcap: } & Set global memcap in bytes for
so rules that dynamically allocate memory for storing session data in the
stream preprocessor. A value of 0 disables the memcap. Default is 0.
Maximum value is the maximum value an unsigned 32 bit integer can hold
which is 4294967295 or 4GB.\\
\hline
\texttt{config stateful} & Sets assurance mode for stream (stream is
established). \\
\hline
\texttt{config tagged\_packet\_limit: } & When a metric other than
\texttt{packets} is used in a tag option in a rule, this option sets the
maximum number of packets to be tagged regardless of the amount defined by the
other metric. See Section \ref{tag section} on using the tag option when
writing rules for more details. The default value when this option is not
configured is 256 packets. Setting this option to a value of 0 will disable
the packet limit. \\
\hline
\texttt{config threshold: memcap } & Set global memcap in bytes for
thresholding. Default is 1048576 bytes (1 megabyte). (This is deprecated.
Use config event\_filter instead.)\\
\hline
\texttt{config umask: } & Sets umask when running (\texttt{snort -m}). \\
\hline
\texttt{config utc} & Uses UTC instead of local time for timestamps
(\texttt{snort -U}). \\
\hline
\texttt{config verbose} & Uses verbose logging to STDOUT (\texttt{snort -v}).
\\
\hline
\texttt{config vlan\_agnostic} & Causes Snort to ignore vlan headers for
the purposes of connection and frag tracking. This option is only valid in the
base configuration when using multiple configurations, and the default is off.
\\
\hline
\texttt{config address\_space\_agnostic} & Causes Snort to ignore DAQ
address space ID for the purposes of connection and frag tracking. This option
is only valid in the base configuration when using multiple configurations, and
the default is off. \\
\hline
\texttt{config policy\_mode: tap|inline|inline\_test} & Sets the policy
mode to either \texttt{passive}, \texttt{inline} or \texttt{inline\_test}. \\
\hline \texttt{config tunnel\_verdicts: gtp|teredo|6in4|4in6} & By default, whitelist
and blacklist verdicts are handled internally by Snort for GTP, Teredo, 6in4 and 4in6
encapsulated traffic. This means Snort actually gives the DAQ a pass or block
verdict instead. This is to workaround cases where the DAQ would apply
the verdict to the whole tunnel instead of the individual session within the
tunnel. If your DAQ decodes GTP, Teredo, 6in4 or 4in6 correctly, setting this config
will allow the whitelist or blacklist verdict to go to the DAQ. There is a
modest performance boost by doing this where possible since Snort won't see the
remaining packets on the session. \\
\hline
\end{longtable}
\end{center}
\section{Preprocessors}
Preprocessors were introduced in version 1.5 of Snort. They allow the
functionality of Snort to be extended by allowing users and programmers to drop
modular plugins into Snort fairly easily. Preprocessor code is run before the
detection engine is called, but after the packet has been decoded. The packet
can be modified or analyzed in an out-of-band manner using this mechanism.
Preprocessors are loaded and configured using the {\tt preprocessor} keyword.
The format of the preprocessor directive in the Snort config file is:
\begin{verbatim}
preprocessor :
\end{verbatim}
\subsection{Frag3}
\label{frag3 section}
The frag3 preprocessor is a target-based IP defragmentation module for Snort.
Frag3 is designed with the following goals:
\begin{slist}
\item Fast execution with less complex data management.
\item Target-based host modeling anti-evasion techniques.
\end{slist}
Frag3 uses the sfxhash data structure and linked lists for data handling
internally which allows it to have much more predictable and deterministic
performance in any environment which should aid us in managing heavily
fragmented environments.
Target-based analysis is a relatively new concept in network-based intrusion
detection. The idea of a target-based system is to model the actual targets on
the network instead of merely modeling the protocols and looking for attacks
within them. When IP stacks are written for different operating systems, they
are usually implemented by people who read the RFCs and then write their
interpretation of what the RFC outlines into code. Unfortunately, there are
ambiguities in the way that the RFCs define some of the edge conditions that
may occur and when this happens different people implement certain aspects of
their IP stacks differently. For an IDS this is a big problem.
In an environment where the attacker can determine what style of IP
defragmentation is being used on a particular target, the attacker can try to
fragment packets such that the target will put them back together in a specific
manner while any passive systems trying to model the host traffic have to guess
which way the target OS is going to handle the overlaps and retransmits. As I
like to say, if the attacker has more information about the targets on a
network than the IDS does, it is possible to evade the IDS. This is where the
idea for ``target-based IDS'' came from. For more detail on this issue and how
it affects IDS, check out the famous Ptacek \& Newsham paper at
\url{http://www.snort.org/docs/idspaper/}.
The basic idea behind target-based IDS is that we tell the IDS information
about hosts on the network so that it can avoid Ptacek \& Newsham style evasion
attacks based on information about how an individual target IP stack operates.
Vern Paxson and Umesh Shankar did a great paper on this very topic in 2003 that
detailed mapping the hosts on a network and determining how their various IP
stack implementations handled the types of problems seen in IP defragmentation
and TCP stream reassembly. Check it out at
\url{http://www.icir.org/vern/papers/activemap-oak03.pdf}.
We can also present the IDS with topology information to avoid TTL-based
evasions and a variety of other issues, but that's a topic for another day.
Once we have this information we can start to really change the game for these
complex modeling problems.
Frag3 was implemented to showcase and prototype a target-based module within
Snort to test this idea.
\subsubsection{Frag 3 Configuration}
There are at least two preprocessor directives required to activate frag3,
a global configuration directive and an engine instantiation. There can
be an arbitrary number of engines defined at startup with their own
configuration, but only one global configuration.
\textbf{Global Configuration}
\begin{itemize}
\item Preprocessor name: \texttt{frag3\_global}
\item Available options: NOTE: Global configuration options are comma
separated.
\begin{itemize}
\item \texttt{max\_frags $<$number$>$} - Maximum simultaneous fragments to
track. Default is 8192.
\item \texttt{memcap $<$bytes$>$} - Memory cap for self preservation. Default
is 4MB.
\item \texttt{prealloc\_memcap $<$bytes$>$} - alternate memory management mode,
use preallocated fragment nodes based on a memory cap (faster in some
situations).
\item \texttt{prealloc\_frags $<$number$>$} - Alternate memory management mode,
use preallocated fragment nodes (faster in some situations).
\item \texttt{disabled} - This optional keyword is allowed with any
policy to avoid packet processing. This option disables the preprocessor
for this config, but not for other instances of multiple configurations.
Use the disable keyword in the base configuration to specify values for the
options \texttt{memcap}, \texttt{prealloc\_memcap}, and \texttt{prealloc\_frags}
without having the preprocessor inspect traffic for traffic applying to the base
configuration. The other options are parsed but not used. Any valid
configuration may have "disabled" added to it.
\end{itemize}
\end{itemize}
\textbf{Engine Configuration}
\begin{itemize}
\item Preprocessor name: \texttt{frag3\_engine}
\item Available options:
NOTE: Engine configuration options are space separated.
\begin{itemize}
\item \texttt{timeout $<$seconds$>$} - Timeout for fragments. Fragments in the
engine for longer than this period will be automatically dropped. Default is
60 seconds.
\item \texttt{min\_ttl $<$value$>$} - Minimum acceptable TTL value for a
fragment packet. Default is 1. The accepted range for this option is 1 - 255.
\item \texttt{detect\_anomalies} - Detect fragment anomalies.
\item \texttt{bind\_to $<$ip\_list$>$} - IP List to bind this engine to. This
engine will only run for packets with destination addresses contained within
the IP List. Default value is \texttt{all}.
\item \texttt{overlap\_limit } - Limits the number of overlapping
fragments per packet. The default is "0" (unlimited). This config option takes
values equal to or greater than zero. This is an optional parameter.
detect\_anomalies option must be configured for this option to take effect.
\item \texttt{min\_fragment\_length } - Defines smallest fragment size
(payload size) that should be considered valid. Fragments smaller than or
equal to this limit are considered malicious and an event is raised, if
detect\_anomalies is also configured. The default is "0" (unlimited), the
minimum is "0". This is an optional parameter. detect\_anomalies option
must be configured for this option to take effect.
\item \texttt{policy $<$type$>$} - Select a target-based defragmentation mode.
Available types are first, last, bsd, bsd-right, linux, windows and solaris.
Default type is bsd.
The Paxson Active Mapping paper introduced the terminology frag3 is using to
describe policy types. The known mappings are as follows. Anyone who develops
more mappings and would like to add to this list please feel free to send us an
email!
\begin{tabular}{| l | l |}
\hline
\textbf{Platform} & \textbf{Type}\\
\hline
\hline
AIX 2 & BSD \\
\hline
AIX 4.3 8.9.3 & BSD \\
\hline
Cisco IOS & Last \\
\hline
FreeBSD & BSD\\
\hline
HP JetDirect (printer) & BSD-right \\
\hline
HP-UX B.10.20 & BSD \\
\hline
HP-UX 11.00 & First \\
\hline
IRIX 4.0.5F & BSD \\
\hline
IRIX 6.2 & BSD \\
\hline
IRIX 6.3 & BSD \\
\hline
IRIX64 6.4 & BSD \\
\hline
Linux 2.2.10 & linux \\
\hline
Linux 2.2.14-5.0 & linux \\
\hline
Linux 2.2.16-3 & linux \\
\hline
Linux 2.2.19-6.2.10smp & linux \\
\hline
Linux 2.4.7-10 & linux \\
\hline
Linux 2.4.9-31SGI 1.0.2smp & linux \\
\hline
Linux 2.4 (RedHat 7.1-7.3) & linux \\
\hline
MacOS (version unknown) & First \\
\hline
NCD Thin Clients & BSD \\
\hline
OpenBSD (version unknown) & linux \\
\hline
OpenBSD (version unknown) & linux \\
\hline
OpenVMS 7.1 & BSD \\
\hline
OS/2 (version unknown) & BSD \\
\hline
OSF1 V3.0 & BSD \\
\hline
OSF1 V3.2 & BSD \\
\hline
OSF1 V4.0,5.0,5.1 & BSD \\
\hline
SunOS 4.1.4 & BSD \\
\hline
SunOS 5.5.1,5.6,5.7,5.8 & First \\
\hline
Tru64 Unix V5.0A,V5.1 & BSD \\
\hline
Vax/VMS & BSD \\
\hline
Windows (95/98/NT4/W2K/XP) & Windows\\
\hline
\end{tabular}
\end{itemize}
\end{itemize}
\subsubsection{Format}
Note in the advanced configuration below that there are three engines specified
running with \emph{Linux}, \texttt{first} and \texttt{last} policies assigned.
The first two engines are bound to specific IP address ranges and the last one
applies to all other traffic. Packets that don't fall within the address
requirements of the first two engines automatically fall through to the third
one.
\paragraph{Basic Configuration}
\begin{verbatim}
preprocessor frag3_global
preprocessor frag3_engine
\end{verbatim}
\paragraph{Advanced Configuration}
\begin{verbatim}
preprocessor frag3_global: prealloc_nodes 8192
preprocessor frag3_engine: policy linux bind_to 192.168.1.0/24
preprocessor frag3_engine: policy first bind_to [10.1.47.0/24,172.16.8.0/24]
preprocessor frag3_engine: policy last detect_anomalies
\end{verbatim}
\subsubsection{Frag 3 Alert Output}
\label{frag3 alert output}
Frag3 is capable of detecting eight different types of anomalies. Its event
output is packet-based so it will work with all output modes of Snort. Read
the documentation in the \texttt{doc/signatures} directory with filenames that
begin with ``123-'' for information on the different event types.
%%Need to doc these eight types of anomalies and truncate beginning of section.
\subsection{Stream5}
\label{stream5 section}
The Stream5 preprocessor is a target-based TCP reassembly module for Snort. It
is capable of tracking sessions for both TCP and UDP. With Stream5, the rule
'flow' and 'flowbits' keywords are usable with TCP as well as UDP traffic.
\subsubsection{Transport Protocols}
TCP sessions are identified via the classic TCP "connection". UDP sessions are
established as the result of a series of UDP packets from two end points via
the same set of ports. ICMP messages are tracked for the purposes of checking
for unreachable and service unavailable messages, which effectively terminate a
TCP or UDP session.
\subsubsection{Target-Based}
Stream5, like Frag3, introduces target-based actions for handling of
overlapping data and other TCP anomalies. The methods for handling overlapping
data, TCP Timestamps, Data on SYN, FIN and Reset sequence numbers, etc. and the
policies supported by Stream5 are the results of extensive research with many
target operating systems.
\subsubsection{Stream API}
Stream5 fully supports the Stream API, other protocol normalizers/preprocessors to
dynamically configure reassembly behavior as required by the application layer
protocol, identify sessions that may be ignored (large data transfers, etc), and
update the identifying information about the session (application protocol, direction,
etc) that can later be used by rules.
\subsubsection{Anomaly Detection}
TCP protocol anomalies, such as data on SYN packets, data received outside the
TCP window, etc are configured via the \texttt{detect\_anomalies} option to the
TCP configuration. Some of these anomalies are detected on a per-target basis.
For example, a few operating systems allow data in TCP SYN packets, while
others do not.
\subsubsection{Protocol Aware Flushing}
Protocol aware flushing of HTTP, SMB and DCE/RPC can be enabled with this option:
\begin{verbatim}
config paf_max:
\end{verbatim}
where \texttt{} is between zero (off) and 63780. This allows Snort to
statefully scan a stream and reassemble a complete PDU regardless of
segmentation. For example, multiple PDUs within a single TCP segment, as well
as one PDU spanning multiple TCP segments will be reassembled into one PDU per
packet for each PDU. PDUs larger than the configured maximum will be split
into multiple packets.
\subsubsection{Stream5 Global Configuration}
Global settings for the Stream5 preprocessor.
\begin{verbatim}
preprocessor stream5_global: \
[track_tcp ], [max_tcp ], \
[memcap ], \
[track_udp ], [max_udp ], \
[track_icmp ], [max_icmp ], \
[track_ip ], [max_ip ], \
[flush_on_alert], [show_rebuilt_packets], \
[prune_log_max ], [disabled], \
[flush_on_alert], [show_rebuilt_packets], \
[prune_log_max ], [enable_ha]
\end{verbatim}
\begin{center}
\begin{tabular}{| l | p{4.5in} |}
\hline
\textbf{Option} & \textbf{Description}\\
\hline
\hline
\texttt{track\_tcp } &
Track sessions for TCP. The default is "yes".\\
\hline
\texttt{max\_tcp } &
Maximum simultaneous TCP sessions tracked. The default is "262144", maximum is
"1048576", minimum is "1".\\
\hline
\texttt{memcap } &
Memcap for TCP packet storage. The default is "8388608" (8MB), maximum is
"1073741824" (1GB), minimum is "32768" (32KB).\\
\hline
\texttt{track\_udp } &
Track sessions for UDP. The default is "yes".\\
\hline
\texttt{max\_udp } &
Maximum simultaneous UDP sessions tracked. The default is "131072", maximum is
"1048576", minimum is "1".\\
\hline
\texttt{track\_icmp } &
Track sessions for ICMP. The default is "no".\\
\hline
\texttt{max\_icmp } &
Maximum simultaneous ICMP sessions tracked. The default is "65536", maximum is
"1048576", minimum is "1".\\
\hline
\texttt{track\_ip } &
Track sessions for IP. The default is "no". Note that "IP" includes all
non-TCP/UDP traffic over IP including ICMP if ICMP not otherwise configured.\\
\hline
\texttt{max\_ip } &
Maximum simultaneous IP sessions tracked. The default is "16384", maximum is
"1048576", minimum is "1".\\
\hline
\texttt{disabled} &
Option to disable the stream5 tracking. By default this option is turned off.
When the preprocessor is disabled only the options memcap, max\_tcp, max\_udp
and max\_icmp are applied when specified with the configuration.\\
\hline
\texttt{flush\_on\_alert} &
Backwards compatibility. Flush a TCP stream when an alert is generated on that
stream. The default is set to off.\\
\hline
\texttt{show\_rebuilt\_packets} &
Print/display packet after rebuilt (for debugging). The default is set to
off.\\
\hline
\texttt{prune\_log\_max } &
Print a message when a session terminates that was consuming more than the
specified number of bytes. The default is "1048576" (1MB), minimum can be either "0"
(disabled) or if not disabled the minimum is "1024" and maximum is "1073741824".\\
\hline
\texttt{enable\_ha} &
Enable High Availability state sharing. The default is set to off.\\
\hline
\end{tabular}
\end{center}
\subsubsection{Stream5 TCP Configuration}
Provides a means on a per IP address target to configure TCP policy. This can
have multiple occurrences, per policy that is bound to an IP address or network.
One default policy must be specified, and that policy is not bound to an IP
address or network.
\begin{verbatim}
preprocessor stream5_tcp: \
[bind_to ], \
[timeout ], [policy ], \
[overlap_limit ], [max_window ], \
[require_3whs []], [detect_anomalies], \
[check_session_hijacking], [use_static_footprint_sizes], \
[dont_store_large_packets], [dont_reassemble_async], \
[max_queued_bytes ], [max_queued_segs ], \
[small_segments bytes [ignore_ports number [number]*]], \
[ports ], \
[protocol ], \
[ignore_any_rules], [flush_factor ]
\end{verbatim}
\begin{longtable}[h]{| p{2in} | p{4in} |}
\hline
\textbf{Option} & \textbf{Description}\\
\hline
\hline
\texttt{bind\_to } &
IP address or network for this policy. The default is set to any.\\
\hline
\texttt{timeout } &
Session timeout. The default is "30", the minimum is "1", and the maximum is
"86400" (approximately 1 day).\\
\hline
\texttt{policy } &
The Operating System policy for the target OS. The policy\_id can be one of
the following:
\begin{tabular}{| l | p{2.5in} |}
\hline
Policy Name & Operating Systems.\\
\hline
\hline
\texttt{first} &
Favor first overlapped segment.\\
\hline
\texttt{last} & Favor first overlapped segment.\\
\hline
\texttt{bsd} & FresBSD 4.x and newer, NetBSD 2.x and newer, OpenBSD 3.x and newer\\
\hline
\texttt{linux} & Linux 2.4 and newer\\
\hline
\texttt{old-linux} & Linux 2.2 and earlier\\
\hline
\texttt{windows} & Windows 2000, Windows XP, Windows 95/98/ME\\
\hline
\texttt{win2003} & Windows 2003 Server\\
\hline
\texttt{vista} & Windows Vista\\
\hline
\texttt{solaris} & Solaris 9.x and newer\\
\hline
\texttt{hpux} & HPUX 11 and newer\\
\hline
\texttt{hpux10} & HPUX 10\\
\hline
\texttt{irix} & IRIX 6 and newer\\
\hline
\texttt{macos} & MacOS 10.3 and newer\\
\hline
\end{tabular}\\
\hline
\texttt{overlap\_limit } &
Limits the number of overlapping packets per session. The default is "0"
(unlimited), the minimum is "0", and the maximum is "255".\\
\hline
\texttt{max\_window } &
Maximum TCP window allowed. The default is "0" (unlimited), the minimum is
"0", and the maximum is "1073725440" (65535 left shift 14). That is the
highest possible TCP window per RFCs. This option is intended to prevent a DoS
against Stream5 by an attacker using an abnormally large window, so using a
value near the maximum is discouraged.\\
\hline
\texttt{require\_3whs []} &
Establish sessions only on completion of a SYN/SYN-ACK/ACK handshake. The
default is set to off. The optional number of seconds specifies a startup
timeout. This allows a grace period for existing sessions to be considered
established during that interval immediately after Snort is started. The
default is "0" (don't consider existing sessions established), the minimum is
"0", and the maximum is "86400" (approximately 1 day).\\
\hline
\texttt{detect\_anomalies} &
Detect and alert on TCP protocol anomalies. The default is set to off.\\
\hline
\texttt{check\_session\_hijacking} &
Check for TCP session hijacking. This check validates the hardware (MAC)
address from both sides of the connect -- as established on the 3-way handshake
against subsequent packets received on the session. If an ethernet layer is
not part of the protocol stack received by Snort, there are no checks
performed. Alerts are generated (per '\texttt{detect\_anomalies}' option) for
either the client or server when the MAC address for one side or the other does
not match. The default is set to off.\\
\hline
\texttt{use\_static\_footprint\_sizes} &
Use static values for determining when to build a reassembled packet to
allow for repeatable tests. This option should not be used production
environments. The default is set to off.\\
\hline
\texttt{dont\_store\_large\_packets} &
Performance improvement to not queue large packets in reassembly buffer. The
default is set to off. Using this option may result in missed attacks.\\
\hline
\texttt{dont\_reassemble\_async} &
Don't queue packets for reassembly if traffic has not been seen in both
directions. The default is set to queue packets.\\
\hline
\texttt{max\_queued\_bytes } &
Limit the number of bytes queued for reassembly on a given TCP session to
bytes. Default is "1048576" (1MB). A value of "0" means unlimited, with a
non-zero minimum of "1024", and a maximum of "1073741824" (1GB). A message is
written to console/syslog when this limit is enforced.\\
\hline
\texttt{max\_queued\_segs } &
Limit the number of segments queued for reassembly on a given TCP session. The
default is "2621", derived based on an average size of 400 bytes. A value of
"0" means unlimited, with a non-zero minimum of "2", and a maximum of
"1073741824" (1GB). A message is written to console/syslog when this limit is
enforced.\\
\hline
\texttt{small\_segments bytes [ignore\_ports ]} &
Configure the maximum small segments queued. This feature requires that
detect\_anomalies be enabled. The first number is the number of consecutive segments
that will trigger the detection rule. The default value is "0" (disabled), with a
maximum of "2048". The second number is the minimum bytes for a segment to be
considered "small". The default value is "0" (disabled), with a maximum of "2048".
ignore\_ports is optional, defines the list of ports in which will be ignored for
this rule. The number of ports can be up to "65535". A message is written to
console/syslog when this limit is enforced.\\
\hline
\texttt{ports } &
Specify the client, server, or both and list of ports in which to perform
reassembly. This can appear more than once in a given config. The default
settings are \texttt{ports client 21 23 25 42 53 80 110 111 135 136 137 139 143
445 513 514 1433 1521 2401 3306}. The minimum port allowed is "1" and the
maximum allowed is "65535".\\
\hline
\texttt{protocol } &
Specify the client, server, or both and list of services in which to perform
reassembly. This can appear more than once in a given config. The default
settings are \texttt{ports client ftp telnet smtp nameserver dns http pop3
sunrpc dcerpc netbios-ssn imap login shell mssql oracle cvs mysql}. The
service names can be any of those used in the host attribute table (see
\ref{targetbased}), including any of the internal defaults (see
\ref{attribute:service names}) or others specific to the network.\\
\hline
\texttt{ignore\_any\_rules} &
Don't process any \texttt{->} any (ports) rules for TCP that attempt to match
payload if there are no port specific rules for the src or destination port.
Rules that have flow or flowbits will never be ignored. This is a performance
improvement and may result in missed attacks. Using this does not affect rules
that look at protocol headers, only those with content, PCRE, or byte test
options. The default is "off". This option can be used only in default
policy.\\
\hline
\texttt{flush\_factor} &
Useful in ips mode to flush upon seeing a drop in segment size after N
segments of non-decreasing size. The drop in size often indicates an
end of request or response.\\
\hline
\end{longtable}
\begin{note}
If no options are specified for a given TCP policy, that is the default TCP
policy. If only a bind\_to option is used with no other options that TCP
policy uses all of the default values.
\end{note}
\subsubsection{Stream5 UDP Configuration}
Configuration for UDP session tracking. Since there is no target based
binding, there should be only one occurrence of the UDP configuration.
\begin{verbatim}
preprocessor stream5_udp: [timeout ], [ignore_any_rules]
\end{verbatim}
\begin{center}
\begin{tabular}{| l | p{4.5in} |}
\hline
\textbf{Option} & \textbf{Description}\\
\hline
\hline
\texttt{timeout } &
Session timeout. The default is "30", the minimum is "1", and the maximum is
"86400" (approximately 1 day).\\
\hline
\texttt{ignore\_any\_rules} &
Don't process any \texttt{->} any (ports) rules for UDP that attempt to match
payload if there are no port specific rules for the src or destination port.
Rules that have flow or flowbits will never be ignored. This is a performance
improvement and may result in missed attacks. Using this does not affect rules
that look at protocol headers, only those with content, PCRE, or byte test
options. The default is "off".\\
\hline
\end{tabular}
\end{center}
\begin{note}
With the ignore\_any\_rules option, a UDP rule will be ignored except when
there is another port specific rule that may be applied to the traffic. For
example, if a UDP rule specifies destination port 53, the 'ignored' any
\texttt{->} any rule will be applied to traffic to/from port 53, but NOT to any
other source or destination port. A list of rule SIDs affected by this option
are printed at Snort's startup.
\end{note}
\begin{note}
With the ignore\_any\_rules option, if a UDP rule that uses any \texttt{->} any
ports includes either flow or flowbits, the ignore\_any\_rules option is
effectively pointless. Because of the potential impact of disabling a flowbits
rule, the ignore\_any\_rules option will be disabled in this case.
\end{note}
\subsubsection{Stream5 ICMP Configuration}
Configuration for ICMP session tracking. Since there is no target based
binding, there should be only one occurrence of the ICMP configuration.
\begin{note}
ICMP is currently untested, in minimal code form and is NOT ready for use in
production networks. It is not turned on by default.
\end{note}
\begin{verbatim}
preprocessor stream5_icmp: [timeout ]
\end{verbatim}
\begin{center}
\begin{tabular}{| l | p{4.5in} |}
\hline
\textbf{Option} & \textbf{Description}\\
\hline
\hline
\texttt{timeout } &
Session timeout. The default is "30", the minimum is "1", and the maximum is
"86400" (approximately 1 day).\\
\hline
\end{tabular}
\end{center}
\subsubsection{Stream5 IP Configuration}
Configuration for IP session tracking. Since there is no target based
binding, there should be only one occurrence of the IP configuration.
\begin{note}
"IP" includes all non-TCP/UDP traffic over IP including ICMP if ICMP
not otherwise configured. It is not turned on by default.
\end{note}
\begin{verbatim}
preprocessor stream5_ip: [timeout ]
\end{verbatim}
\begin{center}
\begin{tabular}{| l | p{4.5in} |}
\hline
\textbf{Option} & \textbf{Description}\\
\hline
\hline
\texttt{timeout } &
Session timeout. The default is "30", the minimum is "1", and the maximum is
"86400" (approximately 1 day).\\
\hline
\end{tabular}
\end{center}
\subsubsection{Stream5 HA Configuration}
Configuration for HA session state sharing.
\begin{verbatim}
preprocessor stream5_ha: [min_session_lifetime ], \
[min_sync_interval ], [startup_input_file ], \
[runtime_output_file ], [use_side_channel]
\end{verbatim}
\begin{center}
\begin{tabular}{| l | p{4.5in} |}
\hline
\textbf{Option} & \textbf{Description}\\
\hline
\hline
\texttt{min\_session\_lifetime } &
Minimum session liftime in milliseconds. HA update messages will only be generated once a session has existed for
at least this long. The default is 0, the minimum is 0, and the maximum is 65535.\\
\hline
\texttt{min\_sync\_interval } &
Minimum synchronization interval in milliseconds. HA update messages will not be generated more often than
once per interval on a given session. The default is 0, the minimum is 0, and the maximum is 65535.\\
\hline
\texttt{startup\_input\_file } &
The name of a file for snort to read HA messages from at startup.\\
\hline
\texttt{runtime\_output\_file } &
The name of a file to which Snort will write all HA messages that are generated while it is running.\\
\hline
\texttt{use\_side\_channel} &
Indicates that all HA messages should also be sent to the side channel for processing.\\
\hline
\end{tabular}
\end{center}
\subsubsection{Example Configurations}
\begin{enumerate}
\item{}
This example configuration is the default configuration in snort.conf and
can be used for repeatable tests of stream reassembly in readback mode.
\begin{verbatim}
preprocessor stream5_global: \
max_tcp 8192, track_tcp yes, track_udp yes, track_icmp no
preprocessor stream5_tcp: \
policy first, use_static_footprint_sizes
preprocessor stream5_udp: \
ignore_any_rules
\end{verbatim}
\item{}
This configuration maps two network segments to different OS policies, one for
Windows and one for Linux, with all other traffic going to the default policy
of Solaris.
\begin{verbatim}
preprocessor stream5_global: track_tcp yes
preprocessor stream5_tcp: bind_to 192.168.1.0/24, policy windows
preprocessor stream5_tcp: bind_to 10.1.1.0/24, policy linux
preprocessor stream5_tcp: policy solaris
\end{verbatim}
\end{enumerate}
\subsection{sfPortscan}
The sfPortscan module, developed by Sourcefire, is designed to detect the first
phase in a network attack: Reconnaissance. In the Reconnaissance phase, an
attacker determines what types of network protocols or services a host
supports. This is the traditional place where a portscan takes place. This
phase assumes the attacking host has no prior knowledge of what protocols or
services are supported by the target; otherwise, this phase would not be
necessary.
As the attacker has no beforehand knowledge of its intended target, most
queries sent by the attacker will be negative (meaning that the service ports
are closed). In the nature of legitimate network communications, negative
responses from hosts are rare, and rarer still are multiple negative responses
within a given amount of time. Our primary objective in detecting portscans is
to detect and track these negative responses.
One of the most common portscanning tools in use today is Nmap. Nmap
encompasses many, if not all, of the current portscanning techniques.
sfPortscan was designed to be able to detect the different types of scans Nmap
can produce.
sfPortscan will currently alert for the following types of Nmap scans:
\begin{itemize}
\item TCP Portscan
\item UDP Portscan
\item IP Portscan
\end{itemize}
These alerts are for one$\rightarrow$one portscans, which are the traditional
types of scans; one host scans multiple ports on another host. Most of the port
queries will be negative, since most hosts have relatively few services
available.
sfPortscan also alerts for the following types of decoy portscans:
\begin{itemize}
\item TCP Decoy Portscan
\item UDP Decoy Portscan
\item IP Decoy Portscan
\end{itemize}
Decoy portscans are much like the Nmap portscans described above, only the
attacker has a spoofed source address inter-mixed with the real scanning
address. This tactic helps hide the true identity of the attacker.
sfPortscan alerts for the following types of distributed portscans:
\begin{itemize}
\item TCP Distributed Portscan
\item UDP Distributed Portscan
\item IP Distributed Portscan
\end{itemize}
These are many$\rightarrow$one portscans. Distributed portscans occur when
multiple hosts query one host for open services. This is used to evade an IDS
and obfuscate command and control hosts.
\begin{note}
Negative queries will be distributed among scanning hosts, so we track this
type of scan through the scanned host.
\end{note}
sfPortscan alerts for the following types of portsweeps:
\begin{itemize}
\item TCP Portsweep
\item UDP Portsweep
\item IP Portsweep
\item ICMP Portsweep
\end{itemize}
These alerts are for one$\rightarrow$many portsweeps. One host scans a single
port on multiple hosts. This usually occurs when a new exploit comes out and
the attacker is looking for a specific service.
\begin{note}
The characteristics of a portsweep scan may not result in many negative
responses. For example, if an attacker portsweeps a web farm for port 80, we
will most likely not see many negative responses.
\end{note}
sfPortscan alerts on the following filtered portscans and portsweeps:
\begin{itemize}
\item TCP Filtered Portscan
\item UDP Filtered Portscan
\item IP Filtered Portscan
\item TCP Filtered Decoy Portscan
\item UDP Filtered Decoy Portscan
\item IP Filtered Decoy Portscan
\item TCP Filtered Portsweep
\item UDP Filtered Portsweep
\item IP Filtered Portsweep
\item ICMP Filtered Portsweep
\item TCP Filtered Distributed Portscan
\item UDP Filtered Distributed Portscan
\item IP Filtered Distributed Portscan
\end{itemize}
``Filtered'' alerts indicate that there were no network errors (ICMP
unreachables or TCP RSTs) or responses on closed ports have been suppressed.
It's also a good indicator of whether the alert is just a very active
legitimate host. Active hosts, such as NATs, can trigger these alerts because
they can send out many connection attempts within a very small amount of time.
A filtered alert may go off before responses from the remote hosts are
received.
sfPortscan only generates one alert for each host pair in question during the
time window (more on windows below). On TCP scan alerts, sfPortscan will also
display any open ports that were scanned. On TCP sweep alerts however,
sfPortscan will only track open ports after the alert has been triggered. Open
port events are not individual alerts, but tags based on the original scan
alert.
\subsubsection{sfPortscan Configuration}
Use of the Stream5 preprocessor is required for sfPortscan. Stream gives
portscan direction in the case of connectionless protocols like ICMP and UDP.
You should enable the Stream preprocessor in your \texttt{snort.conf}, as
described in Section \ref{stream5 section}.
The parameters you can use to configure the portscan module are:
\begin{slist}
\item \textbf{proto $<$protocol$>$}
Available options:
\begin{itemize}
\item \texttt{TCP}
\item \texttt{UDP}
\item \texttt{ICMP}
\item \texttt{ip\_proto}
\item \texttt{all}
\end{itemize}
\item \textbf{scan\_type $<$scan\_type$>$}
Available options:
\begin{itemize}
\item \texttt{portscan}
\item \texttt{portsweep}
\item \texttt{decoy\_portscan}
\item \texttt{distributed\_portscan}
\item \texttt{all}
\end{itemize}
\item \textbf{sense\_level $<$level$>$}
Available options:
\begin{itemize}
\item \texttt{low} - ``Low'' alerts are only generated on error packets sent
from the target host, and because of the nature of error responses, this
setting should see very few false positives. However, this setting will never
trigger a Filtered Scan alert because of a lack of error responses. This
setting is based on a static time window of 60 seconds, after which this window
is reset.
\item \texttt{medium} - ``Medium'' alerts track connection counts, and so will
generate filtered scan alerts. This setting may false positive on active hosts
(NATs, proxies, DNS caches, etc), so the user may need to deploy the use of
Ignore directives to properly tune this directive.
\item \texttt{high} - ``High'' alerts continuously track hosts on a network
using a time window to evaluate portscan statistics for that host. A "High"
setting will catch some slow scans because of the continuous monitoring, but is
very sensitive to active hosts. This most definitely will require the user to
tune sfPortscan.
\end{itemize}
\item \textbf{watch\_ip $<$ip1$|$ip2/cidr[ [port$|$port2-port3]]$>$ }
Defines which IPs, networks, and specific ports on those hosts to watch. The
list is a comma separated list of IP addresses, IP address using CIDR notation.
Optionally, ports are specified after the IP address/CIDR using a space and can
be either a single port or a range denoted by a dash. IPs or networks not
falling into this range are ignored if this option is used.
\item \textbf{ignore\_scanners $<$ip1$|$ip2/cidr[ [port$|$port2-port3]]$>$ }
Ignores the source of scan alerts. The parameter is the same format as that of
\texttt{watch\_ip}.
\item \textbf{ignore\_scanned $<$ip1$|$ip2/cidr[ [port$|$port2-port3]]$>$ }
Ignores the destination of scan alerts. The parameter is the same format as
that of \texttt{watch\_ip}.
\item \textbf{logfile $<$file$>$ }
This option will output portscan events to the file specified. If \texttt{file}
does not contain a leading slash, this file will be placed in the Snort config
dir.
\item \textbf{include\_midstream}
This option will include sessions picked up in midstream by Stream5.
This can lead to false alerts, especially under heavy load with dropped
packets; which is why the option is off by default.
\item \textbf{detect\_ack\_scans}
This option will include sessions picked up in midstream by the stream module,
which is necessary to detect ACK scans. However, this can lead to false
alerts, especially under heavy load with dropped packets; which is why the
option is off by default.
\item \textbf{disabled}
This optional keyword is allowed with any policy to avoid packet processing.
This option disables the preprocessor. When the preprocessor is disabled
only the memcap option is applied when specified with the configuration.
The other options are parsed but not used. Any valid configuration may have
"disabled" added to it.
\end{slist}
\subsubsection{Format}
\begin{verbatim}
preprocessor sfportscan: proto \
scan_type \
sense_level \
watch_ip \
ignore_scanners \
ignore_scanned \
logfile \
disabled
\end{verbatim}
\subsubsection{Example}
\begin{verbatim}
preprocessor flow: stats_interval 0 hash 2
preprocessor sfportscan:\
proto { all } \
scan_type { all } \
sense_level { low }
\end{verbatim}
\subsubsection{sfPortscan Alert Output}
\paragraph{Unified Output}
In order to get all the portscan information logged with the alert, snort
generates a pseudo-packet and uses the payload portion to store the additional
portscan information of priority count, connection count, IP count, port count,
IP range, and port range. The characteristics of the packet are:
\begin{verbatim}
Src/Dst MAC Addr == MACDAD
IP Protocol == 255
IP TTL == 0
\end{verbatim}
Other than that, the packet looks like the IP portion of the packet that caused
the portscan alert to be generated. This includes any IP options, etc. The
payload and payload size of the packet are equal to the length of the
additional portscan information that is logged. The size tends to be around
100 - 200 bytes.
Open port alerts differ from the other portscan alerts, because open port
alerts utilize the tagged packet output system. This means that if an output
system that doesn't print tagged packets is used, then the user won't see open
port alerts. The open port information is stored in the IP payload and
contains the port that is open.
The sfPortscan alert output was designed to work with unified2 packet logging,
so it is possible to extend favorite Snort GUIs to display portscan alerts and
the additional information in the IP payload using the above packet
characteristics.
\paragraph{Log File Output}
Log file output is displayed in the following format, and explained further
below:
\begin{verbatim}
Time: 09/08-15:07:31.603880
event_id: 2
192.168.169.3 -> 192.168.169.5 (portscan) TCP Filtered Portscan
Priority Count: 0
Connection Count: 200
IP Count: 2
Scanner IP Range: 192.168.169.3:192.168.169.4
Port/Proto Count: 200
Port/Proto Range: 20:47557
\end{verbatim}
If there are open ports on the target, one or more additional tagged packet(s)
will be appended:
\begin{verbatim}
Time: 09/08-15:07:31.603881
event_ref: 2
192.168.169.3 -> 192.168.169.5 (portscan) Open Port
Open Port: 38458
\end{verbatim}
\begin{slist}
\item \textbf{Event\_id/Event\_ref}
These fields are used to link an alert with the corresponding \texttt{Open
Port} tagged packet
\item \textbf{Priority Count}
\texttt{Priority Count} keeps track of bad responses (resets, unreachables).
The higher the priority count, the more bad responses have been received.
\item \textbf{Connection Count}
\texttt{Connection Count} lists how many connections are active on the hosts
(src or dst). This is accurate for connection-based protocols, and is more of
an estimate for others. Whether or not a portscan was filtered is determined
here. High connection count and low priority count would indicate filtered (no
response received from target).
\item \textbf{IP Count}
IP Count keeps track of the last IP to contact a host, and increments the count
if the next IP is different. For one-to-one scans, this is a low number. For
active hosts this number will be high regardless, and one-to-one scans may
appear as a distributed scan.
\item \textbf{Scanned/Scanner IP Range}
This field changes depending on the type of alert. Portsweep (one-to-many)
scans display the scanned IP range; Portscans (one-to-one) display the scanner
IP.
\item \textbf{Port Count}
Port Count keeps track of the last port contacted and increments this number
when that changes. We use this count (along with IP Count) to determine the
difference between one-to-one portscans and one-to-one decoys. \end{slist}
\subsubsection{Tuning sfPortscan}
\label{tuning sfportscan}
The most important aspect in detecting portscans is tuning the detection engine
for your network(s). Here are some tuning tips:
\begin{slist}
\item \textbf{Use the watch\_ip, ignore\_scanners, and ignore\_scanned options.}
It's important to correctly set these options. The \texttt{watch\_ip} option
is easy to understand. The analyst should set this option to the list of CIDR
blocks and IPs that they want to watch. If no \texttt{watch\_ip} is defined,
sfPortscan will watch all network traffic.
The \texttt{ignore\_scanners} and \texttt{ignore\_scanned} options come into
play in weeding out legitimate hosts that are very active on your network.
Some of the most common examples are NAT IPs, DNS cache servers, syslog
servers, and nfs servers. sfPortscan may not generate false positives for
these types of hosts, but be aware when first tuning sfPortscan for these IPs.
Depending on the type of alert that the host generates, the analyst will know
which to ignore it as. If the host is generating portsweep events, then add it
to the \texttt{ignore\_scanners} option. If the host is generating portscan
alerts (and is the host that is being scanned), add it to the
\texttt{ignore\_scanned} option.
\item \textbf{Filtered scan alerts are much more prone to false positives.}
When determining false positives, the alert type is very important. Most of
the false positives that sfPortscan may generate are of the filtered scan alert
type. So be much more suspicious of filtered portscans. Many times this just
indicates that a host was very active during the time period in question. If
the host continually generates these types of alerts, add it to the
\texttt{ignore\_scanners} list or use a lower sensitivity level.
\item \textbf{Make use of the Priority Count, Connection Count, IP Count, Port
Count, IP Range, and Port Range to determine false positives.}
The portscan alert details are vital in determining the scope of a portscan and
also the confidence of the portscan. In the future, we hope to automate much
of this analysis in assigning a scope level and confidence level, but for now
the user must manually do this. The easiest way to determine false positives
is through simple ratio estimations. The following is a list of ratios to
estimate and the associated values that indicate a legitimate scan and not a
false positive.
\textbf{Connection Count / IP Count:} This ratio indicates an estimated
average of connections per IP. For portscans, this ratio should be high, the
higher the better. For portsweeps, this ratio should be low.
\textbf{Port Count / IP Count:} This ratio indicates an estimated average of
ports connected to per IP. For portscans, this ratio should be high and
indicates that the scanned host's ports were connected to by fewer IPs. For
portsweeps, this ratio should be low, indicating that the scanning host
connected to few ports but on many hosts.
\textbf{Connection Count / Port Count:} This ratio indicates an estimated
average of connections per port. For portscans, this ratio should be low.
This indicates that each connection was to a different port. For portsweeps,
this ratio should be high. This indicates that there were many connections to
the same port.
The reason that \texttt{Priority Count} is not included, is because the
priority count is included in the connection count and the above comparisons
take that into consideration. The Priority Count play an important role in
tuning because the higher the priority count the more likely it is a real
portscan or portsweep (unless the host is firewalled).
\item \textbf{If all else fails, lower the sensitivity level.}
If none of these other tuning techniques work or the analyst doesn't have the
time for tuning, lower the sensitivity level. You get the best protection the
higher the sensitivity level, but it's also important that the portscan
detection engine generate alerts that the analyst will find informative. The
low sensitivity level only generates alerts based on error responses. These
responses indicate a portscan and the alerts generated by the low sensitivity
level are highly accurate and require the least tuning. The low sensitivity
level does not catch filtered scans; since these are more prone to false
positives. \end{slist}
\subsection{RPC Decode}
\label{sub:rpc-decoder}
The rpc\_decode preprocessor normalizes RPC multiple fragmented records into a
single un-fragmented record. It does this by normalizing the packet into the
packet buffer. If stream5 is enabled, it will only process client-side
traffic. By default, it runs against traffic on ports 111 and 32771.
\subsubsection{Format}
\begin{verbatim}
preprocessor rpc_decode: \
[ alert_fragments ] \
[no_alert_multiple_requests] \
[no_alert_large_fragments] \
[no_alert_incomplete]
\end{verbatim}
\begin{table}[h]
\begin{center}
\begin{tabular}{| l | l |}
\hline
\textbf{Option}& \textbf{Description}\\
\hline
\hline
\texttt{alert\_fragments}&
Alert on any fragmented RPC record.\\
\hline
\texttt{no\_alert\_multiple\_requests}&
Don't alert when there are multiple records in one packet.\\
\hline
\texttt{no\_alert\_large\_fragments}&
Don't alert when the sum of fragmented records exceeds one packet.\\
\hline
\texttt{no\_alert\_incomplete}&
Don't alert when a single fragment record exceeds the size of one packet.\\
\hline
\end{tabular}
\end{center}
\end{table}
\subsection{Performance Monitor}
\label{sub:perfmonitor}
This preprocessor measures Snort's real-time and theoretical maximum
performance. Whenever this preprocessor is turned on, it should have an output
mode enabled, either ``console'' which prints statistics to the console window
or ``file'' with a file name, where statistics get printed to the specified
file name. By default, Snort's real-time statistics are processed. This
includes:
\begin{itemize}
\item Time Stamp
\item Drop Rate
\item Mbits/Sec (wire) [duplicated below for easy comparison with other rates]
\item Alerts/Sec
\item K-Pkts/Sec (wire) [duplicated below for easy comparison with other rates]
\item Avg Bytes/Pkt (wire) [duplicated below for easy comparison with other rates]
\item Pat-Matched [percent of data received that Snort processes in pattern matching]
\item Syns/Sec
\item SynAcks/Sec
\item New Sessions Cached/Sec
\item Sessions Del fr Cache/Sec
\item Current Cached Sessions
\item Max Cached Sessions
\item Stream Flushes/Sec
\item Stream Session Cache Faults
\item Stream Session Cache Timeouts
\item New Frag Trackers/Sec
\item Frag-Completes/Sec
\item Frag-Inserts/Sec
\item Frag-Deletes/Sec
\item Frag-Auto Deletes/Sec [memory DoS protection]
\item Frag-Flushes/Sec
\item Frag-Current [number of current Frag Trackers]
\item Frag-Max [max number of Frag Trackers at any time]
\item Frag-Timeouts
\item Frag-Faults
\item Number of CPUs [*** Only if compiled with LINUX\_SMP ***, the next three appear for each CPU]
\item CPU usage (user)
\item CPU usage (sys)
\item CPU usage (Idle)
\item Mbits/Sec (wire) [average mbits of total traffic]
\item Mbits/Sec (ipfrag) [average mbits of IP fragmented traffic]
\item Mbits/Sec (ipreass) [average mbits Snort injects after IP reassembly]
\item Mbits/Sec (tcprebuilt) [average mbits Snort injects after TCP reassembly]
\item Mbits/Sec (applayer) [average mbits seen by rules and protocol decoders]
\item Avg Bytes/Pkt (wire)
\item Avg Bytes/Pkt (ipfrag)
\item Avg Bytes/Pkt (ipreass)
\item Avg Bytes/Pkt (tcprebuilt)
\item Avg Bytes/Pkt (applayer)
\item K-Pkts/Sec (wire)
\item K-Pkts/Sec (ipfrag)
\item K-Pkts/Sec (ipreass)
\item K-Pkts/Sec (tcprebuilt)
\item K-Pkts/Sec (applayer)
\item Total Packets Received
\item Total Packets Dropped (not processed)
\item Total Packets Blocked (inline)
\item Percentage of Packets Dropped
\item Total Filtered TCP Packets
\item Total Filtered UDP Packets
\item Midstream TCP Sessions/Sec
\item Closed TCP Sessions/Sec
\item Pruned TCP Sessions/Sec
\item TimedOut TCP Sessions/Sec
\item Dropped Async TCP Sessions/Sec
\item TCP Sessions Initializing
\item TCP Sessions Established
\item TCP Sessions Closing
\item Max TCP Sessions (interval)
\item New Cached UDP Sessions/Sec
\item Cached UDP Ssns Del/Sec
\item Current Cached UDP Sessions
\item Max Cached UDP Sessions
\item Current Attribute Table Hosts (Target Based)
\item Attribute Table Reloads (Target Based)
\item Mbits/Sec (Snort)
\item Mbits/Sec (sniffing)
\item Mbits/Sec (combined)
\item uSeconds/Pkt (Snort)
\item uSeconds/Pkt (sniffing)
\item uSeconds/Pkt (combined)
\item KPkts/Sec (Snort)
\item KPkts/Sec (sniffing)
\item KPkts/Sec (combined)
\end{itemize}
There are over 100 individual statistics included. A header line is output at startup and
rollover that labels each column.
The following options can be used with the performance monitor:
\begin{itemize}
\item \texttt{flow} - Prints out statistics about the type and amount of traffic
and protocol distributions that Snort is seeing. This option can produce large
amounts of output.
\item \texttt{flow-file} - Prints \texttt{flow} statistics in a comma-delimited
format to the file that is specified.
\begin{itemize}
\item Timestamp
\item Total \% TCP bytes
\item Total \% UDP bytes
\item Total \% ICMP bytes
\item Total \% OTHER bytes
\item Number of Packet length entries
\item Packet length entries - bytes,\%total
\item Number of TCP port flow entries
\item TCP port flow entries : port,\%total,\%src,\%dst
\item \% TCP high port to high port
\item Number of UDP port flow entries
\item UDP port flow entries : port,\%total,\%src,\%dst
\item \% UDP high port to high port
\item Number of ICMP type entries
\item ICMP type entries : type,\%total
\end{itemize}
Specifying this option implicitly enables \texttt{flow} statistics.
\item \texttt{events} - Turns on event reporting. This prints out statistics
as to the number of rules that were evaluated and didn't match
(\textit{non-qualified events}) vs. the number of rules that were evaluated and
matched (\textit{qualified events}). A high \textit{non-qualified event} to
\textit{qualified event} ratio can indicate there are many rules with either
minimal content or no content that are being evaluated without success. The
fast pattern matcher is used to select a set of rules for evaluation based on
the longest \texttt{content} or a \texttt{content} modified with the
\texttt{fast\_pattern} rule option in a rule. Rules with short, generic
contents are more likely to be selected for evaluation than those with
longer, more unique contents. Rules without \texttt{content} are not
filtered via the fast pattern matcher and are always evaluated, so if
possible, adding a \texttt{content} rule option to those rules can decrease the
number of times they need to be evaluated and improve performance.
\item \texttt{max} - Turns on the theoretical maximum performance that Snort
calculates given the processor speed and current performance. This is only
valid for uniprocessor machines, since many operating systems don't keep
accurate kernel statistics for multiple CPUs.
\item \texttt{console} - Prints statistics at the console.
\item \texttt{file} - Prints statistics in a comma-delimited format to the file
that is specified. Not all statistics are output to this file. You may also
use \texttt{snortfile} which will output into your defined Snort log directory.
Both of these directives can be overridden on the command line with the
\texttt{-Z} or \texttt{--perfmon-file} options. At startup, Snort will log
a distinctive line to this file with a timestamp to all readers to easily identify
gaps in the stats caused by Snort not running.
\item \texttt{pktcnt} - Adjusts the number of packets to process before
checking for the time sample. This boosts performance, since checking the time
sample reduces Snort's performance. By default, this is 10000.
\item \texttt{time} - Represents the number of seconds between intervals.
\item \texttt{accumulate} or \texttt{reset} - Defines which type of drop
statistics are kept by the operating system. By default, \texttt{reset} is
used.
\item \texttt{atexitonly} - Dump stats for entire life of Snort.
One or more of the following arguments can be given to specify specific
statistic types to dump at exit:
\begin{itemize}
\item \texttt{base-stats}
\item \texttt{flow-stats}
\item \texttt{flow-ip-stats}
\item \texttt{events-stats}
\end{itemize}
Without any arguments, all enabled stats will be dumped only when Snort exits.
\item \texttt{max\_file\_size} - Defines the maximum size of the
comma-delimited file. Before the file exceeds this size, it will be rolled
into a new date stamped file of the format YYYY-MM-DD, followed by
YYYY-MM-DD.x, where x will be incremented each time the comma delimited file
is rolled over. The minimum is 4096 bytes and the maximum is 2147483648 bytes
(2GB). The default is the same as the maximum.
\item \texttt{flow-ip} - Collects IP traffic distribution statistics based on
host pairs. For each pair of hosts for which IP traffic has been seen, the
following statistics are collected for both directions (A to B and B to A):
\begin{itemize}
\item TCP Packets
\item TCP Traffic in Bytes
\item TCP Sessions Established
\item TCP Sessions Closed
\item UDP Packets
\item UDP Traffic in Bytes
\item UDP Sessions Created
\item Other IP Packets
\item Other IP Traffic in Bytes
\end{itemize}
These statistics are printed and reset at the end of each interval.
\item \texttt{flow-ip-file} - Prints the flow IP statistics in a
comma-delimited format to the file that is specified. All of the statistics
mentioned above, as well as the IP addresses of the host pairs in
human-readable format, are included.
Each line in the file will have its values correspond (in order) to those below:
\begin{itemize}
\item IP Address A (String)
\item IP Address B (String)
\item TCP Packets from A to B
\item TCP Traffic in Bytes from A to B
\item TCP Packets from B to A
\item TCP Traffic in Bytes from B to A
\item UDP Packets from A to B
\item UDP Traffic in Bytes from A to B
\item UDP Packets from B to A
\item UDP Traffic in Bytes from B to A
\item Other IP Packets from A to B
\item Other IP Traffic in Bytes from A to B
\item Other IP Packets from B to A
\item Other IP Traffic in Bytes from B to A
\item TCP Sessions Established
\item TCP Sessions Closed
\item UDP Sessions Created
\end{itemize}
\item \texttt{flow-ip-memcap} - Sets the memory cap on the hash table used to
store IP traffic statistics for host pairs. Once the cap has been reached, the
table will start to prune the statistics for the least recently seen host pairs
to free memory. This value is in bytes and the default value is
52428800 (50MB).
\end{itemize}
\subsubsection{Examples}
\begin{verbatim}
preprocessor perfmonitor: \
time 30 events flow file stats.profile max console pktcnt 10000
preprocessor perfmonitor: \
time 300 file /var/tmp/snortstat pktcnt 10000
preprocessor perfmonitor: \
time 30 flow-ip flow-ip-file flow-ip-stats.csv pktcnt 1000
preprocessor perfmonitor: \
time 30 pktcnt 1000 snortfile base.csv flow-file flows.csv atexitonly flow-stats
preprocessor perfmonitor: \
time 30 pktcnt 1000 flow events atexitonly base-stats flow-stats console
\end{verbatim}
\subsection{HTTP Inspect}
\label{sub:http-inspect}
HTTP Inspect is a generic HTTP decoder for user applications. Given a data
buffer, HTTP Inspect will decode the buffer, find HTTP fields, and normalize
the fields. HTTP Inspect works on both client requests and server responses.
The current version of HTTP Inspect only handles stateless processing. This
means that HTTP Inspect looks for HTTP fields on a packet-by-packet basis, and
will be fooled if packets are not reassembled. This works fine when there is
another module handling the reassembly, but there are limitations in analyzing
the protocol. Future versions will have a stateful processing mode which will
hook into various reassembly modules.
HTTP Inspect has a very ``rich'' user configuration. Users can configure
individual HTTP servers with a variety of options, which should allow the user
to emulate any type of web server. Within HTTP Inspect, there are two areas of
configuration: global and server.
\subsubsection{Global Configuration}
The global configuration deals with configuration options that determine the
global functioning of HTTP Inspect. The following example gives the generic
global configuration format:
\subsubsection{Format}
\begin{verbatim}
preprocessor http_inspect: \
global \
iis_unicode_map \
codemap \
[detect_anomalous_servers] \
[proxy_alert] \
[max_gzip_mem ] \
[compress_depth ] [decompress_depth ] \
[memcap ] \
disabled
\end{verbatim}
You can only have a single global configuration, you'll get an error if you try
otherwise.
\paragraph{Configuration}
\begin{slist}
\item \texttt{iis\_unicode\_map $<$map\_filename$>$ [codemap $<$integer$>$]}
This is the global \texttt{iis\_unicode\_map} file. The
\texttt{iis\_unicode\_map} is a required configuration parameter. The map file
can reside in the same directory as \texttt{snort.conf} or be specified via a
fully-qualified path to the map file.
The \texttt{iis\_unicode\_map} file is a Unicode codepoint map which tells HTTP
Inspect which codepage to use when decoding Unicode characters. For US
servers, the codemap is usually 1252.
A Microsoft US Unicode codepoint map is provided in the Snort source
\texttt{etc} directory by default. It is called \texttt{unicode.map} and
should be used if no other codepoint map is available. A tool is supplied with
Snort to generate custom Unicode \texttt{maps--ms\_unicode\_generator.c}, which
is available at \url{http://www.snort.org/dl/contrib/}.
\begin{note}
Remember that this configuration is for the global IIS Unicode map, individual
servers can reference their own IIS Unicode map.
\end{note}
\item \texttt{detect\_anomalous\_servers}
This global configuration option enables generic HTTP server traffic inspection
on non-HTTP configured ports, and alerts if HTTP traffic is seen. Don't turn
this on if you don't have a default server configuration that encompasses all
of the HTTP server ports that your users might access. In the future, we want
to limit this to specific networks so it's more useful, but for right now, this
inspects all network traffic. This option is turned off by default.
\item \texttt{proxy\_alert}
This enables global alerting on HTTP server proxy usage. By configuring HTTP
Inspect servers and enabling \texttt{allow\_proxy\_use}, you will only receive
proxy use alerts for web users that aren't using the configured proxies or are
using a rogue proxy server.
Please note that if users aren't required to configure web proxy use, then you
may get a lot of proxy alerts. So, please only use this feature with
traditional proxy environments. Blind firewall proxies don't count.
\item \texttt{compress\_depth $<$integer$>$}
This option specifies the maximum amount of packet payload to decompress. This
value can be set from 1 to 65535. The default for this option is 1460.
\begin{note}
Please note, in case of multiple policies, the value specified in the default policy
is used and this value overwrites the values specified in the other policies. In case
of \texttt{unlimited\_decompress} this should be set to its max value. This value should
be specified in the default policy even when the HTTP inspect preprocessor is turned off
using the \texttt{disabled} keyword.
\end{note}
\item \texttt{decompress\_depth $<$integer$>$}
This option specifies the maximum amount of decompressed data to obtain from the
compressed packet payload. This value can be set from 1 to 65535. The default for
this option is 2920.
\begin{note}
Please note, in case of multiple policies, the value specified in the default policy
is used and this value overwrites the values specified in the other policies. In case
of \texttt{unlimited\_decompress} this should be set to its max value. This value should
be specified in the default policy even when the HTTP inspect preprocessor is turned off
using the \texttt{disabled} keyword.
\end{note}
\item \texttt{max\_gzip\_mem $<$integer$>$}
This option determines (in bytes) the maximum amount of memory the HTTP Inspect preprocessor
will use for decompression. The minimum allowed value for this option is 3276 bytes. This option
determines the number of concurrent sessions that can be decompressed at any given instant.
The default value for this option is 838860.
\begin{note}
This value should be specified in the default policy even when the HTTP inspect preprocessor is
turned off using the \texttt{disabled} keyword.
\end{note}
\item \texttt{memcap $<$integer$>$}
This option determines (in bytes) the maximum amount of memory the HTTP Inspect preprocessor
will use for logging the URI and Hostname data. This value can be set from 2304 to 603979776 (576 MB).
This option along with the maximum uri and hostname logging size (which is defined in snort) will
determine the maximum HTTP sessions that will log the URI and hostname data at any given instant. The
maximum size for logging URI data is 2048 and for hostname is 256. The default value for this
option is 150994944 (144 MB).
\begin {note}
This value should be specified in the default policy even when the HTTP inspect preprocessor is turned off
using the \texttt{disabled} keyword. In case of multiple policies, the value specified in the
default policy will overwrite the value specified in other policies.
max http sessions logged = memcap /( max uri logging size + max hostname logging size )
max uri logging size defined in snort : 2048
max hostname logging size defined in snort : 256
\end{note}
\item \texttt{disabled}
This optional keyword is allowed with any policy to avoid packet processing.
This option disables the preprocessor. When the preprocessor is disabled
only the "memcap", "max\_gzip\_mem", "compress\_depth" and "decompress\_depth"
options are applied when specified with the configuration. Other options are
parsed but not used. Any valid configuration may have "disabled" added to it.
\end{slist}
\subsubsection{Example Global Configuration}
\begin{verbatim}
preprocessor http_inspect: \
global iis_unicode_map unicode.map 1252
\end{verbatim}
\subsubsection{Server Configuration}
There are two types of server configurations: default and by IP address.
\paragraph{Default}
This configuration supplies the default server configuration for any server
that is not individually configured. Most of your web servers will most likely
end up using the default configuration.
\subsubsection{Example Default Configuration}
\begin{verbatim}
preprocessor http_inspect_server: \
server default profile all ports { 80 }
\end{verbatim}
\paragraph{Configuration by IP Address}
This format is very similar to ``default'', the only difference being that
specific IPs can be configured.
\subsubsection{Example IP Configuration}
\begin{verbatim}
preprocessor http_inspect_server: \
server 10.1.1.1 profile all ports { 80 }
\end{verbatim}
\paragraph{Configuration by Multiple IP Addresses}
This format is very similar to ``Configuration by IP Address'', the only
difference being that multiple IPs can be specified via a space separated list.
There is a limit of 40 IP addresses or CIDR notations per
\texttt{http\_inspect\_server} line.
\subsubsection{Example Multiple IP Configuration}
\begin{verbatim}
preprocessor http_inspect_server: \
server { 10.1.1.1 10.2.2.0/24 } profile all ports { 80 }
\end{verbatim}
\subsubsection{Server Configuration Options}
Important: Some configuration options have an argument of `yes' or `no'. This
argument specifies whether the user wants the configuration option to generate
an HTTP Inspect alert or not. The `yes/no' argument does not specify whether
the configuration option itself is on or off, only the alerting functionality.
In other words, whether set to `yes' or 'no', HTTP normalization will still
occur, and rules based on HTTP traffic will still trigger.
\begin{slist}
\item \texttt{profile $<$all$|$apache$|$iis$|$iis5\_0$|$iis4\_0$>$}
Users can configure HTTP Inspect by using pre-defined HTTP server profiles.
Profiles allow the user to easily configure the preprocessor for a certain type
of server, but are not required for proper operation.
There are five profiles available: all, apache, iis, iis5\_0, and iis4\_0.
\begin{subslist}
\item \texttt{all}
The \texttt{all} profile is meant to normalize the URI using most of the common
tricks available. We alert on the more serious forms of evasions. This is a
great profile for detecting all types of attacks, regardless of the HTTP
server. \texttt{profile all} sets the configuration options described in Table
\ref{profile_all_options}.
\begin{table}[h]
\begin{center}
\caption{Options for the ``all'' Profile}
\label{profile_all_options}
\begin{tabular}{| l | p{3in} |}
\hline
\textbf{Option} & \textbf{Setting} \\
\hline
\hline
server\_flow\_depth & 300 \\
\hline
client\_flow\_depth & 300 \\
\hline
post\_depth & 0 \\
\hline
chunk encoding & alert on chunks larger than 500000 bytes \\
\hline
iis\_unicode\_map & codepoint map in the global configuration \\
\hline
ASCII decoding & on, alert off \\
\hline
multiple slash & on, alert off \\
\hline
directory normalization & on, alert off \\
\hline
apache whitespace & on, alert off \\
\hline
double decoding & on, alert on \\
\hline
\%u decoding & on, alert on \\
\hline
bare byte decoding & on, alert on \\
\hline
iis unicode codepoints & on, alert on \\
\hline
iis backslash & on, alert off \\
\hline
iis delimiter & on, alert off \\
\hline
webroot & on, alert on\\
\hline
non\_strict URL parsing & on\\
\hline
tab\_uri\_delimiter & is set\\
\hline
max\_header\_length & 0, header length not checked\\
\hline
max\_spaces & 200 \\
\hline
max\_headers & 0, number of headers not checked\\
\hline
\end{tabular}
\end{center}
\end{table}
\item \texttt{apache}
The \texttt{apache} profile is used for Apache web servers. This differs from
the \texttt{iis} profile by only accepting UTF-8 standard Unicode encoding and
not accepting backslashes as legitimate slashes, like IIS does. Apache also
accepts tabs as whitespace. \texttt{profile apache} sets the configuration
options described in Table \ref{profile_apache_options}.
\begin{table}[h]
\begin{center}
\caption{Options for the \texttt{apache} Profile}
\label{profile_apache_options}
\begin{tabular}{| l | p{3in} |}
\hline
\textbf{Option} & \textbf{Setting}\\
\hline
\hline
server\_flow\_depth & 300 \\
\hline
client\_flow\_depth & 300 \\
\hline
post\_depth & 0 \\
\hline
chunk encoding & alert on chunks larger than 500000 bytes \\
\hline
ASCII decoding & on, alert off \\
\hline
multiple slash & on, alert off \\
\hline
directory normalization & on, alert off \\
\hline
webroot & on, alert on\\
\hline
apache whitespace & on, alert on \\
\hline
utf\_8 encoding & on, alert off \\
\hline
non\_strict url parsing & on \\
\hline
tab\_uri\_delimiter & is set\\
\hline
max\_header\_length & 0, header length not checked\\
\hline
max\_spaces & 200 \\
\hline
max\_headers & 0, number of headers not checked\\
\hline
\hline
\end{tabular}
\end{center}
\end{table}
\item \texttt{iis}
The \texttt{iis} profile mimics IIS servers. So that means we use IIS Unicode
codemaps for each server, \%u encoding, bare-byte encoding, double decoding,
backslashes, etc. \texttt{profile iis} sets the configuration options described
in Table \ref{profile_iis_options}.
\begin{table}[h]
\begin{center}
\caption{Options for the \texttt{iis} Profile}
\label{profile_iis_options}
\begin{tabular}{| l | p{3in} |}
\hline
\textbf{Option} & \textbf{Setting}\\
\hline
\hline
server\_flow\_depth & 300 \\
\hline
client\_flow\_depth & 300 \\
\hline
post\_depth & -1 \\
\hline
chunk encoding & alert on chunks larger than 500000 bytes\\
\hline
iis\_unicode\_map & codepoint map in the global configuration \\
\hline
ASCII decoding & on, alert off \\
\hline
multiple slash & on, alert off \\
\hline
directory normalization & on, alert off \\
\hline
webroot & on, alert on\\
\hline
double decoding & on, alert on \\
\hline
\%u decoding & on, alert on \\
\hline
bare byte decoding & on, alert on \\
\hline
iis unicode codepoints & on, alert on \\
\hline
iis backslash & on, alert off \\
\hline
iis delimiter & on, alert on \\
\hline
apache whitespace & on, alert on \\
\hline
non\_strict URL parsing & on\\
\hline
max\_header\_length & 0, header length not checked\\
\hline
max\_spaces & 200 \\
\hline
max\_headers & 0, number of headers not checked\\
\hline
\end{tabular}
\end{center}
\end{table}
\item \texttt{iis4\_0, iis5\_0}
In IIS 4.0 and IIS 5.0, there was a double decoding vulnerability. These two
profiles are identical to \texttt{iis}, except they will alert by default if a
URL has a double encoding. Double decode is not supported in IIS 5.1 and
beyond, so it's disabled by default.
\item \texttt{default, no profile}
The default options used by HTTP Inspect do not use a profile and are described
in Table \ref{default_HTTP_Inspect_options}.
\begin{table}[h]
\begin{center}
\caption{Default HTTP Inspect Options}
\label{default_HTTP_Inspect_options}
\begin{tabular}{| l | p{3in} |}
\hline
\textbf{Option} & \textbf{Setting}\\
\hline
\hline
port & 80\\
\hline
server\_flow\_depth & 300 \\
\hline
client\_flow\_depth & 300 \\
\hline
post\_depth & -1 \\
\hline
chunk encoding & alert on chunks larger than 500000 bytes\\
\hline
ASCII decoding & on, alert off \\
\hline
utf\_8 encoding & on, alert off\\
\hline
multiple slash & on, alert off \\
\hline
directory normalization & on, alert off \\
\hline
webroot & on, alert on\\
\hline
iis backslash & on, alert off \\
\hline
apache whitespace & on, alert off \\
\hline
iis delimiter & on, alert off \\
\hline
non\_strict URL parsing & on\\
\hline
max\_header\_length & 0, header length not checked\\
\hline
max\_spaces & 200 \\
\hline
max\_headers & 0, number of headers not checked\\
\hline
\end{tabular}
\end{center}
\end{table}
Profiles must be specified as the first server option and cannot be combined
with any other options except:
\begin{itemize}
\item \texttt{ports}
\item \texttt{iis\_unicode\_map}
\item \texttt{allow\_proxy\_use}
\item \texttt{server\_flow\_depth}
\item \texttt{client\_flow\_depth}
\item \texttt{post\_depth}
\item \texttt{no\_alerts}
\item \texttt{inspect\_uri\_only}
\item \texttt{oversize\_dir\_length}
\item \texttt{normalize\_headers}
\item \texttt{normalize\_cookies}
\item \texttt{normalize\_utf}
\item \texttt{max\_header\_length}
\item \texttt{max\_spaces}
\item \texttt{max\_headers}
\item \texttt{extended\_response\_inspection}
\item \texttt{enable\_cookie}
\item \texttt{inspect\_gzip}
\item \texttt{unlimited\_decompress}
\item \texttt{normalize\_javascript}
\item \texttt{max\_javascript\_whitespaces}
\item \texttt{enable\_xff}
\item \texttt{http\_methods}
\item \texttt{log\_uri}
\item \texttt{log\_hostname}
\item \texttt{small\_chunk\_length}
\end{itemize}
These options must be specified after the \texttt{profile} option.
\end{subslist}
\subsubsection{Example}
\begin{verbatim}
preprocessor http_inspect_server: \
server 1.1.1.1 profile all ports { 80 3128 }
\end{verbatim}
\item \texttt{ports $\{ <$port$> [<$port$> <...>] \}$}
This is how the user configures which ports to decode on the HTTP server.
However, HTTPS traffic is encrypted and cannot be decoded with HTTP Inspect.
To ignore HTTPS traffic, use the SSL preprocessor.
\item \texttt{iis\_unicode\_map $<$map\_filename$>$ codemap $<$integer$>$}
The IIS Unicode map is generated by the program ms\_unicode\_generator.c. This
program is located on the Snort.org web site at
\url{http://www.snort.org/dl/contrib/} directory. Executing this program
generates a Unicode map for the system that it was run on. So, to get the
specific Unicode mappings for an IIS web server, you run this program on that
server and use that Unicode map in this configuration.
When using this option, the user needs to specify the file that contains the
IIS Unicode map and also specify the Unicode map to use. For US servers, this
is usually 1252. But the ms\_unicode\_generator program tells you which
codemap to use for you server; it's the ANSI code page. You can select the
correct code page by looking at the available code pages that the
ms\_unicode\_generator outputs.
\item \texttt{extended\_response\_inspection}
This enables the extended HTTP response inspection. The default http response
inspection does not inspect the various fields of a HTTP response. By turning
this option the HTTP response will be thoroughly inspected. The different fields
of a HTTP response such as status code, status message, headers, cookie (when
enable\_cookie is configured) and body are extracted and saved into buffers.
Different rule options are provided to inspect these buffers.
\begin{note}
When this option is turned on, if the HTTP response packet has a body then any
content pattern matches ( without http modifiers ) will search the response body
((decompressed in case of gzip) and not the entire packet payload. To search for
patterns in the header of the response, one should use the http modifiers with
content such as \texttt{http\_header}, \texttt{http\_stat\_code}, \texttt{http\_stat\_msg}
and \texttt{http\_cookie}.
\end{note}
\item \texttt{enable\_cookie}
This options turns on the cookie extraction from HTTP requests and HTTP response.
By default the cookie inspection and extraction will be turned off. The cookie from
the \texttt{Cookie} header line is extracted and stored in HTTP Cookie buffer for
HTTP requests and cookie from the \texttt{Set-Cookie} is extracted and stored in
HTTP Cookie buffer for HTTP responses. The \texttt{Cookie:} and \texttt{Set-Cookie:}
header names itself along with leading spaces and the CRLF terminating the header
line are stored in the HTTP header buffer and are not stored in the HTTP cookie buffer.
\begin{verbatim}
Ex: Set-Cookie: mycookie \r\n
In this case, Set-Cookie: \r\n will be in the HTTP header buffer and the pattern
mycookie will be in the HTTP cookie buffer.
\end{verbatim}
\item \texttt{inspect\_gzip}
This option specifies the HTTP inspect module to uncompress the compressed
data(gzip/deflate) in HTTP response. You should select the config option
"extended\_response\_inspection" before configuring this option. Decompression
is done across packets. So the decompression will end when either the
'compress\_depth' or 'decompress\_depth' is reached or when the compressed data ends.
When the compressed data is spanned across multiple packets, the state of the last
decompressed packet is used to decompressed the data of the next packet.
But the decompressed data are individually inspected. (i.e. the
decompressed data from different packets are not combined while inspecting).
Also the amount of decompressed data that will be inspected depends on the
'server\_flow\_depth' configured.
Http Inspect generates a preprocessor alert with gid 120 and sid 6 when the decompression
fails. When the decompression fails due to a CRC error encountered by zlib, HTTP Inspect
will also provide the detection module with the data that was decompressed by zlib.
\begin{note}
To enable compression of HTTP server response, Snort should be configured
with the --enable-zlib flag.
\end{note}
\item \texttt{unlimited\_decompress}
This option enables the user to decompress unlimited gzip data (across multiple
packets).Decompression will stop when the compressed data ends or when a out of
sequence packet is received. To ensure unlimited decompression, user should set
the 'compress\_depth' and 'decompress\_depth' to its maximum values in the default
policy. The decompression in a single packet is still limited by the 'compress\_depth'
and 'decompress\_depth'.
\item \texttt{normalize\_javascript}
This option enables the normalization of Javascript within the HTTP response body.
You should select the config option \texttt{extended\_response\_inspection} before configuring
this option. When this option is turned on, Http Inspect searches for a Javascript within the
HTTP response body by searching for the $<$script$>$ tags and starts normalizing it.
When Http Inspect sees the $<$script$>$ tag without a type, it is considered as a javascript.
The obfuscated data within the javascript functions such as unescape, String.fromCharCode, decodeURI,
decodeURIComponent will be normalized. The different encodings handled within the unescape/
decodeURI/decodeURIComponent are \texttt{\%XX}, \texttt{\%uXXXX}, \texttt{\\XX} and \texttt{\\uXXXXi}.
Apart from these encodings, Http Inspect will also detect the consecutive whitespaces and normalize
it to a single space. Http Inspect will also normalize the plus and concatenate the strings.
The rule option \texttt{file\_data} can be used to access this normalized buffer from the rule.
A preprocessor alert with SID 9 and GID 120 is generated when the obfuscation levels within the
Http Inspect is equal to or greater than 2.
\begin{verbatim}
Example:
HTTP/1.1 200 OK\r\n
Date: Wed, 29 Jul 2009 13:35:26 GMT\r\n
Server: Apache/2.2.3 (Debian) PHP/5.2.0-8+etch10 mod_ssl/2.2.3 OpenSSL/0.9.8c\r\n
Last-Modified: Sun, 20 Jan 2008 12:01:21 GMT\r\n
Accept-Ranges: bytes\r\n
Content-Length: 214\r\n
Keep-Alive: timeout=15, max=99\r\n
Connection: Keep-Alive\r\n
Content-Type: application/octet-stream\r\n\r\n
FIXME
\end{verbatim}
The above javascript will generate the preprocessor alert with SID 9 and GIDF 120 when \texttt{normalize\_javascript}
is turned on.
Http Inspect will also generate a preprocessor alert with GID 120 and SID 11 when there are more than one type
of encodings within the escaped/encoded data.
\begin{verbatim}
For example:
unescape("%48\x65%6C%6C%6F%2C%20%73%6E%6F%72%74%20%74%65%61%6D%21");
String.fromCharCode(0x48, 0x65, 0x6c, 0x6c, 111, 44, 32, 115, 110, 111, 114, 116, 32, 116, 101, 97, 109, 33)
\\end{verbatim}
The above obfuscation will generate the preprocessor alert with GID 120 and SID 11.
This option is turned off by default in HTTP Inspect.
\item \texttt{max\_javascript\_whitespaces $<$positive integer up to 65535$>$}
This option takes an integer as an argument. The integer determines the maximum number
of consecutive whitespaces allowed within the Javascript obfuscated data in a HTTP
response body. The config option \texttt{normalize\_javascript} should be turned on before configuring
this config option. When the whitespaces in the javascript obfuscated data is equal to or more
than this value a preprocessor alert with GID 120 and SID 10 is generated. The default value for
this option is 200. To enable, specify an integer argument to \texttt{max\_javascript\_spaces} of 1 to 65535.
Specifying a value of 0 is treated as disabling the alert.
\item \texttt{enable\_xff}
This option enables Snort to parse and log the original client IP present in the
X-Forwarded-For or True-Client-IP HTTP request headers along with the generated
events. The XFF/True-Client-IP Original client IP address is logged only with
unified2 output and is not logged with console (-A cmg) output.
\begin{note}
The original client IP from XFF/True-Client-IP in unified2 logs can be viewed using
the tool u2spewfoo. This tool is present in the tools/u2spewfoo directory of snort
source tree.
\end{note}
\item \texttt{server\_flow\_depth $<$integer$>$}
This specifies the amount of server response payload to inspect. When
\texttt{extended\_response\_inspection} is turned on, it is applied to the HTTP response
body (decompressed data when \texttt{inspect\_gzip} is turned on) and not the HTTP headers.
When \texttt{extended\_response\_inspection} is turned off the \texttt{server\_flow\_depth}
is applied to the entire HTTP response (including headers). Unlike \texttt{client\_flow\_depth}
this option is applied per TCP session. This option can be used to balance the needs of
IDS performance and level of inspection of HTTP server response data. Snort rules are
targeted at HTTP server response traffic and when used with a small flow\_depth value
may cause false negatives. Most of these rules target either the HTTP header, or
the content that is likely to be in the first hundred or so bytes of non-header data.
Headers are usually under 300 bytes long, but your mileage may vary.
It is suggested to set the \texttt{server\_flow\_depth} to its maximum value.
This value can be set from -1 to 65535. A value of -1 causes Snort
to ignore all server side traffic for ports defined in \texttt{ports} when
\texttt{extended\_response\_inspection} is turned off. When the \texttt{extended\_response\_inspection}
is turned on, value of -1 causes Snort to ignore the HTTP response body data and
not the HTTP headers. Inversely, a value of 0 causes Snort to inspect all HTTP server
payloads defined in "ports" (note that this will likely slow down IDS
performance). Values above 0 tell Snort the number of bytes to
inspect of the server response (excluding the HTTP headers when \texttt{extended\_response\_inspection}
is turned on) in a given HTTP session. Only packets payloads starting with 'HTTP' will
be considered as the first packet of a server response. If less than flow\_depth bytes
are in the payload of the HTTP response packets in a given session, the entire payload will be
inspected. If more than flow\_depth bytes are in the payload of the HTTP response packet in a session
only flow\_depth bytes of the payload will be inspected for that session. Rules that are meant to
inspect data in the payload of the HTTP response packets in a session beyond 65535 bytes will be
ineffective unless flow\_depth is set to 0. The default value for \texttt{server\_flow\_depth} is 300.
Note that the 65535 byte maximum flow\_depth applies to stream reassembled packets as well.
It is suggested to set the \texttt{server\_flow\_depth} to its maximum value.
\begin{note}
\texttt{server\_flow\_depth} is the same as the old \texttt{flow\_depth}
option, which will be deprecated in a future release.
\end{note}
\item \texttt{client\_flow\_depth $<$integer$>$}
This specifies the amount of raw client request payload to inspect. This
value can be set from -1 to 1460. Unlike \texttt{server\_flow\_depth} this value is applied
to the first packet of the HTTP request. It is not a session based flow depth.
It has a default value of 300. It primarily eliminates Snort from inspecting
larger HTTP Cookies that appear at the end of many client request Headers.
A value of -1 causes Snort to ignore all client side traffic for ports
defined in "ports." Inversely, a value of 0 causes Snort to inspect all HTTP client
side traffic defined in "ports" (note that this will likely slow down IDS
performance). Values above 0 tell Snort the number of bytes to
inspect in the first packet of the client request. If less than flow\_depth bytes
are in the TCP payload (HTTP request) of the first packet, the entire payload will be inspected.
If more than flow\_depth bytes are in the payload of the first packet only flow\_depth
bytes of the payload will be inspected. Rules that are meant to
inspect data in the payload of the first packet of a client request beyond 1460 bytes
will be ineffective unless flow\_depth is set to 0. Note that the 1460 byte
maximum flow\_depth applies to stream reassembled packets as well. It is
suggested to set the \texttt{client\_flow\_depth} to its maximum value.
\item \texttt{post\_depth $<$integer$>$}
This specifies the amount of data to inspect in a client post message. The
value can be set from -1 to 65495. The default value is -1. A value of -1
causes Snort to ignore all the data in the post message. Inversely, a value
of 0 causes Snort to inspect all the client post message. This increases
the performance by inspecting only specified bytes in the post message.
\item \texttt{ascii $<$yes$|$no$>$}
The \texttt{ascii} decode option tells us whether to decode encoded ASCII
chars, a.k.a \%2f = /, \%2e = ., etc. It is normal to see ASCII encoding usage
in URLs, so it is recommended that you disable HTTP Inspect alerting for this
option.
\item \texttt{extended\_ascii\_uri}
This option enables the support for extended ASCII codes in the HTTP request
URI. This option is turned off by default and is not supported with any of
the profiles.
\item \texttt{utf\_8 $<$yes$|$no$>$}
The \texttt{utf-8} decode option tells HTTP Inspect to decode standard UTF-8
Unicode sequences that are in the URI. This abides by the Unicode standard and
only uses \% encoding. Apache uses this standard, so for any Apache servers,
make sure you have this option turned on. As for alerting, you may be
interested in knowing when you have a UTF-8 encoded URI, but this will be prone
to false positives as legitimate web clients use this type of encoding. When
\texttt{utf\_8} is enabled, ASCII decoding is also enabled to enforce correct
functioning.
\item \texttt{u\_encode $<$yes$|$no$>$}
This option emulates the IIS \%u encoding scheme. How the \%u encoding scheme
works is as follows: the encoding scheme is started by a \%u followed by 4
characters, like \%uxxxx. The xxxx is a hex-encoded value that correlates to
an IIS Unicode codepoint. This value can most definitely be ASCII. An ASCII
character is encoded like \%u002f = /, \%u002e = ., etc. If no
iis\_unicode\_map is specified before or after this option, the default codemap
is used.
You should alert on \%u encodings, because we are not aware of any legitimate
clients that use this encoding. So it is most likely someone trying to be
covert.
\item \texttt{bare\_byte $<$yes$|$no$>$}
Bare byte encoding is an IIS trick that uses non-ASCII characters as valid
values when decoding UTF-8 values. This is not in the HTTP standard, as all
non-ASCII values have to be encoded with a \%. Bare byte encoding allows the
user to emulate an IIS server and interpret non-standard encodings correctly.
The alert on this decoding should be enabled, because there are no legitimate
clients that encode UTF-8 this way since it is non-standard.
\item \texttt{iis\_unicode $<$yes$|$no$>$}
The \texttt{iis\_unicode} option turns on the Unicode codepoint mapping. If
there is no iis\_unicode\_map option specified with the server config,
\texttt{iis\_unicode} uses the default codemap. The \texttt{iis\_unicode}
option handles the mapping of non-ASCII codepoints that the IIS server accepts
and decodes normal UTF-8 requests.
You should alert on the \texttt{iis\_unicode option}, because it is seen mainly
in attacks and evasion attempts. When \texttt{iis\_unicode} is enabled, ASCII
and UTF-8 decoding are also enabled to enforce correct decoding. To alert on
UTF-8 decoding, you must enable also enable \texttt{utf\_8 yes}.
\item \texttt{double\_decode $<$yes$|$no$>$}
The \texttt{double\_decode} option is once again IIS-specific and emulates IIS
functionality. How this works is that IIS does two passes through the request
URI, doing decodes in each one. In the first pass, it seems that all types of
iis encoding is done: utf-8 unicode, ASCII, bare byte, and \%u. In the second
pass, the following encodings are done: ASCII, bare byte, and \%u. We leave
out utf-8 because I think how this works is that the \% encoded utf-8 is
decoded to the Unicode byte in the first pass, and then UTF-8 is decoded in the
second stage. Anyway, this is really complex and adds tons of different
encodings for one character. When \texttt{double\_decode} is enabled, so ASCII
is also enabled to enforce correct decoding.
\item \texttt{non\_rfc\_char $\{ <$byte$> [<$byte ...$>] \}$}
This option lets users receive an alert if certain non-RFC chars are used in a
request URI. For instance, a user may not want to see null bytes in the
request URI and we can alert on that. Please use this option with care,
because you could configure it to say, alert on all `/' or something like that.
It's flexible, so be careful.
\item \texttt{multi\_slash $<$yes$|$no$>$}
This option normalizes multiple slashes in a row, so something like:
``foo/////////bar'' get normalized to ``foo/bar.''
If you want an alert when multiple slashes are seen, then configure with a
\texttt{yes}; otherwise, use \texttt{no}.
\item \texttt{iis\_backslash $<$yes$|$no$>$}
Normalizes backslashes to slashes. This is again an IIS emulation. So a
request URI of ``/foo$\backslash$bar'' gets normalized to ``/foo/bar.''
\item \texttt{directory $<$yes$|$no$>$}
This option normalizes directory traversals and self-referential directories.
The directory:
\begin{verbatim}
/foo/fake\_dir/../bar
\end{verbatim}
gets normalized to:
\begin{verbatim}
/foo/bar
\end{verbatim}
The directory:
\begin{verbatim}
/foo/./bar
\end{verbatim}
gets normalized to:
\begin{verbatim}
/foo/bar
\end{verbatim}
If you want to configure an alert, specify \texttt{yes}, otherwise, specify
\texttt{no}. This alert may give false positives, since some web sites refer
to files using directory traversals.
\item \texttt{apache\_whitespace $<$yes$|$no$>$}
This option deals with the non-RFC standard of using tab for a space delimiter.
Apache uses this, so if the emulated web server is Apache, enable this option.
Alerts on this option may be interesting, but may also be false positive prone.
\item \texttt{iis\_delimiter $<$yes$|$no$>$}
This started out being IIS-specific, but Apache takes this non-standard
delimiter was well. Since this is common, we always take this as standard
since the most popular web servers accept it. But you can still get an alert
on this option.
\item \texttt{chunk\_length $<$non-zero positive integer$>$}
This option is an anomaly detector for abnormally large chunk sizes. This
picks up the Apache chunk encoding exploits, and may also alert on HTTP
tunneling that uses chunk encoding.
\item \texttt{small\_chunk\_length \{ $<$chunk size$>$ $<$consecutive chunks$>$ \} }
This option is an evasion detector for consecutive small chunk sizes when
either the client or server use \texttt{Transfer-Encoding: chunked}.
$<$chunk size$>$ specifies the maximum chunk size for which a chunk will be
considered small. $<$consecutive chunks$>$ specifies the number of consecutive
small chunks $<$= $<$chunk size$>$ before an event will be generated. This option
is turned off by default. Maximum values for each are 255 and a $<$chunk size$>$ of 0
disables. Events generated are gid:119, sid:26 for client small
chunks and gid:120, sid:7 for server small chunks.
Example:
\begin{verbatim}
small_chunk_length { 10 5 }
\end{verbatim}
Meaning alert if we see 5 consecutive chunk sizes of 10 or less.
\item \texttt{no\_pipeline\_req}
This option turns HTTP pipeline decoding off, and is a performance enhancement
if needed. By default, pipeline requests are inspected for attacks, but when
this option is enabled, pipeline requests are not decoded and analyzed per HTTP
protocol field. It is only inspected with the generic pattern matching.
\item \texttt{non\_strict}
This option turns on non-strict URI parsing for the broken way in which Apache
servers will decode a URI. Only use this option on servers that will accept
URIs like this: "get /index.html alsjdfk alsj lj aj la jsj s$\backslash$n".
The non\_strict option assumes the URI is between the first and second space
even if there is no valid HTTP identifier after the second space.
\item \texttt{allow\_proxy\_use}
By specifying this keyword, the user is allowing proxy use on this server.
This means that no alert will be generated if the \texttt{proxy\_alert} global
keyword has been used. If the proxy\_alert keyword is not enabled, then this
option does nothing. The \texttt{allow\_proxy\_use} keyword is just a way to
suppress unauthorized proxy use for an authorized server.
\item \texttt{no\_alerts}
This option turns off all alerts that are generated by the HTTP Inspect
preprocessor module. This has no effect on HTTP rules in the rule set. No
argument is specified.
\item \texttt{oversize\_dir\_length $<$non-zero positive integer$>$}
This option takes a non-zero positive integer as an argument. The argument
specifies the max char directory length for URL directory. If a url directory
is larger than this argument size, an alert is generated. A good argument value
is 300 characters. This should limit the alerts to IDS evasion type attacks,
like whisker -i 4.
\item \texttt{inspect\_uri\_only}
This is a performance optimization. When enabled, only the URI portion of HTTP
requests will be inspected for attacks. As this field usually contains 90-95\%
of the web attacks, you'll catch most of the attacks. So if you need extra
performance, enable this optimization. It's important to note that if this
option is used without any \texttt{uricontent} rules, then no inspection will
take place. This is obvious since the URI is only inspected with
\texttt{uricontent} rules, and if there are none available, then there is
nothing to inspect.
For example, if we have the following rule set:
\begin{verbatim}
alert tcp any any -> any 80 ( msg:"content"; content: "foo"; )
\end{verbatim}
and the we inspect the following URI:
\begin{verbatim}
get /foo.htm http/1.0\r\n\r\n
\end{verbatim}
No alert will be generated when \texttt{inspect\_uri\_only} is enabled. The
\texttt{inspect\_uri\_only} configuration turns off all forms of detection
except \texttt{uricontent} inspection.
\item \texttt{max\_header\_length $<$positive integer up to 65535$>$}
This option takes an integer as an argument. The integer is the maximum length
allowed for an HTTP client request header field. Requests that exceed this
length will cause a "Long Header" alert. This alert is off by default. To
enable, specify an integer argument to max\_header\_length of 1 to 65535.
Specifying a value of 0 is treated as disabling the alert.
\item \texttt{max\_spaces $<$positive integer up to 65535$>$}
This option takes an integer as an argument. The integer determines the maximum number
of whitespaces allowed with HTTP client request line folding. Requests headers
folded with whitespaces equal to or more than this value will cause a
"Space Saturation" alert with SID 26 and GID 119. The default value for this
option is 200. To enable, specify an integer argument to \texttt{max\_spaces} of 1 to 65535.
Specifying a value of 0 is treated as disabling the alert.
\item \texttt{webroot $<$yes$|$no$>$}
This option generates an alert when a directory traversal traverses past the
web server root directory. This generates much fewer false positives than the
directory option, because it doesn't alert on directory traversals that stay
within the web server directory structure. It only alerts when the directory
traversals go past the web server root directory, which is associated with
certain web attacks.
\item \texttt{tab\_uri\_delimiter}
This option turns on the use of the tab character (0x09) as a delimiter for a
URI. Apache accepts tab as a delimiter; IIS does not. For IIS, a tab in the
URI should be treated as any other character. Whether this option is on or
not, a tab is treated as whitespace if a space character (0x20) precedes it.
No argument is specified.
\item \texttt{normalize\_headers}
This option turns on normalization for HTTP Header Fields, not including
Cookies (using the same configuration parameters as the URI normalization (i.e.,
multi-slash, directory, etc.). It is useful for normalizing Referrer URIs that
may appear in the HTTP Header.
\item \texttt{normalize\_cookies}
This option turns on normalization for HTTP Cookie Fields (using the same
configuration parameters as the URI normalization (i.e., multi-slash, directory,
etc.). It is useful for normalizing data in HTTP Cookies that may be encoded.
\item \texttt{normalize\_utf}
This option turns on normalization of HTTP response bodies where the Content-Type
header lists the character set as "utf-16le", "utf-16be", "utf-32le", or
"utf-32be". HTTP Inspect will attempt to normalize these back into 8-bit encoding,
generating an alert if the extra bytes are non-zero.
\item \texttt{max\_headers $<$positive integer up to 1024$>$}
This option takes an integer as an argument. The integer is the maximum number
of HTTP client request header fields. Requests that contain more HTTP Headers
than this value will cause a "Max Header" alert. The alert is off by default.
To enable, specify an integer argument to max\_headers of 1 to 1024.
Specifying a value of 0 is treated as disabling the alert.
\item \texttt{http\_methods $\{ cmd [cmd] \}$ }
This specifies additional HTTP Request Methods outside of those checked by
default within the preprocessor (GET and POST). The list should be enclosed
within braces and delimited by spaces, tabs, line feed or carriage return.
The config option, braces and methods also needs to be separated by braces.
\begin{verbatim}
http_methods { PUT CONNECT }
\end{verbatim}
\begin{note}
Please note the maximum length for a method name is 256.
\end{note}
\item \texttt{log\_uri}
This option enables HTTP Inspect preprocessor to parse the URI data from the
HTTP request and log it along with all the generated events for that session.
Stream5 reassembly needs to be turned on HTTP ports to enable the logging.
If there are multiple HTTP requests in the session, the URI data of the most recent
HTTP request during the alert will be logged. The maximum URI logged is 2048.
\begin{note}
Please note, this is logged only with the unified2 output and is not logged
with console output (-A cmg). \texttt{u2spewfoo} can be used to read this data from
the unified2.
\end{note}
\item \texttt{log\_hostname}
This option enables HTTP Inspect preprocessor to parse the hostname data from the
"Host" header of the HTTP request and log it along with all the generated events
for that session. Stream5 reassembly needs to be turned on HTTP ports to enable
the logging. If there are multiple HTTP requests in the session, the Hostname data
of the most recent HTTP request during the alert will be logged. In case of
multiple "Host" headers within one HTTP request, a preprocessor alert with sid 24 is
generated. The maximum hostname length logged is 256.
\begin{note}
Please note, this is logged only with the unified2 output and is not logged
with console output (-A cmg). \texttt{u2spewfoo} can be used to read this data from
the unified2.
\end{note}
\end{slist}
\subsubsection{Examples}
\begin{verbatim}
preprocessor http_inspect_server: \
server 10.1.1.1 \
ports { 80 3128 8080 } \
server_flow_depth 0 \
ascii no \
double_decode yes \
non_rfc_char { 0x00 } \
chunk_length 500000 \
non_strict \
no_alerts
preprocessor http_inspect_server: \
server default \
ports { 80 3128 } \
non_strict \
non_rfc_char { 0x00 } \
server_flow_depth 300 \
apache_whitespace yes \
directory no \
iis_backslash no \
u_encode yes \
ascii no \
chunk_length 500000 \
bare_byte yes \
double_decode yes \
iis_unicode yes \
iis_delimiter yes \
multi_slash no
preprocessor http_inspect_server: \
server default \
profile all \
ports { 80 8080 }
\end{verbatim}
\subsection{SMTP Preprocessor}
\label{SMTP}
The SMTP preprocessor is an SMTP decoder for user applications. Given a data
buffer, SMTP will decode the buffer and find SMTP commands and responses. It
will also mark the command, data header data body sections, and TLS data.
SMTP handles stateless and stateful processing. It saves state between
individual packets. However maintaining correct state is dependent on the
reassembly of the client side of the stream (i.e., a loss of coherent stream data
results in a loss of state).
\subsubsection{Configuration}
SMTP has the usual configuration items, such as \texttt{port} and
\texttt{inspection\_type}. Also, SMTP command lines can be normalized to
remove extraneous spaces. TLS-encrypted traffic can be ignored, which improves
performance. In addition, regular mail data can be ignored for an additional
performance boost. Since so few (none in the current snort rule set) exploits
are against mail data, this is relatively safe to do and can improve the
performance of data inspection.
The configuration options are described below:
\begin{slist}
\item \texttt{ports \{ [] ... \}}
This specifies on what ports to check for SMTP data. Typically, this will
include 25 and possibly 465, for encrypted SMTP.
\item \texttt{inspection\_type }
Indicate whether to operate in stateful or stateless mode.
\item \texttt{normalize }
This turns on normalization. Normalization checks for more than one space
character after a command. Space characters are defined as space (ASCII 0x20)
or tab (ASCII 0x09).
\texttt{all} checks all commands
\texttt{none} turns off normalization for all commands.
\texttt{cmds} just checks commands listed with the \texttt{normalize\_cmds} parameter.
\item \texttt{ignore\_data}
Ignore data section of mail (except for mail headers) when processing rules.
\item \texttt{ignore\_tls\_data}
Ignore TLS-encrypted data when processing rules.
\item \texttt{max\_command\_line\_len }
Alert if an SMTP command line is longer than this value. Absence of this
option or a "0" means never alert on command line length. RFC 2821 recommends
512 as a maximum command line length.
\item \texttt{max\_header\_line\_len }
Alert if an SMTP DATA header line is longer than this value. Absence of this
option or a "0" means never alert on data header line length. RFC 2821
recommends 1024 as a maximum data header line length.
\item \texttt{max\_response\_line\_len }
Alert if an SMTP response line is longer than this value. Absence of this
option or a "0" means never alert on response line length. RFC 2821 recommends
512 as a maximum response line length.
\item \texttt{alt\_max\_command\_line\_len \{ [] \}}
Overrides \texttt{max\_command\_line\_len} for specific commands.
\item \texttt{no\_alerts}
Turn off all alerts for this preprocessor.
\item \texttt{invalid\_cmds \{ \}}
Alert if this command is sent from client side. Default is an empty list.
\item \texttt{valid\_cmds \{ \}}
List of valid commands. We do not alert on commands in this list. Default is
an empty list, but preprocessor has this list hard-coded:
\begin{itemize}
\item[]
\{ ATRN AUTH BDAT DATA DEBUG EHLO EMAL ESAM ESND ESOM ETRN EVFY EXPN
HELO HELP IDENT MAIL NOOP QUIT RCPT RSET SAML SOML SEND ONEX QUEU
STARTTLS TICK TIME TURN TURNME VERB VRFY X-EXPS X-LINK2STATE
XADR XAUTH XCIR XEXCH50 XGEN XLICENSE XQUE XSTA XTRN XUSR \}
\end{itemize}
\item \texttt{data\_cmds \{ \}}
List of commands that initiate sending of data with an end of data delimiter
the same as that of the DATA command per RFC 5321 - \texttt{"."}.
Default is \{ DATA \}.
\item \texttt{binary\_data\_cmds \{ \}}
List of commands that initiate sending of data and use a length value after
the command to indicate the amount of data to be sent, similar to that of the
BDAT command per RFC 3030. Default is \{ BDAT XEXCH50 \}.
\item \texttt{auth\_cmds \{ \}}
List of commands that initiate an authentication exchange between client
and server. Default is \{ AUTH XAUTH X-EXPS \}.
\item \texttt{alert\_unknown\_cmds}
Alert if we don't recognize command. Default is off.
\item \texttt{normalize\_cmds \{ \}}
Normalize this list of commands Default is \{ RCPT VRFY EXPN \}.
\item \texttt{xlink2state \{ enable | disable [drop] \}}
Enable/disable xlink2state alert. Drop if alerted. Default is
\texttt{enable}.
\item \texttt{print\_cmds}
List all commands understood by the preprocessor. This not normally printed
out with the configuration because it can print so much data.
\item \texttt{disabled}
Disables the SMTP preprocessor in a config. This is useful when specifying
the decoding depths such as \texttt{b64\_decode\_depth}, \texttt{qp\_decode\_depth},
\texttt{uu\_decode\_depth}, \texttt{bitenc\_decode\_depth} or the memcap used for
decoding \texttt{max\_mime\_mem} in default config without turning on the SMTP preprocessor.
\item \texttt{b64\_decode\_depth}
This config option is used to turn off/on or set the base64 decoding depth used to
decode the base64 encoded MIME attachments. The value ranges from -1 to 65535.
A value of -1 turns off the base64 decoding of MIME attachments. The value of 0
sets the decoding of base64 encoded MIME attachments to unlimited. A value other
than 0 or -1 restricts the decoding of base64 MIME attachments, and applies per attachment.
A SMTP preprocessor alert with sid 10 is generated (if enabled) when the decoding fails.
Multiple MIME attachments/data in one packet are pipelined. When stateful inspection
is turned on the base64 encoded MIME attachments/data across multiple packets are decoded too.
The decoded data is available for detection using the rule option \texttt{file\_data}.
See \ref{sub:file_data} rule option for more details.
This option replaces the deprecated options, \texttt{enable\_mime\_decoding} and
\texttt{max\_mime\_depth}. It is recommended that user inputs a value that is a
multiple of 4. When the value specified is not a multiple of 4, the SMTP preprocessor
will round it up to the next multiple of 4.
In case of multiple configs, the value specified in the non-default config cannot
exceed the value specified in the default config.
\item \texttt{qp\_decode\_depth}
This config option is used to turn off/on or set the Quoted-Printable decoding depth
used to decode the Quoted-Printable(QP) encoded MIME attachments. The value ranges
from -1 to 65535. A value of -1 turns off the QP decoding of MIME attachments.
The value of 0 sets the decoding of QP encoded MIME attachments to unlimited. A
value other than 0 or -1 restricts the decoding of QP MIME attachments, and applies per
attachment. A SMTP preprocessor alert with sid 11 is generated (if enabled) when the decoding fails.
Multiple MIME attachments/data in one packet are pipelined. When stateful inspection
is turned on the QP encoded MIME attachments/data across multiple packets are decoded too.
The decoded data is available for detection using the rule option \texttt{file\_data}.
See \ref{sub:file_data} rule option for more details.
In case of multiple configs, the value specified in the non-default config cannot exceed
the value specified in the default config.
\item \texttt{bitenc\_decode\_depth}
This config option is used to turn off/on or set the non-encoded MIME extraction
depth used to extract the non-encoded MIME attachments. The value ranges from -1
to 65535. A value of -1 turns off the extraction of these MIME attachments.
The value of 0 sets the extraction of these MIME attachments to unlimited.
A value other than 0 or -1 restricts the extraction of these MIME attachments, and applies
per attachment.
Multiple MIME attachments/data in one packet are pipelined. When stateful inspection
is turned on the non-encoded MIME attachments/data across multiple packets are extracted too.
The extracted data is available for detection using the rule option \texttt{file\_data}.
See \ref{sub:file_data} rule option for more details.
In case of multiple configs, the value specified in the non-default config cannot exceed
the value specified in the default config.
\item \texttt{uu\_decode\_depth}
This config option is used to turn off/on or set the Unix-to-Unix decoding depth
used to decode the Unix-to-Unix(UU) encoded attachments. The value ranges
from -1 to 65535. A value of -1 turns off the UU decoding of SMTP attachments.
The value of 0 sets the decoding of UU encoded SMTP attachments to unlimited. A
value other than 0 or -1 restricts the decoding of UU SMTP attachments, and applies
per attachment. A SMTP preprocessor alert with sid 13 is generated (if enabled) when the decoding fails.
Multiple UU attachments/data in one packet are pipelined. When stateful inspection
is turned on the UU encoded SMTP attachments/data across multiple packets are decoded too.
The decoded data is available for detection using the rule option \texttt{file\_data}.
See \ref{sub:file_data} rule option for more details.
In case of multiple configs, the value specified in the non-default config cannot exceed
the value specified in the default config.
\item \texttt{enable\_mime\_decoding}
Enables Base64 decoding of Mime attachments/data. Multiple base64 encoded MIME
attachments/data in one packet are pipelined. When stateful inspection is turned
on the base64 encoded MIME attachments/data across multiple packets are decoded too.
The decoding of base64 encoded attachments/data ends when either the
\texttt{max\_mime\_depth} or maximum MIME sessions (calculated using
\texttt{max\_mime\_depth} and \texttt{max\_mime\_mem}) is reached or when the
encoded data ends. The decoded data is available for detection using the rule option
\texttt{file\_data}. See \ref{sub:file_data} rule option for more details.
This option is deprecated. Use the option \texttt{b64\_decode\_depth} to turn off
or on the base64 decoding instead.
\item \texttt{max\_mime\_depth }
Specifies the maximum number of base64 encoded data to decode per SMTP attachment.
The option take values ranging from 4 to 20480 bytes. The default value for this
in snort in 1460 bytes.
It is recommended that user inputs a value that is a multiple of 4. When the value
specified is not a multiple of 4, the SMTP preprocessor will round it up to the next
multiple of 4.
This option is deprecated. Use the option \texttt{b64\_decode\_depth} to turn off
or on the base64 decoding instead.
\item \texttt{max\_mime\_mem }
This option determines (in bytes) the maximum amount of memory the SMTP preprocessor
will use for decoding base64 encoded/quoted-printable/non-encoded MIME attachments/data
or Unix-to-Unix encoded attachments. This value can be set from 3276 bytes to 100MB.
This option along with the maximum of the decoding depths will determine the SMTP
sessions that will be decoded at any given instant. The default value for this option
is 838860.
Note: It is suggested to set this value such that the max smtp session calculated as
follows is at least 1.
max smtp session = \texttt{max\_mime\_mem} /(2 * max of (\texttt{b64\_decode\_depth},
\texttt{uu\_decode\_depth}, \texttt{qp\_decode\_depth}
or \texttt{bitenc\_decode\_depth}))
For example, if \texttt{b64\_decode\_depth} is 0 (indicates unlimited decoding) and
\texttt{qp\_decode\_depth} is 100, then
max smtp session = \texttt{max\_mime\_mem}/2*65535 (max value for \texttt{b64\_decode\_depth})
In case of multiple configs, the \texttt{max\_mime\_mem} of the non-default configs will be overwritten by the
default config's value. Hence user needs to define it in the default config with the new keyword
disabled (used to disable SMTP preprocessor in a config).
\item \texttt{log\_mailfrom}
This option enables SMTP preprocessor to parse and log the sender's email address extracted
from the "MAIL FROM" command along with all the generated events for that session. The maximum
number of bytes logged for this option is 1024.
Please note, this is logged only with the unified2 output and is not logged with console output (-A cmg).
u2spewfoo can be used to read this data from the unified2.
\item \texttt{log\_rcptto}
This option enables SMTP preprocessor to parse and log the recipient's email addresses
extracted from the "RCPT TO" command along with all the generated events for that session.
Multiple recipients are appended with commas. The maximum number of bytes logged for this option is 1024.
Please note, this is logged only with the unified2 output and is not logged with console output (-A cmg).
u2spewfoo can be used to read this data from the unified2.
\item \texttt{log\_filename}
This option enables SMTP preprocessor to parse and log the MIME attachment filenames extracted
from the Content-Disposition header within the MIME body along with all the generated events
for that session. Multiple filenames are appended with commas. The maximum number of bytes logged
for this option is 1024.
Please note, this is logged only with the unified2 output and is not logged with the
console output (-A cmg). u2spewfoo can be used to read this data from the unified2.
\item \texttt{log\_email\_hdrs}
This option enables SMTP preprocessor to parse and log the SMTP email headers extracted from
SMTP data along with all generated events for that session. The number of bytes extracted and
logged depends upon the \texttt{email\_hdrs\_log\_depth}.
Please note, this is logged only with the unified2 output and is not logged with the console output (-A cmg).
u2spewfoo can be used to read this data from the unified2.
\item \texttt{email\_hdrs\_log\_depth }
This option specifies the depth for logging email headers. The allowed range for this option is
0 - 20480. A value of 0 will disable email headers logging. The default value for this option is 1464.
Please note, in case of multiple policies, the value specified in the default policy is used and the values
specified in the targeted policies are overwritten by the default value.
This option must be configured in the default policy even if the SMTP configuration is disabled.
\item \texttt{memcap }
This option determines in bytes the maximum amount of memory the SMTP preprocessor will
use for logging of filename, MAIL FROM addresses, RCPT TO addresses and email headers. This value
along with the buffer size used to log MAIL FROM, RCPT TO, filenames and \texttt{email\_hdrs\_log\_depth}
will determine the maximum SMTP sessions that will log the email headers at any given time. When this memcap
is reached SMTP will stop logging the filename, MAIL FROM address, RCPT TO addresses and email headers
until memory becomes available.
Max SMTP sessions logging email headers at any given time
= memcap/(1024 + 1024 + 1024 + \texttt{email\_hdrs\_log\_depth})
The size 1024 is the maximum buffer size used for logging filename, RCPTTO and MAIL FROM addresses.
Default value for this option is 838860. The allowed range for this option is 3276 to 104857600.
The value specified in the default config is used when this option is specified in multiple configs.
This option must be configured in the default config even if the SMTP configuration is disabled.
Please note, in case of multiple policies, the value specified in the default policy is used and the values
specified in the targeted policies are overwritten by the default value.
This option must be configured in the default policy even if the SMTP configuration is disabled.
\end{slist}
\subsubsection{Example}
\begin{verbatim}
preprocessor SMTP: \
ports { 25 } \
inspection_type stateful \
normalize cmds \
normalize_cmds { EXPN VRFY RCPT } \
ignore_data \
ignore_tls_data \
max_command_line_len 512 \
max_header_line_len 1024 \
max_response_line_len 512 \
no_alerts \
alt_max_command_line_len 300 { RCPT } \
invalid_cmds { } \
valid_cmds { } \
xlink2state { disable } \
print_cmds \
log_filename \
log_email_hdrs \
log_mailfrom \
log_rcptto \
email_hdrs_log_depth 2920 \
memcap 6000
preprocessor SMTP: \
b64_decode_depth 0\
max_mime_mem 4000 \
memcap 6000 \
email_hdrs_log_depth 2920 \
disabled
\end{verbatim}
\subsubsection{Default}
\begin{verbatim}
preprocessor SMTP: \
ports { 25 } \
inspection_type stateful \
normalize cmds \
normalize_cmds { EXPN VRFY RCPT } \
alt_max_command_line_len 260 { MAIL } \
alt_max_command_line_len 300 { RCPT } \
alt_max_command_line_len 500 { HELP HELO ETRN } \
alt_max_command_line_len 255 { EXPN VRFY }
\end{verbatim}
\subsubsection{Note}
\texttt{RCPT TO:} and \texttt{MAIL FROM:} are SMTP commands. For the
preprocessor configuration, they are referred to as RCPT and MAIL,
respectively. Within the code, the preprocessor actually maps RCPT and MAIL to
the correct command name.
\subsection{POP Preprocessor}
\label{POP}
POP is an POP3 decoder for user applications. Given a data buffer,
POP will decode the buffer and find POP3 commands and responses.
It will also mark the command, data header data body sections and
extract the POP3 attachments and decode it appropriately.
POP will handle stateful processing. It saves state between individual
packets. However maintaining correct state is dependent on the reassembly
of the server side of the stream (i.e., a loss of coherent stream data results
in a loss of state).
Stream5 should be turned on for POP. Please ensure that the POP ports are added
to the stream5 ports for proper reassembly.
The POP preprocessor uses GID 142 to register events.
\subsubsection{Configuration}
The configuration options are described below:
\begin{slist}
\item \texttt{ports \{ [] ... \}}
This specifies on what ports to check for POP data. Typically, this will
include 110. Default ports if none are specified are 110 .
\item \texttt{disabled}
Disables the POP preprocessor in a config. This is useful when specifying
the decoding depths such as \texttt{b64\_decode\_depth}, \texttt{qp\_decode\_depth},
\texttt{uu\_decode\_depth}, \texttt{bitenc\_decode\_depth} or the memcap used for
decoding \texttt{memcap} in default config without turning on the POP preprocessor.
\item \texttt{b64\_decode\_depth}
This config option is used to turn off/on or set the base64 decoding depth used to
decode the base64 encoded MIME attachments. The value ranges from -1 to 65535.
A value of -1 turns off the base64 decoding of MIME attachments. The value of 0
sets the decoding of base64 encoded MIME attachments to unlimited. A value other
than 0 or -1 restricts the decoding of base64 MIME attachments, and applies per
attachment. A POP preprocessor alert with sid 4 is generated (if enabled) when the decoding fails.
Multiple MIME attachments/data in one packet are pipelined. When stateful inspection
is turned on the base64 encoded MIME attachments/data across multiple packets are decoded too.
The decoded data is available for detection using the rule option \texttt{file\_data}.
See \ref{sub:file_data} rule option for more details.
It is recommended that user inputs a value that is a multiple of 4. When the value specified
is not a multiple of 4, the POP preprocessor will round it up to the next multiple of 4.
In case of multiple configs, the value specified in the non-default config cannot
exceed the value specified in the default config.
\item \texttt{qp\_decode\_depth}
This config option is used to turn off/on or set the Quoted-Printable decoding depth
used to decode the Quoted-Printable(QP) encoded MIME attachments. The value ranges
from -1 to 65535. A value of -1 turns off the QP decoding of MIME attachments.
The value of 0 sets the decoding of QP encoded MIME attachments to unlimited. A
value other than 0 or -1 restricts the decoding of QP MIME attachments, and applies per
attachment. A POP preprocessor alert with sid 5 is generated (if enabled) when the decoding fails.
Multiple MIME attachments/data in one packet are pipelined. When stateful inspection
is turned on the QP encoded MIME attachments/data across multiple packets are decoded too.
The decoded data is available for detection using the rule option \texttt{file\_data}.
See \ref{sub:file_data} rule option for more details.
In case of multiple configs, the value specified in the non-default config cannot exceed
the value specified in the default config.
\item \texttt{bitenc\_decode\_depth}
This config option is used to turn off/on or set the non-encoded MIME extraction
depth used to extract the non-encoded MIME attachments. The value ranges from -1
to 65535. A value of -1 turns off the extraction of these MIME attachments.
The value of 0 sets the extraction of these MIME attachments to unlimited.
A value other than 0 or -1 restricts the extraction of these MIME attachments, and applies
per attachment.
Multiple MIME attachments/data in one packet are pipelined. When stateful inspection
is turned on the non-encoded MIME attachments/data across multiple packets are extracted too.
The extracted data is available for detection using the rule option \texttt{file\_data}.
See \ref{sub:file_data} rule option for more details.
In case of multiple configs, the value specified in the non-default config cannot exceed
the value specified in the default config.
\item \texttt{uu\_decode\_depth}
This config option is used to turn off/on or set the Unix-to-Unix decoding depth
used to decode the Unix-to-Unix(UU) encoded attachments. The value ranges
from -1 to 65535. A value of -1 turns off the UU decoding of POP attachments.
The value of 0 sets the decoding of UU encoded POP attachments to unlimited. A
value other than 0 or -1 restricts the decoding of UU POP attachments, and applies per
attachment. A POP preprocessor alert with sid 7 is generated (if enabled) when the decoding fails.
Multiple UU attachments/data in one packet are pipelined. When stateful inspection
is turned on the UU encoded POP attachments/data across multiple packets are decoded too.
The decoded data is available for detection using the rule option \texttt{file\_data}.
See \ref{sub:file_data} rule option for more details.
In case of multiple configs, the value specified in the non-default config cannot exceed
the value specified in the default config.
\item \texttt{memcap }
This option determines (in bytes) the maximum amount of memory the POP preprocessor
will use for decoding base64 encoded/quoted-printable/non-encoded MIME attachments/data
or Unix-to-Unix encoded attachments. This value can be set from 3276 bytes to 100MB.
This option along with the maximum of the decoding depths will determine the POP
sessions that will be decoded at any given instant. The default value for this option
is 838860.
Note: It is suggested to set this value such that the max pop session calculated as
follows is at least 1.
max pop session = \texttt{memcap} /(2 * max of (\texttt{b64\_decode\_depth},
\texttt{uu\_decode\_depth}, \texttt{qp\_decode\_depth}
or \texttt{bitenc\_decode\_depth}))
For example, if \texttt{b64\_decode\_depth} is 0 (indicates unlimited decoding) and
\texttt{qp\_decode\_depth} is 100, then
max pop session = \texttt{memcap}/2*65535 (max value for \texttt{b64\_decode\_depth})
In case of multiple configs, the \texttt{memcap} of the non-default configs will be overwritten by the
default config's value. Hence user needs to define it in the default config with the new keyword
disabled (used to disable POP preprocessor in a config).
When the memcap for decoding (\texttt{memcap}) is exceeded the POP preprocessor alert with sid 3 is
generated (when enabled).
\end{slist}
\subsubsection{Example}
\begin{verbatim}
preprocessor pop: \
ports { 110 } \
memcap 1310700 \
qp_decode_depth -1 \
b64_decode_depth 0 \
bitenc_decode_depth 100
preprocessor pop: \
memcap 1310700 \
qp_decode_depth 0 \
disabled
\end{verbatim}
\subsubsection{Default}
\begin{verbatim}
preprocessor pop: \
ports { 110 } \
b64_decode_depth 1460 \
qp_decode_depth 1460 \
bitenc_decode_depth 1460 \
uu_decode_depth 1460
\end{verbatim}
\subsection{IMAP Preprocessor}
\label{IMAP}
IMAP is an IMAP4 decoder for user applications. Given a data buffer,
IMAP will decode the buffer and find IMAP4 commands and responses.
It will also mark the command, data header data body sections and
extract the IMAP4 attachments and decode it appropriately.
IMAP will handle stateful processing. It saves state between individual
packets. However maintaining correct state is dependent on the reassembly
of the server side of the stream (i.e., a loss of coherent stream data results
in a loss of state).
Stream5 should be turned on for IMAP. Please ensure that the IMAP ports are added
to the stream5 ports for proper reassembly.
The IMAP preprocessor uses GID 141 to register events.
\subsubsection{Configuration}
The configuration options are described below:
\begin{slist}
\item \texttt{ports \{ [] ... \}}
This specifies on what ports to check for IMAP data. Typically, this will
include 143. Default ports if none are specified are 143 .
\item \texttt{disabled}
Disables the IMAP preprocessor in a config. This is useful when specifying
the decoding depths such as \texttt{b64\_decode\_depth}, \texttt{qp\_decode\_depth},
\texttt{uu\_decode\_depth}, \texttt{bitenc\_decode\_depth} or the memcap used for
decoding \texttt{memcap} in default config without turning on the IMAP preprocessor.
\item \texttt{b64\_decode\_depth}
This config option is used to turn off/on or set the base64 decoding depth used to
decode the base64 encoded MIME attachments. The value ranges from -1 to 65535.
A value of -1 turns off the base64 decoding of MIME attachments. The value of 0
sets the decoding of base64 encoded MIME attachments to unlimited. A value other
than 0 or -1 restricts the decoding of base64 MIME attachments, and applies per attachment.
A IMAP preprocessor alert with sid 4 is generated (if enabled) when the decoding fails.
Multiple MIME attachments/data in one packet are pipelined. When stateful inspection
is turned on the base64 encoded MIME attachments/data across multiple packets are decoded too.
The decoded data is available for detection using the rule option \texttt{file\_data}.
See \ref{sub:file_data} rule option for more details.
It is recommended that user inputs a value that is a multiple of 4. When the value specified
is not a multiple of 4, the IMAP preprocessor will round it up to the next multiple of 4.
In case of multiple configs, the value specified in the non-default config cannot
exceed the value specified in the default config.
\item \texttt{qp\_decode\_depth}
This config option is used to turn off/on or set the Quoted-Printable decoding depth
used to decode the Quoted-Printable(QP) encoded MIME attachments. The value ranges
from -1 to 65535. A value of -1 turns off the QP decoding of MIME attachments.
The value of 0 sets the decoding of QP encoded MIME attachments to unlimited. A
value other than 0 or -1 restricts the decoding of QP MIME attachments, and applies per
attachment. A IMAP preprocessor alert with sid 5 is generated (if enabled) when the decoding fails.
Multiple MIME attachments/data in one packet are pipelined. When stateful inspection
is turned on the QP encoded MIME attachments/data across multiple packets are decoded too.
The decoded data is available for detection using the rule option \texttt{file\_data}.
See \ref{sub:file_data} rule option for more details.
In case of multiple configs, the value specified in the non-default config cannot exceed
the value specified in the default config.
\item \texttt{bitenc\_decode\_depth}
This config option is used to turn off/on or set the non-encoded MIME extraction
depth used to extract the non-encoded MIME attachments. The
value ranges from -1 to 65535. A value of -1 turns off the extraction of these MIME
attachments. The value of 0 sets the extraction of these MIME attachments to unlimited.
A value other than 0 or -1 restricts the extraction of these MIME attachments, and applies
per attachment.
Multiple MIME attachments/data in one packet are pipelined. When stateful inspection
is turned on the non-encoded MIME attachments/data across multiple packets are extracted too.
The extracted data is available for detection using the rule option \texttt{file\_data}.
See \ref{sub:file_data} rule option for more details.
In case of multiple configs, the value specified in the non-default config cannot exceed
the value specified in the default config.
\item \texttt{uu\_decode\_depth}
This config option is used to turn off/on or set the Unix-to-Unix decoding depth
used to decode the Unix-to-Unix(UU) encoded attachments. The value ranges
from -1 to 65535. A value of -1 turns off the UU decoding of IMAP attachments.
The value of 0 sets the decoding of UU encoded IMAP attachments to unlimited. A
value other than 0 or -1 restricts the decoding of UU IMAP attachments, and applies per
attachment. A IMAP preprocessor alert with sid 7 is generated (if enabled) when the decoding fails.
Multiple UU attachments/data in one packet are pipelined. When stateful inspection
is turned on the UU encoded IMAP attachments/data across multiple packets are decoded too.
The decoded data is available for detection using the rule option \texttt{file\_data}.
See \ref{sub:file_data} rule option for more details.
In case of multiple configs, the value specified in the non-default config cannot exceed
the value specified in the default config.
\item \texttt{memcap }
This option determines (in bytes) the maximum amount of memory the IMAP preprocessor
will use for decoding base64 encoded/quoted-printable/non-encoded MIME attachments/data
or Unix-to-Unix encoded attachments. This value can be set from 3276 bytes to 100MB.
This option along with the maximum of the decoding depths will determine the IMAP
sessions that will be decoded at any given instant. The default value for this option
is 838860.
Note: It is suggested to set this value such that the max imap session calculated as
follows is at least 1.
max imap session = \texttt{memcap} /(2 * max of (\texttt{b64\_decode\_depth},
\texttt{uu\_decode\_depth}, \texttt{qp\_decode\_depth}
or \texttt{bitenc\_decode\_depth}))
For example, if \texttt{b64\_decode\_depth} is 0 (indicates unlimited decoding) and
\texttt{qp\_decode\_depth} is 100, then
max imap session = \texttt{memcap}/2*65535 (max value for \texttt{b64\_decode\_depth})
In case of multiple configs, the \texttt{memcap} of the non-default configs will be overwritten by the
default config's value. Hence user needs to define it in the default config with the new keyword
disabled (used to disable IMAP preprocessor in a config).
When the memcap for decoding (\texttt{memcap}) is exceeded the IMAP preprocessor alert with sid 3 is
generated (when enabled).
\end{slist}
\subsubsection{Example}
\begin{verbatim}
preprocessor imap: \
ports { 110 } \
memcap 1310700 \
qp_decode_depth -1 \
b64_decode_depth 0 \
bitenc_decode_depth 100
preprocessor imap: \
memcap 1310700 \
qp_decode_depth 0 \
disabled
\end{verbatim}
\subsubsection{Default}
\begin{verbatim}
preprocessor imap: \
ports { 110 } \
b64_decode_depth 1460 \
qp_decode_depth 1460 \
bitenc_decode_depth 1460 \
uu_decode_depth 1460
\end{verbatim}
\subsection{FTP/Telnet Preprocessor}
\label{sub:ftptelnet}
FTP/Telnet is an improvement to the Telnet decoder and provides stateful
inspection capability for both FTP and Telnet data streams. FTP/Telnet will
decode the stream, identifying FTP commands and responses and Telnet escape
sequences and normalize the fields. FTP/Telnet works on both client requests
and server responses.
FTP/Telnet has the capability to handle stateless processing, meaning it only
looks for information on a packet-by-packet basis.
The default is to run FTP/Telnet in stateful inspection mode, meaning it looks
for information and handles reassembled data correctly.
FTP/Telnet has a very ``rich'' user configuration, similar to that of HTTP
Inspect (See \ref{sub:http-inspect}). Users can configure individual FTP
servers and clients with a variety of options, which should allow the user to
emulate any type of FTP server or FTP Client. Within FTP/Telnet, there are
four areas of configuration: Global, Telnet, FTP Client, and FTP Server.
\begin{note}
Some configuration options have an argument of \texttt{yes} or \texttt{no}.
This argument specifies whether the user wants the configuration option to
generate a ftptelnet alert or not. The presence of the option indicates the
option itself is on, while the \texttt{yes/no} argument applies to the alerting
functionality associated with that option.
\end{note}
\subsubsection{Global Configuration}
The global configuration deals with configuration options that determine the
global functioning of FTP/Telnet. The following example gives the generic
global configuration format:
\subsubsection{Format}
\begin{verbatim}
preprocessor ftp_telnet: \
global \
inspection_type stateful \
encrypted_traffic yes \
check_encrypted
\end{verbatim}
You can only have a single global configuration, you'll get an error if you try
otherwise. The FTP/Telnet global configuration must appear before the other
three areas of configuration.
\paragraph{Configuration}
\begin{slist}
\item \texttt{inspection\_type}
This indicates whether to operate in stateful or stateless mode.
\item \texttt{encrypted\_traffic $<$yes|no$>$}
This option enables detection and alerting on encrypted Telnet and FTP command
channels.
\begin{note}
When \texttt{inspection\_type} is in stateless mode, checks for encrypted
traffic will occur on every packet, whereas in stateful mode, a particular
session will be noted as encrypted and not inspected any further.
\end{note}
\item \texttt{check\_encrypted}
Instructs the preprocessor to continue to check an encrypted session for a
subsequent command to cease encryption.
\end{slist}
\subsubsection{Example Global Configuration}
\begin{verbatim}
preprocessor ftp_telnet: \
global inspection_type stateful encrypted_traffic no
\end{verbatim}
\subsubsection{Telnet Configuration}
The telnet configuration deals with configuration options that determine the
functioning of the Telnet portion of the preprocessor. The following example
gives the generic telnet configuration format:
\subsubsection{Format}
\begin{verbatim}
preprocessor ftp_telnet_protocol: \
telnet \
ports { 23 } \
normalize \
ayt_attack_thresh 6 \
detect_anomalies
\end{verbatim}
There should only be a single telnet configuration, and subsequent instances
will override previously set values.
\paragraph{Configuration}
\begin{slist}
\item \texttt{ports $\{ <$port$> [<$port$> <...>] \}$}
This is how the user configures which ports to decode as telnet traffic. SSH
tunnels cannot be decoded, so adding port 22 will only yield false positives.
Typically port 23 will be included.
\item \texttt{normalize}
This option tells the preprocessor to normalize the telnet traffic by
eliminating the telnet escape sequences. It functions similarly to its
predecessor, the telnet\_decode preprocessor. Rules written with 'raw' content
options will ignore the normalized buffer that is created when this option is
in use.
\item \texttt{ayt\_attack\_thresh $<$ number $>$}
This option causes the preprocessor to alert when the number of consecutive
telnet Are You There (AYT) commands reaches the number specified. It is only
applicable when the mode is stateful.
\item \texttt{detect\_anomalies}
In order to support certain options, Telnet supports subnegotiation. Per the
Telnet RFC, subnegotiation begins with SB (subnegotiation begin) and must end
with an SE (subnegotiation end). However, certain implementations of Telnet
servers will ignore the SB without a corresponding SE. This is anomalous
behavior which could be an evasion case. Being that FTP uses the Telnet
protocol on the control connection, it is also susceptible to this behavior.
The \texttt{detect\_anomalies} option enables alerting on Telnet SB without the
corresponding SE.
\end{slist}
\subsubsection{Example Telnet Configuration}
\begin{verbatim}
preprocessor ftp_telnet_protocol: \
telnet ports { 23 } normalize ayt_attack_thresh 6
\end{verbatim}
\subsubsection{FTP Server Configuration}
There are two types of FTP server configurations: default and by IP address.
\paragraph{Default}
This configuration supplies the default server configuration for any FTP server
that is not individually configured. Most of your FTP servers will most likely
end up using the default configuration.
\subsubsection{Example Default FTP Server Configuration}
\begin{verbatim}
preprocessor ftp_telnet_protocol: \
ftp server default ports { 21 }
\end{verbatim}
Refer to \pageref{sub:default ftp server config} for the list of options set in default ftp server configuration.
\paragraph{Configuration by IP Address}
This format is very similar to ``default'', the only difference being that
specific IPs can be configured.
\subsubsection{Example IP specific FTP Server Configuration}
\begin{verbatim}
preprocessor _telnet_protocol: \
ftp server 10.1.1.1 ports { 21 } ftp_cmds { XPWD XCWD }
\end{verbatim}
\subsubsection{FTP Server Configuration Options}
\begin{slist}
\item \texttt{ports $\{ <$port$> [<$port$> <...>] \}$}
This is how the user configures which ports to decode as FTP command channel
traffic. Typically port 21 will be included.
\item \texttt{print\_cmds}
During initialization, this option causes the preprocessor to print the
configuration for each of the FTP commands for this server.
\item \texttt{ftp\_cmds $\{ cmd [cmd] \}$ }
The preprocessor is configured to alert when it sees an FTP command that is not
allowed by the server.
This option specifies a list of additional commands allowed by this server,
outside of the default FTP command set as specified in RFC 959. This may be
used to allow the use of the 'X' commands identified in RFC 775, as well as any
additional commands as needed.
For example:
\begin{verbatim}
ftp_cmds { XPWD XCWD XCUP XMKD XRMD }
\end{verbatim}
\item \texttt{def\_max\_param\_len $<$number$>$}
This specifies the default maximum allowed parameter length for an FTP command.
It can be used as a basic buffer overflow detection.
\item \texttt{alt\_max\_param\_len $<$number$>$ $\{ cmd [cmd] \}$}
This specifies the maximum allowed parameter length for the specified FTP
command(s). It can be used as a more specific buffer overflow detection. For
example the USER command -- usernames may be no longer than 16 bytes, so the
appropriate configuration would be:
\begin{verbatim}
alt_max_param_len 16 { USER }
\end{verbatim}
\item \texttt{chk\_str\_fmt $\{ cmd [cmd] \}$}
This option causes a check for string format attacks in the specified commands.
\item \texttt{cmd\_validity cmd $<$ fmt $>$}
This option specifies the valid format for parameters of a given command.
fmt must be enclosed in $<>$'s and may contain the following:
\begin{center}
\begin{tabular}{| l | p{3in} |}
\hline
\textbf{Value} & \textbf{Description} \\
\hline
\hline
int & Parameter must be an integer \\
\hline
number & Parameter must be an integer between 1 and 255 \\
\hline
char $<$chars$>$ & Parameter must be a single character, one of $<$chars$>$ \\
\hline
date $<$datefmt$>$ & Parameter follows format specified, where:
\begin{tabular}{ l l }
n & Number \\
C & Character \\
$[]$ & optional format enclosed \\
$|$ & OR \\
$\{\}$ & choice of options \\
. + - & literal \\
\end{tabular} \\
\hline
string & Parameter is a string (effectively unrestricted) \\
\hline
host\_port & Parameter must be a host/port specified, per RFC 959 \\
\hline
long\_host\_port & Parameter must be a long host port specified, per RFC 1639 \\
\hline
extended\_host\_port & Parameter must be an extended host port specified, per RFC 2428 \\
\hline
$\{\}$, $|$ & One of choices enclosed within, separated by $|$ \\
\hline
$\{\}$, $[]$ & One of the choices enclosed within $\{\}$, optional value enclosed within $[]$ \\
\hline
\end{tabular}
\end{center}
Examples of the cmd\_validity option are shown below. These examples are the
default checks, per RFC 959 and others performed by the preprocessor.
\begin{verbatim}
cmd_validity MODE
cmd_validity STRU
cmd_validity ALLO < int [ char R int ] >
cmd_validity TYPE < { char AE [ char NTC ] | char I | char L [ number ] } >
cmd_validity PORT < host_port >
\end{verbatim}
A cmd\_validity line can be used to override these defaults and/or add a check
for other commands.
\begin{verbatim}
# This allows additional modes, including mode Z which allows for
# zip-style compression.
cmd_validity MODE < char ASBCZ >
# Allow for a date in the MDTM command.
cmd_validity MDTM < [ date nnnnnnnnnnnnnn[.n[n[n]]] ] string >
\end{verbatim}
MDTM is an off case that is worth discussing. While not part of an established
standard, certain FTP servers accept MDTM commands that set the modification
time on a file. The most common among servers that do, accept a format using
YYYYMMDDHHmmss[.uuu]. Some others accept a format using YYYYMMDDHHmmss[+|-]TZ
format. The example above is for the first case (time format as specified in
http://www.ietf.org/internet-drafts/draft-ietf-ftpext-mlst-16.txt)
To check validity for a server that uses the TZ format, use the following:
\begin{verbatim}
cmd_validity MDTM < [ date nnnnnnnnnnnnnn[{+|-}n[n]] ] string >
\end{verbatim}
\item \texttt{telnet\_cmds $<$yes$|$no$>$}
This option turns on detection and alerting when telnet escape sequences are
seen on the FTP command channel. Injection of telnet escape sequences could be
used as an evasion attempt on an FTP command channel.
\item \texttt{ignore\_telnet\_erase\_cmds $<$yes|no$>$}
This option allows Snort to ignore telnet escape sequences for erase character
(TNC EAC) and erase line (TNC EAL) when normalizing FTP command channel. Some FTP
servers do not process those telnet escape sequences.
\item \texttt{data\_chan}
This option causes the rest of snort (rules, other preprocessors) to ignore FTP
data channel connections. Using this option means that \textbf{NO INSPECTION}
other than TCP state will be performed on FTP data transfers. It can be used
to improve performance, especially with large file transfers from a trusted
source. If your rule set includes virus-type rules, it is recommended that
this option not be used.
Use of the "data\_chan" option is deprecated in favor of the
"ignore\_data\_chan" option. "data\_chan" will be removed in a future release.
\item \texttt{ignore\_data\_chan $<$yes$|$no$>$}
This option causes the rest of Snort (rules, other preprocessors) to ignore FTP
data channel connections. Setting this option to "yes" means that \textbf{NO
INSPECTION} other than TCP state will be performed on FTP data transfers. It
can be used to improve performance, especially with large file transfers from a
trusted source. If your rule set includes virus-type rules, it is recommended
that this option not be used.
\end{slist}
\subsubsection{FTP Server Base Configuration Options}
\label{sub:default ftp server config}
The base FTP server configuration is as follows. Options specified in the
configuration file will modify this set of options. FTP commands are added to
the set of allowed commands. The other options will override those in the base
configuration.
\begin{verbatim}
def_max_param_len 100
ftp_cmds { USER PASS ACCT CWD CDUP SMNT
QUIT REIN TYPE STRU MODE RETR
STOR STOU APPE ALLO REST RNFR
RNTO ABOR DELE RMD MKD PWD LIST
NLST SITE SYST STAT HELP NOOP }
ftp_cmds { AUTH ADAT PROT PBSZ CONF ENC }
ftp_cmds { PORT PASV LPRT LPSV EPRT EPSV }
ftp_cmds { FEAT OPTS }
ftp_cmds { MDTM REST SIZE MLST MLSD }
alt_max_param_len 0 { CDUP QUIT REIN PASV STOU ABOR PWD SYST NOOP }
cmd_validity MODE < char SBC >
cmd_validity STRU < char FRPO [ string ] >
cmd_validity ALLO < int [ char R int ] >
cmd_validity TYPE < { char AE [ char NTC ] | char I | char L [ number ] } >
cmd_validity PORT < host_port >
cmd_validity LPRT < long_host_port >
cmd_validity EPRT < extd_host_port >
cmd_validity EPSV < [ { '1' | '2' | 'ALL' } ] >
\end{verbatim}
\subsubsection{FTP Client Configuration}
Similar to the FTP Server configuration, the FTP client configurations has two
types: default, and by IP address.
\paragraph{Default}
This configuration supplies the default client configuration for any FTP client
that is not individually configured. Most of your FTP clients will most likely
end up using the default configuration.
\subsubsection{Example Default FTP Client Configuration}
\begin{verbatim}
preprocessor ftp_telnet_protocol: \
ftp client default bounce no max_resp_len 200
\end{verbatim}
\paragraph{Configuration by IP Address}
This format is very similar to ``default'', the only difference being that
specific IPs can be configured.
\subsubsection{Example IP specific FTP Client Configuration}
\begin{verbatim}
preprocessor ftp_telnet_protocol: \
ftp client 10.1.1.1 bounce yes max_resp_len 500
\end{verbatim}
\subsubsection{FTP Client Configuration Options}
\begin{slist}
\item \texttt{max\_resp\_len $<$number$>$}
This specifies the maximum allowed response length to an FTP command accepted
by the client. It can be used as a basic buffer overflow detection.
\item \texttt{bounce $<$yes|no$>$}
This option turns on detection and alerting of FTP bounce attacks. An FTP
bounce attack occurs when the FTP PORT command is issued and the specified host
does not match the host of the client.
\item \texttt{bounce\_to $<$ CIDR,[port$|$portlow,porthi] $>$}
When the bounce option is turned on, this allows the PORT command to use the IP
address (in CIDR format) and port (or inclusive port range) without generating
an alert. It can be used to deal with proxied FTP connections where the FTP
data channel is different from the client.
A few examples:
\begin{itemize}
\item Allow bounces to 192.162.1.1 port 20020 -- i.e., the use of
\texttt{PORT 192,168,1,1,78,52}.
\begin{verbatim}
bounce_to { 192.168.1.1,20020 }
\end{verbatim}
\item Allow bounces to 192.162.1.1 ports 20020 through 20040 -- i.e., the use of
\texttt{PORT 192,168,1,1,78,xx}, where xx is 52 through 72 inclusive.
\begin{verbatim}
bounce_to { 192.168.1.1,20020,20040 }
\end{verbatim}
\item Allow bounces to 192.162.1.1 port 20020 and 192.168.1.2 port 20030.
\begin{verbatim}
bounce_to { 192.168.1.1,20020 192.168.1.2,20030 }
\end{verbatim}
\item Allows bounces to IPv6 address fe8::5 port 59340.
\begin{verbatim}
bounce_to { fe8::5,59340 }
\end{verbatim}
\end{itemize}
\item \texttt{telnet\_cmds $<$yes|no$>$}
This option turns on detection and alerting when telnet escape sequences are
seen on the FTP command channel. Injection of telnet escape sequences could be
used as an evasion attempt on an FTP command channel.
\item \texttt{ignore\_telnet\_erase\_cmds $<$yes|no$>$}
This option allows Snort to ignore telnet escape sequences for erase character
(TNC EAC) and erase line (TNC EAL) when normalizing FTP command channel. Some FTP
clients do not process those telnet escape sequences.
\end{slist}
\subsubsection{Examples/Default Configuration from snort.conf}
\begin{verbatim}
preprocessor ftp_telnet: \
global \
encrypted_traffic yes \
inspection_type stateful
preprocessor ftp_telnet_protocol:\
telnet \
normalize \
ayt_attack_thresh 200
# This is consistent with the FTP rules as of 18 Sept 2004.
# Set CWD to allow parameter length of 200
# MODE has an additional mode of Z (compressed)
# Check for string formats in USER & PASS commands
# Check MDTM commands that set modification time on the file.
preprocessor ftp_telnet_protocol: \
ftp server default \
def_max_param_len 100 \
alt_max_param_len 200 { CWD } \
cmd_validity MODE < char ASBCZ > \
cmd_validity MDTM < [ date nnnnnnnnnnnnnn[.n[n[n]]] ] string > \
chk_str_fmt { USER PASS RNFR RNTO SITE MKD } \
telnet_cmds yes \
ignore_data_chan yes
preprocessor ftp_telnet_protocol: \
ftp client default \
max_resp_len 256 \
bounce yes \
telnet_cmds yes
\end{verbatim}
\subsection{SSH}
\label{sub:ssh}
The SSH preprocessor detects the following exploits: Challenge-Response Buffer
Overflow, CRC 32, Secure CRT, and the Protocol Mismatch exploit.
Both Challenge-Response Overflow and CRC 32 attacks occur after the key
exchange, and are therefore encrypted. Both attacks involve sending a large
payload (20kb+) to the server immediately after the authentication challenge.
To detect the attacks, the SSH preprocessor counts the number of bytes
transmitted to the server. If those bytes exceed a predefined limit within a
predefined number of packets, an alert is generated. Since the
Challenge-Response Overflow only effects SSHv2 and CRC 32 only effects SSHv1,
the SSH version string exchange is used to distinguish the attacks.
The Secure CRT and protocol mismatch exploits are observable before the key
exchange.
\subsubsection{Configuration}
By default, all alerts are disabled and the preprocessor checks traffic on port
22.
The available configuration options are described below.
\begin{slist}
\item \texttt{server\_ports $\{ <$port$> [<$port$> <...>] \}$}
This option specifies which ports the SSH preprocessor should inspect traffic
to.
\item \texttt{max\_encrypted\_packets $<$ number $>$}
The number of stream reassembled encrypted packets that Snort will inspect before ignoring a given
SSH session. The SSH vulnerabilities that Snort can detect all happen at the
very beginning of an SSH session. Once max\_encrypted\_packets packets have been
seen, Snort ignores the session to increase performance. The default is set to 25.
This value can be set from 0 to 65535.
\item \texttt{max\_client\_bytes $<$ number $>$}
The number of unanswered bytes allowed to be transferred before alerting on
Challenge-Response Overflow or CRC 32. This number must be hit before
max\_encrypted\_packets packets are sent, or else Snort will ignore the traffic.
The default is set to 19600. This value can be set from 0 to 65535.
\item \texttt{max\_server\_version\_len $<$ number $>$}
The maximum number of bytes allowed in the SSH server version string before
alerting on the Secure CRT server version string overflow. The default is set to
80. This value can be set from 0 to 255.
\item \texttt{autodetect}
Attempt to automatically detect SSH.
\item \texttt{enable\_respoverflow}
Enables checking for the Challenge-Response Overflow exploit.
\item \texttt{enable\_ssh1crc32}
Enables checking for the CRC 32 exploit.
\item \texttt{enable\_srvoverflow}
Enables checking for the Secure CRT exploit.
\item \texttt{enable\_protomismatch}
Enables checking for the Protocol Mismatch exploit.
\item \texttt{enable\_badmsgdir}
Enable alerts for traffic flowing the wrong direction. For instance, if the
presumed server generates client traffic, or if a client generates server
traffic.
\item \texttt{enable\_paysize}
Enables alerts for invalid payload sizes.
\item \texttt{enable\_recognition}
Enable alerts for non-SSH traffic on SSH ports.
\end{slist}
The SSH preprocessor should work by default. After max\_encrypted\_packets is
reached, the preprocessor will stop processing traffic for a given session. If
Challenge-Response Overflow or CRC 32 false positive, try increasing the number
of required client bytes with max\_client\_bytes.
\subsubsection{Example Configuration from snort.conf}
Looks for attacks on SSH server port 22. Alerts at 19600 unacknowledged bytes
within 20 encrypted packets for the Challenge-Response Overflow/CRC32 exploits.
\begin{verbatim}
preprocessor ssh: \
server_ports { 22 } \
max_client_bytes 19600 \
max_encrypted_packets 20 \
enable_respoverflow \
enable_ssh1crc32
\end{verbatim}
\subsection{DNS}
\label{sub:dns}
The DNS preprocessor decodes DNS Responses and can detect the following
exploits: DNS Client RData Overflow, Obsolete Record Types, and Experimental
Record Types.
DNS looks at DNS Response traffic over UDP and TCP and it requires Stream
preprocessor to be enabled for TCP decoding.
\subsubsection{Configuration}
By default, all alerts are disabled and the preprocessor checks traffic on port
53.
The available configuration options are described below.
\begin{slist}
\item \texttt{ports $\{ <$port$> [<$port$> <...>] \}$}
This option specifies the source ports that the DNS preprocessor should inspect
traffic.
\item \texttt{enable\_obsolete\_types}
Alert on Obsolete (per RFC 1035) Record Types
\item \texttt{enable\_experimental\_types}
Alert on Experimental (per RFC 1035) Record Types
\item \texttt{enable\_rdata\_overflow}
Check for DNS Client RData TXT Overflow
\end{slist}
The DNS preprocessor does nothing if none of the 3 vulnerabilities it checks
for are enabled. It will not operate on TCP sessions picked up midstream, and
it will cease operation on a session if it loses state because of missing data
(dropped packets).
\subsubsection{Examples/Default Configuration from snort.conf}
Looks for traffic on DNS server port 53. Check for the DNS Client RData
overflow vulnerability. Do not alert on obsolete or experimental RData record
types.
\begin{verbatim}
preprocessor dns: \
ports { 53 } \
enable_rdata_overflow
\end{verbatim}
\subsection{SSL/TLS}
\label{sub:SSL/TLS}
Encrypted traffic should be ignored by Snort for both performance reasons and
to reduce false positives. The SSL Dynamic Preprocessor (SSLPP) decodes SSL
and TLS traffic and optionally determines if and when Snort should stop
inspection of it.
Typically, SSL is used over port 443 as HTTPS. By enabling the SSLPP to
inspect port 443 and enabling the noinspect\_encrypted option, only the SSL
handshake of each connection will be inspected. Once the traffic is determined
to be encrypted, no further inspection of the data on the connection is made.
By default, SSLPP looks for a handshake followed by encrypted traffic traveling
to both sides. If one side responds with an indication that something has
failed, such as the handshake, the session is not marked as encrypted.
Verifying that faultless encrypted traffic is sent from both endpoints ensures
two things: the last client-side handshake packet was not crafted to evade
Snort, and that the traffic is legitimately encrypted.
In some cases, especially when packets may be missed, the only observed
response from one endpoint will be TCP ACKs. Therefore, if a user knows that
server-side encrypted data can be trusted to mark the session as encrypted, the
user should use the 'trustservers' option, documented below.
\subsubsection{Configuration}
\begin{slist}
\item \texttt{ports $\{ <$port$> [<$port$> <...>] \}$}
This option specifies which ports SSLPP will inspect traffic on.
By default, SSLPP watches the following ports:
\begin{itemize}
\item \texttt{443} HTTPS
\item \texttt{465} SMTPS
\item \texttt{563} NNTPS
\item \texttt{636} LDAPS
\item \texttt{989} FTPS
\item \texttt{992} TelnetS
\item \texttt{993} IMAPS
\item \texttt{994} IRCS
\item \texttt{995} POPS
\end{itemize}
\item \texttt{noinspect\_encrypted}
Disable inspection on traffic that is encrypted. Default is off.
\item \texttt{trustservers}
Disables the requirement that application (encrypted) data must be observed on
both sides of the session before a session is marked encrypted. Use this
option for slightly better performance if you trust that your servers are not
compromised. This requires the \texttt{noinspect\_encrypted} option to be
useful. Default is off. \end{slist}
\subsubsection{Examples/Default Configuration from snort.conf}
Enables the SSL preprocessor and tells it to disable inspection on encrypted
traffic.
\begin{verbatim}
preprocessor ssl: noinspect_encrypted
\end{verbatim}
\subsubsection{Rule Options}
The following rule options are supported by enabling the \texttt{ssl} preprocessor:
\begin{itemize}
\item[]
\begin{verbatim}
ssl_version
ssl_state
\end{verbatim}
\end{itemize}
\texttt{ssl\_version}
\label{ssl:ssl_version}
\begin{itemize}
\item[] The \texttt{ssl\_version} rule option tracks the version negotiated between
the endpoints of the SSL encryption. The list of version identifiers are below, and
more than one identifier can be specified, via a comma separated list. Lists of
identifiers are OR'ed together.
The option will match if any one of the OR'ed versions are used in the SSL
connection. To check for two or more SSL versions in use simultaneously, multiple
\texttt{ssl\_version} rule options should be used.
\textit{Syntax}
\footnotesize
\begin{verbatim}
ssl_version:
version-list = version | version , version-list
version = ["!"] "sslv2" | "sslv3" | "tls1.0" | "tls1.1" | "tls1.2"
\end{verbatim}
\textit{Examples}
\begin{verbatim}
ssl_version:sslv3;
ssl_version:tls1.0,tls1.1,tls1.2;
ssl_version:!sslv2;
\end{verbatim}
\end{itemize}
\texttt{ssl\_state}
\label{ssl:ssl_state}
\begin{itemize}
\item[] The \texttt{ssl\_state} rule option tracks the state of the SSL encryption
during the process of hello and key exchange. The list of states are below. More than
one state can be specified, via a comma separated list, and are OR'ed together.
The option will match if the connection is currently in any one of the OR'ed states.
To ensure the connection has reached each of a set of states, multiple rules using
the \texttt{ssl\_state} rule option should be used.
\textit{Syntax}
\footnotesize
\begin{verbatim}
ssl_state:
state-list = state | state , state-list
state = ["!"] "client_hello" | "server_hello" | "client_keyx" | "server_keyx" | "unknown"
\end{verbatim}
\textit{Examples}
\begin{verbatim}
ssl_state:client_hello;
ssl_state:client_keyx,server_keyx;
ssl_state:!server_hello;
\end{verbatim}
\end{itemize}
\subsection{ARP Spoof Preprocessor}
\label{sub:arpspoof}
The ARP spoof preprocessor decodes ARP packets and detects ARP attacks, unicast
ARP requests, and inconsistent Ethernet to IP mapping.
When no arguments are specified to arpspoof, the preprocessor inspects Ethernet
addresses and the addresses in the ARP packets. When inconsistency occurs, an
alert with GID 112 and SID 2 or 3 is generated.
When "\texttt{-unicast}" is specified as the argument of arpspoof, the
preprocessor checks for unicast ARP requests. An alert with GID 112 and SID 1
will be generated if a unicast ARP request is detected.
Specify a pair of IP and hardware address as the argument to
\texttt{arpspoof\_detect\_host}. The host with the IP address should be on the
same layer 2 segment as Snort is. Specify one host IP MAC combo per line. The
preprocessor will use this list when detecting ARP cache overwrite attacks.
Alert SID 4 is used in this case.
\subsubsection{Format}
\begin{verbatim}
preprocessor arpspoof[: -unicast]
preprocessor arpspoof_detect_host: ip mac
\end{verbatim}
\begin{table}[h]
\begin{center}
\begin{tabular}{| l | l |}
\hline
\textbf{Option} & \textbf{Description}\\
\hline
\hline
\texttt{ip} & IP address.\\
\hline
\texttt{mac} & The Ethernet address corresponding to the preceding IP. \\
\hline
\end{tabular}
\end{center}
\end{table}
\subsubsection{Example Configuration}
The first example configuration does neither unicast detection nor ARP mapping
monitoring. The preprocessor merely looks for Ethernet address inconsistencies.
\begin{verbatim}
preprocessor arpspoof
\end{verbatim}
The next example configuration does not do unicast detection but monitors ARP
mapping for hosts 192.168.40.1 and 192.168.40.2.
\begin{verbatim}
preprocessor arpspoof
preprocessor arpspoof_detect_host: 192.168.40.1 f0:0f:00:f0:0f:00
preprocessor arpspoof_detect_host: 192.168.40.2 f0:0f:00:f0:0f:01
\end{verbatim}
The third example configuration has unicast detection enabled.
\begin{verbatim}
preprocessor arpspoof: -unicast
preprocessor arpspoof_detect_host: 192.168.40.1 f0:0f:00:f0:0f:00
preprocessor arpspoof_detect_host: 192.168.40.2 f0:0f:00:f0:0f:01
\end{verbatim}
\subsection{DCE/RPC 2 Preprocessor}
\label{sub:dcerpc2}
The main purpose of the preprocessor is to perform SMB desegmentation and
DCE/RPC defragmentation to avoid rule evasion using these techniques. SMB
desegmentation is performed for the following commands that can be used to
transport DCE/RPC requests and responses: \texttt{Write}, \texttt{Write Block
Raw}, \texttt{Write and Close}, \texttt{Write AndX}, \texttt{Transaction},
\texttt{Transaction Secondary}, \texttt{Read}, \texttt{Read Block Raw} and
\texttt{Read AndX}. The following transports are supported for DCE/RPC: SMB,
TCP, UDP and RPC over HTTP v.1 proxy and server. New rule options have been
implemented to improve performance, reduce false positives and reduce the count
and complexity of DCE/RPC based rules.
\subsubsection{Dependency Requirements}
For proper functioning of the preprocessor:
\begin{itemize}
\item Stream session tracking must be enabled, i.e. \texttt{stream5}. The
preprocessor requires a session tracker to keep its data.
\item Stream reassembly must be performed for TCP sessions. If it is decided
that a session is SMB or DCE/RPC, either through configured ports, servers or
autodetecting, the \texttt{dcerpc2} preprocessor will enable stream reassembly
for that session if necessary.
\item IP defragmentation should be enabled, i.e. the \texttt{frag3}
preprocessor should be enabled and configured.
\end{itemize}
\subsubsection{Target Based}
There are enough important differences between Windows and Samba versions that
a target based approach has been implemented. Some important differences:\\
\textit{Named pipe instance tracking}
\begin{itemize}
\item[] A combination of valid login handle or UID, share handle or TID and
file/named pipe handle or FID must be used to write data to a named pipe. The
binding between these is dependent on OS/software version.
\begin{itemize}
\item[] Samba 3.0.22 and earlier
\begin{itemize}
\item[] Any valid UID and TID, along with a valid FID can be used to make a
request, however, if the TID used in creating the FID is deleted (via a tree
disconnect), the FID that was created using this TID becomes invalid, i.e. no
more requests can be written to that named pipe instance.
\end{itemize}
\item[] Samba greater than 3.0.22
\begin{itemize}
\item[] Any valid TID, along with a valid FID can be used to make a request.
However, only the UID used in opening the named pipe can be used to make a
request using the FID handle to the named pipe instance. If the TID used to
create the FID is deleted (via a tree disconnect), the FID that was created
using this TID becomes invalid, i.e. no more requests can be written to that
named pipe instance. If the UID used to create the named pipe instance is
deleted (via a \texttt{Logoff AndX}), since it is necessary in making a request
to the named pipe, the FID becomes invalid.
\end{itemize}
\item[] Windows 2003
\item[] Windows XP
\item[] Windows Vista
\begin{itemize}
\item[] These Windows versions require strict binding between the UID, TID and
FID used to make a request to a named pipe instance. Both the UID and TID used
to open the named pipe instance must be used when writing data to the same
named pipe instance. Therefore, deleting either the UID or TID invalidates the
FID.
\end{itemize}
\item[] Windows 2000
\begin{itemize}
\item[] Windows 2000 is interesting in that the first request to a named pipe
must use the same binding as that of the other Windows versions. However,
requests after that follow the same binding as Samba 3.0.22 and earlier, i.e.
no binding. It also follows Samba greater than 3.0.22 in that deleting the UID
or TID used to create the named pipe instance also invalidates it.
\end{itemize}
\end{itemize}
\end{itemize}
\textit{Accepted SMB commands}
\begin{itemize}
\item[] Samba in particular does not recognize certain commands under an
\texttt{IPC\$} tree.
\begin{itemize}
\item[] Samba (all versions)
\begin{itemize}
\item[] Under an \texttt{IPC\$} tree, does not accept:
\begin{itemize}
\item[] \texttt{Open}
\item[] \texttt{Write And Close}
\item[] \texttt{Read}
\item[] \texttt{Read Block Raw}
\item[] \texttt{Write Block Raw}
\end{itemize}
\end{itemize}
\item[] Windows (all versions)
\begin{itemize}
\item[] Accepts all of the above commands under an \texttt{IPC\$} tree.
\end{itemize}
\end{itemize}
\end{itemize}
\textit{AndX command chaining}
\begin{itemize}
\item[] Windows is very strict in what command combinations it allows to be
chained. Samba, on the other hand, is very lax and allows some nonsensical
combinations, e.g. multiple logins and tree connects (only one place to return
handles for these), login/logoff and tree connect/tree disconnect. Ultimately,
we don't want to keep track of data that the server won't accept. An evasion
possibility would be accepting a fragment in a request that the server won't
accept that gets sandwiched between an exploit.
\end{itemize}
\textit{Transaction tracking}
\begin{itemize}
\item[] The differences between a \texttt{Transaction} request and using one of
the \texttt{Write*} commands to write data to a named pipe are that (1) a
\texttt{Transaction} performs the operations of a write and a read from the
named pipe, whereas in using the \texttt{Write*} commands, the client has to
explicitly send one of the \texttt{Read*} requests to tell the server to send
the response and (2) a \texttt{Transaction} request is not written to the named
pipe until all of the data is received (via potential \texttt{Transaction
Secondary} requests) whereas with the \texttt{Write*} commands, data is written
to the named pipe as it is received by the server. Multiple Transaction
requests can be made simultaneously to the same named pipe. These requests can
also be segmented with \texttt{Transaction Secondary} commands. What
distinguishes them (when the same named pipe is being written to, i.e. having
the same FID) are fields in the SMB header representing a process id (PID) and
multiplex id (MID). The PID represents the process this request is a part of.
An MID represents different sub-processes within a process (or under a PID).
Segments for each "thread" are stored separately and written to the named pipe
when all segments are received. It is necessary to track this so as not to
munge these requests together (which would be a potential evasion opportunity).
\begin{itemize}
\item[] Windows (all versions)
\begin{itemize}
\item[] Uses a combination of PID and MID to define a "thread".
\end{itemize}
\item[] Samba (all versions)
\begin{itemize}
\item[] Uses just the MID to define a "thread".
\end{itemize}
\end{itemize}
\end{itemize}
\textit{Multiple Bind Requests}
\begin{itemize}
\item[] A \texttt{Bind} request is the first request that must be made in a
connection-oriented DCE/RPC session in order to specify the
interface/interfaces that one wants to communicate with.
\begin{itemize}
\item[] Windows (all versions)
\begin{itemize}
\item[] For all of the Windows versions, only one \texttt{Bind} can ever be
made on a session whether or not it succeeds or fails. Any binding after that
must use the \texttt{Alter Context} request. If another \texttt{Bind} is made,
all previous interface bindings are invalidated.
\end{itemize}
\item[] Samba 3.0.20 and earlier
\begin{itemize}
\item[] Any amount of \texttt{Bind} requests can be made.
\end{itemize}
\item[] Samba later than 3.0.20
\begin{itemize}
\item[] Another \texttt{Bind} request can be made if the first failed and no
interfaces were successfully bound to. If a \texttt{Bind} after a successful
\texttt{Bind} is made, all previous interface bindings are invalidated.
\end{itemize}
\end{itemize}
\end{itemize}
\textit{DCE/RPC Fragmented requests - Context ID}
\begin{itemize}
\item[] Each fragment in a fragmented request carries the context id of the
bound interface it wants to make the request to.
\begin{itemize}
\item[] Windows (all versions)
\begin{itemize}
\item[] The context id that is ultimately used for the request is contained in
the first fragment. The context id field in any other fragment can contain any
value.
\end{itemize}
\item[] Samba (all versions)
\begin{itemize}
\item[] The context id that is ultimately used for the request is contained in
the last fragment. The context id field in any other fragment can contain any
value.
\end{itemize}
\end{itemize}
\end{itemize}
\textit{DCE/RPC Fragmented requests - Operation number}
\begin{itemize}
\item[] Each fragment in a fragmented request carries an operation number
(opnum) which is more or less a handle to a function offered by the interface.
\begin{itemize}
\item[] Samba (all versions)
\item[] Windows 2000
\item[] Windows 2003
\item[] Windows XP
\begin{itemize}
\item[] The opnum that is ultimately used for the request is contained in the
last fragment. The opnum field in any other fragment can contain any value.
\end{itemize}
\item[] Windows Vista
\begin{itemize}
\item[] The opnum that is ultimately used for the request is contained in the
first fragment. The opnum field in any other fragment can contain any value.
\end{itemize}
\end{itemize}
\end{itemize}
\textit{DCE/RPC Stub data byte order}
\begin{itemize}
\item[] The byte order of the stub data is determined differently for Windows
and Samba.
\begin{itemize}
\item[] Windows (all versions)
\begin{itemize}
\item[] The byte order of the stub data is that which was used in the
\texttt{Bind} request.
\end{itemize}
\item[] Samba (all versions)
\begin{itemize}
\item[] The byte order of the stub data is that which is used in the request
carrying the stub data.
\end{itemize}
\end{itemize}
\end{itemize}
\subsubsection{Configuration}
The \texttt{dcerpc2} preprocessor has a global configuration and one or more
server configurations. The global preprocessor configuration name is
\texttt{dcerpc2} and the server preprocessor configuration name is
\texttt{dcerpc2\_server}.\\
\underline{Global Configuration}
\begin{verbatim}
preprocessor dcerpc2
\end{verbatim}
The global \texttt{dcerpc2} configuration is required. Only one global
\texttt{dcerpc2} configuration can be specified.\\
\textit{Option syntax}
\begin{itemize}
\item[]
\begin{tabular}{|l|c|c|p{6cm}|}
\hline
Option & Argument & Required & Default\\
\hline
\hline
\texttt{memcap} & \texttt{} & NO & \texttt{memcap 102400}\\
\hline
\texttt{disable\_defrag} & NONE & NO & OFF\\
\hline
\texttt{max\_frag\_len} & \texttt{} & NO & OFF\\
\hline
\texttt{events} & \texttt{} & NO & OFF\\
\hline
\texttt{reassemble\_threshold} & \texttt{} & NO & OFF\\
\hline
\texttt{disabled} & NONE & NO & OFF\\
\hline
\texttt{smb\_fingerprint\_policy} & \texttt{} & NO & OFF\\
\hline
\end{tabular}
\end{itemize}
\footnotesize
\begin{verbatim}
memcap = 1024-4194303 (kilobytes)
max-frag-len = 1514-65535
events = pseudo-event | event | '[' event-list ']'
pseudo-event = "none" | "all"
event-list = event | event ',' event-list
event = "memcap" | "smb" | "co" | "cl"
re-thresh = 0-65535
fp-policy = "server" | "client" | "both"
\end{verbatim}
\normalsize
\textit{Option explanations}
\begin{itemize}
\item[] \texttt{memcap}
\begin{itemize}
\item[] Specifies the maximum amount of run-time memory that can be allocated.
Run-time memory includes any memory allocated after configuration. Default is
100 MB.
\end{itemize}
\item[] \texttt{disabled}
\begin{itemize}
\item[] Disables the preprocessor. By default this value is turned off. When the
preprocessor is disabled only the memcap option is applied when specified
with the configuration.
\end{itemize}
\item[] \texttt{disable\_defrag}
\begin{itemize}
\item[] Tells the preprocessor not to do DCE/RPC defragmentation. Default is
to do defragmentation.
\end{itemize}
\item[] \texttt{max\_frag\_len}
\begin{itemize}
\item[] Specifies the maximum fragment size that will be added to the
defragmentation module. If a fragment is greater than this size, it is truncated
before being added to the defragmentation module. The allowed range for this
option is 1514 - 65535.
\end{itemize}
\item[] \texttt{events}
\begin{itemize}
\item[] Specifies the classes of events to enable. (See Events section for an
enumeration and explanation of events.)
\begin{itemize}
\item[] \texttt{memcap}
\begin{itemize}
\item[] Only one event. If the memcap is reached or exceeded, alert.
\end{itemize}
\item[] \texttt{smb}
\begin{itemize}
\item[] Alert on events related to SMB processing.
\end{itemize}
\item[] \texttt{co}
\begin{itemize}
\item[] Stands for connection-oriented DCE/RPC. Alert on events related to
connection-oriented DCE/RPC processing.
\end{itemize}
\item[] \texttt{cl}
\begin{itemize}
\item[] Stands for connectionless DCE/RPC. Alert on events related to
connectionless DCE/RPC processing.
\end{itemize}
\end{itemize}
\end{itemize}
\item[] \texttt{reassemble\_threshold}
\begin{itemize}
\item[] Specifies a minimum number of bytes in the DCE/RPC desegmentation and
defragmentation buffers before creating a reassembly packet to send to the
detection engine. This option is useful in inline mode so as to potentially
catch an exploit early before full defragmentation is done. A value of 0
supplied as an argument to this option will, in effect, disable this option.
Default is disabled.
\end{itemize}
\item[] \texttt{smb\_fingerprint\_policy}
\begin{itemize}
\item[] In the initial phase of an SMB session, the client needs to authenticate
with a SessionSetupAndX. Both the request and response to this command
contain OS and version information that can allow the preprocessor to
dynamically set the policy for a session which allows for better
protection against Windows and Samba specific evasions.
\end{itemize}
\end{itemize}
\textit{Option examples}
\footnotesize
\begin{verbatim}
memcap 30000
max_frag_len 16840
events none
events all
events smb
events co
events [co]
events [smb, co]
events [memcap, smb, co, cl]
reassemble_threshold 500
smb_fingerprint_policy both
smb_fingerprint_policy client
\end{verbatim}
\normalsize
\textit{Configuration examples}
\footnotesize
\begin{verbatim}
preprocessor dcerpc2
preprocessor dcerpc2: memcap 500000
preprocessor dcerpc2: max_frag_len 16840, memcap 300000, events smb
preprocessor dcerpc2: memcap 50000, events [memcap, smb, co, cl], max_frag_len 14440
preprocessor dcerpc2: disable_defrag, events [memcap, smb]
preprocessor dcerpc2: reassemble_threshold 500
preprocessor dcerpc2: memcap 50000, events [memcap, smb, co, cl], max_frag_len 14440, smb_fingerprint_policy both
\end{verbatim}
\normalsize
\textit{Default global configuration}
\footnotesize
\begin{verbatim}
preprocessor dcerpc2: memcap 102400
\end{verbatim}
\normalsize
\underline{Server Configuration}
\begin{verbatim}
preprocessor dcerpc2_server
\end{verbatim}
The \texttt{dcerpc2\_server} configuration is optional. A
\texttt{dcerpc2\_server} configuration must start with \texttt{default} or
\texttt{net} options. The \texttt{default} and \texttt{net} options are
mutually exclusive. At most one default configuration can be specified. If no
\texttt{default} configuration is specified, default values will be used for
the \texttt{default} configuration. Zero or more \texttt{net} configurations
can be specified. For any \texttt{dcerpc2\_server} configuration, if
non-required options are not specified, the defaults will be used. When
processing DCE/RPC traffic, the \texttt{default} configuration is used if no
net configurations match. If a \texttt{net} configuration matches, it will
override the \texttt{default} configuration. A \texttt{net} configuration
matches if the packet's server IP address matches an IP address or net
specified in the \texttt{net} configuration. The \texttt{net} option supports
IPv6 addresses. Note that port and ip variables defined in \texttt{snort.conf}
\textsc{cannot} be used.
\textit{Option syntax}
\begin{itemize}
\item[]
\begin{tabular}{|l|c|c|p{6cm}|}
\hline
Option & Argument & Required & Default\\
\hline
\hline
\texttt{default} & NONE & YES & NONE\\
\hline
\texttt{net} & \texttt{} & YES & NONE\\
\hline
\texttt{policy} & \texttt{} & NO & \texttt{policy WinXP}\\
\hline
\texttt{detect} & \texttt{} & NO & \texttt{detect [smb [139,445], tcp
135, udp 135, rpc-over-http-server 593]}\\
\hline
\texttt{autodetect} & \texttt{} & NO & \texttt{autodetect [tcp
1025:, udp 1025:, rpc-over-http-server 1025:]}\\
\hline
\texttt{no\_autodetect\_http\_proxy\_ports} & NONE & NO & DISABLED (The
preprocessor autodetects on all proxy ports by default)\\
\hline
\texttt{smb\_invalid\_shares} & \texttt{} & NO & NONE\\
\hline
\texttt{smb\_max\_chain} & \texttt{} & NO & \texttt{smb\_max\_chain 3}\\
\hline
\texttt{smb\_file\_inspection} & \texttt{} & NO & \texttt{smb\_file\_inspection off}\\
\hline
\end{tabular}
\end{itemize}
\footnotesize
\begin{verbatim}
net = ip | '[' ip-list ']'
ip-list = ip | ip ',' ip-list
ip = ip-addr | ip-addr '/' prefix | ip4-addr '/' netmask
ip-addr = ip4-addr | ip6-addr
ip4-addr = a valid IPv4 address
ip6-addr = a valid IPv6 address (can be compressed)
prefix = a valid CIDR
netmask = a valid netmask
policy = "Win2000" | "Win2003" | "WinXP" | "WinVista" |
"Samba" | "Samba-3.0.22" | "Samba-3.0.20"
detect = "none" | detect-opt | '[' detect-list ']'
detect-list = detect-opt | detect-opt ',' detect-list
detect-opt = transport | transport port-item |
transport '[' port-list ']'
transport = "smb" | "tcp" | "udp" | "rpc-over-http-proxy" |
"rpc-over-http-server"
port-list = port-item | port-item ',' port-list
port-item = port | port-range
port-range = ':' port | port ':' | port ':' port
port = 0-65535
shares = share | '[' share-list ']'
share-list = share | share ',' share-list
share = word | '"' word '"' | '"' var-word '"'
word = graphical ASCII characters except ',' '"' ']' '[' '$'
var-word = graphical ASCII characters except ',' '"' ']' '['
max-chain = 0-255
file-inspect = file-arg | '[' file-list ']'
file-arg = "off" | "on" | "only"
file-list = file-arg [ ',' "file-depth" ]
\end{verbatim}
\normalsize
\begin{itemize}
\item[] Because the Snort main parser treats '\$' as the start of a variable
and tries to expand it, shares with '\$' must be enclosed quotes.
\end{itemize}
\textit{Option explanations}
\begin{itemize}
\item[] \texttt{default}
\begin{itemize}
\item[] Specifies that this configuration is for the default server
configuration.
\end{itemize}
\item[] \texttt{net}
\begin{itemize}
\item[] Specifies that this configuration is an IP or net specific
configuration. The configuration will only apply to the IP addresses and nets
supplied as an argument.
\end{itemize}
\item[] \texttt{policy}
\begin{itemize}
\item[] Specifies the target-based policy to use when processing. Default is
"WinXP".
\end{itemize}
\item[] \texttt{detect}
\begin{itemize}
\item[] Specifies the DCE/RPC transport and server ports that should be
detected on for the transport. Defaults are ports 139 and 445 for SMB, 135 for
TCP and UDP, 593 for RPC over HTTP server and 80 for RPC over HTTP proxy.
\end{itemize}
\item[] \texttt{autodetect}
\begin{itemize}
\item[] Specifies the DCE/RPC transport and server ports that the preprocessor
should attempt to autodetect on for the transport. The autodetect ports are
only queried if no detect transport/ports match the packet. The order in which
the preprocessor will attempt to autodetect will be - TCP/UDP, RPC over HTTP
server, RPC over HTTP proxy and lastly SMB. Note that most dynamic DCE/RPC
ports are above 1024 and ride directly over TCP or UDP. It would be very
uncommon to see SMB on anything other than ports 139 and 445. Defaults are
1025-65535 for TCP, UDP and RPC over HTTP server.
\end{itemize}
\item[] \texttt{no\_autodetect\_http\_proxy\_ports}
\begin{itemize}
\item[] By default, the preprocessor will always attempt to autodetect for
ports specified in the detect configuration for rpc-over-http-proxy. This is
because the proxy is likely a web server and the preprocessor should not look
at all web traffic. This option is useful if the RPC over HTTP proxy configured
with the detect option is only used to proxy DCE/RPC traffic. Default is to
autodetect on RPC over HTTP proxy detect ports.
\end{itemize}
\item[] \texttt{smb\_invalid\_shares}
\begin{itemize}
\item[] Specifies SMB shares that the preprocessor should alert on if an
attempt is made to connect to them via a \texttt{Tree Connect} or \texttt{Tree
Connect AndX}. Default is empty.
\end{itemize}
\item[] \texttt{smb\_max\_chain}
\begin{itemize}
\item[] Specifies the maximum amount of AndX command chaining that is allowed
before an alert is generated. Default maximum is 3 chained commands. A value
of 0 disables this option. This value can be set from 0 to 255.
\end{itemize}
\item[] \texttt{smb\_file\_inspection}
\begin{itemize}
\item[] Instructs the preprocessor to do inspection of normal SMB file
transfers. This includes doing file type and signature through
the file API as well as setting a pointer for the \texttt{file\_data}
rule option. Note that the \texttt{file-depth} option only applies to the
maximum amount of file data for which it will set the pointer for the
\texttt{file\_data} rule option. For file type and signature it will use the
value configured for the file API. If \texttt{only} is specified, the
preprocessor will only do SMB file inspection, i.e. it will not do any DCE/RPC
tracking or inspection. If \texttt{on} is specified with no
arguments, the default file depth is 16384 bytes. An argument of -1 to
\texttt{file-depth} disables setting the pointer for \texttt{file\_data}, effectively
disabling SMB file inspection in rules. An argument of 0 to
\texttt{file-depth} means unlimited. Default is \texttt{off}, i.e. no SMB file
inspection is done in the preprocessor.
\end{itemize}
\end{itemize}
\textit{Option examples}
\footnotesize
\begin{verbatim}
net 192.168.0.10
net 192.168.0.0/24
net [192.168.0.0/24]
net 192.168.0.0/255.255.255.0
net feab:45b3:ab92:8ac4:d322:007f:e5aa:7845
net feab:45b3:ab92:8ac4:d322:007f:e5aa:7845/128
net feab:45b3::/32
net [192.168.0.10, feab:45b3::/32]
net [192.168.0.0/24, feab:45b3:ab92:8ac4:d322:007f:e5aa:7845]
policy Win2000
policy Samba-3.0.22
detect none
detect smb
detect [smb]
detect smb 445
detect [smb 445]
detect smb [139,445]
detect [smb [139,445]]
detect [smb, tcp]
detect [smb 139, tcp [135,2103]]
detect [smb [139,445], tcp 135, udp 135, rpc-over-http-server [593,6002:6004]]
autodetect none
autodetect tcp
autodetect [tcp]
autodetect tcp 2025:
autodetect [tcp 2025:]
autodetect tcp [2025:3001,3003:]
autodetect [tcp [2025:3001,3003:]]
autodetect [tcp, udp]
autodetect [tcp 2025:, udp 2025:]
autodetect [tcp 2025:, udp, rpc-over-http-server [1025:6001,6005:]]
smb_invalid_shares private
smb_invalid_shares "private"
smb_invalid_shares "C$"
smb_invalid_shares [private, "C$"]
smb_invalid_shares ["private", "C$"]
smb_max_chain 1
smb_file_inspection on
smb_file_inspection off
smb_file_inspection [ on, file-depth -1 ]
smb_file_inspection [ on, file-depth 0 ]
smb_file_inspection [ on, file-depth 4294967296 ]
smb_file_inspection [ only, file-depth -1 ]
\end{verbatim}
\normalsize
\textit{Configuration examples}
\footnotesize
\begin{verbatim}
preprocessor dcerpc2_server: \
default
preprocessor dcerpc2_server: \
default, policy Win2000
preprocessor dcerpc2_server: \
default, policy Win2000, detect [smb, tcp], autodetect tcp 1025:, \
smb_invalid_shares ["C$", "D$", "ADMIN$"]
preprocessor dcerpc2_server: net 10.4.10.0/24, policy Win2000
preprocessor dcerpc2_server: \
net [10.4.10.0/24,feab:45b3::/126], policy WinVista, smb_max_chain 1
preprocessor dcerpc2_server: \
net [10.4.10.0/24,feab:45b3::/126], policy WinVista, \
detect [smb, tcp, rpc-over-http-proxy 8081],
autodetect [tcp, rpc-over-http-proxy [1025:6001,6005:]], \
smb_invalid_shares ["C$", "ADMIN$"], no_autodetect_http_proxy_ports
preprocessor dcerpc2_server: \
net [10.4.11.56,10.4.11.57], policy Samba, detect smb, autodetect none
preprocessor dcerpc2_server: default, policy WinXP, \
smb_file_inspection [ on, file-depth 0 ]
\end{verbatim}
\normalsize
\textit{Default server configuration}
\footnotesize
\begin{verbatim}
preprocessor dcerpc2_server: default, policy WinXP, \
detect [smb [139,445], tcp 135, udp 135, rpc-over-http-server 593], \
autodetect [tcp 1025:, udp 1025:, rpc-over-http-server 1025:], \
smb_max_chain 3, smb_file_inspection off
\end{verbatim}
\normalsize
\underline{Complete \texttt{dcerpc2} default configuration}
\footnotesize
\begin{verbatim}
preprocessor dcerpc2: memcap 102400
preprocessor dcerpc2_server: \
default, policy WinXP, \
detect [smb [139,445], tcp 135, udp 135, rpc-over-http-server 593], \
autodetect [tcp 1025:, udp 1025:, rpc-over-http-server 1025:], \
smb_max_chain 3, smb_file_inspection off
\end{verbatim}
\normalsize
\subsubsection{Events}
The preprocessor uses GID 133 to register events.\\
\textit{Memcap events}
\begin{itemize}
\item[]
\begin{longtable}{|r|p{13.5cm}|}
\hline
SID & Description\\
\hline
\hline
1 &
If the memory cap is reached and the preprocessor is configured to alert.\\
\hline
\end{longtable}
\end{itemize}
\textit{SMB events}
\begin{itemize}
\item[]
\begin{longtable}{|r|p{13.5cm}|}
\hline
SID & Description\\
\hline
\hline
2 & An invalid NetBIOS Session Service type was specified in the header.
Valid types are: \texttt{Message}, \texttt{Request} (only from client),
\texttt{Positive Response} (only from server), \texttt{Negative Response}
(only from server), \texttt{Retarget Response} (only from server) and
\texttt{Keep Alive}.\\
\hline
3 & An SMB message type was specified in the header. Either a request was
made by the server or a response was given by the client.\\
\hline
4 & The SMB id does not equal \texttt{\textbackslash xffSMB}. Note that since
the preprocessor does not yet support SMB2, id of
\texttt{\textbackslash xfeSMB} is turned away before an eventable point is
reached.\\
\hline
5 & The word count of the command header is invalid. SMB commands have
pretty specific word counts and if the preprocessor sees a command with
a word count that doesn't jive with that command, the preprocessor will
alert.\\
\hline
6 & Some commands require a minimum number of bytes after the command
header. If a command requires this and the byte count is less than the
minimum required byte count for that command, the preprocessor will
alert.\\
\hline
7 & Some commands, especially the commands from the SMB Core implementation
require a data format field that specifies the kind of data that will be
coming next. Some commands require a specific format for the data. The
preprocessor will alert if the format is not that which is expected for
that command.\\
\hline
8 & Many SMB commands have a field containing an offset from the beginning
of the SMB header to where the data the command is carrying starts. If
this offset puts us before data that has already been processed or after
the end of payload, the preprocessor will alert.\\
\hline
9 & Some SMB commands, such as \texttt{Transaction}, have a field containing
the total amount of data to be transmitted. If this field is zero, the
preprocessor will alert.\\
\hline
10 & The preprocessor will alert if the NetBIOS Session Service length field
contains a value less than the size of an SMB header.\\
\hline
11 & The preprocessor will alert if the remaining NetBIOS packet length is
less than the size of the SMB command header to be decoded.\\
\hline
12 & The preprocessor will alert if the remaining NetBIOS packet length is
less than the size of the SMB command byte count specified in the
command header.\\
\hline
13 & The preprocessor will alert if the remaining NetBIOS packet length is
less than the size of the SMB command data size specified in the command
header.\\
\hline
14 & The preprocessor will alert if the total data count specified in the
SMB command header is less than the data size specified in the SMB
command header. (Total data count must always be greater than or equal
to current data size.)\\
\hline
15 & The preprocessor will alert if the total amount of data sent in a
transaction is greater than the total data count specified in the SMB
command header.\\
\hline
16 & The preprocessor will alert if the byte count specified in the SMB
command header is less than the data size specified in the SMB command.
(The byte count must always be greater than or equal to the data size.)\\
\hline
17 & Some of the Core Protocol commands (from the initial SMB implementation)
require that the byte count be some value greater than the data size
exactly. The preprocessor will alert if the byte count minus a
predetermined amount based on the SMB command is not equal to the data
size.\\
\hline
18 & For the \texttt{Tree Connect} command (and not the
\texttt{Tree Connect AndX} command), the preprocessor has to queue
the requests up and wait for a server response to determine whether or
not an IPC share was successfully connected to (which is what the
preprocessor is interested in). Unlike the \texttt{Tree Connect AndX}
response, there is no indication in the \texttt{Tree Connect} response
as to whether the share is IPC or not. There should be under normal
circumstances no more than a few pending tree connects at a time and
the preprocessor will alert if this number is excessive.\\
\hline
19 & After a client is done writing data using the \texttt{Write*} commands,
it issues a \texttt{Read*} command to the server to tell it to send a
response to the data it has written. In this case the preprocessor is
concerned with the server response. The \texttt{Read*} request contains
the file id associated with a named pipe instance that the preprocessor
will ultimately send the data to. The server response, however, does not
contain this file id, so it need to be queued with the request and
dequeued with the response. If multiple \texttt{Read*} requests are sent
to the server, they are responded to in the order they were sent. There
should be under normal circumstances no more than a few pending
\texttt{Read*} requests at a time and the preprocessor will alert if this
number is excessive.\\
\hline
20 & The preprocessor will alert if the number of chained commands in a
single request is greater than or equal to the configured amount
(default is 3).\\
\hline
21 & With \texttt{AndX} command chaining it is possible to chain multiple
\texttt{Session Setup AndX} commands within the same request. There is,
however, only one place in the SMB header to return a login handle
(or Uid). Windows does not allow this behavior, however Samba does. This
is anomalous behavior and the preprocessor will alert if it happens.\\
\hline
22 & With \texttt{AndX} command chaining it is possible to chain multiple
\texttt{Tree Connect AndX} commands within the same request. There is,
however, only one place in the SMB header to return a tree handle
(or Tid). Windows does not allow this behavior, however Samba does. This
is anomalous behavior and the preprocessor will alert if it happens.\\
\hline
23 & When a \texttt{Session Setup AndX} request is sent to the server, the
server responds (if the client successfully authenticates) which a user
id or login handle. This is used by the client in subsequent requests to
indicate that it has authenticated. A \texttt{Logoff AndX} request is
sent by the client to indicate it wants to end the session and invalidate
the login handle. With commands that are chained after a
\texttt{Session Setup AndX} request, the login handle returned by the
server is used for the subsequent chained commands. The combination of a
\texttt{Session Setup AndX} command with a chained \texttt{Logoff AndX}
command, essentially logins in and logs off in the same request and is
anomalous behavior. The preprocessor will alert if it sees this.\\
\hline
24 & A \texttt{Tree Connect AndX} command is used to connect to a share. The
\texttt{Tree Disconnect} command is used to disconnect from that share.
The combination of a \texttt{Tree Connect AndX} command with a chained
\texttt{Tree Disconnect} command, essentially connects to a share and
disconnects from the same share in the same request and is anomalous
behavior. The preprocessor will alert if it sees this.\\
\hline
25 & An \texttt{Open AndX} or \texttt{Nt Create AndX} command is used to
open/create a file or named pipe. (The preprocessor is only interested in
named pipes as this is where DCE/RPC requests are written to.) The
\texttt{Close} command is used to close that file or named pipe. The
combination of a \texttt{Open AndX} or \texttt{Nt Create AndX} command
with a chained \texttt{Close} command, essentially opens and closes the
named pipe in the same request and is anomalous behavior. The
preprocessor will alert if it sees this.\\
\hline
26 & The preprocessor will alert if it sees any of the invalid SMB shares
configured. It looks for a \texttt{Tree Connect} or
\texttt{Tree Connect AndX} to the share.\\
\hline
48 & The preprocessor will alert if a data count for a Core dialect write
command is zero.\\
\hline
49 & For some of the Core dialect commands such as \texttt{Write} and
\texttt{Read}, there are two data count fields, one in the main command
header and one in the data format section. If these aren't the same, the
preprocessor will alert.\\
\hline
50 & In the initial negotiation phase of an SMB session, the server in a
\texttt{Negotiate} response and the client in a \texttt{SessionSetupAndX}
request will advertise the maximum number of outstanding requests
supported. The preprocessor will alert if the lesser of the two is
exceeded.\\
\hline
51 & When a client sends a request it uses a value called the MID (multiplex
id) to match a response, which the server is supposed to echo, to a
request. If there are multiple outstanding requests with the same
MID, the preprocessor will alert.\\
\hline
52 & In the \texttt{Negotiate} request a client gives a list of SMB dialects it
supports, normally in order from least desirable to most desirable
and the server responds with the index of the dialect to be used on
the SMB session. Anything less than "NT LM 0.12" would be very odd
these days (even Windows 98 supports it) and the preprocessor will
alert if the client doesn't offer it as a supported dialect or the
server chooses a lesser dialect.\\
\hline
53 & There are a number of commands that are considered deprecated and/or
obsolete by Microsoft (see MS-CIFS and MS-SMB). If the preprocessor
detects the use of a deprecated/obsolete command used it will alert.\\
\hline
54 & There are some commands that can be used that can be considered unusual
in the context they are used. These include some of the transaction
commands such as:
\texttt{SMB\_COM\_TRANSACTION / TRANS\_READ\_NMPIPE}
\texttt{SMB\_COM\_TRANSACTION / TRANS\_WRITE\_NMPIPE}
\texttt{SMB\_COM\_TRANSACTION2 / TRANS2\_OPEN2}
\texttt{SMB\_COM\_NT\_TRANSACT / NT\_TRANSACT\_CREATE}
The preprocessor will alert if it detects unusual use of a command.\\
\hline
55 & Transaction commands have a setup count field that indicates the
number of 16bit words in the transaction setup. The preprocessor
will alert if the setup count is invalid for the transaction
command / sub command.\\
\hline
56 & There can be only one Negotiate transaction per session and it is the
first thing a client and server do to determine the SMB dialect each
supports. The preprocessor will alert if the client attempts multiple
dialect negotiations.\\
\hline
57 & Malware will often set a file's attributes to ReadOnly/Hidden/System if
it is successful in installing itself as a Windows service or is able to
write an autorun.inf file since it doesn't want the user to see the file
and the default folder options in Windows is not to display Hidden files.
The preprocessor will alert if it detects a client attempt to set a
file's attributes to ReadOnly/Hidden/System.\\
\hline
\end{longtable}
\end{itemize}
\textit{Connection-oriented DCE/RPC events}
\begin{itemize}
\item[]
\begin{longtable}[h]{|r|p{13.5cm}|}
\hline
SID & Description\\
\hline
\hline
27 & The preprocessor will alert if the connection-oriented DCE/RPC major
version contained in the header is not equal to 5.\\
\hline
28 & The preprocessor will alert if the connection-oriented DCE/RPC minor
version contained in the header is not equal to 0.\\
\hline
29 & The preprocessor will alert if the connection-oriented DCE/RPC PDU type
contained in the header is not a valid PDU type.\\
\hline
30 & The preprocessor will alert if the fragment length defined in the header
is less than the size of the header.\\
\hline
31 & The preprocessor will alert if the remaining fragment length is less
than the remaining packet size.\\
\hline
32 & The preprocessor will alert if in a \texttt{Bind} or
\texttt{Alter Context} request, there are no context items specified.\\
\hline
33 & The preprocessor will alert if in a \texttt{Bind} or
\texttt{Alter Context} request, there are no transfer syntaxes to go with
the requested interface.\\
\hline
34 & The preprocessor will alert if a non-last fragment is less than the size
of the negotiated maximum fragment length. Most evasion techniques try
to fragment the data as much as possible and usually each fragment comes
well below the negotiated transmit size.\\
\hline
35 & The preprocessor will alert if a fragment is larger than the maximum
negotiated fragment length.\\
\hline
36 & The byte order of the request data is determined by the Bind in
connection-oriented DCE/RPC for Windows. It is anomalous behavior
to attempt to change the byte order mid-session.\\
\hline
37 & The call id for a set of fragments in a fragmented request should stay
the same (it is incremented for each complete request). The preprocessor
will alert if it changes in a fragment mid-request.\\
\hline
38 & The operation number specifies which function the request is calling on
the bound interface. If a request is fragmented, this number should stay
the same for all fragments. The preprocessor will alert if the opnum
changes in a fragment mid-request.\\
\hline
39 & The context id is a handle to a interface that was bound to. If a
request if fragmented, this number should stay the same for all
fragments. The preprocessor will alert if the context id changes in a
fragment mid-request.\\
\hline
\end{longtable}
\end{itemize}
\textit{Connectionless DCE/RPC events}
\begin{itemize}
\item[]
\begin{longtable}{|r|p{13.5cm}|}
\hline
SID & Description\\
\hline
\hline
40 & The preprocessor will alert if the connectionless DCE/RPC major version
is not equal to 4.\\
\hline
41 & The preprocessor will alert if the connectionless DCE/RPC PDU type is
not a valid PDU type.\\
\hline
42 & The preprocessor will alert if the packet data length is less than the
size of the connectionless header.\\
\hline
43 & The preprocessor will alert if the sequence number uses in a request is
the same or less than a previously used sequence number on the session.
In testing, wrapping the sequence number space produces strange behavior
from the server, so this should be considered anomalous behavior.\\
\hline
\end{longtable}
\end{itemize}
\subsubsection{Rule Options}
New rule options are supported by enabling the \texttt{dcerpc2} preprocessor:
\begin{itemize}
\item[]
\begin{verbatim}
dce_iface
dce_opnum
dce_stub_data
\end{verbatim}
\end{itemize}
New modifiers to existing \texttt{byte\_test} and \texttt{byte\_jump} rule
options:
\begin{itemize}
\item[]
\begin{verbatim}
byte_test:dce
byte_jump:dce
\end{verbatim}
\end{itemize}
\texttt{dce\_iface}
\label{dcerpc2:dce_iface}
\begin{itemize}
\item[] For DCE/RPC based rules it has been necessary to set flow-bits based on
a client bind to a service to avoid false positives. It is necessary for a
client to bind to a service before being able to make a call to it. When a
client sends a bind request to the server, it can, however, specify one or more
service interfaces to bind to. Each interface is represented by a UUID. Each
interface UUID is paired with a unique index (or context id) that future
requests can use to reference the service that the client is making a call to.
The server will respond with the interface UUIDs it accepts as valid and will
allow the client to make requests to those services. When a client makes a
request, it will specify the context id so the server knows what service the
client is making a request to. Instead of using flow-bits, a rule can simply
ask the preprocessor, using this rule option, whether or not the client has
bound to a specific interface UUID and whether or not this client request is
making a request to it. This can eliminate false positives where more than one
service is bound to successfully since the preprocessor can correlate the bind
UUID to the context id used in the request. A DCE/RPC request can specify
whether numbers are represented as big endian or little endian. The
representation of the interface UUID is different depending on the endianness
specified in the DCE/RPC previously requiring two rules - one for big endian
and one for little endian. The preprocessor eliminates the need for two rules
by normalizing the UUID. An interface contains a version. Some versions of an
interface may not be vulnerable to a certain exploit. Also, a DCE/RPC request
can be broken up into 1 or more fragments. Flags (and a field in the
connectionless header) are set in the DCE/RPC header to indicate whether the
fragment is the first, a middle or the last fragment. Many checks for data in
the DCE/RPC request are only relevant if the DCE/RPC request is a first
fragment (or full request), since subsequent fragments will contain data deeper
into the DCE/RPC request. A rule which is looking for data, say 5 bytes into
the request (maybe it's a length field), will be looking at the wrong data on a
fragment other than the first, since the beginning of subsequent fragments are
already offset some length from the beginning of the request. This can be a
source of false positives in fragmented DCE/RPC traffic. By default it is
reasonable to only evaluate if the request is a first fragment (or full
request). However, if the \texttt{any\_frag} option is used to specify
evaluating on all fragments.\\
\textit{Syntax}
\footnotesize
\begin{verbatim}
dce_iface:[, ][, any_frag];
uuid = hexlong '-' hexshort '-' hexshort '-' 2hexbyte '-' 6hexbyte
hexlong = 4hexbyte
hexshort = 2hexbyte
hexbyte = 2HEXDIGIT
operator = '<' | '>' | '=' | '!'
version = 0-65535
\end{verbatim}
\normalsize
\textit{Examples}
\footnotesize
\begin{verbatim}
dce_iface:4b324fc8-1670-01d3-1278-5a47bf6ee188;
dce_iface:4b324fc8-1670-01d3-1278-5a47bf6ee188, <2;
dce_iface:4b324fc8-1670-01d3-1278-5a47bf6ee188, any_frag;
dce_iface:4b324fc8-1670-01d3-1278-5a47bf6ee188, =1, any_frag;
\end{verbatim}
\normalsize
This option is used to specify an interface UUID. Optional arguments are an
interface version and operator to specify that the version be less than
('\textless'), greater than ('\textgreater'), equal to ('=') or not equal to
('!') the version specified. Also, by default the rule will only be evaluated
for a first fragment (or full request, i.e. not a fragment) since most rules
are written to start at the beginning of a request. The \texttt{any\_frag}
argument says to evaluate for middle and last fragments as well. This option
requires tracking client \texttt{Bind} and \texttt{Alter Context} requests as
well as server \texttt{Bind Ack} and \texttt{Alter Context} responses for
connection-oriented DCE/RPC in the preprocessor. For each \texttt{Bind} and
\texttt{Alter Context} request, the client specifies a list of interface UUIDs
along with a handle (or context id) for each interface UUID that will be used
during the DCE/RPC session to reference the interface. The server response
indicates which interfaces it will allow the client to make requests to - it
either accepts or rejects the client's wish to bind to a certain interface.
This tracking is required so that when a request is processed, the context id
used in the request can be correlated with the interface UUID it is a handle
for.
\texttt{hexlong} and \texttt{hexshort} will be specified and interpreted to be
in big endian order (this is usually the default way an interface UUID will be
seen and represented). As an example, the following Messenger interface UUID as
taken off the wire from a little endian \texttt{Bind} request:
\begin{verbatim}
|f8 91 7b 5a 00 ff d0 11 a9 b2 00 c0 4f b6 e6 fc|
\end{verbatim}
must be written as:
\begin{verbatim}
5a7b91f8-ff00-11d0-a9b2-00c04fb6e6fc
\end{verbatim}
The same UUID taken off the wire from a big endian \texttt{Bind} request:
\begin{verbatim}
|5a 7b 91 f8 ff 00 11 d0 a9 b2 00 c0 4f b6 e6 fc|
\end{verbatim}
must be written the same way:
\begin{verbatim}
5a7b91f8-ff00-11d0-a9b2-00c04fb6e6fc
\end{verbatim}
This option matches if the specified interface UUID matches the interface UUID
(as referred to by the context id) of the DCE/RPC request and if supplied, the
version operation is true. This option will not match if the fragment is not a
first fragment (or full request) unless the \texttt{any\_frag} option is
supplied in which case only the interface UUID and version need match. Note
that a defragmented DCE/RPC request will be considered a full request.
\begin{note}
Using this rule option will automatically insert fast pattern contents into
the fast pattern matcher. For UDP rules, the interface UUID, in both big and
little endian format will be inserted into the fast pattern matcher. For TCP
rules, (1) if the rule option \texttt{flow:to\_server|from\_client} is used, $|$05 00 00$|$
will be inserted into the fast pattern matcher, (2) if the rule option
\texttt{flow:from\_server|to\_client} is used, $|$05 00 02$|$ will be inserted into the
fast pattern matcher and (3) if the flow isn't known, $|$05 00$|$ will be inserted
into the fast pattern matcher. Note that if the rule already has content rule
options in it, the best (meaning longest) pattern will be used. If a content
in the rule uses the \texttt{fast\_pattern} rule option, it will unequivocally be used
over the above mentioned patterns.
\end{note}
\end{itemize}
\texttt{dce\_opnum}
\label{dcerpc2:dce_opnum}
\begin{itemize}
\item[] The opnum represents a specific function call to an interface. After is
has been determined that a client has bound to a specific interface and is
making a request to it (see above - \texttt{dce\_iface}) usually we want to
know what function call it is making to that service. It is likely that an
exploit lies in the particular DCE/RPC function call.\\
\textit{Syntax}
\footnotesize
\begin{verbatim}
dce_opnum:;
opnum-list = opnum-item | opnum-item ',' opnum-list
opnum-item = opnum | opnum-range
opnum-range = opnum '-' opnum
opnum = 0-65535
\end{verbatim}
\normalsize
\textit{Examples}
\footnotesize
\begin{verbatim}
dce_opnum:15;
dce_opnum:15-18;
dce_opnum:15, 18-20;
dce_opnum:15, 17, 20-22;
\end{verbatim}
\normalsize
This option is used to specify an opnum (or operation number), opnum range or
list containing either or both opnum and/or opnum-range. The opnum of a DCE/RPC
request will be matched against the opnums specified with this option. This
option matches if any one of the opnums specified match the opnum of the
DCE/RPC request.
\end{itemize}
\texttt{dce\_stub\_data}
\label{dcerpc2:dce_stub_data}
\begin{itemize}
\item[] Since most netbios rules were doing protocol decoding only to get to
the DCE/RPC stub data, i.e. the remote procedure call or function call data,
this option will alleviate this need and place the cursor at the beginning of
the DCE/RPC stub data. This reduces the number of rule option checks and the
complexity of the rule.
This option takes no arguments.\\
\textit{Example}
\footnotesize
\begin{verbatim}
dce_stub_data;
\end{verbatim}
\normalsize
This option is used to place the cursor (used to walk the packet payload in
rules processing) at the beginning of the DCE/RPC stub data, regardless of
preceding rule options. There are no arguments to this option. This option
matches if there is DCE/RPC stub data.
The cursor is moved to the beginning of the stub data. All ensuing rule
options will be considered "sticky" to this buffer. The first rule option
following \texttt{dce\_stub\_data} should use absolute location modifiers if it is
position-dependent. Subsequent rule options should use a relative modifier if
they are meant to be relative to a previous rule option match in the stub data
buffer. Any rule option that does not specify a relative modifier will be
evaluated from the start of the stub data buffer. To leave the stub data buffer
and return to the main payload buffer, use the \texttt{pkt\_data} rule option -
see section \ref{sub:pkt_data} for details).
\end{itemize}
\texttt{byte\_test} and \texttt{byte\_jump} with \texttt{dce}\label{dcerpc2:byte_test_jump}
\begin{itemize}
\item[] A DCE/RPC request can specify whether numbers are represented in big or
little endian. These rule options will take as a new argument \texttt{dce} and
will work basically the same as the normal
\texttt{byte\_test}/\texttt{byte\_jump}, but since the DCE/RPC preprocessor
will know the endianness of the request, it will be able to do the correct
conversion.
\texttt{byte\_test}
\begin{itemize}
\item[] \textit{Syntax}
\footnotesize
\begin{verbatim}
byte_test:, [!], , [, relative], dce;
convert = 1 | 2 | 4 (only with option "dce")
operator = '<' | '=' | '>' | '<=' | '>=' | '&' | '^'
value = 0 - 4294967295
offset = -65535 to 65535
\end{verbatim}
\normalsize
\textit{Examples}
\footnotesize
\begin{verbatim}
byte_test:4, >, 35000, 0, relative, dce;
byte_test:2, !=, 2280, -10, relative, dce;
\end{verbatim}
\normalsize
When using the \texttt{dce} argument to a \texttt{byte\_test}, the following
normal \texttt{byte\_test} arguments will not be allowed: \texttt{big},
\texttt{little}, \texttt{string}, \texttt{hex}, \texttt{dec} and \texttt{oct}.
\end{itemize}
\texttt{byte\_jump}
\begin{itemize}
\item[] \textit{Syntax}
\footnotesize
\begin{verbatim}
byte_jump:, [, relative][, multiplier ] \
[, align][, post_offset ], dce;
convert = 1 | 2 | 4 (only with option "dce")
offset = -65535 to 65535
mult_value = 0 - 65535
adjustment_value = -65535 to 65535
\end{verbatim}
\normalsize
\textit{Example}
\footnotesize
\begin{verbatim}
byte_jump:4,-4,relative,align,multiplier 2,post_offset -4,dce;
\end{verbatim}
\normalsize
When using the \texttt{dce} argument to a \texttt{byte\_jump}, the following
normal \texttt{byte\_jump} arguments will not be allowed: \texttt{big},
\texttt{little}, \texttt{string}, \texttt{hex}, \texttt{dec}, \texttt{oct} and
\texttt{from\_beginning}.
\end{itemize}
\end{itemize}
\textit{Example of rule complexity reduction}
\begin{itemize}
\item[] The following two rules using the new rule options replace 64 (set and
isset flowbit) rules that are necessary if the new rule options are not used:
\footnotesize
\begin{verbatim}
alert tcp $EXTERNAL_NET any -> $HOME_NET [135,139,445,593,1024:] \
(msg:"dns R_Dnssrv funcs2 overflow attempt"; flow:established,to_server; \
dce_iface:50abc2a4-574d-40b3-9d66-ee4fd5fba076; dce_opnum:0-11; dce_stub_data; \
pcre:"/^.{12}(\x00\x00\x00\x00|.{12})/s"; byte_jump:4,-4,relative,align,dce; \
byte_test:4,>,256,4,relative,dce; reference:bugtraq,23470; reference:cve,2007-1748; \
classtype:attempted-admin; sid:1000068;)
alert udp $EXTERNAL_NET any -> $HOME_NET [135,1024:] \
(msg:"dns R_Dnssrv funcs2 overflow attempt"; flow:established,to_server; \
dce_iface:50abc2a4-574d-40b3-9d66-ee4fd5fba076; dce_opnum:0-11; dce_stub_data; \
pcre:"/^.{12}(\x00\x00\x00\x00|.{12})/s"; byte_jump:4,-4,relative,align,dce; \
byte_test:4,>,256,4,relative,dce; reference:bugtraq,23470; reference:cve,2007-1748; \
classtype:attempted-admin; sid:1000069;)
\end{verbatim}
\normalsize
\end{itemize}
\subsection{Sensitive Data Preprocessor}
\label{sub:sensitive_data}
The Sensitive Data preprocessor is a Snort module that performs detection and
filtering of Personally Identifiable Information (PII). This information
includes credit card numbers, U.S. Social Security numbers, and email addresses.
A limited regular expression syntax is also included for defining your own PII.
\subsubsection{Dependencies}
The Stream5 preprocessor must be enabled for the Sensitive Data preprocessor
to work.
\subsubsection{Preprocessor Configuration}
Sensitive Data configuration is split into two parts: the preprocessor config,
and the rule options. The preprocessor config starts with:
\begin{verbatim}
preprocessor sensitive_data:
\end{verbatim}
\textit{Option syntax}
\begin{itemize}
\item[]
\begin{tabular}{|l|c|c|p{6cm}|}
\hline
Option & Argument & Required & Default\\
\hline
\hline
\texttt{alert\_threshold} & \texttt{} & NO & \texttt{alert\_threshold 25}\\
\hline
\texttt{mask\_output} & NONE & NO & OFF\\
\hline
\texttt{ssn\_file} & \texttt{} & NO & OFF\\
\hline
\end{tabular}
\end{itemize}
\footnotesize
\begin{verbatim}
alert_threshold = 1 - 65535
\end{verbatim}
\normalsize
\textit{Option explanations}
\begin{itemize}
\item[] \texttt{alert\_threshold}
\begin{itemize}
\item[] The preprocessor will alert when any combination of PII are detected
in a session. This option specifies how many need to be detected before
alerting.
This should be set higher than the highest individual count in your
"sd\_pattern" rules.
\end{itemize}
\item[] \texttt{mask\_output}
\begin{itemize}
\item[] This option replaces all but the last 4 digits of a detected PII with
"X"s. This is only done on credit card \& Social Security numbers, where
an organization's regulations may prevent them from seeing unencrypted
numbers.
\end{itemize}
\item[] \texttt{ssn\_file}
\begin{itemize}
\item[] A Social Security number is broken up into 3 sections:
Area (3 digits), Group (2 digits), and Serial (4 digits).
On a monthly basis, the Social Security Administration publishes a list
of which Group numbers are in use for each Area.
These numbers can be updated in Snort by supplying a CSV file with the
new maximum Group numbers to use.
By default, Snort recognizes Social Security numbers issued up through
November 2009.
\end{itemize}
\end{itemize}
\textit{Example preprocessor config}
\begin{verbatim}
preprocessor sensitive_data: alert_threshold 25 \
mask_output \
ssn_file ssn_groups_Jan10.csv
\end{verbatim}
\subsubsection{Rule Options}
Snort rules are used to specify which PII the preprocessor should look for.
A new rule option is provided by the preprocessor:
\begin{verbatim}
sd_pattern
\end{verbatim}
This rule option specifies what type of PII a rule should detect.
\textit{Syntax}
\begin{verbatim}
sd_pattern:, ;
\end{verbatim}
\footnotesize
\begin{verbatim}
count = 1 - 255
pattern = any string
\end{verbatim}
\normalsize
\textit{Option Explanations}
\begin{itemize}
\item[] \texttt{count}
\begin{itemize}
\item[] This dictates how many times a PII pattern must be matched for an alert
to be generated. The count is tracked across all packets in a session.
\end{itemize}
\item[] \texttt{pattern}
\begin{itemize}
\item[] This is where the pattern of the PII gets specified. There are a few
built-in patterns to choose from:
\begin{itemize}
\item[] \texttt{credit\_card}
\begin{itemize}
\item[] The "credit\_card" pattern matches 15- and 16-digit credit card
numbers. These numbers may have spaces, dashes, or nothing in
between groups. This covers Visa, Mastercard, Discover, and
American Express.
Credit card numbers matched this way have their check digits
verified using the Luhn algorithm.
\end{itemize}
\item[] \texttt{us\_social}
\begin{itemize}
\item[] This pattern matches against 9-digit U.S. Social Security numbers.
The SSNs are expected to have dashes between the Area, Group, and
Serial sections.
SSNs have no check digits, but the preprocessor will check matches
against the list of currently allocated group numbers.
\end{itemize}
\item[] \texttt{us\_social\_nodashes}
\begin{itemize}
\item[] This pattern matches U.S. Social Security numbers without dashes
separating the Area, Group, and Serial sections.
\end{itemize}
\item[] \texttt{email}
\begin{itemize}
\item[] This pattern matches against email addresses.
\end{itemize}
\end{itemize}
\item[] If the pattern specified is not one of the above built-in patterns,
then it is the definition of a custom PII pattern. Custom PII types
are defined using a limited regex-style syntax. The following
special characters and escape sequences are supported:
\item[]
\begin{tabular}{|c|p{10cm}|}
\hline
\texttt{\textbackslash d} & matches any digit\\
\hline
\texttt{\textbackslash D} & matches any non-digit\\
\hline
\texttt{\textbackslash l} & matches any letter\\
\hline
\texttt{\textbackslash L} & matches any non-letter\\
\hline
\texttt{\textbackslash w} & matches any alphanumeric character\\
\hline
\texttt{\textbackslash W} & matches any non-alphanumeric character\\
\hline
\texttt{\{num\}} & used to repeat a character or escape sequence "num" times.
example: "\d\{3\}" matches 3 digits.\\
\hline
\texttt{?} & makes the previous character or escape sequence optional.
example: " ?" matches an optional space.
This behaves in a greedy manner.\\
\hline
\texttt{\textbackslash\textbackslash} & matches a backslash\\
\hline
\textbackslash \{, \textbackslash \} & matches \{ and \}\\
\hline
\textbackslash ? & matches a question mark.\\
\hline
\end{tabular}
\item[] Other characters in the pattern will be matched literally.
\begin{note}
Unlike PCRE, \texttt{\textbackslash w} in this rule option does NOT match underscores.
\end{note}
\end{itemize}
\item[] \textit{Examples}
\begin{verbatim}
sd_pattern: 2,us_social;
\end{verbatim}
Alerts when 2 social security numbers (with dashes) appear in a session.
\begin{verbatim}
sd_pattern: 5,(\d{3})\d{3}-\d{4};
\end{verbatim}
Alerts on 5 U.S. phone numbers, following the format (123)456-7890
Whole rule example:
\begin{verbatim}
alert tcp $HOME_NET $HIGH_PORTS -> $EXTERNAL_NET $SMTP_PORTS \
(msg:"Credit Card numbers sent over email"; gid:138; sid:1000; rev:1; \
sd_pattern:4,credit_card; metadata:service smtp;)
\end{verbatim}
\item[] \textit{Caveats}
\begin{itemize}
\item[] \texttt{sd\_pattern} is not compatible with other rule options. Trying to use
other rule options with \texttt{sd\_pattern} will result in an error message.
Rules using \texttt{sd\_pattern} must use GID 138.
\end{itemize}
\end{itemize}
\subsection{Normalizer}
When operating Snort in inline mode, it is helpful to normalize packets to help
minimize the chances of evasion.
To enable the normalizer, use the following when configuring Snort:
\begin{verbatim}
./configure --enable-normalizer
\end{verbatim}
The normalize preprocessor is activated via the conf as outlined below. There
are also many new preprocessor and decoder rules to alert on or drop packets
with "abnormal" encodings.
Note that in the following, fields are cleared only if they are non-zero.
Also, normalizations will only be enabled if the selected DAQ supports packet
replacement and is operating in inline mode.
If a policy is configured for \texttt{inline\_test} or passive mode, any
normalization statements in the policy config are ignored.
\subsubsection{IP4 Normalizations}
IP4 normalizations are enabled with:
\begin{verbatim}
preprocessor normalize_ip4: [df], [rf], [tos], [trim]
\end{verbatim}
Base normalizations enabled with "preprocessor \texttt{normalize\_ip4}" include:
\begin{itemize}
\item
TTL normalization if enabled (explained below).
\item
Clear the differentiated services field (formerly TOS).
\item
NOP all options octets.
\end{itemize}
Optional normalizations include:
\begin{itemize}
\item \texttt{df}
don't fragment: clear this bit on incoming packets.
\item \texttt{rf}
reserved flag: clear this bit on incoming packets.
\item \texttt{tos}
type of service (differentiated services): clear this byte.
\item \texttt{trim}
truncate packets with excess payload to the datagram length specified in the
IP header + the layer 2 header (e.g. ethernet), but don't truncate below minimum
frame length. This is automatically disabled if the DAQ can't inject packets.
\end{itemize}
\subsubsection{IP6 Normalizations}
IP6 normalizations are enabled with:
\begin{verbatim}
preprocessor normalize_ip6
\end{verbatim}
Base normalizations enabled with "preprocessor \texttt{normalize\_ip6}" include:
\begin{itemize}
\item
Hop limit normalization if enabled (explained below).
\item
NOP all options octets in hop-by-hop and destination options extension headers.
\end{itemize}
\subsubsection{ICMP4/6 Normalizations}
ICMP4 and ICMP6 normalizations are enabled with:
\begin{verbatim}
preprocessor normalize_icmp4
preprocessor normalize_icmp6
\end{verbatim}
Base normalizations enabled with the above include:
\begin{itemize}
\item
Clear the code field in echo requests and replies.
\end{itemize}
\subsubsection{TCP Normalizations}
TCP normalizations are enabled with:
\begin{verbatim}
preprocessor normalize_tcp: \
[ips], [urp], [trim], \
[ecn ]