what is OpenNMS in http header - http

After receiving http packets from a website I see a request packet which its http header is like this,what does it mean "OpenNMS HttpMonitor\r\n" ?Its source address is not from that web page which I open!
GET / HTTP/1.1\r\n
[Expert Info (Chat/Sequence): GET / HTTP/1.1\r\n]
Request Method: GET
Request URI: /
Request Version: HTTP/1.1
Connection: CLOSE \r\n
User-Agent: OpenNMS HttpMonitor\r\n
\r\n

I believe this may well be Rackspace's monitoring solution for cloud servers. Might be wrong though. Might be worth contacting your hosting provider to see if it's them. You can sort of check this by seeing if your server IP is in the same subnet.

Um, not sure why it is appearing in your context, but OpenNMS is a network monitoring suite that we used to use at work to monitor our network nodes.
http://www.opennms.org/
Your IP may be erroneously being monitored by some corporation? ^^

Related

How protocol is communicated between routers web-server and the browser

I'm working on an application which takes HTTP message to and from the routers web server.
The problem i'm facing is in the HTTP basic authentication.
RFC 7617 states:
"the server can reply with a challenge using the 401 (Unauthorized) status code"
What I've seen from the browser HTTP captures that it isn't the case for every router. For example, TPLINK TLWR840N doesn't sends me 401 and i can get the resource by simply transferring http request along with the correct credentials in the form of base64{username:pass} in the http message as shown below.
GET //main/ddos.htm?_=1572950350469 HTTP/1.1
Host: 192.168.0.1
Accept: */*
Connection: keep-alive
Referer: http://192.168.0.1
Cookie: Authorization=Basic YeRtaW46YWRtaW5AMTIz
It gives me the requested content if the password is correctly given otherwise it redirects me to the login page (why this router doesn't follow the 401 protocol?).
I have another TPLINK TL-WR841N router which doesn't take credentials (in http message) in the form of base64{username:pass} as the previous router, but instead it takes credentials in the form of base64(user):md5(password). I have two question about this router (and all routers in general)
I want to know how the router communicates the protocol for credentials to the browser so that i can embed that thing in my application. I have inspected the http messages (in the Chrome/Firefox) but couldn't found the message where the protocol is being communicated.
When i login to TPLINK TL-WR841N router, unlike the previous model, the web browser contains some SessionID in the URL, e.g. the URL shows www.192.168.0.1/SessionID/path/to/resource. I would like to know how this SessionID is communicated to the browser?
People who write router maintenance applications, as well as people who design graphics cards driver installer screens (looking at you, AMD), do not adhere to any guidelines, best practices or protocols whatsoever.
But they don't need to, either. They've written an application that happens to use HTTP, but you're not obliged to use all of HTTP. They write the frond-end as well as the back-end, so they can closely control their server as well as their client.
The client most likely is a dumb couple of HTML pages that does some requests using JavaScript.
If they were to decide that the web interface authenticates to the server with a request header that literally states LetMeIn: true, then that would work as well.
HTTP does not mandate that the server should return a 401 when that header is missing or bears false, so they don't have to.

Post request in HTTP and HTTPS protocol

We are trying to make a secure communication between our embedded system and web server.Firstly we implement HTTP connection to in our microcontroller. I am just connecting to 80 port of my web server and send simple GET request to this port as example below :
GET /foo.php?msg=test HTTP/1.1
HOST: foo.com
My questions is,How we will turn this to HTTPS ? Which port i should connect ?
Will be any difference on structure of GET request above ? Will i have to do some encryption manually or connect to "https" link instead "http" is enuogh for secure communication.
Thanks for any information
The only difference between a HTTP request and a HTTPS request is that the first is send over a plain TCP connection while the other is send over a TLS connection, i.e.:
with HTTP you establish a TCP connection and send the request over this connection
with HTTPS you establish a TCP connection, upgrade this connection to TLS (including proper certificate validation etc!) and then send the same request as you did with HTTP over this connection.
Apart from that I recommend to either use an established library for HTTP or carefully read the standard. Although HTTP looks simply it is actually not and there are many questions here where users try to do a simply HTTP request and trip over behavior they did not expect.
For example in your case the server might send the response with chunked encoding, with content-length or simply end it with connection close. And it might wait for further requests on the same connection since HTTP/1.1 implicitly enables HTTP keep-alive. Does your code really account for all these cases?

Fiddler monitor android app https traffic failed (seems be blocked by that app?)

For example:
There is an app A.
There is page X in A.
There is a button in X page used to sign in dayly to get some points.
What I want is catch and analyze the post traffic, and simulate an action to get the points every day, so I don't need do it myself. The first thing is use fiddler to monitor the traffic.
About fiddler:
I have already setup fiddler to monitor https traffic by ConfigureForAndroid
I have tested android web browser can show https site(such as https://www.baidu.com) and fiddler does capture this traffic without error.
So it does work with https traffic.
But when I moniter target app, it can enter almost every page except the X page. Only see three or four https requests in fiddler every time I try, all headers likes:
CONNECT 180.97.93.28:443 HTTP/1.1
Host: 180.97.93.28:443
Connection: keep-alive
User-Agent: BDNuomiAppAndroid
HTTP/1.1 200 Connection Established
FiddlerGateway: Direct
StartTime: 17:07:54.262
Connection: close
The content is like:
HTTP/1.1 200 Connection Established
FiddlerGateway: Direct
StartTime: 17:07:54.262
Connection: close
Encrypted HTTPS traffic flows through this CONNECT tunnel. HTTPS Decryption is enabled in Fiddler, so decrypted sessions running in this tunnel will be shown in the Web Sessions list.
Secure Protocol: Tls12
Cipher: Aes128 128bits
Hash Algorithm: Sha1 160bits
Key Exchange: ECDHE_RSA (0xae06) 256bits
== Server Certificate ==========
[Subject]
CN=baidu.com, OU=service operation department., O="BeiJing Baidu Netcom Science Technology Co., Ltd", L=beijing, S=beijing, C=CN
[Issuer]
CN=Symantec Class 3 Secure Server CA - G4, OU=Symantec Trust Network, O=Symantec Corporation, C=US
[Serial Number]
01A00C5992A0A1426F751433BD5CBF
[Not Before]
2016/8/15 8:00:00
[Not After]
2017/8/17 7:59:59
[Thumbprint]
B502436275C8874F1023DB92E30472DD597159E0
[SubjectAltNames]
*.baidu.com, *.baifubao.com, *.bdstatic.com, *.hao123.com, *.nuomi.com, *.bce.baidu.com, *.eyun.baidu.com, *.map.baidu.com, baidu.com, baifubao.com, www.baidu.cn, www.baidu.com.cn, click.hm.baidu.com, log.hm.baidu.com, cm.pos.baidu.com, wn.pos.baidu.com, update.pan.baidu.com, mct.y.nuomi.com
Seems be blocked, so I wonder:
Do I miss some configurition to fiddler?
If it has a way to detect I am using fiddler to monitor the traffic and deny my access?
If 2 is true, how?
If 3 exists, how to overcome it?
Update:
I think the problem is fiddler's ca cert, maybe a ca black list on remote server ?

Http get post guru help fiddler

I need help. I need log(safe full request) in iis 5(with headers etc) or look on it in proxy,fiddler etc
I use fiddler/ I have web config
Do you know HOW TO see ALL REQUEST,request from ALL PORTS and applications?
Can y recommend me proxy or http debugger?
I can not see request to my website in fiddler((((((
Maybe i need add propertyes in iis? I have tcp port in iis(default web site, and this site is default in root of wwwroot
TCP port 80? and proxy address 8888????????????? MAYBE
Maybe i need change port of tcp to 8888?
I add to web.comfig
In fiddler is option Monitor all connections i check it. I don't use filters
I have web site on my own machine and fiddler on it
GMAIL send request on my site( get rss)
74.125.16.68 - W3SVC1 HOUSE 217.76.185.140 80 GET /24.rss - 200 1398 202 HTTP/1.1 217.76.185.140
I don't see this query in fiddler, but i see
GET /mail/channel/bind?at=xn3j35onw91kr1q7zyzwjdx2653kr7&VER=6&it=548812&RID=rpc&SID=8787BE0499898773&CI=1&AID=78&TYPE=html&zx=bf28pr-v4mnm7&DOMAIN=mail.google.com&t=1 HTTP/1.1
Accept: /
Referer: http://mail.google.com/mail/?ui=2&
IN FIDDLEr i see
POST /mail/?ui=2&ik=ba4ed7ee39&view=cps&q=http%3A%2F%2F217.76.185.140%2F25.rss&cps=r&rt=j HTTP/1.1
answer
Content-Type: text/javascript; charset=UTF-8
while(1);
[[["v","NEGbCBCSn-c.en.","8","55f6abc2045673de",,]
,["di",749,"",""]
,["ub",[["^i",1240327921200]
,["^f",1240327921200]
CHEERS
Unfortunately, I have no experience with fiddler (although I hear it is cool).
Try wireshark: here: http://www.wireshark.org/
It is a network packet analyzer with filtering, so you could set the filters to capture the messages you want.

rtsp over http over a proxy

I am trying to fetch an RTSP stream over HTTP using a proxy. The behavior of the Real client seems to be a bit hectic: it tries all the possible ports, methods and protocols at once. The only thing that should work is HTTP GET over port 80. Such a request is indeed issued, and is received on the server. Here's how the request looks when it is sent by the proxy to the server:
GET /SmpDsBhgRl83c52ef2-d0f4-41ac-bada-93e5350f67d1?1="1" HTTP/1.0\r\n
Connection: Keep-Alive\r\n
Host: 10.194.5.162:80\r\n
Pragma: no-cache\r\n
User-Agent: RealPlayer G2\r\n
Expires: Mon, 18 May 1974 00:00:00 GMT\r\n
Accept: application/x-rtsp-tunnelled, */*\r\n
ClientID: WinNT_5.1_6.0.14.806_RealPlayer_R41UKD_en-GB_686\r\n
X-Actual-URL: rtsp://10.194.5.162:554/01.mp3\r\n
\r\n
Here's the server's response:
HTTP/1.0 200 OK\r\n
Server: RMServer 1.0\r\n
Expires: Mon, 18 May 1974 00:00:00 GMT\r\n
Pragma: no-cache\r\n
x-server-ipaddress: 10.194.5.162\r\n
Content-type: audio/x-pn-realaudio\r\n
\r\n
At this point 4 more bytes arrive from the server (their values are 48 02 02 00) - and that's it, nothing more. Does the server expect anything from the client at this point, and if so - what? Does this mode of operation work at all?
Some more info on this problem: apparently, the intended mechanism of working with RTSP over HTTP built into RealPlayer is as follows:
Try to connect to the following ports: 80, 8080, 554, 7070.
(Try also to download the file directly, just for the heck of it, by issuing GET http://hostname:port/mediafilename on port 80)
For each of the above ports, create 2 connections.
Send a GET request to one of the connections to the url http://hostname:port/SmpDsBhgRl<guid>?1="1", where <guid> is, yes, a freshly created GUID. Add a header to this request called X-Actual-URL containing the original RTSP URL.
Send a POST request on the other connection, to the URL http://hostname:port/SmpDsBhgRl with the GUID above as part of the body of the request. Send a Content-Length header of 32767 bytes, to prevent the proxy from closing the connection prematurely.
Start issuing commands to the server through the POST request, and get the corresponding RTSP stream as part of the GET response.
The strange stuff (if the above isn't strange enough) is that, for example, it works with Squid, but not if you use either of the ports 3128 or 8080! Somehow, the client uses the port it connects to to decide on the order of the requests or on when a request should be canceled, but anyway, as hard to believe as it is, it works with proxy port 9090, 3129, 8081, but not with 3128 or 8080.
Update #2: Here's the source of the RealPlayer with the explanation of the above behavior. Still no solution though.
Update #3: OK, in the light of the above, the magic value of 48 02 02 00 is clear: 48 == 'h' is for HTTP_RESPONSE, the next 02 is the length of the following data, the next 02 is called POST_NOT_RECEIVED (meaning that the POST request did not reach the server within a second from the corresponding GET request).
Update #4: This behavior (i.e. POST requests with huge Content-Length) is also characteristic of an ActiveX used by WebEx (and, possibly, many other web apps that need an open channel to the server).
First, you might want to read this:
http://developer.apple.com/quicktime/icefloe/dispatch028.html
Second, the HTTP requests (both GET and POST) need to be formatted so that they get proxied properly. I've seen proxies that insist on caching too much of the POST request, preventing it from reaching the server. Those proxies are buggy, but there's nothing you can do about that, and I was not able to work around that issue. Mostly I've seen this with anti-virus software that attempts to do transparent proxying of POST requests coming from the browser to scan them for private information like social security numbers. You might be running into the same problem.
Are you using McAfee's anti virus by any chance?
Also, it appears that Real invented its own way of doing the same thing, but the basic design is very similar - GET for the downstream link, POST for the upstream, with some magic cookie (in this case, the GUID) to tie the two together on the server. Either way, the POST should get to the server, and in your case it seems like it doesn't.
By the way, since the problem seems to be with the POST request not going through the proxy, how about posting that request, in addition to the GET?
See whether issuing the same request but bypassing the proxy (e.g., replay the request you posted above using Netcat) results in more than four bytes streamed in the response body.
See what TCP packets the proxy is receiving, for example, by eavesdropping on the TCP
traffic on the machine that's running the proxy, say, using Wireshark.

Resources