Giter Site home page Giter Site logo

rtmpsnoop's Introduction

rtmpSnoop - The RTMP sniffer!

rtmpSnoop lets you to sniff RTMP streams from live TV, online channels and straming services and dump the RTMP properties in many formats. You can analyse both live and dumped streams.

You can take a look at the GitHub project page

Features

  • Live sniffing from one ore more interfaces
  • Read dumped streams from PCAP files
  • Dump the RTMP properties in more formats (simple list, m3u entry or rtmpdump syntax)
  • Easy to use and cross platform!

Requirements

rtmpSnoop works both on Windows and Unix.
To run it you need only python (at least 2.7 version) and the scapy module.

Linux Installation

  • Debian/Ubuntu:
    apt-get install python-scapy

  • RedHat/Centos:
    yum install scapy.noarch
    yum install python-argparse.noarch

Mac Installation

Unzip and cd in to dnet file then

 CFLAGS='-arch i386 -arch x86_64' ./configure --prefix=/usr
 archargs='-arch i386 -arch x86_64' make
 sudo make install
 cd python
 sudo python setup.py install

Windows Installation
Follow this guide to install scapy module on windows: http://www.secdev.org/projects/scapy/doc/installation.html#windows

Get the code

git clone https://github.com/andreafabrizi/rtmpSnoop.git

Usage

The syntax is quite simple:

$python rtmpSnoop.py -h
usage: rtmpSnoop.py [-h] [-i DEVICE | -f PCAPFILE]
                    [--out-list | --out-m3u | --out-rtmpdump] [-p PORT]
                    [--one] [--quiet] [--debug]

rtmpSnoop lets you to grab the RTMP properties from live or dumped streams.

optional arguments:
  -h, --help      show this help message and exit

Input:
  -i DEVICE       Device to sniff on (Default: sniffs on all devices)
  -f PCAPFILE     PCAP file to read from

Output format:
  --out-list      Prints the RTMP data as list (Default)
  --out-m3u       Prints the RTMP data as m3u entry
  --out-rtmpdump  Prints the RTMP data in the rtmpdump format

Additional options:
  -p PORT         RTMP port (Default: sniffs on all ports)
  --one           Quit after the first stream found
  --quiet         Doesn't print anything except the RTMP output
  --debug         Enable DEBUG mode

Examples

Sniffing on all interfaces, without filters:

sudo python rtmpSnoop.py

Sniffing on eth0, and looking for RTMP streams on port 1935 only:

sudo python rtmpSnoop.py -i eth0 -p 1935

Reading streams from PCAP file:

python rtmpSnoop.py -f dump/tv.pcap

Output formats

Default list:

url: rtmp://192.168.1.1/live/channel?id=123
app: live
pageUrl: http://www.test.com/embedded/channel/1/500/380
swfUrl: http://www.test.eu/static/player.swf
tcUrl: rtmp://192.168.1.1/live
playPath: channel?id=123
flashVer: LNX 11,7,700,203
extra: S:OK 

m3u entry:

#EXTINF:0,1, Stream
rtmp://192.168.1.1/live/channel?id=12345 app=live pageUrl=http://www.test.eu/embedded/channel/1/500/380 
swfUrl=http://www.test.eu/static/player.swf tcUrl=rtmp://192.168.1.1/live playPath=channel?id=123 conn=S:OK live=1

rtmpdump syntax:

rtmpdump -r 'rtmp://192.168.1.1/live/channel?id=12345' -a 'live' -t 'rtmp://192.168.1.1/live' 
-y 'channel?id=12345' -W 'http://www.test.eu/scripts/player.swf' -p 'http://www.test.eu/embedded/channel/1/500/380' 
-f 'LNX 11,7,700,203' -C S:OK  --live -o stream.flv

Donations

If you want to support this project, please consider donating:

rtmpsnoop's People

Contributors

andreafabrizi avatar burlito avatar moshekaplan avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

rtmpsnoop's Issues

missing GUI

Hi, I belive it can be good idea to make GUI (for start maybe just with capability to sniff rtmp streams and download them via rtmpdump). What do you think? If you want i can do it.

*** Error parsing the RTMP stream: chr() arg not in range(256)

I'm getting the following error when trying to grab some stream URLs

*** Error parsing the RTMP stream: chr() arg not in range(256)

probably b/c the URL contains unicode characters.

I'm not a big python guy but would it be possible for the script to use unichr instead of chr ?

Thanks !

Gabriel

Can't detect my ethernet adapter on Windows

"ValueError: Unknown network interface None"

That's the error message I keep getting on Windows when I try to start the app. And I'm not sure how I can get name for my ethernet adapter either.

Mac: Installation failure

While installing on Mac (running Elcapitan image), facing the below issue with the last step ("sudo python setup.py install"):

