Ethical Hacking

Learn to find vulnerabilities before the bad guys do! Gain real world hands on hacking experience in our state of the art hacking lab. Course designed and taught by expert instructors with years of penetration testing experience. 12 student maximum in every class. Certification attempt included in every package.
Computer Forensics Training at InfoSec Institute

Gain the in-demand skills of a certified computer examiner, learn to recover trace data left behind by fraud, theft, and cybercrime perpetrators. Discover the source of computer crime and abuse at your organization so that it never happens again. All of our class sizes are guaranteed to be 12 students or less to facilitate one-on-one interaction with one of our expert instructors.




Network Security Snort-Users
[Top] [All Lists]

Re: [Snort-users] Question on port lists and negation

Subject: Re: [Snort-users] Question on port lists and negation
Date: Tue, 09 Oct 2007 23:06:30 -0400


Your large table of operations confuses me greatly, but it may be
because I don't understand your syntax.

(80 == !(80 || 80))     :       0
!(80 == (80 || 80))     :       1

What are those two supposed to represent, logically speaking, and how do
they differ?

From my C-code centered view I read (80 == !(80 || 80)) as:

(80 "is equal to" not ( 80 BOOLEAN OR 80))

Which is nonsense. You don't boolean OR together two integers. You can,
but it's pointless nonsense.

using [80,81] in for a dport rule would be read as:

match if dport is equal to 80 or dport is equal to 81.

Which I would express as:

(dport == 80 || dport == 81)


The intent of the table was to show the various operations, simple as
that. While much of it does not make sense it was sufficient to
illustrate the point while keeping it contextual, at lest I thought. I
missed the mark on that one. Here is a verbose version of what I
intended to get across.

I attached the redone code too. I included every method (well most),
including the ones that do not make logical sense. It's not uncommon for
a type to cause an | instead of an || or to use an & instead of an | etc...

For a of 80, b of 80, t of 80
========================================
(a|b)                           : 80
(a||b)                          : 1
!(a|b)                          : 0
!(a||b)                         : 0
(!a|!b)                         : 0
(!a||!b)                        : 0
(a|b)                           : 80
t == (a|b)                      : 1
t == !(a|b)                     : 0
(t == a || t == b)              : 1
!(t == a || t == b)             : 0
(!(t == a) || !(t == b))        : 0
(t == a && t == b)              : 1
!(t == a && t == b)             : 0
(!(t == a) && !(t == b))        : 0



For a of 80, b of 81, t of 80
========================================
(a|b)                           : 81
(a||b)                          : 1
!(a|b)                          : 0
!(a||b)                         : 0
(!a|!b)                         : 0
(!a||!b)                        : 0
(a|b)                           : 81
t == (a|b)                      : 0
t == !(a|b)                     : 0
(t == a || t == b)              : 1
!(t == a || t == b)             : 0
(!(t == a) || !(t == b))        : 1
(t == a && t == b)              : 0
!(t == a && t == b)             : 1
(!(t == a) && !(t == b))        : 0



For a of 80, b of 81, t of 8000
========================================
(a|b)                           : 81
(a||b)                          : 1
!(a|b)                          : 0
!(a||b)                         : 0
(!a|!b)                         : 0
(!a||!b)                        : 0
(a|b)                           : 81
t == (a|b)                      : 0
t == !(a|b)                     : 0
(t == a || t == b)              : 0
!(t == a || t == b)             : 1
(!(t == a) || !(t == b))        : 1
(t == a && t == b)              : 0
!(t == a && t == b)             : 1
(!(t == a) && !(t == b))        : 1


I'll be sure to spend more time on writing replies to there topics.
And... I've still not had time to look at the code to see what it is
really doing, now I'm just too curious. I'll try to get to that
tomorrow. My gut tells me it is in the negation of lists but you and the
other Matt have different opinions. Testing and/or code are the only
true ways to provide the real answer.

#include <stdio.h>
#include <sys/types.h>

void test_it(int t, int a,int b);

int main (int argc, char const *argv[])
{
  int a = 80;
  int b = 80;
  int t = 80;

  test_it(t,a,b);

  a = 80;
  b = 81;
  t = 80;

  test_it(t,a,b);

  a = 80;
  b = 81;
  t = 8000;

  test_it(t,a,b);

  return 0;
}

void test_it(int t, int a,int b) {
  printf("\n\n\n");
  printf("For a of %u, b of %u, t of %u\n", a,b,t);
  printf("========================================\n");
  printf("(a|b)\t\t\t\t: %u\n", (a|b));
  printf("(a||b)\t\t\t\t: %u\n", (a||b));
  printf("!(a|b)\t\t\t\t: %u\n", !(a|b));
  printf("!(a||b)\t\t\t\t: %u\n", !(a||b));
  printf("(!a|!b)\t\t\t\t: %u\n", (!a|!b));
  printf("(!a||!b)\t\t\t: %u\n", (!a||!b));
  printf("(a|b)\t\t\t\t: %u\n", (a|b));
  printf("t == (a|b)\t\t\t: %u\n", t == (a|b));
  printf("t == !(a|b)\t\t\t: %u\n", t == !(a|b));
  printf("(t == a || t == b)\t\t: %u\n", (t == a || t == b));
  printf("!(t == a || t == b)\t\t: %u\n", !(t == a || t == b));
  printf("(!(t == a) || !(t == b))\t: %u\n", (!(t == a) || !(t == b)));
  printf("(t == a && t == b)\t\t: %u\n", (t == a && t == b));
  printf("!(t == a && t == b)\t\t: %u\n", !(t == a && t == b));
  printf("(!(t == a) && !(t == b))\t: %u\n", (!(t == a) && !(t == b)));
   
}

-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems?  Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >> http://get.splunk.com/
_______________________________________________
Snort-users mailing list
Snort-users@lists.sourceforge.net
Go to this URL to change user options or unsubscribe:
https://lists.sourceforge.net/lists/listinfo/snort-users
Snort-users list archive:
http://www.geocrawler.com/redir-sf.php3?list=snort-users
<Prev in Thread] Current Thread [Next in Thread>