{"id":648,"date":"2014-04-12T03:46:32","date_gmt":"2014-04-12T03:46:32","guid":{"rendered":"http:\/\/soliloquyforthefallen.net\/blog\/?p=648"},"modified":"2015-03-05T07:11:39","modified_gmt":"2015-03-05T07:11:39","slug":"wardriving-with-the-wifi-pineapple-mark-v","status":"publish","type":"post","link":"https:\/\/soliloquyforthefallen.net\/?p=648","title":{"rendered":"War Driving on the Wifi Pineapple: Post One!"},"content":{"rendered":"<h2>Wardriving With The Wifi Pineapple mark V<\/h2>\n<h3>You can skip this part if you like<\/h3>\n<p>If it wasn&#8217;t clear to anyone that I make things up as I go, I pretty much don&#8217;t know what I&#8217;m doing.  But I do it anyway because it means that<\/p>\n<ol>\n<li>I learn something new<\/li>\n<li>I&#8217;m never bored because I&#8217;m always<\/li>\n<li>Challenging myself.<\/li>\n<\/ol>\n<h3>Background<\/h3>\n<p>This morning I was looking at gps units because I&#8217;m trying to get my Wifi Pineapple to do stuff.  In my <a href=\"http:\/\/soliloquyforthefallen.net\/blog\/2014\/04\/08\/globalsat-nd-100s-usb-gps-dongle\/\">last post<\/a>, I mentioned my intent to return the gps unit because I thought it was defective.  Thing is, its not defective, per-say.  I just don&#8217;t know what I&#8217;m doing.  I think.  I&#8217;ve seen posts about running the same GPS stick under linux with no issues on the amazon website as well as this post for hooking everything up to the <a href=\"http:\/\/blog.petrilopia.net\/linux\/raspberry-pi-gps-working-kismet\">rasberry pi<\/a>.  It seems to be linux compatible for all that I can see.<\/p>\n<p>This trouble occurs after I&#8217;ve plugged the gps chip into my computer and gotten everything working from there.  I&#8217;ll have to write a separate blog post about how to actually get the thing to run.<\/p>\n<p>The problem is that gpsd is being temperamental, which seems to be <a href=\"http:\/\/www.backtrack-linux.org\/forums\/showthread.php?t=37831&#038;p=189515&#038;viewfull=1#post189515\">par for the course<\/a>. GPSD isn&#8217;t outputting any debug information when I use it.  Apparently.  Because there&#8217;s no output when everything is working or debug information to say what is not working. So, I don&#8217;t know for sure that gpsd is or is not working.<\/p>\n<p>The solution of course is to use something other then gpsd.  Kismet_server does provide a way to directly access a GPS device though.  So let&#8217;s use that.  The problem with that is it also doesn&#8217;t seem to output any errors.  Which may mean everything is working perfectly.  Or not.  At least with kismet_server managing the GPS tracking you don&#8217;t get an error saying GPSD has been unresponsive for the last 15 minutes and kismet_server needs to reconnect.<\/p>\n<h3>Hardware<\/h3>\n<p>The core is <a href =\"http:\/\/hakshop.myshopify.com\/products\/wifi-pineapple\">the wifi pineapple<\/a> from hak5.  Next up is some parts from sparkfun: a <a href=\"https:\/\/www.sparkfun.com\/products\/8639\">usb power cable<\/a> and a <a href=\"https:\/\/www.sparkfun.com\/products\/11359\">lion battery pack<\/a>.  Alternately I have a usb charger for the cigarette letter that provides much longer lasting power.  Then I have a leftover 2gb microSD card that I usually leave in the pineapple.  The final part is the <a href=\"http:\/\/www.amazon.com\/GlobalSat-ND-100S-USB-GPS-Dongle\/dp\/B003WNHGAO\">gps dongle<\/a>.<\/p>\n<h3>Software<\/h3>\n<p>Software side, its still pretty easy.  To get kismet_server on the pineapple you&#8217;ll need it connected to the wifi somehow.  Then you&#8217;ll run:<br \/>\n\t\t<code>opkg update<br \/>\n\t\topkg install kismet_server<\/code>\n\t<\/p>\n<p>I wouldn&#8217;t bother with installing gpsd.  It doesn&#8217;t seem to work, and its one more layer to go wrong.<\/p>\n<p>You could use kismet_drone but then you have to connect it to a kismet_server.  It might be nice if you had an army of drones that you wanted to connect back to a single server so that multiple people could connect to it, but I can&#8217;t see any purpose to it in my application.<\/p>\n<h3>Conf Files<\/h3>\n<p>Here&#8217;s my kismet.conf for kismet server.<\/p>\n<pre>\n\t\t\t#http:\/\/soliloquyforthefallen.net\/blog\/2014\/04\/12\/wardriving-with-the-wifi-pineapple-mark-v\n\t\t\t# Kismet config file\n\t\t\t# Most of the \"static\" configs have been moved to here -- the command line\n\t\t\t# config was getting way too crowded and cryptic.  We want functionality,\n\t\t\t# not continually reading --help!\n\n\t\t\t# Version of Kismet config\n\t\t\tversion=2009-newcore\n\n\t\t\t# Name of server (Purely for organizational purposes)\n\t\t\tservername=Kismet_2009\n\n\t\t\t# Prefix of where we log (as used in the logtemplate later)\n\t\t\tlogprefix=\/mnt\/test\/kismet\/logs\n\n\t\t\t# Do we process the contents of data frames?  If this is enabled, data\n\t\t\t# frames will be truncated to the headers only immediately after frame type\n\t\t\t# detection.  This will disable IP detection, etc, however it is likely\n\t\t\t# safer (and definitely more polite) if monitoring networks you do not own.\n\t\t\t# hidedata=true\n\n\t\t\t# Do we allow plugins to be used?  This will load plugins from the system\n\t\t\t# and user plugin directiories when set to true (See the README for the default\n\t\t\t# plugin locations).\n\t\t\tallowplugins=true\n\n\t\t\t# See the README for full information on the new source format\n\t\t\t# ncsource=interface:options\n\t\t\t# for example:\n\t\t\tncsource=wlan1\n\t\t\t# ncsource=wifi0:type=madwifi\n\t\t\t# ncsource=wlan0:name=intel,hop=false,channel=11\n\n\t\t\t# Comma-separated list of sources to enable.  This is only needed if you defined\n\t\t\t# multiple sources and only want to enable some of them.  By default, all defined\n\t\t\t# sources are enabled.\n\t\t\t# For example, if sources with name=prismsource and name=ciscosource are defined,\n\t\t\t# and you only want to enable those two:\n\t\t\t# enablesources=prismsource,ciscosource\n\n\t\t\t# Control which channels we like to spend more time on.  By default, the list\n\t\t\t# of channels is pulled from the driver automatically.  By setting preferred channels,\n\t\t\t# if they are present in the channel list, they'll be set with a timing delay so that\n\t\t\t# more time is spent on them.  Since 1, 6, 11 are the common default channels, it makes\n\t\t\t# sense to spend more time monitoring them.\n\t\t\t# For finer control, see further down in the config for the channellist= directives.\n\t\t\tpreferredchannels=1,6,11\n\n\t\t\t# How many channels per second do we hop?  (1-10)\n\t\t\tchannelvelocity=3\n\n\t\t\t# By setting the dwell time for channel hopping we override the channelvelocity\n\t\t\t# setting above and dwell on each channel for the given number of seconds.\n\t\t\t#channeldwell=10\n\n\t\t\t# Channels are defined as:\n\t\t\t# channellist=name:ch1,ch2,ch3\n\t\t\t# or\n\t\t\t# channellist=name:range-start-end-width-offset,ch,range,ch,...\n\t\t\t#\n\t\t\t# Channels may be a numeric channel or a frequency\n\t\t\t#\n\t\t\t# Channels may specify an additional wait period.  For common default channels,\n\t\t\t# an additional wait period can be useful.  Wait periods delay for that number\n\t\t\t# of times per second - so a configuration hopping 10 times per second with a\n\t\t\t# channel of 6:3 would delay 3\/10ths of a second on channel 6.\n\t\t\t#\n\t\t\t# Channel lists may have up to 256 channels and ranges (combined).  For power\n\t\t\t# users scanning more than 256 channels with a single card, ranges must be used.\n\t\t\t#\n\t\t\t# Ranges are meant for \"power users\" who wish to define a very large number of\n\t\t\t# channels.  A range may specify channels or frequencies, and will automatically\n\t\t\t# sort themselves to cover channels in a non-overlapping fashion.  An example\n\t\t\t# range for the normal 802.11b\/g spectrum would be:\n\t\t\t#\n\t\t\t# range-1-11-3-1\n\t\t\t#\n\t\t\t# which indicates starting at 1, ending at 11, a channel width of 3 channels,\n\t\t\t# incrementing by one.  A frequency based definition would be:\n\t\t\t#\n\t\t\t# range-2412-2462-22-5\n\t\t\t#\n\t\t\t# since 11g channels are 22 mhz wide and 5 mhz apart.\n\t\t\t#\n\t\t\t# Ranges have the flaw that they cannot be shared between sources in a non-overlapping\n\t\t\t# way, so multiple sources using the same range may hop in lockstep with each other\n\t\t\t# and duplicate the coverage.\n\t\t\t#\n\t\t\t# channellist=demo:1:3,6:3,11:3,range-5000-6000-20-10\n\n\t\t\t# Default channel lists\n\t\t\t# These channel lists MUST BE PRESENT for Kismet to work properly.  While it is\n\t\t\t# possible to change these, it is not recommended.  These are used when the supported\n\t\t\t# channel list can not be found for the source; to force using these instead of\n\t\t\t# the detected supported channels, override with channellist= in the source defintion\n\t\t\t#\n\t\t\t# IN GENERAL, if you think you want to modify these, what you REALLY want to do is\n\t\t\t# copy them and use channellist= in the packet source.\n\t\t\tchannellist=IEEE80211b:1:3,6:3,11:3,2,7,3,8,4,9,5,10\n\t\t\tchannellist=IEEE80211a:36,40,44,48,52,56,60,64,149,153,157,161,165\n\t\t\tchannellist=IEEE80211ab:1:3,6:3,11:3,2,7,3,8,4,9,5,10,36,40,44,48,52,56,60,64,149,153,157,161,165\n\n\t\t\t# Client\/server listen config\n\t\t\tlisten=tcp:\/\/0.0.0.0:2501\n\t\t\t# People allowed to connect, comma seperated IP addresses or network\/mask\n\t\t\t# blocks.  Netmasks can be expressed as dotted quad (\/255.255.255.0) or as\n\t\t\t# numbers (\/24)\n\t\t\tallowedhosts=172.16.42.0\/24\n\n\t\t\t# Maximum number of concurrent GUI's\n\t\t\tmaxclients=5\n\t\t\t# Maximum backlog before we start throwing out or killing clients.  The\n\t\t\t# bigger this number, the more memory and the more power it will use.\n\t\t\tmaxbacklog=5000\n\n\t\t\t# Server + Drone config options.  To have a Kismet server export live packets\n\t\t\t# as if it were a drone, uncomment these.\n\t\t\t# dronelisten=tcp:\/\/127.0.0.1:3501\n\t\t\t# droneallowedhosts=127.0.0.1\n\t\t\t# dronemaxclients=5\n\t\t\t# droneringlen=65535\n\n\t\t\t# OUI file, expected format 00:11:22<tab>manufname\n\t\t\t# IEEE OUI file used to look up manufacturer info.  We default to the\n\t\t\t# wireshark one since most people have that.\n\t\t\touifile=\/etc\/manuf\n\t\t\touifile=\/usr\/share\/wireshark\/wireshark\/manuf\n\t\t\touifile=\/usr\/share\/wireshark\/manuf\n\n\t\t\t# Do we have a GPS?\n\t\t\tgps=true\n\t\t\t# Do we use a locally serial attached GPS, or use a gpsd server?\n\t\t\t# (Pick only one)\n\t\t\t#gpstype=gpsd\n\t\t\t gpstype=serial\n\t\t\t# What serial device do we look for the GPS on?\n\t\t\tgpsdevice=\/dev\/ttyUSB0\n\t\t\t# Host:port that GPSD is running on.  This can be localhost OR remote!\n\t\t\t#gpshost=localhost:2947\n\t\t\t# Do we lock the mode?  This overrides coordinates of lock \"0\", which will\n\t\t\t# generate some bad information until you get a GPS lock, but it will\n\t\t\t# fix problems with GPS units with broken NMEA that report lock 0\n\t\t\tgpsmodelock=false\n\t\t\t# Do we try to reconnect if we lose our link to the GPS, or do we just\n\t\t\t# let it die and be disabled?\n\t\t\tgpsreconnect=true\n\n\t\t\t# Do we export packets over tun\/tap virtual interfaces?\n\t\t\ttuntap_export=false\n\t\t\t# What virtual interface do we use\n\t\t\ttuntap_device=kistap0\n\n\t\t\t# Packet filtering options:\n\t\t\t# filter_tracker - Packets filtered from the tracker are not processed or\n\t\t\t#                  recorded in any way.\n\t\t\t# filter_export  - Controls what packets influence the exported CSV, network,\n\t\t\t#                  xml, gps, etc files.\n\t\t\t# All filtering options take arguments containing the type of address and\n\t\t\t# addresses to be filtered.  Valid address types are 'ANY', 'BSSID',\n\t\t\t# 'SOURCE', and 'DEST'.  Filtering can be inverted by the use of '!' before\n\t\t\t# the address.  For example,\n\t\t\t# filter_tracker=ANY(!\"00:00:DE:AD:BE:EF\")\n\t\t\t# has the same effect as the previous mac_filter config file option.\n\t\t\t# filter_tracker=...\n\t\t\t# filter_dump=...\n\t\t\t# filter_export=...\n\t\t\t# filter_netclient=...\n\n\t\t\t# Alerts to be reported and the throttling rates.\n\t\t\t# alert=name,throttle\/unit,burst\n\t\t\t# The throttle\/unit describes the number of alerts of this type that are\n\t\t\t# sent per time unit.  Valid time units are second, minute, hour, and day.\n\t\t\t# Burst describes the number of alerts sent before throttling takes place.\n\t\t\t# For example:\n\t\t\t# alert=FOO,10\/min,5\n\t\t\t# Would allow 5 alerts through before throttling is enabled, and will then\n\t\t\t# limit the number of alerts to 10 per minute.\n\t\t\t# A throttle rate of 0 disables throttling of the alert.\n\t\t\t# See the README for a list of alert types.\n\t\t\talert=ADHOCCONFLICT,5\/min,1\/sec\n\t\t\talert=AIRJACKSSID,5\/min,1\/sec\n\t\t\talert=APSPOOF,10\/min,1\/sec\n\t\t\talert=BCASTDISCON,5\/min,2\/sec\n\t\t\talert=BSSTIMESTAMP,5\/min,1\/sec\n\t\t\talert=CHANCHANGE,5\/min,1\/sec\n\t\t\talert=CRYPTODROP,5\/min,1\/sec\n\t\t\talert=DISASSOCTRAFFIC,10\/min,1\/sec\n\t\t\talert=DEAUTHFLOOD,5\/min,2\/sec\n\t\t\talert=DEAUTHCODEINVALID,5\/min,1\/sec\n\t\t\talert=DISCONCODEINVALID,5\/min,1\/sec\n\t\t\talert=DHCPNAMECHANGE,5\/min,1\/sec\n\t\t\talert=DHCPOSCHANGE,5\/min,1\/sec\n\t\t\talert=DHCPCLIENTID,5\/min,1\/sec\n\t\t\talert=DHCPCONFLICT,10\/min,1\/sec\n\t\t\talert=NETSTUMBLER,5\/min,1\/sec\n\t\t\talert=LUCENTTEST,5\/min,1\/sec\n\t\t\talert=LONGSSID,5\/min,1\/sec\n\t\t\talert=MSFBCOMSSID,5\/min,1\/sec\n\t\t\talert=MSFDLINKRATE,5\/min,1\/sec\n\t\t\talert=MSFNETGEARBEACON,5\/min,1\/sec\n\t\t\talert=NULLPROBERESP,5\/min,1\/sec\n\t\t\t#alert=PROBENOJOIN,5\/min,1\/sec\n\n\t\t\t# Controls behavior of the APSPOOF alert.  SSID may be a literal match (ssid=) or\n\t\t\t# a regex (ssidregex=) if PCRE was available when kismet was built.  The allowed\n\t\t\t# MAC list must be comma-separated and enclosed in quotes if there are multiple\n\t\t\t# MAC addresses allowed.  MAC address masks are allowed.\n\t\t\tapspoof=Foo1:ssidregex=\"(?i:foobar)\",validmacs=00:11:22:33:44:55\n\t\t\tapspoof=Foo2:ssid=\"Foobar\",validmacs=\"00:11:22:33:44:55,aa:bb:cc:dd:ee:ff\"\n\n\t\t\t# Known WEP keys to decrypt, bssid,hexkey.  This is only for networks where\n\t\t\t# the keys are already known, and it may impact throughput on slower hardware.\n\t\t\t# Multiple wepkey lines may be used for multiple BSSIDs.\n\t\t\t# wepkey=00:DE:AD:C0:DE:00,FEEDFACEDEADBEEF01020304050607080900\n\n\t\t\t# Is transmission of the keys to the client allowed?  This may be a security\n\t\t\t# risk for some.  If you disable this, you will not be able to query keys from\n\t\t\t# a client.\n\t\t\tallowkeytransmit=true\n\n\t\t\t# How often (in seconds) do we write all our data files (0 to disable)\n\t\t\twriteinterval=300\n\n\t\t\t# Do we use sound?\n\t\t\t# Not to be confused with GUI sound parameter, this controls wether or not the\n\t\t\t# server itself will play sound.  Primarily for headless or automated systems.\n\t\t\tenablesound=false\n\t\t\t# Path to sound player\n\t\t\tsoundbin=play\n\n\t\t\tsound=newnet,true\n\t\t\tsound=newcryptnet,true\n\t\t\tsound=packet,true\n\t\t\tsound=gpslock,true\n\t\t\tsound=gpslost,true\n\t\t\tsound=alert,true\n\n\t\t\t# Does the server have speech? (Again, not to be confused with the GUI's speech)\n\t\t\tenablespeech=false\n\t\t\t# Binary used for speech (if not in path, full path must be specified)\n\t\t\tspeechbin=flite\n\t\t\t# Specify raw or festival; Flite (and anything else that doesn't need formatting\n\t\t\t# around the string to speak) is 'raw', festival requires the string be wrapped in\n\t\t\t# SayText(\"...\")\n\t\t\tspeechtype=raw\n\n\t\t\t# How do we speak?  Valid options:\n\t\t\t# speech    Normal speech\n\t\t\t# nato      NATO spellings (alpha, bravo, charlie)\n\t\t\t# spell     Spell the letters out (aye, bee, sea)\n\t\t\tspeechencoding=nato\n\n\t\t\tspeech=new,\"New network detected s.s.i.d. %1 channel %2\"\n\t\t\tspeech=alert,\"Alert %1\"\n\t\t\tspeech=gpslost,\"G.P.S. signal lost\"\n\t\t\tspeech=gpslock,\"G.P.S. signal O.K.\"\n\n\t\t\t# How many alerts do we backlog for new clients?  Only change this if you have\n\t\t\t# a -very- low memory system and need those extra bytes, or if you have a high\n\t\t\t# memory system and a huge number of alert conditions.\n\t\t\talertbacklog=50\n\n\t\t\t# File types to log, comma seperated.  Built-in log file types:\n\t\t\t# alert\t\t\t\tText file of alerts\n\t\t\t# gpsxml\t\t\tXML per-packet GPS log\n\t\t\t# nettxt\t\t\tNetworks in text format\n\t\t\t# netxml\t\t\tNetworks in XML format\n\t\t\t# pcapdump\t\t\ttcpdump\/wireshark compatible pcap log file\n\t\t\t# string\t\t\tAll strings seen (increases CPU load)\n\t\t\tlogtypes=pcapdump,gpsxml,netxml,nettxt,alert\n\n\t\t\t# Format of the pcap dump (PPI or 80211)\n\t\t\tpcapdumpformat=ppi\n\t\t\t# pcapdumpformat=80211\n\n\t\t\t# Default log title\n\t\t\tlogdefault=Kismet\n\n\t\t\t# logtemplate - Filename logging template.\n\t\t\t# This is, at first glance, really nasty and ugly, but you'll hardly ever\n\t\t\t# have to touch it so don't complain too much.\n\t\t\t#\n\t\t\t# %p is replaced by the logging prefix + '\/'\n\t\t\t# %n is replaced by the logging instance name\n\t\t\t# %d is replaced by the starting date as Mon-DD-YYYY\n\t\t\t# %D is replaced by the current date as YYYYMMDD\n\t\t\t# %t is replaced by the starting time as HH-MM-SS\n\t\t\t# %i is replaced by the increment log in the case of multiple logs\n\t\t\t# %l is replaced by the log type (pcapdump, strings, etc)\n\t\t\t# %h is replaced by the home directory\n\n\t\t\tlogtemplate=%p%n-%D-%t-%i.%l\n\n\t\t\t# Where state info, etc, is stored.  You shouldnt ever need to change this.\n\t\t\t# This is a directory.\n\t\t\tconfigdir=%h\/.kismet\/\n\t\t<\/pre>\n<h4>A few highlights on that conf file!<\/h4>\n<p>If you&#8217;ve copy pasted my config, then you don&#8217;t need to worry about this stuff.  Still, you should read it over.<\/p>\n<ul>\n<li>\n<p>To be able to connect to a kismet server remotely, there are **two** lines that you need to edit to allow remote connections.  They are:<\/p>\n<p>\t\t\t<code>listen=tcp:\/\/0.0.0.0:2501<br \/>\n\t\t\t\tallowedhosts=172.16.42.0\/24<\/code><\/p>\n<p>Most websites are covering the old kismet conf file so they won&#8217;t mention that.  You need to change the listen line to tcp:\/\/0.0.0.0:2501 so it will answer all connections.  Set the allowed hosts to 172.16.42.0\/24 so that at least people have to be connected to your router to do anything.<\/p>\n<\/li>\n<li>\n<p>You&#8217;ll also need to edit your config to make kismet server aware that is needs to manage your gps device.<br \/>\n\t\t\t<code>gpstype=serial<br \/>\n\t\t\t# What serial device do we look for the GPS on?<br \/>\n\t\t\tgpsdevice=\/dev\/ttyUSB0<\/code>\n\t\t\t<\/p>\n<\/li>\n<li>This expects to log in \/mnt\/test\/kismet\/logs.  If you don&#8217;t have that directory set up, kismet_server will fail to start.  Silently.<\/li>\n<\/ul>\n<h3>Dip Switches<\/h3>\n<p>One of the features of the Pineapple Mark V is the boot mode switches.  I have a wardrive mode, and my command string is this:<br \/>\n\t\t<code>ifconfig wlan1 down && iwconfig wlan1 mode monitor && ifconfig wlan1 up && mount \/dev\/sda1 \/mnt\/test && kismet_server -f \/mnt\/test\/kismet\/kismet.conf 2&gt;&1 &gt;&gt; \/mnt\/test\/kismet\/errors.log<\/code><br \/>\n\tYou&#8217;ll need to ssh into the pineapple and mkdir the \/mnt\/test directory first.<\/p>\n<p>You could, if battery life was a true concern and you didn&#8217;t want to do any monitoring whatsover via a wireless interface add in an <code>ifconfig wlan0 down<\/code> but eh.<\/p>\n<h3>In Conclusion<\/h3>\n<p>Does this home rolled crazy ass solution work?  Mostly.  I&#8217;ve done some successful testing with it locally.  I know it usually streams GPS data.  But I don&#8217;t know that I trust it on large scale yet.  On the other hand, there&#8217;s a trip to DC608 coming up at the end of the month.  Its a two hour trip to Madison.  And I have half a month to finish testing everything.<\/p>\n<p>Its madness, it really is.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Wardriving With The Wifi Pineapple mark V You can skip this part if you like If it wasn&#8217;t clear to anyone that I make things up as I go, I pretty much don&#8217;t know what I&#8217;m doing. But I do it anyway because it means that I learn something new I&#8217;m never bored because I&#8217;m&#8230; <\/p>\n<div class=\"read-more navbutton\"><a href=\"https:\/\/soliloquyforthefallen.net\/?p=648\">Read More<i class=\"fa fa-angle-double-right\"><\/i><\/a><\/div>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[113,109],"tags":[],"_links":{"self":[{"href":"https:\/\/soliloquyforthefallen.net\/index.php?rest_route=\/wp\/v2\/posts\/648"}],"collection":[{"href":"https:\/\/soliloquyforthefallen.net\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/soliloquyforthefallen.net\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/soliloquyforthefallen.net\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/soliloquyforthefallen.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=648"}],"version-history":[{"count":2,"href":"https:\/\/soliloquyforthefallen.net\/index.php?rest_route=\/wp\/v2\/posts\/648\/revisions"}],"predecessor-version":[{"id":747,"href":"https:\/\/soliloquyforthefallen.net\/index.php?rest_route=\/wp\/v2\/posts\/648\/revisions\/747"}],"wp:attachment":[{"href":"https:\/\/soliloquyforthefallen.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=648"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/soliloquyforthefallen.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=648"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/soliloquyforthefallen.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=648"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}