running install
running build
running build_ext
building 'dnet' extension
cc -fno-strict-aliasing -fno-common -dynamic -g -Os -pipe -fno-common -fno-strict-aliasing -fwrapv -DENABLE_DTRACE -DMACOSX -DNDEBUG -Wall -Wstrict-prototypes -Wshorten-64-to-32 -DNDEBUG -g -fwrapv -Os -Wall -Wstrict-prototypes -DENABLE_DTRACE -arch i386 -arch x86_64 -pipe -I../include -I/System/Library/Frameworks/Python.framework/Versions/2.6/include/python2.6 -c ./dnet.c -o build/temp.macosx-10.11-intel-2.6/./dnet.o
./dnet.c:575:40: warning: passing 'uint8_t [6]' to parameter of type 'const char *' converts between pointers to integer types with different sign
      [-Wpointer-sign]
  __pyx_2 = PyString_FromStringAndSize(__pyx_v_ea.data,6); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 120; goto __pyx_L1;}
                                       ^~~~~~~~~~~~~~~
/System/Library/Frameworks/Python.framework/Versions/2.6/include/python2.6/stringobject.h:62:63: note: passing argument to parameter here
PyAPI_FUNC(PyObject *) PyString_FromStringAndSize(const char *, Py_ssize_t);
                                                              ^
./dnet.c:607:36: warning: passing 'uint8_t [6]' to parameter of type 'char (*)' converts between pointers to integer types with different sign
      [-Wpointer-sign]
  __pyx_1 = __pyx_f_4dnet___memcpy(__pyx_v_ea.data,__pyx_v_value,6); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 130; goto __pyx_L1;}
                                   ^~~~~~~~~~~~~~~
./dnet.c:392:48: note: passing argument to parameter '__pyx_v_dst' here
static PyObject *__pyx_f_4dnet___memcpy(char (*__pyx_v_dst),PyObject *__pyx_v_src,int __pyx_v_n) {
                                               ^
./dnet.c:685:3: warning: unused label '__pyx_L1' [-Wunused-label]
  __pyx_L1:;
  ^~~~~~~~~
./dnet.c:703:36: warning: passing 'uint8_t [6]' to parameter of type 'char (*)' converts between pointers to integer types with different sign
      [-Wpointer-sign]
  __pyx_1 = __pyx_f_4dnet___memcpy(__pyx_v_ea.data,__pyx_v_buf,6); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 151; goto __pyx_L1;}
                                   ^~~~~~~~~~~~~~~
./dnet.c:392:48: note: passing argument to parameter '__pyx_v_dst' here
static PyObject *__pyx_f_4dnet___memcpy(char (*__pyx_v_dst),PyObject *__pyx_v_src,int __pyx_v_n) {
                                               ^
./dnet.c:755:40: warning: passing 'uint8_t [6]' to parameter of type 'const char *' converts between pointers to integer types with different sign
      [-Wpointer-sign]
  __pyx_3 = PyString_FromStringAndSize(__pyx_v_ea.data,6); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 160; goto __pyx_L1;}
                                       ^~~~~~~~~~~~~~~
/System/Library/Frameworks/Python.framework/Versions/2.6/include/python2.6/stringobject.h:62:63: note: passing argument to parameter here
PyAPI_FUNC(PyObject *) PyString_FromStringAndSize(const char *, Py_ssize_t);
                                                              ^
./dnet.c:793:36: warning: passing 'uint8_t [6]' to parameter of type 'char (*)' converts between pointers to integer types with different sign
      [-Wpointer-sign]
  __pyx_1 = __pyx_f_4dnet___memcpy(__pyx_v_s.data,__pyx_v_src,6); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 173; goto __pyx_L1;}
                                   ^~~~~~~~~~~~~~
./dnet.c:392:48: note: passing argument to parameter '__pyx_v_dst' here
static PyObject *__pyx_f_4dnet___memcpy(char (*__pyx_v_dst),PyObject *__pyx_v_src,int __pyx_v_n) {
                                               ^
./dnet.c:797:36: warning: passing 'uint8_t [6]' to parameter of type 'char (*)' converts between pointers to integer types with different sign
      [-Wpointer-sign]
  __pyx_1 = __pyx_f_4dnet___memcpy(__pyx_v_d.data,__pyx_v_dst,6); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 174; goto __pyx_L1;}
                                   ^~~~~~~~~~~~~~
./dnet.c:392:48: note: passing argument to parameter '__pyx_v_dst' here
static PyObject *__pyx_f_4dnet___memcpy(char (*__pyx_v_dst),PyObject *__pyx_v_src,int __pyx_v_n) {
                                               ^
./dnet.c:910:3: warning: unused label '__pyx_L1' [-Wunused-label]
  __pyx_L1:;
  ^~~~~~~~~
./dnet.c:1038:48: warning: incompatible pointer types passing 'char (**)' to parameter of type 'const void **' [-Wincompatible-pointer-types]
  __pyx_1 = (PyObject_AsReadBuffer(__pyx_v_pkt,(&__pyx_v_p),(&__pyx_v_n)) == 0);
                                               ^~~~~~~~~~~~
/System/Library/Frameworks/Python.framework/Versions/2.6/include/python2.6/abstract.h:502:56: note: passing argument to parameter 'buffer' here
                                          const void **buffer,
                                                       ^
./dnet.c:1038:61: warning: incompatible pointer types passing 'int *' to parameter of type 'Py_ssize_t *' (aka 'long *') [-Wincompatible-pointer-types]
  __pyx_1 = (PyObject_AsReadBuffer(__pyx_v_pkt,(&__pyx_v_p),(&__pyx_v_n)) == 0);
                                                            ^~~~~~~~~~~~
/System/Library/Frameworks/Python.framework/Versions/2.6/include/python2.6/abstract.h:503:55: note: passing argument to parameter 'buffer_len' here
                                          Py_ssize_t *buffer_len);
                                                      ^
./dnet.c:1119:48: warning: incompatible pointer types passing 'char (**)' to parameter of type 'const void **' [-Wincompatible-pointer-types]
  __pyx_1 = (PyObject_AsReadBuffer(__pyx_v_buf,(&__pyx_v_p),(&__pyx_v_n)) == 0);
                                               ^~~~~~~~~~~~
/System/Library/Frameworks/Python.framework/Versions/2.6/include/python2.6/abstract.h:502:56: note: passing argument to parameter 'buffer' here
                                          const void **buffer,
                                                       ^
./dnet.c:1119:61: warning: incompatible pointer types passing 'int *' to parameter of type 'Py_ssize_t *' (aka 'long *') [-Wincompatible-pointer-types]
  __pyx_1 = (PyObject_AsReadBuffer(__pyx_v_buf,(&__pyx_v_p),(&__pyx_v_n)) == 0);
                                                            ^~~~~~~~~~~~
/System/Library/Frameworks/Python.framework/Versions/2.6/include/python2.6/abstract.h:503:55: note: passing argument to parameter 'buffer_len' here
                                          Py_ssize_t *buffer_len);
                                                      ^
./dnet.c:1749:40: warning: passing 'uint8_t [16]' to parameter of type 'const char *' converts between pointers to integer types with different sign
      [-Wpointer-sign]
  __pyx_2 = PyString_FromStringAndSize(((struct __pyx_obj_4dnet_addr *)__pyx_v_self)->_addr.addr_data8,6); if (!__pyx_2) {__pyx_filename = __pyx...
                                       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/System/Library/Frameworks/Python.framework/Versions/2.6/include/python2.6/stringobject.h:62:63: note: passing argument to parameter here
PyAPI_FUNC(PyObject *) PyString_FromStringAndSize(const char *, Py_ssize_t);
                                                              ^
./dnet.c:1799:36: warning: passing 'uint8_t [16]' to parameter of type 'char (*)' converts between pointers to integer types with different sign
      [-Wpointer-sign]
  __pyx_2 = __pyx_f_4dnet___memcpy(((struct __pyx_obj_4dnet_addr *)__pyx_v_self)->_addr.addr_data8,__pyx_v_value,6); if (!__pyx_2) {__pyx_filena...
                                   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
./dnet.c:392:48: note: passing argument to parameter '__pyx_v_dst' here
static PyObject *__pyx_f_4dnet___memcpy(char (*__pyx_v_dst),PyObject *__pyx_v_src,int __pyx_v_n) {
                                               ^
./dnet.c:1858:40: warning: passing 'uint8_t [16]' to parameter of type 'const char *' converts between pointers to integer types with different sign
      [-Wpointer-sign]
  __pyx_2 = PyString_FromStringAndSize(((struct __pyx_obj_4dnet_addr *)__pyx_v_self)->_addr.addr_data8,4); if (!__pyx_2) {__pyx_filename = __pyx...
                                       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/System/Library/Frameworks/Python.framework/Versions/2.6/include/python2.6/stringobject.h:62:63: note: passing argument to parameter here
PyAPI_FUNC(PyObject *) PyString_FromStringAndSize(const char *, Py_ssize_t);
                                                              ^
./dnet.c:1922:38: warning: passing 'uint8_t [16]' to parameter of type 'char (*)' converts between pointers to integer types with different sign
      [-Wpointer-sign]
    __pyx_3 = __pyx_f_4dnet___memcpy(((struct __pyx_obj_4dnet_addr *)__pyx_v_self)->_addr.addr_data8,__pyx_v_value,4); if (!__pyx_3) {__pyx_file...
                                     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
./dnet.c:392:48: note: passing argument to parameter '__pyx_v_dst' here
static PyObject *__pyx_f_4dnet___memcpy(char (*__pyx_v_dst),PyObject *__pyx_v_src,int __pyx_v_n) {
                                               ^
./dnet.c:1983:40: warning: passing 'uint8_t [16]' to parameter of type 'const char *' converts between pointers to integer types with different sign
      [-Wpointer-sign]
  __pyx_2 = PyString_FromStringAndSize(((struct __pyx_obj_4dnet_addr *)__pyx_v_self)->_addr.addr_data8,16); if (!__pyx_2) {__pyx_filename = __py...
                                       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/System/Library/Frameworks/Python.framework/Versions/2.6/include/python2.6/stringobject.h:62:63: note: passing argument to parameter here
PyAPI_FUNC(PyObject *) PyString_FromStringAndSize(const char *, Py_ssize_t);
                                                              ^
./dnet.c:2033:36: warning: passing 'uint8_t [16]' to parameter of type 'char (*)' converts between pointers to integer types with different sign
      [-Wpointer-sign]
  __pyx_2 = __pyx_f_4dnet___memcpy(((struct __pyx_obj_4dnet_addr *)__pyx_v_self)->_addr.addr_data8,__pyx_v_value,16); if (!__pyx_2) {__pyx_filen...
                                   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
./dnet.c:392:48: note: passing argument to parameter '__pyx_v_dst' here
static PyObject *__pyx_f_4dnet___memcpy(char (*__pyx_v_dst),PyObject *__pyx_v_src,int __pyx_v_n) {
                                               ^
./dnet.c:2455:5: warning: unused label '__pyx_L3' [-Wunused-label]
    __pyx_L3:;
    ^~~~~~~~~
./dnet.c:2457:3: warning: unused label '__pyx_L4' [-Wunused-label]
  __pyx_L4:;
  ^~~~~~~~~
./dnet.c:2427:7: warning: variable '__pyx_v_size' is used uninitialized whenever 'if' condition is false [-Wsometimes-uninitialized]
  if (__pyx_3) {
      ^~~~~~~
./dnet.c:2446:33: note: uninitialized use occurs here
  for (__pyx_4 = 0+1; __pyx_4 < __pyx_v_size; ++__pyx_4) {
                                ^~~~~~~~~~~~
./dnet.c:2427:3: note: remove the 'if' if its condition is always true
  if (__pyx_3) {
  ^~~~~~~~~~~~~
./dnet.c:2390:20: note: initialize the variable '__pyx_v_size' to silence this warning
  long __pyx_v_size;
                   ^
                    = 0
./dnet.c:2613:3: warning: expression result unused [-Wunused-value]
  __pyx_k72;
  ^~~~~~~~~
./dnet.c:2729:4: error: assignment to cast is illegal, lvalue casts are not supported
  ((PyObject*)__pyx_v_next) = Py_None; Py_INCREF(((PyObject*)__pyx_v_next));
  ~^~~~~~~~~~~~~~~~~~~~~~~~ ~
./dnet.c:2741:6: error: assignment to cast is illegal, lvalue casts are not supported
    ((PyObject *)__pyx_v_next) = __pyx_3;
    ~^~~~~~~~~~~~~~~~~~~~~~~~~ ~
./dnet.c:3116:87: warning: incompatible pointer types passing 'int ((struct arp_entry (*), void (*)))' to parameter of type 'arp_handler'
      (aka 'int (*)(const struct arp_entry *, void *)') [-Wincompatible-pointer-types]
  __pyx_1 = PyInt_FromLong(arp_loop(((struct __pyx_obj_4dnet_arp *)__pyx_v_self)->arp,__pyx_f_4dnet___arp_callback,((void (*))__pyx_v__arg))); i...
                                                                                      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
../include/dnet/arp.h:99:39: note: passing argument to parameter 'callback' here
int      arp_loop(arp_t *arp, arp_handler callback, void *arg);
                                          ^
./dnet.c:3209:3: warning: unused label '__pyx_L1' [-Wunused-label]
  __pyx_L1:;
  ^~~~~~~~~
./dnet.c:3245:36: warning: passing 'uint8_t [6]' to parameter of type 'char (*)' converts between pointers to integer types with different sign
      [-Wpointer-sign]
  __pyx_1 = __pyx_f_4dnet___memcpy(__pyx_v_sh.data,__pyx_v_sha,6); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 775; goto __pyx_L1;}
                                   ^~~~~~~~~~~~~~~
./dnet.c:392:48: note: passing argument to parameter '__pyx_v_dst' here
static PyObject *__pyx_f_4dnet___memcpy(char (*__pyx_v_dst),PyObject *__pyx_v_src,int __pyx_v_n) {
                                               ^
./dnet.c:3249:36: warning: passing 'uint8_t [6]' to parameter of type 'char (*)' converts between pointers to integer types with different sign
      [-Wpointer-sign]
  __pyx_1 = __pyx_f_4dnet___memcpy(__pyx_v_dh.data,__pyx_v_dha,6); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 776; goto __pyx_L1;}
                                   ^~~~~~~~~~~~~~~
./dnet.c:392:48: note: passing argument to parameter '__pyx_v_dst' here
static PyObject *__pyx_f_4dnet___memcpy(char (*__pyx_v_dst),PyObject *__pyx_v_src,int __pyx_v_n) {
                                               ^
./dnet.c:3586:7: warning: unused label '__pyx_L6' [-Wunused-label]
      __pyx_L6:;
      ^~~~~~~~~
./dnet.c:3588:5: warning: unused label '__pyx_L7' [-Wunused-label]
    __pyx_L7:;
    ^~~~~~~~~
./dnet.c:3739:7: warning: unused label '__pyx_L8' [-Wunused-label]
      __pyx_L8:;
      ^~~~~~~~~
./dnet.c:3741:5: warning: unused label '__pyx_L9' [-Wunused-label]
    __pyx_L9:;
    ^~~~~~~~~
./dnet.c:4131:90: warning: incompatible pointer types passing 'int ((struct intf_entry (*), void (*)))' to parameter of type 'intf_handler' (aka
      'int (*)(const struct intf_entry *, void *)') [-Wincompatible-pointer-types]
  __pyx_1 = PyInt_FromLong(intf_loop(((struct __pyx_obj_4dnet_intf *)__pyx_v_self)->intf,__pyx_f_4dnet___intf_callback,((void (*))__pyx_v__arg))...
                                                                                         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../include/dnet/intf.h:64:40: note: passing argument to parameter 'callback' here
int      intf_loop(intf_t *i, intf_handler callback, void *arg);
                                           ^
./dnet.c:4221:3: warning: unused label '__pyx_L1' [-Wunused-label]
  __pyx_L1:;
  ^~~~~~~~~
./dnet.c:4552:93: warning: incompatible pointer types passing 'int ((struct route_entry (*), void (*)))' to parameter of type 'route_handler' (aka
      'int (*)(const struct route_entry *, void *)') [-Wincompatible-pointer-types]
  __pyx_1 = PyInt_FromLong(route_loop(((struct __pyx_obj_4dnet_route *)__pyx_v_self)->route,__pyx_f_4dnet___route_callback,((void (*))__pyx_v__a...
                                                                                            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../include/dnet/route.h:31:43: note: passing argument to parameter 'callback' here
int      route_loop(route_t *r, route_handler callback, void *arg);
                                              ^
./dnet.c:4642:3: warning: unused label '__pyx_L1' [-Wunused-label]
  __pyx_L1:;
  ^~~~~~~~~
./dnet.c:5212:84: warning: incompatible pointer types passing 'int ((struct fw_rule (*), void (*)))' to parameter of type 'fw_handler'
      (aka 'int (*)(const struct fw_rule *, void *)') [-Wincompatible-pointer-types]
  __pyx_1 = PyInt_FromLong(fw_loop(((struct __pyx_obj_4dnet_fw *)__pyx_v_self)->fw,__pyx_f_4dnet___fw_callback,((void (*))__pyx_v__arg))); if (!...
                                                                                   ^~~~~~~~~~~~~~~~~~~~~~~~~~~
../include/dnet/fw.h:50:34: note: passing argument to parameter 'callback' here
int      fw_loop(fw_t *f, fw_handler callback, void *arg);
                                     ^
./dnet.c:5302:3: warning: unused label '__pyx_L1' [-Wunused-label]
  __pyx_L1:;
  ^~~~~~~~~
./dnet.c:5636:3: warning: unused label '__pyx_L1' [-Wunused-label]
  __pyx_L1:;
  ^~~~~~~~~
./dnet.c:5725:5: warning: unused label '__pyx_L4' [-Wunused-label]
    __pyx_L4:;
    ^~~~~~~~~
./dnet.c:5732:3: warning: unused label '__pyx_L5' [-Wunused-label]
  __pyx_L5:;
  ^~~~~~~~~
./dnet.c:5794:3: warning: unused label '__pyx_L1' [-Wunused-label]
  __pyx_L1:;
  ^~~~~~~~~
./dnet.c:5813:3: warning: unused label '__pyx_L1' [-Wunused-label]
  __pyx_L1:;
  ^~~~~~~~~
./dnet.c:5887:5: warning: unused label '__pyx_L6' [-Wunused-label]
    __pyx_L6:;
    ^~~~~~~~~
./dnet.c:5851:5: warning: unused label '__pyx_L3' [-Wunused-label]
    __pyx_L3:;
    ^~~~~~~~~
./dnet.c:5885:7: warning: unused label '__pyx_L5' [-Wunused-label]
      __pyx_L5:;
      ^~~~~~~~~
./dnet.c:6143:3: warning: unused label '__pyx_L1' [-Wunused-label]
  __pyx_L1:;
  ^~~~~~~~~
./dnet.c:6177:3: warning: unused label '__pyx_L1' [-Wunused-label]
  __pyx_L1:;
  ^~~~~~~~~
./dnet.c:6399:31: warning: unused variable 'p' [-Wunused-variable]
  struct __pyx_obj_4dnet_eth *p = (struct __pyx_obj_4dnet_eth *)o;
                              ^
./dnet.c:6404:31: warning: unused variable 'p' [-Wunused-variable]
  struct __pyx_obj_4dnet_eth *p = (struct __pyx_obj_4dnet_eth *)o;
                              ^
./dnet.c:6419:31: warning: unused variable 'p' [-Wunused-variable]
  struct __pyx_obj_4dnet_eth *p = (struct __pyx_obj_4dnet_eth *)o;
                              ^
./dnet.c:6418:7: warning: unused variable 'e' [-Wunused-variable]
  int e;
      ^
./dnet.c:6424:31: warning: unused variable 'p' [-Wunused-variable]
  struct __pyx_obj_4dnet_eth *p = (struct __pyx_obj_4dnet_eth *)o;
                              ^
./dnet.c:6553:30: warning: unused variable 'p' [-Wunused-variable]
  struct __pyx_obj_4dnet_ip *p = (struct __pyx_obj_4dnet_ip *)o;
                             ^
./dnet.c:6558:30: warning: unused variable 'p' [-Wunused-variable]
  struct __pyx_obj_4dnet_ip *p = (struct __pyx_obj_4dnet_ip *)o;
                             ^
./dnet.c:6572:7: warning: unused variable 'e' [-Wunused-variable]
  int e;
      ^
./dnet.c:6573:30: warning: unused variable 'p' [-Wunused-variable]
  struct __pyx_obj_4dnet_ip *p = (struct __pyx_obj_4dnet_ip *)o;
                             ^
./dnet.c:6578:30: warning: unused variable 'p' [-Wunused-variable]
  struct __pyx_obj_4dnet_ip *p = (struct __pyx_obj_4dnet_ip *)o;
                             ^
./dnet.c:6705:32: warning: unused variable 'p' [-Wunused-variable]
  struct __pyx_obj_4dnet_addr *p = (struct __pyx_obj_4dnet_addr *)o;
                               ^
./dnet.c:6710:32: warning: unused variable 'p' [-Wunused-variable]
  struct __pyx_obj_4dnet_addr *p = (struct __pyx_obj_4dnet_addr *)o;
                               ^
./dnet.c:6715:7: warning: unused variable 'e' [-Wunused-variable]
  int e;
      ^
./dnet.c:6716:32: warning: unused variable 'p' [-Wunused-variable]
  struct __pyx_obj_4dnet_addr *p = (struct __pyx_obj_4dnet_addr *)o;
                               ^
./dnet.c:6721:32: warning: unused variable 'p' [-Wunused-variable]
  struct __pyx_obj_4dnet_addr *p = (struct __pyx_obj_4dnet_addr *)o;
                               ^
./dnet.c:6934:43: warning: unused variable 'p' [-Wunused-variable]
  struct __pyx_obj_4dnet___addr_ip4_iter *p = (struct __pyx_obj_4dnet___addr_ip4_iter *)o;
                                          ^
./dnet.c:6939:43: warning: unused variable 'p' [-Wunused-variable]
  struct __pyx_obj_4dnet___addr_ip4_iter *p = (struct __pyx_obj_4dnet___addr_ip4_iter *)o;
                                          ^
./dnet.c:6945:43: warning: unused variable 'p' [-Wunused-variable]
  struct __pyx_obj_4dnet___addr_ip4_iter *p = (struct __pyx_obj_4dnet___addr_ip4_iter *)o;
                                          ^
./dnet.c:6944:7: warning: unused variable 'e' [-Wunused-variable]
  int e;
      ^
./dnet.c:6950:43: warning: unused variable 'p' [-Wunused-variable]
  struct __pyx_obj_4dnet___addr_ip4_iter *p = (struct __pyx_obj_4dnet___addr_ip4_iter *)o;
                                          ^
./dnet.c:7076:31: warning: unused variable 'p' [-Wunused-variable]
  struct __pyx_obj_4dnet_arp *p = (struct __pyx_obj_4dnet_arp *)o;
                              ^
./dnet.c:7081:31: warning: unused variable 'p' [-Wunused-variable]
  struct __pyx_obj_4dnet_arp *p = (struct __pyx_obj_4dnet_arp *)o;
                              ^
./dnet.c:7095:7: warning: unused variable 'e' [-Wunused-variable]
  int e;
      ^
./dnet.c:7096:31: warning: unused variable 'p' [-Wunused-variable]
  struct __pyx_obj_4dnet_arp *p = (struct __pyx_obj_4dnet_arp *)o;
                              ^
./dnet.c:7101:31: warning: unused variable 'p' [-Wunused-variable]
  struct __pyx_obj_4dnet_arp *p = (struct __pyx_obj_4dnet_arp *)o;
                              ^
./dnet.c:7231:32: warning: unused variable 'p' [-Wunused-variable]
  struct __pyx_obj_4dnet_intf *p = (struct __pyx_obj_4dnet_intf *)o;
                               ^
./dnet.c:7236:32: warning: unused variable 'p' [-Wunused-variable]
  struct __pyx_obj_4dnet_intf *p = (struct __pyx_obj_4dnet_intf *)o;
                               ^
./dnet.c:7250:7: warning: unused variable 'e' [-Wunused-variable]
  int e;
      ^
./dnet.c:7251:32: warning: unused variable 'p' [-Wunused-variable]
  struct __pyx_obj_4dnet_intf *p = (struct __pyx_obj_4dnet_intf *)o;
                               ^
./dnet.c:7256:32: warning: unused variable 'p' [-Wunused-variable]
  struct __pyx_obj_4dnet_intf *p = (struct __pyx_obj_4dnet_intf *)o;
                               ^
./dnet.c:7387:33: warning: unused variable 'p' [-Wunused-variable]
  struct __pyx_obj_4dnet_route *p = (struct __pyx_obj_4dnet_route *)o;
                                ^
./dnet.c:7392:33: warning: unused variable 'p' [-Wunused-variable]
  struct __pyx_obj_4dnet_route *p = (struct __pyx_obj_4dnet_route *)o;
                                ^
./dnet.c:7406:7: warning: unused variable 'e' [-Wunused-variable]
  int e;
      ^
./dnet.c:7407:33: warning: unused variable 'p' [-Wunused-variable]
  struct __pyx_obj_4dnet_route *p = (struct __pyx_obj_4dnet_route *)o;
                                ^
./dnet.c:7412:33: warning: unused variable 'p' [-Wunused-variable]
  struct __pyx_obj_4dnet_route *p = (struct __pyx_obj_4dnet_route *)o;
                                ^
./dnet.c:7542:30: warning: unused variable 'p' [-Wunused-variable]
  struct __pyx_obj_4dnet_fw *p = (struct __pyx_obj_4dnet_fw *)o;
                             ^
./dnet.c:7547:30: warning: unused variable 'p' [-Wunused-variable]
  struct __pyx_obj_4dnet_fw *p = (struct __pyx_obj_4dnet_fw *)o;
                             ^
./dnet.c:7562:30: warning: unused variable 'p' [-Wunused-variable]
  struct __pyx_obj_4dnet_fw *p = (struct __pyx_obj_4dnet_fw *)o;
                             ^
./dnet.c:7561:7: warning: unused variable 'e' [-Wunused-variable]
  int e;
      ^
./dnet.c:7567:30: warning: unused variable 'p' [-Wunused-variable]
  struct __pyx_obj_4dnet_fw *p = (struct __pyx_obj_4dnet_fw *)o;
                             ^
./dnet.c:7696:32: warning: unused variable 'p' [-Wunused-variable]
  struct __pyx_obj_4dnet_rand *p = (struct __pyx_obj_4dnet_rand *)o;
                               ^
./dnet.c:7701:32: warning: unused variable 'p' [-Wunused-variable]
  struct __pyx_obj_4dnet_rand *p = (struct __pyx_obj_4dnet_rand *)o;
                               ^
./dnet.c:7715:7: warning: unused variable 'e' [-Wunused-variable]
  int e;
      ^
./dnet.c:7716:32: warning: unused variable 'p' [-Wunused-variable]
  struct __pyx_obj_4dnet_rand *p = (struct __pyx_obj_4dnet_rand *)o;
                               ^
./dnet.c:7721:32: warning: unused variable 'p' [-Wunused-variable]
  struct __pyx_obj_4dnet_rand *p = (struct __pyx_obj_4dnet_rand *)o;
                               ^
./dnet.c:7854:41: warning: unused variable 'p' [-Wunused-variable]
  struct __pyx_obj_4dnet___rand_xrange *p = (struct __pyx_obj_4dnet___rand_xrange *)o;
                                        ^
./dnet.c:7859:41: warning: unused variable 'p' [-Wunused-variable]
  struct __pyx_obj_4dnet___rand_xrange *p = (struct __pyx_obj_4dnet___rand_xrange *)o;
                                        ^
./dnet.c:7865:41: warning: unused variable 'p' [-Wunused-variable]
  struct __pyx_obj_4dnet___rand_xrange *p = (struct __pyx_obj_4dnet___rand_xrange *)o;
                                        ^
./dnet.c:7864:7: warning: unused variable 'e' [-Wunused-variable]
  int e;
      ^
./dnet.c:7870:41: warning: unused variable 'p' [-Wunused-variable]
  struct __pyx_obj_4dnet___rand_xrange *p = (struct __pyx_obj_4dnet___rand_xrange *)o;
                                        ^
./dnet.c:7920:3: warning: incompatible pointer types initializing 'lenfunc' (aka 'long (*)(struct _object *)') with an expression of type
      'int (PyObject *)' (aka 'int (struct _object *)') [-Wincompatible-pointer-types]
  __pyx_f_4dnet_13__rand_xrange___len__, /*sq_length*/
  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
./dnet.c:7933:3: warning: incompatible pointer types initializing 'lenfunc' (aka 'long (*)(struct _object *)') with an expression of type
      'int (PyObject *)' (aka 'int (struct _object *)') [-Wincompatible-pointer-types]
  __pyx_f_4dnet_13__rand_xrange___len__, /*mp_length*/
  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
./dnet.c:7996:31: warning: unused variable 'p' [-Wunused-variable]
  struct __pyx_obj_4dnet_tun *p = (struct __pyx_obj_4dnet_tun *)o;
                              ^
./dnet.c:8001:31: warning: unused variable 'p' [-Wunused-variable]
  struct __pyx_obj_4dnet_tun *p = (struct __pyx_obj_4dnet_tun *)o;
                              ^
./dnet.c:8015:7: warning: unused variable 'e' [-Wunused-variable]
  int e;
      ^
./dnet.c:8016:31: warning: unused variable 'p' [-Wunused-variable]
  struct __pyx_obj_4dnet_tun *p = (struct __pyx_obj_4dnet_tun *)o;
                              ^
./dnet.c:8021:31: warning: unused variable 'p' [-Wunused-variable]
  struct __pyx_obj_4dnet_tun *p = (struct __pyx_obj_4dnet_tun *)o;
                              ^
./dnet.c:9239:12: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]
  if (item = PySequence_GetItem(seq, i)) {
      ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~
./dnet.c:9239:12: note: place parentheses around the assignment to silence this warning
  if (item = PySequence_GetItem(seq, i)) {
           ^
      (                                )
./dnet.c:9239:12: note: use '==' to turn this assignment into an equality comparison
  if (item = PySequence_GetItem(seq, i)) {
           ^
           ==
104 warnings and 2 errors generated.
error: command 'cc' failed with exit status 1

ModuleNotFoundError: No module named 'Utils'

Why this happen ??

D:\rtmpSnoop-master>python rtmpSnoop.py
Traceback (most recent call last):
File "rtmpSnoop.py", line 28, in
from lib.rtmpParser import rtmpParser
File "D:\rtmpSnoop-master\lib\rtmpParser.py", line 24, in
import Utils
ModuleNotFoundError: No module named 'Utils'

D:\rtmpSnoop-master>python rtmpSnoop.py -h
Traceback (most recent call last):
File "rtmpSnoop.py", line 28, in
from lib.rtmpParser import rtmpParser
File "D:\rtmpSnoop-master\lib\rtmpParser.py", line 24, in
import Utils
ModuleNotFoundError: No module named 'Utils'

D:\rtmpSnoop-master>

Mac Scapy Error

When I try and run the script on my Mac(El Capitan) it give me this error sudo python /Volumes/Storage/Rtmp/rtmpSnoop/rtmpSnoop.py -h Password: Traceback (most recent call last): File "/Volumes/Storage/Rtmp/rtmpSnoop/rtmpSnoop.py", line 26, in <module> from scapy.all import * ImportError: No module named scapy.all
Any ideas?

rtmpSnoop isn't detecting any RTMP streams

I'm running OS X 10.9.4 and for some reason I'm not able to detect any RTMP stream with rtmpSnoop but other software like Jaksta works fine. I run it with:

sudo python rtmpSnoop.py -i en1 --debug -p 1935

Output is just:

rtmpSnoop v0.2.1 - The RTMP Sniffer!
Andrea Fabrizi - [email protected]

Starting sniffing on en1...
# Dissecting stream: 51324
# Dissecting stream: 51324
# Dissecting stream: 51324
# Dissecting stream: 51324
# Dissecting stream: 51324
# Dissecting stream: 51324
# Dissecting stream: 51324

I installed pcapy via mac port which installed both pcapy 1.5.3 and libdnet 1.12, do you think this could be a problem?

Add time data to sniffing link

Can you add at output something like this -o "filename"- date +%Y-%m-%d-%H%M.flv" ?? I will be happy if you can do it cause im not able to do it right

TypeError: argument of type 'NoneType' is not iterable

Versions: Windows 10, Python 2.7.13

Instructions

pip install git+https://github.com/secdev/scapy
pip install argparse

git clone https://github.com/andreafabrizi/rtmpSnoop.git
cd rtmpSnoop

python rtmpSnoop.py -f dump.pcap

Error

rtmpSnoop v0.2.1 - The RTMP Sniffer!
Andrea Fabrizi - [email protected]

Reading packets from dump file 'dump.pcap'...
Traceback (most recent call last):
  File "rtmpSnoop.py", line 147, in <module>
    sniff(offline=args.pcapfile, filter="tcp", prn = PacketHandler)
  File "D:\Tools\winpython2\python-2.7.13.amd64\lib\site-packages\scapy\sendrecv.py", line 692, in sniff
    )] = offline
  File "D:\Tools\winpython2\python-2.7.13.amd64\lib\site-packages\scapy\utils.py", line 1283, in tcpdump
    stderr=open(os.devnull) if quiet else None,
  File "D:\Tools\winpython2\python-2.7.13.amd64\lib\subprocess.py", line 390, in __init__
    errread, errwrite)
  File "D:\Tools\winpython2\python-2.7.13.amd64\lib\subprocess.py", line 595, in _execute_child
    args = list2cmdline(args)
  File "D:\Tools\winpython2\python-2.7.13.amd64\lib\subprocess.py", line 262, in list2cmdline
    needquote = (" " in arg) or ("\t" in arg) or not arg
TypeError: argument of type 'NoneType' is not iterable

Related

Also please change the Windows instructions URL to this one because it doesn't direct to the correct page:

https://scapy.readthedocs.io/en/latest/installation.html#windows

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.